@xw-components/condition-editor 18.1.0

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.
@@ -0,0 +1,21 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { SelectOption } from './condition-editor.model';
3
+ export declare const ConditionEditorRequestServiceToken: InjectionToken<ConditionEditorRequestService>;
4
+ /**
5
+ * 条件编辑器请求服务,用于获取选择框选项和操作符选项
6
+ * 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。
7
+ */
8
+ export declare abstract class ConditionEditorRequestService {
9
+ constructor();
10
+ /**
11
+ * 获取选择框选项
12
+ * @param previousValue 前n个选择框的值
13
+ * @returns 选择框选项数组
14
+ */
15
+ abstract getSelectOptions(previousValue: string[]): Promise<SelectOption[]>;
16
+ /**
17
+ * 获取操作符选项
18
+ * @returns 操作符选项数组
19
+ */
20
+ abstract getOperatorOptions(): Promise<SelectOption[]>;
21
+ }
@@ -0,0 +1,45 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { ConditionGroup } from './condition-editor.model';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * 条件编辑器组件
6
+ * 用于编辑条件表达式,支持多个条件组的组合。
7
+ */
8
+ export declare class ConditionEditorComponent implements OnInit {
9
+ private readonly conditionEditorRequestService;
10
+ private readonly conditionEditorService;
11
+ /**
12
+ * 条件数据输入,包含条件组类型和条件数组
13
+ */
14
+ conditionData: import("@angular/core").InputSignal<ConditionGroup>;
15
+ /**
16
+ * 显示选择框的数量输入
17
+ */
18
+ showSelectNumber: import("@angular/core").InputSignal<number | undefined>;
19
+ /**
20
+ * 图标函数输入,用于根据值返回图标字体名
21
+ */
22
+ getIconFunc: import("@angular/core").InputSignal<((value: string) => string) | undefined>;
23
+ /**
24
+ * 条件数据变化输出,包含更新后的条件组
25
+ */
26
+ readonly dataChange: import("@angular/core").OutputEmitterRef<ConditionGroup>;
27
+ constructor();
28
+ ngOnInit(): void;
29
+ onDataChange(): void;
30
+ /**
31
+ * 获取当前条件数据
32
+ * @returns 当前条件数据
33
+ */
34
+ getConditionData(): ConditionGroup;
35
+ /**
36
+ * 重新加载第一个选择框的选项
37
+ */
38
+ reloadFirstSelectOptions(): void;
39
+ /**
40
+ * 重新加载操作符选项
41
+ */
42
+ reloadOperatorOptions(): void;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConditionEditorComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConditionEditorComponent, "app-condition-editor", never, { "conditionData": { "alias": "conditionData"; "required": false; "isSignal": true; }; "showSelectNumber": { "alias": "showSelectNumber"; "required": false; "isSignal": true; }; "getIconFunc": { "alias": "getIconFunc"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; }, never, never, true, never>;
45
+ }
@@ -0,0 +1,25 @@
1
+ export declare enum ConditionGroupType {
2
+ AND = "AND",
3
+ OR = "OR"
4
+ }
5
+ export interface ConditionGroup {
6
+ groupType: ConditionGroupType;
7
+ conditions: Array<Condition | ConditionGroup>;
8
+ }
9
+ export interface Condition {
10
+ keys: Array<{
11
+ label: string;
12
+ value: string;
13
+ }>;
14
+ operator: string;
15
+ value: any;
16
+ }
17
+ /**
18
+ * 选择框选项
19
+ * 用于条件编辑器中的选择框
20
+ */
21
+ export interface SelectOption {
22
+ label: string;
23
+ value: string;
24
+ fieldType?: string;
25
+ }
@@ -0,0 +1,11 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { SelectOption } from './condition-editor.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ConditionEditorService {
5
+ operators: SelectOption[];
6
+ firstSelectOptionsSub: BehaviorSubject<SelectOption[]>;
7
+ showSelectNumberSub: BehaviorSubject<number>;
8
+ getIconFunc?: (value: string) => string;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConditionEditorService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConditionEditorService>;
11
+ }
@@ -0,0 +1,15 @@
1
+ import { ConditionGroup } from '../condition-editor.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ConditionGroupComponent {
4
+ groupData: import("@angular/core").InputSignal<ConditionGroup>;
5
+ parentData: import("@angular/core").InputSignal<ConditionGroup | null>;
6
+ showLine: import("@angular/core").InputSignal<boolean>;
7
+ readonly dataChange: import("@angular/core").OutputEmitterRef<void>;
8
+ addConditionItem(): void;
9
+ addConditionGroup(): void;
10
+ removeConditionGroup(): void;
11
+ submitForm(): void;
12
+ handleOk(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConditionGroupComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConditionGroupComponent, "app-condition-group", never, { "groupData": { "alias": "groupData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; }, never, never, true, never>;
15
+ }
@@ -0,0 +1,26 @@
1
+ import { OnInit, OnDestroy } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { Condition, ConditionGroup, SelectOption } from '../condition-editor.model';
4
+ import { ConditionEditorService } from '../condition-editor.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ConditionItemComponent implements OnInit, OnDestroy {
7
+ readonly conditionEditorService: ConditionEditorService;
8
+ private readonly conditionEditorRequestService;
9
+ conditionData: import("@angular/core").InputSignal<Condition>;
10
+ parentData: import("@angular/core").InputSignal<ConditionGroup | null>;
11
+ dictOptions: never[];
12
+ selectNumbers: number[];
13
+ options: SelectOption[][];
14
+ firstSelectOptionsSub?: Subscription;
15
+ showSelectNumberSub?: Subscription;
16
+ readonly dataChange: import("@angular/core").OutputEmitterRef<void>;
17
+ ngOnInit(): void;
18
+ ngOnDestroy(): void;
19
+ getIconfontByValue(value: string, option: SelectOption[]): string;
20
+ hasIcon(option: SelectOption[]): boolean;
21
+ removeConditionItem(): void;
22
+ onSelectChange(index: number, event: any): void;
23
+ onSelectOpenChange(index: number): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConditionItemComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConditionItemComponent, "app-condition-item", never, { "conditionData": { "alias": "conditionData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; }, never, never, true, never>;
26
+ }
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const ConditionEditorRequestServiceToken = new InjectionToken('ConditionEditorRequestServiceToken');
3
+ /**
4
+ * 条件编辑器请求服务,用于获取选择框选项和操作符选项
5
+ * 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。
6
+ */
7
+ export class ConditionEditorRequestService {
8
+ constructor() { }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FBZ0Msb0NBQW9DLENBQUMsQ0FBQztBQUUxSTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLDZCQUE2QjtJQUNqRCxnQkFBZSxDQUFDO0NBWWpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2U+KCdDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZVRva2VuJyk7XG5cbi8qKlxuICog5p2h5Lu257yW6L6R5Zmo6K+35rGC5pyN5Yqh77yM55So5LqO6I635Y+W6YCJ5oup5qGG6YCJ6aG55ZKM5pON5L2c56ym6YCJ6aG5XG4gKiDlrp7njrDnsbvpnIDopoHmoLnmja7liY1u5Liq6YCJ5oup5qGG55qE5YC85p2l5Yqo5oCB6I635Y+W5LiL5LiA5Liq6YCJ5oup5qGG55qE6YCJ6aG544CC5Lul5Y+K6I635Y+W5pON5L2c56ym6YCJ6aG544CCXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgLyoqXG4gICAqIOiOt+WPlumAieaLqeahhumAiemhuVxuICAgKiBAcGFyYW0gcHJldmlvdXNWYWx1ZSDliY1u5Liq6YCJ5oup5qGG55qE5YC8XG4gICAqIEByZXR1cm5zIOmAieaLqeahhumAiemhueaVsOe7hFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0U2VsZWN0T3B0aW9ucyhwcmV2aW91c1ZhbHVlOiBzdHJpbmdbXSk6IFByb21pc2U8U2VsZWN0T3B0aW9uW10+O1xuICAvKipcbiAgICog6I635Y+W5pON5L2c56ym6YCJ6aG5XG4gICAqIEByZXR1cm5zIOaTjeS9nOespumAiemhueaVsOe7hFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0T3BlcmF0b3JPcHRpb25zKCk6IFByb21pc2U8U2VsZWN0T3B0aW9uW10+O1xufVxuIl19
@@ -0,0 +1,88 @@
1
+ import { Component, inject, input, output, effect } from '@angular/core';
2
+ import { ConditionEditorRequestServiceToken } from './condition-editor-request.service';
3
+ import { ConditionGroupType } from './condition-editor.model';
4
+ import { ConditionEditorService } from './condition-editor.service';
5
+ import { ConditionGroupComponent } from './condition-group/condition-group.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * 条件编辑器组件
9
+ * 用于编辑条件表达式,支持多个条件组的组合。
10
+ */
11
+ export class ConditionEditorComponent {
12
+ constructor() {
13
+ this.conditionEditorRequestService = inject(ConditionEditorRequestServiceToken);
14
+ this.conditionEditorService = inject(ConditionEditorService);
15
+ /**
16
+ * 条件数据输入,包含条件组类型和条件数组
17
+ */
18
+ this.conditionData = input({
19
+ groupType: ConditionGroupType.AND,
20
+ conditions: []
21
+ });
22
+ /**
23
+ * 显示选择框的数量输入
24
+ */
25
+ this.showSelectNumber = input();
26
+ /**
27
+ * 图标函数输入,用于根据值返回图标字体名
28
+ */
29
+ this.getIconFunc = input();
30
+ /**
31
+ * 条件数据变化输出,包含更新后的条件组
32
+ */
33
+ this.dataChange = output();
34
+ effect(() => {
35
+ const showSelectNumber = this.showSelectNumber();
36
+ if (showSelectNumber !== undefined) {
37
+ this.conditionEditorService.showSelectNumberSub.next(showSelectNumber);
38
+ }
39
+ });
40
+ effect(() => {
41
+ const getIconFunc = this.getIconFunc();
42
+ if (getIconFunc !== undefined) {
43
+ this.conditionEditorService.getIconFunc = getIconFunc;
44
+ }
45
+ });
46
+ }
47
+ ngOnInit() {
48
+ this.conditionEditorRequestService.getOperatorOptions().then(options => {
49
+ this.conditionEditorService.operators = options || [];
50
+ });
51
+ this.conditionEditorRequestService.getSelectOptions([]).then(options => {
52
+ this.conditionEditorService.firstSelectOptionsSub.next(options || []);
53
+ });
54
+ }
55
+ onDataChange() {
56
+ this.dataChange.emit(this.conditionData());
57
+ }
58
+ /**
59
+ * 获取当前条件数据
60
+ * @returns 当前条件数据
61
+ */
62
+ getConditionData() {
63
+ return this.conditionData();
64
+ }
65
+ /**
66
+ * 重新加载第一个选择框的选项
67
+ */
68
+ reloadFirstSelectOptions() {
69
+ this.conditionEditorRequestService.getSelectOptions([]).then(options => {
70
+ this.conditionEditorService.firstSelectOptionsSub.next(options || []);
71
+ });
72
+ }
73
+ /**
74
+ * 重新加载操作符选项
75
+ */
76
+ reloadOperatorOptions() {
77
+ this.conditionEditorRequestService.getOperatorOptions().then(options => {
78
+ this.conditionEditorService.operators = options || [];
79
+ });
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConditionEditorComponent, isStandalone: true, selector: "app-condition-editor", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, showSelectNumber: { classPropertyName: "showSelectNumber", publicName: "showSelectNumber", isSignal: true, isRequired: false, transformFunction: null }, getIconFunc: { classPropertyName: "getIconFunc", publicName: "getIconFunc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, providers: [ConditionEditorService], ngImport: i0, template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\" (dataChange)=\"onDataChange()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"], dependencies: [{ kind: "component", type: ConditionGroupComponent, selector: "app-condition-group", inputs: ["groupData", "parentData", "showLine"], outputs: ["dataChange"] }] }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'app-condition-editor', standalone: true, imports: [ConditionGroupComponent], providers: [ConditionEditorService], template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\" (dataChange)=\"onDataChange()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"] }]
87
+ }], ctorParameters: () => [] });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQUFpQyxrQ0FBa0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZILE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFdEY7OztHQUdHO0FBU0gsTUFBTSxPQUFPLHdCQUF3QjtJQXdCbkM7UUF2QmlCLGtDQUE2QixHQUFHLE1BQU0sQ0FBZ0Msa0NBQWtDLENBQUMsQ0FBQztRQUMxRywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RTs7V0FFRztRQUNILGtCQUFhLEdBQUcsS0FBSyxDQUFpQjtZQUNwQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsR0FBRztZQUNqQyxVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUNIOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFbkM7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLEtBQUssRUFBNkIsQ0FBQztRQUNqRDs7V0FFRztRQUNNLGVBQVUsR0FBRyxNQUFNLEVBQWtCLENBQUM7UUFHN0MsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCO1FBQzdCLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDMUIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN0VVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHlpQkFGeEIsQ0FBQyxzQkFBc0IsQ0FBQywwQkNqQnJDLGdMQUdBLDRIRFdZLHVCQUF1Qjs7NEZBS3RCLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsdUJBQXVCLENBQUMsYUFHdkIsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBPbkluaXQsIGVmZmVjdCwgdW50cmFja2VkLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZSwgQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2VUb2tlbiB9IGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZGl0aW9uR3JvdXAsIENvbmRpdGlvbkdyb3VwVHlwZSB9IGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci5tb2RlbCc7XG5pbXBvcnQgeyBDb25kaXRpb25FZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZGl0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbmRpdGlvbi1ncm91cC9jb25kaXRpb24tZ3JvdXAuY29tcG9uZW50JztcblxuLyoqXG4gKiDmnaHku7bnvJbovpHlmajnu4Tku7ZcbiAqIOeUqOS6jue8lui+keadoeS7tuihqOi+vuW8j++8jOaUr+aMgeWkmuS4quadoeS7tue7hOeahOe7hOWQiOOAglxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZGl0aW9uLWVkaXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb25kaXRpb25Hcm91cENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25kaXRpb24tZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbmRpdGlvbi1lZGl0b3IuY29tcG9uZW50Lmxlc3MnLFxuICBwcm92aWRlcnM6IFtDb25kaXRpb25FZGl0b3JTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlID0gaW5qZWN0PENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlPihDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZVRva2VuKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25FZGl0b3JTZXJ2aWNlID0gaW5qZWN0KENvbmRpdGlvbkVkaXRvclNlcnZpY2UpO1xuICAvKipcbiAgICog5p2h5Lu25pWw5o2u6L6T5YWl77yM5YyF5ZCr5p2h5Lu257uE57G75Z6L5ZKM5p2h5Lu25pWw57uEXG4gICAqL1xuICBjb25kaXRpb25EYXRhID0gaW5wdXQ8Q29uZGl0aW9uR3JvdXA+KHtcbiAgICBncm91cFR5cGU6IENvbmRpdGlvbkdyb3VwVHlwZS5BTkQsXG4gICAgY29uZGl0aW9uczogW11cbiAgfSk7XG4gIC8qKlxuICAgKiDmmL7npLrpgInmi6nmoYbnmoTmlbDph4/ovpPlhaVcbiAgICovXG4gIHNob3dTZWxlY3ROdW1iZXIgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIOWbvuagh+WHveaVsOi+k+WFpe+8jOeUqOS6juagueaNruWAvOi/lOWbnuWbvuagh+Wtl+S9k+WQjVxuICAgKi9cbiAgZ2V0SWNvbkZ1bmMgPSBpbnB1dDwodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nPigpO1xuICAvKipcbiAgICog5p2h5Lu25pWw5o2u5Y+Y5YyW6L6T5Ye677yM5YyF5ZCr5pu05paw5ZCO55qE5p2h5Lu257uEXG4gICAqL1xuICByZWFkb25seSBkYXRhQ2hhbmdlID0gb3V0cHV0PENvbmRpdGlvbkdyb3VwPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzaG93U2VsZWN0TnVtYmVyID0gdGhpcy5zaG93U2VsZWN0TnVtYmVyKCk7XG4gICAgICBpZiAoc2hvd1NlbGVjdE51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5zaG93U2VsZWN0TnVtYmVyU3ViLm5leHQoc2hvd1NlbGVjdE51bWJlcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZ2V0SWNvbkZ1bmMgPSB0aGlzLmdldEljb25GdW5jKCk7XG4gICAgICBpZiAoZ2V0SWNvbkZ1bmMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZ2V0SWNvbkZ1bmMgPSBnZXRJY29uRnVuYztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0T3BlcmF0b3JPcHRpb25zKCkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5vcGVyYXRvcnMgPSBvcHRpb25zIHx8IFtdO1xuICAgIH0pO1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0U2VsZWN0T3B0aW9ucyhbXSkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5maXJzdFNlbGVjdE9wdGlvbnNTdWIubmV4dChvcHRpb25zIHx8IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0YUNoYW5nZSgpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmRpdGlvbkRhdGEoKSk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN5p2h5Lu25pWw5o2uXG4gICAqIEByZXR1cm5zIOW9k+WJjeadoeS7tuaVsOaNrlxuICAgKi9cbiAgcHVibGljIGdldENvbmRpdGlvbkRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmHjeaWsOWKoOi9veesrOS4gOS4qumAieaLqeahhueahOmAiemhuVxuICAgKi9cbiAgcHVibGljIHJlbG9hZEZpcnN0U2VsZWN0T3B0aW9ucygpIHtcbiAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlLmdldFNlbGVjdE9wdGlvbnMoW10pLnRoZW4ob3B0aW9ucyA9PiB7XG4gICAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZmlyc3RTZWxlY3RPcHRpb25zU3ViLm5leHQob3B0aW9ucyB8fCBbXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog6YeN5paw5Yqg6L295pON5L2c56ym6YCJ6aG5XG4gICAqL1xuICBwdWJsaWMgcmVsb2FkT3BlcmF0b3JPcHRpb25zKCkge1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0T3BlcmF0b3JPcHRpb25zKCkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5vcGVyYXRvcnMgPSBvcHRpb25zIHx8IFtdO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWVkaXRvclwiPlxuICA8YXBwLWNvbmRpdGlvbi1ncm91cCBbc2hvd0xpbmVdPVwiZmFsc2VcIiBbZ3JvdXBEYXRhXT1cImNvbmRpdGlvbkRhdGEoKVwiIChkYXRhQ2hhbmdlKT1cIm9uRGF0YUNoYW5nZSgpXCI+PC9hcHAtY29uZGl0aW9uLWdyb3VwPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,6 @@
1
+ export var ConditionGroupType;
2
+ (function (ConditionGroupType) {
3
+ ConditionGroupType["AND"] = "AND";
4
+ ConditionGroupType["OR"] = "OR";
5
+ })(ConditionGroupType || (ConditionGroupType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZWRpdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIsaUNBQVcsQ0FBQTtJQUNYLCtCQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbmRpdGlvbkdyb3VwVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25Hcm91cCB7XG4gIGdyb3VwVHlwZTogQ29uZGl0aW9uR3JvdXBUeXBlO1xuICBjb25kaXRpb25zOiBBcnJheTxDb25kaXRpb24gfCBDb25kaXRpb25Hcm91cD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uIHtcbiAga2V5czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIOmAieaLqeahhumAiemhuVxuICog55So5LqO5p2h5Lu257yW6L6R5Zmo5Lit55qE6YCJ5oup5qGGXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZmllbGRUeXBlPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ConditionEditorService {
5
+ constructor() {
6
+ this.operators = [];
7
+ this.firstSelectOptionsSub = new BehaviorSubject([]);
8
+ this.showSelectNumberSub = new BehaviorSubject(1);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb25kaXRpb24tZWRpdG9yL2NvbmRpdGlvbi1lZGl0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFRSxjQUFTLEdBQW1CLEVBQUUsQ0FBQztRQUUvQiwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsRUFBRSxDQUFDLENBQUM7UUFFaEUsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7S0FHdEQ7K0dBUlksc0JBQXNCO21IQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkVkaXRvclNlcnZpY2Uge1xuICBvcGVyYXRvcnM6IFNlbGVjdE9wdGlvbltdID0gW107XG5cbiAgZmlyc3RTZWxlY3RPcHRpb25zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3RPcHRpb25bXT4oW10pO1xuXG4gIHNob3dTZWxlY3ROdW1iZXJTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG5cbiAgZ2V0SWNvbkZ1bmM/OiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, input, output } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { NzButtonModule } from 'ng-zorro-antd/button';
5
+ import { NzFormModule } from 'ng-zorro-antd/form';
6
+ import { NzIconModule } from 'ng-zorro-antd/icon';
7
+ import { NzModalModule } from 'ng-zorro-antd/modal';
8
+ import { NzSelectModule } from 'ng-zorro-antd/select';
9
+ import { ConditionGroupType } from '../condition-editor.model';
10
+ import { ConditionItemComponent } from '../condition-item/condition-item.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "ng-zorro-antd/select";
13
+ import * as i2 from "@angular/forms";
14
+ import * as i3 from "ng-zorro-antd/button";
15
+ import * as i4 from "ng-zorro-antd/core/transition-patch";
16
+ import * as i5 from "ng-zorro-antd/core/wave";
17
+ import * as i6 from "@angular/common";
18
+ import * as i7 from "ng-zorro-antd/icon";
19
+ export class ConditionGroupComponent {
20
+ constructor() {
21
+ this.groupData = input({
22
+ groupType: ConditionGroupType.AND,
23
+ conditions: []
24
+ });
25
+ this.parentData = input(null);
26
+ this.showLine = input(true);
27
+ this.dataChange = output();
28
+ }
29
+ addConditionItem() {
30
+ this.groupData().conditions.push({
31
+ keys: [],
32
+ operator: '',
33
+ value: ''
34
+ });
35
+ }
36
+ addConditionGroup() {
37
+ this.groupData().conditions.push({
38
+ groupType: ConditionGroupType.AND,
39
+ conditions: []
40
+ });
41
+ this.dataChange.emit();
42
+ }
43
+ removeConditionGroup() {
44
+ if (this.parentData()) {
45
+ this.parentData().conditions = this.parentData().conditions.filter(item => item !== this.groupData());
46
+ this.dataChange.emit();
47
+ }
48
+ }
49
+ submitForm() { }
50
+ handleOk() { }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConditionGroupComponent, isStandalone: true, selector: "app-condition-group", inputs: { groupData: { classPropertyName: "groupData", publicName: "groupData", isSignal: true, isRequired: false, transformFunction: null }, parentData: { classPropertyName: "parentData", publicName: "parentData", isSignal: true, isRequired: false, transformFunction: null }, showLine: { classPropertyName: "showLine", publicName: "showLine", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, ngImport: i0, template: "@if (groupData()) {\n <div class=\"condition-group\">\n <nz-select class=\"condition-group-type\" [ngClass]=\"{ 'no-line': !showLine() }\" [(ngModel)]=\"groupData().groupType\">\n <nz-option nzValue=\"AND\" nzLabel=\"\u4E14\"></nz-option>\n <nz-option nzValue=\"OR\" nzLabel=\"\u6216\"></nz-option>\n </nz-select>\n\n <div class=\"condition-group-content\">\n @for (condition of groupData().conditions; track condition) {\n @if ($any(condition).groupType) {\n <app-condition-group\n class=\"hide-first\"\n [groupData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-group>\n } @else {\n <app-condition-item\n class=\"condition-content-item hide-first\"\n [conditionData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-item>\n }\n }\n <div class=\"condition-content-item hide-first\">\n <button nz-button (click)=\"addConditionItem()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6</button>\n <button nz-button (click)=\"addConditionGroup()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6\u7EC4</button>\n @if (groupData().conditions.length === 0 && parentData()) {\n <button nz-button nzDanger (click)=\"removeConditionGroup()\"\n ><span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\u6761\u4EF6\u7EC4</button\n >\n }\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block}:host .condition-group{display:flex;flex-direction:row;align-items:center}:host .condition-group .condition-group-type{position:relative;width:80px;height:fit-content;margin-right:24px}:host .condition-group .condition-group-type:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-type:after{position:absolute;top:16px;right:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .no-line:before{content:none!important}:host .condition-group .condition-group-content{position:relative;display:flex;flex-direction:column;gap:8px}:host .condition-group .condition-group-content:before{position:absolute;top:16px;left:-12px;width:0;height:calc(100% - 32px);border-left:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-content .hide-first{position:relative}:host .condition-group .condition-group-content .hide-first:first-child:after{position:absolute;top:16px;left:-12px;width:0;height:calc(50% - 16px);border-left:1px solid #fff;content:\"\"}:host .condition-group .condition-group-content .condition-content-item{position:relative;height:32px;line-height:32px}:host .condition-group .condition-group-content .condition-content-item:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}\n"], dependencies: [{ kind: "component", type: ConditionGroupComponent, selector: "app-condition-group", inputs: ["groupData", "parentData", "showLine"], outputs: ["dataChange"] }, { kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i1.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i1.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ConditionItemComponent, selector: "app-condition-item", inputs: ["conditionData", "parentData"], outputs: ["dataChange"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i3.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i5.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "ngmodule", type: NzFormModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionGroupComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'app-condition-group', standalone: true, imports: [NzSelectModule, FormsModule, ConditionItemComponent, NzButtonModule, NzModalModule, NzFormModule, CommonModule, NzIconModule], template: "@if (groupData()) {\n <div class=\"condition-group\">\n <nz-select class=\"condition-group-type\" [ngClass]=\"{ 'no-line': !showLine() }\" [(ngModel)]=\"groupData().groupType\">\n <nz-option nzValue=\"AND\" nzLabel=\"\u4E14\"></nz-option>\n <nz-option nzValue=\"OR\" nzLabel=\"\u6216\"></nz-option>\n </nz-select>\n\n <div class=\"condition-group-content\">\n @for (condition of groupData().conditions; track condition) {\n @if ($any(condition).groupType) {\n <app-condition-group\n class=\"hide-first\"\n [groupData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-group>\n } @else {\n <app-condition-item\n class=\"condition-content-item hide-first\"\n [conditionData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-item>\n }\n }\n <div class=\"condition-content-item hide-first\">\n <button nz-button (click)=\"addConditionItem()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6</button>\n <button nz-button (click)=\"addConditionGroup()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6\u7EC4</button>\n @if (groupData().conditions.length === 0 && parentData()) {\n <button nz-button nzDanger (click)=\"removeConditionGroup()\"\n ><span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\u6761\u4EF6\u7EC4</button\n >\n }\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block}:host .condition-group{display:flex;flex-direction:row;align-items:center}:host .condition-group .condition-group-type{position:relative;width:80px;height:fit-content;margin-right:24px}:host .condition-group .condition-group-type:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-type:after{position:absolute;top:16px;right:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .no-line:before{content:none!important}:host .condition-group .condition-group-content{position:relative;display:flex;flex-direction:column;gap:8px}:host .condition-group .condition-group-content:before{position:absolute;top:16px;left:-12px;width:0;height:calc(100% - 32px);border-left:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-content .hide-first{position:relative}:host .condition-group .condition-group-content .hide-first:first-child:after{position:absolute;top:16px;left:-12px;width:0;height:calc(50% - 16px);border-left:1px solid #fff;content:\"\"}:host .condition-group .condition-group-content .condition-content-item{position:relative;height:32px;line-height:32px}:host .condition-group .condition-group-content .condition-content-item:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}\n"] }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZ3JvdXAvY29uZGl0aW9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZ3JvdXAvY29uZGl0aW9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7QUFTcEYsTUFBTSxPQUFPLHVCQUF1QjtJQVBwQztRQVFFLGNBQVMsR0FBRyxLQUFLLENBQWlCO1lBQ2hDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHO1lBQ2pDLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsZUFBVSxHQUFHLEtBQUssQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUV2QixlQUFVLEdBQUcsTUFBTSxFQUFRLENBQUM7S0E0QnRDO0lBMUJDLGdCQUFnQjtRQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQy9CLElBQUksRUFBRSxFQUFFO1lBQ1IsUUFBUSxFQUFFLEVBQUU7WUFDWixLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMvQixTQUFTLEVBQUUsa0JBQWtCLENBQUMsR0FBRztZQUNqQyxVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsS0FBSSxDQUFDO0lBRWYsUUFBUSxLQUFJLENBQUM7K0dBcENGLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhnQkNuQnBDLDRxREFxQ0EsaThDRGxCYSx1QkFBdUIseUlBSnhCLGNBQWMsOGhDQUFFLFdBQVcsK1ZBQUUsc0JBQXNCLGdJQUFFLGNBQWMsK3FCQUFFLGFBQWEsOEJBQUUsWUFBWSw4QkFBRSxZQUFZLDRIQUFFLFlBQVk7OzRGQUkzSCx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOekZvcm1Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2Zvcm0nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56TW9kYWxNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL21vZGFsJztcbmltcG9ydCB7IE56U2VsZWN0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBDb25kaXRpb25Hcm91cCwgQ29uZGl0aW9uR3JvdXBUeXBlIH0gZnJvbSAnLi4vY29uZGl0aW9uLWVkaXRvci5tb2RlbCc7XG5pbXBvcnQgeyBDb25kaXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZGl0aW9uLWl0ZW0vY29uZGl0aW9uLWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvbmRpdGlvbi1ncm91cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOelNlbGVjdE1vZHVsZSwgRm9ybXNNb2R1bGUsIENvbmRpdGlvbkl0ZW1Db21wb25lbnQsIE56QnV0dG9uTW9kdWxlLCBOek1vZGFsTW9kdWxlLCBOekZvcm1Nb2R1bGUsIENvbW1vbk1vZHVsZSwgTnpJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmRpdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb25kaXRpb24tZ3JvdXAuY29tcG9uZW50Lmxlc3MnXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkdyb3VwQ29tcG9uZW50IHtcbiAgZ3JvdXBEYXRhID0gaW5wdXQ8Q29uZGl0aW9uR3JvdXA+KHtcbiAgICBncm91cFR5cGU6IENvbmRpdGlvbkdyb3VwVHlwZS5BTkQsXG4gICAgY29uZGl0aW9uczogW11cbiAgfSk7XG5cbiAgcGFyZW50RGF0YSA9IGlucHV0PENvbmRpdGlvbkdyb3VwIHwgbnVsbD4obnVsbCk7XG4gIHNob3dMaW5lID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgZGF0YUNoYW5nZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIGFkZENvbmRpdGlvbkl0ZW0oKSB7XG4gICAgdGhpcy5ncm91cERhdGEoKS5jb25kaXRpb25zLnB1c2goe1xuICAgICAga2V5czogW10sXG4gICAgICBvcGVyYXRvcjogJycsXG4gICAgICB2YWx1ZTogJydcbiAgICB9KTtcbiAgfVxuXG4gIGFkZENvbmRpdGlvbkdyb3VwKCkge1xuICAgIHRoaXMuZ3JvdXBEYXRhKCkuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgIGdyb3VwVHlwZTogQ29uZGl0aW9uR3JvdXBUeXBlLkFORCxcbiAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfSk7XG4gICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHJlbW92ZUNvbmRpdGlvbkdyb3VwKCkge1xuICAgIGlmICh0aGlzLnBhcmVudERhdGEoKSkge1xuICAgICAgdGhpcy5wYXJlbnREYXRhKCkhLmNvbmRpdGlvbnMgPSB0aGlzLnBhcmVudERhdGEoKSEuY29uZGl0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSB0aGlzLmdyb3VwRGF0YSgpKTtcbiAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0Rm9ybSgpIHt9XG5cbiAgaGFuZGxlT2soKSB7fVxufVxuIiwiQGlmIChncm91cERhdGEoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWdyb3VwXCI+XG4gICAgPG56LXNlbGVjdCBjbGFzcz1cImNvbmRpdGlvbi1ncm91cC10eXBlXCIgW25nQ2xhc3NdPVwieyAnbm8tbGluZSc6ICFzaG93TGluZSgpIH1cIiBbKG5nTW9kZWwpXT1cImdyb3VwRGF0YSgpLmdyb3VwVHlwZVwiPlxuICAgICAgPG56LW9wdGlvbiBuelZhbHVlPVwiQU5EXCIgbnpMYWJlbD1cIuS4lFwiPjwvbnotb3B0aW9uPlxuICAgICAgPG56LW9wdGlvbiBuelZhbHVlPVwiT1JcIiBuekxhYmVsPVwi5oiWXCI+PC9uei1vcHRpb24+XG4gICAgPC9uei1zZWxlY3Q+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWdyb3VwLWNvbnRlbnRcIj5cbiAgICAgIEBmb3IgKGNvbmRpdGlvbiBvZiBncm91cERhdGEoKS5jb25kaXRpb25zOyB0cmFjayBjb25kaXRpb24pIHtcbiAgICAgICAgQGlmICgkYW55KGNvbmRpdGlvbikuZ3JvdXBUeXBlKSB7XG4gICAgICAgICAgPGFwcC1jb25kaXRpb24tZ3JvdXBcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS1maXJzdFwiXG4gICAgICAgICAgICBbZ3JvdXBEYXRhXT1cIiRhbnkoY29uZGl0aW9uKVwiXG4gICAgICAgICAgICBbcGFyZW50RGF0YV09XCJncm91cERhdGEoKVwiXG4gICAgICAgICAgICAoZGF0YUNoYW5nZSk9XCJkYXRhQ2hhbmdlLmVtaXQoKVwiXG4gICAgICAgICAgPjwvYXBwLWNvbmRpdGlvbi1ncm91cD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGFwcC1jb25kaXRpb24taXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJjb25kaXRpb24tY29udGVudC1pdGVtIGhpZGUtZmlyc3RcIlxuICAgICAgICAgICAgW2NvbmRpdGlvbkRhdGFdPVwiJGFueShjb25kaXRpb24pXCJcbiAgICAgICAgICAgIFtwYXJlbnREYXRhXT1cImdyb3VwRGF0YSgpXCJcbiAgICAgICAgICAgIChkYXRhQ2hhbmdlKT1cImRhdGFDaGFuZ2UuZW1pdCgpXCJcbiAgICAgICAgICA+PC9hcHAtY29uZGl0aW9uLWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25kaXRpb24tY29udGVudC1pdGVtIGhpZGUtZmlyc3RcIj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cImFkZENvbmRpdGlvbkl0ZW0oKVwiPjxzcGFuIG56LWljb24gbnpUeXBlPVwicGx1c1wiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPua3u+WKoOadoeS7tjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwiYWRkQ29uZGl0aW9uR3JvdXAoKVwiPjxzcGFuIG56LWljb24gbnpUeXBlPVwicGx1c1wiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPua3u+WKoOadoeS7tue7hDwvYnV0dG9uPlxuICAgICAgICBAaWYgKGdyb3VwRGF0YSgpLmNvbmRpdGlvbnMubGVuZ3RoID09PSAwICYmIHBhcmVudERhdGEoKSkge1xuICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56RGFuZ2VyIChjbGljayk9XCJyZW1vdmVDb25kaXRpb25Hcm91cCgpXCJcbiAgICAgICAgICAgID48c3BhbiBuei1pY29uIG56VHlwZT1cImRlbGV0ZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPuWIoOmZpOadoeS7tue7hDwvYnV0dG9uXG4gICAgICAgICAgPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,103 @@
1
+ import { Component, inject, input, output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { NzButtonModule } from 'ng-zorro-antd/button';
4
+ import { NzIconModule } from 'ng-zorro-antd/icon';
5
+ import { NzInputModule } from 'ng-zorro-antd/input';
6
+ import { NzSelectModule } from 'ng-zorro-antd/select';
7
+ import { NzSpinModule } from 'ng-zorro-antd/spin';
8
+ import { ConditionEditorRequestServiceToken } from '../condition-editor-request.service';
9
+ import { ConditionEditorService } from '../condition-editor.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "ng-zorro-antd/select";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "ng-zorro-antd/input";
14
+ import * as i4 from "ng-zorro-antd/core/transition-patch";
15
+ import * as i5 from "ng-zorro-antd/spin";
16
+ import * as i6 from "ng-zorro-antd/icon";
17
+ export class ConditionItemComponent {
18
+ constructor() {
19
+ this.conditionEditorService = inject(ConditionEditorService);
20
+ this.conditionEditorRequestService = inject(ConditionEditorRequestServiceToken);
21
+ this.conditionData = input({
22
+ keys: [],
23
+ operator: '',
24
+ value: null
25
+ });
26
+ this.parentData = input(null);
27
+ this.dictOptions = [];
28
+ this.selectNumbers = [];
29
+ this.options = [];
30
+ this.dataChange = output();
31
+ }
32
+ ngOnInit() {
33
+ this.firstSelectOptionsSub = this.conditionEditorService.firstSelectOptionsSub.subscribe(options => {
34
+ this.options[0] = options || [];
35
+ });
36
+ this.showSelectNumberSub = this.conditionEditorService.showSelectNumberSub.subscribe(showSelectNumber => {
37
+ this.selectNumbers = Array.from({ length: showSelectNumber }, (_, i) => i);
38
+ for (let i = 0; i < this.selectNumbers.length; i++) {
39
+ if (this.conditionData().keys[i]) {
40
+ continue;
41
+ }
42
+ this.conditionData().keys[i] = { label: '', value: '' };
43
+ }
44
+ });
45
+ }
46
+ ngOnDestroy() {
47
+ this.firstSelectOptionsSub?.unsubscribe();
48
+ this.showSelectNumberSub?.unsubscribe();
49
+ }
50
+ getIconfontByValue(value, option) {
51
+ return this.conditionEditorService.getIconFunc?.(option.find(item => item.value === value)?.fieldType || '') || '';
52
+ }
53
+ hasIcon(option) {
54
+ return option.some(item => item.fieldType);
55
+ }
56
+ removeConditionItem() {
57
+ if (this.parentData()) {
58
+ this.parentData().conditions = this.parentData().conditions.filter(item => item !== this.conditionData());
59
+ this.dataChange.emit();
60
+ }
61
+ }
62
+ onSelectChange(index, event) {
63
+ this.conditionData().keys[index].label = this.options[index].find(item => item.value === event)?.label || '';
64
+ if (index >= this.selectNumbers.length - 1) {
65
+ return;
66
+ }
67
+ const values = this.conditionData()
68
+ .keys.slice(0, index + 1)
69
+ .map(item => item.value);
70
+ this.conditionData().keys.forEach((_, i) => {
71
+ if (i > index) {
72
+ this.conditionData().keys[i] = { label: '', value: '' };
73
+ this.options[i] = [];
74
+ }
75
+ });
76
+ this.conditionEditorRequestService.getSelectOptions(values).then(options => {
77
+ this.options[index + 1] = options;
78
+ });
79
+ }
80
+ onSelectOpenChange(index) {
81
+ if (this.options[index] && this.options[index].length > 0) {
82
+ return;
83
+ }
84
+ let values = [];
85
+ for (let i = 0; i < index; i++) {
86
+ if (this.conditionData().keys[i]) {
87
+ values.push(this.conditionData().keys[i].value);
88
+ continue;
89
+ }
90
+ return;
91
+ }
92
+ this.conditionEditorRequestService.getSelectOptions(values).then(options => {
93
+ this.options[index] = options;
94
+ });
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConditionItemComponent, isStandalone: true, selector: "app-condition-item", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, parentData: { classPropertyName: "parentData", publicName: "parentData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, ngImport: i0, template: "<div class=\"condition-item\">\n @for (i of selectNumbers; track $index; let currentIndex = $index) {\n <nz-select\n class=\"condition-item-key\"\n [nzNotFoundContent]=\"searchingContent\"\n [nzDisabled]=\"currentIndex > 0 && !conditionData().keys[currentIndex - 1].value\"\n [nzPlaceHolder]=\"conditionData().keys[currentIndex].label || ''\"\n [(ngModel)]=\"conditionData().keys[currentIndex].value\"\n (ngModelChange)=\"onSelectChange(currentIndex, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(currentIndex)\"\n [nzCustomTemplate]=\"defaultTemplate\"\n >\n @for (operator of options[currentIndex] || []; track operator) {\n <nz-option\n [nzValue]=\"operator.value\"\n [nzLabel]=\"operator.label\"\n [nzCustomContent]=\"!!conditionEditorService.getIconFunc && operator.fieldType\"\n >\n <span class=\"tag-select-option\">\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(operator.value, options[currentIndex])\"></span>\n <span>{{ operator.label }}</span>\n </span>\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n @if (!!conditionEditorService.getIconFunc && hasIcon(options[currentIndex])) {\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(selected.nzValue, options[currentIndex]) || ''\"></span>\n }\n <span>{{ selected.nzLabel }}</span>\n </ng-template>\n }\n <ng-template #searchingContent>\n <nz-spin nzTip=\"\u52A0\u8F7D\u4E2D\" style=\"margin: auto; height: 100px\"></nz-spin>\n </ng-template>\n <nz-select class=\"condition-item-operator\" [(ngModel)]=\"conditionData().operator\">\n @for (operator of conditionEditorService.operators || []; track operator.value) {\n <nz-option [nzValue]=\"operator.value\" [nzLabel]=\"operator.label\"></nz-option>\n }\n </nz-select>\n <input class=\"condition-item-value\" nz-input [(ngModel)]=\"conditionData().value\" />\n\n <span (click)=\"removeConditionItem()\" class=\"condition-item-delete\" nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n</div>\n", styles: [":host ::ng-deep .ant-select-selection-placeholder{color:#000000d9}:host .condition-item{position:relative;display:flex;flex-direction:row;gap:8px}:host .condition-item .condition-item-key{width:150px}:host .condition-item .condition-item-operator{width:120px}:host .condition-item .condition-item-value{width:180px}:host .condition-item .condition-item-delete{cursor:pointer}:host .condition-item .condition-item-delete:hover{color:#ff4d4f}\n"], dependencies: [{ kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i1.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i1.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i5.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i6.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionItemComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'app-condition-item', standalone: true, imports: [NzSelectModule, FormsModule, NzInputModule, NzButtonModule, NzSpinModule, NzIconModule], template: "<div class=\"condition-item\">\n @for (i of selectNumbers; track $index; let currentIndex = $index) {\n <nz-select\n class=\"condition-item-key\"\n [nzNotFoundContent]=\"searchingContent\"\n [nzDisabled]=\"currentIndex > 0 && !conditionData().keys[currentIndex - 1].value\"\n [nzPlaceHolder]=\"conditionData().keys[currentIndex].label || ''\"\n [(ngModel)]=\"conditionData().keys[currentIndex].value\"\n (ngModelChange)=\"onSelectChange(currentIndex, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(currentIndex)\"\n [nzCustomTemplate]=\"defaultTemplate\"\n >\n @for (operator of options[currentIndex] || []; track operator) {\n <nz-option\n [nzValue]=\"operator.value\"\n [nzLabel]=\"operator.label\"\n [nzCustomContent]=\"!!conditionEditorService.getIconFunc && operator.fieldType\"\n >\n <span class=\"tag-select-option\">\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(operator.value, options[currentIndex])\"></span>\n <span>{{ operator.label }}</span>\n </span>\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n @if (!!conditionEditorService.getIconFunc && hasIcon(options[currentIndex])) {\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(selected.nzValue, options[currentIndex]) || ''\"></span>\n }\n <span>{{ selected.nzLabel }}</span>\n </ng-template>\n }\n <ng-template #searchingContent>\n <nz-spin nzTip=\"\u52A0\u8F7D\u4E2D\" style=\"margin: auto; height: 100px\"></nz-spin>\n </ng-template>\n <nz-select class=\"condition-item-operator\" [(ngModel)]=\"conditionData().operator\">\n @for (operator of conditionEditorService.operators || []; track operator.value) {\n <nz-option [nzValue]=\"operator.value\" [nzLabel]=\"operator.label\"></nz-option>\n }\n </nz-select>\n <input class=\"condition-item-value\" nz-input [(ngModel)]=\"conditionData().value\" />\n\n <span (click)=\"removeConditionItem()\" class=\"condition-item-delete\" nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n</div>\n", styles: [":host ::ng-deep .ant-select-selection-placeholder{color:#000000d9}:host .condition-item{position:relative;display:flex;flex-direction:row;gap:8px}:host .condition-item .condition-item-key{width:150px}:host .condition-item .condition-item-operator{width:120px}:host .condition-item .condition-item-value{width:180px}:host .condition-item .condition-item-delete{cursor:pointer}:host .condition-item .condition-item-delete:hover{color:#ff4d4f}\n"] }]
102
+ }] });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb25kaXRpb24tZWRpdG9yL2NvbmRpdGlvbi1pdGVtL2NvbmRpdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24taXRlbS9jb25kaXRpb24taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdsRCxPQUFPLEVBQWlDLGtDQUFrQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBU3JFLE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFRVywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNoRCxrQ0FBNkIsR0FBRyxNQUFNLENBQWdDLGtDQUFrQyxDQUFDLENBQUM7UUFDM0gsa0JBQWEsR0FBRyxLQUFLLENBQVk7WUFDL0IsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUUsRUFBRTtZQUNaLEtB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QUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELFNBQVM7WUFDWCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F4RlUsc0JBQXNCO21HQUF0QixzQkFBc0Isd1pDcEJuQywwcEVBNENBLG1mRDVCWSxjQUFjLDhoQ0FBRSxXQUFXLDhtQkFBRSxhQUFhLG9PQUFFLGNBQWMsZ1FBQUUsWUFBWSwyTUFBRSxZQUFZOzs0RkFJckYsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOekJ1dHRvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvYnV0dG9uJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5pbXBvcnQgeyBOeklucHV0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pbnB1dCc7XG5pbXBvcnQgeyBOelNlbGVjdE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc2VsZWN0JztcbmltcG9ydCB7IE56U3Bpbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc3Bpbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UsIENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi9jb25kaXRpb24tZWRpdG9yLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb25kaXRpb24sIENvbmRpdGlvbkdyb3VwLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7IENvbmRpdGlvbkVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9jb25kaXRpb24tZWRpdG9yLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZGl0aW9uLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTnpTZWxlY3RNb2R1bGUsIEZvcm1zTW9kdWxlLCBOeklucHV0TW9kdWxlLCBOekJ1dHRvbk1vZHVsZSwgTnpTcGluTW9kdWxlLCBOekljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29uZGl0aW9uLWl0ZW0uY29tcG9uZW50Lmxlc3MnXG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGNvbmRpdGlvbkVkaXRvclNlcnZpY2UgPSBpbmplY3QoQ29uZGl0aW9uRWRpdG9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UgPSBpbmplY3Q8Q29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2U+KENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlVG9rZW4pO1xuICBjb25kaXRpb25EYXRhID0gaW5wdXQ8Q29uZGl0aW9uPih7XG4gICAga2V5czogW10sXG4gICAgb3BlcmF0b3I6ICcnLFxuICAgIHZhbHVlOiBudWxsXG4gIH0pO1xuICBwYXJlbnREYXRhID0gaW5wdXQ8Q29uZGl0aW9uR3JvdXAgfCBudWxsPihudWxsKTtcblxuICBkaWN0T3B0aW9ucyA9IFtdO1xuXG4gIHNlbGVjdE51bWJlcnM6IG51bWJlcltdID0gW107XG4gIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdW10gPSBbXTtcbiAgZmlyc3RTZWxlY3RPcHRpb25zU3ViPzogU3Vic2NyaXB0aW9uO1xuICBzaG93U2VsZWN0TnVtYmVyU3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIHJlYWRvbmx5IGRhdGFDaGFuZ2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpcnN0U2VsZWN0T3B0aW9uc1N1YiA9IHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5maXJzdFNlbGVjdE9wdGlvbnNTdWIuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zWzBdID0gb3B0aW9ucyB8fCBbXTtcbiAgICB9KTtcbiAgICB0aGlzLnNob3dTZWxlY3ROdW1iZXJTdWIgPSB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2Uuc2hvd1NlbGVjdE51bWJlclN1Yi5zdWJzY3JpYmUoc2hvd1NlbGVjdE51bWJlciA9PiB7XG4gICAgICB0aGlzLnNlbGVjdE51bWJlcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBzaG93U2VsZWN0TnVtYmVyIH0sIChfLCBpKSA9PiBpKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3ROdW1iZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbkRhdGEoKS5rZXlzW2ldKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25kaXRpb25EYXRhKCkua2V5c1tpXSA9IHsgbGFiZWw6ICcnLCB2YWx1ZTogJycgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZmlyc3RTZWxlY3RPcHRpb25zU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2hvd1NlbGVjdE51bWJlclN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEljb25mb250QnlWYWx1ZSh2YWx1ZTogc3RyaW5nLCBvcHRpb246IFNlbGVjdE9wdGlvbltdKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5nZXRJY29uRnVuYz8uKG9wdGlvbi5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpPy5maWVsZFR5cGUgfHwgJycpIHx8ICcnO1xuICB9XG5cbiAgaGFzSWNvbihvcHRpb246IFNlbGVjdE9wdGlvbltdKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5zb21lKGl0ZW0gPT4gaXRlbS5maWVsZFR5cGUpO1xuICB9XG5cbiAgcmVtb3ZlQ29uZGl0aW9uSXRlbSgpIHtcbiAgICBpZiAodGhpcy5wYXJlbnREYXRhKCkpIHtcbiAgICAgIHRoaXMucGFyZW50RGF0YSgpIS5jb25kaXRpb25zID0gdGhpcy5wYXJlbnREYXRhKCkhLmNvbmRpdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdGhpcy5jb25kaXRpb25EYXRhKCkpO1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdENoYW5nZShpbmRleDogbnVtYmVyLCBldmVudDogYW55KSB7XG4gICAgdGhpcy5jb25kaXRpb25EYXRhKCkua2V5c1tpbmRleF0ubGFiZWwgPSB0aGlzLm9wdGlvbnNbaW5kZXhdLmZpbmQoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBldmVudCk/LmxhYmVsIHx8ICcnO1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNlbGVjdE51bWJlcnMubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmNvbmRpdGlvbkRhdGEoKVxuICAgICAgLmtleXMuc2xpY2UoMCwgaW5kZXggKyAxKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIHRoaXMuY29uZGl0aW9uRGF0YSgpLmtleXMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgaWYgKGkgPiBpbmRleCkge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkRhdGEoKS5rZXlzW2ldID0geyBsYWJlbDogJycsIHZhbHVlOiAnJyB9O1xuICAgICAgICB0aGlzLm9wdGlvbnNbaV0gPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlLmdldFNlbGVjdE9wdGlvbnModmFsdWVzKS50aGVuKG9wdGlvbnMgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zW2luZGV4ICsgMV0gPSBvcHRpb25zO1xuICAgIH0pO1xuICB9XG5cbiAgb25TZWxlY3RPcGVuQ2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zW2luZGV4XSAmJiB0aGlzLm9wdGlvbnNbaW5kZXhdLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbkRhdGEoKS5rZXlzW2ldKSB7XG4gICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuY29uZGl0aW9uRGF0YSgpLmtleXNbaV0udmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZS5nZXRTZWxlY3RPcHRpb25zKHZhbHVlcykudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc1tpbmRleF0gPSBvcHRpb25zO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWl0ZW1cIj5cbiAgQGZvciAoaSBvZiBzZWxlY3ROdW1iZXJzOyB0cmFjayAkaW5kZXg7IGxldCBjdXJyZW50SW5kZXggPSAkaW5kZXgpIHtcbiAgICA8bnotc2VsZWN0XG4gICAgICBjbGFzcz1cImNvbmRpdGlvbi1pdGVtLWtleVwiXG4gICAgICBbbnpOb3RGb3VuZENvbnRlbnRdPVwic2VhcmNoaW5nQ29udGVudFwiXG4gICAgICBbbnpEaXNhYmxlZF09XCJjdXJyZW50SW5kZXggPiAwICYmICFjb25kaXRpb25EYXRhKCkua2V5c1tjdXJyZW50SW5kZXggLSAxXS52YWx1ZVwiXG4gICAgICBbbnpQbGFjZUhvbGRlcl09XCJjb25kaXRpb25EYXRhKCkua2V5c1tjdXJyZW50SW5kZXhdLmxhYmVsIHx8ICcnXCJcbiAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uRGF0YSgpLmtleXNbY3VycmVudEluZGV4XS52YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdENoYW5nZShjdXJyZW50SW5kZXgsICRldmVudClcIlxuICAgICAgKG56T3BlbkNoYW5nZSk9XCJvblNlbGVjdE9wZW5DaGFuZ2UoY3VycmVudEluZGV4KVwiXG4gICAgICBbbnpDdXN0b21UZW1wbGF0ZV09XCJkZWZhdWx0VGVtcGxhdGVcIlxuICAgID5cbiAgICAgIEBmb3IgKG9wZXJhdG9yIG9mIG9wdGlvbnNbY3VycmVudEluZGV4XSB8fCBbXTsgdHJhY2sgb3BlcmF0b3IpIHtcbiAgICAgICAgPG56LW9wdGlvblxuICAgICAgICAgIFtuelZhbHVlXT1cIm9wZXJhdG9yLnZhbHVlXCJcbiAgICAgICAgICBbbnpMYWJlbF09XCJvcGVyYXRvci5sYWJlbFwiXG4gICAgICAgICAgW256Q3VzdG9tQ29udGVudF09XCIhIWNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZ2V0SWNvbkZ1bmMgJiYgb3BlcmF0b3IuZmllbGRUeXBlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnLXNlbGVjdC1vcHRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHhcIiBuei1pY29uIFtuekljb25mb250XT1cImdldEljb25mb250QnlWYWx1ZShvcGVyYXRvci52YWx1ZSwgb3B0aW9uc1tjdXJyZW50SW5kZXhdKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG9wZXJhdG9yLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uei1vcHRpb24+XG4gICAgICB9XG4gICAgPC9uei1zZWxlY3Q+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGUgbGV0LXNlbGVjdGVkPlxuICAgICAgQGlmICghIWNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZ2V0SWNvbkZ1bmMgJiYgaGFzSWNvbihvcHRpb25zW2N1cnJlbnRJbmRleF0pKSB7XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHhcIiBuei1pY29uIFtuekljb25mb250XT1cImdldEljb25mb250QnlWYWx1ZShzZWxlY3RlZC5uelZhbHVlLCBvcHRpb25zW2N1cnJlbnRJbmRleF0pIHx8ICcnXCI+PC9zcGFuPlxuICAgICAgfVxuICAgICAgPHNwYW4+e3sgc2VsZWN0ZWQubnpMYWJlbCB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICB9XG4gIDxuZy10ZW1wbGF0ZSAjc2VhcmNoaW5nQ29udGVudD5cbiAgICA8bnotc3BpbiBuelRpcD1cIuWKoOi9veS4rVwiIHN0eWxlPVwibWFyZ2luOiBhdXRvOyBoZWlnaHQ6IDEwMHB4XCI+PC9uei1zcGluPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bnotc2VsZWN0IGNsYXNzPVwiY29uZGl0aW9uLWl0ZW0tb3BlcmF0b3JcIiBbKG5nTW9kZWwpXT1cImNvbmRpdGlvbkRhdGEoKS5vcGVyYXRvclwiPlxuICAgIEBmb3IgKG9wZXJhdG9yIG9mIGNvbmRpdGlvbkVkaXRvclNlcnZpY2Uub3BlcmF0b3JzIHx8IFtdOyB0cmFjayBvcGVyYXRvci52YWx1ZSkge1xuICAgICAgPG56LW9wdGlvbiBbbnpWYWx1ZV09XCJvcGVyYXRvci52YWx1ZVwiIFtuekxhYmVsXT1cIm9wZXJhdG9yLmxhYmVsXCI+PC9uei1vcHRpb24+XG4gICAgfVxuICA8L256LXNlbGVjdD5cbiAgPGlucHV0IGNsYXNzPVwiY29uZGl0aW9uLWl0ZW0tdmFsdWVcIiBuei1pbnB1dCBbKG5nTW9kZWwpXT1cImNvbmRpdGlvbkRhdGEoKS52YWx1ZVwiIC8+XG5cbiAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbkl0ZW0oKVwiIGNsYXNzPVwiY29uZGl0aW9uLWl0ZW0tZGVsZXRlXCIgbnotaWNvbiBuelR5cGU9XCJkZWxldGVcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './condition-editor.component';
2
+ export * from './condition-editor.model';
3
+ export * from './condition-editor.service';
4
+ export * from './condition-editor-request.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,265 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injectable, inject, input, output, Component, effect } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i6$1 from '@angular/common';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i2 from '@angular/forms';
7
+ import { FormsModule } from '@angular/forms';
8
+ import * as i3$1 from 'ng-zorro-antd/button';
9
+ import { NzButtonModule } from 'ng-zorro-antd/button';
10
+ import { NzFormModule } from 'ng-zorro-antd/form';
11
+ import * as i6 from 'ng-zorro-antd/icon';
12
+ import { NzIconModule } from 'ng-zorro-antd/icon';
13
+ import { NzModalModule } from 'ng-zorro-antd/modal';
14
+ import * as i1 from 'ng-zorro-antd/select';
15
+ import { NzSelectModule } from 'ng-zorro-antd/select';
16
+ import * as i3 from 'ng-zorro-antd/input';
17
+ import { NzInputModule } from 'ng-zorro-antd/input';
18
+ import * as i5 from 'ng-zorro-antd/spin';
19
+ import { NzSpinModule } from 'ng-zorro-antd/spin';
20
+ import * as i4 from 'ng-zorro-antd/core/transition-patch';
21
+ import * as i5$1 from 'ng-zorro-antd/core/wave';
22
+
23
+ const ConditionEditorRequestServiceToken = new InjectionToken('ConditionEditorRequestServiceToken');
24
+ /**
25
+ * 条件编辑器请求服务,用于获取选择框选项和操作符选项
26
+ * 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。
27
+ */
28
+ class ConditionEditorRequestService {
29
+ constructor() { }
30
+ }
31
+
32
+ var ConditionGroupType;
33
+ (function (ConditionGroupType) {
34
+ ConditionGroupType["AND"] = "AND";
35
+ ConditionGroupType["OR"] = "OR";
36
+ })(ConditionGroupType || (ConditionGroupType = {}));
37
+
38
+ class ConditionEditorService {
39
+ constructor() {
40
+ this.operators = [];
41
+ this.firstSelectOptionsSub = new BehaviorSubject([]);
42
+ this.showSelectNumberSub = new BehaviorSubject(1);
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
45
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, decorators: [{
48
+ type: Injectable
49
+ }] });
50
+
51
+ class ConditionItemComponent {
52
+ constructor() {
53
+ this.conditionEditorService = inject(ConditionEditorService);
54
+ this.conditionEditorRequestService = inject(ConditionEditorRequestServiceToken);
55
+ this.conditionData = input({
56
+ keys: [],
57
+ operator: '',
58
+ value: null
59
+ });
60
+ this.parentData = input(null);
61
+ this.dictOptions = [];
62
+ this.selectNumbers = [];
63
+ this.options = [];
64
+ this.dataChange = output();
65
+ }
66
+ ngOnInit() {
67
+ this.firstSelectOptionsSub = this.conditionEditorService.firstSelectOptionsSub.subscribe(options => {
68
+ this.options[0] = options || [];
69
+ });
70
+ this.showSelectNumberSub = this.conditionEditorService.showSelectNumberSub.subscribe(showSelectNumber => {
71
+ this.selectNumbers = Array.from({ length: showSelectNumber }, (_, i) => i);
72
+ for (let i = 0; i < this.selectNumbers.length; i++) {
73
+ if (this.conditionData().keys[i]) {
74
+ continue;
75
+ }
76
+ this.conditionData().keys[i] = { label: '', value: '' };
77
+ }
78
+ });
79
+ }
80
+ ngOnDestroy() {
81
+ this.firstSelectOptionsSub?.unsubscribe();
82
+ this.showSelectNumberSub?.unsubscribe();
83
+ }
84
+ getIconfontByValue(value, option) {
85
+ return this.conditionEditorService.getIconFunc?.(option.find(item => item.value === value)?.fieldType || '') || '';
86
+ }
87
+ hasIcon(option) {
88
+ return option.some(item => item.fieldType);
89
+ }
90
+ removeConditionItem() {
91
+ if (this.parentData()) {
92
+ this.parentData().conditions = this.parentData().conditions.filter(item => item !== this.conditionData());
93
+ this.dataChange.emit();
94
+ }
95
+ }
96
+ onSelectChange(index, event) {
97
+ this.conditionData().keys[index].label = this.options[index].find(item => item.value === event)?.label || '';
98
+ if (index >= this.selectNumbers.length - 1) {
99
+ return;
100
+ }
101
+ const values = this.conditionData()
102
+ .keys.slice(0, index + 1)
103
+ .map(item => item.value);
104
+ this.conditionData().keys.forEach((_, i) => {
105
+ if (i > index) {
106
+ this.conditionData().keys[i] = { label: '', value: '' };
107
+ this.options[i] = [];
108
+ }
109
+ });
110
+ this.conditionEditorRequestService.getSelectOptions(values).then(options => {
111
+ this.options[index + 1] = options;
112
+ });
113
+ }
114
+ onSelectOpenChange(index) {
115
+ if (this.options[index] && this.options[index].length > 0) {
116
+ return;
117
+ }
118
+ let values = [];
119
+ for (let i = 0; i < index; i++) {
120
+ if (this.conditionData().keys[i]) {
121
+ values.push(this.conditionData().keys[i].value);
122
+ continue;
123
+ }
124
+ return;
125
+ }
126
+ this.conditionEditorRequestService.getSelectOptions(values).then(options => {
127
+ this.options[index] = options;
128
+ });
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConditionItemComponent, isStandalone: true, selector: "app-condition-item", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, parentData: { classPropertyName: "parentData", publicName: "parentData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, ngImport: i0, template: "<div class=\"condition-item\">\n @for (i of selectNumbers; track $index; let currentIndex = $index) {\n <nz-select\n class=\"condition-item-key\"\n [nzNotFoundContent]=\"searchingContent\"\n [nzDisabled]=\"currentIndex > 0 && !conditionData().keys[currentIndex - 1].value\"\n [nzPlaceHolder]=\"conditionData().keys[currentIndex].label || ''\"\n [(ngModel)]=\"conditionData().keys[currentIndex].value\"\n (ngModelChange)=\"onSelectChange(currentIndex, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(currentIndex)\"\n [nzCustomTemplate]=\"defaultTemplate\"\n >\n @for (operator of options[currentIndex] || []; track operator) {\n <nz-option\n [nzValue]=\"operator.value\"\n [nzLabel]=\"operator.label\"\n [nzCustomContent]=\"!!conditionEditorService.getIconFunc && operator.fieldType\"\n >\n <span class=\"tag-select-option\">\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(operator.value, options[currentIndex])\"></span>\n <span>{{ operator.label }}</span>\n </span>\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n @if (!!conditionEditorService.getIconFunc && hasIcon(options[currentIndex])) {\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(selected.nzValue, options[currentIndex]) || ''\"></span>\n }\n <span>{{ selected.nzLabel }}</span>\n </ng-template>\n }\n <ng-template #searchingContent>\n <nz-spin nzTip=\"\u52A0\u8F7D\u4E2D\" style=\"margin: auto; height: 100px\"></nz-spin>\n </ng-template>\n <nz-select class=\"condition-item-operator\" [(ngModel)]=\"conditionData().operator\">\n @for (operator of conditionEditorService.operators || []; track operator.value) {\n <nz-option [nzValue]=\"operator.value\" [nzLabel]=\"operator.label\"></nz-option>\n }\n </nz-select>\n <input class=\"condition-item-value\" nz-input [(ngModel)]=\"conditionData().value\" />\n\n <span (click)=\"removeConditionItem()\" class=\"condition-item-delete\" nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n</div>\n", styles: [":host ::ng-deep .ant-select-selection-placeholder{color:#000000d9}:host .condition-item{position:relative;display:flex;flex-direction:row;gap:8px}:host .condition-item .condition-item-key{width:150px}:host .condition-item .condition-item-operator{width:120px}:host .condition-item .condition-item-value{width:180px}:host .condition-item .condition-item-delete{cursor:pointer}:host .condition-item .condition-item-delete:hover{color:#ff4d4f}\n"], dependencies: [{ kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i1.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i1.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i5.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i6.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionItemComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ selector: 'app-condition-item', standalone: true, imports: [NzSelectModule, FormsModule, NzInputModule, NzButtonModule, NzSpinModule, NzIconModule], template: "<div class=\"condition-item\">\n @for (i of selectNumbers; track $index; let currentIndex = $index) {\n <nz-select\n class=\"condition-item-key\"\n [nzNotFoundContent]=\"searchingContent\"\n [nzDisabled]=\"currentIndex > 0 && !conditionData().keys[currentIndex - 1].value\"\n [nzPlaceHolder]=\"conditionData().keys[currentIndex].label || ''\"\n [(ngModel)]=\"conditionData().keys[currentIndex].value\"\n (ngModelChange)=\"onSelectChange(currentIndex, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(currentIndex)\"\n [nzCustomTemplate]=\"defaultTemplate\"\n >\n @for (operator of options[currentIndex] || []; track operator) {\n <nz-option\n [nzValue]=\"operator.value\"\n [nzLabel]=\"operator.label\"\n [nzCustomContent]=\"!!conditionEditorService.getIconFunc && operator.fieldType\"\n >\n <span class=\"tag-select-option\">\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(operator.value, options[currentIndex])\"></span>\n <span>{{ operator.label }}</span>\n </span>\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n @if (!!conditionEditorService.getIconFunc && hasIcon(options[currentIndex])) {\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(selected.nzValue, options[currentIndex]) || ''\"></span>\n }\n <span>{{ selected.nzLabel }}</span>\n </ng-template>\n }\n <ng-template #searchingContent>\n <nz-spin nzTip=\"\u52A0\u8F7D\u4E2D\" style=\"margin: auto; height: 100px\"></nz-spin>\n </ng-template>\n <nz-select class=\"condition-item-operator\" [(ngModel)]=\"conditionData().operator\">\n @for (operator of conditionEditorService.operators || []; track operator.value) {\n <nz-option [nzValue]=\"operator.value\" [nzLabel]=\"operator.label\"></nz-option>\n }\n </nz-select>\n <input class=\"condition-item-value\" nz-input [(ngModel)]=\"conditionData().value\" />\n\n <span (click)=\"removeConditionItem()\" class=\"condition-item-delete\" nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n</div>\n", styles: [":host ::ng-deep .ant-select-selection-placeholder{color:#000000d9}:host .condition-item{position:relative;display:flex;flex-direction:row;gap:8px}:host .condition-item .condition-item-key{width:150px}:host .condition-item .condition-item-operator{width:120px}:host .condition-item .condition-item-value{width:180px}:host .condition-item .condition-item-delete{cursor:pointer}:host .condition-item .condition-item-delete:hover{color:#ff4d4f}\n"] }]
136
+ }] });
137
+
138
+ class ConditionGroupComponent {
139
+ constructor() {
140
+ this.groupData = input({
141
+ groupType: ConditionGroupType.AND,
142
+ conditions: []
143
+ });
144
+ this.parentData = input(null);
145
+ this.showLine = input(true);
146
+ this.dataChange = output();
147
+ }
148
+ addConditionItem() {
149
+ this.groupData().conditions.push({
150
+ keys: [],
151
+ operator: '',
152
+ value: ''
153
+ });
154
+ }
155
+ addConditionGroup() {
156
+ this.groupData().conditions.push({
157
+ groupType: ConditionGroupType.AND,
158
+ conditions: []
159
+ });
160
+ this.dataChange.emit();
161
+ }
162
+ removeConditionGroup() {
163
+ if (this.parentData()) {
164
+ this.parentData().conditions = this.parentData().conditions.filter(item => item !== this.groupData());
165
+ this.dataChange.emit();
166
+ }
167
+ }
168
+ submitForm() { }
169
+ handleOk() { }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConditionGroupComponent, isStandalone: true, selector: "app-condition-group", inputs: { groupData: { classPropertyName: "groupData", publicName: "groupData", isSignal: true, isRequired: false, transformFunction: null }, parentData: { classPropertyName: "parentData", publicName: "parentData", isSignal: true, isRequired: false, transformFunction: null }, showLine: { classPropertyName: "showLine", publicName: "showLine", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, ngImport: i0, template: "@if (groupData()) {\n <div class=\"condition-group\">\n <nz-select class=\"condition-group-type\" [ngClass]=\"{ 'no-line': !showLine() }\" [(ngModel)]=\"groupData().groupType\">\n <nz-option nzValue=\"AND\" nzLabel=\"\u4E14\"></nz-option>\n <nz-option nzValue=\"OR\" nzLabel=\"\u6216\"></nz-option>\n </nz-select>\n\n <div class=\"condition-group-content\">\n @for (condition of groupData().conditions; track condition) {\n @if ($any(condition).groupType) {\n <app-condition-group\n class=\"hide-first\"\n [groupData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-group>\n } @else {\n <app-condition-item\n class=\"condition-content-item hide-first\"\n [conditionData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-item>\n }\n }\n <div class=\"condition-content-item hide-first\">\n <button nz-button (click)=\"addConditionItem()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6</button>\n <button nz-button (click)=\"addConditionGroup()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6\u7EC4</button>\n @if (groupData().conditions.length === 0 && parentData()) {\n <button nz-button nzDanger (click)=\"removeConditionGroup()\"\n ><span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\u6761\u4EF6\u7EC4</button\n >\n }\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block}:host .condition-group{display:flex;flex-direction:row;align-items:center}:host .condition-group .condition-group-type{position:relative;width:80px;height:fit-content;margin-right:24px}:host .condition-group .condition-group-type:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-type:after{position:absolute;top:16px;right:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .no-line:before{content:none!important}:host .condition-group .condition-group-content{position:relative;display:flex;flex-direction:column;gap:8px}:host .condition-group .condition-group-content:before{position:absolute;top:16px;left:-12px;width:0;height:calc(100% - 32px);border-left:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-content .hide-first{position:relative}:host .condition-group .condition-group-content .hide-first:first-child:after{position:absolute;top:16px;left:-12px;width:0;height:calc(50% - 16px);border-left:1px solid #fff;content:\"\"}:host .condition-group .condition-group-content .condition-content-item{position:relative;height:32px;line-height:32px}:host .condition-group .condition-group-content .condition-content-item:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}\n"], dependencies: [{ kind: "component", type: ConditionGroupComponent, selector: "app-condition-group", inputs: ["groupData", "parentData", "showLine"], outputs: ["dataChange"] }, { kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i1.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i1.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ConditionItemComponent, selector: "app-condition-item", inputs: ["conditionData", "parentData"], outputs: ["dataChange"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i3$1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i5$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "ngmodule", type: NzFormModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i6.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionGroupComponent, decorators: [{
174
+ type: Component,
175
+ args: [{ selector: 'app-condition-group', standalone: true, imports: [NzSelectModule, FormsModule, ConditionItemComponent, NzButtonModule, NzModalModule, NzFormModule, CommonModule, NzIconModule], template: "@if (groupData()) {\n <div class=\"condition-group\">\n <nz-select class=\"condition-group-type\" [ngClass]=\"{ 'no-line': !showLine() }\" [(ngModel)]=\"groupData().groupType\">\n <nz-option nzValue=\"AND\" nzLabel=\"\u4E14\"></nz-option>\n <nz-option nzValue=\"OR\" nzLabel=\"\u6216\"></nz-option>\n </nz-select>\n\n <div class=\"condition-group-content\">\n @for (condition of groupData().conditions; track condition) {\n @if ($any(condition).groupType) {\n <app-condition-group\n class=\"hide-first\"\n [groupData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-group>\n } @else {\n <app-condition-item\n class=\"condition-content-item hide-first\"\n [conditionData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-item>\n }\n }\n <div class=\"condition-content-item hide-first\">\n <button nz-button (click)=\"addConditionItem()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6</button>\n <button nz-button (click)=\"addConditionGroup()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>\u6DFB\u52A0\u6761\u4EF6\u7EC4</button>\n @if (groupData().conditions.length === 0 && parentData()) {\n <button nz-button nzDanger (click)=\"removeConditionGroup()\"\n ><span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\u6761\u4EF6\u7EC4</button\n >\n }\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block}:host .condition-group{display:flex;flex-direction:row;align-items:center}:host .condition-group .condition-group-type{position:relative;width:80px;height:fit-content;margin-right:24px}:host .condition-group .condition-group-type:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-type:after{position:absolute;top:16px;right:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}:host .condition-group .no-line:before{content:none!important}:host .condition-group .condition-group-content{position:relative;display:flex;flex-direction:column;gap:8px}:host .condition-group .condition-group-content:before{position:absolute;top:16px;left:-12px;width:0;height:calc(100% - 32px);border-left:1px solid #9a9a9a;content:\"\"}:host .condition-group .condition-group-content .hide-first{position:relative}:host .condition-group .condition-group-content .hide-first:first-child:after{position:absolute;top:16px;left:-12px;width:0;height:calc(50% - 16px);border-left:1px solid #fff;content:\"\"}:host .condition-group .condition-group-content .condition-content-item{position:relative;height:32px;line-height:32px}:host .condition-group .condition-group-content .condition-content-item:before{position:absolute;top:16px;left:-12px;width:12px;height:0;border-top:1px solid #9a9a9a;content:\"\"}\n"] }]
176
+ }] });
177
+
178
+ /**
179
+ * 条件编辑器组件
180
+ * 用于编辑条件表达式,支持多个条件组的组合。
181
+ */
182
+ class ConditionEditorComponent {
183
+ constructor() {
184
+ this.conditionEditorRequestService = inject(ConditionEditorRequestServiceToken);
185
+ this.conditionEditorService = inject(ConditionEditorService);
186
+ /**
187
+ * 条件数据输入,包含条件组类型和条件数组
188
+ */
189
+ this.conditionData = input({
190
+ groupType: ConditionGroupType.AND,
191
+ conditions: []
192
+ });
193
+ /**
194
+ * 显示选择框的数量输入
195
+ */
196
+ this.showSelectNumber = input();
197
+ /**
198
+ * 图标函数输入,用于根据值返回图标字体名
199
+ */
200
+ this.getIconFunc = input();
201
+ /**
202
+ * 条件数据变化输出,包含更新后的条件组
203
+ */
204
+ this.dataChange = output();
205
+ effect(() => {
206
+ const showSelectNumber = this.showSelectNumber();
207
+ if (showSelectNumber !== undefined) {
208
+ this.conditionEditorService.showSelectNumberSub.next(showSelectNumber);
209
+ }
210
+ });
211
+ effect(() => {
212
+ const getIconFunc = this.getIconFunc();
213
+ if (getIconFunc !== undefined) {
214
+ this.conditionEditorService.getIconFunc = getIconFunc;
215
+ }
216
+ });
217
+ }
218
+ ngOnInit() {
219
+ this.conditionEditorRequestService.getOperatorOptions().then(options => {
220
+ this.conditionEditorService.operators = options || [];
221
+ });
222
+ this.conditionEditorRequestService.getSelectOptions([]).then(options => {
223
+ this.conditionEditorService.firstSelectOptionsSub.next(options || []);
224
+ });
225
+ }
226
+ onDataChange() {
227
+ this.dataChange.emit(this.conditionData());
228
+ }
229
+ /**
230
+ * 获取当前条件数据
231
+ * @returns 当前条件数据
232
+ */
233
+ getConditionData() {
234
+ return this.conditionData();
235
+ }
236
+ /**
237
+ * 重新加载第一个选择框的选项
238
+ */
239
+ reloadFirstSelectOptions() {
240
+ this.conditionEditorRequestService.getSelectOptions([]).then(options => {
241
+ this.conditionEditorService.firstSelectOptionsSub.next(options || []);
242
+ });
243
+ }
244
+ /**
245
+ * 重新加载操作符选项
246
+ */
247
+ reloadOperatorOptions() {
248
+ this.conditionEditorRequestService.getOperatorOptions().then(options => {
249
+ this.conditionEditorService.operators = options || [];
250
+ });
251
+ }
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConditionEditorComponent, isStandalone: true, selector: "app-condition-editor", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, showSelectNumber: { classPropertyName: "showSelectNumber", publicName: "showSelectNumber", isSignal: true, isRequired: false, transformFunction: null }, getIconFunc: { classPropertyName: "getIconFunc", publicName: "getIconFunc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, providers: [ConditionEditorService], ngImport: i0, template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\" (dataChange)=\"onDataChange()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"], dependencies: [{ kind: "component", type: ConditionGroupComponent, selector: "app-condition-group", inputs: ["groupData", "parentData", "showLine"], outputs: ["dataChange"] }] }); }
254
+ }
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, decorators: [{
256
+ type: Component,
257
+ args: [{ selector: 'app-condition-editor', standalone: true, imports: [ConditionGroupComponent], providers: [ConditionEditorService], template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\" (dataChange)=\"onDataChange()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"] }]
258
+ }], ctorParameters: () => [] });
259
+
260
+ /**
261
+ * Generated bundle index. Do not edit.
262
+ */
263
+
264
+ export { ConditionEditorComponent, ConditionEditorRequestService, ConditionEditorRequestServiceToken, ConditionEditorService, ConditionGroupType };
265
+ //# sourceMappingURL=condition-editor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-editor.mjs","sources":["../../../../components/condition-editor/condition-editor-request.service.ts","../../../../components/condition-editor/condition-editor.model.ts","../../../../components/condition-editor/condition-editor.service.ts","../../../../components/condition-editor/condition-item/condition-item.component.ts","../../../../components/condition-editor/condition-item/condition-item.component.html","../../../../components/condition-editor/condition-group/condition-group.component.ts","../../../../components/condition-editor/condition-group/condition-group.component.html","../../../../components/condition-editor/condition-editor.component.ts","../../../../components/condition-editor/condition-editor.component.html","../../../../components/condition-editor/condition-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { SelectOption } from './condition-editor.model';\n\nexport const ConditionEditorRequestServiceToken = new InjectionToken<ConditionEditorRequestService>('ConditionEditorRequestServiceToken');\n\n/**\n * 条件编辑器请求服务,用于获取选择框选项和操作符选项\n * 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。\n */\nexport abstract class ConditionEditorRequestService {\n constructor() {}\n /**\n * 获取选择框选项\n * @param previousValue 前n个选择框的值\n * @returns 选择框选项数组\n */\n abstract getSelectOptions(previousValue: string[]): Promise<SelectOption[]>;\n /**\n * 获取操作符选项\n * @returns 操作符选项数组\n */\n abstract getOperatorOptions(): Promise<SelectOption[]>;\n}\n","export enum ConditionGroupType {\n AND = 'AND',\n OR = 'OR'\n}\n\nexport interface ConditionGroup {\n groupType: ConditionGroupType;\n conditions: Array<Condition | ConditionGroup>;\n}\n\nexport interface Condition {\n keys: Array<{ label: string; value: string }>;\n operator: string;\n value: any;\n}\n\n/**\n * 选择框选项\n * 用于条件编辑器中的选择框\n */\nexport interface SelectOption {\n label: string;\n value: string;\n fieldType?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { SelectOption } from './condition-editor.model';\n\n@Injectable()\nexport class ConditionEditorService {\n operators: SelectOption[] = [];\n\n firstSelectOptionsSub = new BehaviorSubject<SelectOption[]>([]);\n\n showSelectNumberSub = new BehaviorSubject<number>(1);\n\n getIconFunc?: (value: string) => string;\n}\n","import { Component, inject, input, output, OnInit, OnDestroy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { Subscription } from 'rxjs';\n\nimport { ConditionEditorRequestService, ConditionEditorRequestServiceToken } from '../condition-editor-request.service';\nimport { Condition, ConditionGroup, SelectOption } from '../condition-editor.model';\nimport { ConditionEditorService } from '../condition-editor.service';\n\n@Component({\n selector: 'app-condition-item',\n standalone: true,\n imports: [NzSelectModule, FormsModule, NzInputModule, NzButtonModule, NzSpinModule, NzIconModule],\n templateUrl: './condition-item.component.html',\n styleUrl: './condition-item.component.less'\n})\nexport class ConditionItemComponent implements OnInit, OnDestroy {\n readonly conditionEditorService = inject(ConditionEditorService);\n private readonly conditionEditorRequestService = inject<ConditionEditorRequestService>(ConditionEditorRequestServiceToken);\n conditionData = input<Condition>({\n keys: [],\n operator: '',\n value: null\n });\n parentData = input<ConditionGroup | null>(null);\n\n dictOptions = [];\n\n selectNumbers: number[] = [];\n options: SelectOption[][] = [];\n firstSelectOptionsSub?: Subscription;\n showSelectNumberSub?: Subscription;\n\n readonly dataChange = output<void>();\n\n ngOnInit() {\n this.firstSelectOptionsSub = this.conditionEditorService.firstSelectOptionsSub.subscribe(options => {\n this.options[0] = options || [];\n });\n this.showSelectNumberSub = this.conditionEditorService.showSelectNumberSub.subscribe(showSelectNumber => {\n this.selectNumbers = Array.from({ length: showSelectNumber }, (_, i) => i);\n for (let i = 0; i < this.selectNumbers.length; i++) {\n if (this.conditionData().keys[i]) {\n continue;\n }\n this.conditionData().keys[i] = { label: '', value: '' };\n }\n });\n }\n\n ngOnDestroy() {\n this.firstSelectOptionsSub?.unsubscribe();\n this.showSelectNumberSub?.unsubscribe();\n }\n\n getIconfontByValue(value: string, option: SelectOption[]) {\n return this.conditionEditorService.getIconFunc?.(option.find(item => item.value === value)?.fieldType || '') || '';\n }\n\n hasIcon(option: SelectOption[]) {\n return option.some(item => item.fieldType);\n }\n\n removeConditionItem() {\n if (this.parentData()) {\n this.parentData()!.conditions = this.parentData()!.conditions.filter(item => item !== this.conditionData());\n this.dataChange.emit();\n }\n }\n\n onSelectChange(index: number, event: any) {\n this.conditionData().keys[index].label = this.options[index].find(item => item.value === event)?.label || '';\n if (index >= this.selectNumbers.length - 1) {\n return;\n }\n const values = this.conditionData()\n .keys.slice(0, index + 1)\n .map(item => item.value);\n this.conditionData().keys.forEach((_, i) => {\n if (i > index) {\n this.conditionData().keys[i] = { label: '', value: '' };\n this.options[i] = [];\n }\n });\n this.conditionEditorRequestService.getSelectOptions(values).then(options => {\n this.options[index + 1] = options;\n });\n }\n\n onSelectOpenChange(index: number) {\n if (this.options[index] && this.options[index].length > 0) {\n return;\n }\n let values: string[] = [];\n for (let i = 0; i < index; i++) {\n if (this.conditionData().keys[i]) {\n values.push(this.conditionData().keys[i].value);\n continue;\n }\n return;\n }\n this.conditionEditorRequestService.getSelectOptions(values).then(options => {\n this.options[index] = options;\n });\n }\n}\n","<div class=\"condition-item\">\n @for (i of selectNumbers; track $index; let currentIndex = $index) {\n <nz-select\n class=\"condition-item-key\"\n [nzNotFoundContent]=\"searchingContent\"\n [nzDisabled]=\"currentIndex > 0 && !conditionData().keys[currentIndex - 1].value\"\n [nzPlaceHolder]=\"conditionData().keys[currentIndex].label || ''\"\n [(ngModel)]=\"conditionData().keys[currentIndex].value\"\n (ngModelChange)=\"onSelectChange(currentIndex, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(currentIndex)\"\n [nzCustomTemplate]=\"defaultTemplate\"\n >\n @for (operator of options[currentIndex] || []; track operator) {\n <nz-option\n [nzValue]=\"operator.value\"\n [nzLabel]=\"operator.label\"\n [nzCustomContent]=\"!!conditionEditorService.getIconFunc && operator.fieldType\"\n >\n <span class=\"tag-select-option\">\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(operator.value, options[currentIndex])\"></span>\n <span>{{ operator.label }}</span>\n </span>\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n @if (!!conditionEditorService.getIconFunc && hasIcon(options[currentIndex])) {\n <span style=\"margin-right: 4px\" nz-icon [nzIconfont]=\"getIconfontByValue(selected.nzValue, options[currentIndex]) || ''\"></span>\n }\n <span>{{ selected.nzLabel }}</span>\n </ng-template>\n }\n <ng-template #searchingContent>\n <nz-spin nzTip=\"加载中\" style=\"margin: auto; height: 100px\"></nz-spin>\n </ng-template>\n <nz-select class=\"condition-item-operator\" [(ngModel)]=\"conditionData().operator\">\n @for (operator of conditionEditorService.operators || []; track operator.value) {\n <nz-option [nzValue]=\"operator.value\" [nzLabel]=\"operator.label\"></nz-option>\n }\n </nz-select>\n <input class=\"condition-item-value\" nz-input [(ngModel)]=\"conditionData().value\" />\n\n <span (click)=\"removeConditionItem()\" class=\"condition-item-delete\" nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\n\nimport { ConditionGroup, ConditionGroupType } from '../condition-editor.model';\nimport { ConditionItemComponent } from '../condition-item/condition-item.component';\n\n@Component({\n selector: 'app-condition-group',\n standalone: true,\n imports: [NzSelectModule, FormsModule, ConditionItemComponent, NzButtonModule, NzModalModule, NzFormModule, CommonModule, NzIconModule],\n templateUrl: './condition-group.component.html',\n styleUrl: './condition-group.component.less'\n})\nexport class ConditionGroupComponent {\n groupData = input<ConditionGroup>({\n groupType: ConditionGroupType.AND,\n conditions: []\n });\n\n parentData = input<ConditionGroup | null>(null);\n showLine = input<boolean>(true);\n\n readonly dataChange = output<void>();\n\n addConditionItem() {\n this.groupData().conditions.push({\n keys: [],\n operator: '',\n value: ''\n });\n }\n\n addConditionGroup() {\n this.groupData().conditions.push({\n groupType: ConditionGroupType.AND,\n conditions: []\n });\n this.dataChange.emit();\n }\n\n removeConditionGroup() {\n if (this.parentData()) {\n this.parentData()!.conditions = this.parentData()!.conditions.filter(item => item !== this.groupData());\n this.dataChange.emit();\n }\n }\n\n submitForm() {}\n\n handleOk() {}\n}\n","@if (groupData()) {\n <div class=\"condition-group\">\n <nz-select class=\"condition-group-type\" [ngClass]=\"{ 'no-line': !showLine() }\" [(ngModel)]=\"groupData().groupType\">\n <nz-option nzValue=\"AND\" nzLabel=\"且\"></nz-option>\n <nz-option nzValue=\"OR\" nzLabel=\"或\"></nz-option>\n </nz-select>\n\n <div class=\"condition-group-content\">\n @for (condition of groupData().conditions; track condition) {\n @if ($any(condition).groupType) {\n <app-condition-group\n class=\"hide-first\"\n [groupData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-group>\n } @else {\n <app-condition-item\n class=\"condition-content-item hide-first\"\n [conditionData]=\"$any(condition)\"\n [parentData]=\"groupData()\"\n (dataChange)=\"dataChange.emit()\"\n ></app-condition-item>\n }\n }\n <div class=\"condition-content-item hide-first\">\n <button nz-button (click)=\"addConditionItem()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>添加条件</button>\n <button nz-button (click)=\"addConditionGroup()\"><span nz-icon nzType=\"plus\" nzTheme=\"outline\"></span>添加条件组</button>\n @if (groupData().conditions.length === 0 && parentData()) {\n <button nz-button nzDanger (click)=\"removeConditionGroup()\"\n ><span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>删除条件组</button\n >\n }\n </div>\n </div>\n </div>\n}\n","import { Component, inject, input, output, OnInit, effect, untracked, computed } from '@angular/core';\n\nimport { ConditionEditorRequestService, ConditionEditorRequestServiceToken } from './condition-editor-request.service';\nimport { ConditionGroup, ConditionGroupType } from './condition-editor.model';\nimport { ConditionEditorService } from './condition-editor.service';\nimport { ConditionGroupComponent } from './condition-group/condition-group.component';\n\n/**\n * 条件编辑器组件\n * 用于编辑条件表达式,支持多个条件组的组合。\n */\n@Component({\n selector: 'app-condition-editor',\n standalone: true,\n imports: [ConditionGroupComponent],\n templateUrl: './condition-editor.component.html',\n styleUrl: './condition-editor.component.less',\n providers: [ConditionEditorService]\n})\nexport class ConditionEditorComponent implements OnInit {\n private readonly conditionEditorRequestService = inject<ConditionEditorRequestService>(ConditionEditorRequestServiceToken);\n private readonly conditionEditorService = inject(ConditionEditorService);\n /**\n * 条件数据输入,包含条件组类型和条件数组\n */\n conditionData = input<ConditionGroup>({\n groupType: ConditionGroupType.AND,\n conditions: []\n });\n /**\n * 显示选择框的数量输入\n */\n showSelectNumber = input<number>();\n\n /**\n * 图标函数输入,用于根据值返回图标字体名\n */\n getIconFunc = input<(value: string) => string>();\n /**\n * 条件数据变化输出,包含更新后的条件组\n */\n readonly dataChange = output<ConditionGroup>();\n\n constructor() {\n effect(() => {\n const showSelectNumber = this.showSelectNumber();\n if (showSelectNumber !== undefined) {\n this.conditionEditorService.showSelectNumberSub.next(showSelectNumber);\n }\n });\n\n effect(() => {\n const getIconFunc = this.getIconFunc();\n if (getIconFunc !== undefined) {\n this.conditionEditorService.getIconFunc = getIconFunc;\n }\n });\n }\n\n ngOnInit() {\n this.conditionEditorRequestService.getOperatorOptions().then(options => {\n this.conditionEditorService.operators = options || [];\n });\n this.conditionEditorRequestService.getSelectOptions([]).then(options => {\n this.conditionEditorService.firstSelectOptionsSub.next(options || []);\n });\n }\n\n onDataChange() {\n this.dataChange.emit(this.conditionData());\n }\n\n /**\n * 获取当前条件数据\n * @returns 当前条件数据\n */\n public getConditionData() {\n return this.conditionData();\n }\n\n /**\n * 重新加载第一个选择框的选项\n */\n public reloadFirstSelectOptions() {\n this.conditionEditorRequestService.getSelectOptions([]).then(options => {\n this.conditionEditorService.firstSelectOptionsSub.next(options || []);\n });\n }\n\n /**\n * 重新加载操作符选项\n */\n public reloadOperatorOptions() {\n this.conditionEditorRequestService.getOperatorOptions().then(options => {\n this.conditionEditorService.operators = options || [];\n });\n }\n}\n","<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\" (dataChange)=\"onDataChange()\"></app-condition-group>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i7"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './condition-editor.component';
2
+ export * from './condition-editor.model';
3
+ export * from './condition-editor.service';
4
+ export * from './condition-editor-request.service';
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@xw-components/condition-editor",
3
+ "version": "18.1.0",
4
+ "author": "shatong",
5
+ "dependencies": {
6
+ "ng-zorro-antd": "^18.2.1",
7
+ "tslib": "^2.3.0"
8
+ },
9
+ "publishConfig": {
10
+ "registry": "https://registry.npmjs.org/"
11
+ },
12
+ "module": "fesm2022/condition-editor.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "esm2022": "./esm2022/condition-editor.mjs",
21
+ "esm": "./esm2022/condition-editor.mjs",
22
+ "default": "./fesm2022/condition-editor.mjs"
23
+ }
24
+ },
25
+ "sideEffects": false
26
+ }