@ng-nest/ui 13.0.4 → 13.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 (167) hide show
  1. package/alert/alert.component.d.ts +2 -1
  2. package/core/config/config.d.ts +7 -1
  3. package/core/interfaces/layout.type.d.ts +1 -1
  4. package/dialog/{dialog-container.component.d.ts → dialog-portal.component.d.ts} +3 -3
  5. package/dialog/{dialog-container.directives.d.ts → dialog-portal.directives.d.ts} +0 -0
  6. package/dialog/dialog-ref.d.ts +3 -3
  7. package/dialog/dialog.module.d.ts +3 -3
  8. package/dialog/dialog.property.d.ts +3 -3
  9. package/dialog/public-api.d.ts +2 -2
  10. package/drawer/drawer-container.component.d.ts +3 -13
  11. package/drawer/drawer-portal.component.d.ts +18 -0
  12. package/drawer/{drawer-container.directives.d.ts → drawer-portal.directives.d.ts} +0 -0
  13. package/drawer/drawer-ref.d.ts +3 -3
  14. package/drawer/drawer.component.d.ts +10 -3
  15. package/drawer/drawer.module.d.ts +9 -8
  16. package/drawer/drawer.property.d.ts +16 -2
  17. package/drawer/examples/en_US/default/container/README.md +6 -0
  18. package/drawer/examples/zh_CN/default/container/README.md +6 -0
  19. package/drawer/public-api.d.ts +3 -2
  20. package/esm2020/alert/alert.component.mjs +9 -4
  21. package/esm2020/auto-complete/auto-complete.module.mjs +2 -3
  22. package/esm2020/cascade/cascade.module.mjs +2 -3
  23. package/esm2020/color-picker/color-picker.module.mjs +2 -3
  24. package/esm2020/core/config/config.mjs +1 -1
  25. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  26. package/esm2020/date-picker/date-picker.module.mjs +2 -3
  27. package/esm2020/dialog/dialog-portal.component.mjs +52 -0
  28. package/esm2020/dialog/{dialog-container.directives.mjs → dialog-portal.directives.mjs} +7 -7
  29. package/esm2020/dialog/dialog-ref.mjs +1 -1
  30. package/esm2020/dialog/dialog.component.mjs +5 -5
  31. package/esm2020/dialog/dialog.module.mjs +7 -7
  32. package/esm2020/dialog/dialog.property.mjs +2 -2
  33. package/esm2020/dialog/dialog.service.mjs +3 -3
  34. package/esm2020/dialog/public-api.mjs +3 -3
  35. package/esm2020/drawer/drawer-container.component.mjs +16 -39
  36. package/esm2020/drawer/drawer-portal.component.mjs +52 -0
  37. package/esm2020/drawer/{drawer-container.directives.mjs → drawer-portal.directives.mjs} +5 -5
  38. package/esm2020/drawer/drawer-ref.mjs +1 -1
  39. package/esm2020/drawer/drawer.component.mjs +54 -18
  40. package/esm2020/drawer/drawer.module.mjs +23 -6
  41. package/esm2020/drawer/drawer.property.mjs +19 -1
  42. package/esm2020/drawer/drawer.service.mjs +4 -4
  43. package/esm2020/drawer/public-api.mjs +4 -3
  44. package/esm2020/dropdown/dropdown.module.mjs +2 -3
  45. package/esm2020/find/find.component.mjs +13 -4
  46. package/esm2020/find/find.property.mjs +18 -2
  47. package/esm2020/menu/menu.component.mjs +3 -3
  48. package/esm2020/menu/menu.property.mjs +7 -2
  49. package/esm2020/message/message-ref.mjs +12 -0
  50. package/esm2020/message/message.component.mjs +3 -3
  51. package/esm2020/message/message.property.mjs +1 -1
  52. package/esm2020/message/message.service.mjs +34 -13
  53. package/esm2020/message/public-api.mjs +2 -1
  54. package/esm2020/popconfirm/popconfirm.component.mjs +26 -5
  55. package/esm2020/popconfirm/popconfirm.property.mjs +10 -3
  56. package/esm2020/popover/popover.directive.mjs +8 -2
  57. package/esm2020/popover/popover.module.mjs +2 -3
  58. package/esm2020/popover/popover.property.mjs +7 -2
  59. package/esm2020/select/select.module.mjs +2 -3
  60. package/esm2020/table/table-body.component.mjs +4 -4
  61. package/esm2020/table/table.component.mjs +3 -3
  62. package/esm2020/table/table.property.mjs +7 -3
  63. package/esm2020/time-picker/time-picker.module.mjs +2 -3
  64. package/esm2020/tooltip/tooltip.directive.mjs +12 -4
  65. package/esm2020/tooltip/tooltip.module.mjs +2 -3
  66. package/esm2020/tooltip/tooltip.property.mjs +18 -2
  67. package/esm2020/tree/tree-node.component.mjs +3 -3
  68. package/esm2020/tree/tree.property.mjs +8 -2
  69. package/fesm2015/ng-nest-ui-alert.mjs +8 -3
  70. package/fesm2015/ng-nest-ui-alert.mjs.map +1 -1
  71. package/fesm2015/ng-nest-ui-auto-complete.mjs +1 -2
  72. package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
  73. package/fesm2015/ng-nest-ui-cascade.mjs +1 -2
  74. package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
  75. package/fesm2015/ng-nest-ui-color-picker.mjs +1 -2
  76. package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
  77. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  78. package/fesm2015/ng-nest-ui-date-picker.mjs +1 -2
  79. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  80. package/fesm2015/ng-nest-ui-dialog.mjs +22 -22
  81. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  82. package/fesm2015/ng-nest-ui-drawer.mjs +129 -32
  83. package/fesm2015/ng-nest-ui-drawer.mjs.map +1 -1
  84. package/fesm2015/ng-nest-ui-dropdown.mjs +1 -2
  85. package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
  86. package/fesm2015/ng-nest-ui-find.mjs +29 -4
  87. package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
  88. package/fesm2015/ng-nest-ui-menu.mjs +8 -3
  89. package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
  90. package/fesm2015/ng-nest-ui-message.mjs +48 -15
  91. package/fesm2015/ng-nest-ui-message.mjs.map +1 -1
  92. package/fesm2015/ng-nest-ui-popconfirm.mjs +34 -6
  93. package/fesm2015/ng-nest-ui-popconfirm.mjs.map +1 -1
  94. package/fesm2015/ng-nest-ui-popover.mjs +14 -4
  95. package/fesm2015/ng-nest-ui-popover.mjs.map +1 -1
  96. package/fesm2015/ng-nest-ui-select.mjs +1 -2
  97. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  98. package/fesm2015/ng-nest-ui-table.mjs +11 -7
  99. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  100. package/fesm2015/ng-nest-ui-time-picker.mjs +1 -2
  101. package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
  102. package/fesm2015/ng-nest-ui-tooltip.mjs +29 -6
  103. package/fesm2015/ng-nest-ui-tooltip.mjs.map +1 -1
  104. package/fesm2015/ng-nest-ui-tree.mjs +9 -3
  105. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  106. package/fesm2020/ng-nest-ui-alert.mjs +8 -3
  107. package/fesm2020/ng-nest-ui-alert.mjs.map +1 -1
  108. package/fesm2020/ng-nest-ui-auto-complete.mjs +1 -2
  109. package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
  110. package/fesm2020/ng-nest-ui-cascade.mjs +1 -2
  111. package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
  112. package/fesm2020/ng-nest-ui-color-picker.mjs +1 -2
  113. package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
  114. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  115. package/fesm2020/ng-nest-ui-date-picker.mjs +1 -2
  116. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  117. package/fesm2020/ng-nest-ui-dialog.mjs +22 -22
  118. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  119. package/fesm2020/ng-nest-ui-drawer.mjs +127 -32
  120. package/fesm2020/ng-nest-ui-drawer.mjs.map +1 -1
  121. package/fesm2020/ng-nest-ui-dropdown.mjs +1 -2
  122. package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
  123. package/fesm2020/ng-nest-ui-find.mjs +29 -4
  124. package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
  125. package/fesm2020/ng-nest-ui-menu.mjs +8 -3
  126. package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
  127. package/fesm2020/ng-nest-ui-message.mjs +47 -15
  128. package/fesm2020/ng-nest-ui-message.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-popconfirm.mjs +34 -6
  130. package/fesm2020/ng-nest-ui-popconfirm.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-popover.mjs +14 -4
  132. package/fesm2020/ng-nest-ui-popover.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-select.mjs +1 -2
  134. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-table.mjs +11 -7
  136. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-time-picker.mjs +1 -2
  138. package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-tooltip.mjs +29 -6
  140. package/fesm2020/ng-nest-ui-tooltip.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-tree.mjs +9 -3
  142. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  143. package/find/find.property.d.ts +31 -1
  144. package/menu/menu.property.d.ts +8 -3
  145. package/message/examples/en_US/default/loading/README.md +6 -0
  146. package/message/examples/zh_CN/default/loading/README.md +6 -0
  147. package/message/message-ref.d.ts +8 -0
  148. package/message/message.component.d.ts +3 -3
  149. package/message/message.property.d.ts +23 -3
  150. package/message/message.service.d.ts +4 -1
  151. package/message/public-api.d.ts +1 -0
  152. package/package.json +7 -7
  153. package/popconfirm/examples/en_US/default/async-close/README.md +6 -0
  154. package/popconfirm/examples/en_US/default/condition/README.md +6 -0
  155. package/popconfirm/examples/zh_CN/default/async-close/README.md +6 -0
  156. package/popconfirm/examples/zh_CN/default/condition/README.md +6 -0
  157. package/popconfirm/popconfirm.component.d.ts +6 -2
  158. package/popconfirm/popconfirm.property.d.ts +13 -2
  159. package/popover/popover.property.d.ts +6 -1
  160. package/steps/examples/zh_CN/default/node-status/README.md +1 -1
  161. package/table/examples/en_US/default/rowclass/README.md +6 -0
  162. package/table/examples/zh_CN/default/rowclass/README.md +6 -0
  163. package/table/table.property.d.ts +23 -2
  164. package/tooltip/tooltip.directive.d.ts +1 -0
  165. package/tooltip/tooltip.property.d.ts +11 -1
  166. package/tree/tree.property.d.ts +6 -1
  167. package/esm2020/dialog/dialog-container.component.mjs +0 -52
