@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.
Files changed (20) hide show
  1. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.mjs +13 -3
  2. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.mjs +2 -4
  3. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.mjs +1 -1
  4. package/esm2020/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.mjs +1 -1
  5. package/esm2020/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.mjs +1 -1
  6. package/esm2020/lib/components/nice-filter-view/directives/mat-paginator.mjs +1 -1
  7. package/esm2020/lib/components/nice-filter-view/directives/mat-sort.mjs +6 -3
  8. package/esm2020/lib/components/nice-filter-view/models/order-options.model.mjs +2 -0
  9. package/esm2020/lib/components/nice-filter-view/nice-filter-view.component.mjs +1 -1
  10. package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.service.mjs +1 -1
  11. package/esm2020/lib/components/nice-filter-view/store/nice-filter-view.store.mjs +2 -1
  12. package/fesm2015/recursyve-nice-data-filter-kit.mjs +86 -72
  13. package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +1 -1
  14. package/fesm2020/recursyve-nice-data-filter-kit.mjs +96 -83
  15. package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +1 -1
  16. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.d.ts +6 -3
  17. package/lib/components/nice-filter-view/models/order-options.model.d.ts +7 -0
  18. package/lib/components/nice-filter-view/store/nice-filter-view.service.d.ts +1 -1
  19. package/lib/components/nice-filter-view/store/nice-filter-view.store.d.ts +3 -1
  20. 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
  }