@memberjunction/ng-filter-builder 0.0.1 → 2.123.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.
- package/dist/lib/filter-builder/filter-builder.component.d.ts +155 -0
- package/dist/lib/filter-builder/filter-builder.component.d.ts.map +1 -0
- package/dist/lib/filter-builder/filter-builder.component.js +482 -0
- package/dist/lib/filter-builder/filter-builder.component.js.map +1 -0
- package/dist/lib/filter-builder.module.d.ts +39 -0
- package/dist/lib/filter-builder.module.d.ts.map +1 -0
- package/dist/lib/filter-builder.module.js +66 -0
- package/dist/lib/filter-builder.module.js.map +1 -0
- package/dist/lib/filter-group/filter-group.component.d.ts +102 -0
- package/dist/lib/filter-group/filter-group.component.d.ts.map +1 -0
- package/dist/lib/filter-group/filter-group.component.js +328 -0
- package/dist/lib/filter-group/filter-group.component.js.map +1 -0
- package/dist/lib/filter-rule/filter-rule.component.d.ts +165 -0
- package/dist/lib/filter-rule/filter-rule.component.d.ts.map +1 -0
- package/dist/lib/filter-rule/filter-rule.component.js +682 -0
- package/dist/lib/filter-rule/filter-rule.component.js.map +1 -0
- package/dist/lib/types/filter.types.d.ts +142 -0
- package/dist/lib/types/filter.types.d.ts.map +1 -0
- package/dist/lib/types/filter.types.js +82 -0
- package/dist/lib/types/filter.types.js.map +1 -0
- package/dist/lib/types/operators.d.ts +49 -0
- package/dist/lib/types/operators.d.ts.map +1 -0
- package/dist/lib/types/operators.js +99 -0
- package/dist/lib/types/operators.js.map +1 -0
- package/dist/public-api.d.ts +15 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +19 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +38 -6
- package/README.md +0 -45
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-builder.component.js","sourceRoot":"","sources":["../../../src/lib/filter-builder/filter-builder.component.ts","../../../src/lib/filter-builder/filter-builder.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./filter-builder/filter-builder.component";
|
|
3
|
+
import * as i2 from "./filter-group/filter-group.component";
|
|
4
|
+
import * as i3 from "./filter-rule/filter-rule.component";
|
|
5
|
+
import * as i4 from "@angular/common";
|
|
6
|
+
import * as i5 from "@angular/forms";
|
|
7
|
+
/**
|
|
8
|
+
* FilterBuilderModule
|
|
9
|
+
*
|
|
10
|
+
* Provides a complete filter builder UI for creating complex
|
|
11
|
+
* boolean filter expressions. Outputs Kendo-compatible
|
|
12
|
+
* CompositeFilterDescriptor JSON format.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { FilterBuilderModule } from '@memberjunction/ng-filter-builder';
|
|
17
|
+
*
|
|
18
|
+
* @NgModule({
|
|
19
|
+
* imports: [FilterBuilderModule],
|
|
20
|
+
* // ...
|
|
21
|
+
* })
|
|
22
|
+
* export class MyModule {}
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```html
|
|
27
|
+
* <mj-filter-builder
|
|
28
|
+
* [fields]="filterFields"
|
|
29
|
+
* [filter]="currentFilter"
|
|
30
|
+
* (filterChange)="onFilterChange($event)">
|
|
31
|
+
* </mj-filter-builder>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class FilterBuilderModule {
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterBuilderModule, never>;
|
|
36
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FilterBuilderModule, [typeof i1.FilterBuilderComponent, typeof i2.FilterGroupComponent, typeof i3.FilterRuleComponent], [typeof i4.CommonModule, typeof i5.FormsModule], [typeof i1.FilterBuilderComponent, typeof i2.FilterGroupComponent, typeof i3.FilterRuleComponent]>;
|
|
37
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<FilterBuilderModule>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=filter-builder.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-builder.module.d.ts","sourceRoot":"","sources":["../../src/lib/filter-builder.module.ts"],"names":[],"mappings":";;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAgBa,mBAAmB;yCAAnB,mBAAmB;0CAAnB,mBAAmB;0CAAnB,mBAAmB;CAAG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { FilterBuilderComponent } from './filter-builder/filter-builder.component';
|
|
5
|
+
import { FilterGroupComponent } from './filter-group/filter-group.component';
|
|
6
|
+
import { FilterRuleComponent } from './filter-rule/filter-rule.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* FilterBuilderModule
|
|
10
|
+
*
|
|
11
|
+
* Provides a complete filter builder UI for creating complex
|
|
12
|
+
* boolean filter expressions. Outputs Kendo-compatible
|
|
13
|
+
* CompositeFilterDescriptor JSON format.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { FilterBuilderModule } from '@memberjunction/ng-filter-builder';
|
|
18
|
+
*
|
|
19
|
+
* @NgModule({
|
|
20
|
+
* imports: [FilterBuilderModule],
|
|
21
|
+
* // ...
|
|
22
|
+
* })
|
|
23
|
+
* export class MyModule {}
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```html
|
|
28
|
+
* <mj-filter-builder
|
|
29
|
+
* [fields]="filterFields"
|
|
30
|
+
* [filter]="currentFilter"
|
|
31
|
+
* (filterChange)="onFilterChange($event)">
|
|
32
|
+
* </mj-filter-builder>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class FilterBuilderModule {
|
|
36
|
+
static ɵfac = function FilterBuilderModule_Factory(t) { return new (t || FilterBuilderModule)(); };
|
|
37
|
+
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: FilterBuilderModule });
|
|
38
|
+
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
39
|
+
FormsModule] });
|
|
40
|
+
}
|
|
41
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterBuilderModule, [{
|
|
42
|
+
type: NgModule,
|
|
43
|
+
args: [{
|
|
44
|
+
declarations: [
|
|
45
|
+
FilterBuilderComponent,
|
|
46
|
+
FilterGroupComponent,
|
|
47
|
+
FilterRuleComponent
|
|
48
|
+
],
|
|
49
|
+
imports: [
|
|
50
|
+
CommonModule,
|
|
51
|
+
FormsModule
|
|
52
|
+
],
|
|
53
|
+
exports: [
|
|
54
|
+
FilterBuilderComponent,
|
|
55
|
+
FilterGroupComponent,
|
|
56
|
+
FilterRuleComponent
|
|
57
|
+
]
|
|
58
|
+
}]
|
|
59
|
+
}], null, null); })();
|
|
60
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(FilterBuilderModule, { declarations: [FilterBuilderComponent,
|
|
61
|
+
FilterGroupComponent,
|
|
62
|
+
FilterRuleComponent], imports: [CommonModule,
|
|
63
|
+
FormsModule], exports: [FilterBuilderComponent,
|
|
64
|
+
FilterGroupComponent,
|
|
65
|
+
FilterRuleComponent] }); })();
|
|
66
|
+
//# sourceMappingURL=filter-builder.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-builder.module.js","sourceRoot":"","sources":["../../src/lib/filter-builder.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAiBH,MAAM,OAAO,mBAAmB;6EAAnB,mBAAmB;4DAAnB,mBAAmB;gEAT5B,YAAY;YACZ,WAAW;;iFAQF,mBAAmB;cAhB/B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,sBAAsB;oBACtB,oBAAoB;oBACpB,mBAAmB;iBACpB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;iBACZ;gBACD,OAAO,EAAE;oBACP,sBAAsB;oBACtB,oBAAoB;oBACpB,mBAAmB;iBACpB;aACF;;wFACY,mBAAmB,mBAd5B,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB,aAGnB,YAAY;QACZ,WAAW,aAGX,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { CompositeFilterDescriptor, FilterDescriptor, FilterFieldInfo, FilterLogic } from '../types/filter.types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* FilterGroupComponent - A group of filter rules with AND/OR logic
|
|
6
|
+
*
|
|
7
|
+
* Supports nested groups for complex filter expressions.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FilterGroupComponent implements OnInit {
|
|
10
|
+
/**
|
|
11
|
+
* The composite filter descriptor for this group
|
|
12
|
+
*/
|
|
13
|
+
filter: CompositeFilterDescriptor;
|
|
14
|
+
/**
|
|
15
|
+
* Available fields to filter on
|
|
16
|
+
*/
|
|
17
|
+
fields: FilterFieldInfo[];
|
|
18
|
+
/**
|
|
19
|
+
* Whether this is the root group (affects delete button visibility)
|
|
20
|
+
*/
|
|
21
|
+
isRoot: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Nesting depth (for visual indication)
|
|
24
|
+
*/
|
|
25
|
+
depth: number;
|
|
26
|
+
/**
|
|
27
|
+
* Maximum nesting depth allowed
|
|
28
|
+
*/
|
|
29
|
+
maxDepth: number;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the component is disabled
|
|
32
|
+
*/
|
|
33
|
+
disabled: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Emitted when the filter changes
|
|
36
|
+
*/
|
|
37
|
+
filterChange: EventEmitter<CompositeFilterDescriptor>;
|
|
38
|
+
/**
|
|
39
|
+
* Emitted when the delete button is clicked (for nested groups)
|
|
40
|
+
*/
|
|
41
|
+
delete: EventEmitter<void>;
|
|
42
|
+
ngOnInit(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Toggle the logic between AND and OR
|
|
45
|
+
*/
|
|
46
|
+
toggleLogic(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Set specific logic
|
|
49
|
+
*/
|
|
50
|
+
setLogic(logic: FilterLogic): void;
|
|
51
|
+
/**
|
|
52
|
+
* Add a new filter rule
|
|
53
|
+
*/
|
|
54
|
+
addRule(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Add a new nested group
|
|
57
|
+
*/
|
|
58
|
+
addGroup(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Handle rule change at specified index
|
|
61
|
+
*/
|
|
62
|
+
onRuleChange(index: number, updatedRule: FilterDescriptor): void;
|
|
63
|
+
/**
|
|
64
|
+
* Handle nested group change at specified index
|
|
65
|
+
*/
|
|
66
|
+
onGroupChange(index: number, updatedGroup: CompositeFilterDescriptor): void;
|
|
67
|
+
/**
|
|
68
|
+
* Delete filter at specified index
|
|
69
|
+
*/
|
|
70
|
+
deleteFilter(index: number): void;
|
|
71
|
+
/**
|
|
72
|
+
* Delete this group (only for nested groups)
|
|
73
|
+
*/
|
|
74
|
+
onDelete(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a filter is a composite (group) filter
|
|
77
|
+
*/
|
|
78
|
+
isGroup(filter: FilterDescriptor | CompositeFilterDescriptor): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Type guard cast to FilterDescriptor
|
|
81
|
+
*/
|
|
82
|
+
asRule(filter: FilterDescriptor | CompositeFilterDescriptor): FilterDescriptor;
|
|
83
|
+
/**
|
|
84
|
+
* Type guard cast to CompositeFilterDescriptor
|
|
85
|
+
*/
|
|
86
|
+
asGroup(filter: FilterDescriptor | CompositeFilterDescriptor): CompositeFilterDescriptor;
|
|
87
|
+
/**
|
|
88
|
+
* Check if we can add more nested groups
|
|
89
|
+
*/
|
|
90
|
+
canAddGroup(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Emit the filter change event
|
|
93
|
+
*/
|
|
94
|
+
private emitChange;
|
|
95
|
+
/**
|
|
96
|
+
* Track by function for ngFor optimization
|
|
97
|
+
*/
|
|
98
|
+
trackByIndex(index: number): number;
|
|
99
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterGroupComponent, never>;
|
|
100
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterGroupComponent, "mj-filter-group", never, { "filter": { "alias": "filter"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "isRoot": { "alias": "isRoot"; "required": false; }; "depth": { "alias": "depth"; "required": false; }; "maxDepth": { "alias": "maxDepth"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "filterChange": "filterChange"; "delete": "delete"; }, never, never, false, never>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=filter-group.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-group.component.d.ts","sourceRoot":"","sources":["../../../src/lib/filter-group/filter-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AAClG,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,WAAW,EAGZ,MAAM,uBAAuB,CAAC;;AAE/B;;;;GAIG;AACH,qBAMa,oBAAqB,YAAW,MAAM;IACjD;;OAEG;IACM,MAAM,EAAG,yBAAyB,CAAC;IAE5C;;OAEG;IACM,MAAM,EAAE,eAAe,EAAE,CAAM;IAExC;;OAEG;IACM,MAAM,EAAE,OAAO,CAAS;IAEjC;;OAEG;IACM,KAAK,EAAE,MAAM,CAAK;IAE3B;;OAEG;IACM,QAAQ,EAAE,MAAM,CAAK;IAE9B;;OAEG;IACM,QAAQ,EAAE,OAAO,CAAS;IAEnC;;OAEG;IACO,YAAY,0CAAiD;IAEvE;;OAEG;IACO,MAAM,qBAA4B;IAE5C,QAAQ,IAAI,IAAI;IAOhB;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IASlC;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;OAEG;IACH,QAAQ,IAAI,IAAI;IAehB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAShE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,yBAAyB,GAAG,IAAI;IAS3E;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBjC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,gBAAgB;IAI9E;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,yBAAyB;IAIxF;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;yCA9LxB,oBAAoB;2CAApB,oBAAoB;CAiMhC"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { isCompositeFilter, createFilterRule } from '../types/filter.types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../filter-rule/filter-rule.component";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
function FilterGroupComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
8
|
+
i0.ɵɵelementStart(0, "button", 13);
|
|
9
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addGroup()); });
|
|
10
|
+
i0.ɵɵelement(1, "i", 14);
|
|
11
|
+
i0.ɵɵelementStart(2, "span");
|
|
12
|
+
i0.ɵɵtext(3, "Add Group");
|
|
13
|
+
i0.ɵɵelementEnd()();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
16
|
+
i0.ɵɵproperty("disabled", ctx_r1.disabled);
|
|
17
|
+
} }
|
|
18
|
+
function FilterGroupComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 15);
|
|
21
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Conditional_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDelete()); });
|
|
22
|
+
i0.ɵɵelement(1, "i", 16);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
25
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
26
|
+
i0.ɵɵproperty("disabled", ctx_r1.disabled);
|
|
27
|
+
} }
|
|
28
|
+
function FilterGroupComponent_For_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
30
|
+
i0.ɵɵelement(1, "span", 20);
|
|
31
|
+
i0.ɵɵelementStart(2, "span", 21);
|
|
32
|
+
i0.ɵɵtext(3);
|
|
33
|
+
i0.ɵɵpipe(4, "uppercase");
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
i0.ɵɵelement(5, "span", 20);
|
|
36
|
+
i0.ɵɵelementEnd();
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
39
|
+
i0.ɵɵadvance(3);
|
|
40
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, ctx_r1.filter.logic));
|
|
41
|
+
} }
|
|
42
|
+
function FilterGroupComponent_For_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
44
|
+
i0.ɵɵelementStart(0, "mj-filter-group", 22);
|
|
45
|
+
i0.ɵɵlistener("filterChange", function FilterGroupComponent_For_16_Conditional_2_Template_mj_filter_group_filterChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ɵ$index_37_r5 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onGroupChange(ɵ$index_37_r5, $event)); })("delete", function FilterGroupComponent_For_16_Conditional_2_Template_mj_filter_group_delete_0_listener() { i0.ɵɵrestoreView(_r4); const ɵ$index_37_r5 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deleteFilter(ɵ$index_37_r5)); });
|
|
46
|
+
i0.ɵɵelementEnd();
|
|
47
|
+
} if (rf & 2) {
|
|
48
|
+
const item_r6 = i0.ɵɵnextContext().$implicit;
|
|
49
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
50
|
+
i0.ɵɵproperty("filter", ctx_r1.asGroup(item_r6))("fields", ctx_r1.fields)("isRoot", false)("depth", ctx_r1.depth + 1)("maxDepth", ctx_r1.maxDepth)("disabled", ctx_r1.disabled);
|
|
51
|
+
} }
|
|
52
|
+
function FilterGroupComponent_For_16_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
54
|
+
i0.ɵɵelementStart(0, "mj-filter-rule", 23);
|
|
55
|
+
i0.ɵɵlistener("filterChange", function FilterGroupComponent_For_16_Conditional_3_Template_mj_filter_rule_filterChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ɵ$index_37_r5 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRuleChange(ɵ$index_37_r5, $event)); })("delete", function FilterGroupComponent_For_16_Conditional_3_Template_mj_filter_rule_delete_0_listener() { i0.ɵɵrestoreView(_r7); const ɵ$index_37_r5 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deleteFilter(ɵ$index_37_r5)); });
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
} if (rf & 2) {
|
|
58
|
+
const item_r6 = i0.ɵɵnextContext().$implicit;
|
|
59
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
60
|
+
i0.ɵɵproperty("filter", ctx_r1.asRule(item_r6))("fields", ctx_r1.fields)("disabled", ctx_r1.disabled)("showDelete", ctx_r1.filter.filters.length > 1 || !ctx_r1.isRoot);
|
|
61
|
+
} }
|
|
62
|
+
function FilterGroupComponent_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
64
|
+
i0.ɵɵtemplate(1, FilterGroupComponent_For_16_Conditional_1_Template, 6, 3, "div", 17)(2, FilterGroupComponent_For_16_Conditional_2_Template, 1, 6, "mj-filter-group", 18)(3, FilterGroupComponent_For_16_Conditional_3_Template, 1, 4, "mj-filter-rule", 19);
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
} if (rf & 2) {
|
|
67
|
+
const item_r6 = ctx.$implicit;
|
|
68
|
+
const ɵ$index_37_r5 = ctx.$index;
|
|
69
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
70
|
+
i0.ɵɵadvance();
|
|
71
|
+
i0.ɵɵconditional(ɵ$index_37_r5 > 0 ? 1 : -1);
|
|
72
|
+
i0.ɵɵadvance();
|
|
73
|
+
i0.ɵɵconditional(ctx_r1.isGroup(item_r6) ? 2 : 3);
|
|
74
|
+
} }
|
|
75
|
+
function FilterGroupComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
77
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "p");
|
|
78
|
+
i0.ɵɵtext(2, "No filter conditions defined.");
|
|
79
|
+
i0.ɵɵelementEnd();
|
|
80
|
+
i0.ɵɵelementStart(3, "button", 24);
|
|
81
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addRule()); });
|
|
82
|
+
i0.ɵɵelement(4, "i", 7);
|
|
83
|
+
i0.ɵɵelementStart(5, "span");
|
|
84
|
+
i0.ɵɵtext(6, "Add your first condition");
|
|
85
|
+
i0.ɵɵelementEnd()()();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
88
|
+
i0.ɵɵadvance(3);
|
|
89
|
+
i0.ɵɵproperty("disabled", ctx_r1.disabled);
|
|
90
|
+
} }
|
|
91
|
+
/**
|
|
92
|
+
* FilterGroupComponent - A group of filter rules with AND/OR logic
|
|
93
|
+
*
|
|
94
|
+
* Supports nested groups for complex filter expressions.
|
|
95
|
+
*/
|
|
96
|
+
export class FilterGroupComponent {
|
|
97
|
+
/**
|
|
98
|
+
* The composite filter descriptor for this group
|
|
99
|
+
*/
|
|
100
|
+
filter;
|
|
101
|
+
/**
|
|
102
|
+
* Available fields to filter on
|
|
103
|
+
*/
|
|
104
|
+
fields = [];
|
|
105
|
+
/**
|
|
106
|
+
* Whether this is the root group (affects delete button visibility)
|
|
107
|
+
*/
|
|
108
|
+
isRoot = false;
|
|
109
|
+
/**
|
|
110
|
+
* Nesting depth (for visual indication)
|
|
111
|
+
*/
|
|
112
|
+
depth = 0;
|
|
113
|
+
/**
|
|
114
|
+
* Maximum nesting depth allowed
|
|
115
|
+
*/
|
|
116
|
+
maxDepth = 3;
|
|
117
|
+
/**
|
|
118
|
+
* Whether the component is disabled
|
|
119
|
+
*/
|
|
120
|
+
disabled = false;
|
|
121
|
+
/**
|
|
122
|
+
* Emitted when the filter changes
|
|
123
|
+
*/
|
|
124
|
+
filterChange = new EventEmitter();
|
|
125
|
+
/**
|
|
126
|
+
* Emitted when the delete button is clicked (for nested groups)
|
|
127
|
+
*/
|
|
128
|
+
delete = new EventEmitter();
|
|
129
|
+
ngOnInit() {
|
|
130
|
+
// Ensure filter has at least one rule
|
|
131
|
+
if (!this.filter.filters || this.filter.filters.length === 0) {
|
|
132
|
+
this.addRule();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Toggle the logic between AND and OR
|
|
137
|
+
*/
|
|
138
|
+
toggleLogic() {
|
|
139
|
+
const newLogic = this.filter.logic === 'and' ? 'or' : 'and';
|
|
140
|
+
this.emitChange({
|
|
141
|
+
...this.filter,
|
|
142
|
+
logic: newLogic
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Set specific logic
|
|
147
|
+
*/
|
|
148
|
+
setLogic(logic) {
|
|
149
|
+
if (this.filter.logic !== logic) {
|
|
150
|
+
this.emitChange({
|
|
151
|
+
...this.filter,
|
|
152
|
+
logic
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Add a new filter rule
|
|
158
|
+
*/
|
|
159
|
+
addRule() {
|
|
160
|
+
const defaultField = this.fields[0]?.name || '';
|
|
161
|
+
const newRule = createFilterRule(defaultField);
|
|
162
|
+
this.emitChange({
|
|
163
|
+
...this.filter,
|
|
164
|
+
filters: [...(this.filter.filters || []), newRule]
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Add a new nested group
|
|
169
|
+
*/
|
|
170
|
+
addGroup() {
|
|
171
|
+
if (this.depth >= this.maxDepth)
|
|
172
|
+
return;
|
|
173
|
+
const defaultField = this.fields[0]?.name || '';
|
|
174
|
+
const newGroup = {
|
|
175
|
+
logic: 'and',
|
|
176
|
+
filters: [createFilterRule(defaultField)]
|
|
177
|
+
};
|
|
178
|
+
this.emitChange({
|
|
179
|
+
...this.filter,
|
|
180
|
+
filters: [...(this.filter.filters || []), newGroup]
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Handle rule change at specified index
|
|
185
|
+
*/
|
|
186
|
+
onRuleChange(index, updatedRule) {
|
|
187
|
+
const filters = [...(this.filter.filters || [])];
|
|
188
|
+
filters[index] = updatedRule;
|
|
189
|
+
this.emitChange({
|
|
190
|
+
...this.filter,
|
|
191
|
+
filters
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Handle nested group change at specified index
|
|
196
|
+
*/
|
|
197
|
+
onGroupChange(index, updatedGroup) {
|
|
198
|
+
const filters = [...(this.filter.filters || [])];
|
|
199
|
+
filters[index] = updatedGroup;
|
|
200
|
+
this.emitChange({
|
|
201
|
+
...this.filter,
|
|
202
|
+
filters
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Delete filter at specified index
|
|
207
|
+
*/
|
|
208
|
+
deleteFilter(index) {
|
|
209
|
+
const filters = [...(this.filter.filters || [])];
|
|
210
|
+
filters.splice(index, 1);
|
|
211
|
+
// Ensure at least one rule remains if this is the root
|
|
212
|
+
if (this.isRoot && filters.length === 0) {
|
|
213
|
+
const defaultField = this.fields[0]?.name || '';
|
|
214
|
+
filters.push(createFilterRule(defaultField));
|
|
215
|
+
}
|
|
216
|
+
this.emitChange({
|
|
217
|
+
...this.filter,
|
|
218
|
+
filters
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Delete this group (only for nested groups)
|
|
223
|
+
*/
|
|
224
|
+
onDelete() {
|
|
225
|
+
this.delete.emit();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Check if a filter is a composite (group) filter
|
|
229
|
+
*/
|
|
230
|
+
isGroup(filter) {
|
|
231
|
+
return isCompositeFilter(filter);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Type guard cast to FilterDescriptor
|
|
235
|
+
*/
|
|
236
|
+
asRule(filter) {
|
|
237
|
+
return filter;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Type guard cast to CompositeFilterDescriptor
|
|
241
|
+
*/
|
|
242
|
+
asGroup(filter) {
|
|
243
|
+
return filter;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Check if we can add more nested groups
|
|
247
|
+
*/
|
|
248
|
+
canAddGroup() {
|
|
249
|
+
return this.depth < this.maxDepth;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Emit the filter change event
|
|
253
|
+
*/
|
|
254
|
+
emitChange(filter) {
|
|
255
|
+
this.filterChange.emit(filter);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Track by function for ngFor optimization
|
|
259
|
+
*/
|
|
260
|
+
trackByIndex(index) {
|
|
261
|
+
return index;
|
|
262
|
+
}
|
|
263
|
+
static ɵfac = function FilterGroupComponent_Factory(t) { return new (t || FilterGroupComponent)(); };
|
|
264
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FilterGroupComponent, selectors: [["mj-filter-group"]], inputs: { filter: "filter", fields: "fields", isRoot: "isRoot", depth: "depth", maxDepth: "maxDepth", disabled: "disabled" }, outputs: { filterChange: "filterChange", delete: "delete" }, decls: 18, vars: 15, consts: [[1, "filter-group"], [1, "group-header"], [1, "logic-toggle"], ["type", "button", "title", "Match ALL conditions", 1, "logic-btn", 3, "click", "disabled"], ["type", "button", "title", "Match ANY condition", 1, "logic-btn", 3, "click", "disabled"], [1, "group-actions"], ["type", "button", "title", "Add filter condition", 1, "add-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], ["type", "button", "title", "Add nested group", 1, "add-btn", "add-group", 3, "disabled"], ["type", "button", "title", "Remove this group", 1, "delete-group-btn", 3, "disabled"], [1, "filters-container"], [1, "filter-item"], [1, "empty-state"], ["type", "button", "title", "Add nested group", 1, "add-btn", "add-group", 3, "click", "disabled"], [1, "fa-solid", "fa-layer-group"], ["type", "button", "title", "Remove this group", 1, "delete-group-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-trash"], [1, "logic-connector"], [3, "filter", "fields", "isRoot", "depth", "maxDepth", "disabled"], [3, "filter", "fields", "disabled", "showDelete"], [1, "connector-line"], [1, "connector-label"], [3, "filterChange", "delete", "filter", "fields", "isRoot", "depth", "maxDepth", "disabled"], [3, "filterChange", "delete", "filter", "fields", "disabled", "showDelete"], ["type", "button", 1, "add-btn", "primary", 3, "click", "disabled"]], template: function FilterGroupComponent_Template(rf, ctx) { if (rf & 1) {
|
|
265
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "button", 3);
|
|
266
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Template_button_click_3_listener() { return ctx.setLogic("and"); });
|
|
267
|
+
i0.ɵɵtext(4, " AND ");
|
|
268
|
+
i0.ɵɵelementEnd();
|
|
269
|
+
i0.ɵɵelementStart(5, "button", 4);
|
|
270
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Template_button_click_5_listener() { return ctx.setLogic("or"); });
|
|
271
|
+
i0.ɵɵtext(6, " OR ");
|
|
272
|
+
i0.ɵɵelementEnd()();
|
|
273
|
+
i0.ɵɵelementStart(7, "div", 5)(8, "button", 6);
|
|
274
|
+
i0.ɵɵlistener("click", function FilterGroupComponent_Template_button_click_8_listener() { return ctx.addRule(); });
|
|
275
|
+
i0.ɵɵelement(9, "i", 7);
|
|
276
|
+
i0.ɵɵelementStart(10, "span");
|
|
277
|
+
i0.ɵɵtext(11, "Add Condition");
|
|
278
|
+
i0.ɵɵelementEnd()();
|
|
279
|
+
i0.ɵɵtemplate(12, FilterGroupComponent_Conditional_12_Template, 4, 1, "button", 8)(13, FilterGroupComponent_Conditional_13_Template, 2, 1, "button", 9);
|
|
280
|
+
i0.ɵɵelementEnd()();
|
|
281
|
+
i0.ɵɵelementStart(14, "div", 10);
|
|
282
|
+
i0.ɵɵrepeaterCreate(15, FilterGroupComponent_For_16_Template, 4, 2, "div", 11, ctx.trackByIndex, true);
|
|
283
|
+
i0.ɵɵelementEnd();
|
|
284
|
+
i0.ɵɵtemplate(17, FilterGroupComponent_Conditional_17_Template, 7, 1, "div", 12);
|
|
285
|
+
i0.ɵɵelementEnd();
|
|
286
|
+
} if (rf & 2) {
|
|
287
|
+
i0.ɵɵclassProp("root", ctx.isRoot)("disabled", ctx.disabled);
|
|
288
|
+
i0.ɵɵattribute("data-depth", ctx.depth);
|
|
289
|
+
i0.ɵɵadvance(3);
|
|
290
|
+
i0.ɵɵclassProp("active", ctx.filter.logic === "and");
|
|
291
|
+
i0.ɵɵproperty("disabled", ctx.disabled);
|
|
292
|
+
i0.ɵɵadvance(2);
|
|
293
|
+
i0.ɵɵclassProp("active", ctx.filter.logic === "or");
|
|
294
|
+
i0.ɵɵproperty("disabled", ctx.disabled);
|
|
295
|
+
i0.ɵɵadvance(3);
|
|
296
|
+
i0.ɵɵproperty("disabled", ctx.disabled);
|
|
297
|
+
i0.ɵɵadvance(4);
|
|
298
|
+
i0.ɵɵconditional(ctx.canAddGroup() ? 12 : -1);
|
|
299
|
+
i0.ɵɵadvance();
|
|
300
|
+
i0.ɵɵconditional(!ctx.isRoot ? 13 : -1);
|
|
301
|
+
i0.ɵɵadvance(2);
|
|
302
|
+
i0.ɵɵrepeater(ctx.filter.filters);
|
|
303
|
+
i0.ɵɵadvance(2);
|
|
304
|
+
i0.ɵɵconditional(!ctx.filter.filters || ctx.filter.filters.length === 0 ? 17 : -1);
|
|
305
|
+
} }, dependencies: [FilterGroupComponent, i1.FilterRuleComponent, i2.UpperCasePipe], styles: ["/* Scoped to mj-filter-group to prevent style leakage with ViewEncapsulation.None */\nmj-filter-group .filter-group {\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 12px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n\nmj-filter-group .filter-group.root {\n background: transparent;\n border: none;\n padding: 0;\n}\n\nmj-filter-group .filter-group:not(.root) {\n margin-left: 16px;\n border-left: 3px solid #1976d2;\n}\n\nmj-filter-group .filter-group[data-depth=\"1\"]:not(.root) {\n border-left-color: #7b1fa2;\n}\n\nmj-filter-group .filter-group[data-depth=\"2\"]:not(.root) {\n border-left-color: #388e3c;\n}\n\nmj-filter-group .filter-group[data-depth=\"3\"]:not(.root) {\n border-left-color: #f57c00;\n}\n\nmj-filter-group .filter-group.disabled {\n opacity: 0.6;\n pointer-events: none;\n}\n\n/* Group Header */\nmj-filter-group .group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n/* Logic Toggle */\nmj-filter-group .logic-toggle {\n display: flex;\n background: #f4f4f5;\n border-radius: 8px;\n padding: 3px;\n border: 1px solid #e5e7eb;\n}\n\nmj-filter-group .logic-btn {\n padding: 8px 20px;\n border: none;\n background: transparent;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.5px;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #71717a;\n}\n\nmj-filter-group .logic-btn:hover:not(:disabled) {\n color: #3f3f46;\n background: rgba(255, 255, 255, 0.5);\n}\n\nmj-filter-group .logic-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\nmj-filter-group .logic-btn.active {\n background: white;\n color: #3b82f6;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n font-weight: 700;\n}\n\n/* Group Actions */\nmj-filter-group .group-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\nmj-filter-group .add-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n border: 1px dashed #d4d4d8;\n background: white;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #52525b;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\nmj-filter-group .add-btn:hover:not(:disabled) {\n border-color: #3b82f6;\n color: #3b82f6;\n background: #eff6ff;\n}\n\nmj-filter-group .add-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\nmj-filter-group .add-btn.primary {\n border-style: solid;\n border-color: #3b82f6;\n background: #3b82f6;\n color: white;\n}\n\nmj-filter-group .add-btn.primary:hover:not(:disabled) {\n background: #2563eb;\n border-color: #2563eb;\n}\n\nmj-filter-group .add-btn i {\n font-size: 12px;\n}\n\nmj-filter-group .add-group {\n border-color: #a855f7;\n color: #a855f7;\n}\n\nmj-filter-group .add-group:hover:not(:disabled) {\n border-color: #9333ea;\n color: #9333ea;\n background: #faf5ff;\n}\n\nmj-filter-group .delete-group-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n border-radius: 8px;\n color: #a1a1aa;\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 14px;\n}\n\nmj-filter-group .delete-group-btn:hover:not(:disabled) {\n background: #fef2f2;\n color: #ef4444;\n}\n\nmj-filter-group .delete-group-btn:disabled {\n cursor: not-allowed;\n opacity: 0.3;\n}\n\n/* Filters Container */\nmj-filter-group .filters-container {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\nmj-filter-group .filter-item {\n display: flex;\n flex-direction: column;\n}\n\n/* Logic Connector */\nmj-filter-group .logic-connector {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n margin: 4px 0;\n}\n\nmj-filter-group .connector-line {\n flex: 1;\n height: 1px;\n background: #e0e0e0;\n}\n\nmj-filter-group .connector-label {\n font-size: 11px;\n font-weight: 600;\n color: #999;\n letter-spacing: 0.5px;\n}\n\n/* Empty State */\nmj-filter-group .empty-state {\n text-align: center;\n padding: 24px;\n color: #999;\n}\n\nmj-filter-group .empty-state p {\n margin: 0 0 12px 0;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n mj-filter-group .group-header {\n flex-direction: column;\n align-items: stretch;\n }\n\n mj-filter-group .logic-toggle {\n justify-content: center;\n }\n\n mj-filter-group .group-actions {\n justify-content: center;\n flex-wrap: wrap;\n }\n\n mj-filter-group .filter-group:not(.root) {\n margin-left: 8px;\n }\n}\n"], encapsulation: 2 });
|
|
306
|
+
}
|
|
307
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterGroupComponent, [{
|
|
308
|
+
type: Component,
|
|
309
|
+
args: [{ selector: 'mj-filter-group', encapsulation: ViewEncapsulation.None, template: "<div class=\"filter-group\" [class.root]=\"isRoot\" [class.disabled]=\"disabled\" [attr.data-depth]=\"depth\">\n <!-- Group Header -->\n <div class=\"group-header\">\n <div class=\"logic-toggle\">\n <button\n type=\"button\"\n class=\"logic-btn\"\n [class.active]=\"filter.logic === 'and'\"\n (click)=\"setLogic('and')\"\n [disabled]=\"disabled\"\n title=\"Match ALL conditions\">\n AND\n </button>\n <button\n type=\"button\"\n class=\"logic-btn\"\n [class.active]=\"filter.logic === 'or'\"\n (click)=\"setLogic('or')\"\n [disabled]=\"disabled\"\n title=\"Match ANY condition\">\n OR\n </button>\n </div>\n\n <div class=\"group-actions\">\n <button\n type=\"button\"\n class=\"add-btn\"\n (click)=\"addRule()\"\n [disabled]=\"disabled\"\n title=\"Add filter condition\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Add Condition</span>\n </button>\n @if (canAddGroup()) {\n <button\n type=\"button\"\n class=\"add-btn add-group\"\n (click)=\"addGroup()\"\n [disabled]=\"disabled\"\n title=\"Add nested group\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Add Group</span>\n </button>\n }\n @if (!isRoot) {\n <button\n type=\"button\"\n class=\"delete-group-btn\"\n (click)=\"onDelete()\"\n [disabled]=\"disabled\"\n title=\"Remove this group\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n\n <!-- Filters Container -->\n <div class=\"filters-container\">\n @for (item of filter.filters; track trackByIndex($index); let i = $index; let isLast = $last) {\n <div class=\"filter-item\">\n <!-- Logic connector between items -->\n @if (i > 0) {\n <div class=\"logic-connector\">\n <span class=\"connector-line\"></span>\n <span class=\"connector-label\">{{ filter.logic | uppercase }}</span>\n <span class=\"connector-line\"></span>\n </div>\n }\n\n @if (isGroup(item)) {\n <!-- Nested Group -->\n <mj-filter-group\n [filter]=\"asGroup(item)\"\n [fields]=\"fields\"\n [isRoot]=\"false\"\n [depth]=\"depth + 1\"\n [maxDepth]=\"maxDepth\"\n [disabled]=\"disabled\"\n (filterChange)=\"onGroupChange(i, $event)\"\n (delete)=\"deleteFilter(i)\">\n </mj-filter-group>\n } @else {\n <!-- Simple Rule -->\n <mj-filter-rule\n [filter]=\"asRule(item)\"\n [fields]=\"fields\"\n [disabled]=\"disabled\"\n [showDelete]=\"filter.filters.length > 1 || !isRoot\"\n (filterChange)=\"onRuleChange(i, $event)\"\n (delete)=\"deleteFilter(i)\">\n </mj-filter-rule>\n }\n </div>\n }\n </div>\n\n <!-- Empty State -->\n @if (!filter.filters || filter.filters.length === 0) {\n <div class=\"empty-state\">\n <p>No filter conditions defined.</p>\n <button\n type=\"button\"\n class=\"add-btn primary\"\n (click)=\"addRule()\"\n [disabled]=\"disabled\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Add your first condition</span>\n </button>\n </div>\n }\n</div>\n", styles: ["/* Scoped to mj-filter-group to prevent style leakage with ViewEncapsulation.None */\nmj-filter-group .filter-group {\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 12px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n\nmj-filter-group .filter-group.root {\n background: transparent;\n border: none;\n padding: 0;\n}\n\nmj-filter-group .filter-group:not(.root) {\n margin-left: 16px;\n border-left: 3px solid #1976d2;\n}\n\nmj-filter-group .filter-group[data-depth=\"1\"]:not(.root) {\n border-left-color: #7b1fa2;\n}\n\nmj-filter-group .filter-group[data-depth=\"2\"]:not(.root) {\n border-left-color: #388e3c;\n}\n\nmj-filter-group .filter-group[data-depth=\"3\"]:not(.root) {\n border-left-color: #f57c00;\n}\n\nmj-filter-group .filter-group.disabled {\n opacity: 0.6;\n pointer-events: none;\n}\n\n/* Group Header */\nmj-filter-group .group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n/* Logic Toggle */\nmj-filter-group .logic-toggle {\n display: flex;\n background: #f4f4f5;\n border-radius: 8px;\n padding: 3px;\n border: 1px solid #e5e7eb;\n}\n\nmj-filter-group .logic-btn {\n padding: 8px 20px;\n border: none;\n background: transparent;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.5px;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #71717a;\n}\n\nmj-filter-group .logic-btn:hover:not(:disabled) {\n color: #3f3f46;\n background: rgba(255, 255, 255, 0.5);\n}\n\nmj-filter-group .logic-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\nmj-filter-group .logic-btn.active {\n background: white;\n color: #3b82f6;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n font-weight: 700;\n}\n\n/* Group Actions */\nmj-filter-group .group-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\nmj-filter-group .add-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n border: 1px dashed #d4d4d8;\n background: white;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #52525b;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\nmj-filter-group .add-btn:hover:not(:disabled) {\n border-color: #3b82f6;\n color: #3b82f6;\n background: #eff6ff;\n}\n\nmj-filter-group .add-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\nmj-filter-group .add-btn.primary {\n border-style: solid;\n border-color: #3b82f6;\n background: #3b82f6;\n color: white;\n}\n\nmj-filter-group .add-btn.primary:hover:not(:disabled) {\n background: #2563eb;\n border-color: #2563eb;\n}\n\nmj-filter-group .add-btn i {\n font-size: 12px;\n}\n\nmj-filter-group .add-group {\n border-color: #a855f7;\n color: #a855f7;\n}\n\nmj-filter-group .add-group:hover:not(:disabled) {\n border-color: #9333ea;\n color: #9333ea;\n background: #faf5ff;\n}\n\nmj-filter-group .delete-group-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n border-radius: 8px;\n color: #a1a1aa;\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 14px;\n}\n\nmj-filter-group .delete-group-btn:hover:not(:disabled) {\n background: #fef2f2;\n color: #ef4444;\n}\n\nmj-filter-group .delete-group-btn:disabled {\n cursor: not-allowed;\n opacity: 0.3;\n}\n\n/* Filters Container */\nmj-filter-group .filters-container {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\nmj-filter-group .filter-item {\n display: flex;\n flex-direction: column;\n}\n\n/* Logic Connector */\nmj-filter-group .logic-connector {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n margin: 4px 0;\n}\n\nmj-filter-group .connector-line {\n flex: 1;\n height: 1px;\n background: #e0e0e0;\n}\n\nmj-filter-group .connector-label {\n font-size: 11px;\n font-weight: 600;\n color: #999;\n letter-spacing: 0.5px;\n}\n\n/* Empty State */\nmj-filter-group .empty-state {\n text-align: center;\n padding: 24px;\n color: #999;\n}\n\nmj-filter-group .empty-state p {\n margin: 0 0 12px 0;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n mj-filter-group .group-header {\n flex-direction: column;\n align-items: stretch;\n }\n\n mj-filter-group .logic-toggle {\n justify-content: center;\n }\n\n mj-filter-group .group-actions {\n justify-content: center;\n flex-wrap: wrap;\n }\n\n mj-filter-group .filter-group:not(.root) {\n margin-left: 8px;\n }\n}\n"] }]
|
|
310
|
+
}], null, { filter: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], fields: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], isRoot: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], depth: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], maxDepth: [{
|
|
319
|
+
type: Input
|
|
320
|
+
}], disabled: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], filterChange: [{
|
|
323
|
+
type: Output
|
|
324
|
+
}], delete: [{
|
|
325
|
+
type: Output
|
|
326
|
+
}] }); })();
|
|
327
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterGroupComponent, { className: "FilterGroupComponent" }); })();
|
|
328
|
+
//# sourceMappingURL=filter-group.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-group.component.js","sourceRoot":"","sources":["../../../src/lib/filter-group/filter-group.component.ts","../../../src/lib/filter-group/filter-group.component.html"],"names":[],"mappings":"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"}
|