@@ -21,9 +21,21 @@ const X_CONFIG_NAME = 'tooltip';
21
21
  * Tooltip Property
22
22
  */
23
23
  class XTooltipProperty {
24
+ constructor() {
25
+ /**
26
+ * @zh_CN 鼠标移入后延时多少才显示
27
+ * @en_US How much is the mouse transfer after transfer
28
+ */
29
+ this.mouseEnterDelay = 150;
30
+ /**
31
+ * @zh_CN 鼠标移出后延时多少才隐藏
32
+ * @en_US How much hidden is hidden after the mouse is removed
33
+ */
34
+ this.mouseLeaveDelay = 100;
35
+ }
24
36
  }
25
37
  /** @nocollapse */ /** @nocollapse */ XTooltipProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: XTooltipProperty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
- /** @nocollapse */ /** @nocollapse */ XTooltipProperty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: XTooltipProperty, selector: "[x-tooltip], x-tooltip", inputs: { content: "content", placement: "placement", visible: "visible", backgroundColor: "backgroundColor", color: "color", manual: "manual" }, ngImport: i0 });
38
+ /** @nocollapse */ /** @nocollapse */ XTooltipProperty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: XTooltipProperty, selector: "[x-tooltip], x-tooltip", inputs: { content: "content", placement: "placement", visible: "visible", backgroundColor: "backgroundColor", color: "color", manual: "manual", mouseEnterDelay: "mouseEnterDelay", mouseLeaveDelay: "mouseLeaveDelay" }, ngImport: i0 });
27
39
  __decorate([
28
40
  XWithConfig(X_CONFIG_NAME, 'bottom')
29
41
  ], XTooltipProperty.prototype, "placement", void 0);
@@ -48,6 +60,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
48
60
  type: Input
49
61
  }], manual: [{
50
62
  type: Input
63
+ }], mouseEnterDelay: [{
64
+ type: Input
65
+ }], mouseLeaveDelay: [{
66
+ type: Input
51
67
  }] } });
