@firestitch/filter 12.12.13 → 12.13.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/app/components/filter/filter.component.d.ts +2 -1
- package/app/components/filter-chip/filter-chip.component.d.ts +1 -1
- package/app/components/filter-chips/filter-chips.component.d.ts +1 -1
- package/app/components/filter-drawer/filter-drawer.component.d.ts +8 -6
- package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +1 -1
- package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +1 -1
- package/app/components/filters-item/base-item/base-item.component.d.ts +5 -3
- package/app/components/filters-item/filter-item.component.d.ts +11 -9
- package/app/fs-filter.module.d.ts +1 -1
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/models/items/autocomplete/base-autocomplete-item.d.ts +3 -3
- package/app/models/items/base-item.d.ts +7 -6
- package/app/services/filter-overlay.service.d.ts +7 -5
- package/app/services/items-store.service.d.ts +3 -1
- package/bundles/firestitch-filter.umd.js +138 -137
- package/bundles/firestitch-filter.umd.js.map +1 -1
- package/esm2015/app/components/filter/filter.component.js +9 -8
- package/esm2015/app/components/filter-chip/filter-chip.component.js +4 -4
- package/esm2015/app/components/filter-chips/filter-chips.component.js +1 -1
- package/esm2015/app/components/filter-drawer/filter-drawer.component.js +15 -14
- package/esm2015/app/components/filters-item/autocomplete/autocomplete.component.js +3 -3
- package/esm2015/app/components/filters-item/autocompletechips/autocompletechips.component.js +2 -2
- package/esm2015/app/components/filters-item/base-item/base-item.component.js +6 -10
- package/esm2015/app/components/filters-item/filter-item.component.js +5 -3
- package/esm2015/app/fs-filter.module.js +11 -9
- package/esm2015/app/models/items/autocomplete/base-autocomplete-item.js +2 -1
- package/esm2015/app/models/items/base-item.js +6 -8
- package/esm2015/app/models/items/select/multiple-select-item.js +4 -6
- package/esm2015/app/models/items/select/simple-select-item.js +8 -10
- package/esm2015/app/pipes/remove-isolate-value.pipe.js +5 -7
- package/esm2015/app/services/filter-overlay.service.js +19 -15
- package/esm2015/app/services/items-store.service.js +13 -13
- package/fesm2015/firestitch-filter.js +128 -129
- package/fesm2015/firestitch-filter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Optional, Component, ChangeDetectionStrategy, Inject,
|
|
2
|
+
import { Injectable, Optional, Component, ChangeDetectionStrategy, Inject, Input, EventEmitter, Output, InjectionToken, Directive, Self, Pipe, ViewChild, HostListener, ViewEncapsulation, ContentChild, HostBinding, NgModule } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject, Subject, isObservable, forkJoin, of, timer, combineLatest, fromEvent, merge } from 'rxjs';
|
|
4
4
|
import { tap, finalize, take, takeUntil, debounceTime, filter as filter$1, distinctUntilChanged, switchMap, mapTo, startWith, map, delay, skip } from 'rxjs/operators';
|
|
5
5
|
import { filter, isArrayEqual, list, isEmpty, getNormalizedPath, remove, FsCommonModule } from '@firestitch/common';
|
|
6
|
-
import {
|
|
6
|
+
import { isObject, isFunction, clone, isString, toString, pickBy } from 'lodash-es';
|
|
7
7
|
import * as i3 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
9
|
import * as i1$1 from '@angular/router';
|
|
@@ -42,6 +42,8 @@ import * as i5 from '@firestitch/autocomplete-chips';
|
|
|
42
42
|
import { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';
|
|
43
43
|
import * as i2$2 from '@firestitch/chip';
|
|
44
44
|
import { FsChipModule } from '@firestitch/chip';
|
|
45
|
+
import * as i8 from '@firestitch/clear';
|
|
46
|
+
import { FsClearModule } from '@firestitch/clear';
|
|
45
47
|
import * as i4$1 from '@firestitch/file';
|
|
46
48
|
import { FsFileModule } from '@firestitch/file';
|
|
47
49
|
import * as i1$5 from '@firestitch/label';
|
|
@@ -53,8 +55,6 @@ import { FsPopoverModule } from '@firestitch/popover';
|
|
|
53
55
|
import { FsScrollModule } from '@firestitch/scroll';
|
|
54
56
|
import * as i6$1 from '@firestitch/skeleton';
|
|
55
57
|
import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
56
|
-
import * as i8 from '@firestitch/clear';
|
|
57
|
-
import { FsClearModule } from '@firestitch/clear';
|
|
58
58
|
import * as i1$6 from '@angular/cdk/overlay';
|
|
59
59
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
60
60
|
import * as i1$7 from '@angular/cdk/layout';
|
|
@@ -69,6 +69,43 @@ function filterFromQueryParam(param) {
|
|
|
69
69
|
return [decodeURIComponent(parts[0]), decodeURIComponent(parts[1])];
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
function objectsAreEquals(obj1, obj2) {
|
|
73
|
+
const oldKeys = Object.keys(obj1);
|
|
74
|
+
const currKeys = Object.keys(obj2);
|
|
75
|
+
if (oldKeys.length !== currKeys.length) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
for (const key in obj1) {
|
|
79
|
+
if (obj1.hasOwnProperty(key)) {
|
|
80
|
+
const oldItem = obj1[key];
|
|
81
|
+
const currItem = obj2[key];
|
|
82
|
+
const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);
|
|
83
|
+
const isObjects = isObject(oldItem) && isObject(currItem);
|
|
84
|
+
if (isArrays && !arraysAreEquals(oldItem, currItem)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
else if (isObjects && !objectsAreEquals(oldItem, currItem)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
else if (!isArrays && !isObjects && oldItem !== currItem) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
function arraysAreEquals(arr1, arr2) {
|
|
98
|
+
if (arr1.length !== arr2.length) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
for (const el of arr1) {
|
|
102
|
+
if (arr2.indexOf(el) === -1) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
72
109
|
var ItemType;
|
|
73
110
|
(function (ItemType) {
|
|
74
111
|
ItemType["Text"] = "text";
|
|
@@ -224,13 +261,13 @@ class BaseItem {
|
|
|
224
261
|
this._pendingDefaultValue = false;
|
|
225
262
|
}));
|
|
226
263
|
}
|
|
227
|
-
initValues(persistedValue) {
|
|
264
|
+
initValues(filter, persistedValue) {
|
|
228
265
|
// this._initialized = false;
|
|
229
266
|
this.persistedValue = persistedValue;
|
|
230
267
|
this._initDefaultModel();
|
|
231
268
|
const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
|
|
232
269
|
if (this._valuesFn && !isAutocomplete) {
|
|
233
|
-
const valuesResult = this._valuesFn();
|
|
270
|
+
const valuesResult = this._valuesFn(null, filter);
|
|
234
271
|
if (isObservable(valuesResult)) {
|
|
235
272
|
this._pendingValues = true;
|
|
236
273
|
}
|
|
@@ -246,10 +283,10 @@ class BaseItem {
|
|
|
246
283
|
// this._initialized = true;
|
|
247
284
|
}
|
|
248
285
|
}
|
|
249
|
-
loadAsyncValues(reload = true) {
|
|
286
|
+
loadAsyncValues(filter, reload = true) {
|
|
250
287
|
if (reload || (!this.loading && this.hasPendingValues)) {
|
|
251
288
|
this.loading = true;
|
|
252
|
-
this._valuesFn()
|
|
289
|
+
this._valuesFn(null, filter)
|
|
253
290
|
.pipe(take(1), takeUntil(this._destroy$))
|
|
254
291
|
.subscribe((values) => {
|
|
255
292
|
this.values = values;
|
|
@@ -271,7 +308,6 @@ class BaseItem {
|
|
|
271
308
|
this._clear$.next(defaultValue);
|
|
272
309
|
this._clearValue(defaultValue);
|
|
273
310
|
}
|
|
274
|
-
;
|
|
275
311
|
getChipsContent(type) {
|
|
276
312
|
return '';
|
|
277
313
|
}
|
|
@@ -306,7 +342,6 @@ class BaseItem {
|
|
|
306
342
|
this.values = item.values;
|
|
307
343
|
}
|
|
308
344
|
}
|
|
309
|
-
;
|
|
310
345
|
_initDefaultModel() {
|
|
311
346
|
var _a;
|
|
312
347
|
const model = (_a = this.persistedValue) !== null && _a !== void 0 ? _a : this.defaultValue;
|
|
@@ -352,43 +387,6 @@ class BaseSelectItem extends BaseItem {
|
|
|
352
387
|
}
|
|
353
388
|
}
|
|
354
389
|
|
|
355
|
-
function objectsAreEquals(obj1, obj2) {
|
|
356
|
-
const oldKeys = Object.keys(obj1);
|
|
357
|
-
const currKeys = Object.keys(obj2);
|
|
358
|
-
if (oldKeys.length !== currKeys.length) {
|
|
359
|
-
return false;
|
|
360
|
-
}
|
|
361
|
-
for (const key in obj1) {
|
|
362
|
-
if (obj1.hasOwnProperty(key)) {
|
|
363
|
-
const oldItem = obj1[key];
|
|
364
|
-
const currItem = obj2[key];
|
|
365
|
-
const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);
|
|
366
|
-
const isObjects = isObject(oldItem) && isObject(currItem);
|
|
367
|
-
if (isArrays && !arraysAreEquals(oldItem, currItem)) {
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
else if (isObjects && !objectsAreEquals(oldItem, currItem)) {
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
|
-
else if (!isArrays && !isObjects && oldItem !== currItem) {
|
|
374
|
-
return false;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
return true;
|
|
379
|
-
}
|
|
380
|
-
function arraysAreEquals(arr1, arr2) {
|
|
381
|
-
if (arr1.length !== arr2.length) {
|
|
382
|
-
return false;
|
|
383
|
-
}
|
|
384
|
-
for (const el of arr1) {
|
|
385
|
-
if (arr2.indexOf(el) === -1) {
|
|
386
|
-
return false;
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
return true;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
390
|
class MultipleSelectItem extends BaseSelectItem {
|
|
393
391
|
constructor(itemConfig, _persistedValues) {
|
|
394
392
|
super(itemConfig, _persistedValues);
|
|
@@ -453,16 +451,14 @@ class MultipleSelectItem extends BaseSelectItem {
|
|
|
453
451
|
if (isNaN(val)) {
|
|
454
452
|
return val;
|
|
455
453
|
}
|
|
456
|
-
|
|
457
|
-
return +val;
|
|
458
|
-
}
|
|
454
|
+
return +val;
|
|
459
455
|
});
|
|
460
456
|
}
|
|
461
457
|
super._setModel(value);
|
|
462
458
|
}
|
|
463
459
|
_validateModel() {
|
|
464
460
|
const possibleValues = filter(this.model || [], (item) => {
|
|
465
|
-
return this.values.find(value => {
|
|
461
|
+
return this.values.find((value) => {
|
|
466
462
|
return value.value == item;
|
|
467
463
|
});
|
|
468
464
|
});
|
|
@@ -993,14 +989,12 @@ class SimpleSelectItem extends BaseSelectItem {
|
|
|
993
989
|
const itemValue = findValue(this.values, this.model, this.children);
|
|
994
990
|
return itemValue && itemValue.name;
|
|
995
991
|
}
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
return this.isolate.label;
|
|
1003
|
-
}
|
|
992
|
+
const itemValue = this.values.find((val) => val.value === this.model);
|
|
993
|
+
if (itemValue) {
|
|
994
|
+
return itemValue.name;
|
|
995
|
+
}
|
|
996
|
+
else if (this.isolate) {
|
|
997
|
+
return this.isolate.label;
|
|
1004
998
|
}
|
|
1005
999
|
}
|
|
1006
1000
|
get isChipVisible() {
|
|
@@ -1026,7 +1020,7 @@ class SimpleSelectItem extends BaseSelectItem {
|
|
|
1026
1020
|
super._setModel(value);
|
|
1027
1021
|
}
|
|
1028
1022
|
_validateModel() {
|
|
1029
|
-
const item = this.values.find(value => {
|
|
1023
|
+
const item = this.values.find((value) => {
|
|
1030
1024
|
return value.value == this.model;
|
|
1031
1025
|
});
|
|
1032
1026
|
const value = item ? item.value : '__all';
|
|
@@ -1216,6 +1210,7 @@ class BaseAutocompleteItem extends BaseItem {
|
|
|
1216
1210
|
return this._valuesFn;
|
|
1217
1211
|
}
|
|
1218
1212
|
_validateModel() {
|
|
1213
|
+
//
|
|
1219
1214
|
}
|
|
1220
1215
|
_parseConfig(item) {
|
|
1221
1216
|
var _a;
|
|
@@ -1555,12 +1550,12 @@ class FsFilterItemsStore {
|
|
|
1555
1550
|
get visibleItems() {
|
|
1556
1551
|
return this._visibleItems$.getValue();
|
|
1557
1552
|
}
|
|
1558
|
-
get visibleItems$() {
|
|
1559
|
-
return this._visibleItems$.asObservable();
|
|
1560
|
-
}
|
|
1561
1553
|
set visibleItems(items) {
|
|
1562
1554
|
this._visibleItems$.next(items);
|
|
1563
1555
|
}
|
|
1556
|
+
get visibleItems$() {
|
|
1557
|
+
return this._visibleItems$.asObservable();
|
|
1558
|
+
}
|
|
1564
1559
|
get hasKeyword() {
|
|
1565
1560
|
return this._hasKeyword;
|
|
1566
1561
|
}
|
|
@@ -1623,7 +1618,7 @@ class FsFilterItemsStore {
|
|
|
1623
1618
|
loadAsyncValues() {
|
|
1624
1619
|
this.items
|
|
1625
1620
|
.filter((item) => item.hasPendingValues)
|
|
1626
|
-
.forEach((item) => item.loadAsyncValues());
|
|
1621
|
+
.forEach((item) => item.loadAsyncValues(this.filter));
|
|
1627
1622
|
}
|
|
1628
1623
|
loadAsyncDefaults() {
|
|
1629
1624
|
// default values can be asynchronous, and we must load them if there is no persisted value instead
|
|
@@ -1645,10 +1640,10 @@ class FsFilterItemsStore {
|
|
|
1645
1640
|
.map((item) => item.loadDefaultValue()),
|
|
1646
1641
|
...valuesToBeLoaded
|
|
1647
1642
|
.map((item) => {
|
|
1648
|
-
item.loadAsyncValues();
|
|
1643
|
+
item.loadAsyncValues(this.filter);
|
|
1649
1644
|
return item.loading$
|
|
1650
1645
|
.pipe();
|
|
1651
|
-
})
|
|
1646
|
+
}),
|
|
1652
1647
|
])
|
|
1653
1648
|
.pipe(finalize(() => {
|
|
1654
1649
|
this._ready$.next(true);
|
|
@@ -1710,7 +1705,7 @@ class FsFilterItemsStore {
|
|
|
1710
1705
|
init(p) {
|
|
1711
1706
|
this.items
|
|
1712
1707
|
.forEach((item) => {
|
|
1713
|
-
item.initValues(p[item.name]);
|
|
1708
|
+
item.initValues(this.filter, p[item.name]);
|
|
1714
1709
|
});
|
|
1715
1710
|
this._initSortingItems(p);
|
|
1716
1711
|
this.loadAsyncDefaults();
|
|
@@ -1819,8 +1814,8 @@ class FsFilterItemsStore {
|
|
|
1819
1814
|
}
|
|
1820
1815
|
_initSortingItems(p) {
|
|
1821
1816
|
if (this.sortByItem && this.sortDirectionItem) {
|
|
1822
|
-
this.sortByItem.initValues(p[this.sortByItem.name]);
|
|
1823
|
-
this.sortDirectionItem.initValues(p[this.sortDirectionItem.name]);
|
|
1817
|
+
this.sortByItem.initValues(this.filter, p[this.sortByItem.name]);
|
|
1818
|
+
this.sortDirectionItem.initValues(this.filter, p[this.sortDirectionItem.name]);
|
|
1824
1819
|
}
|
|
1825
1820
|
}
|
|
1826
1821
|
_createSortingItems() {
|
|
@@ -1830,7 +1825,7 @@ class FsFilterItemsStore {
|
|
|
1830
1825
|
name: SORT_BY_FIELD,
|
|
1831
1826
|
type: ItemType.Select,
|
|
1832
1827
|
label: 'Sort By',
|
|
1833
|
-
values: this._config.sortValues
|
|
1828
|
+
values: this._config.sortValues,
|
|
1834
1829
|
};
|
|
1835
1830
|
if (this._config.sort && this._config.sort.value) {
|
|
1836
1831
|
sortByItem.default = this._config.sort.value;
|
|
@@ -1842,8 +1837,8 @@ class FsFilterItemsStore {
|
|
|
1842
1837
|
label: 'Sort Direction',
|
|
1843
1838
|
values: [
|
|
1844
1839
|
{ name: 'Ascending', value: 'asc' },
|
|
1845
|
-
{ name: 'Descending', value: 'desc' }
|
|
1846
|
-
]
|
|
1840
|
+
{ name: 'Descending', value: 'desc' },
|
|
1841
|
+
],
|
|
1847
1842
|
};
|
|
1848
1843
|
if (this._config.sort && this._config.sort.direction) {
|
|
1849
1844
|
sortDirectionItem.default = this._config.sort.direction;
|
|
@@ -2308,8 +2303,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
2308
2303
|
type: Injectable
|
|
2309
2304
|
}], ctorParameters: function () { return [{ type: FsFilterItemsStore }, { type: PersistanceParamsController }, { type: QueryParamsController }, { type: SavedFiltersController }]; } });
|
|
2310
2305
|
|
|
2311
|
-
const FS_FILTER_CONFIG = new InjectionToken('fs.filter-config');
|
|
2312
|
-
|
|
2313
2306
|
class ActionMenuItem {
|
|
2314
2307
|
constructor(config = {}, _parent) {
|
|
2315
2308
|
this._parent = _parent;
|
|
@@ -2660,7 +2653,7 @@ class FsFilterChipComponent {
|
|
|
2660
2653
|
this.listenValueChangesForRanges();
|
|
2661
2654
|
this._updateVisibility();
|
|
2662
2655
|
if (this.item.hasPendingValues) {
|
|
2663
|
-
this.item.loadAsyncValues(false);
|
|
2656
|
+
this.item.loadAsyncValues(null, false);
|
|
2664
2657
|
this.item.values$
|
|
2665
2658
|
.pipe(take(2), takeUntil(this._destroy$))
|
|
2666
2659
|
.subscribe(() => {
|
|
@@ -2702,7 +2695,7 @@ class FsFilterChipComponent {
|
|
|
2702
2695
|
_initDelayRender() {
|
|
2703
2696
|
this.chipDelayedRender$ = combineLatest([
|
|
2704
2697
|
this.item.values$,
|
|
2705
|
-
this._chipRenderTimer$.pipe(startWith(false))
|
|
2698
|
+
this._chipRenderTimer$.pipe(startWith(false)),
|
|
2706
2699
|
])
|
|
2707
2700
|
.pipe(map(([values, timerValue]) => {
|
|
2708
2701
|
return !!values || timerValue;
|
|
@@ -2797,7 +2790,6 @@ class BaseItemComponent {
|
|
|
2797
2790
|
set item(value) {
|
|
2798
2791
|
this._item = value;
|
|
2799
2792
|
}
|
|
2800
|
-
;
|
|
2801
2793
|
get item() {
|
|
2802
2794
|
return this._item;
|
|
2803
2795
|
}
|
|
@@ -2811,12 +2803,7 @@ class BaseItemComponent {
|
|
|
2811
2803
|
}
|
|
2812
2804
|
ngOnChanges(changes) {
|
|
2813
2805
|
if (changes.item) {
|
|
2814
|
-
|
|
2815
|
-
this.label = this.item.label[0];
|
|
2816
|
-
}
|
|
2817
|
-
else {
|
|
2818
|
-
this.label = this.item.label;
|
|
2819
|
-
}
|
|
2806
|
+
this.label = Array.isArray(this.item.label) ? this.item.label[0] : this.item.label;
|
|
2820
2807
|
}
|
|
2821
2808
|
}
|
|
2822
2809
|
ngOnDestroy() {
|
|
@@ -2835,7 +2822,7 @@ class BaseItemComponent {
|
|
|
2835
2822
|
}
|
|
2836
2823
|
}
|
|
2837
2824
|
BaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseItemComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2838
|
-
BaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BaseItemComponent, selector: "base-item", inputs: { item: "item", inline: "inline" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2825
|
+
BaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BaseItemComponent, selector: "base-item", inputs: { item: "item", inline: "inline", filter: "filter" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2839
2826
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseItemComponent, decorators: [{
|
|
2840
2827
|
type: Component,
|
|
2841
2828
|
args: [{
|
|
@@ -2847,6 +2834,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
2847
2834
|
type: Input
|
|
2848
2835
|
}], inline: [{
|
|
2849
2836
|
type: Input
|
|
2837
|
+
}], filter: [{
|
|
2838
|
+
type: Input
|
|
2850
2839
|
}] } });
|
|
2851
2840
|
|
|
2852
2841
|
class FocusToItemDirective {
|
|
@@ -3011,11 +3000,9 @@ class FsFilterIsolateValues {
|
|
|
3011
3000
|
if (!isolate) {
|
|
3012
3001
|
return values;
|
|
3013
3002
|
}
|
|
3014
|
-
|
|
3015
|
-
return
|
|
3016
|
-
|
|
3017
|
-
});
|
|
3018
|
-
}
|
|
3003
|
+
return values.filter((value) => {
|
|
3004
|
+
return value.value !== isolate.value;
|
|
3005
|
+
});
|
|
3019
3006
|
}
|
|
3020
3007
|
}
|
|
3021
3008
|
FsFilterIsolateValues.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterIsolateValues, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -3023,7 +3010,7 @@ FsFilterIsolateValues.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", vers
|
|
|
3023
3010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterIsolateValues, decorators: [{
|
|
3024
3011
|
type: Pipe,
|
|
3025
3012
|
args: [{
|
|
3026
|
-
name: 'fsFilterIsolateValues'
|
|
3013
|
+
name: 'fsFilterIsolateValues',
|
|
3027
3014
|
}]
|
|
3028
3015
|
}] });
|
|
3029
3016
|
|
|
@@ -3253,7 +3240,7 @@ class AutocompleteComponent extends BaseItemComponent {
|
|
|
3253
3240
|
return data ? data.name : data;
|
|
3254
3241
|
};
|
|
3255
3242
|
this.fetch = (keyword) => {
|
|
3256
|
-
return this.item.valuesFn(keyword);
|
|
3243
|
+
return this.item.valuesFn(keyword, this.filter);
|
|
3257
3244
|
};
|
|
3258
3245
|
}
|
|
3259
3246
|
}
|
|
@@ -3274,7 +3261,7 @@ class AutocompletechipsComponent extends BaseItemComponent {
|
|
|
3274
3261
|
this._kvDiffers = _kvDiffers;
|
|
3275
3262
|
this._cd = _cd;
|
|
3276
3263
|
this.fetch = (keyword) => {
|
|
3277
|
-
return this.item.valuesFn(keyword);
|
|
3264
|
+
return this.item.valuesFn(keyword, this.filter);
|
|
3278
3265
|
};
|
|
3279
3266
|
}
|
|
3280
3267
|
// SP-T1747
|
|
@@ -3415,8 +3402,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
3415
3402
|
class FilterItemComponent {
|
|
3416
3403
|
constructor(_cdRef) {
|
|
3417
3404
|
this._cdRef = _cdRef;
|
|
3418
|
-
this._destroy$ = new Subject();
|
|
3419
3405
|
this.itemType = ItemType;
|
|
3406
|
+
this._destroy$ = new Subject();
|
|
3420
3407
|
}
|
|
3421
3408
|
get textItem() {
|
|
3422
3409
|
return this.item;
|
|
@@ -3467,7 +3454,7 @@ class FilterItemComponent {
|
|
|
3467
3454
|
}
|
|
3468
3455
|
}
|
|
3469
3456
|
FilterItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3470
|
-
FilterItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterItemComponent, selector: "filter-item", inputs: { item: "item" }, ngImport: i0, template: "<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text class=\"interface\"\n
|
|
3457
|
+
FilterItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterItemComponent, selector: "filter-item", inputs: { item: "item", filter: "filter" }, ngImport: i0, template: "<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text \n class=\"interface\"\n *ngSwitchCase=\"itemType.Text\"\n [item]=\"textItem\">\n </filter-item-text>\n\n <filter-item-select \n class=\"interface\"\n *ngSwitchCase=\"itemType.Select\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n\n <filter-item-chips \n class=\"interface\"\n *ngSwitchCase=\"itemType.Chips\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n\n <filter-item-range \n class=\"interface interface-range\"\n *ngSwitchCase=\"itemType.Range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n\n <filter-item-autocomplete \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoComplete\"\n [item]=\"autocompleteItem\"\n [filter]=\"filter\">\n </filter-item-autocomplete>\n\n <filter-item-autocompletechips \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoCompleteChips\"\n [item]=\"autocompleteChipsItem\"\n [filter]=\"filter\">\n </filter-item-autocompletechips>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.Date\"\n [item]=\"dateItem\">\n </filter-item-date>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTime\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateRange\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTimeRange\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n\n <filter-item-week \n class=\"interface\"\n *ngSwitchCase=\"itemType.Week\"\n [item]=\"weekItem\">\n </filter-item-week>\n\n <filter-item-checkbox \n class=\"interface interface-checkbox\"\n *ngSwitchCase=\"itemType.Checkbox\"\n [item]=\"checkboxItem\">\n </filter-item-checkbox>\n </ng-container>\n\n</div>\n", components: [{ type: TextComponent, selector: "filter-item-text" }, { type: SelectComponent, selector: "filter-item-select" }, { type: ChipsComponent, selector: "filter-item-chips" }, { type: RangeComponent, selector: "filter-item-range" }, { type: AutocompleteComponent, selector: "filter-item-autocomplete" }, { type: AutocompletechipsComponent, selector: "filter-item-autocompletechips" }, { type: DateComponent, selector: "filter-item-date" }, { type: DateRangeComponent, selector: "filter-item-date-range" }, { type: WeekComponent, selector: "filter-item-week" }, { type: CheckboxComponent, selector: "filter-item-checkbox" }], directives: [{ type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3471
3458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterItemComponent, decorators: [{
|
|
3472
3459
|
type: Component,
|
|
3473
3460
|
args: [{
|
|
@@ -3477,20 +3464,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
3477
3464
|
}]
|
|
3478
3465
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
|
|
3479
3466
|
type: Input
|
|
3467
|
+
}], filter: [{
|
|
3468
|
+
type: Input
|
|
3480
3469
|
}] } });
|
|
3481
3470
|
|
|
3482
3471
|
class FilterDrawerComponent {
|
|
3483
|
-
constructor(externalParams, _cd, _itemsStore,
|
|
3472
|
+
constructor(externalParams, _cd, _itemsStore, _overlayRef, _data) {
|
|
3484
3473
|
this.externalParams = externalParams;
|
|
3485
3474
|
this._cd = _cd;
|
|
3486
3475
|
this._itemsStore = _itemsStore;
|
|
3487
|
-
this.
|
|
3488
|
-
this.
|
|
3476
|
+
this._overlayRef = _overlayRef;
|
|
3477
|
+
this._data = _data;
|
|
3489
3478
|
this.inline = false;
|
|
3490
3479
|
this.windowDesktop = false;
|
|
3491
3480
|
this._itemsStore.prepareItems();
|
|
3492
|
-
this._clear =
|
|
3493
|
-
this._done =
|
|
3481
|
+
this._clear = _data.clear;
|
|
3482
|
+
this._done = _data.done;
|
|
3483
|
+
this.filter = _data.filter;
|
|
3494
3484
|
this.updateWindowWidth();
|
|
3495
3485
|
}
|
|
3496
3486
|
updateWindowWidth() {
|
|
@@ -3511,19 +3501,19 @@ class FilterDrawerComponent {
|
|
|
3511
3501
|
}
|
|
3512
3502
|
done() {
|
|
3513
3503
|
this._done();
|
|
3514
|
-
this.
|
|
3504
|
+
this._overlayRef.detach();
|
|
3515
3505
|
}
|
|
3516
3506
|
backdropClick() {
|
|
3517
3507
|
this.done();
|
|
3518
3508
|
}
|
|
3519
3509
|
}
|
|
3520
3510
|
FilterDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterDrawerComponent, deps: [{ token: ExternalParamsController }, { token: i0.ChangeDetectorRef }, { token: FsFilterItemsStore }, { token: FILTER_DRAWER_OVERLAY }, { token: FILTER_DRAWER_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
3521
|
-
FilterDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDrawerComponent, selector: "ng-component", inputs: { inline: "inline" }, host: { listeners: { "window:resize": "updateWindowWidth()" } }, ngImport: i0, template: "<div class=\"filters\">\n <div class=\"filters-wrap\">\n\n <div class=\"filter-by\">\n <mat-icon>tune</mat-icon>\n <span class=\"text\">Filters</span>\n </div>\n\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(externalParams.pending$ | async) !== true\">\n <filter-item \n *ngFor=\"let filterItem of items$ | async\"\n class=\"filter-group\"\n [item]=\"filterItem\">\n </filter-item>\n\n <ng-container *ngIf=\"sortItem && sortItem.values && sortItem.values.length > 0\">\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortItem\">\n </filter-item>\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortDirectionItem\">\n </filter-item>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <fs-filter-drawer-actions \n class=\"filter-actions\"\n *ngIf=\"(externalParams.pending$ | async) !== true\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n </div>\n</div>\n<div class=\"backdrop\" *ngIf=\"!windowDesktop\" (click)=\"backdropClick()\"></div>\n", styles: [":host ::ng-deep mat-form-field{width:100%}.filter-by{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:20px 25px}.filter-by mat-icon{margin-right:8px}.filter-by .text{font-weight:400;font-size:19px}.filter-actions{display:block;box-sizing:border-box;padding:13px}.filter-actions button{margin-right:6px}.filter-actions button:last-child{margin-right:0}.filters{position:fixed;display:block;top:0;right:0;z-index:1002;bottom:0}.filters .filters-wrap{background:#fff;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;width:85vw;max-width:350px;display:flex;flex-direction:column;height:100%;padding-top:calc(env(safe-area-inset-top))}.filters .filters-wrap .filter-items{overflow-y:auto}.filters .filters-wrap .filter-items .overflow-shadow-content{padding:0 25px;box-sizing:border-box}.filters .filter-group{margin:10px 0 0}.filters .filter-group:first-child{margin:0}.filters .filter label{white-space:nowrap;color:#0000008a}.filters .filter .interface.interface-range input,.filters .filter .interface.interface-range .mat-input-wrapper{text-align:center}.filters .filter .interface.interface-range{text-align:center}.filters .filter .interface.interface-datetime fs-datetime.has-time .md-input{width:100%}.filters .filter .interface fs-datetime-range input{text-align:center}.filters .filter .filter-label{width:1%;white-space:nowrap;vertical-align:middle;padding-right:15px}.filters md-autocomplete-container md-input-container{margin:0}.filters .isolate{margin-top:-12px}.filters .isolate .interface{line-height:20px;padding-bottom:1.25em}.filters .isolate md-checkbox{margin:0 0 0 2px}.backdrop{position:fixed;top:0;bottom:0;left:0;right:0;z-index:900;outline:none}\n"], components: [{ type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: FilterItemComponent, selector: "filter-item", inputs: ["item"] }, { type: FsFilterDrawerActionsComponent, selector: "fs-filter-drawer-actions", outputs: ["clear", "done"] }], directives: [{ type: i6$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3511
|
+
FilterDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDrawerComponent, selector: "ng-component", inputs: { inline: "inline" }, host: { listeners: { "window:resize": "updateWindowWidth()" } }, ngImport: i0, template: "<div class=\"filters\">\n <div class=\"filters-wrap\">\n\n <div class=\"filter-by\">\n <mat-icon>tune</mat-icon>\n <span class=\"text\">Filters</span>\n </div>\n\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(externalParams.pending$ | async) !== true\">\n <filter-item \n *ngFor=\"let filterItem of items$ | async\"\n class=\"filter-group\"\n [item]=\"filterItem\"\n [filter]=\"filter\">\n </filter-item>\n\n <ng-container *ngIf=\"sortItem && sortItem.values && sortItem.values.length > 0\">\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortItem\"\n [filter]=\"filter\">\n </filter-item>\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortDirectionItem\"\n [filter]=\"filter\">\n </filter-item>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <fs-filter-drawer-actions \n class=\"filter-actions\"\n *ngIf=\"(externalParams.pending$ | async) !== true\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n </div>\n</div>\n<div class=\"backdrop\" *ngIf=\"!windowDesktop\" (click)=\"backdropClick()\"></div>\n", styles: [":host ::ng-deep mat-form-field{width:100%}.filter-by{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:20px 25px}.filter-by mat-icon{margin-right:8px}.filter-by .text{font-weight:400;font-size:19px}.filter-actions{display:block;box-sizing:border-box;padding:13px}.filter-actions button{margin-right:6px}.filter-actions button:last-child{margin-right:0}.filters{position:fixed;display:block;top:0;right:0;z-index:1002;bottom:0}.filters .filters-wrap{background:#fff;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;width:85vw;max-width:350px;display:flex;flex-direction:column;height:100%;padding-top:calc(env(safe-area-inset-top))}.filters .filters-wrap .filter-items{overflow-y:auto}.filters .filters-wrap .filter-items .overflow-shadow-content{padding:0 25px;box-sizing:border-box}.filters .filter-group{margin:10px 0 0}.filters .filter-group:first-child{margin:0}.filters .filter label{white-space:nowrap;color:#0000008a}.filters .filter .interface.interface-range input,.filters .filter .interface.interface-range .mat-input-wrapper{text-align:center}.filters .filter .interface.interface-range{text-align:center}.filters .filter .interface.interface-datetime fs-datetime.has-time .md-input{width:100%}.filters .filter .interface fs-datetime-range input{text-align:center}.filters .filter .filter-label{width:1%;white-space:nowrap;vertical-align:middle;padding-right:15px}.filters md-autocomplete-container md-input-container{margin:0}.filters .isolate{margin-top:-12px}.filters .isolate .interface{line-height:20px;padding-bottom:1.25em}.filters .isolate md-checkbox{margin:0 0 0 2px}.backdrop{position:fixed;top:0;bottom:0;left:0;right:0;z-index:900;outline:none}\n"], components: [{ type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: FilterItemComponent, selector: "filter-item", inputs: ["item", "filter"] }, { type: FsFilterDrawerActionsComponent, selector: "fs-filter-drawer-actions", outputs: ["clear", "done"] }], directives: [{ type: i6$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3522
3512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterDrawerComponent, decorators: [{
|
|
3523
3513
|
type: Component,
|
|
3524
3514
|
args: [{
|
|
3525
3515
|
templateUrl: './filter-drawer.component.html',
|
|
3526
|
-
styleUrls: ['filter-drawer.component.scss'],
|
|
3516
|
+
styleUrls: ['./filter-drawer.component.scss'],
|
|
3527
3517
|
// Commented out because filter items are not updating with a delayed observable. Need to figure this out.
|
|
3528
3518
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3529
3519
|
}]
|
|
@@ -3533,11 +3523,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
3533
3523
|
}] }, { type: undefined, decorators: [{
|
|
3534
3524
|
type: Inject,
|
|
3535
3525
|
args: [FILTER_DRAWER_DATA]
|
|
3536
|
-
}] }]; }, propDecorators: {
|
|
3526
|
+
}] }]; }, propDecorators: { inline: [{
|
|
3527
|
+
type: Input
|
|
3528
|
+
}], updateWindowWidth: [{
|
|
3537
3529
|
type: HostListener,
|
|
3538
3530
|
args: ['window:resize']
|
|
3539
|
-
}], inline: [{
|
|
3540
|
-
type: Input
|
|
3541
3531
|
}] } });
|
|
3542
3532
|
|
|
3543
3533
|
class ActionsController {
|
|
@@ -3670,9 +3660,9 @@ const FS_FILTER_META = new InjectionToken('fs.filter.meta', {
|
|
|
3670
3660
|
});
|
|
3671
3661
|
|
|
3672
3662
|
class FsFilterOverlayService {
|
|
3673
|
-
constructor(
|
|
3674
|
-
this._injector = _injector;
|
|
3663
|
+
constructor(_filterMeta, _injector, _overlay, _focusController) {
|
|
3675
3664
|
this._filterMeta = _filterMeta;
|
|
3665
|
+
this._injector = _injector;
|
|
3676
3666
|
this._overlay = _overlay;
|
|
3677
3667
|
this._focusController = _focusController;
|
|
3678
3668
|
this.detach$ = new Subject();
|
|
@@ -3693,7 +3683,7 @@ class FsFilterOverlayService {
|
|
|
3693
3683
|
if (this._overlayRef) {
|
|
3694
3684
|
this._overlayRef.detach();
|
|
3695
3685
|
this._overlayRef = null;
|
|
3696
|
-
this.
|
|
3686
|
+
this._removeFilterClass();
|
|
3697
3687
|
}
|
|
3698
3688
|
}
|
|
3699
3689
|
open() {
|
|
@@ -3713,8 +3703,8 @@ class FsFilterOverlayService {
|
|
|
3713
3703
|
.subscribe(() => {
|
|
3714
3704
|
this.attach$.next();
|
|
3715
3705
|
});
|
|
3716
|
-
this.
|
|
3717
|
-
return this.
|
|
3706
|
+
this._addFilterClass();
|
|
3707
|
+
return this._openPortalPreview();
|
|
3718
3708
|
}
|
|
3719
3709
|
ngOnDestroy() {
|
|
3720
3710
|
this._destroy$.next();
|
|
@@ -3723,12 +3713,16 @@ class FsFilterOverlayService {
|
|
|
3723
3713
|
_createOverlay() {
|
|
3724
3714
|
const overlayConfig = new OverlayConfig({
|
|
3725
3715
|
hasBackdrop: true,
|
|
3726
|
-
backdropClass: 'fs-filter-backdrop'
|
|
3716
|
+
backdropClass: 'fs-filter-backdrop',
|
|
3727
3717
|
});
|
|
3728
3718
|
return this._overlay.create(overlayConfig);
|
|
3729
3719
|
}
|
|
3730
|
-
|
|
3731
|
-
const data = {
|
|
3720
|
+
_openPortalPreview() {
|
|
3721
|
+
const data = {
|
|
3722
|
+
done: this._doneFn,
|
|
3723
|
+
clear: this._clearFn,
|
|
3724
|
+
filter: this.filter,
|
|
3725
|
+
};
|
|
3732
3726
|
const injector = this._createInjector(this._injector, data, this._overlayRef);
|
|
3733
3727
|
const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);
|
|
3734
3728
|
const containerRef = this._overlayRef.attach(containerPortal);
|
|
@@ -3741,13 +3735,13 @@ class FsFilterOverlayService {
|
|
|
3741
3735
|
]);
|
|
3742
3736
|
return new PortalInjector(parentInjector, injectionTokens);
|
|
3743
3737
|
}
|
|
3744
|
-
|
|
3738
|
+
_removeFilterClass() {
|
|
3745
3739
|
this._filterMeta.openedFilters--;
|
|
3746
3740
|
if (this._filterMeta.openedFilters === 0) {
|
|
3747
3741
|
window.document.body.classList.remove('fs-filter-open');
|
|
3748
3742
|
}
|
|
3749
3743
|
}
|
|
3750
|
-
|
|
3744
|
+
_addFilterClass() {
|
|
3751
3745
|
this._filterMeta.openedFilters++;
|
|
3752
3746
|
if (this._filterMeta.openedFilters === 1) {
|
|
3753
3747
|
window.document.body.classList.add('fs-filter-open');
|
|
@@ -3763,14 +3757,14 @@ class FsFilterOverlayService {
|
|
|
3763
3757
|
});
|
|
3764
3758
|
}
|
|
3765
3759
|
}
|
|
3766
|
-
FsFilterOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterOverlayService, deps: [{ token:
|
|
3760
|
+
FsFilterOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterOverlayService, deps: [{ token: FS_FILTER_META }, { token: i0.Injector }, { token: i1$6.Overlay }, { token: FocusControllerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3767
3761
|
FsFilterOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterOverlayService });
|
|
3768
3762
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFilterOverlayService, decorators: [{
|
|
3769
3763
|
type: Injectable
|
|
3770
|
-
}], ctorParameters: function () { return [{ type:
|
|
3764
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
3771
3765
|
type: Inject,
|
|
3772
3766
|
args: [FS_FILTER_META]
|
|
3773
|
-
}] }, { type: i1$6.Overlay }, { type: FocusControllerService }]; } });
|
|
3767
|
+
}] }, { type: i0.Injector }, { type: i1$6.Overlay }, { type: FocusControllerService }]; } });
|
|
3774
3768
|
|
|
3775
3769
|
class FilterStatusBarDirective {
|
|
3776
3770
|
constructor(templateRef) {
|
|
@@ -3786,6 +3780,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
3786
3780
|
}]
|
|
3787
3781
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
3788
3782
|
|
|
3783
|
+
const FS_FILTER_CONFIG = new InjectionToken('fs.filter-config');
|
|
3784
|
+
|
|
3789
3785
|
class FilterComponent {
|
|
3790
3786
|
constructor(_defaultConfig, _filterOverlay, _zone, _externalParams, _filterItems, _actions) {
|
|
3791
3787
|
this._defaultConfig = _defaultConfig;
|
|
@@ -3810,6 +3806,8 @@ class FilterComponent {
|
|
|
3810
3806
|
this._hasFilterChips$ = new BehaviorSubject(false);
|
|
3811
3807
|
this._keyword$ = new Subject();
|
|
3812
3808
|
this._destroy$ = new Subject();
|
|
3809
|
+
this._filterItems.filter = this;
|
|
3810
|
+
this._filterOverlay.filter = this;
|
|
3813
3811
|
this._listenWhenFilterReady();
|
|
3814
3812
|
this._updateWindowWidth();
|
|
3815
3813
|
this._filterOverlay.attach$
|
|
@@ -4032,9 +4030,7 @@ class FilterComponent {
|
|
|
4032
4030
|
return item.model;
|
|
4033
4031
|
}));
|
|
4034
4032
|
}
|
|
4035
|
-
|
|
4036
|
-
return null;
|
|
4037
|
-
}
|
|
4033
|
+
return null;
|
|
4038
4034
|
}
|
|
4039
4035
|
changeVisibility(state) {
|
|
4040
4036
|
if (state === this.showFilterMenu) {
|
|
@@ -4119,6 +4115,7 @@ class FilterComponent {
|
|
|
4119
4115
|
}
|
|
4120
4116
|
/**
|
|
4121
4117
|
* Update filter actions config
|
|
4118
|
+
*
|
|
4122
4119
|
* @param actions
|
|
4123
4120
|
*/
|
|
4124
4121
|
updateActions(actions) {
|
|
@@ -4167,6 +4164,9 @@ class FilterComponent {
|
|
|
4167
4164
|
this._externalParams.initItems();
|
|
4168
4165
|
this._syncSearchInputWithKeyword();
|
|
4169
4166
|
}
|
|
4167
|
+
keywordChange(keyword) {
|
|
4168
|
+
this._keyword$.next(keyword);
|
|
4169
|
+
}
|
|
4170
4170
|
_initFilterWithConfig(config) {
|
|
4171
4171
|
if (this.config) {
|
|
4172
4172
|
this._filterItems.destroyItems();
|
|
@@ -4209,9 +4209,6 @@ class FilterComponent {
|
|
|
4209
4209
|
});
|
|
4210
4210
|
});
|
|
4211
4211
|
}
|
|
4212
|
-
keywordChange(keyword) {
|
|
4213
|
-
this._keyword$.next(keyword);
|
|
4214
|
-
}
|
|
4215
4212
|
_listenInputChanges() {
|
|
4216
4213
|
this._keyword$
|
|
4217
4214
|
.pipe(debounceTime(200), distinctUntilChanged(), takeUntil(this._destroy$))
|
|
@@ -4400,8 +4397,13 @@ class FsFilterModule {
|
|
|
4400
4397
|
return {
|
|
4401
4398
|
ngModule: FsFilterModule,
|
|
4402
4399
|
providers: [
|
|
4403
|
-
{
|
|
4404
|
-
|
|
4400
|
+
{
|
|
4401
|
+
provide: FS_FILTER_CONFIG,
|
|
4402
|
+
useValue: Object.assign({ button: {
|
|
4403
|
+
label: '',
|
|
4404
|
+
} }, config),
|
|
4405
|
+
},
|
|
4406
|
+
],
|
|
4405
4407
|
};
|
|
4406
4408
|
}
|
|
4407
4409
|
}
|
|
@@ -4569,9 +4571,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
4569
4571
|
FilterStatusBarDirective,
|
|
4570
4572
|
FsSavedFiltersMenuComponent,
|
|
4571
4573
|
],
|
|
4572
|
-
entryComponents: [
|
|
4573
|
-
FilterDrawerComponent
|
|
4574
|
-
]
|
|
4575
4574
|
}]
|
|
4576
4575
|
}] });
|
|
4577
4576
|
|