@recursyve/nice-data-filter-kit 15.2.0 → 15.3.1
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/esm2020/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.mjs +13 -3
- package/esm2020/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.mjs +2 -4
- package/esm2020/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/directives/mat-paginator.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/directives/mat-sort.mjs +6 -3
- package/esm2020/lib/components/nice-filter-view/models/order-options.model.mjs +2 -0
- package/esm2020/lib/components/nice-filter-view/nice-filter-view.component.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.service.mjs +1 -1
- package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.store.mjs +2 -1
- package/fesm2015/recursyve-nice-data-filter-kit.mjs +86 -72
- package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +1 -1
- package/fesm2020/recursyve-nice-data-filter-kit.mjs +96 -83
- package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +1 -1
- package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.d.ts +6 -3
- package/lib/components/nice-filter-view/models/order-options.model.d.ts +7 -0
- package/lib/components/nice-filter-view/store/nice-filter-view.service.d.ts +1 -1
- package/lib/components/nice-filter-view/store/nice-filter-view.store.d.ts +3 -1
- package/package.json +1 -1
|
@@ -2770,6 +2770,7 @@ const initialValue = {
|
|
|
2770
2770
|
},
|
|
2771
2771
|
baseRules: [],
|
|
2772
2772
|
queryParams: null,
|
|
2773
|
+
orderColumns: null,
|
|
2773
2774
|
resetResult: false
|
|
2774
2775
|
};
|
|
2775
2776
|
class NiceFilterViewStore extends EntityStore {
|
|
@@ -3293,83 +3294,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
3293
3294
|
args: [NiceFilterService]
|
|
3294
3295
|
}] }]; }, propDecorators: { resetResult: [] } });
|
|
3295
3296
|
|
|
3296
|
-
class AdvancedFiltersUtils {
|
|
3297
|
-
static isSingleInput(filterOperator) {
|
|
3298
|
-
if (!filterOperator) {
|
|
3299
|
-
return false;
|
|
3300
|
-
}
|
|
3301
|
-
return AdvancedFiltersUtils.singleInputOperators.includes(filterOperator);
|
|
3302
|
-
}
|
|
3303
|
-
static isDoubleInput(filterOperator) {
|
|
3304
|
-
if (!filterOperator) {
|
|
3305
|
-
return false;
|
|
3306
|
-
}
|
|
3307
|
-
return AdvancedFiltersUtils.doubleInputOperators.includes(filterOperator);
|
|
3308
|
-
}
|
|
3309
|
-
static isNoInput(filterOperator) {
|
|
3310
|
-
if (!filterOperator) {
|
|
3311
|
-
return false;
|
|
3312
|
-
}
|
|
3313
|
-
return AdvancedFiltersUtils.noInputOperators.includes(filterOperator);
|
|
3314
|
-
}
|
|
3315
|
-
static createRule(config, operator) {
|
|
3316
|
-
const base = {
|
|
3317
|
-
id: config.id,
|
|
3318
|
-
operation: operator || config.operators[0].id
|
|
3319
|
-
};
|
|
3320
|
-
switch (config.type) {
|
|
3321
|
-
case FilterType.Text:
|
|
3322
|
-
return {
|
|
3323
|
-
...base,
|
|
3324
|
-
value: AdvancedFiltersUtils.isDoubleInput(operator) ? ["", ""] : ""
|
|
3325
|
-
};
|
|
3326
|
-
case FilterType.Number:
|
|
3327
|
-
case FilterType.Select:
|
|
3328
|
-
return {
|
|
3329
|
-
...base,
|
|
3330
|
-
value: AdvancedFiltersUtils.isDoubleInput(operator) ? [null, null] : null
|
|
3331
|
-
};
|
|
3332
|
-
case FilterType.Date:
|
|
3333
|
-
return {
|
|
3334
|
-
...base,
|
|
3335
|
-
value: AdvancedFiltersUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()
|
|
3336
|
-
};
|
|
3337
|
-
case FilterType.Radio:
|
|
3338
|
-
return {
|
|
3339
|
-
...base,
|
|
3340
|
-
value: AdvancedFiltersUtils.isDoubleInput(operator)
|
|
3341
|
-
? [config.options?.[0].key, config.options?.[0].key]
|
|
3342
|
-
: config.options?.[0].key
|
|
3343
|
-
};
|
|
3344
|
-
}
|
|
3345
|
-
}
|
|
3346
|
-
}
|
|
3347
|
-
AdvancedFiltersUtils.noInputOperators = [
|
|
3348
|
-
FilterOperatorTypes.IsEmpty,
|
|
3349
|
-
FilterOperatorTypes.IsNotEmpty,
|
|
3350
|
-
FilterOperatorTypes.IsNull,
|
|
3351
|
-
FilterOperatorTypes.IsNotNull,
|
|
3352
|
-
FilterOperatorTypes.None
|
|
3353
|
-
];
|
|
3354
|
-
AdvancedFiltersUtils.singleInputOperators = [
|
|
3355
|
-
FilterOperatorTypes.Equal,
|
|
3356
|
-
FilterOperatorTypes.NotEqual,
|
|
3357
|
-
FilterOperatorTypes.Less,
|
|
3358
|
-
FilterOperatorTypes.LessOrEqual,
|
|
3359
|
-
FilterOperatorTypes.Greater,
|
|
3360
|
-
FilterOperatorTypes.GreaterOrEqual,
|
|
3361
|
-
FilterOperatorTypes.BeginsWith,
|
|
3362
|
-
FilterOperatorTypes.NotBeginsWith,
|
|
3363
|
-
FilterOperatorTypes.EndsWith,
|
|
3364
|
-
FilterOperatorTypes.NotEndsWith,
|
|
3365
|
-
FilterOperatorTypes.Contains,
|
|
3366
|
-
FilterOperatorTypes.NotContains
|
|
3367
|
-
];
|
|
3368
|
-
AdvancedFiltersUtils.doubleInputOperators = [
|
|
3369
|
-
FilterOperatorTypes.Between,
|
|
3370
|
-
FilterOperatorTypes.NotBetween
|
|
3371
|
-
];
|
|
3372
|
-
|
|
3373
3297
|
const ADVANCED_FILTER_ICONS = new InjectionToken("advanced_filter_icons");
|
|
3374
3298
|
|
|
3375
3299
|
class NiceFilterGroupIconPipe {
|
|
@@ -3522,9 +3446,8 @@ class NiceAdvancedFiltersButtonComponent {
|
|
|
3522
3446
|
this.service.updateSubState("showAdvancedFilters", !this.query.getSubState("showAdvancedFilters"));
|
|
3523
3447
|
}
|
|
3524
3448
|
onSelectedFilter(filter) {
|
|
3525
|
-
const rule = AdvancedFiltersUtils.createRule(filter);
|
|
3526
|
-
this.service.setRules([{ condition: "and", rules: [rule] }]);
|
|
3527
3449
|
this.service.updateSubState("showAdvancedFilters", true);
|
|
3450
|
+
this.service.updateSubState("selectedFilter", filter);
|
|
3528
3451
|
}
|
|
3529
3452
|
}
|
|
3530
3453
|
NiceAdvancedFiltersButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAdvancedFiltersButtonComponent, deps: [{ token: ADVANCED_FILTER_ICONS, optional: true }, { token: NiceFilterViewQuery }, { token: NiceFilterViewService }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -3682,6 +3605,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
3682
3605
|
type: Injectable
|
|
3683
3606
|
}], ctorParameters: function () { return [{ type: NiceFilterService }]; } });
|
|
3684
3607
|
|
|
3608
|
+
class AdvancedFiltersUtils {
|
|
3609
|
+
static isSingleInput(filterOperator) {
|
|
3610
|
+
if (!filterOperator) {
|
|
3611
|
+
return false;
|
|
3612
|
+
}
|
|
3613
|
+
return AdvancedFiltersUtils.singleInputOperators.includes(filterOperator);
|
|
3614
|
+
}
|
|
3615
|
+
static isDoubleInput(filterOperator) {
|
|
3616
|
+
if (!filterOperator) {
|
|
3617
|
+
return false;
|
|
3618
|
+
}
|
|
3619
|
+
return AdvancedFiltersUtils.doubleInputOperators.includes(filterOperator);
|
|
3620
|
+
}
|
|
3621
|
+
static isNoInput(filterOperator) {
|
|
3622
|
+
if (!filterOperator) {
|
|
3623
|
+
return false;
|
|
3624
|
+
}
|
|
3625
|
+
return AdvancedFiltersUtils.noInputOperators.includes(filterOperator);
|
|
3626
|
+
}
|
|
3627
|
+
static createRule(config, operator) {
|
|
3628
|
+
const base = {
|
|
3629
|
+
id: config.id,
|
|
3630
|
+
operation: operator || config.operators[0].id
|
|
3631
|
+
};
|
|
3632
|
+
switch (config.type) {
|
|
3633
|
+
case FilterType.Text:
|
|
3634
|
+
return {
|
|
3635
|
+
...base,
|
|
3636
|
+
value: AdvancedFiltersUtils.isDoubleInput(operator) ? ["", ""] : ""
|
|
3637
|
+
};
|
|
3638
|
+
case FilterType.Number:
|
|
3639
|
+
case FilterType.Select:
|
|
3640
|
+
return {
|
|
3641
|
+
...base,
|
|
3642
|
+
value: AdvancedFiltersUtils.isDoubleInput(operator) ? [null, null] : null
|
|
3643
|
+
};
|
|
3644
|
+
case FilterType.Date:
|
|
3645
|
+
return {
|
|
3646
|
+
...base,
|
|
3647
|
+
value: AdvancedFiltersUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()
|
|
3648
|
+
};
|
|
3649
|
+
case FilterType.Radio:
|
|
3650
|
+
return {
|
|
3651
|
+
...base,
|
|
3652
|
+
value: AdvancedFiltersUtils.isDoubleInput(operator)
|
|
3653
|
+
? [config.options?.[0].key, config.options?.[0].key]
|
|
3654
|
+
: config.options?.[0].key
|
|
3655
|
+
};
|
|
3656
|
+
}
|
|
3657
|
+
}
|
|
3658
|
+
}
|
|
3659
|
+
AdvancedFiltersUtils.noInputOperators = [
|
|
3660
|
+
FilterOperatorTypes.IsEmpty,
|
|
3661
|
+
FilterOperatorTypes.IsNotEmpty,
|
|
3662
|
+
FilterOperatorTypes.IsNull,
|
|
3663
|
+
FilterOperatorTypes.IsNotNull,
|
|
3664
|
+
FilterOperatorTypes.None
|
|
3665
|
+
];
|
|
3666
|
+
AdvancedFiltersUtils.singleInputOperators = [
|
|
3667
|
+
FilterOperatorTypes.Equal,
|
|
3668
|
+
FilterOperatorTypes.NotEqual,
|
|
3669
|
+
FilterOperatorTypes.Less,
|
|
3670
|
+
FilterOperatorTypes.LessOrEqual,
|
|
3671
|
+
FilterOperatorTypes.Greater,
|
|
3672
|
+
FilterOperatorTypes.GreaterOrEqual,
|
|
3673
|
+
FilterOperatorTypes.BeginsWith,
|
|
3674
|
+
FilterOperatorTypes.NotBeginsWith,
|
|
3675
|
+
FilterOperatorTypes.EndsWith,
|
|
3676
|
+
FilterOperatorTypes.NotEndsWith,
|
|
3677
|
+
FilterOperatorTypes.Contains,
|
|
3678
|
+
FilterOperatorTypes.NotContains
|
|
3679
|
+
];
|
|
3680
|
+
AdvancedFiltersUtils.doubleInputOperators = [
|
|
3681
|
+
FilterOperatorTypes.Between,
|
|
3682
|
+
FilterOperatorTypes.NotBetween
|
|
3683
|
+
];
|
|
3684
|
+
|
|
3685
3685
|
class FilterComponent {
|
|
3686
3686
|
constructor() {
|
|
3687
3687
|
this.propagateChanges = (_) => { };
|
|
@@ -3914,10 +3914,17 @@ class NiceAdvancedFiltersComponent {
|
|
|
3914
3914
|
this.rules$ = this.rulesFormArray.valueChanges.pipe(startWith(this.rulesFormArray.value));
|
|
3915
3915
|
}
|
|
3916
3916
|
ngOnInit() {
|
|
3917
|
-
const { filterParameters } = this.query.getValue();
|
|
3917
|
+
const { filterParameters, subStates } = this.query.getValue();
|
|
3918
3918
|
if (filterParameters.rules?.length) {
|
|
3919
3919
|
this.formGroup.patchValue(new AdvancedFiltersForm(filterParameters.rules[0]));
|
|
3920
3920
|
}
|
|
3921
|
+
if (subStates.selectedFilter) {
|
|
3922
|
+
this.onClickAddRule(subStates.selectedFilter);
|
|
3923
|
+
return;
|
|
3924
|
+
}
|
|
3925
|
+
}
|
|
3926
|
+
ngOnDestroy() {
|
|
3927
|
+
this.removeEmptyRules({ reload: false });
|
|
3921
3928
|
}
|
|
3922
3929
|
onClickAddRule(filterConfigurationModel) {
|
|
3923
3930
|
this.rulesFormArray.push(new FilterForm(AdvancedFiltersUtils.createRule(filterConfigurationModel)));
|
|
@@ -3940,7 +3947,7 @@ class NiceAdvancedFiltersComponent {
|
|
|
3940
3947
|
this.service.resetResult(true);
|
|
3941
3948
|
this.service.filter();
|
|
3942
3949
|
}
|
|
3943
|
-
removeEmptyRules() {
|
|
3950
|
+
removeEmptyRules({ reload } = { reload: true }) {
|
|
3944
3951
|
if (this.rulesFormArray.length !== 1) {
|
|
3945
3952
|
return;
|
|
3946
3953
|
}
|
|
@@ -3958,6 +3965,9 @@ class NiceAdvancedFiltersComponent {
|
|
|
3958
3965
|
return;
|
|
3959
3966
|
}
|
|
3960
3967
|
this.service.setRules([]);
|
|
3968
|
+
if (!reload) {
|
|
3969
|
+
return;
|
|
3970
|
+
}
|
|
3961
3971
|
if (filterParameters.rules[0].rules[0].value) {
|
|
3962
3972
|
this.service.filter();
|
|
3963
3973
|
}
|
|
@@ -4810,6 +4820,8 @@ class NiceFilterMatSortSortingDirective extends NiceNestedFilterView {
|
|
|
4810
4820
|
this.sort.active = order.column;
|
|
4811
4821
|
});
|
|
4812
4822
|
this.sort.sortChange.pipe(takeUntil(this.unsubscribeAll$)).subscribe((sort) => {
|
|
4823
|
+
const { orderColumns } = this.filterViewQuery.getValue();
|
|
4824
|
+
const column = orderColumns?.[sort.active];
|
|
4813
4825
|
if (!sort.direction) {
|
|
4814
4826
|
this.filterViewService.patchParameters({
|
|
4815
4827
|
order: null
|
|
@@ -4818,8 +4830,9 @@ class NiceFilterMatSortSortingDirective extends NiceNestedFilterView {
|
|
|
4818
4830
|
else {
|
|
4819
4831
|
this.filterViewService.patchParameters({
|
|
4820
4832
|
order: {
|
|
4821
|
-
column: sort.active,
|
|
4822
|
-
direction: sort.direction
|
|
4833
|
+
column: column?.column ?? sort.active,
|
|
4834
|
+
direction: sort.direction,
|
|
4835
|
+
nullLast: column?.nullLast
|
|
4823
4836
|
}
|
|
4824
4837
|
});
|
|
4825
4838
|
}
|