52
68
  /**
53
69
  * Tooltip Portal
@@ -187,17 +203,25 @@ class XTooltipDirective extends XTooltipProperty {
187
203
  show() {
188
204
  if (this.timeoutHide)
189
205
  clearTimeout(this.timeoutHide);
206
+ if (this.timeoutShow)
207
+ clearTimeout(this.timeoutShow);
190
208
  if (!this.portal || (this.portal && !this.portal.overlayRef?.hasAttached())) {
191
- this.visible = true;
192
- this.createPortal();
209
+ this.timeoutShow = setTimeout(() => {
210
+ this.visible = true;
211
+ this.createPortal();
212
+ }, this.mouseEnterDelay);
193
213
  }
194
214
  }
195
215
  hide() {
216
+ if (this.timeoutHide)
217
+ clearTimeout(this.timeoutHide);
218
+ if (this.timeoutShow)
219
+ clearTimeout(this.timeoutShow);
196
220
  if (this.portal?.overlayRef?.hasAttached()) {
197
221
  this.timeoutHide = setTimeout(() => {
198
222
  this.visible = false;
199
223
  this.portal.overlayRef?.dispose();
200
- });
224
+ }, this.mouseLeaveDelay);
201
225
  }
202
226
  }
203
227
  createPortal() {
@@ -276,8 +300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
276
300
  args: [{
277
301
  declarations: [XTooltipDirective, XTooltipPortalComponent, XTooltipProperty],
278
302
  exports: [XTooltipDirective, XTooltipPortalComponent],
279
- imports: [CommonModule, XPortalModule],
280
- entryComponents: [XTooltipPortalComponent]
303
+ imports: [CommonModule, XPortalModule]
281
304
  }]
282
305
  }] });
283
306
 
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-tooltip.mjs","sources":["../../../../lib/ng-nest/ui/tooltip/tooltip.property.ts","../../../../lib/ng-nest/ui/tooltip/tooltip-portal.component.ts","../../../../lib/ng-nest/ui/tooltip/tooltip-portal.component.html","../../../../lib/ng-nest/ui/tooltip/tooltip.directive.ts","../../../../lib/ng-nest/ui/tooltip/tooltip.module.ts","../../../../lib/ng-nest/ui/tooltip/ng-nest-ui-tooltip.ts"],"sourcesContent":["import { XPlacement, XInputBoolean, XBoolean, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Directive } from '@angular/core';\r\n\r\n/**\r\n * Tooltip\r\n * @selector x-tooltip\r\n * @decorator directive\r\n */\r\nexport const XTooltipPrefix = 'x-tooltip';\r\nconst X_CONFIG_NAME = 'tooltip';\r\n\r\n/**\r\n * Tooltip Property\r\n */\r\n@Directive({ selector: `[${XTooltipPrefix}], ${XTooltipPrefix}` })\r\nexport class XTooltipProperty {\r\n /**\r\n * @zh_CN 内容\r\n * @en_US Content\r\n */\r\n @Input() content?: string;\r\n /**\r\n * @zh_CN 显示位置\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPlacement>(X_CONFIG_NAME, 'bottom') placement?: XPlacement;\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n @Input() @XInputBoolean() visible?: XBoolean;\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n */\r\n @Input() backgroundColor?: string;\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US Text color\r\n */\r\n @Input() color?: string;\r\n /**\r\n * @zh_CN 手动处理关闭事件\r\n * @en_US Manually handle the shutdown event\r\n */\r\n @Input() @XInputBoolean() manual?: XBoolean;\r\n}\r\n\r\n/**\r\n * Tooltip Portal\r\n * @selector x-tooltip-portal\r\n * @decorator component\r\n */\r\nexport const XTooltipPortalPrefix = 'x-tooltip-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n ElementRef,\r\n OnDestroy,\r\n ViewChild,\r\n Renderer2,\r\n HostListener,\r\n AfterViewInit,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { XTooltipPortalPrefix } from './tooltip.property';\r\nimport { XPlacement, XClassMap, XFadeAnimation } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XTooltipPortalPrefix}`,\r\n templateUrl: './tooltip-portal.component.html',\r\n styleUrls: ['./tooltip-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XFadeAnimation]\r\n})\r\nexport class XTooltipPortalComponent implements OnInit, OnDestroy, OnDestroy, AfterViewInit {\r\n @HostListener('mouseenter') mouseenter() {\r\n this.portalHover(true);\r\n }\r\n @HostListener('mouseleave') mouseleave() {\r\n this.portalHover(false);\r\n }\r\n\r\n @HostBinding('@x-fade-animation') animation: any;\r\n\r\n @ViewChild('tooltipPortal', { static: true }) tooltipPortal!: ElementRef;\r\n @ViewChild('tooltipArrow', { static: false }) tooltipArrow!: ElementRef;\r\n @ViewChild('tooltipArrowAfter', { static: false }) tooltipArrowAfter!: ElementRef;\r\n\r\n contentChange!: BehaviorSubject<any>;\r\n classMap: XClassMap = {};\r\n box!: DOMRect;\r\n portalBox!: DOMRect;\r\n arrowBox!: DOMRect;\r\n portalHover!: Function;\r\n viewInit!: Function;\r\n destroy!: Function;\r\n placement!: XPlacement;\r\n previousPlacement!: XPlacement;\r\n content!: string;\r\n color!: string;\r\n backgroundColor!: string;\r\n positionChange: Subject<any> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(private renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.contentChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.content = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.setClassMap();\r\n setTimeout(() => this.setArrow());\r\n this.cdr.detectChanges();\r\n });\r\n this.setClassMap();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.viewInit();\r\n this.portalBox = this.tooltipPortal.nativeElement.getBoundingClientRect();\r\n this.arrowBox = this.tooltipArrow.nativeElement.getBoundingClientRect();\r\n this.setArrow();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XTooltipPortalPrefix}-${this.previousPlacement}`] = false;\r\n this.classMap[`${XTooltipPortalPrefix}-${this.placement}`] = true;\r\n this.previousPlacement = `${this.placement}` as XPlacement;\r\n }\r\n\r\n setArrow() {\r\n let offset = this.arrowBox.height / 2;\r\n if (this.portalBox.height > this.box.height && (this.includes('right-') || this.includes('left-'))) {\r\n if (this.includes('-start')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'top', `${this.box.height / 2 - offset}px`);\r\n } else if (this.includes('-end')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'bottom', `${this.box.height / 2 - offset}px`);\r\n }\r\n } else if (this.portalBox.width > this.box.width && (this.includes('top-') || this.includes('bottom-'))) {\r\n if (this.includes('-start')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'left', `${this.box.width / 2 - offset}px`);\r\n } else if (this.includes('-end')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'right', `${this.box.width / 2 - offset}px`);\r\n }\r\n }\r\n if (!this.backgroundColor) return;\r\n const ptSplit = this.placement.split('-');\r\n if (ptSplit.length > 0) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, `border-${ptSplit[0]}-color`, this.backgroundColor);\r\n this.renderer.setStyle(this.tooltipArrowAfter.nativeElement, `border-${ptSplit[0]}-color`, this.backgroundColor);\r\n }\r\n }\r\n\r\n includes(arrow: string) {\r\n return this.placement.indexOf(arrow) >= 0;\r\n }\r\n}\r\n","<div #tooltipPortal class=\"x-tooltip-portal\" [ngClass]=\"classMap\">\r\n <div class=\"x-tooltip-portal-inner\" [style.backgroundColor]=\"backgroundColor\" [style.color]=\"color\" [innerHTML]=\"content\"></div>\r\n <div #tooltipArrow class=\"x-tooltip-portal-arrow\">\r\n <div #tooltipArrowAfter class=\"x-tooltip-portal-arrow-after\"></div>\r\n </div>\r\n</div>\r\n","import { ElementRef, ViewContainerRef, Directive, HostListener, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XTooltipPortalComponent } from './tooltip-portal.component';\r\nimport { XTooltipPrefix, XTooltipProperty } from './tooltip.property';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { XIsChange, XPlacement } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, Overlay } from '@angular/cdk/overlay';\r\n\r\n@Directive({ selector: `[${XTooltipPrefix}], ${XTooltipPrefix}` })\r\nexport class XTooltipDirective extends XTooltipProperty implements OnChanges, OnDestroy {\r\n portal!: XPortalOverlayRef<XTooltipPortalComponent>;\r\n box!: DOMRect;\r\n contentChange: BehaviorSubject<any> = new BehaviorSubject(null);\r\n positionChange: Subject<any> = new Subject();\r\n timeoutHide: any;\r\n private _unSubject = new Subject();\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n }\r\n\r\n @HostListener('mouseenter') mouseenter() {\r\n !this.manual && this.show();\r\n }\r\n\r\n @HostListener('mouseleave') mouseleave() {\r\n !this.manual && this.hide();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { content, visible } = changes;\r\n XIsChange(content) && this.contentChange.next(this.content);\r\n if (XIsChange(visible)) {\r\n if (this.visible) this.show();\r\n else this.hide();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.contentChange.unsubscribe();\r\n }\r\n\r\n show() {\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n if (!this.portal || (this.portal && !this.portal.overlayRef?.hasAttached())) {\r\n this.visible = true;\r\n this.createPortal();\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.portal?.overlayRef?.hasAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.visible = false;\r\n this.portal.overlayRef?.dispose();\r\n });\r\n }\r\n }\r\n\r\n createPortal() {\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.portalService.setPlacement({\r\n elementRef: this.elementRef,\r\n placement: [this.placement as XPlacement, 'bottom', 'top', 'left', 'right']\r\n }),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XTooltipPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPlacement;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal?.componentRef;\r\n if (!componentRef) return;\r\n this.box = this.elementRef.nativeElement.getBoundingClientRect();\r\n Object.assign(componentRef.instance, {\r\n box: this.box,\r\n content: this.content,\r\n contentChange: this.contentChange,\r\n color: this.color,\r\n backgroundColor: this.backgroundColor,\r\n placement: this.placement,\r\n positionChange: this.positionChange,\r\n portalHover: (hover: boolean) => {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n viewInit: () => this.updatePortal()\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n updatePortal() {\r\n this.portal.overlayRef?.updatePosition();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XTooltipDirective } from './tooltip.directive';\r\nimport { XTooltipPortalComponent } from './tooltip-portal.component';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XTooltipProperty } from './tooltip.property';\r\n\r\n@NgModule({\r\n declarations: [XTooltipDirective, XTooltipPortalComponent, XTooltipProperty],\r\n exports: [XTooltipDirective, XTooltipPortalComponent],\r\n imports: [CommonModule, XPortalModule],\r\n entryComponents: [XTooltipPortalComponent]\r\n})\r\nexport class XTooltipModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAGA;;;;;MAKa,cAAc,GAAG,YAAY;AAC1C,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC;;;MAIa,gBAAgB;;mJAAhB,gBAAgB;uIAAhB,gBAAgB;AAUgC;IAAjD,WAAW,CAAa,aAAa,EAAE,QAAQ,CAAC;mDAAwB;AAKxD;IAAhB,aAAa,EAAE;iDAAoB;AAenB;IAAhB,aAAa,EAAE;gDAAmB;2FA9BjC,gBAAgB;kBAD5B,SAAS;mBAAC,EAAE,QAAQ,EAAE,IAAI,cAAc,MAAM,cAAc,EAAE,EAAE;8BAMtD,OAAO;sBAAf,KAAK;gBAKqD,SAAS;sBAAnE,KAAK;gBAKoB,OAAO;sBAAhC,KAAK;gBAKG,eAAe;sBAAvB,KAAK;gBAKG,KAAK;sBAAb,KAAK;gBAKoB,MAAM;sBAA/B,KAAK;;AAGR;;;;;MAKa,oBAAoB,GAAG;;MC1BvB,uBAAuB;IA8BlC,YAAoB,QAAmB,EAAS,GAAsB;QAAlD,aAAQ,GAAR,QAAQ,CAAW;QAAS,QAAG,GAAH,GAAG,CAAmB;QAftE,aAAQ,GAAc,EAAE,CAAC;QAYzB,mBAAc,GAAiB,IAAI,OAAO,EAAE,CAAC;QACrC,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAEiC;IA7B9C,UAAU;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;IAC2B,UAAU;QACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;IA0BD,QAAQ;QACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,eAAe;QACb,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,GAAG,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,KAAK,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,GAAG,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI,CAAC,SAAS,EAAgB,CAAC;KAC5D;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;YAClG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;aACrG;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;aACxG;SACF;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;YACvG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;aACrG;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;aACtG;SACF;QACD,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5G,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAClH;KACF;IAED,QAAQ,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC3C;;0JA1FU,uBAAuB;8IAAvB,uBAAuB,0gBC3BpC,uXAMA,8lGDmBc,CAAC,cAAc,CAAC;2FAEjB,uBAAuB;kBARnC,SAAS;+BACE,GAAG,oBAAoB,EAAE,iBAGpB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,cACnC,CAAC,cAAc,CAAC;gIAGA,UAAU;sBAArC,YAAY;uBAAC,YAAY;gBAGE,UAAU;sBAArC,YAAY;uBAAC,YAAY;gBAIQ,SAAS;sBAA1C,WAAW;uBAAC,mBAAmB;gBAEc,aAAa;sBAA1D,SAAS;uBAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACE,YAAY;sBAAzD,SAAS;uBAAC,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBACO,iBAAiB;sBAAnE,SAAS;uBAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;ME7BtC,iBAAkB,SAAQ,gBAAgB;IAQrD,YACU,UAAsB,EACtB,aAA6B,EAC7B,gBAAkC,EAClC,OAAgB;QAExB,KAAK,EAAE,CAAC;QALA,eAAU,GAAV,UAAU,CAAY;QACtB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,YAAO,GAAP,OAAO,CAAS;QAT1B,kBAAa,GAAyB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAChE,mBAAc,GAAiB,IAAI,OAAO,EAAE,CAAC;QAErC,eAAU,GAAG,IAAI,OAAO,EAAE,CAAC;KASlC;IAE2B,UAAU;QACpC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;KAC7B;IAE2B,UAAU;QACpC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,WAAW,CAAC,OAAsB;QAChC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACrC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YACtB,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;gBACzB,IAAI,CAAC,IAAI,EAAE,CAAC;SAClB;KACF;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,WAAW;YAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE;YAC3E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;IAED,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;aACnC,CAAC,CAAC;SACJ;KACF;IAED,YAAY;QACV,MAAM,MAAM,GAAkB;YAC5B,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;gBAChD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,CAAC,IAAI,CAAC,SAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;aAC5E,CAAC;YACF,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;SAC3D,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,uBAAuB;YAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,CAAC,MAAqB;QAC/B,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAqD,CAAC;QAC5E,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAmC;YACtG,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAe,CAAC;YAC7E,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7D,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QAC7C,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,CAAC,KAAc;gBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;oBAC7B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAChC;qBAAM;oBACL,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF;YACD,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE;SACpC,CAAC,CAAC;QACH,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAChD;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;KAC1C;;oJA3GU,iBAAiB;wIAAjB,iBAAiB;2FAAjB,iBAAiB;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,IAAI,cAAc,MAAM,cAAc,EAAE,EAAE;qLAkBnC,UAAU;sBAArC,YAAY;uBAAC,YAAY;gBAIE,UAAU;sBAArC,YAAY;uBAAC,YAAY;;;MClBf,cAAc;;iJAAd,cAAc;kJAAd,cAAc,iBALV,iBAAiB,EAAE,uBAAuB,EAAE,gBAAgB,aAEjE,YAAY,EAAE,aAAa,aAD3B,iBAAiB,EAAE,uBAAuB;kJAIzC,cAAc,YAHhB,CAAC,YAAY,EAAE,aAAa,CAAC;2FAG3B,cAAc;kBAN1B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;oBAC5E,OAAO,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;oBACrD,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;oBACtC,eAAe,EAAE,CAAC,uBAAuB,CAAC;iBAC3C;;;ACZD;;;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-tooltip.mjs","sources":["../../../../lib/ng-nest/ui/tooltip/tooltip.property.ts","../../../../lib/ng-nest/ui/tooltip/tooltip-portal.component.ts","../../../../lib/ng-nest/ui/tooltip/tooltip-portal.component.html","../../../../lib/ng-nest/ui/tooltip/tooltip.directive.ts","../../../../lib/ng-nest/ui/tooltip/tooltip.module.ts","../../../../lib/ng-nest/ui/tooltip/ng-nest-ui-tooltip.ts"],"sourcesContent":["import { XPlacement, XInputBoolean, XBoolean, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Directive } from '@angular/core';\r\n\r\n/**\r\n * Tooltip\r\n * @selector x-tooltip\r\n * @decorator directive\r\n */\r\nexport const XTooltipPrefix = 'x-tooltip';\r\nconst X_CONFIG_NAME = 'tooltip';\r\n\r\n/**\r\n * Tooltip Property\r\n */\r\n@Directive({ selector: `[${XTooltipPrefix}], ${XTooltipPrefix}` })\r\nexport class XTooltipProperty {\r\n /**\r\n * @zh_CN 内容\r\n * @en_US Content\r\n */\r\n @Input() content?: string;\r\n /**\r\n * @zh_CN 显示位置\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPlacement>(X_CONFIG_NAME, 'bottom') placement?: XPlacement;\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n @Input() @XInputBoolean() visible?: XBoolean;\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n */\r\n @Input() backgroundColor?: string;\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US Text color\r\n */\r\n @Input() color?: string;\r\n /**\r\n * @zh_CN 手动处理关闭事件\r\n * @en_US Manually handle the shutdown event\r\n */\r\n @Input() @XInputBoolean() manual?: XBoolean;\r\n /**\r\n * @zh_CN 鼠标移入后延时多少才显示\r\n * @en_US How much is the mouse transfer after transfer\r\n */\r\n @Input() mouseEnterDelay: number = 150;\r\n /**\r\n * @zh_CN 鼠标移出后延时多少才隐藏\r\n * @en_US How much hidden is hidden after the mouse is removed\r\n */\r\n @Input() mouseLeaveDelay: number = 100;\r\n}\r\n\r\n/**\r\n * Tooltip Portal\r\n * @selector x-tooltip-portal\r\n * @decorator component\r\n */\r\nexport const XTooltipPortalPrefix = 'x-tooltip-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n ElementRef,\r\n OnDestroy,\r\n ViewChild,\r\n Renderer2,\r\n HostListener,\r\n AfterViewInit,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { XTooltipPortalPrefix } from './tooltip.property';\r\nimport { XPlacement, XClassMap, XFadeAnimation } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XTooltipPortalPrefix}`,\r\n templateUrl: './tooltip-portal.component.html',\r\n styleUrls: ['./tooltip-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XFadeAnimation]\r\n})\r\nexport class XTooltipPortalComponent implements OnInit, OnDestroy, OnDestroy, AfterViewInit {\r\n @HostListener('mouseenter') mouseenter() {\r\n this.portalHover(true);\r\n }\r\n @HostListener('mouseleave') mouseleave() {\r\n this.portalHover(false);\r\n }\r\n\r\n @HostBinding('@x-fade-animation') animation: any;\r\n\r\n @ViewChild('tooltipPortal', { static: true }) tooltipPortal!: ElementRef;\r\n @ViewChild('tooltipArrow', { static: false }) tooltipArrow!: ElementRef;\r\n @ViewChild('tooltipArrowAfter', { static: false }) tooltipArrowAfter!: ElementRef;\r\n\r\n contentChange!: BehaviorSubject<any>;\r\n classMap: XClassMap = {};\r\n box!: DOMRect;\r\n portalBox!: DOMRect;\r\n arrowBox!: DOMRect;\r\n portalHover!: Function;\r\n viewInit!: Function;\r\n destroy!: Function;\r\n placement!: XPlacement;\r\n previousPlacement!: XPlacement;\r\n content!: string;\r\n color!: string;\r\n backgroundColor!: string;\r\n positionChange: Subject<any> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(private renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.contentChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.content = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.setClassMap();\r\n setTimeout(() => this.setArrow());\r\n this.cdr.detectChanges();\r\n });\r\n this.setClassMap();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.viewInit();\r\n this.portalBox = this.tooltipPortal.nativeElement.getBoundingClientRect();\r\n this.arrowBox = this.tooltipArrow.nativeElement.getBoundingClientRect();\r\n this.setArrow();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XTooltipPortalPrefix}-${this.previousPlacement}`] = false;\r\n this.classMap[`${XTooltipPortalPrefix}-${this.placement}`] = true;\r\n this.previousPlacement = `${this.placement}` as XPlacement;\r\n }\r\n\r\n setArrow() {\r\n let offset = this.arrowBox.height / 2;\r\n if (this.portalBox.height > this.box.height && (this.includes('right-') || this.includes('left-'))) {\r\n if (this.includes('-start')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'top', `${this.box.height / 2 - offset}px`);\r\n } else if (this.includes('-end')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'bottom', `${this.box.height / 2 - offset}px`);\r\n }\r\n } else if (this.portalBox.width > this.box.width && (this.includes('top-') || this.includes('bottom-'))) {\r\n if (this.includes('-start')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'left', `${this.box.width / 2 - offset}px`);\r\n } else if (this.includes('-end')) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, 'right', `${this.box.width / 2 - offset}px`);\r\n }\r\n }\r\n if (!this.backgroundColor) return;\r\n const ptSplit = this.placement.split('-');\r\n if (ptSplit.length > 0) {\r\n this.renderer.setStyle(this.tooltipArrow.nativeElement, `border-${ptSplit[0]}-color`, this.backgroundColor);\r\n this.renderer.setStyle(this.tooltipArrowAfter.nativeElement, `border-${ptSplit[0]}-color`, this.backgroundColor);\r\n }\r\n }\r\n\r\n includes(arrow: string) {\r\n return this.placement.indexOf(arrow) >= 0;\r\n }\r\n}\r\n","<div #tooltipPortal class=\"x-tooltip-portal\" [ngClass]=\"classMap\">\r\n <div class=\"x-tooltip-portal-inner\" [style.backgroundColor]=\"backgroundColor\" [style.color]=\"color\" [innerHTML]=\"content\"></div>\r\n <div #tooltipArrow class=\"x-tooltip-portal-arrow\">\r\n <div #tooltipArrowAfter class=\"x-tooltip-portal-arrow-after\"></div>\r\n </div>\r\n</div>\r\n","import { ElementRef, ViewContainerRef, Directive, HostListener, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XTooltipPortalComponent } from './tooltip-portal.component';\r\nimport { XTooltipPrefix, XTooltipProperty } from './tooltip.property';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { XIsChange, XPlacement } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, Overlay } from '@angular/cdk/overlay';\r\n\r\n@Directive({ selector: `[${XTooltipPrefix}], ${XTooltipPrefix}` })\r\nexport class XTooltipDirective extends XTooltipProperty implements OnChanges, OnDestroy {\r\n portal!: XPortalOverlayRef<XTooltipPortalComponent>;\r\n box!: DOMRect;\r\n contentChange: BehaviorSubject<any> = new BehaviorSubject(null);\r\n positionChange: Subject<any> = new Subject();\r\n timeoutHide: any;\r\n timeoutShow: any;\r\n private _unSubject = new Subject();\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n }\r\n\r\n @HostListener('mouseenter') mouseenter() {\r\n !this.manual && this.show();\r\n }\r\n\r\n @HostListener('mouseleave') mouseleave() {\r\n !this.manual && this.hide();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { content, visible } = changes;\r\n XIsChange(content) && this.contentChange.next(this.content);\r\n if (XIsChange(visible)) {\r\n if (this.visible) this.show();\r\n else this.hide();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.contentChange.unsubscribe();\r\n }\r\n\r\n show() {\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n if (this.timeoutShow) clearTimeout(this.timeoutShow);\r\n if (!this.portal || (this.portal && !this.portal.overlayRef?.hasAttached())) {\r\n this.timeoutShow = setTimeout(() => {\r\n this.visible = true;\r\n this.createPortal();\r\n }, this.mouseEnterDelay);\r\n }\r\n }\r\n\r\n hide() {\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n if (this.timeoutShow) clearTimeout(this.timeoutShow);\r\n if (this.portal?.overlayRef?.hasAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.visible = false;\r\n this.portal.overlayRef?.dispose();\r\n }, this.mouseLeaveDelay);\r\n }\r\n }\r\n\r\n createPortal() {\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.portalService.setPlacement({\r\n elementRef: this.elementRef,\r\n placement: [this.placement as XPlacement, 'bottom', 'top', 'left', 'right']\r\n }),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XTooltipPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPlacement;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal?.componentRef;\r\n if (!componentRef) return;\r\n this.box = this.elementRef.nativeElement.getBoundingClientRect();\r\n Object.assign(componentRef.instance, {\r\n box: this.box,\r\n content: this.content,\r\n contentChange: this.contentChange,\r\n color: this.color,\r\n backgroundColor: this.backgroundColor,\r\n placement: this.placement,\r\n positionChange: this.positionChange,\r\n portalHover: (hover: boolean) => {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n viewInit: () => this.updatePortal()\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n updatePortal() {\r\n this.portal.overlayRef?.updatePosition();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XTooltipDirective } from './tooltip.directive';\r\nimport { XTooltipPortalComponent } from './tooltip-portal.component';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XTooltipProperty } from './tooltip.property';\r\n\r\n@NgModule({\r\n declarations: [XTooltipDirective, XTooltipPortalComponent, XTooltipProperty],\r\n exports: [XTooltipDirective, XTooltipPortalComponent],\r\n imports: [CommonModule, XPortalModule]\r\n})\r\nexport class XTooltipModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -89,7 +89,7 @@ class XTreeProperty extends XProperty {
89
89
  }
