@ng-nest/ui 22.0.2 → 22.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ng-nest-ui-auto-complete.mjs +10 -6
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +47 -2
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ng-nest-ui-auto-complete.d.ts +2 -1
- package/types/ng-nest-ui-checkbox.d.ts +1 -1
- package/types/ng-nest-ui-contextmenu.d.ts +1 -1
- package/types/ng-nest-ui-radio.d.ts +1 -1
- package/types/ng-nest-ui-tree.d.ts +2 -0
|
@@ -12,7 +12,6 @@ import { Overlay } from '@angular/cdk/overlay';
|
|
|
12
12
|
import { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';
|
|
13
13
|
import * as i1 from '@angular/forms';
|
|
14
14
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
15
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
16
15
|
|
|
17
16
|
/**
|
|
18
17
|
* AutoComplete
|
|
@@ -385,6 +384,7 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
385
384
|
...(ngDevMode ? [{ debugName: "iconSpin" }] : /* istanbul ignore next */ []));
|
|
386
385
|
this.animating = signal(false, /* @ts-ignore */
|
|
387
386
|
...(ngDevMode ? [{ debugName: "animating" }] : /* istanbul ignore next */ []));
|
|
387
|
+
this.lastValidValue = null;
|
|
388
388
|
this.valueTplContextSignal = signal({ $node: null, $isValue: true }, /* @ts-ignore */
|
|
389
389
|
...(ngDevMode ? [{ debugName: "valueTplContextSignal" }] : /* istanbul ignore next */ []));
|
|
390
390
|
this.valueTplContextComputed = computed(() => {
|
|
@@ -410,7 +410,8 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
410
410
|
...(ngDevMode ? [{ debugName: "portalComponent" }] : /* istanbul ignore next */ []));
|
|
411
411
|
this.portalOverlayRef = signal(null, /* @ts-ignore */
|
|
412
412
|
...(ngDevMode ? [{ debugName: "portalOverlayRef" }] : /* istanbul ignore next */ []));
|
|
413
|
-
this.
|
|
413
|
+
this.keywordText = signal(null, /* @ts-ignore */
|
|
414
|
+
...(ngDevMode ? [{ debugName: "keywordText" }] : /* istanbul ignore next */ []));
|
|
414
415
|
effect(() => this.portalComponent()?.setInput('value', this.value()));
|
|
415
416
|
effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));
|
|
416
417
|
effect(() => this.portalComponent()?.setInput('data', this.searchNodes()));
|
|
@@ -420,7 +421,7 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
420
421
|
effect(() => this.portalComponent()?.setInput('portalWidth', this.portalWidth()));
|
|
421
422
|
effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));
|
|
422
423
|
effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));
|
|
423
|
-
effect(() => this.portalComponent()?.setInput('keywordText', this.
|
|
424
|
+
effect(() => this.portalComponent()?.setInput('keywordText', this.keywordText()));
|
|
424
425
|
effect(() => this.portalComponent()?.setInput('portalTemp', this.portalTemp()));
|
|
425
426
|
}
|
|
426
427
|
ngOnInit() {
|
|
@@ -501,10 +502,11 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
501
502
|
if (!this.nodes()
|
|
502
503
|
.map((x) => x.label)
|
|
503
504
|
.includes(this.value())) {
|
|
504
|
-
this.
|
|
505
|
+
const restored = this.lastValidValue ?? '';
|
|
506
|
+
this.value.set(restored);
|
|
507
|
+
this.keywordText.set(restored);
|
|
505
508
|
if (this.onChange)
|
|
506
|
-
this.onChange(
|
|
507
|
-
this.inputChange.next(this.value());
|
|
509
|
+
this.onChange(restored);
|
|
508
510
|
}
|
|
509
511
|
}
|
|
510
512
|
showPortal() {
|
|
@@ -587,6 +589,7 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
587
589
|
return;
|
|
588
590
|
}
|
|
589
591
|
this.value.set(node.label);
|
|
592
|
+
this.lastValidValue = node.label;
|
|
590
593
|
this.valueTplContextSignal.update((x) => {
|
|
591
594
|
x.$node = node;
|
|
592
595
|
return { ...x };
|
|
@@ -679,6 +682,7 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
679
682
|
this.formControlValidator();
|
|
680
683
|
setTimeout(() => {
|
|
681
684
|
this.searchChange.emit(this.value());
|
|
685
|
+
this.keywordText.set(this.value());
|
|
682
686
|
this.inputChange.next(this.value());
|
|
683
687
|
});
|
|
684
688
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XSize,\r\n XBoolean,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate,\r\n XToNumber,\r\n XNumber,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XVariant,\r\n XFloatLabel,\r\n XPlacement,\r\n XPositionLeftRight\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_AUTOCOMPLETE_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XAutoCompleteNode>>([]);\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XAutoCompleteVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n readonly debounceTime = input<number, XNumber>(this.config?.debounceTime ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n readonly placement = input<XPlacement>(this.config?.placement ?? 'bottom-start');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n readonly inputStyle = input<{ [style: string]: any }>();\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = model<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XAutoCompleteIconLayoutType>(this.config?.iconLayout ?? 'right');\r\n /**\r\n * @zh_CN 下拉框的最大高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>(this.config?.portalMaxHeight ?? '12rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的高度,启用虚拟滚动的时候必须设置一个高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalHeight = input<string, XNumber>('', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的宽度\r\n * @en_US The width of the drop-down box\r\n */\r\n readonly portalWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 下拉框设置样式名\r\n * @en_US The style class name of the drop-down box\r\n */\r\n readonly portalClass = input<string | string[]>('');\r\n /**\r\n * @zh_CN 自定义下拉框中的内容\r\n * @en_US Custom content in the drop-down box\r\n */\r\n readonly portalTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n readonly onlySelect = input<boolean, XBoolean>(this.config?.onlySelect ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XAutoCompleteFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | null>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string>('');\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeEmit = output<XAutoCompleteNode>();\r\n /**\r\n * @zh_CN 输入值变化事件\r\n * @en_US Input value change event\r\n */\r\n readonly searchChange = output<any>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XAutoCompleteVariant;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPlacement;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n caseSensitive?: boolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n onlySelect?: boolean;\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XAutoCompleteFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp;\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string;\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeEmit?: (node: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XAutoCompleteIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XAutoCompleteFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XAutoCompleteVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef,\r\n input,\r\n viewChild,\r\n signal,\r\n model,\r\n output,\r\n DestroyRef,\r\n inject,\r\n computed\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n imports: [XListComponent, NgTemplateOutlet],\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit {\r\n @HostBinding('animate.enter') animateEnter = 'x-connect-enter';\r\n @HostBinding('animate.leave') animateLeave = 'x-connect-leave';\r\n\r\n @HostListener('animationend') done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('animationstart') start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\r\n }\r\n\r\n list = viewChild('list', { read: XListComponent });\r\n\r\n data = input<XAutoCompleteNode[]>();\r\n value = input<any>();\r\n placement = input<XPositionTopBottom>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n inputCom = input<XInputComponent>();\r\n keywordText = model<string>('');\r\n caseSensitive = input<boolean>(false);\r\n portalMaxHeight = input<string>('');\r\n portalHeight = input<string>('');\r\n portalWidth = input<string>('');\r\n animating = output<boolean>();\r\n nodeClick = output<XAutoCompleteNode>();\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(-1);\r\n destroy = signal(false);\r\n portalTemp = input<TemplateRef<any>>();\r\n\r\n portalTempContext = computed(() => ({\r\n $implicit: this.data(),\r\n $data: this.data(),\r\n $value: this.value(),\r\n $close: () => this.closeSubject.next(),\r\n $nodeClick: (node: XAutoCompleteNode) => this.onNodeClick(node)\r\n }));\r\n\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.list()?.setUnActive(this.active());\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n this.list()?.keydown(x);\r\n });\r\n this.destroyRef.onDestroy(() => {\r\n this.destroy.set(true);\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.list()?.keyManager.setFirstItemActive();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n this.keywordText.set(node.label);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active.set(num);\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n @if (portalTemp(); as portalTpl) {\r\n <ng-template [ngTemplateOutlet]=\"portalTpl\" [ngTemplateOutletContext]=\"portalTempContext()\"></ng-template>\r\n } @else {\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n }\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n inject,\r\n signal,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n computed,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents,\r\n XPlacement\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport {\r\n Overlay,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedOverlayPositionChange,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n inputCom = viewChild.required('inputCom', { read: XInputComponent });\r\n\r\n nodes = signal<XAutoCompleteNode[]>([]);\r\n searchNodes = signal<XAutoCompleteNode[]>([]);\r\n iconSpin = signal(false);\r\n animating = signal(false);\r\n\r\n valueTplContextSignal = signal<{ $node: any; $isValue: boolean }>({ $node: null, $isValue: true });\r\n valueTplContextComputed = computed(() => {\r\n return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();\r\n });\r\n\r\n widthComputed = computed(() => {\r\n const inputStyle = this.inputStyle() || {};\r\n return !!inputStyle?.['width'];\r\n });\r\n\r\n @HostBinding('style.width') get hostWidth() {\r\n return this.widthComputed() ? this.inputStyle()?.['width'] : null;\r\n }\r\n\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n private elementRef = inject(ElementRef);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XAutoCompletePortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n inputChanged = toSignal(this.inputChange.pipe(filter((x) => x !== null)));\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('value', this.value()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n effect(() => this.portalComponent()?.setInput('data', this.searchNodes()));\r\n effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));\r\n effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalWidth', this.portalWidth()));\r\n effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));\r\n effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));\r\n effect(() => this.portalComponent()?.setInput('keywordText', this.inputChanged()));\r\n effect(() => this.portalComponent()?.setInput('portalTemp', this.portalTemp()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data()) || XIsFunction(this.data())) return;\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.nodes.set(x);\r\n this.searchNodes.set(x);\r\n this.setPortal();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime() as number),\r\n distinctUntilChanged(),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value());\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portalOverlayRef()?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (!this.portalAttached()) return;\r\n this.portalOverlayRef()?.detach();\r\n this.active.set(false);\r\n if (!this.onlySelect()) return;\r\n if (\r\n !this.nodes()\r\n .map((x) => x.label)\r\n .includes(this.value())\r\n ) {\r\n this.value.set('');\r\n if (this.onChange) this.onChange(this.value());\r\n this.inputChange.next(this.value());\r\n }\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value()) || this.disabledComputed() || this.iconSpin() || this.animating()) return;\r\n this.active.set(true);\r\n if ((XIsObservable(this.data()) && this.nodes.length === 0) || XIsFunction(this.data())) {\r\n const beforeIcon = this.icon() || '';\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, this.value()).subscribe((x) => {\r\n this.icon.set(beforeIcon);\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.createPortal();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes()\r\n .filter((x) => x.selected)\r\n .map((x) => (x.selected = false));\r\n if (XIsFunction(this.data())) {\r\n this.searchNodes.set(this.nodes());\r\n } else if (!XIsEmpty(this.value())) {\r\n this.setSearchNodes(this.value());\r\n }\r\n const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: this.portalClass(),\r\n width: this.portalWidth() || box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n const portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n let { componentRef, overlayRef } = portal;\r\n if (!componentRef || !overlayRef) return;\r\n this.portalComponent.set(componentRef);\r\n this.portalOverlayRef.set(overlayRef);\r\n this.realPlacement.set(this.placement());\r\n overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n const { animating, nodeClick } = componentRef.instance;\r\n animating.subscribe((ing: boolean) => this.animating.set(ing));\r\n nodeClick.subscribe((node: XAutoCompleteNode) => this.onNodeClick(node));\r\n Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject\r\n });\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 XPositionTopBottom;\r\n if (place !== this.realPlacement()) {\r\n this.realPlacement.set(place);\r\n this.portalOverlayRef()?.updatePosition();\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n if (this.value() === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value.set(node.label);\r\n this.valueTplContextSignal.update((x) => {\r\n x.$node = node;\r\n return { ...x };\r\n });\r\n this.inputCom().inputFocus();\r\n if (this.onChange) this.onChange(this.value());\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom().inputRef(),\r\n placement: [\r\n this.placement() as XPositionTopBottom,\r\n 'bottom-start',\r\n 'bottom-end',\r\n 'bottom',\r\n 'top-start',\r\n 'top-end',\r\n 'top'\r\n ],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portalOverlayRef()?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive()) {\r\n this.searchNodes.set(this.nodes().filter((x) => x.label.indexOf(value) >= 0));\r\n } else {\r\n this.searchNodes.set(\r\n this.nodes().filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0)\r\n );\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data())) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n const beforeIcon = this.icon() || '';\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, value as any).subscribe((x) => {\r\n this.icon.set(beforeIcon);\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.searchNodes.set(this.nodes());\r\n });\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n return;\r\n }\r\n if (this.nodes()) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n }\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n portalClose() {\r\n this.closeSubject.next();\r\n }\r\n\r\n portalNodeClick(node: XAutoCompleteNode) {\r\n this.onNodeClick(node);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.searchChange.emit(this.value());\r\n this.inputChange.next(this.value());\r\n });\r\n }\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [iconLayout]=\"iconLayout()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\n\r\n@NgModule({\r\n exports: [XAutoCompleteComponent],\r\n imports: [XAutoCompleteComponent]\r\n})\r\nexport class XAutoCompleteModule {}\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-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XSize,\r\n XBoolean,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate,\r\n XToNumber,\r\n XNumber,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XVariant,\r\n XFloatLabel,\r\n XPlacement,\r\n XPositionLeftRight\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_AUTOCOMPLETE_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XAutoCompleteNode>>([]);\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XAutoCompleteVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n readonly debounceTime = input<number, XNumber>(this.config?.debounceTime ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n readonly placement = input<XPlacement>(this.config?.placement ?? 'bottom-start');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n readonly inputStyle = input<{ [style: string]: any }>();\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = model<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XAutoCompleteIconLayoutType>(this.config?.iconLayout ?? 'right');\r\n /**\r\n * @zh_CN 下拉框的最大高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>(this.config?.portalMaxHeight ?? '12rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的高度,启用虚拟滚动的时候必须设置一个高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalHeight = input<string, XNumber>('', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的宽度\r\n * @en_US The width of the drop-down box\r\n */\r\n readonly portalWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 下拉框设置样式名\r\n * @en_US The style class name of the drop-down box\r\n */\r\n readonly portalClass = input<string | string[]>('');\r\n /**\r\n * @zh_CN 自定义下拉框中的内容\r\n * @en_US Custom content in the drop-down box\r\n */\r\n readonly portalTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n readonly onlySelect = input<boolean, XBoolean>(this.config?.onlySelect ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XAutoCompleteFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | null>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string>('');\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeEmit = output<XAutoCompleteNode>();\r\n /**\r\n * @zh_CN 输入值变化事件\r\n * @en_US Input value change event\r\n */\r\n readonly searchChange = output<any>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XAutoCompleteVariant;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPlacement;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n caseSensitive?: boolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n onlySelect?: boolean;\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XAutoCompleteFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp;\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string;\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeEmit?: (node: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XAutoCompleteIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XAutoCompleteFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XAutoCompleteVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef,\r\n input,\r\n viewChild,\r\n signal,\r\n model,\r\n output,\r\n DestroyRef,\r\n inject,\r\n computed\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n imports: [XListComponent, NgTemplateOutlet],\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit {\r\n @HostBinding('animate.enter') animateEnter = 'x-connect-enter';\r\n @HostBinding('animate.leave') animateLeave = 'x-connect-leave';\r\n\r\n @HostListener('animationend') done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('animationstart') start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\r\n }\r\n\r\n list = viewChild('list', { read: XListComponent });\r\n\r\n data = input<XAutoCompleteNode[]>();\r\n value = input<any>();\r\n placement = input<XPositionTopBottom>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n inputCom = input<XInputComponent>();\r\n keywordText = model<string>('');\r\n caseSensitive = input<boolean>(false);\r\n portalMaxHeight = input<string>('');\r\n portalHeight = input<string>('');\r\n portalWidth = input<string>('');\r\n animating = output<boolean>();\r\n nodeClick = output<XAutoCompleteNode>();\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(-1);\r\n destroy = signal(false);\r\n portalTemp = input<TemplateRef<any>>();\r\n\r\n portalTempContext = computed(() => ({\r\n $implicit: this.data(),\r\n $data: this.data(),\r\n $value: this.value(),\r\n $close: () => this.closeSubject.next(),\r\n $nodeClick: (node: XAutoCompleteNode) => this.onNodeClick(node)\r\n }));\r\n\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.list()?.setUnActive(this.active());\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n this.list()?.keydown(x);\r\n });\r\n this.destroyRef.onDestroy(() => {\r\n this.destroy.set(true);\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.list()?.keyManager.setFirstItemActive();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n this.keywordText.set(node.label);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active.set(num);\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n @if (portalTemp(); as portalTpl) {\r\n <ng-template [ngTemplateOutlet]=\"portalTpl\" [ngTemplateOutletContext]=\"portalTempContext()\"></ng-template>\r\n } @else {\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n }\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n inject,\r\n signal,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n computed,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents,\r\n XPlacement\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport {\r\n Overlay,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedOverlayPositionChange,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n inputCom = viewChild.required('inputCom', { read: XInputComponent });\r\n\r\n nodes = signal<XAutoCompleteNode[]>([]);\r\n searchNodes = signal<XAutoCompleteNode[]>([]);\r\n iconSpin = signal(false);\r\n animating = signal(false);\r\n private lastValidValue: any = null;\r\n\r\n valueTplContextSignal = signal<{ $node: any; $isValue: boolean }>({ $node: null, $isValue: true });\r\n valueTplContextComputed = computed(() => {\r\n return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();\r\n });\r\n\r\n widthComputed = computed(() => {\r\n const inputStyle = this.inputStyle() || {};\r\n return !!inputStyle?.['width'];\r\n });\r\n\r\n @HostBinding('style.width') get hostWidth() {\r\n return this.widthComputed() ? this.inputStyle()?.['width'] : null;\r\n }\r\n\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n private elementRef = inject(ElementRef);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XAutoCompletePortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n private keywordText = signal<any>(null);\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('value', this.value()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n effect(() => this.portalComponent()?.setInput('data', this.searchNodes()));\r\n effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));\r\n effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalWidth', this.portalWidth()));\r\n effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));\r\n effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));\r\n effect(() => this.portalComponent()?.setInput('keywordText', this.keywordText()));\r\n effect(() => this.portalComponent()?.setInput('portalTemp', this.portalTemp()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data()) || XIsFunction(this.data())) return;\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.nodes.set(x);\r\n this.searchNodes.set(x);\r\n this.setPortal();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime() as number),\r\n distinctUntilChanged(),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value());\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portalOverlayRef()?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (!this.portalAttached()) return;\r\n this.portalOverlayRef()?.detach();\r\n this.active.set(false);\r\n if (!this.onlySelect()) return;\r\n if (\r\n !this.nodes()\r\n .map((x) => x.label)\r\n .includes(this.value())\r\n ) {\r\n const restored = this.lastValidValue ?? '';\r\n this.value.set(restored);\r\n this.keywordText.set(restored);\r\n if (this.onChange) this.onChange(restored);\r\n }\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value()) || this.disabledComputed() || this.iconSpin() || this.animating()) return;\r\n this.active.set(true);\r\n if ((XIsObservable(this.data()) && this.nodes.length === 0) || XIsFunction(this.data())) {\r\n const beforeIcon = this.icon() || '';\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, this.value()).subscribe((x) => {\r\n this.icon.set(beforeIcon);\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.createPortal();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes()\r\n .filter((x) => x.selected)\r\n .map((x) => (x.selected = false));\r\n if (XIsFunction(this.data())) {\r\n this.searchNodes.set(this.nodes());\r\n } else if (!XIsEmpty(this.value())) {\r\n this.setSearchNodes(this.value());\r\n }\r\n const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: this.portalClass(),\r\n width: this.portalWidth() || box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n const portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n let { componentRef, overlayRef } = portal;\r\n if (!componentRef || !overlayRef) return;\r\n this.portalComponent.set(componentRef);\r\n this.portalOverlayRef.set(overlayRef);\r\n this.realPlacement.set(this.placement());\r\n overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n const { animating, nodeClick } = componentRef.instance;\r\n animating.subscribe((ing: boolean) => this.animating.set(ing));\r\n nodeClick.subscribe((node: XAutoCompleteNode) => this.onNodeClick(node));\r\n Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject\r\n });\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 XPositionTopBottom;\r\n if (place !== this.realPlacement()) {\r\n this.realPlacement.set(place);\r\n this.portalOverlayRef()?.updatePosition();\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n if (this.value() === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value.set(node.label);\r\n this.lastValidValue = node.label;\r\n this.valueTplContextSignal.update((x) => {\r\n x.$node = node;\r\n return { ...x };\r\n });\r\n this.inputCom().inputFocus();\r\n if (this.onChange) this.onChange(this.value());\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom().inputRef(),\r\n placement: [\r\n this.placement() as XPositionTopBottom,\r\n 'bottom-start',\r\n 'bottom-end',\r\n 'bottom',\r\n 'top-start',\r\n 'top-end',\r\n 'top'\r\n ],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portalOverlayRef()?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive()) {\r\n this.searchNodes.set(this.nodes().filter((x) => x.label.indexOf(value) >= 0));\r\n } else {\r\n this.searchNodes.set(\r\n this.nodes().filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0)\r\n );\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data())) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n const beforeIcon = this.icon() || '';\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, value as any).subscribe((x) => {\r\n this.icon.set(beforeIcon);\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.searchNodes.set(this.nodes());\r\n });\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n return;\r\n }\r\n if (this.nodes()) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n }\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n portalClose() {\r\n this.closeSubject.next();\r\n }\r\n\r\n portalNodeClick(node: XAutoCompleteNode) {\r\n this.onNodeClick(node);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.searchChange.emit(this.value());\r\n this.keywordText.set(this.value());\r\n this.inputChange.next(this.value());\r\n });\r\n }\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [iconLayout]=\"iconLayout()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\n\r\n@NgModule({\r\n exports: [XAutoCompleteComponent],\r\n imports: [XAutoCompleteComponent]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -864,6 +864,8 @@ class XTreeComponent extends XTreeProperty {
|
|
|
864
864
|
...(ngDevMode ? [{ debugName: "draggingTreeNode" }] : /* istanbul ignore next */ []));
|
|
865
865
|
this.isEmpty = computed(() => XIsEmpty(this.nodes()), /* @ts-ignore */
|
|
866
866
|
...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
|
|
867
|
+
this.hasChecked = signal(false, /* @ts-ignore */
|
|
868
|
+
...(ngDevMode ? [{ debugName: "hasChecked" }] : /* istanbul ignore next */ []));
|
|
867
869
|
this.unSubject = new Subject();
|
|
868
870
|
this.heightAdaptionSignal = signal(0, /* @ts-ignore */
|
|
869
871
|
...(ngDevMode ? [{ debugName: "heightAdaptionSignal" }] : /* istanbul ignore next */ []));
|
|
@@ -1017,7 +1019,7 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1017
1019
|
});
|
|
1018
1020
|
}
|
|
1019
1021
|
setDataChange(value, regetChildren = false, init = true, parentOpen = true, lazyParant, out = false) {
|
|
1020
|
-
if (XIsEmpty(this.checked()))
|
|
1022
|
+
if (XIsEmpty(this.checked()) || !this.hasChecked())
|
|
1021
1023
|
this.checked.set([]);
|
|
1022
1024
|
const getChildren = (node, level) => {
|
|
1023
1025
|
if (init) {
|
|
@@ -1048,6 +1050,9 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1048
1050
|
};
|
|
1049
1051
|
this.treeData.set(value);
|
|
1050
1052
|
this.nodes.set(XOrderBy(value.filter((x) => XIsEmpty(x.pid)), this.order().map((x) => x.property), this.order().map((x) => x.order)).map((x) => getChildren(x, 0)));
|
|
1053
|
+
if (this.levelCheck()) {
|
|
1054
|
+
this.syncParentCheckboxState();
|
|
1055
|
+
}
|
|
1051
1056
|
if (parentOpen) {
|
|
1052
1057
|
for (let item of value) {
|
|
1053
1058
|
if (!item.leaf && item.open) {
|
|
@@ -1058,6 +1063,42 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1058
1063
|
this.setExpanded();
|
|
1059
1064
|
this.cdr.markForCheck();
|
|
1060
1065
|
}
|
|
1066
|
+
syncParentCheckboxState(nodes = this.treeData()) {
|
|
1067
|
+
const setState = (node) => {
|
|
1068
|
+
if (XIsEmpty(node.children) || !node.children?.length)
|
|
1069
|
+
return;
|
|
1070
|
+
const checkedList = node.children.filter((y) => y.checked);
|
|
1071
|
+
const indeterminateList = node.children.filter((y) => y.indeterminate);
|
|
1072
|
+
node.checked = checkedList.length === node.children.length;
|
|
1073
|
+
node.indeterminate = checkedList.length > 0 || indeterminateList.length > 0;
|
|
1074
|
+
node.children.forEach((item) => setState(item));
|
|
1075
|
+
};
|
|
1076
|
+
nodes.forEach((node) => setState(node));
|
|
1077
|
+
const parentMap = new Map();
|
|
1078
|
+
for (const item of this.treeData()) {
|
|
1079
|
+
if (!XIsEmpty(item.pid)) {
|
|
1080
|
+
const parent = this.treeData().find((x) => x.id === item.pid);
|
|
1081
|
+
if (parent)
|
|
1082
|
+
parentMap.set(item.id, parent);
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
const updateParent = (node) => {
|
|
1086
|
+
const parent = parentMap.get(node.id);
|
|
1087
|
+
if (!parent)
|
|
1088
|
+
return;
|
|
1089
|
+
const parentChildren = parent.children ?? [];
|
|
1090
|
+
const checkedChildren = parentChildren.filter((x) => x.checked);
|
|
1091
|
+
const indeterminateChildren = parentChildren.filter((x) => x.indeterminate);
|
|
1092
|
+
parent.checked = parentChildren.length > 0 && checkedChildren.length === parentChildren.length;
|
|
1093
|
+
parent.indeterminate = checkedChildren.length > 0 || indeterminateChildren.length > 0;
|
|
1094
|
+
updateParent(parent);
|
|
1095
|
+
};
|
|
1096
|
+
for (const item of this.treeData()) {
|
|
1097
|
+
if (!XIsEmpty(item.pid)) {
|
|
1098
|
+
updateParent(item);
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1061
1102
|
nodeMouseenter($event) {
|
|
1062
1103
|
const { node, ele } = $event;
|
|
1063
1104
|
if (!this.dragging())
|
|
@@ -1119,7 +1160,8 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1119
1160
|
return this.getCheckedNodes().map((x) => x.id);
|
|
1120
1161
|
}
|
|
1121
1162
|
setCheckedKeys(keys = []) {
|
|
1122
|
-
|
|
1163
|
+
if (!XIsEmpty(keys))
|
|
1164
|
+
this.hasChecked.set(true);
|
|
1123
1165
|
const setChildren = (nodes, clear = false) => {
|
|
1124
1166
|
if (XIsEmpty(nodes))
|
|
1125
1167
|
return;
|
|
@@ -1130,6 +1172,9 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1130
1172
|
});
|
|
1131
1173
|
};
|
|
1132
1174
|
setChildren(this.nodes(), XIsEmpty(keys));
|
|
1175
|
+
if (this.levelCheck()) {
|
|
1176
|
+
this.syncParentCheckboxState();
|
|
1177
|
+
}
|
|
1133
1178
|
this.cdr.markForCheck();
|
|
1134
1179
|
}
|
|
1135
1180
|
setExpandedAll() {
|
|
@@ -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.service.ts","../../../../lib/ng-nest/ui/tree/tree.token.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 { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/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_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\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 readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @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 readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\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 readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<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 readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\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 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 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 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\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({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n InjectionToken,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ModelSignal,\r\n OutputEmitterRef,\r\n TemplateRef,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport type { XTreeNode } from './tree.property';\r\nimport type { XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\nexport interface XTreeContext {\r\n nodes: WritableSignal<XTreeNode[]>;\r\n dragging: WritableSignal<boolean>;\r\n hoverTreeNode: WritableSignal<XTreeNode | null>;\r\n spacing: InputSignalWithTransform<string, XNumber>;\r\n dragPosition: WritableSignal<-1 | 0 | 1>;\r\n activatedId: ModelSignal<any>;\r\n multiple: InputSignalWithTransform<boolean, XBoolean>;\r\n objectArray: InputSignalWithTransform<boolean, XBoolean>;\r\n levelCheck: InputSignalWithTransform<boolean, XBoolean>;\r\n activatedNode: WritableSignal<XTreeNode | null>;\r\n nodeOpen: InputSignalWithTransform<boolean, XBoolean>;\r\n onlyLeaf: InputSignalWithTransform<boolean, XBoolean>;\r\n includeChildren: InputSignalWithTransform<boolean, XBoolean>;\r\n activatedChange: OutputEmitterRef<XTreeNode>;\r\n nodeClick: OutputEmitterRef<XTreeNode>;\r\n checkboxChange: OutputEmitterRef<XTreeNode>;\r\n allowManyActivated: InputSignalWithTransform<boolean, XBoolean>;\r\n showLine: InputSignalWithTransform<boolean, XBoolean>;\r\n expandedIcon: InputSignal<TemplateRef<void> | undefined>;\r\n checkbox: InputSignalWithTransform<boolean, XBoolean>;\r\n labelTpl: InputSignal<TemplateRef<void> | undefined>;\r\n keywordText: InputSignal<string | string[] | undefined>;\r\n caseSensitive: InputSignalWithTransform<boolean, XBoolean>;\r\n}\r\n\r\nexport const X_TREE_CONTEXT = new InjectionToken<XTreeContext>('X_TREE_CONTEXT');\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { X_TREE_CONTEXT } from './tree.token';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\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 {\r\n tree = inject(X_TREE_CONTEXT, { optional: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\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() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\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.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\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 getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\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 =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\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 onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { X_TREE_CONTEXT, XTreeContext } from './tree.token';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_TREE_CONTEXT,\r\n useExisting: XTreeComponent\r\n }\r\n ]\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges, XTreeContext {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\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(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked())) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n // if (!XIsEmpty(keys)) this.hasChecked.set(true);\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.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n\r\n const updateNodeStates = (nodes: XTreeNode[]) => {\r\n nodes.forEach((node) => {\r\n node.open = this.expandedAll();\r\n node.change && node.change();\r\n if (node.children) {\r\n updateNodeStates(node.children);\r\n }\r\n });\r\n };\r\n updateNodeStates(this.treeData());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n const allExpandedNodes: XTreeNode[] = [];\r\n const traverse = (nodes: XTreeNode[]) => {\r\n for (const node of nodes) {\r\n allExpandedNodes.push(node);\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n };\r\n\r\n const rootNodes = XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n\r\n traverse(rootNodes);\r\n this.nodes.set(allExpandedNodes);\r\n this.virtualNodes.set([...allExpandedNodes]);\r\n }\r\n\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\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 if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\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 const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"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.service.ts","../../../../lib/ng-nest/ui/tree/tree.token.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 { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/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_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\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 readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @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 readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\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 readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<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 readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\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 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 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 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\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({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n InjectionToken,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ModelSignal,\r\n OutputEmitterRef,\r\n TemplateRef,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport type { XTreeNode } from './tree.property';\r\nimport type { XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\nexport interface XTreeContext {\r\n nodes: WritableSignal<XTreeNode[]>;\r\n dragging: WritableSignal<boolean>;\r\n hoverTreeNode: WritableSignal<XTreeNode | null>;\r\n spacing: InputSignalWithTransform<string, XNumber>;\r\n dragPosition: WritableSignal<-1 | 0 | 1>;\r\n activatedId: ModelSignal<any>;\r\n multiple: InputSignalWithTransform<boolean, XBoolean>;\r\n objectArray: InputSignalWithTransform<boolean, XBoolean>;\r\n levelCheck: InputSignalWithTransform<boolean, XBoolean>;\r\n activatedNode: WritableSignal<XTreeNode | null>;\r\n nodeOpen: InputSignalWithTransform<boolean, XBoolean>;\r\n onlyLeaf: InputSignalWithTransform<boolean, XBoolean>;\r\n includeChildren: InputSignalWithTransform<boolean, XBoolean>;\r\n activatedChange: OutputEmitterRef<XTreeNode>;\r\n nodeClick: OutputEmitterRef<XTreeNode>;\r\n checkboxChange: OutputEmitterRef<XTreeNode>;\r\n allowManyActivated: InputSignalWithTransform<boolean, XBoolean>;\r\n showLine: InputSignalWithTransform<boolean, XBoolean>;\r\n expandedIcon: InputSignal<TemplateRef<void> | undefined>;\r\n checkbox: InputSignalWithTransform<boolean, XBoolean>;\r\n labelTpl: InputSignal<TemplateRef<void> | undefined>;\r\n keywordText: InputSignal<string | string[] | undefined>;\r\n caseSensitive: InputSignalWithTransform<boolean, XBoolean>;\r\n}\r\n\r\nexport const X_TREE_CONTEXT = new InjectionToken<XTreeContext>('X_TREE_CONTEXT');\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { X_TREE_CONTEXT } from './tree.token';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\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 {\r\n tree = inject(X_TREE_CONTEXT, { optional: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\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() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\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.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\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 getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\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 =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\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 onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { X_TREE_CONTEXT, XTreeContext } from './tree.token';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_TREE_CONTEXT,\r\n useExisting: XTreeComponent\r\n }\r\n ]\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges, XTreeContext {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n hasChecked = signal(false);\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\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(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked()) || !this.hasChecked()) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (this.levelCheck()) {\r\n this.syncParentCheckboxState();\r\n }\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private syncParentCheckboxState(nodes: XTreeNode[] = this.treeData()) {\r\n const setState = (node: XTreeNode) => {\r\n if (XIsEmpty(node.children) || !node.children?.length) return;\r\n const checkedList = node.children.filter((y: XTreeNode) => y.checked);\r\n const indeterminateList = node.children.filter((y: XTreeNode) => y.indeterminate);\r\n node.checked = checkedList.length === node.children.length;\r\n node.indeterminate = checkedList.length > 0 || indeterminateList.length > 0;\r\n node.children.forEach((item) => setState(item));\r\n };\r\n\r\n nodes.forEach((node) => setState(node));\r\n const parentMap = new Map<any, XTreeNode>();\r\n for (const item of this.treeData()) {\r\n if (!XIsEmpty(item.pid)) {\r\n const parent = this.treeData().find((x) => x.id === item.pid);\r\n if (parent) parentMap.set(item.id, parent);\r\n }\r\n }\r\n\r\n const updateParent = (node: XTreeNode): void => {\r\n const parent = parentMap.get(node.id);\r\n if (!parent) return;\r\n const parentChildren = parent.children ?? [];\r\n const checkedChildren = parentChildren.filter((x) => x.checked);\r\n const indeterminateChildren = parentChildren.filter((x) => x.indeterminate);\r\n parent.checked = parentChildren.length > 0 && checkedChildren.length === parentChildren.length;\r\n parent.indeterminate = checkedChildren.length > 0 || indeterminateChildren.length > 0;\r\n updateParent(parent);\r\n };\r\n\r\n for (const item of this.treeData()) {\r\n if (!XIsEmpty(item.pid)) {\r\n updateParent(item);\r\n }\r\n }\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n if (!XIsEmpty(keys)) this.hasChecked.set(true);\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.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n if (this.levelCheck()) {\r\n this.syncParentCheckboxState();\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n\r\n const updateNodeStates = (nodes: XTreeNode[]) => {\r\n nodes.forEach((node) => {\r\n node.open = this.expandedAll();\r\n node.change && node.change();\r\n if (node.children) {\r\n updateNodeStates(node.children);\r\n }\r\n });\r\n };\r\n updateNodeStates(this.treeData());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n const allExpandedNodes: XTreeNode[] = [];\r\n const traverse = (nodes: XTreeNode[]) => {\r\n for (const node of nodes) {\r\n allExpandedNodes.push(node);\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n };\r\n\r\n const rootNodes = XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n\r\n traverse(rootNodes);\r\n this.nodes.set(allExpandedNodes);\r\n this.virtualNodes.set([...allExpandedNodes]);\r\n }\r\n\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\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 if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\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 const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -512,6 +512,7 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
|
|
|
512
512
|
searchNodes: _angular_core.WritableSignal<XAutoCompleteNode[]>;
|
|
513
513
|
iconSpin: _angular_core.WritableSignal<boolean>;
|
|
514
514
|
animating: _angular_core.WritableSignal<boolean>;
|
|
515
|
+
private lastValidValue;
|
|
515
516
|
valueTplContextSignal: _angular_core.WritableSignal<{
|
|
516
517
|
$node: any;
|
|
517
518
|
$isValue: boolean;
|
|
@@ -530,7 +531,7 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
|
|
|
530
531
|
private realPlacement;
|
|
531
532
|
portalComponent: _angular_core.WritableSignal<ComponentRef<XAutoCompletePortalComponent> | null>;
|
|
532
533
|
portalOverlayRef: _angular_core.WritableSignal<OverlayRef | null>;
|
|
533
|
-
|
|
534
|
+
private keywordText;
|
|
534
535
|
constructor();
|
|
535
536
|
ngOnInit(): void;
|
|
536
537
|
ngOnChanges(changes: SimpleChanges): void;
|
|
@@ -332,7 +332,7 @@ declare class XCheckboxComponent extends XCheckboxProperty implements OnChanges,
|
|
|
332
332
|
labelMapSignal: _angular_core.Signal<{
|
|
333
333
|
[x: string]: boolean;
|
|
334
334
|
}>;
|
|
335
|
-
checkboxType: _angular_core.Signal<"
|
|
335
|
+
checkboxType: _angular_core.Signal<"initial" | "button" | "icon" | "tag">;
|
|
336
336
|
constructor();
|
|
337
337
|
ngOnChanges(changes: SimpleChanges): void;
|
|
338
338
|
ngOnDestroy(): void;
|
|
@@ -24,7 +24,7 @@ declare class XContextmenuProperty extends XContextmenuProperty_base {
|
|
|
24
24
|
* @zh_CN 触发目标元素
|
|
25
25
|
* @en_US Trigger target element
|
|
26
26
|
*/
|
|
27
|
-
readonly target: _angular_core.InputSignal<
|
|
27
|
+
readonly target: _angular_core.InputSignal<ElementRef<any> | HTMLElement | undefined>;
|
|
28
28
|
/**
|
|
29
29
|
* @zh_CN 节点数据
|
|
30
30
|
* @en_US Node data
|
|
@@ -297,7 +297,7 @@ declare class XRadioComponent extends XRadioProperty implements OnChanges, OnDes
|
|
|
297
297
|
labelMapSignal: _angular_core.Signal<{
|
|
298
298
|
[x: string]: boolean;
|
|
299
299
|
}>;
|
|
300
|
-
radioType: _angular_core.Signal<"
|
|
300
|
+
radioType: _angular_core.Signal<"initial" | "button" | "icon" | "tag">;
|
|
301
301
|
ngOnChanges(changes: SimpleChanges): void;
|
|
302
302
|
ngOnDestroy(): void;
|
|
303
303
|
radioClick(event: Event, node: XRadioNode): void;
|
|
@@ -577,6 +577,7 @@ declare class XTreeComponent extends XTreeProperty implements OnChanges, XTreeCo
|
|
|
577
577
|
hoverTreeEle: ElementRef;
|
|
578
578
|
draggingTreeNode: _angular_core.WritableSignal<XTreeNode | null>;
|
|
579
579
|
isEmpty: _angular_core.Signal<boolean>;
|
|
580
|
+
hasChecked: _angular_core.WritableSignal<boolean>;
|
|
580
581
|
private unSubject;
|
|
581
582
|
private resizeObserver;
|
|
582
583
|
constructor(renderer: Renderer2, elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef, treeService: XTreeService);
|
|
@@ -597,6 +598,7 @@ declare class XTreeComponent extends XTreeProperty implements OnChanges, XTreeCo
|
|
|
597
598
|
private setManual;
|
|
598
599
|
private getDataByFunc;
|
|
599
600
|
private setDataChange;
|
|
601
|
+
private syncParentCheckboxState;
|
|
600
602
|
nodeMouseenter($event: {
|
|
601
603
|
event: MouseEvent;
|
|
602
604
|
node: XTreeNode;
|