90
90
  }
91
91
  /** @nocollapse */ /** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
92
- /** @nocollapse */ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
92
+ /** @nocollapse */ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
93
93
  __decorate([
94
94
  XDataConvert()
95
95
  ], XTreeProperty.prototype, "data", void 0);
@@ -131,6 +131,10 @@ __decorate([
131
131
  __decorate([
132
132
  XWithConfig(X_CONFIG_NAME, 'center')
133
133
  ], XTreeProperty.prototype, "nodeAlignItems", void 0);
134
+ __decorate([
135
+ XWithConfig(X_CONFIG_NAME),
136
+ XInputBoolean()
137
+ ], XTreeProperty.prototype, "virtualScroll", void 0);
134
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: XTreeProperty, decorators: [{
135
139
  type: Component,
136
140
  args: [{ template: '' }]
@@ -174,6 +178,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
174
178
  type: Input
175
179
  }], actions: [{
176
180
  type: Input
181
+ }], virtualScroll: [{
182
+ type: Input
177
183
  }], manualChange: [{
178
184
  type: Output
179
185
  }] } });
@@ -374,10 +380,10 @@ class XTreeNodeComponent extends XTreeNodeProperty {
374
380
  }
375
381
  }
376
382
  /** @nocollapse */ /** @nocollapse */ XTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: XTreeNodeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
377
- /** @nocollapse */ /** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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=\"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-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"], components: [{ type: i2.XIconComponent, selector: "x-icon" }, { type: i3.XCheckboxComponent, selector: "x-checkbox" }, { type: i4.XLinkComponent, selector: "x-link" }, { type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
383
+ /** @nocollapse */ /** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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=\"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"], components: [{ type: i2.XIconComponent, selector: "x-icon" }, { type: i3.XCheckboxComponent, selector: "x-checkbox" }, { type: i4.XLinkComponent, selector: "x-link" }, { type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
378
384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: XTreeNodeComponent, decorators: [{
379
385
  type: Component,
380
- 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=\"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-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"] }]
386
+ 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=\"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"] }]
381
387
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { parent: [{
382
388
  type: Input
383
389
  }], tree: [{
@@ -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 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","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.level) * 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 (node.open && !node.childrenLoaded) {\r\n if (this.lazy) {\r\n this.loading = true;\r\n\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 this.cdr.detectChanges();\r\n });\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 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 this.parent?.setParentCheckbox();\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=\"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 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(expandedAll) && this.setExpandedAll();\r\n XIsChange(data) && this.setData();\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 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 = [...result, x];\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\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>\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<!-- 提前加载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\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]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-tree.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 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","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.level) * 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 (node.open && !node.childrenLoaded) {\r\n if (this.lazy) {\r\n this.loading = true;\r\n\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 this.cdr.detectChanges();\r\n });\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 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 this.parent?.setParentCheckbox();\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=\"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 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(expandedAll) && this.setExpandedAll();\r\n XIsChange(data) && this.setData();\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 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 = [...result, x];\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\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>\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<!-- 提前加载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\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]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -43,6 +43,21 @@ export declare class XFindProperty extends XControlValueAccessor<any | any[]> im
43
43
  * @en_US Bullet title
44
44
  */
45
45
  dialogTitle: string;
46
+ /**
47
+ * @zh_CN 弹框表格选择列头名称
48
+ * @en_US Ball Form Select List Name
49
+ */
50
+ dialogCheckboxLabel: string;
51
+ /**
52
+ * @zh_CN 弹框表格选择列宽
53
+ * @en_US Ball Form Select List width
54
+ */
55
+ dialogCheckboxWidth: number;
56
+ /**
57
+ * @zh_CN 弹框选择数据为空的提示信息
58
+ * @en_US Ball box selection data empty prompt information
59
+ */
60
+ dialogEmptyContent: string;
46
61
  /**
47
62
  * @zh_CN 弹框宽度
48
63
  * @en_US Bullet frame width
@@ -211,7 +226,7 @@ export declare class XFindProperty extends XControlValueAccessor<any | any[]> im
211
226
  */
212
227
  search: XFindSearchOption;
213
228
  static ɵfac: i0.ɵɵFactoryDeclaration<XFindProperty, never>;
214
- static ɵcmp: i0.ɵɵComponentDeclaration<XFindProperty, "ng-component", never, { "size": "size"; "bordered": "bordered"; "multiple": "multiple"; "columnLabel": "columnLabel"; "dialogTitle": "dialogTitle"; "dialogWidth": "dialogWidth"; "dialogHeight": "dialogHeight"; "dialogVisible": "dialogVisible"; "dialogButtonsCenter": "dialogButtonsCenter"; "tableData": "tableData"; "tableIndex": "tableIndex"; "tableSize": "tableSize"; "tableQuery": "tableQuery"; "tableTotal": "tableTotal"; "tableColumns": "tableColumns"; "tableActivatedRow": "tableActivatedRow"; "tableCheckedRow": "tableCheckedRow"; "tableLoading": "tableLoading"; "tableVirtualScroll": "tableVirtualScroll"; "tableBodyHeight": "tableBodyHeight"; "tableMinBufferPx": "tableMinBufferPx"; "tableMaxBufferPx": "tableMaxBufferPx"; "tableAdaptionHeight": "tableAdaptionHeight"; "tableDocPercent": "tableDocPercent"; "tableRowHeight": "tableRowHeight"; "treeData": "treeData"; "treeActivatedId": "treeActivatedId"; "treeExpandedLevel": "treeExpandedLevel"; "treeChecked": "treeChecked"; "treeCheckbox": "treeCheckbox"; "treeTableConnect": "treeTableConnect"; "search": "search"; }, { "dialogVisibleChange": "dialogVisibleChange"; "tableIndexChange": "tableIndexChange"; "tableSizeChange": "tableSizeChange"; "tableSortChange": "tableSortChange"; "tableRowEmit": "tableRowEmit"; "treeActivatedChange": "treeActivatedChange"; }, never, never>;
229
+ static ɵcmp: i0.ɵɵComponentDeclaration<XFindProperty, "ng-component", never, { "size": "size"; "bordered": "bordered"; "multiple": "multiple"; "columnLabel": "columnLabel"; "dialogTitle": "dialogTitle"; "dialogCheckboxLabel": "dialogCheckboxLabel"; "dialogCheckboxWidth": "dialogCheckboxWidth"; "dialogEmptyContent": "dialogEmptyContent"; "dialogWidth": "dialogWidth"; "dialogHeight": "dialogHeight"; "dialogVisible": "dialogVisible"; "dialogButtonsCenter": "dialogButtonsCenter"; "tableData": "tableData"; "tableIndex": "tableIndex"; "tableSize": "tableSize"; "tableQuery": "tableQuery"; "tableTotal": "tableTotal"; "tableColumns": "tableColumns"; "tableActivatedRow": "tableActivatedRow"; "tableCheckedRow": "tableCheckedRow"; "tableLoading": "tableLoading"; "tableVirtualScroll": "tableVirtualScroll"; "tableBodyHeight": "tableBodyHeight"; "tableMinBufferPx": "tableMinBufferPx"; "tableMaxBufferPx": "tableMaxBufferPx"; "tableAdaptionHeight": "tableAdaptionHeight"; "tableDocPercent": "tableDocPercent"; "tableRowHeight": "tableRowHeight"; "treeData": "treeData"; "treeActivatedId": "treeActivatedId"; "treeExpandedLevel": "treeExpandedLevel"; "treeChecked": "treeChecked"; "treeCheckbox": "treeCheckbox"; "treeTableConnect": "treeTableConnect"; "search": "search"; }, { "dialogVisibleChange": "dialogVisibleChange"; "tableIndexChange": "tableIndexChange"; "tableSizeChange": "tableSizeChange"; "tableSortChange": "tableSortChange"; "tableRowEmit": "tableRowEmit"; "treeActivatedChange": "treeActivatedChange"; }, never, never>;
215
230
  }
216
231
  /**
217
232
  * Find Option
@@ -243,6 +258,21 @@ export interface XFindOption extends XFormOption {
243
258
  * @en_US Bullet title
244
259
  */
245
260
  dialogTitle?: string;
261
+ /**
262
+ * @zh_CN 弹框表格选择框列头名称
263
+ * @en_US Ball Form Select Box List Name
264
+ */
265
+ dialogCheckboxLabel?: string;
266
+ /**
267
+ * @zh_CN 弹框表格选择框列头宽度
268
+ * @en_US Ball Form Select Box List width
269
+ */
270
+ dialogCheckboxWidth?: number;
271
+ /**
272
+ * @zh_CN 弹框选择数据为空的提示内容
273
+ * @en_US Ball box selection data empty prompt information
274
+ */
275
+ dialogEmptyContent?: string;
246
276
  /**
247
277
  * @zh_CN 弹框宽度
248
278
  * @en_US Bullet frame width
@@ -25,7 +25,12 @@ export declare class XMenuProperty extends XProperty {
25
25
  * @zh_CN 尺寸
26
26
  * @en_US Size
27
27
  */
28
- size?: XSize;
28
+ size: XSize;
29
+ /**
30
+ * @zh_CN 宽度,只有布局 layout 为 'column' 生效
31
+ * @en_US Width, only layout layout is the 'column'
32
+ */
33
+ width: string;
29
34
  /**
30
35
  * @zh_CN 缩起菜单
31
36
  * @en_US Shrink menu
@@ -35,7 +40,7 @@ export declare class XMenuProperty extends XProperty {
35
40
  * @zh_CN 触发方式,只针对横向布局
36
41
  * @en_US Trigger mode, only for horizontal layout
37
42
  */
38
- trigger?: XMenuTrigger;
43
+ trigger: XMenuTrigger;
39
44
  /**
40
45
  * @zh_CN 节点模板
41
46
  * @en_US Node template
@@ -77,7 +82,7 @@ export declare class XMenuProperty extends XProperty {
77
82
  */
78
83
  activatedIdChange: EventEmitter<any>;
79
84
  static ɵfac: i0.ɵɵFactoryDeclaration<XMenuProperty, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<XMenuProperty, "ng-component", never, { "data": "data"; "layout": "layout"; "size": "size"; "collapsed": "collapsed"; "trigger": "trigger"; "nodeTpl": "nodeTpl"; "expandedAll": "expandedAll"; "expandedLevel": "expandedLevel"; "activatedId": "activatedId"; "target": "target"; "portalMinWidth": "portalMinWidth"; }, { "nodeClick": "nodeClick"; "activatedIdChange": "activatedIdChange"; }, never, never>;
85
+ static ɵcmp: i0.ɵɵComponentDeclaration<XMenuProperty, "ng-component", never, { "data": "data"; "layout": "layout"; "size": "size"; "width": "width"; "collapsed": "collapsed"; "trigger": "trigger"; "nodeTpl": "nodeTpl"; "expandedAll": "expandedAll"; "expandedLevel": "expandedLevel"; "activatedId": "activatedId"; "target": "target"; "portalMinWidth": "portalMinWidth"; }, { "nodeClick": "nodeClick"; "activatedIdChange": "activatedIdChange"; }, never, never>;
81
86
  }
82
87
  /**
83
88
  * @zh_CN MenuNode 节点数据
@@ -0,0 +1,6 @@
1
+ ---
2
+ order: 5
3
+ label: 'Loading'
4
+ ---
5
+
6
+ Use `loading()` to use the load, you need to remove it manually or update.
@@ -0,0 +1,6 @@
1
+ ---
2
+ order: 5
3
+ label: '加载中'
4
+ ---
5
+
6
+ 使用 `loading()` 来使用加载中,需要手动或者更新移除。
@@ -0,0 +1,8 @@
1
+ import { XMessageOption } from './message.property';
2
+ export declare class XMessageRef {
3
+ option: XMessageOption;
4
+ constructor(option: XMessageOption);
5
+ close: () => void;
6
+ closeAll: () => void;
7
+ update: (_option: XMessageOption) => void;
8
+ }
@@ -1,11 +1,11 @@
1
1
  import { Renderer2, ElementRef, ChangeDetectorRef } from '@angular/core';
2
- import { XMessageOption, XMessageRef } from './message.property';
2
+ import { XMessageOption, XMessagePlacementRef } from './message.property';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class XMessageComponent {
5
5
  renderer: Renderer2;
6
6
  elementRef: ElementRef;
7
7
  cdr: ChangeDetectorRef;
8
- message: XMessageRef;
8
+ message: XMessagePlacementRef;
9
9
  constructor(renderer: Renderer2, elementRef: ElementRef, cdr: ChangeDetectorRef);
10
10
  onClose(item: XMessageOption): void;
11
11
  moveDone($event: {
@@ -13,7 +13,7 @@ export declare class XMessageComponent {
13
13
  }): void;
14
14
  onEnter(item: XMessageOption): void;
15
15
  onLeave(item: XMessageOption): void;
16
- trackByNode(_index: number, item: XMessageOption): string;
16
+ trackByNode(_index: number, item: XMessageOption): string | undefined;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<XMessageComponent, never>;
18
18
  static ɵcmp: i0.ɵɵComponentDeclaration<XMessageComponent, "x-message", never, {}, {}, never, never>;
19
19
  }