@firestitch/filter 12.11.2 → 12.11.3

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@firestitch/common'), require('lodash-es'), require('@firestitch/date'), require('date-fns'), require('@firestitch/datepicker'), require('@firestitch/store'), require('@angular/router'), require('@angular/common'), require('@angular/material/dialog'), require('@firestitch/drawer'), require('@angular/material/form-field'), require('@angular/material/select'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/forms'), require('@firestitch/form'), require('@angular/material/input'), require('@angular/material/autocomplete'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/icon'), require('@angular/cdk/portal'), require('@firestitch/chip'), require('@firestitch/label'), require('@firestitch/scroll'), require('@firestitch/autocomplete'), require('@firestitch/autocomplete-chips'), require('@firestitch/menu'), require('@firestitch/skeleton'), require('@firestitch/file'), require('@firestitch/popover'), require('@angular/cdk/overlay'), require('@angular/cdk/layout')) :
3
- typeof define === 'function' && define.amd ? define('@firestitch/filter', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@firestitch/common', 'lodash-es', '@firestitch/date', 'date-fns', '@firestitch/datepicker', '@firestitch/store', '@angular/router', '@angular/common', '@angular/material/dialog', '@firestitch/drawer', '@angular/material/form-field', '@angular/material/select', '@angular/material/core', '@angular/material/button', '@angular/forms', '@firestitch/form', '@angular/material/input', '@angular/material/autocomplete', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/icon', '@angular/cdk/portal', '@firestitch/chip', '@firestitch/label', '@firestitch/scroll', '@firestitch/autocomplete', '@firestitch/autocomplete-chips', '@firestitch/menu', '@firestitch/skeleton', '@firestitch/file', '@firestitch/popover', '@angular/cdk/overlay', '@angular/cdk/layout'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.filter = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.common, global.lodashEs, global.date, global.dateFns, global.i3, global.i1, global.ng.router, global.ng.common, global.ng.material.dialog, global.i6, global.ng.material.formField, global.ng.material.select, global.ng.material.core, global.ng.material.button, global.ng.forms, global.i7, global.ng.material.input, global.ng.material.autocomplete, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.icon, global.ng.cdk.portal, global.i2$1, global.i1$5, global.scroll, global.i4$1, global.i5, global.i3$4, global.i6$1, global.i4$3, global.i7$1, global.ng.cdk.overlay, global.ng.cdk.layout));
5
- })(this, (function (exports, i0, rxjs, operators, common, lodashEs, date, dateFns, i3, i1, i1$1, i3$1, i1$2, i6, i1$3, i2, i3$2, i1$4, i4, i7, i3$3, autocomplete, i4$2, chips, i2$2, portal, i2$1, i1$5, scroll, i4$1, i5, i3$4, i6$1, i4$3, i7$1, i1$6, i1$7) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@firestitch/common'), require('lodash-es'), require('@firestitch/date'), require('date-fns'), require('@firestitch/datepicker'), require('@firestitch/store'), require('@angular/router'), require('@angular/common'), require('@angular/material/dialog'), require('@firestitch/drawer'), require('@angular/material/form-field'), require('@angular/material/select'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/forms'), require('@firestitch/form'), require('@angular/material/input'), require('@angular/material/autocomplete'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/icon'), require('@angular/cdk/portal'), require('@firestitch/chip'), require('@firestitch/label'), require('@firestitch/scroll'), require('@firestitch/autocomplete'), require('@firestitch/autocomplete-chips'), require('@firestitch/menu'), require('@firestitch/skeleton'), require('@firestitch/file'), require('@firestitch/popover'), require('@angular/cdk/layout'), require('@angular/cdk/overlay')) :
3
+ typeof define === 'function' && define.amd ? define('@firestitch/filter', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@firestitch/common', 'lodash-es', '@firestitch/date', 'date-fns', '@firestitch/datepicker', '@firestitch/store', '@angular/router', '@angular/common', '@angular/material/dialog', '@firestitch/drawer', '@angular/material/form-field', '@angular/material/select', '@angular/material/core', '@angular/material/button', '@angular/forms', '@firestitch/form', '@angular/material/input', '@angular/material/autocomplete', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/icon', '@angular/cdk/portal', '@firestitch/chip', '@firestitch/label', '@firestitch/scroll', '@firestitch/autocomplete', '@firestitch/autocomplete-chips', '@firestitch/menu', '@firestitch/skeleton', '@firestitch/file', '@firestitch/popover', '@angular/cdk/layout', '@angular/cdk/overlay'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.filter = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.common, global.lodashEs, global.date, global.dateFns, global.i3, global.i1, global.ng.router, global.ng.common, global.ng.material.dialog, global.i6, global.ng.material.formField, global.ng.material.select, global.ng.material.core, global.ng.material.button, global.ng.forms, global.i7, global.ng.material.input, global.ng.material.autocomplete, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.icon, global.ng.cdk.portal, global.i2$1, global.i1$6, global.scroll, global.i4$1, global.i5, global.i3$4, global.i6$1, global.i4$3, global.i7$1, global.ng.cdk.layout, global.ng.cdk.overlay));
5
+ })(this, (function (exports, i0, rxjs, operators, common, lodashEs, date, dateFns, i3, i1, i1$1, i3$1, i1$2, i6, i1$3, i2, i3$2, i1$4, i4, i7, i3$3, autocomplete, i4$2, chips, i2$2, portal, i2$1, i1$6, scroll, i4$1, i5, i3$4, i6$1, i4$3, i7$1, i1$5, i1$7) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -39,14 +39,14 @@
39
39
  var i4__namespace$2 = /*#__PURE__*/_interopNamespace(i4$2);
40
40
  var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
41
41
  var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
42
- var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$5);
42
+ var i1__namespace$6 = /*#__PURE__*/_interopNamespace(i1$6);
43
43
  var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
44
44
  var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
45
45
  var i3__namespace$4 = /*#__PURE__*/_interopNamespace(i3$4);
46
46
  var i6__namespace$1 = /*#__PURE__*/_interopNamespace(i6$1);
47
47
  var i4__namespace$3 = /*#__PURE__*/_interopNamespace(i4$3);
48
48
  var i7__namespace$1 = /*#__PURE__*/_interopNamespace(i7$1);
49
- var i1__namespace$6 = /*#__PURE__*/_interopNamespace(i1$6);
49
+ var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$5);
50
50
  var i1__namespace$7 = /*#__PURE__*/_interopNamespace(i1$7);
51
51
 
52
52
  var QUERY_PARAM_DELIMITER = ':';
@@ -1059,6 +1059,51 @@
1059
1059
  return SimpleSelectItem;
1060
1060
  }(BaseSelectItem));
1061
1061
 
1062
+ exports.ActionMode = void 0;
1063
+ (function (ActionMode) {
1064
+ ActionMode["Button"] = "button";
1065
+ ActionMode["Menu"] = "menu";
1066
+ ActionMode["File"] = "file";
1067
+ })(exports.ActionMode || (exports.ActionMode = {}));
1068
+
1069
+ exports.ActionType = void 0;
1070
+ (function (ActionType) {
1071
+ ActionType["Basic"] = "basic";
1072
+ ActionType["Raised"] = "raised";
1073
+ ActionType["Icon"] = "icon";
1074
+ ActionType["Fab"] = "fab";
1075
+ ActionType["MiniFab"] = "mini-fab";
1076
+ ActionType["Flat"] = "flat";
1077
+ ActionType["Stroked"] = "stroked";
1078
+ })(exports.ActionType || (exports.ActionType = {}));
1079
+
1080
+ exports.ButtonStyle = void 0;
1081
+ (function (ButtonStyle) {
1082
+ ButtonStyle["Basic"] = "basic";
1083
+ ButtonStyle["Raised"] = "raised";
1084
+ ButtonStyle["Icon"] = "icon";
1085
+ ButtonStyle["Fab"] = "fab";
1086
+ ButtonStyle["MiniFab"] = "mini-fab";
1087
+ ButtonStyle["Flat"] = "flat";
1088
+ ButtonStyle["Stroked"] = "stroked";
1089
+ })(exports.ButtonStyle || (exports.ButtonStyle = {}));
1090
+
1091
+ exports.ItemDateMode = void 0;
1092
+ (function (ItemDateMode) {
1093
+ ItemDateMode["Calendar"] = "calendar";
1094
+ ItemDateMode["ScrollMonthYear"] = "monthyear";
1095
+ ItemDateMode["ScrollMonthDayYear"] = "monthdayyear";
1096
+ })(exports.ItemDateMode || (exports.ItemDateMode = {}));
1097
+
1098
+ var PickerViewType;
1099
+ (function (PickerViewType) {
1100
+ PickerViewType["Date"] = "date";
1101
+ PickerViewType["DateTime"] = "datetime";
1102
+ PickerViewType["Time"] = "time";
1103
+ PickerViewType["Week"] = "week";
1104
+ PickerViewType["MonthRange"] = "monthrange";
1105
+ })(PickerViewType || (PickerViewType = {}));
1106
+
1062
1107
  var SORT_BY_FIELD = 'sortName';
1063
1108
  var SORT_DIRECTION_FIELD = 'sortDirection';
1064
1109
  var FsFilterConfig = /** @class */ (function () {
@@ -1116,7 +1161,7 @@
1116
1161
  this.button.icon = 'tune';
1117
1162
  }
1118
1163
  if (this.button.style === undefined) {
1119
- this.button.style = 'raised';
1164
+ this.button.style = exports.ButtonStyle.Raised;
1120
1165
  }
1121
1166
  if (this.button.color === undefined) {
1122
1167
  this.button.color = 'default';
@@ -1551,13 +1596,6 @@
1551
1596
  return DateTimeRangeItem;
1552
1597
  }(BaseDateRangeItem));
1553
1598
 
1554
- exports.ItemDateMode = void 0;
1555
- (function (ItemDateMode) {
1556
- ItemDateMode["Calendar"] = "calendar";
1557
- ItemDateMode["ScrollMonthYear"] = "monthyear";
1558
- ItemDateMode["ScrollMonthDayYear"] = "monthdayyear";
1559
- })(exports.ItemDateMode || (exports.ItemDateMode = {}));
1560
-
1561
1599
  var BaseDateItem = /** @class */ (function (_super) {
1562
1600
  __extends(BaseDateItem, _super);
1563
1601
  function BaseDateItem() {
@@ -3075,1481 +3113,1468 @@
3075
3113
 
3076
3114
  var FS_FILTER_CONFIG = new i0.InjectionToken('fs.filter-config');
3077
3115
 
3078
- var FILTER_DRAWER_DATA = new i0.InjectionToken('fs.filter-drawer-data');
3079
-
3080
- var FILTER_DRAWER_OVERLAY = new i0.InjectionToken('fs.filter-drawer-overlay');
3081
-
3082
- var BaseItemComponent = /** @class */ (function () {
3083
- function BaseItemComponent(_kvDiffers, _cd) {
3084
- this._kvDiffers = _kvDiffers;
3085
- this._cd = _cd;
3086
- this.inline = false;
3087
- this._destroy$ = new rxjs.Subject();
3088
- this._debouncer$ = new rxjs.Subject();
3089
- this._kvDiffer = this._kvDiffers.find(this.item || {}).create();
3090
- this.listenWithDebounce();
3116
+ var ActionMenuItem = /** @class */ (function () {
3117
+ function ActionMenuItem(config, _parent) {
3118
+ if (config === void 0) { config = {}; }
3119
+ this._parent = _parent;
3120
+ this.items = [];
3121
+ this._isGroup = false;
3122
+ this._visible$ = new rxjs.BehaviorSubject(true);
3123
+ this._disabled$ = new rxjs.BehaviorSubject(false);
3124
+ this._init(config);
3091
3125
  }
3092
- Object.defineProperty(BaseItemComponent.prototype, "item", {
3126
+ Object.defineProperty(ActionMenuItem.prototype, "isGroup", {
3093
3127
  get: function () {
3094
- return this._item;
3128
+ return this._isGroup;
3129
+ },
3130
+ enumerable: false,
3131
+ configurable: true
3132
+ });
3133
+ Object.defineProperty(ActionMenuItem.prototype, "visible", {
3134
+ get: function () {
3135
+ return this._visible$.getValue();
3136
+ },
3137
+ enumerable: false,
3138
+ configurable: true
3139
+ });
3140
+ Object.defineProperty(ActionMenuItem.prototype, "visible$", {
3141
+ get: function () {
3142
+ return this._visible$.asObservable();
3143
+ },
3144
+ enumerable: false,
3145
+ configurable: true
3146
+ });
3147
+ Object.defineProperty(ActionMenuItem.prototype, "disabled", {
3148
+ get: function () {
3149
+ return this._disabled$.getValue();
3095
3150
  },
3096
3151
  set: function (value) {
3097
- this._item = value;
3152
+ this._disabled$.next(value);
3098
3153
  },
3099
3154
  enumerable: false,
3100
3155
  configurable: true
3101
3156
  });
3102
- ;
3103
- BaseItemComponent.prototype.ngDoCheck = function () {
3104
- if (this._kvDiffer) {
3105
- var changes = this._kvDiffer.diff(this.item);
3106
- if (changes) {
3107
- this._cd.detectChanges();
3108
- }
3157
+ Object.defineProperty(ActionMenuItem.prototype, "disabled$", {
3158
+ get: function () {
3159
+ return this._disabled$.asObservable();
3160
+ },
3161
+ enumerable: false,
3162
+ configurable: true
3163
+ });
3164
+ ActionMenuItem.prototype.updateVisibility = function () {
3165
+ var visible = !!this._showFn ? this._showFn() : true;
3166
+ if (!visible || !this.isGroup) {
3167
+ this._visible$.next(visible);
3168
+ return;
3109
3169
  }
3170
+ var numberOfVisibleChildren = this.items
3171
+ .reduce(function (acc, item) {
3172
+ item.updateVisibility();
3173
+ if (item.visible) {
3174
+ acc++;
3175
+ }
3176
+ return acc;
3177
+ }, 0);
3178
+ this._visible$.next(!!numberOfVisibleChildren);
3110
3179
  };
3111
- BaseItemComponent.prototype.ngOnChanges = function (changes) {
3112
- if (changes.item) {
3113
- if (Array.isArray(this.item.label)) {
3114
- this.label = this.item.label[0];
3180
+ ActionMenuItem.prototype._init = function (config) {
3181
+ var _this = this;
3182
+ this.label = config.label;
3183
+ this.icon = config.icon;
3184
+ this._showFn = config.show;
3185
+ if ('items' in config) {
3186
+ this._isGroup = true;
3187
+ if (Array.isArray(config.items)) {
3188
+ this.items = config
3189
+ .items
3190
+ .map(function (item) { return new ActionMenuItem(item, _this); });
3115
3191
  }
3116
- else {
3117
- this.label = this.item.label;
3192
+ this.updateVisibility();
3193
+ }
3194
+ else {
3195
+ this.click = config.click;
3196
+ this.routerLink = config.link;
3197
+ if (!this._parent) {
3198
+ this.updateVisibility();
3118
3199
  }
3119
3200
  }
3120
3201
  };
3121
- BaseItemComponent.prototype.ngOnDestroy = function () {
3122
- this._destroy$.next();
3123
- this._destroy$.complete();
3124
- };
3125
- BaseItemComponent.prototype.listenWithDebounce = function () {
3126
- var _this = this;
3127
- this._debouncer$
3128
- .pipe(operators.debounceTime(150), operators.takeUntil(this._destroy$))
3129
- .subscribe(function () {
3130
- _this.item.valueChanged();
3131
- });
3132
- };
3133
- BaseItemComponent.prototype.itemChange = function () {
3134
- this._debouncer$.next();
3135
- };
3136
- return BaseItemComponent;
3137
- }());
3138
- BaseItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: BaseItemComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3139
- BaseItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BaseItemComponent, selector: "base-item", inputs: { item: "item", inline: "inline" }, usesOnChanges: true, ngImport: i0__namespace, template: '', isInline: true, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3140
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: BaseItemComponent, decorators: [{
3141
- type: i0.Component,
3142
- args: [{
3143
- selector: 'base-item',
3144
- template: '',
3145
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3146
- }]
3147
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3148
- type: i0.Input
3149
- }], inline: [{
3150
- type: i0.Input
3151
- }] } });
3202
+ return ActionMenuItem;
3203
+ }());
3152
3204
 
3153
- var FocusControllerService = /** @class */ (function () {
3154
- function FocusControllerService() {
3155
- this._focusOn = new rxjs.BehaviorSubject(null);
3205
+ var Action = /** @class */ (function () {
3206
+ function Action(filterConfig, actionConfig) {
3207
+ if (actionConfig === void 0) { actionConfig = {}; }
3208
+ this.primary = true;
3209
+ this.isReorderAction = false;
3210
+ this.classArray = [];
3211
+ this.items = [];
3212
+ this._visible$ = new rxjs.BehaviorSubject(true);
3213
+ this._disabled$ = new rxjs.BehaviorSubject(false);
3214
+ this._init(filterConfig, actionConfig);
3156
3215
  }
3157
- Object.defineProperty(FocusControllerService.prototype, "focusOn$", {
3216
+ Object.defineProperty(Action.prototype, "visible", {
3158
3217
  get: function () {
3159
- return this._focusOn.asObservable();
3218
+ return this._visible$.getValue();
3160
3219
  },
3161
3220
  enumerable: false,
3162
3221
  configurable: true
3163
3222
  });
3164
- FocusControllerService.prototype.click = function (item, type) {
3165
- if (type === void 0) { type = null; }
3166
- this._focusOn.next({ item: item, type: type });
3167
- };
3168
- FocusControllerService.prototype.listenFocusFor$ = function (targetItem, targetType) {
3169
- var _this = this;
3170
- if (targetType === void 0) { targetType = null; }
3171
- return this._focusOn
3172
- .pipe(operators.filter(function (event) { return !!event; }), operators.filter(function (_a) {
3173
- var item = _a.item, type = _a.type;
3174
- return targetItem === item && targetType === type;
3175
- }), operators.tap(function () { return _this.clearFocus(); }));
3223
+ Object.defineProperty(Action.prototype, "visible$", {
3224
+ get: function () {
3225
+ return this._visible$.asObservable();
3226
+ },
3227
+ enumerable: false,
3228
+ configurable: true
3229
+ });
3230
+ Object.defineProperty(Action.prototype, "disabled", {
3231
+ get: function () {
3232
+ return this._disabled$.getValue();
3233
+ },
3234
+ set: function (value) {
3235
+ this._disabled$.next(value);
3236
+ },
3237
+ enumerable: false,
3238
+ configurable: true
3239
+ });
3240
+ Object.defineProperty(Action.prototype, "disabled$", {
3241
+ get: function () {
3242
+ return this._disabled$.asObservable();
3243
+ },
3244
+ enumerable: false,
3245
+ configurable: true
3246
+ });
3247
+ Action.prototype.updateVisibility = function () {
3248
+ var visible = !!this._showFn ? this._showFn() : true;
3249
+ if (!visible || this.mode !== exports.ActionMode.Menu) {
3250
+ this._visible$.next(visible);
3251
+ return;
3252
+ }
3253
+ var hasVisibleChildren = this.items.some(function (item) { return item.visible; });
3254
+ this._visible$.next(hasVisibleChildren);
3176
3255
  };
3177
- FocusControllerService.prototype.clearFocus = function () {
3178
- this._focusOn.next(null);
3256
+ Action.prototype.updateDisabledState = function () {
3257
+ if (this._disabledFn) {
3258
+ this.disabled = this._disabledFn();
3259
+ }
3179
3260
  };
3180
- return FocusControllerService;
3181
- }());
3182
- FocusControllerService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
3183
- FocusControllerService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService });
3184
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService, decorators: [{
3185
- type: i0.Injectable
3186
- }], ctorParameters: function () { return []; } });
3187
-
3188
- var FocusToItemDirective = /** @class */ (function () {
3189
- function FocusToItemDirective(_el, _focusController, _targetSelect, _targetDate, _targetDateScroll, _targetDateRangeFrom, _targetDateRangeTo, _targetAutocomplete, _targetAutocompleteChips) {
3190
- this._el = _el;
3191
- this._focusController = _focusController;
3192
- this._targetSelect = _targetSelect;
3193
- this._targetDate = _targetDate;
3194
- this._targetDateScroll = _targetDateScroll;
3195
- this._targetDateRangeFrom = _targetDateRangeFrom;
3196
- this._targetDateRangeTo = _targetDateRangeTo;
3197
- this._targetAutocomplete = _targetAutocomplete;
3198
- this._targetAutocompleteChips = _targetAutocompleteChips;
3199
- this._destroy$ = new rxjs.Subject();
3200
- }
3201
- FocusToItemDirective.prototype.ngOnInit = function () {
3202
- var _this = this;
3203
- this._focusController
3204
- .listenFocusFor$(this._item, this._focusTargetType)
3205
- .pipe(operators.delay(500), operators.takeUntil(this._destroy$))
3206
- .subscribe(function () {
3207
- _this._focus();
3208
- });
3209
- };
3210
- FocusToItemDirective.prototype.ngOnDestroy = function () {
3211
- this._destroy$.next();
3212
- this._destroy$.complete();
3213
- };
3214
- FocusToItemDirective.prototype._focus = function () {
3215
- switch (this._item.type) {
3216
- case exports.ItemType.Select:
3217
- {
3218
- this._targetSelect.open();
3219
- }
3220
- break;
3221
- case exports.ItemType.Text:
3222
- case exports.ItemType.Range:
3223
- {
3224
- this._el.nativeElement.focus();
3225
- }
3226
- break;
3227
- case exports.ItemType.Date:
3261
+ Action.prototype._init = function (filterConfig, config) {
3262
+ if (config === void 0) { config = {}; }
3263
+ var _a, _b, _c, _d, _e, _f;
3264
+ config.mode = (_a = config.mode) !== null && _a !== void 0 ? _a : exports.ActionMode.Button;
3265
+ this.primary = (_b = config.primary) !== null && _b !== void 0 ? _b : true;
3266
+ this.color = config.color;
3267
+ this.tooltip = config.tooltip;
3268
+ this.label = config.label;
3269
+ this.mode = config.mode;
3270
+ this.icon = config.icon;
3271
+ this.iconPlacement = config.iconPlacement;
3272
+ this._showFn = config.show;
3273
+ this.tabIndex = (_c = config.tabIndex) !== null && _c !== void 0 ? _c : 0;
3274
+ this.menu = config.menu;
3275
+ if (!this.type) {
3276
+ this.type = (config.type || ((_d = filterConfig.button) === null || _d === void 0 ? void 0 : _d.style) || exports.ActionType.Raised);
3277
+ if (this.type === exports.ActionType.Stroked && this.primary) {
3278
+ this.type = exports.ActionType.Flat;
3279
+ }
3280
+ }
3281
+ if (config.multiple !== undefined) {
3282
+ this.multiple = config.multiple;
3283
+ }
3284
+ if (config.className) {
3285
+ this.className = config.className;
3286
+ this.classArray = this.className
3287
+ .split(' ');
3288
+ }
3289
+ if (this.primary) {
3290
+ this.color = 'primary';
3291
+ }
3292
+ switch (config.mode) {
3293
+ case exports.ActionMode.Button:
3228
3294
  {
3229
- if (this._item.mode === exports.ItemDateMode.Calendar) {
3230
- this._targetDate.open();
3231
- }
3232
- else {
3233
- this._targetDateScroll.open();
3234
- }
3295
+ this.customize = config.customize;
3296
+ this.click = (_e = config.click) !== null && _e !== void 0 ? _e : (function () { });
3297
+ this._disabledFn = config.disabled;
3298
+ this.updateDisabledState();
3235
3299
  }
3236
3300
  break;
3237
- case exports.ItemType.DateRange:
3301
+ case exports.ActionMode.Menu:
3238
3302
  {
3239
- if (this._focusTargetType === 'from') {
3240
- this._targetDateRangeFrom.open();
3241
- }
3242
- else {
3243
- this._targetDateRangeTo.open();
3303
+ if (config.items && Array.isArray(config.items)) {
3304
+ this.items = config.items.map(function (item) { return new ActionMenuItem(item); });
3244
3305
  }
3245
3306
  }
3246
3307
  break;
3247
- case exports.ItemType.AutoComplete:
3248
- {
3249
- this._targetAutocomplete.focus();
3250
- }
3251
- break;
3252
- case exports.ItemType.AutoCompleteChips:
3308
+ case exports.ActionMode.File:
3253
3309
  {
3254
- this._targetAutocompleteChips.focus();
3310
+ this.fileSelected = config.select;
3311
+ this.fileError = config.error;
3312
+ this.accept = config.accept;
3313
+ this.imageQuality = config.imageQuality;
3314
+ this.minWidth = config.minWidth;
3315
+ this.minHeight = config.minHeight;
3316
+ this.maxWidth = config.maxWidth;
3317
+ this.maxHeight = config.maxHeight;
3318
+ this.click = (_f = config.click) !== null && _f !== void 0 ? _f : (function () { });
3319
+ this._disabledFn = config.disabled;
3320
+ this.updateDisabledState();
3255
3321
  }
3256
3322
  break;
3257
3323
  }
3324
+ this.updateVisibility();
3258
3325
  };
3259
- return FocusToItemDirective;
3260
- }());
3261
- FocusToItemDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusToItemDirective, deps: [{ token: i0__namespace.ElementRef }, { token: FocusControllerService }, { token: i2__namespace.MatSelect, optional: true, self: true }, { token: i3__namespace$3.FsDatePickerComponent, optional: true, self: true }, { token: i3__namespace$3.FsDateScrollPickerComponent, optional: true, self: true }, { token: i3__namespace$3.DateRangePickerFromComponent, optional: true, self: true }, { token: i3__namespace$3.DateRangePickerToComponent, optional: true, self: true }, { token: i4__namespace$1.FsAutocompleteComponent, optional: true, self: true }, { token: i5__namespace.FsAutocompleteChipsComponent, optional: true, self: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
3262
- FocusToItemDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: { _item: ["fsFilterFocusTrigger", "_item"], _focusTargetType: ["focusTargetType", "_focusTargetType"] }, ngImport: i0__namespace });
3263
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusToItemDirective, decorators: [{
3264
- type: i0.Directive,
3265
- args: [{
3266
- selector: '[fsFilterFocusTrigger]',
3267
- }]
3268
- }], ctorParameters: function () {
3269
- return [{ type: i0__namespace.ElementRef }, { type: FocusControllerService }, { type: i2__namespace.MatSelect, decorators: [{
3270
- type: i0.Optional
3271
- }, {
3272
- type: i0.Self
3273
- }] }, { type: i3__namespace$3.FsDatePickerComponent, decorators: [{
3274
- type: i0.Optional
3275
- }, {
3276
- type: i0.Self
3277
- }] }, { type: i3__namespace$3.FsDateScrollPickerComponent, decorators: [{
3278
- type: i0.Optional
3279
- }, {
3280
- type: i0.Self
3281
- }] }, { type: i3__namespace$3.DateRangePickerFromComponent, decorators: [{
3282
- type: i0.Optional
3283
- }, {
3284
- type: i0.Self
3285
- }] }, { type: i3__namespace$3.DateRangePickerToComponent, decorators: [{
3286
- type: i0.Optional
3287
- }, {
3288
- type: i0.Self
3289
- }] }, { type: i4__namespace$1.FsAutocompleteComponent, decorators: [{
3290
- type: i0.Optional
3291
- }, {
3292
- type: i0.Self
3293
- }] }, { type: i5__namespace.FsAutocompleteChipsComponent, decorators: [{
3294
- type: i0.Optional
3295
- }, {
3296
- type: i0.Self
3297
- }] }];
3298
- }, propDecorators: { _item: [{
3299
- type: i0.Input,
3300
- args: ['fsFilterFocusTrigger']
3301
- }], _focusTargetType: [{
3302
- type: i0.Input,
3303
- args: ['focusTargetType']
3304
- }] } });
3326
+ return Action;
3327
+ }());
3305
3328
 
3306
- var TextComponent = /** @class */ (function (_super) {
3307
- __extends(TextComponent, _super);
3308
- function TextComponent(_kvDiffers, _cd) {
3309
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3310
- _this._kvDiffers = _kvDiffers;
3311
- _this._cd = _cd;
3312
- _this.textControl = new i4.FormControl();
3313
- _this.destroy$ = new rxjs.Subject();
3314
- return _this;
3329
+ var ActionsController = /** @class */ (function () {
3330
+ function ActionsController(_breakpointObserver) {
3331
+ this._breakpointObserver = _breakpointObserver;
3332
+ this._visible$ = new rxjs.BehaviorSubject(false);
3333
+ this._actions$ = new rxjs.BehaviorSubject([]);
3334
+ this._menuActions$ = new rxjs.BehaviorSubject([]);
3335
+ this._destroy$ = new rxjs.Subject();
3336
+ this._mobileMedia = '(max-width: 799px)';
3337
+ this._allActions = [];
3338
+ this._listenMobileMedia();
3315
3339
  }
3316
- TextComponent.prototype.ngOnInit = function () {
3317
- this._listenControlValueChanges();
3318
- this._listenModelChanges();
3340
+ Object.defineProperty(ActionsController.prototype, "menuActions", {
3341
+ get: function () {
3342
+ return this._menuActions$.value;
3343
+ },
3344
+ enumerable: false,
3345
+ configurable: true
3346
+ });
3347
+ Object.defineProperty(ActionsController.prototype, "actions", {
3348
+ get: function () {
3349
+ return this._actions$.value;
3350
+ },
3351
+ enumerable: false,
3352
+ configurable: true
3353
+ });
3354
+ Object.defineProperty(ActionsController.prototype, "actions$", {
3355
+ get: function () {
3356
+ return this._actions$.asObservable();
3357
+ },
3358
+ enumerable: false,
3359
+ configurable: true
3360
+ });
3361
+ Object.defineProperty(ActionsController.prototype, "menuActions$", {
3362
+ get: function () {
3363
+ return this._menuActions$.asObservable();
3364
+ },
3365
+ enumerable: false,
3366
+ configurable: true
3367
+ });
3368
+ Object.defineProperty(ActionsController.prototype, "visible$", {
3369
+ get: function () {
3370
+ return this._visible$.asObservable();
3371
+ },
3372
+ enumerable: false,
3373
+ configurable: true
3374
+ });
3375
+ Object.defineProperty(ActionsController.prototype, "mobileMode", {
3376
+ get: function () {
3377
+ return this._breakpointObserver.isMatched(this._mobileMedia);
3378
+ },
3379
+ enumerable: false,
3380
+ configurable: true
3381
+ });
3382
+ ActionsController.prototype.ngOnDestroy = function () {
3383
+ this._destroy$.next();
3384
+ this._destroy$.complete();
3319
3385
  };
3320
- TextComponent.prototype.ngOnDestroy = function () {
3321
- this.destroy$.next();
3322
- this.destroy$.complete();
3386
+ ActionsController.prototype.setConfig = function (config) {
3387
+ this._config = config;
3388
+ this.initActions(config.actions);
3323
3389
  };
3324
- TextComponent.prototype._listenControlValueChanges = function () {
3390
+ ActionsController.prototype.initActions = function (rawActions) {
3325
3391
  var _this = this;
3326
- this.textControl.valueChanges
3327
- .pipe(operators.distinctUntilChanged(), operators.debounceTime(200), operators.takeUntil(this.destroy$))
3328
- .subscribe(function (value) {
3329
- _this.item.model = value;
3330
- });
3392
+ if (!rawActions || !Array.isArray(rawActions)) {
3393
+ return;
3394
+ }
3395
+ this.show();
3396
+ this._allActions = rawActions
3397
+ .map(function (action) { return new Action(_this._config, action); });
3398
+ if (this._reorderAction) {
3399
+ this._allActions.unshift(this._reorderAction);
3400
+ }
3401
+ this._classifyActions();
3331
3402
  };
3332
- TextComponent.prototype._listenModelChanges = function () {
3333
- var _this = this;
3334
- this._item.value$
3335
- .pipe(operators.takeUntil(this.destroy$))
3336
- .subscribe(function () {
3337
- _this.textControl.setValue(_this.item.model, { emitEvent: false });
3338
- });
3403
+ ActionsController.prototype.show = function () {
3404
+ this._visible$.next(true);
3339
3405
  };
3340
- return TextComponent;
3341
- }(BaseItemComponent));
3342
- TextComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: TextComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3343
- TextComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TextComponent, selector: "filter-item-text", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput [formControl]=\"textControl\" [fsFilterFocusTrigger]=\"item\">\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n</mat-form-field>\n", styles: [""], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3344
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: TextComponent, decorators: [{
3345
- type: i0.Component,
3346
- args: [{
3347
- selector: 'filter-item-text',
3348
- templateUrl: './text.component.html',
3349
- styleUrls: ['./text.component.scss'],
3350
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3351
- }]
3352
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3353
-
3354
- var FsFilterIsolateValues = /** @class */ (function () {
3355
- function FsFilterIsolateValues() {
3356
- }
3357
- FsFilterIsolateValues.prototype.transform = function (values, isolate) {
3358
- if (!isolate) {
3359
- return values;
3406
+ ActionsController.prototype.hide = function () {
3407
+ this._visible$.next(false);
3408
+ };
3409
+ ActionsController.prototype.addReorderAction = function (action) {
3410
+ this._allActions.unshift(action);
3411
+ action.isReorderAction = true;
3412
+ this._classifyAction(action);
3413
+ this._reorderAction = action;
3414
+ };
3415
+ ActionsController.prototype.clearActions = function () {
3416
+ this._allActions = [];
3417
+ this._setActions([]);
3418
+ this._setKebabActions([]);
3419
+ };
3420
+ ActionsController.prototype.updateActionsVisibility = function () {
3421
+ this._allActions.forEach(function (action) { return action.updateVisibility(); });
3422
+ this._classifyActions();
3423
+ };
3424
+ ActionsController.prototype.updateDisabledState = function () {
3425
+ this.actions.forEach(function (action) { return action.updateDisabledState(); });
3426
+ };
3427
+ ActionsController.prototype._setKebabActions = function (actions) {
3428
+ this._menuActions$.next(actions);
3429
+ };
3430
+ ActionsController.prototype._setActions = function (actions) {
3431
+ this._actions$.next(actions);
3432
+ };
3433
+ ActionsController.prototype._classifyActions = function () {
3434
+ var kebabActions = [];
3435
+ var actions = [];
3436
+ var mobileMode = this.mobileMode;
3437
+ this._allActions
3438
+ .filter(function (action) {
3439
+ return action.visible;
3440
+ })
3441
+ .forEach(function (action) {
3442
+ if (action.menu !== false && (action.menu || mobileMode)) {
3443
+ kebabActions.push(action);
3444
+ }
3445
+ else {
3446
+ actions.push(action);
3447
+ }
3448
+ });
3449
+ this._setKebabActions(kebabActions);
3450
+ this._setActions(actions);
3451
+ };
3452
+ ActionsController.prototype._classifyAction = function (action) {
3453
+ if (action.menu) {
3454
+ this._setKebabActions(__spreadArray(__spreadArray([], __read(this.menuActions)), [action]));
3360
3455
  }
3361
3456
  else {
3362
- return values.filter(function (value) {
3363
- return value.value !== isolate.value;
3364
- });
3457
+ this._setActions(__spreadArray(__spreadArray([], __read(this.actions)), [action]));
3365
3458
  }
3366
3459
  };
3367
- return FsFilterIsolateValues;
3460
+ ActionsController.prototype._listenMobileMedia = function () {
3461
+ var _this = this;
3462
+ this._breakpointObserver.observe(this._mobileMedia)
3463
+ .pipe(operators.skip(1), operators.takeUntil(this._destroy$))
3464
+ .subscribe(function () {
3465
+ _this._classifyActions();
3466
+ });
3467
+ };
3468
+ return ActionsController;
3368
3469
  }());
3369
- FsFilterIsolateValues.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
3370
- FsFilterIsolateValuespipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, name: "fsFilterIsolateValues" });
3371
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, decorators: [{
3372
- type: i0.Pipe,
3373
- args: [{
3374
- name: 'fsFilterIsolateValues'
3375
- }]
3376
- }] });
3470
+ ActionsController.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController, deps: [{ token: i1__namespace$5.BreakpointObserver }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
3471
+ ActionsControllerprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController });
3472
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController, decorators: [{
3473
+ type: i0.Injectable
3474
+ }], ctorParameters: function () { return [{ type: i1__namespace$5.BreakpointObserver }]; } });
3377
3475
 
3378
- var SelectMultipleComponent = /** @class */ (function () {
3379
- function SelectMultipleComponent(cd) {
3380
- this.cd = cd;
3476
+ var FILTER_DRAWER_DATA = new i0.InjectionToken('fs.filter-drawer-data');
3477
+
3478
+ var FILTER_DRAWER_OVERLAY = new i0.InjectionToken('fs.filter-drawer-overlay');
3479
+
3480
+ var BaseItemComponent = /** @class */ (function () {
3481
+ function BaseItemComponent(_kvDiffers, _cd) {
3482
+ this._kvDiffers = _kvDiffers;
3483
+ this._cd = _cd;
3484
+ this.inline = false;
3485
+ this._destroy$ = new rxjs.Subject();
3486
+ this._debouncer$ = new rxjs.Subject();
3487
+ this._kvDiffer = this._kvDiffers.find(this.item || {}).create();
3488
+ this.listenWithDebounce();
3381
3489
  }
3382
- SelectMultipleComponent.prototype.changed = function () {
3383
- if (this.item.isolate) {
3384
- this.item.isolate.enabled = false;
3385
- if (this.item.multiple && Array.isArray(this.item.model)) {
3386
- var index = this.item.model.indexOf(this.item.isolate.value);
3387
- if (index > -1) {
3388
- this.item.model.splice(index, 1);
3389
- }
3490
+ Object.defineProperty(BaseItemComponent.prototype, "item", {
3491
+ get: function () {
3492
+ return this._item;
3493
+ },
3494
+ set: function (value) {
3495
+ this._item = value;
3496
+ },
3497
+ enumerable: false,
3498
+ configurable: true
3499
+ });
3500
+ ;
3501
+ BaseItemComponent.prototype.ngDoCheck = function () {
3502
+ if (this._kvDiffer) {
3503
+ var changes = this._kvDiffer.diff(this.item);
3504
+ if (changes) {
3505
+ this._cd.detectChanges();
3390
3506
  }
3391
3507
  }
3392
3508
  };
3393
- SelectMultipleComponent.prototype.close = function () {
3394
- this.select.close();
3395
- };
3396
- SelectMultipleComponent.prototype.isolateChange = function (filter) {
3397
- if (filter.isolate.enabled) {
3398
- filter.model = filter.multiple ? [filter.isolate.value] : filter.isolate.value;
3399
- }
3400
- else {
3401
- if (filter.multiple) {
3402
- filter.model = filter.defaultValue ? filter.defaultValue : [];
3509
+ BaseItemComponent.prototype.ngOnChanges = function (changes) {
3510
+ if (changes.item) {
3511
+ if (Array.isArray(this.item.label)) {
3512
+ this.label = this.item.label[0];
3403
3513
  }
3404
3514
  else {
3405
- filter.model = filter.defaultValue ? filter.defaultValue : null;
3515
+ this.label = this.item.label;
3406
3516
  }
3407
3517
  }
3408
3518
  };
3409
- return SelectMultipleComponent;
3410
- }());
3411
- SelectMultipleComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectMultipleComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3412
- SelectMultipleComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectMultipleComponent, selector: "filter-item-select-multiple", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n <mat-option\n *ngFor=\"let item of item.values | fsFilterIsolateValues: item.isolate\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n\n <mat-hint>\n <div *ngIf=\"item.isolate\">\n <mat-checkbox (change)=\"isolateChange(item)\" [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">{{ item.isolate.label }}</span>\n </mat-checkbox>\n </div>\n </mat-hint>\n</mat-form-field>\n", styles: [".isolate{margin-bottom:25px}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsFilterIsolateValues": FsFilterIsolateValues }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3413
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectMultipleComponent, decorators: [{
3414
- type: i0.Component,
3415
- args: [{
3416
- selector: 'filter-item-select-multiple',
3417
- templateUrl: './multiple.component.html',
3418
- styleUrls: ['./multiple.component.scss'],
3419
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3420
- }]
3421
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3422
- type: i0.Input
3423
- }], select: [{
3424
- type: i0.ViewChild,
3425
- args: ['select', { static: true }]
3426
- }] } });
3427
-
3428
- var SelectSimpleComponent = /** @class */ (function () {
3429
- function SelectSimpleComponent(cd) {
3430
- this.cd = cd;
3431
- }
3432
- SelectSimpleComponent.prototype.changed = function () {
3433
- if (this.item.isolate) {
3434
- this.item.isolate.enabled = false;
3435
- }
3519
+ BaseItemComponent.prototype.ngOnDestroy = function () {
3520
+ this._destroy$.next();
3521
+ this._destroy$.complete();
3436
3522
  };
3437
- SelectSimpleComponent.prototype.isolateChange = function (filter) {
3438
- if (filter.isolate.enabled) {
3439
- filter.model = filter.isolate.value;
3440
- }
3441
- else {
3442
- filter.model = null;
3443
- }
3523
+ BaseItemComponent.prototype.listenWithDebounce = function () {
3524
+ var _this = this;
3525
+ this._debouncer$
3526
+ .pipe(operators.debounceTime(150), operators.takeUntil(this._destroy$))
3527
+ .subscribe(function () {
3528
+ _this.item.valueChanged();
3529
+ });
3444
3530
  };
3445
- return SelectSimpleComponent;
3446
- }());
3447
- SelectSimpleComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectSimpleComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3448
- SelectSimpleComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectSimpleComponent, selector: "filter-item-select-simple", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\">\n <mat-option *ngFor=\"let item of item.values | fsFilterIsolateValues: item.isolate\"\n [value]=\"item.value\"\n >\n {{ item.name }}\n </mat-option>\n </mat-select>\n\n <mat-hint>\n <div *ngIf=\"item.isolate\">\n <mat-checkbox (change)=\"isolateChange(item)\" [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">{{ item.isolate.label }}</span>\n </mat-checkbox>\n </div>\n </mat-hint>\n</mat-form-field>\n", styles: [".isolate{margin-bottom:25px}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsFilterIsolateValues": FsFilterIsolateValues }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3449
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectSimpleComponent, decorators: [{
3450
- type: i0.Component,
3451
- args: [{
3452
- selector: 'filter-item-select-simple',
3453
- templateUrl: './simple.component.html',
3454
- styleUrls: ['./simple.component.scss'],
3455
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3456
- }]
3457
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3458
- type: i0.Input
3459
- }], select: [{
3460
- type: i0.ViewChild,
3461
- args: ['select', { static: true }]
3462
- }] } });
3463
-
3464
- var SelectGroupsComponent = /** @class */ (function () {
3465
- function SelectGroupsComponent(cd) {
3466
- this.cd = cd;
3467
- }
3468
- SelectGroupsComponent.prototype.compare = function (o1, o2) {
3469
- return o1 == o2;
3531
+ BaseItemComponent.prototype.itemChange = function () {
3532
+ this._debouncer$.next();
3470
3533
  };
3471
- return SelectGroupsComponent;
3534
+ return BaseItemComponent;
3472
3535
  }());
3473
- SelectGroupsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectGroupsComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3474
- SelectGroupsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectGroupsComponent, selector: "filter-item-select-groups", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [compareWith]=\"compare\">\n <ng-container *ngFor=\"let selectItem of item.values\">\n <ng-container *ngIf=\"selectItem[item.children]; else simpleOption\">\n <mat-optgroup [label]=\"selectItem.name\">\n <mat-option *ngFor=\"let subItem of selectItem[item.children]\"\n [value]=\"subItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ subItem.name }}\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #simpleOption>\n <mat-option\n [value]=\"selectItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ selectItem.name }}\n </mat-option>\n </ng-template>\n </ng-container>\n </mat-select>\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3475
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectGroupsComponent, decorators: [{
3536
+ BaseItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: BaseItemComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3537
+ BaseItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BaseItemComponent, selector: "base-item", inputs: { item: "item", inline: "inline" }, usesOnChanges: true, ngImport: i0__namespace, template: '', isInline: true, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3538
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: BaseItemComponent, decorators: [{
3476
3539
  type: i0.Component,
3477
3540
  args: [{
3478
- selector: 'filter-item-select-groups',
3479
- templateUrl: './groups.component.html',
3541
+ selector: 'base-item',
3542
+ template: '',
3480
3543
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3481
3544
  }]
3482
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { select: [{
3483
- type: i0.ViewChild,
3484
- args: ['select', { static: true }]
3485
- }], item: [{
3545
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3546
+ type: i0.Input
3547
+ }], inline: [{
3486
3548
  type: i0.Input
3487
3549
  }] } });
3488
3550
 
3489
- var SelectComponent = /** @class */ (function (_super) {
3490
- __extends(SelectComponent, _super);
3491
- function SelectComponent(_kvDiffers, _cd) {
3492
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3493
- _this._kvDiffers = _kvDiffers;
3494
- _this._cd = _cd;
3495
- // For case when we have multiple selection with __all option
3496
- // If _all has been selected than we must disable all other items
3497
- _this.allItemsOptionSelected = false;
3498
- return _this;
3551
+ var FocusControllerService = /** @class */ (function () {
3552
+ function FocusControllerService() {
3553
+ this._focusOn = new rxjs.BehaviorSubject(null);
3499
3554
  }
3500
- Object.defineProperty(SelectComponent.prototype, "multipleSelectItem", {
3501
- get: function () {
3502
- return this.item;
3503
- },
3504
- enumerable: false,
3505
- configurable: true
3506
- });
3507
- Object.defineProperty(SelectComponent.prototype, "simpleSelectItem", {
3555
+ Object.defineProperty(FocusControllerService.prototype, "focusOn$", {
3508
3556
  get: function () {
3509
- return this.item;
3557
+ return this._focusOn.asObservable();
3510
3558
  },
3511
3559
  enumerable: false,
3512
3560
  configurable: true
3513
3561
  });
3514
- SelectComponent.prototype.ngOnChanges = function (changes) {
3515
- if (changes.item) {
3516
- this.values$ = this.item.values$;
3517
- }
3562
+ FocusControllerService.prototype.click = function (item, type) {
3563
+ if (type === void 0) { type = null; }
3564
+ this._focusOn.next({ item: item, type: type });
3518
3565
  };
3519
- SelectComponent.prototype.ngDoCheck = function () {
3520
- if (this._kvDiffer) {
3521
- var changes = this._kvDiffer.diff(this.item);
3522
- if (changes) {
3523
- this._cd.markForCheck();
3524
- if (this.selectedItem) {
3525
- this.selectedItem.cd.markForCheck();
3566
+ FocusControllerService.prototype.listenFocusFor$ = function (targetItem, targetType) {
3567
+ var _this = this;
3568
+ if (targetType === void 0) { targetType = null; }
3569
+ return this._focusOn
3570
+ .pipe(operators.filter(function (event) { return !!event; }), operators.filter(function (_a) {
3571
+ var item = _a.item, type = _a.type;
3572
+ return targetItem === item && targetType === type;
3573
+ }), operators.tap(function () { return _this.clearFocus(); }));
3574
+ };
3575
+ FocusControllerService.prototype.clearFocus = function () {
3576
+ this._focusOn.next(null);
3577
+ };
3578
+ return FocusControllerService;
3579
+ }());
3580
+ FocusControllerService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
3581
+ FocusControllerService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService });
3582
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusControllerService, decorators: [{
3583
+ type: i0.Injectable
3584
+ }], ctorParameters: function () { return []; } });
3585
+
3586
+ var FocusToItemDirective = /** @class */ (function () {
3587
+ function FocusToItemDirective(_el, _focusController, _targetSelect, _targetDate, _targetDateScroll, _targetDateRangeFrom, _targetDateRangeTo, _targetAutocomplete, _targetAutocompleteChips) {
3588
+ this._el = _el;
3589
+ this._focusController = _focusController;
3590
+ this._targetSelect = _targetSelect;
3591
+ this._targetDate = _targetDate;
3592
+ this._targetDateScroll = _targetDateScroll;
3593
+ this._targetDateRangeFrom = _targetDateRangeFrom;
3594
+ this._targetDateRangeTo = _targetDateRangeTo;
3595
+ this._targetAutocomplete = _targetAutocomplete;
3596
+ this._targetAutocompleteChips = _targetAutocompleteChips;
3597
+ this._destroy$ = new rxjs.Subject();
3598
+ }
3599
+ FocusToItemDirective.prototype.ngOnInit = function () {
3600
+ var _this = this;
3601
+ this._focusController
3602
+ .listenFocusFor$(this._item, this._focusTargetType)
3603
+ .pipe(operators.delay(500), operators.takeUntil(this._destroy$))
3604
+ .subscribe(function () {
3605
+ _this._focus();
3606
+ });
3607
+ };
3608
+ FocusToItemDirective.prototype.ngOnDestroy = function () {
3609
+ this._destroy$.next();
3610
+ this._destroy$.complete();
3611
+ };
3612
+ FocusToItemDirective.prototype._focus = function () {
3613
+ switch (this._item.type) {
3614
+ case exports.ItemType.Select:
3615
+ {
3616
+ this._targetSelect.open();
3526
3617
  }
3527
- }
3618
+ break;
3619
+ case exports.ItemType.Text:
3620
+ case exports.ItemType.Range:
3621
+ {
3622
+ this._el.nativeElement.focus();
3623
+ }
3624
+ break;
3625
+ case exports.ItemType.Date:
3626
+ {
3627
+ if (this._item.mode === exports.ItemDateMode.Calendar) {
3628
+ this._targetDate.open();
3629
+ }
3630
+ else {
3631
+ this._targetDateScroll.open();
3632
+ }
3633
+ }
3634
+ break;
3635
+ case exports.ItemType.DateRange:
3636
+ {
3637
+ if (this._focusTargetType === 'from') {
3638
+ this._targetDateRangeFrom.open();
3639
+ }
3640
+ else {
3641
+ this._targetDateRangeTo.open();
3642
+ }
3643
+ }
3644
+ break;
3645
+ case exports.ItemType.AutoComplete:
3646
+ {
3647
+ this._targetAutocomplete.focus();
3648
+ }
3649
+ break;
3650
+ case exports.ItemType.AutoCompleteChips:
3651
+ {
3652
+ this._targetAutocompleteChips.focus();
3653
+ }
3654
+ break;
3528
3655
  }
3529
3656
  };
3530
- return SelectComponent;
3531
- }(BaseItemComponent));
3532
- SelectComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3533
- SelectComponentcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectComponent, selector: "filter-item-select", viewQueries: [{ propertyName: "selectedItem", first: true, predicate: ["selectItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: "<ng-container *ngIf=\"(item.loading$ | async) else itemSelect\">\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select disabled></mat-select>\n </mat-form-field>\n</ng-container>\n\n<ng-template #itemSelect>\n <ng-container *ngIf=\"(values$ | async)?.length\">\n <ng-container *ngIf=\"item.multiple && !item.children\">\n <filter-item-select-multiple\n [item]=\"multipleSelectItem\"\n #selectItem>\n </filter-item-select-multiple>\n </ng-container>\n\n <ng-container *ngIf=\"!item.multiple && !item.children\">\n <filter-item-select-simple\n [item]=\"simpleSelectItem\"\n #selectItem>\n </filter-item-select-simple>\n </ng-container>\n\n <ng-container *ngIf=\"item.children\">\n <filter-item-select-groups\n [item]=\"item\"\n #selectItem>\n </filter-item-select-groups>\n </ng-container>\n </ng-container>\n</ng-template>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: SelectMultipleComponent, selector: "filter-item-select-multiple", inputs: ["item"] }, { type: SelectSimpleComponent, selector: "filter-item-select-simple", inputs: ["item"] }, { type: SelectGroupsComponent, selector: "filter-item-select-groups", inputs: ["item"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3534
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectComponent, decorators: [{
3535
- type: i0.Component,
3657
+ return FocusToItemDirective;
3658
+ }());
3659
+ FocusToItemDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusToItemDirective, deps: [{ token: i0__namespace.ElementRef }, { token: FocusControllerService }, { token: i2__namespace.MatSelect, optional: true, self: true }, { token: i3__namespace$3.FsDatePickerComponent, optional: true, self: true }, { token: i3__namespace$3.FsDateScrollPickerComponent, optional: true, self: true }, { token: i3__namespace$3.DateRangePickerFromComponent, optional: true, self: true }, { token: i3__namespace$3.DateRangePickerToComponent, optional: true, self: true }, { token: i4__namespace$1.FsAutocompleteComponent, optional: true, self: true }, { token: i5__namespace.FsAutocompleteChipsComponent, optional: true, self: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
3660
+ FocusToItemDirectivedir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: { _item: ["fsFilterFocusTrigger", "_item"], _focusTargetType: ["focusTargetType", "_focusTargetType"] }, ngImport: i0__namespace });
3661
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FocusToItemDirective, decorators: [{
3662
+ type: i0.Directive,
3536
3663
  args: [{
3537
- selector: 'filter-item-select',
3538
- templateUrl: './select.component.html',
3539
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3664
+ selector: '[fsFilterFocusTrigger]',
3540
3665
  }]
3541
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { selectedItem: [{
3542
- type: i0.ViewChild,
3543
- args: ['selectItem']
3666
+ }], ctorParameters: function () {
3667
+ return [{ type: i0__namespace.ElementRef }, { type: FocusControllerService }, { type: i2__namespace.MatSelect, decorators: [{
3668
+ type: i0.Optional
3669
+ }, {
3670
+ type: i0.Self
3671
+ }] }, { type: i3__namespace$3.FsDatePickerComponent, decorators: [{
3672
+ type: i0.Optional
3673
+ }, {
3674
+ type: i0.Self
3675
+ }] }, { type: i3__namespace$3.FsDateScrollPickerComponent, decorators: [{
3676
+ type: i0.Optional
3677
+ }, {
3678
+ type: i0.Self
3679
+ }] }, { type: i3__namespace$3.DateRangePickerFromComponent, decorators: [{
3680
+ type: i0.Optional
3681
+ }, {
3682
+ type: i0.Self
3683
+ }] }, { type: i3__namespace$3.DateRangePickerToComponent, decorators: [{
3684
+ type: i0.Optional
3685
+ }, {
3686
+ type: i0.Self
3687
+ }] }, { type: i4__namespace$1.FsAutocompleteComponent, decorators: [{
3688
+ type: i0.Optional
3689
+ }, {
3690
+ type: i0.Self
3691
+ }] }, { type: i5__namespace.FsAutocompleteChipsComponent, decorators: [{
3692
+ type: i0.Optional
3693
+ }, {
3694
+ type: i0.Self
3695
+ }] }];
3696
+ }, propDecorators: { _item: [{
3697
+ type: i0.Input,
3698
+ args: ['fsFilterFocusTrigger']
3699
+ }], _focusTargetType: [{
3700
+ type: i0.Input,
3701
+ args: ['focusTargetType']
3544
3702
  }] } });
3545
3703
 
3546
- var ChipsComponent = /** @class */ (function (_super) {
3547
- __extends(ChipsComponent, _super);
3548
- function ChipsComponent(_kvDiffers, _cd) {
3704
+ var TextComponent = /** @class */ (function (_super) {
3705
+ __extends(TextComponent, _super);
3706
+ function TextComponent(_kvDiffers, _cd) {
3549
3707
  var _this = _super.call(this, _kvDiffers, _cd) || this;
3550
3708
  _this._kvDiffers = _kvDiffers;
3551
3709
  _this._cd = _cd;
3710
+ _this.textControl = new i4.FormControl();
3711
+ _this.destroy$ = new rxjs.Subject();
3552
3712
  return _this;
3553
3713
  }
3554
- ChipsComponent.prototype.modelChange = function () {
3555
- this.itemChange();
3714
+ TextComponent.prototype.ngOnInit = function () {
3715
+ this._listenControlValueChanges();
3716
+ this._listenModelChanges();
3556
3717
  };
3557
- ChipsComponent.prototype.compareFn = function (modelValue, chipValue) {
3558
- return modelValue.value === chipValue.value;
3718
+ TextComponent.prototype.ngOnDestroy = function () {
3719
+ this.destroy$.next();
3720
+ this.destroy$.complete();
3559
3721
  };
3560
- return ChipsComponent;
3561
- }(BaseItemComponent));
3562
- ChipsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ChipsComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3563
- ChipsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipsComponent, selector: "filter-item-chips", usesInheritance: true, ngImport: i0__namespace, template: "<ng-template [ngIf]=\"item.values?.length\">\n <fs-label-field>\n <fs-label>{{item.label}}</fs-label>\n <fs-chips [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n <fs-chip *ngFor=\"let value of item.values\"\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n </fs-chips>\n </fs-label-field>\n</ng-template>\n\n<ng-template [ngIf]=\"item.loading\">{{ item.label }} loading...</ng-template>\n", styles: ["fs-chip{line-height:40px}\n"], components: [{ type: i1__namespace$5.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i1__namespace$5.FsLabelComponent, selector: "fs-label" }, { type: i2__namespace$1.FsChipsComponent, selector: "fs-chips", inputs: ["compare", "multiple"] }, { type: i2__namespace$1.FsChipComponent, selector: "fs-chip", inputs: ["size", "value", "backgroundColor", "borderColor", "color", "outlined", "removable", "selectable", "selected", "image"], outputs: ["selectedToggled", "removed"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3564
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ChipsComponent, decorators: [{
3565
- type: i0.Component,
3566
- args: [{
3567
- selector: 'filter-item-chips',
3568
- templateUrl: './chips.component.html',
3569
- styleUrls: ['./chips.component.scss'],
3570
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3571
- }]
3572
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3573
-
3574
- var RangeComponent = /** @class */ (function (_super) {
3575
- __extends(RangeComponent, _super);
3576
- function RangeComponent(_kvDiffers, _cd) {
3577
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3578
- _this._kvDiffers = _kvDiffers;
3579
- _this._cd = _cd;
3580
- return _this;
3581
- }
3582
- RangeComponent.prototype.ngOnInit = function () {
3583
- this.listenChanges();
3722
+ TextComponent.prototype._listenControlValueChanges = function () {
3723
+ var _this = this;
3724
+ this.textControl.valueChanges
3725
+ .pipe(operators.distinctUntilChanged(), operators.debounceTime(200), operators.takeUntil(this.destroy$))
3726
+ .subscribe(function (value) {
3727
+ _this.item.model = value;
3728
+ });
3584
3729
  };
3585
- RangeComponent.prototype.listenChanges = function () {
3730
+ TextComponent.prototype._listenModelChanges = function () {
3586
3731
  var _this = this;
3587
- var fromListener = rxjs.fromEvent(this.from.nativeElement, 'keyup')
3588
- .pipe(operators.distinctUntilChanged());
3589
- var toListener = rxjs.fromEvent(this.to.nativeElement, 'keyup')
3590
- .pipe(operators.distinctUntilChanged());
3591
- rxjs.merge(fromListener, toListener)
3592
- .pipe(operators.takeUntil(this._destroy$))
3732
+ this._item.value$
3733
+ .pipe(operators.takeUntil(this.destroy$))
3593
3734
  .subscribe(function () {
3594
- _this.itemChange();
3735
+ _this.textControl.setValue(_this.item.model, { emitEvent: false });
3595
3736
  });
3596
3737
  };
3597
- return RangeComponent;
3738
+ return TextComponent;
3598
3739
  }(BaseItemComponent));
3599
- RangeComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: RangeComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3600
- RangeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: RangeComponent, selector: "filter-item-range", viewQueries: [{ propertyName: "from", first: true, predicate: ["from"], descendants: true, static: true }, { propertyName: "to", first: true, predicate: ["to"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<div class=\"fs-row form-field\">\n <mat-form-field class=\"filter-range-min\">\n <mat-label>{{item.label[0]}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n </mat-form-field>\n\n <mat-form-field class=\"filter-range-max\">\n <mat-label>{{item.label[1]}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n </mat-form-field>\n</div>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3601
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: RangeComponent, decorators: [{
3740
+ TextComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: TextComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3741
+ TextComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TextComponent, selector: "filter-item-text", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput [formControl]=\"textControl\" [fsFilterFocusTrigger]=\"item\">\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n</mat-form-field>\n", styles: [""], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3742
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: TextComponent, decorators: [{
3602
3743
  type: i0.Component,
3603
3744
  args: [{
3604
- selector: 'filter-item-range',
3605
- templateUrl: './range.component.html',
3745
+ selector: 'filter-item-text',
3746
+ templateUrl: './text.component.html',
3747
+ styleUrls: ['./text.component.scss'],
3606
3748
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3607
3749
  }]
3608
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { from: [{
3609
- type: i0.ViewChild,
3610
- args: ['from', { static: true }]
3611
- }], to: [{
3612
- type: i0.ViewChild,
3613
- args: ['to', { static: true }]
3614
- }] } });
3750
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3615
3751
 
3616
- var AutocompleteComponent = /** @class */ (function (_super) {
3617
- __extends(AutocompleteComponent, _super);
3618
- function AutocompleteComponent(_kvDiffers, _cd) {
3619
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3620
- _this._kvDiffers = _kvDiffers;
3621
- _this._cd = _cd;
3622
- _this.displayWith = function (data) {
3623
- return data ? data.name : data;
3624
- };
3625
- _this.fetch = function (keyword) {
3626
- return _this.item.valuesFn(keyword);
3627
- };
3628
- return _this;
3752
+ var FsFilterIsolateValues = /** @class */ (function () {
3753
+ function FsFilterIsolateValues() {
3629
3754
  }
3630
- return AutocompleteComponent;
3631
- }(BaseItemComponent));
3632
- AutocompleteComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompleteComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3633
- AutocompleteComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AutocompleteComponent, selector: "filter-item-autocomplete", usesInheritance: true, ngImport: i0__namespace, template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"item\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.model\"\n [placeholder]=\"label\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearAllowed\"\n name=\"item.name\">\n <ng-template fsAutocompleteTemplate let-data=\"data\">\n {{data.name}}\n </ng-template>\n</fs-autocomplete>\n", components: [{ type: i4__namespace$1.FsAutocompleteComponent, selector: "fs-autocomplete", inputs: ["fetch", "placeholder", "displayWith", "fetchOnFocus", "readonly", "required", "disabled", "hint", "panelWidth", "panelClass", "showClear"], outputs: ["cleared"] }], directives: [{ type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4__namespace$1.FsAutocompleteTemplateDirective, selector: "[fsAutocompleteTemplate]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3634
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompleteComponent, decorators: [{
3635
- type: i0.Component,
3755
+ FsFilterIsolateValues.prototype.transform = function (values, isolate) {
3756
+ if (!isolate) {
3757
+ return values;
3758
+ }
3759
+ else {
3760
+ return values.filter(function (value) {
3761
+ return value.value !== isolate.value;
3762
+ });
3763
+ }
3764
+ };
3765
+ return FsFilterIsolateValues;
3766
+ }());
3767
+ FsFilterIsolateValues.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
3768
+ FsFilterIsolateValues.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, name: "fsFilterIsolateValues" });
3769
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterIsolateValues, decorators: [{
3770
+ type: i0.Pipe,
3636
3771
  args: [{
3637
- selector: 'filter-item-autocomplete',
3638
- templateUrl: './autocomplete.component.html',
3639
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3772
+ name: 'fsFilterIsolateValues'
3640
3773
  }]
3641
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3774
+ }] });
3642
3775
 
3643
- var AutocompletechipsComponent = /** @class */ (function (_super) {
3644
- __extends(AutocompletechipsComponent, _super);
3645
- function AutocompletechipsComponent(_kvDiffers, _cd) {
3646
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3647
- _this._kvDiffers = _kvDiffers;
3648
- _this._cd = _cd;
3649
- _this.fetch = function (keyword) {
3650
- return _this.item.valuesFn(keyword);
3651
- };
3652
- return _this;
3776
+ var SelectMultipleComponent = /** @class */ (function () {
3777
+ function SelectMultipleComponent(cd) {
3778
+ this.cd = cd;
3653
3779
  }
3654
- // SP-T1747
3655
- AutocompletechipsComponent.prototype.clicked = function () {
3656
- this.chipBackground = this.item.chipBackground;
3657
- this.chipColor = this.item.chipColor;
3658
- this.chipIcon = this.item.chipIcon;
3659
- this._cd.markForCheck();
3660
- };
3661
- AutocompletechipsComponent.prototype.addAutocompleteChipItem = function (event) {
3662
- if (event.data && this.item.model.indexOf(event.data.value) === -1) {
3663
- this.item.model.push(event.data);
3664
- this.itemChange();
3780
+ SelectMultipleComponent.prototype.changed = function () {
3781
+ if (this.item.isolate) {
3782
+ this.item.isolate.enabled = false;
3783
+ if (this.item.multiple && Array.isArray(this.item.model)) {
3784
+ var index = this.item.model.indexOf(this.item.isolate.value);
3785
+ if (index > -1) {
3786
+ this.item.model.splice(index, 1);
3787
+ }
3788
+ }
3665
3789
  }
3666
3790
  };
3667
- AutocompletechipsComponent.prototype.removeAutocompleteChipItem = function (event) {
3668
- common.remove(this.item.model, { value: event.data.value });
3669
- this.itemChange();
3670
- };
3671
- AutocompletechipsComponent.prototype.clearAutocompleteChipItem = function () {
3672
- this.item.clear();
3673
- this.itemChange();
3674
- };
3675
- AutocompletechipsComponent.prototype.compareItems = function (item1, item2) {
3676
- return (item1 === null || item1 === void 0 ? void 0 : item1.value) === (item2 === null || item2 === void 0 ? void 0 : item2.value);
3791
+ SelectMultipleComponent.prototype.close = function () {
3792
+ this.select.close();
3677
3793
  };
3678
- return AutocompletechipsComponent;
3679
- }(BaseItemComponent));
3680
- AutocompletechipsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompletechipsComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3681
- AutocompletechipsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AutocompletechipsComponent, selector: "filter-item-autocompletechips", usesInheritance: true, ngImport: i0__namespace, template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"item\"\n [fetch]=\"fetch\"\n [ngModel]=\"item.model\"\n (selected)=\"addAutocompleteChipItem($event)\"\n (removed)=\"removeAutocompleteChipItem($event)\"\n (clear)=\"clearAutocompleteChipItem()\"\n (click)=\"clicked()\"\n [allowText]=\"false\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [placeholder]=\"label\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"chipColor\"\n [chipIconColor]=\"chipIcon\"\n [chipBackground]=\"chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearAllowed\"\n [removable]=\"item.clearAllowed\"\n [compareWith]=\"compareItems\"\n [panelWidth]=\"300\"\n name=\"model\">\n <ng-template fsAutocompleteObject let-object=\"object\">\n {{ object.name }}\n </ng-template>\n</fs-autocomplete-chips>\n\n<!--<mat-form-field floatLabel=\"auto\">\n <mat-label>{{item.label}}</mat-label>\n <mat-chip-list #chipList>\n <mat-chip *ngFor=\"let item of item.model\"\n (removed)=\"removeAutocompleteChipItem(item)\">\n {{ item.name }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input #chipsInput\n type=\"text\"\n matInput\n [(ngModel)]=\"item.selectedValue\"\n (ngModelChange)=\"onAutocompleteChipsChange(chipsInput)\"\n [name]=\"item.name\"\n [matChipInputFor]=\"chipList\"\n [matAutocomplete]=\"autocompleteChipsInput\">\n </mat-chip-list>\n\n <mat-autocomplete #autocompleteChipsInput=\"matAutocomplete\"\n (optionSelected)=\"addAutocompleteChipItem( $event)\"\n >\n <mat-option *ngFor=\"let item of item.values$ | async\" [value]=\"item\">\n {{ item.name }}\n </mat-option>\n </mat-autocomplete>\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>-->\n", components: [{ type: i5__namespace.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "readonly", "size", "placeholder", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "hint", "allowText", "allowObject", "delay", "validateText", "removable", "allowClear", "color", "background", "orderable", "limit", "initOnClick", "fetchOnFocus", "multiple", "confirm", "panelClass", "compareWith", "disabled", "panelWidth"], outputs: ["selected", "removed", "reordered", "clear"] }], directives: [{ type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5__namespace.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3682
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompletechipsComponent, decorators: [{
3683
- type: i0.Component,
3684
- args: [{
3685
- selector: 'filter-item-autocompletechips',
3686
- templateUrl: './autocompletechips.component.html',
3687
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3688
- }]
3689
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3690
-
3691
- var PickerViewType;
3692
- (function (PickerViewType) {
3693
- PickerViewType["Date"] = "date";
3694
- PickerViewType["DateTime"] = "datetime";
3695
- PickerViewType["Time"] = "time";
3696
- PickerViewType["Week"] = "week";
3697
- PickerViewType["MonthRange"] = "monthrange";
3698
- })(PickerViewType || (PickerViewType = {}));
3699
-
3700
- var DateComponent = /** @class */ (function (_super) {
3701
- __extends(DateComponent, _super);
3702
- function DateComponent(_kvDiffers, _cd) {
3703
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3704
- _this._kvDiffers = _kvDiffers;
3705
- _this._cd = _cd;
3706
- _this.viewType = PickerViewType.Date;
3707
- _this.itemDateMode = exports.ItemDateMode;
3708
- _this.showYear = true;
3709
- _this.showMonth = true;
3710
- _this.showDay = true;
3711
- return _this;
3712
- }
3713
- DateComponent.prototype.ngOnInit = function () {
3714
- if (this.item.type === exports.ItemType.DateTime) {
3715
- this.viewType = PickerViewType.DateTime;
3794
+ SelectMultipleComponent.prototype.isolateChange = function (filter) {
3795
+ if (filter.isolate.enabled) {
3796
+ filter.model = filter.multiple ? [filter.isolate.value] : filter.isolate.value;
3716
3797
  }
3717
3798
  else {
3718
- this.viewType = PickerViewType.Date;
3719
- }
3720
- if (this.item.mode === exports.ItemDateMode.ScrollMonthYear) {
3721
- this.showDay = false;
3799
+ if (filter.multiple) {
3800
+ filter.model = filter.defaultValue ? filter.defaultValue : [];
3801
+ }
3802
+ else {
3803
+ filter.model = filter.defaultValue ? filter.defaultValue : null;
3804
+ }
3722
3805
  }
3723
3806
  };
3724
- return DateComponent;
3725
- }(BaseItemComponent));
3726
- DateComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3727
- DateComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DateComponent, selector: "filter-item-date", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field *ngIf=\"item.mode===itemDateMode.Calendar; else elseMode\">\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>\n\n<ng-template #elseMode>\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDateScrollPicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n </mat-form-field>\n</ng-template>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { type: i3__namespace$3.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "maxDate", "showMonth", "showYear", "showDay"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$3.MatPlaceholder, selector: "mat-placeholder" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3728
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateComponent, decorators: [{
3807
+ return SelectMultipleComponent;
3808
+ }());
3809
+ SelectMultipleComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectMultipleComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3810
+ SelectMultipleComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectMultipleComponent, selector: "filter-item-select-multiple", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n <mat-option\n *ngFor=\"let item of item.values | fsFilterIsolateValues: item.isolate\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n\n <mat-hint>\n <div *ngIf=\"item.isolate\">\n <mat-checkbox (change)=\"isolateChange(item)\" [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">{{ item.isolate.label }}</span>\n </mat-checkbox>\n </div>\n </mat-hint>\n</mat-form-field>\n", styles: [".isolate{margin-bottom:25px}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsFilterIsolateValues": FsFilterIsolateValues }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3811
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectMultipleComponent, decorators: [{
3729
3812
  type: i0.Component,
3730
3813
  args: [{
3731
- selector: 'filter-item-date',
3732
- templateUrl: './date.component.html',
3814
+ selector: 'filter-item-select-multiple',
3815
+ templateUrl: './multiple.component.html',
3816
+ styleUrls: ['./multiple.component.scss'],
3733
3817
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3734
3818
  }]
3735
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3819
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3820
+ type: i0.Input
3821
+ }], select: [{
3822
+ type: i0.ViewChild,
3823
+ args: ['select', { static: true }]
3824
+ }] } });
3736
3825
 
3737
- var DateRangeComponent = /** @class */ (function (_super) {
3738
- __extends(DateRangeComponent, _super);
3739
- function DateRangeComponent(_kvDiffers, _cd) {
3740
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3741
- _this._kvDiffers = _kvDiffers;
3742
- _this._cd = _cd;
3743
- _this.viewType = PickerViewType.Date;
3744
- return _this;
3826
+ var SelectSimpleComponent = /** @class */ (function () {
3827
+ function SelectSimpleComponent(cd) {
3828
+ this.cd = cd;
3745
3829
  }
3746
- DateRangeComponent.prototype.ngOnInit = function () {
3747
- if (this.item.type === exports.ItemType.DateTimeRange) {
3748
- this.viewType = PickerViewType.DateTime;
3830
+ SelectSimpleComponent.prototype.changed = function () {
3831
+ if (this.item.isolate) {
3832
+ this.item.isolate.enabled = false;
3833
+ }
3834
+ };
3835
+ SelectSimpleComponent.prototype.isolateChange = function (filter) {
3836
+ if (filter.isolate.enabled) {
3837
+ filter.model = filter.isolate.value;
3749
3838
  }
3750
3839
  else {
3751
- this.viewType = PickerViewType.Date;
3840
+ filter.model = null;
3752
3841
  }
3753
3842
  };
3754
- return DateRangeComponent;
3755
- }(BaseItemComponent));
3756
- DateRangeComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateRangeComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3757
- DateRangeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DateRangeComponent, selector: "filter-item-date-range", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label[0]}}</mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"item.model.from\"\n (ngModelChange)=\"itemChange()\"\n [clear]=\"item.clearAllowed\"\n [view]=\"viewType\"\n name=\"date_from\">\n</mat-form-field>\n\n<mat-form-field>\n <mat-label>{{item.label[1]}}</mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"item.model.to\"\n (ngModelChange)=\"itemChange()\"\n [clear]=\"item.clearAllowed\"\n [view]=\"viewType\"\n name=\"date_to\">\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.DateRangePickerFromComponent, selector: "[fsDateRangeFrom],[fsDateRangeFromPicker]", inputs: ["fsDateRangeFrom", "fsDateRangeFromPicker"] }, { type: i3__namespace$3.DateRangePickerToComponent, selector: "[fsDateRangeTo],[fsDateRangeToPicker]", inputs: ["fsDateRangeTo", "fsDateRangeToPicker"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3758
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateRangeComponent, decorators: [{
3843
+ return SelectSimpleComponent;
3844
+ }());
3845
+ SelectSimpleComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectSimpleComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3846
+ SelectSimpleComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectSimpleComponent, selector: "filter-item-select-simple", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\">\n <mat-option *ngFor=\"let item of item.values | fsFilterIsolateValues: item.isolate\"\n [value]=\"item.value\"\n >\n {{ item.name }}\n </mat-option>\n </mat-select>\n\n <mat-hint>\n <div *ngIf=\"item.isolate\">\n <mat-checkbox (change)=\"isolateChange(item)\" [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">{{ item.isolate.label }}</span>\n </mat-checkbox>\n </div>\n </mat-hint>\n</mat-form-field>\n", styles: [".isolate{margin-bottom:25px}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsFilterIsolateValues": FsFilterIsolateValues }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3847
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectSimpleComponent, decorators: [{
3759
3848
  type: i0.Component,
3760
3849
  args: [{
3761
- selector: 'filter-item-date-range',
3762
- templateUrl: './date-range.component.html',
3850
+ selector: 'filter-item-select-simple',
3851
+ templateUrl: './simple.component.html',
3852
+ styleUrls: ['./simple.component.scss'],
3763
3853
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3764
3854
  }]
3765
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3855
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3856
+ type: i0.Input
3857
+ }], select: [{
3858
+ type: i0.ViewChild,
3859
+ args: ['select', { static: true }]
3860
+ }] } });
3766
3861
 
3767
- var WeekComponent = /** @class */ (function (_super) {
3768
- __extends(WeekComponent, _super);
3769
- function WeekComponent(_kvDiffers, _cd) {
3770
- var _this = _super.call(this, _kvDiffers, _cd) || this;
3771
- _this._kvDiffers = _kvDiffers;
3772
- _this._cd = _cd;
3773
- return _this;
3862
+ var SelectGroupsComponent = /** @class */ (function () {
3863
+ function SelectGroupsComponent(cd) {
3864
+ this.cd = cd;
3774
3865
  }
3775
- WeekComponent.prototype.ngOnInit = function () { };
3776
- return WeekComponent;
3777
- }(BaseItemComponent));
3778
- WeekComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: WeekComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3779
- WeekComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: WeekComponent, selector: "filter-item-week", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDateWeekPicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.FsDateWeekPickerComponent, selector: "[fsDateWeekPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "seedDate", "period", "view"], outputs: ["change"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPlaceholder, selector: "mat-placeholder" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3780
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: WeekComponent, decorators: [{
3866
+ SelectGroupsComponent.prototype.compare = function (o1, o2) {
3867
+ return o1 == o2;
3868
+ };
3869
+ return SelectGroupsComponent;
3870
+ }());
3871
+ SelectGroupsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectGroupsComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3872
+ SelectGroupsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectGroupsComponent, selector: "filter-item-select-groups", inputs: { item: "item" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [compareWith]=\"compare\">\n <ng-container *ngFor=\"let selectItem of item.values\">\n <ng-container *ngIf=\"selectItem[item.children]; else simpleOption\">\n <mat-optgroup [label]=\"selectItem.name\">\n <mat-option *ngFor=\"let subItem of selectItem[item.children]\"\n [value]=\"subItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ subItem.name }}\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #simpleOption>\n <mat-option\n [value]=\"selectItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ selectItem.name }}\n </mat-option>\n </ng-template>\n </ng-container>\n </mat-select>\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3__namespace$1.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { type: i3__namespace$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3873
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectGroupsComponent, decorators: [{
3781
3874
  type: i0.Component,
3782
3875
  args: [{
3783
- selector: 'filter-item-week',
3784
- templateUrl: './week.component.html',
3876
+ selector: 'filter-item-select-groups',
3877
+ templateUrl: './groups.component.html',
3785
3878
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3786
3879
  }]
3787
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3880
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { select: [{
3881
+ type: i0.ViewChild,
3882
+ args: ['select', { static: true }]
3883
+ }], item: [{
3884
+ type: i0.Input
3885
+ }] } });
3788
3886
 
3789
- var CheckboxComponent = /** @class */ (function (_super) {
3790
- __extends(CheckboxComponent, _super);
3791
- function CheckboxComponent(_kvDiffers, _cd) {
3887
+ var SelectComponent = /** @class */ (function (_super) {
3888
+ __extends(SelectComponent, _super);
3889
+ function SelectComponent(_kvDiffers, _cd) {
3792
3890
  var _this = _super.call(this, _kvDiffers, _cd) || this;
3793
3891
  _this._kvDiffers = _kvDiffers;
3794
3892
  _this._cd = _cd;
3893
+ // For case when we have multiple selection with __all option
3894
+ // If _all has been selected than we must disable all other items
3895
+ _this.allItemsOptionSelected = false;
3795
3896
  return _this;
3796
3897
  }
3797
- return CheckboxComponent;
3798
- }(BaseItemComponent));
3799
- CheckboxComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CheckboxComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3800
- CheckboxComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CheckboxComponent, selector: "filter-item-checkbox", usesInheritance: true, ngImport: i0__namespace, template: "<fs-label-field>\n <mat-checkbox [(ngModel)]=\"item.model\">\n {{ item.label }}\n </mat-checkbox>\n</fs-label-field>\n", styles: ["fs-label-field{margin:0}\n"], components: [{ type: i1__namespace$5.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3801
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CheckboxComponent, decorators: [{
3802
- type: i0.Component,
3803
- args: [{
3804
- selector: 'filter-item-checkbox',
3805
- templateUrl: './checkbox.component.html',
3806
- styleUrls: ['checkbox.component.scss'],
3807
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3808
- }]
3809
- }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3810
-
3811
- var FilterItemComponent = /** @class */ (function () {
3812
- function FilterItemComponent(_cdRef) {
3813
- this._cdRef = _cdRef;
3814
- this._destroy$ = new rxjs.Subject();
3815
- this.itemType = exports.ItemType;
3816
- }
3817
- Object.defineProperty(FilterItemComponent.prototype, "textItem", {
3898
+ Object.defineProperty(SelectComponent.prototype, "multipleSelectItem", {
3818
3899
  get: function () {
3819
3900
  return this.item;
3820
3901
  },
3821
3902
  enumerable: false,
3822
3903
  configurable: true
3823
3904
  });
3824
- Object.defineProperty(FilterItemComponent.prototype, "chipsItem", {
3905
+ Object.defineProperty(SelectComponent.prototype, "simpleSelectItem", {
3825
3906
  get: function () {
3826
3907
  return this.item;
3827
3908
  },
3828
3909
  enumerable: false,
3829
3910
  configurable: true
3830
3911
  });
3831
- Object.defineProperty(FilterItemComponent.prototype, "baseSelectItem", {
3832
- get: function () {
3833
- return this.item;
3834
- },
3835
- enumerable: false,
3836
- configurable: true
3837
- });
3838
- Object.defineProperty(FilterItemComponent.prototype, "rangeItem", {
3839
- get: function () {
3840
- return this.item;
3841
- },
3842
- enumerable: false,
3843
- configurable: true
3844
- });
3845
- Object.defineProperty(FilterItemComponent.prototype, "autocompleteItem", {
3846
- get: function () {
3847
- return this.item;
3848
- },
3849
- enumerable: false,
3850
- configurable: true
3851
- });
3852
- Object.defineProperty(FilterItemComponent.prototype, "autocompleteChipsItem", {
3853
- get: function () {
3854
- return this.item;
3855
- },
3856
- enumerable: false,
3857
- configurable: true
3858
- });
3859
- Object.defineProperty(FilterItemComponent.prototype, "dateItem", {
3860
- get: function () {
3861
- return this.item;
3862
- },
3863
- enumerable: false,
3864
- configurable: true
3865
- });
3866
- Object.defineProperty(FilterItemComponent.prototype, "dateRangeItem", {
3867
- get: function () {
3868
- return this.item;
3869
- },
3870
- enumerable: false,
3871
- configurable: true
3872
- });
3873
- Object.defineProperty(FilterItemComponent.prototype, "dateTimeItem", {
3874
- get: function () {
3875
- return this.item;
3876
- },
3877
- enumerable: false,
3878
- configurable: true
3879
- });
3880
- Object.defineProperty(FilterItemComponent.prototype, "dateTimeRangeItem", {
3881
- get: function () {
3882
- return this.item;
3883
- },
3884
- enumerable: false,
3885
- configurable: true
3886
- });
3887
- Object.defineProperty(FilterItemComponent.prototype, "weekItem", {
3888
- get: function () {
3889
- return this.item;
3890
- },
3891
- enumerable: false,
3892
- configurable: true
3893
- });
3894
- Object.defineProperty(FilterItemComponent.prototype, "checkboxItem", {
3895
- get: function () {
3896
- return this.item;
3897
- },
3898
- enumerable: false,
3899
- configurable: true
3900
- });
3901
- FilterItemComponent.prototype.ngOnInit = function () {
3902
- var _this = this;
3903
- this.item.value$
3904
- .pipe(operators.takeUntil(this._destroy$))
3905
- .subscribe(function () {
3906
- _this._cdRef.markForCheck();
3907
- });
3912
+ SelectComponent.prototype.ngOnChanges = function (changes) {
3913
+ if (changes.item) {
3914
+ this.values$ = this.item.values$;
3915
+ }
3908
3916
  };
3909
- FilterItemComponent.prototype.ngOnDestroy = function () {
3910
- this._destroy$.next();
3911
- this._destroy$.complete();
3917
+ SelectComponent.prototype.ngDoCheck = function () {
3918
+ if (this._kvDiffer) {
3919
+ var changes = this._kvDiffer.diff(this.item);
3920
+ if (changes) {
3921
+ this._cd.markForCheck();
3922
+ if (this.selectedItem) {
3923
+ this.selectedItem.cd.markForCheck();
3924
+ }
3925
+ }
3926
+ }
3912
3927
  };
3913
- return FilterItemComponent;
3914
- }());
3915
- FilterItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterItemComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3916
- FilterItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterItemComponent, selector: "filter-item", inputs: { item: "item" }, ngImport: i0__namespace, template: "<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text class=\"interface\"\n *ngSwitchCase=\"itemType.Text\"\n [item]=\"textItem\">\n </filter-item-text>\n\n <filter-item-select class=\"interface\"\n *ngSwitchCase=\"itemType.Select\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n\n <filter-item-chips class=\"interface\"\n *ngSwitchCase=\"itemType.Chips\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n\n <filter-item-range class=\"interface interface-range\"\n *ngSwitchCase=\"itemType.Range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n\n <filter-item-autocomplete class=\"interface\"\n *ngSwitchCase=\"itemType.AutoComplete\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n\n <filter-item-autocompletechips class=\"interface\"\n *ngSwitchCase=\"itemType.AutoCompleteChips\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n\n <filter-item-date class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.Date\"\n [item]=\"dateItem\">\n </filter-item-date>\n\n <filter-item-date class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTime\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n\n <filter-item-date-range class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateRange\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n\n <filter-item-date-range class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTimeRange\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n\n <filter-item-week class=\"interface\"\n *ngSwitchCase=\"itemType.Week\"\n [item]=\"weekItem\">\n </filter-item-week>\n\n <filter-item-checkbox 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__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3917
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterItemComponent, decorators: [{
3928
+ return SelectComponent;
3929
+ }(BaseItemComponent));
3930
+ SelectComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3931
+ SelectComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SelectComponent, selector: "filter-item-select", viewQueries: [{ propertyName: "selectedItem", first: true, predicate: ["selectItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: "<ng-container *ngIf=\"(item.loading$ | async) else itemSelect\">\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select disabled></mat-select>\n </mat-form-field>\n</ng-container>\n\n<ng-template #itemSelect>\n <ng-container *ngIf=\"(values$ | async)?.length\">\n <ng-container *ngIf=\"item.multiple && !item.children\">\n <filter-item-select-multiple\n [item]=\"multipleSelectItem\"\n #selectItem>\n </filter-item-select-multiple>\n </ng-container>\n\n <ng-container *ngIf=\"!item.multiple && !item.children\">\n <filter-item-select-simple\n [item]=\"simpleSelectItem\"\n #selectItem>\n </filter-item-select-simple>\n </ng-container>\n\n <ng-container *ngIf=\"item.children\">\n <filter-item-select-groups\n [item]=\"item\"\n #selectItem>\n </filter-item-select-groups>\n </ng-container>\n </ng-container>\n</ng-template>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: SelectMultipleComponent, selector: "filter-item-select-multiple", inputs: ["item"] }, { type: SelectSimpleComponent, selector: "filter-item-select-simple", inputs: ["item"] }, { type: SelectGroupsComponent, selector: "filter-item-select-groups", inputs: ["item"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3932
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SelectComponent, decorators: [{
3918
3933
  type: i0.Component,
3919
3934
  args: [{
3920
- selector: 'filter-item',
3921
- templateUrl: './filter-item.component.html',
3935
+ selector: 'filter-item-select',
3936
+ templateUrl: './select.component.html',
3922
3937
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
3923
3938
  }]
3924
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
3925
- type: i0.Input
3939
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { selectedItem: [{
3940
+ type: i0.ViewChild,
3941
+ args: ['selectItem']
3926
3942
  }] } });
3927
3943
 
3928
- var FsFilterDrawerActionsComponent = /** @class */ (function () {
3929
- function FsFilterDrawerActionsComponent(externalParams) {
3930
- this.externalParams = externalParams;
3931
- this._clear = new i0.EventEmitter();
3932
- this._done = new i0.EventEmitter();
3944
+ var ChipsComponent = /** @class */ (function (_super) {
3945
+ __extends(ChipsComponent, _super);
3946
+ function ChipsComponent(_kvDiffers, _cd) {
3947
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
3948
+ _this._kvDiffers = _kvDiffers;
3949
+ _this._cd = _cd;
3950
+ return _this;
3933
3951
  }
3934
- Object.defineProperty(FsFilterDrawerActionsComponent.prototype, "savedFilters", {
3935
- get: function () {
3936
- return this.externalParams.savedFiltersController;
3937
- },
3938
- enumerable: false,
3939
- configurable: true
3940
- });
3941
- FsFilterDrawerActionsComponent.prototype.done = function () {
3942
- this._done.emit();
3943
- };
3944
- FsFilterDrawerActionsComponent.prototype.clear = function () {
3945
- this._clear.emit();
3952
+ ChipsComponent.prototype.modelChange = function () {
3953
+ this.itemChange();
3946
3954
  };
3947
- FsFilterDrawerActionsComponent.prototype.saveFilters = function () {
3948
- this.externalParams
3949
- .savedFiltersController
3950
- .openSavedFilterEditDialog();
3955
+ ChipsComponent.prototype.compareFn = function (modelValue, chipValue) {
3956
+ return modelValue.value === chipValue.value;
3951
3957
  };
3952
- return FsFilterDrawerActionsComponent;
3953
- }());
3954
- FsFilterDrawerActionsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterDrawerActionsComponent, deps: [{ token: ExternalParamsController }], target: i0__namespace.ɵɵFactoryTarget.Component });
3955
- FsFilterDrawerActionsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterDrawerActionsComponent, selector: "fs-filter-drawer-actions", outputs: { _clear: "clear", _done: "done" }, ngImport: i0__namespace, template: "<button type=\"button\" mat-button color=\"primary\" (click)=\"done()\">Done</button>\n<button type=\"button\" mat-button (click)=\"clear()\">Clear</button>\n<ng-container *ngIf=\"savedFilters.enabled$ | async\">\n <button type=\"button\" mat-button (click)=\"saveFilters()\">Save</button>\n</ng-container>\n\n", components: [{ type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe } });
3956
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterDrawerActionsComponent, decorators: [{
3958
+ return ChipsComponent;
3959
+ }(BaseItemComponent));
3960
+ ChipsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ChipsComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3961
+ ChipsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ChipsComponent, selector: "filter-item-chips", usesInheritance: true, ngImport: i0__namespace, template: "<ng-template [ngIf]=\"item.values?.length\">\n <fs-label-field>\n <fs-label>{{item.label}}</fs-label>\n <fs-chips [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n <fs-chip *ngFor=\"let value of item.values\"\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n </fs-chips>\n </fs-label-field>\n</ng-template>\n\n<ng-template [ngIf]=\"item.loading\">{{ item.label }} loading...</ng-template>\n", styles: ["fs-chip{line-height:40px}\n"], components: [{ type: i1__namespace$6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i1__namespace$6.FsLabelComponent, selector: "fs-label" }, { type: i2__namespace$1.FsChipsComponent, selector: "fs-chips", inputs: ["compare", "multiple"] }, { type: i2__namespace$1.FsChipComponent, selector: "fs-chip", inputs: ["size", "value", "backgroundColor", "borderColor", "color", "outlined", "removable", "selectable", "selected", "image"], outputs: ["selectedToggled", "removed"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3962
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ChipsComponent, decorators: [{
3957
3963
  type: i0.Component,
3958
3964
  args: [{
3959
- selector: 'fs-filter-drawer-actions',
3960
- templateUrl: './filter-drawer-actions.component.html',
3965
+ selector: 'filter-item-chips',
3966
+ templateUrl: './chips.component.html',
3967
+ styleUrls: ['./chips.component.scss'],
3968
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3961
3969
  }]
3962
- }], ctorParameters: function () { return [{ type: ExternalParamsController }]; }, propDecorators: { _clear: [{
3963
- type: i0.Output,
3964
- args: ['clear']
3965
- }], _done: [{
3966
- type: i0.Output,
3967
- args: ['done']
3968
- }] } });
3970
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
3969
3971
 
3970
- var FilterDrawerComponent = /** @class */ (function () {
3971
- function FilterDrawerComponent(externalParams, _cd, _itemsStore, overlayRef, data) {
3972
- this.externalParams = externalParams;
3973
- this._cd = _cd;
3974
- this._itemsStore = _itemsStore;
3975
- this.overlayRef = overlayRef;
3976
- this.data = data;
3977
- this.inline = false;
3978
- this.windowDesktop = false;
3979
- this._itemsStore.prepareItems();
3980
- this._clear = data.clear;
3981
- this._done = data.done;
3982
- this.updateWindowWidth();
3972
+ var RangeComponent = /** @class */ (function (_super) {
3973
+ __extends(RangeComponent, _super);
3974
+ function RangeComponent(_kvDiffers, _cd) {
3975
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
3976
+ _this._kvDiffers = _kvDiffers;
3977
+ _this._cd = _cd;
3978
+ return _this;
3983
3979
  }
3984
- FilterDrawerComponent.prototype.updateWindowWidth = function () {
3985
- this.windowDesktop = window.innerWidth > 1200;
3986
- };
3987
- Object.defineProperty(FilterDrawerComponent.prototype, "items$", {
3988
- get: function () {
3989
- return this._itemsStore.visibleItems$;
3990
- },
3991
- enumerable: false,
3992
- configurable: true
3993
- });
3994
- Object.defineProperty(FilterDrawerComponent.prototype, "sortItem", {
3995
- get: function () {
3996
- return this._itemsStore.sortByItem;
3997
- },
3998
- enumerable: false,
3999
- configurable: true
4000
- });
4001
- Object.defineProperty(FilterDrawerComponent.prototype, "sortDirectionItem", {
4002
- get: function () {
4003
- return this._itemsStore.sortDirectionItem;
4004
- },
4005
- enumerable: false,
4006
- configurable: true
4007
- });
4008
- FilterDrawerComponent.prototype.clear = function () {
4009
- this._clear();
4010
- // this.overlayRef.detach();
4011
- };
4012
- FilterDrawerComponent.prototype.done = function () {
4013
- this._done();
4014
- this.overlayRef.detach();
3980
+ RangeComponent.prototype.ngOnInit = function () {
3981
+ this.listenChanges();
4015
3982
  };
4016
- FilterDrawerComponent.prototype.backdropClick = function () {
4017
- this.done();
3983
+ RangeComponent.prototype.listenChanges = function () {
3984
+ var _this = this;
3985
+ var fromListener = rxjs.fromEvent(this.from.nativeElement, 'keyup')
3986
+ .pipe(operators.distinctUntilChanged());
3987
+ var toListener = rxjs.fromEvent(this.to.nativeElement, 'keyup')
3988
+ .pipe(operators.distinctUntilChanged());
3989
+ rxjs.merge(fromListener, toListener)
3990
+ .pipe(operators.takeUntil(this._destroy$))
3991
+ .subscribe(function () {
3992
+ _this.itemChange();
3993
+ });
4018
3994
  };
4019
- return FilterDrawerComponent;
4020
- }());
4021
- FilterDrawerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterDrawerComponent, deps: [{ token: ExternalParamsController }, { token: i0__namespace.ChangeDetectorRef }, { token: FsFilterItemsStore }, { token: FILTER_DRAWER_OVERLAY }, { token: FILTER_DRAWER_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
4022
- FilterDrawerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDrawerComponent, selector: "ng-component", inputs: { inline: "inline" }, host: { listeners: { "window:resize": "updateWindowWidth()" } }, ngImport: i0__namespace, 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 *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 class=\"filter-group sort\"\n [item]=\"sortItem\">\n </filter-item>\n <filter-item 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 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__namespace$2.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__namespace$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4023
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterDrawerComponent, decorators: [{
3995
+ return RangeComponent;
3996
+ }(BaseItemComponent));
3997
+ RangeComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: RangeComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
3998
+ RangeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: RangeComponent, selector: "filter-item-range", viewQueries: [{ propertyName: "from", first: true, predicate: ["from"], descendants: true, static: true }, { propertyName: "to", first: true, predicate: ["to"], descendants: true, static: true }], usesInheritance: true, ngImport: i0__namespace, template: "<div class=\"fs-row form-field\">\n <mat-form-field class=\"filter-range-min\">\n <mat-label>{{item.label[0]}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n </mat-form-field>\n\n <mat-form-field class=\"filter-range-max\">\n <mat-label>{{item.label[1]}}</mat-label>\n <span matPrefix *ngIf=\"item.prefix\" [innerHtml]=\"item.prefix\"></span>\n <input matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n <span matSuffix *ngIf=\"item.suffix\" [innerHtml]=\"item.suffix\"></span>\n </mat-form-field>\n</div>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
3999
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: RangeComponent, decorators: [{
4024
4000
  type: i0.Component,
4025
4001
  args: [{
4026
- templateUrl: './filter-drawer.component.html',
4027
- styleUrls: ['filter-drawer.component.scss'],
4028
- // Commented out because filter items are not updating with a delayed observable. Need to figure this out.
4002
+ selector: 'filter-item-range',
4003
+ templateUrl: './range.component.html',
4029
4004
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
4030
4005
  }]
4031
- }], ctorParameters: function () {
4032
- return [{ type: ExternalParamsController }, { type: i0__namespace.ChangeDetectorRef }, { type: FsFilterItemsStore }, { type: i1__namespace$6.OverlayRef, decorators: [{
4033
- type: i0.Inject,
4034
- args: [FILTER_DRAWER_OVERLAY]
4035
- }] }, { type: undefined, decorators: [{
4036
- type: i0.Inject,
4037
- args: [FILTER_DRAWER_DATA]
4038
- }] }];
4039
- }, propDecorators: { updateWindowWidth: [{
4040
- type: i0.HostListener,
4041
- args: ['window:resize']
4042
- }], inline: [{
4043
- type: i0.Input
4006
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { from: [{
4007
+ type: i0.ViewChild,
4008
+ args: ['from', { static: true }]
4009
+ }], to: [{
4010
+ type: i0.ViewChild,
4011
+ args: ['to', { static: true }]
4044
4012
  }] } });
4045
4013
 
4046
- var FS_FILTER_META = new i0.InjectionToken('fs.filter.meta', {
4047
- providedIn: 'root',
4048
- factory: function () {
4049
- return {
4050
- openedFilters: 0,
4014
+ var AutocompleteComponent = /** @class */ (function (_super) {
4015
+ __extends(AutocompleteComponent, _super);
4016
+ function AutocompleteComponent(_kvDiffers, _cd) {
4017
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4018
+ _this._kvDiffers = _kvDiffers;
4019
+ _this._cd = _cd;
4020
+ _this.displayWith = function (data) {
4021
+ return data ? data.name : data;
4051
4022
  };
4023
+ _this.fetch = function (keyword) {
4024
+ return _this.item.valuesFn(keyword);
4025
+ };
4026
+ return _this;
4052
4027
  }
4053
- });
4028
+ return AutocompleteComponent;
4029
+ }(BaseItemComponent));
4030
+ AutocompleteComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompleteComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4031
+ AutocompleteComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AutocompleteComponent, selector: "filter-item-autocomplete", usesInheritance: true, ngImport: i0__namespace, template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"item\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.model\"\n [placeholder]=\"label\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearAllowed\"\n name=\"item.name\">\n <ng-template fsAutocompleteTemplate let-data=\"data\">\n {{data.name}}\n </ng-template>\n</fs-autocomplete>\n", components: [{ type: i4__namespace$1.FsAutocompleteComponent, selector: "fs-autocomplete", inputs: ["fetch", "placeholder", "displayWith", "fetchOnFocus", "readonly", "required", "disabled", "hint", "panelWidth", "panelClass", "showClear"], outputs: ["cleared"] }], directives: [{ type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4__namespace$1.FsAutocompleteTemplateDirective, selector: "[fsAutocompleteTemplate]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4032
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompleteComponent, decorators: [{
4033
+ type: i0.Component,
4034
+ args: [{
4035
+ selector: 'filter-item-autocomplete',
4036
+ templateUrl: './autocomplete.component.html',
4037
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4038
+ }]
4039
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4054
4040
 
4055
- var FsFilterOverlayService = /** @class */ (function () {
4056
- function FsFilterOverlayService(_injector, _filterMeta, _overlay, _focusController) {
4057
- this._injector = _injector;
4058
- this._filterMeta = _filterMeta;
4059
- this._overlay = _overlay;
4060
- this._focusController = _focusController;
4061
- this.detach$ = new rxjs.Subject();
4062
- this.attach$ = new rxjs.Subject();
4063
- this._destroy$ = new rxjs.Subject();
4064
- this._openWhenChipClicked();
4041
+ var AutocompletechipsComponent = /** @class */ (function (_super) {
4042
+ __extends(AutocompletechipsComponent, _super);
4043
+ function AutocompletechipsComponent(_kvDiffers, _cd) {
4044
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4045
+ _this._kvDiffers = _kvDiffers;
4046
+ _this._cd = _cd;
4047
+ _this.fetch = function (keyword) {
4048
+ return _this.item.valuesFn(keyword);
4049
+ };
4050
+ return _this;
4065
4051
  }
4066
- Object.defineProperty(FsFilterOverlayService.prototype, "isOpened", {
4067
- get: function () {
4068
- return !!this._overlayRef;
4069
- },
4070
- enumerable: false,
4071
- configurable: true
4072
- });
4073
- FsFilterOverlayService.prototype.setClearFn = function (fn) {
4074
- this._clearFn = fn;
4075
- };
4076
- FsFilterOverlayService.prototype.setDoneFn = function (fn) {
4077
- this._doneFn = fn;
4052
+ // SP-T1747
4053
+ AutocompletechipsComponent.prototype.clicked = function () {
4054
+ this.chipBackground = this.item.chipBackground;
4055
+ this.chipColor = this.item.chipColor;
4056
+ this.chipIcon = this.item.chipIcon;
4057
+ this._cd.markForCheck();
4078
4058
  };
4079
- FsFilterOverlayService.prototype.close = function () {
4080
- if (this._overlayRef) {
4081
- this._overlayRef.detach();
4082
- this._overlayRef = null;
4083
- this.removeFilterClass();
4059
+ AutocompletechipsComponent.prototype.addAutocompleteChipItem = function (event) {
4060
+ if (event.data && this.item.model.indexOf(event.data.value) === -1) {
4061
+ this.item.model.push(event.data);
4062
+ this.itemChange();
4084
4063
  }
4085
4064
  };
4086
- FsFilterOverlayService.prototype.open = function () {
4087
- var _this = this;
4088
- this._overlayRef = this._createOverlay();
4089
- this._overlayRef.backdropClick()
4090
- .pipe(operators.takeUntil(this._destroy$))
4091
- .subscribe(function () {
4092
- _this._overlayRef.detach();
4093
- });
4094
- this._overlayRef.detachments()
4095
- .pipe(operators.takeUntil(this._destroy$))
4096
- .subscribe(function () {
4097
- _this.detach$.next();
4098
- });
4099
- this._overlayRef.attachments()
4100
- .pipe(operators.takeUntil(this._destroy$))
4101
- .subscribe(function () {
4102
- _this.attach$.next();
4103
- });
4104
- this.addFilterClass();
4105
- return this.openPortalPreview();
4106
- };
4107
- FsFilterOverlayService.prototype.ngOnDestroy = function () {
4108
- this._destroy$.next();
4109
- this._destroy$.complete();
4110
- };
4111
- FsFilterOverlayService.prototype._createOverlay = function () {
4112
- var overlayConfig = new i1$6.OverlayConfig({
4113
- hasBackdrop: true,
4114
- backdropClass: 'fs-filter-backdrop'
4115
- });
4116
- return this._overlay.create(overlayConfig);
4065
+ AutocompletechipsComponent.prototype.removeAutocompleteChipItem = function (event) {
4066
+ common.remove(this.item.model, { value: event.data.value });
4067
+ this.itemChange();
4117
4068
  };
4118
- FsFilterOverlayService.prototype.openPortalPreview = function () {
4119
- var data = { done: this._doneFn, clear: this._clearFn };
4120
- var injector = this._createInjector(this._injector, data, this._overlayRef);
4121
- var containerPortal = new portal.ComponentPortal(FilterDrawerComponent, undefined, injector);
4122
- var containerRef = this._overlayRef.attach(containerPortal);
4123
- return containerRef.instance;
4069
+ AutocompletechipsComponent.prototype.clearAutocompleteChipItem = function () {
4070
+ this.item.clear();
4071
+ this.itemChange();
4124
4072
  };
4125
- FsFilterOverlayService.prototype._createInjector = function (parentInjector, data, overlayRef) {
4126
- var injectionTokens = new WeakMap([
4127
- [FILTER_DRAWER_DATA, data],
4128
- [FILTER_DRAWER_OVERLAY, overlayRef],
4129
- ]);
4130
- return new portal.PortalInjector(parentInjector, injectionTokens);
4073
+ AutocompletechipsComponent.prototype.compareItems = function (item1, item2) {
4074
+ return (item1 === null || item1 === void 0 ? void 0 : item1.value) === (item2 === null || item2 === void 0 ? void 0 : item2.value);
4131
4075
  };
4132
- FsFilterOverlayService.prototype.removeFilterClass = function () {
4133
- this._filterMeta.openedFilters--;
4134
- if (this._filterMeta.openedFilters === 0) {
4135
- window.document.body.classList.remove('fs-filter-open');
4076
+ return AutocompletechipsComponent;
4077
+ }(BaseItemComponent));
4078
+ AutocompletechipsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompletechipsComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4079
+ AutocompletechipsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AutocompletechipsComponent, selector: "filter-item-autocompletechips", usesInheritance: true, ngImport: i0__namespace, template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"item\"\n [fetch]=\"fetch\"\n [ngModel]=\"item.model\"\n (selected)=\"addAutocompleteChipItem($event)\"\n (removed)=\"removeAutocompleteChipItem($event)\"\n (clear)=\"clearAutocompleteChipItem()\"\n (click)=\"clicked()\"\n [allowText]=\"false\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [placeholder]=\"label\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"chipColor\"\n [chipIconColor]=\"chipIcon\"\n [chipBackground]=\"chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearAllowed\"\n [removable]=\"item.clearAllowed\"\n [compareWith]=\"compareItems\"\n [panelWidth]=\"300\"\n name=\"model\">\n <ng-template fsAutocompleteObject let-object=\"object\">\n {{ object.name }}\n </ng-template>\n</fs-autocomplete-chips>\n\n<!--<mat-form-field floatLabel=\"auto\">\n <mat-label>{{item.label}}</mat-label>\n <mat-chip-list #chipList>\n <mat-chip *ngFor=\"let item of item.model\"\n (removed)=\"removeAutocompleteChipItem(item)\">\n {{ item.name }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input #chipsInput\n type=\"text\"\n matInput\n [(ngModel)]=\"item.selectedValue\"\n (ngModelChange)=\"onAutocompleteChipsChange(chipsInput)\"\n [name]=\"item.name\"\n [matChipInputFor]=\"chipList\"\n [matAutocomplete]=\"autocompleteChipsInput\">\n </mat-chip-list>\n\n <mat-autocomplete #autocompleteChipsInput=\"matAutocomplete\"\n (optionSelected)=\"addAutocompleteChipItem( $event)\"\n >\n <mat-option *ngFor=\"let item of item.values$ | async\" [value]=\"item\">\n {{ item.name }}\n </mat-option>\n </mat-autocomplete>\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>-->\n", components: [{ type: i5__namespace.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "readonly", "size", "placeholder", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "hint", "allowText", "allowObject", "delay", "validateText", "removable", "allowClear", "color", "background", "orderable", "limit", "initOnClick", "fetchOnFocus", "multiple", "confirm", "panelClass", "compareWith", "disabled", "panelWidth"], outputs: ["selected", "removed", "reordered", "clear"] }], directives: [{ type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5__namespace.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4080
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: AutocompletechipsComponent, decorators: [{
4081
+ type: i0.Component,
4082
+ args: [{
4083
+ selector: 'filter-item-autocompletechips',
4084
+ templateUrl: './autocompletechips.component.html',
4085
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4086
+ }]
4087
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4088
+
4089
+ var DateComponent = /** @class */ (function (_super) {
4090
+ __extends(DateComponent, _super);
4091
+ function DateComponent(_kvDiffers, _cd) {
4092
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4093
+ _this._kvDiffers = _kvDiffers;
4094
+ _this._cd = _cd;
4095
+ _this.viewType = PickerViewType.Date;
4096
+ _this.itemDateMode = exports.ItemDateMode;
4097
+ _this.showYear = true;
4098
+ _this.showMonth = true;
4099
+ _this.showDay = true;
4100
+ return _this;
4101
+ }
4102
+ DateComponent.prototype.ngOnInit = function () {
4103
+ if (this.item.type === exports.ItemType.DateTime) {
4104
+ this.viewType = PickerViewType.DateTime;
4136
4105
  }
4137
- };
4138
- FsFilterOverlayService.prototype.addFilterClass = function () {
4139
- this._filterMeta.openedFilters++;
4140
- if (this._filterMeta.openedFilters === 1) {
4141
- window.document.body.classList.add('fs-filter-open');
4106
+ else {
4107
+ this.viewType = PickerViewType.Date;
4108
+ }
4109
+ if (this.item.mode === exports.ItemDateMode.ScrollMonthYear) {
4110
+ this.showDay = false;
4142
4111
  }
4143
4112
  };
4144
- FsFilterOverlayService.prototype._openWhenChipClicked = function () {
4145
- var _this = this;
4146
- this._focusController.focusOn$
4147
- .pipe(operators.filter(function (v) { return !!v; }), operators.takeUntil(this._destroy$))
4148
- .subscribe(function () {
4149
- if (!_this.isOpened) {
4150
- _this.open();
4151
- }
4152
- });
4153
- };
4154
- return FsFilterOverlayService;
4155
- }());
4156
- FsFilterOverlayService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService, deps: [{ token: i0__namespace.Injector }, { token: FS_FILTER_META }, { token: i1__namespace$6.Overlay }, { token: FocusControllerService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
4157
- FsFilterOverlayService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService });
4158
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService, decorators: [{
4159
- type: i0.Injectable
4160
- }], ctorParameters: function () {
4161
- return [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
4162
- type: i0.Inject,
4163
- args: [FS_FILTER_META]
4164
- }] }, { type: i1__namespace$6.Overlay }, { type: FocusControllerService }];
4165
- } });
4113
+ return DateComponent;
4114
+ }(BaseItemComponent));
4115
+ DateComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4116
+ DateComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DateComponent, selector: "filter-item-date", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field *ngIf=\"item.mode===itemDateMode.Calendar; else elseMode\">\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>\n\n<ng-template #elseMode>\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDateScrollPicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n </mat-form-field>\n</ng-template>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { type: i3__namespace$3.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "maxDate", "showMonth", "showYear", "showDay"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$3.MatPlaceholder, selector: "mat-placeholder" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4117
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateComponent, decorators: [{
4118
+ type: i0.Component,
4119
+ args: [{
4120
+ selector: 'filter-item-date',
4121
+ templateUrl: './date.component.html',
4122
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4123
+ }]
4124
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4166
4125
 
4167
- var FilterStatusBarDirective = /** @class */ (function () {
4168
- function FilterStatusBarDirective() {
4126
+ var DateRangeComponent = /** @class */ (function (_super) {
4127
+ __extends(DateRangeComponent, _super);
4128
+ function DateRangeComponent(_kvDiffers, _cd) {
4129
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4130
+ _this._kvDiffers = _kvDiffers;
4131
+ _this._cd = _cd;
4132
+ _this.viewType = PickerViewType.Date;
4133
+ return _this;
4169
4134
  }
4170
- return FilterStatusBarDirective;
4171
- }());
4172
- FilterStatusBarDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterStatusBarDirective, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
4173
- FilterStatusBarDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FilterStatusBarDirective, selector: "[fsFilterStatusBar]", ngImport: i0__namespace });
4174
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterStatusBarDirective, decorators: [{
4175
- type: i0.Directive,
4135
+ DateRangeComponent.prototype.ngOnInit = function () {
4136
+ if (this.item.type === exports.ItemType.DateTimeRange) {
4137
+ this.viewType = PickerViewType.DateTime;
4138
+ }
4139
+ else {
4140
+ this.viewType = PickerViewType.Date;
4141
+ }
4142
+ };
4143
+ return DateRangeComponent;
4144
+ }(BaseItemComponent));
4145
+ DateRangeComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateRangeComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4146
+ DateRangeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DateRangeComponent, selector: "filter-item-date-range", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label[0]}}</mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"item.model.from\"\n (ngModelChange)=\"itemChange()\"\n [clear]=\"item.clearAllowed\"\n [view]=\"viewType\"\n name=\"date_from\">\n</mat-form-field>\n\n<mat-form-field>\n <mat-label>{{item.label[1]}}</mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"item.model.to\"\n (ngModelChange)=\"itemChange()\"\n [clear]=\"item.clearAllowed\"\n [view]=\"viewType\"\n name=\"date_to\">\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.DateRangePickerFromComponent, selector: "[fsDateRangeFrom],[fsDateRangeFromPicker]", inputs: ["fsDateRangeFrom", "fsDateRangeFromPicker"] }, { type: i3__namespace$3.DateRangePickerToComponent, selector: "[fsDateRangeTo],[fsDateRangeToPicker]", inputs: ["fsDateRangeTo", "fsDateRangeToPicker"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4147
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: DateRangeComponent, decorators: [{
4148
+ type: i0.Component,
4176
4149
  args: [{
4177
- selector: '[fsFilterStatusBar]',
4150
+ selector: 'filter-item-date-range',
4151
+ templateUrl: './date-range.component.html',
4152
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4178
4153
  }]
4179
- }] });
4154
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4180
4155
 
4181
- exports.ActionType = void 0;
4182
- (function (ActionType) {
4183
- ActionType["Basic"] = "basic";
4184
- ActionType["Raised"] = "raised";
4185
- ActionType["Icon"] = "icon";
4186
- ActionType["Fab"] = "fab";
4187
- ActionType["MiniFab"] = "mini-fab";
4188
- })(exports.ActionType || (exports.ActionType = {}));
4156
+ var WeekComponent = /** @class */ (function (_super) {
4157
+ __extends(WeekComponent, _super);
4158
+ function WeekComponent(_kvDiffers, _cd) {
4159
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4160
+ _this._kvDiffers = _kvDiffers;
4161
+ _this._cd = _cd;
4162
+ return _this;
4163
+ }
4164
+ WeekComponent.prototype.ngOnInit = function () { };
4165
+ return WeekComponent;
4166
+ }(BaseItemComponent));
4167
+ WeekComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: WeekComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4168
+ WeekComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: WeekComponent, selector: "filter-item-week", usesInheritance: true, ngImport: i0__namespace, template: "<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input matInput\n fsDateWeekPicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.clearAllowed\"\n [name]=\"item.name\">\n <mat-placeholder *ngIf=\"inline\">{{ item.label }}</mat-placeholder>\n</mat-form-field>\n", components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3__namespace$3.FsDateWeekPickerComponent, selector: "[fsDateWeekPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "seedDate", "period", "view"], outputs: ["change"] }], directives: [{ type: i1__namespace$3.MatLabel, selector: "mat-label" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger", "focusTargetType"] }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$3.MatPlaceholder, selector: "mat-placeholder" }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4169
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: WeekComponent, decorators: [{
4170
+ type: i0.Component,
4171
+ args: [{
4172
+ selector: 'filter-item-week',
4173
+ templateUrl: './week.component.html',
4174
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4175
+ }]
4176
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4189
4177
 
4190
- exports.ActionMode = void 0;
4191
- (function (ActionMode) {
4192
- ActionMode["Button"] = "button";
4193
- ActionMode["Menu"] = "menu";
4194
- ActionMode["File"] = "file";
4195
- })(exports.ActionMode || (exports.ActionMode = {}));
4178
+ var CheckboxComponent = /** @class */ (function (_super) {
4179
+ __extends(CheckboxComponent, _super);
4180
+ function CheckboxComponent(_kvDiffers, _cd) {
4181
+ var _this = _super.call(this, _kvDiffers, _cd) || this;
4182
+ _this._kvDiffers = _kvDiffers;
4183
+ _this._cd = _cd;
4184
+ return _this;
4185
+ }
4186
+ return CheckboxComponent;
4187
+ }(BaseItemComponent));
4188
+ CheckboxComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CheckboxComponent, deps: [{ token: i0__namespace.KeyValueDiffers }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4189
+ CheckboxComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CheckboxComponent, selector: "filter-item-checkbox", usesInheritance: true, ngImport: i0__namespace, template: "<fs-label-field>\n <mat-checkbox [(ngModel)]=\"item.model\">\n {{ item.label }}\n </mat-checkbox>\n</fs-label-field>\n", styles: ["fs-label-field{margin:0}\n"], components: [{ type: i1__namespace$6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i4__namespace$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4190
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: CheckboxComponent, decorators: [{
4191
+ type: i0.Component,
4192
+ args: [{
4193
+ selector: 'filter-item-checkbox',
4194
+ templateUrl: './checkbox.component.html',
4195
+ styleUrls: ['checkbox.component.scss'],
4196
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4197
+ }]
4198
+ }], ctorParameters: function () { return [{ type: i0__namespace.KeyValueDiffers }, { type: i0__namespace.ChangeDetectorRef }]; } });
4196
4199
 
4197
- var ActionMenuItem = /** @class */ (function () {
4198
- function ActionMenuItem(config, _parent) {
4199
- if (config === void 0) { config = {}; }
4200
- this._parent = _parent;
4201
- this.items = [];
4202
- this._isGroup = false;
4203
- this._visible$ = new rxjs.BehaviorSubject(true);
4204
- this._disabled$ = new rxjs.BehaviorSubject(false);
4205
- this._init(config);
4200
+ var FilterItemComponent = /** @class */ (function () {
4201
+ function FilterItemComponent(_cdRef) {
4202
+ this._cdRef = _cdRef;
4203
+ this._destroy$ = new rxjs.Subject();
4204
+ this.itemType = exports.ItemType;
4206
4205
  }
4207
- Object.defineProperty(ActionMenuItem.prototype, "isGroup", {
4206
+ Object.defineProperty(FilterItemComponent.prototype, "textItem", {
4208
4207
  get: function () {
4209
- return this._isGroup;
4208
+ return this.item;
4210
4209
  },
4211
4210
  enumerable: false,
4212
4211
  configurable: true
4213
4212
  });
4214
- Object.defineProperty(ActionMenuItem.prototype, "visible", {
4213
+ Object.defineProperty(FilterItemComponent.prototype, "chipsItem", {
4215
4214
  get: function () {
4216
- return this._visible$.getValue();
4215
+ return this.item;
4217
4216
  },
4218
4217
  enumerable: false,
4219
4218
  configurable: true
4220
4219
  });
4221
- Object.defineProperty(ActionMenuItem.prototype, "visible$", {
4220
+ Object.defineProperty(FilterItemComponent.prototype, "baseSelectItem", {
4222
4221
  get: function () {
4223
- return this._visible$.asObservable();
4222
+ return this.item;
4224
4223
  },
4225
4224
  enumerable: false,
4226
4225
  configurable: true
4227
4226
  });
4228
- Object.defineProperty(ActionMenuItem.prototype, "disabled", {
4227
+ Object.defineProperty(FilterItemComponent.prototype, "rangeItem", {
4229
4228
  get: function () {
4230
- return this._disabled$.getValue();
4229
+ return this.item;
4231
4230
  },
4232
- set: function (value) {
4233
- this._disabled$.next(value);
4231
+ enumerable: false,
4232
+ configurable: true
4233
+ });
4234
+ Object.defineProperty(FilterItemComponent.prototype, "autocompleteItem", {
4235
+ get: function () {
4236
+ return this.item;
4234
4237
  },
4235
4238
  enumerable: false,
4236
4239
  configurable: true
4237
4240
  });
4238
- Object.defineProperty(ActionMenuItem.prototype, "disabled$", {
4241
+ Object.defineProperty(FilterItemComponent.prototype, "autocompleteChipsItem", {
4239
4242
  get: function () {
4240
- return this._disabled$.asObservable();
4243
+ return this.item;
4241
4244
  },
4242
4245
  enumerable: false,
4243
4246
  configurable: true
4244
4247
  });
4245
- ActionMenuItem.prototype.updateVisibility = function () {
4246
- var visible = !!this._showFn ? this._showFn() : true;
4247
- if (!visible || !this.isGroup) {
4248
- this._visible$.next(visible);
4249
- return;
4250
- }
4251
- var numberOfVisibleChildren = this.items
4252
- .reduce(function (acc, item) {
4253
- item.updateVisibility();
4254
- if (item.visible) {
4255
- acc++;
4256
- }
4257
- return acc;
4258
- }, 0);
4259
- this._visible$.next(!!numberOfVisibleChildren);
4260
- };
4261
- ActionMenuItem.prototype._init = function (config) {
4262
- var _this = this;
4263
- this.label = config.label;
4264
- this.icon = config.icon;
4265
- this._showFn = config.show;
4266
- if ('items' in config) {
4267
- this._isGroup = true;
4268
- if (Array.isArray(config.items)) {
4269
- this.items = config
4270
- .items
4271
- .map(function (item) { return new ActionMenuItem(item, _this); });
4272
- }
4273
- this.updateVisibility();
4274
- }
4275
- else {
4276
- this.click = config.click;
4277
- this.routerLink = config.link;
4278
- if (!this._parent) {
4279
- this.updateVisibility();
4280
- }
4281
- }
4282
- };
4283
- return ActionMenuItem;
4284
- }());
4285
-
4286
- var Action = /** @class */ (function () {
4287
- function Action(config) {
4288
- if (config === void 0) { config = {}; }
4289
- this.primary = true;
4290
- this.isReorderAction = false;
4291
- this.classArray = [];
4292
- this.items = [];
4293
- this._visible$ = new rxjs.BehaviorSubject(true);
4294
- this._disabled$ = new rxjs.BehaviorSubject(false);
4295
- this._init(config);
4296
- }
4297
- Object.defineProperty(Action.prototype, "visible", {
4248
+ Object.defineProperty(FilterItemComponent.prototype, "dateItem", {
4298
4249
  get: function () {
4299
- return this._visible$.getValue();
4250
+ return this.item;
4300
4251
  },
4301
4252
  enumerable: false,
4302
4253
  configurable: true
4303
4254
  });
4304
- Object.defineProperty(Action.prototype, "visible$", {
4255
+ Object.defineProperty(FilterItemComponent.prototype, "dateRangeItem", {
4305
4256
  get: function () {
4306
- return this._visible$.asObservable();
4257
+ return this.item;
4307
4258
  },
4308
4259
  enumerable: false,
4309
4260
  configurable: true
4310
4261
  });
4311
- Object.defineProperty(Action.prototype, "disabled", {
4262
+ Object.defineProperty(FilterItemComponent.prototype, "dateTimeItem", {
4312
4263
  get: function () {
4313
- return this._disabled$.getValue();
4264
+ return this.item;
4314
4265
  },
4315
- set: function (value) {
4316
- this._disabled$.next(value);
4266
+ enumerable: false,
4267
+ configurable: true
4268
+ });
4269
+ Object.defineProperty(FilterItemComponent.prototype, "dateTimeRangeItem", {
4270
+ get: function () {
4271
+ return this.item;
4317
4272
  },
4318
4273
  enumerable: false,
4319
4274
  configurable: true
4320
4275
  });
4321
- Object.defineProperty(Action.prototype, "disabled$", {
4276
+ Object.defineProperty(FilterItemComponent.prototype, "weekItem", {
4322
4277
  get: function () {
4323
- return this._disabled$.asObservable();
4278
+ return this.item;
4324
4279
  },
4325
4280
  enumerable: false,
4326
4281
  configurable: true
4327
4282
  });
4328
- Action.prototype.updateVisibility = function () {
4329
- var visible = !!this._showFn ? this._showFn() : true;
4330
- if (!visible || this.mode !== exports.ActionMode.Menu) {
4331
- this._visible$.next(visible);
4332
- return;
4333
- }
4334
- var hasVisibleChildren = this.items.some(function (item) { return item.visible; });
4335
- this._visible$.next(hasVisibleChildren);
4283
+ Object.defineProperty(FilterItemComponent.prototype, "checkboxItem", {
4284
+ get: function () {
4285
+ return this.item;
4286
+ },
4287
+ enumerable: false,
4288
+ configurable: true
4289
+ });
4290
+ FilterItemComponent.prototype.ngOnInit = function () {
4291
+ var _this = this;
4292
+ this.item.value$
4293
+ .pipe(operators.takeUntil(this._destroy$))
4294
+ .subscribe(function () {
4295
+ _this._cdRef.markForCheck();
4296
+ });
4336
4297
  };
4337
- Action.prototype.updateDisabledState = function () {
4338
- if (this._disabledFn) {
4339
- this.disabled = this._disabledFn();
4340
- }
4298
+ FilterItemComponent.prototype.ngOnDestroy = function () {
4299
+ this._destroy$.next();
4300
+ this._destroy$.complete();
4341
4301
  };
4342
- Action.prototype._init = function (config) {
4343
- var _a, _b, _c, _d, _e, _f;
4344
- config.mode = (_a = config.mode) !== null && _a !== void 0 ? _a : exports.ActionMode.Button;
4345
- this.primary = (_b = config.primary) !== null && _b !== void 0 ? _b : true;
4346
- this.color = config.color;
4347
- this.type = (_c = config.type) !== null && _c !== void 0 ? _c : exports.ActionType.Raised;
4348
- this.tooltip = config.tooltip;
4349
- this.label = config.label;
4350
- this.mode = config.mode;
4351
- this.icon = config.icon;
4352
- this.iconPlacement = config.iconPlacement;
4353
- this._showFn = config.show;
4354
- this.tabIndex = (_d = config.tabIndex) !== null && _d !== void 0 ? _d : 0;
4355
- this.menu = config.menu;
4356
- if (config.multiple !== undefined) {
4357
- this.multiple = config.multiple;
4358
- }
4359
- if (config.className) {
4360
- this.className = config.className;
4361
- this.classArray = this.className
4362
- .split(' ');
4363
- }
4364
- if (this.primary) {
4365
- this.color = 'primary';
4366
- }
4367
- switch (config.mode) {
4368
- case exports.ActionMode.Button:
4369
- {
4370
- this.customize = config.customize;
4371
- this.click = (_e = config.click) !== null && _e !== void 0 ? _e : (function () { });
4372
- this._disabledFn = config.disabled;
4373
- this.updateDisabledState();
4374
- }
4375
- break;
4376
- case exports.ActionMode.Menu:
4377
- {
4378
- if (config.items && Array.isArray(config.items)) {
4379
- this.items = config.items.map(function (item) { return new ActionMenuItem(item); });
4380
- }
4381
- }
4382
- break;
4383
- case exports.ActionMode.File:
4384
- {
4385
- this.fileSelected = config.select;
4386
- this.fileError = config.error;
4387
- this.accept = config.accept;
4388
- this.imageQuality = config.imageQuality;
4389
- this.minWidth = config.minWidth;
4390
- this.minHeight = config.minHeight;
4391
- this.maxWidth = config.maxWidth;
4392
- this.maxHeight = config.maxHeight;
4393
- this.click = (_f = config.click) !== null && _f !== void 0 ? _f : (function () { });
4394
- this._disabledFn = config.disabled;
4395
- this.updateDisabledState();
4396
- }
4397
- break;
4398
- }
4399
- this.updateVisibility();
4302
+ return FilterItemComponent;
4303
+ }());
4304
+ FilterItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterItemComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4305
+ FilterItemComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterItemComponent, selector: "filter-item", inputs: { item: "item" }, ngImport: i0__namespace, template: "<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text class=\"interface\"\n *ngSwitchCase=\"itemType.Text\"\n [item]=\"textItem\">\n </filter-item-text>\n\n <filter-item-select class=\"interface\"\n *ngSwitchCase=\"itemType.Select\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n\n <filter-item-chips class=\"interface\"\n *ngSwitchCase=\"itemType.Chips\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n\n <filter-item-range class=\"interface interface-range\"\n *ngSwitchCase=\"itemType.Range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n\n <filter-item-autocomplete class=\"interface\"\n *ngSwitchCase=\"itemType.AutoComplete\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n\n <filter-item-autocompletechips class=\"interface\"\n *ngSwitchCase=\"itemType.AutoCompleteChips\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n\n <filter-item-date class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.Date\"\n [item]=\"dateItem\">\n </filter-item-date>\n\n <filter-item-date class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTime\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n\n <filter-item-date-range class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateRange\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n\n <filter-item-date-range class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTimeRange\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n\n <filter-item-week class=\"interface\"\n *ngSwitchCase=\"itemType.Week\"\n [item]=\"weekItem\">\n </filter-item-week>\n\n <filter-item-checkbox 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__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4306
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterItemComponent, decorators: [{
4307
+ type: i0.Component,
4308
+ args: [{
4309
+ selector: 'filter-item',
4310
+ templateUrl: './filter-item.component.html',
4311
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4312
+ }]
4313
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { item: [{
4314
+ type: i0.Input
4315
+ }] } });
4316
+
4317
+ var FsFilterDrawerActionsComponent = /** @class */ (function () {
4318
+ function FsFilterDrawerActionsComponent(externalParams) {
4319
+ this.externalParams = externalParams;
4320
+ this._clear = new i0.EventEmitter();
4321
+ this._done = new i0.EventEmitter();
4322
+ }
4323
+ Object.defineProperty(FsFilterDrawerActionsComponent.prototype, "savedFilters", {
4324
+ get: function () {
4325
+ return this.externalParams.savedFiltersController;
4326
+ },
4327
+ enumerable: false,
4328
+ configurable: true
4329
+ });
4330
+ FsFilterDrawerActionsComponent.prototype.done = function () {
4331
+ this._done.emit();
4400
4332
  };
4401
- return Action;
4402
- }());
4333
+ FsFilterDrawerActionsComponent.prototype.clear = function () {
4334
+ this._clear.emit();
4335
+ };
4336
+ FsFilterDrawerActionsComponent.prototype.saveFilters = function () {
4337
+ this.externalParams
4338
+ .savedFiltersController
4339
+ .openSavedFilterEditDialog();
4340
+ };
4341
+ return FsFilterDrawerActionsComponent;
4342
+ }());
4343
+ FsFilterDrawerActionsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterDrawerActionsComponent, deps: [{ token: ExternalParamsController }], target: i0__namespace.ɵɵFactoryTarget.Component });
4344
+ FsFilterDrawerActionsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterDrawerActionsComponent, selector: "fs-filter-drawer-actions", outputs: { _clear: "clear", _done: "done" }, ngImport: i0__namespace, template: "<button type=\"button\" mat-button color=\"primary\" (click)=\"done()\">Done</button>\n<button type=\"button\" mat-button (click)=\"clear()\">Clear</button>\n<ng-container *ngIf=\"savedFilters.enabled$ | async\">\n <button type=\"button\" mat-button (click)=\"saveFilters()\">Save</button>\n</ng-container>\n\n", components: [{ type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe } });
4345
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterDrawerActionsComponent, decorators: [{
4346
+ type: i0.Component,
4347
+ args: [{
4348
+ selector: 'fs-filter-drawer-actions',
4349
+ templateUrl: './filter-drawer-actions.component.html',
4350
+ }]
4351
+ }], ctorParameters: function () { return [{ type: ExternalParamsController }]; }, propDecorators: { _clear: [{
4352
+ type: i0.Output,
4353
+ args: ['clear']
4354
+ }], _done: [{
4355
+ type: i0.Output,
4356
+ args: ['done']
4357
+ }] } });
4403
4358
 
4404
- var ActionsController = /** @class */ (function () {
4405
- function ActionsController(_breakpointObserver) {
4406
- this._breakpointObserver = _breakpointObserver;
4407
- this._visible$ = new rxjs.BehaviorSubject(false);
4408
- this._actions$ = new rxjs.BehaviorSubject([]);
4409
- this._menuActions$ = new rxjs.BehaviorSubject([]);
4410
- this._destroy$ = new rxjs.Subject();
4411
- this._mobileMedia = '(max-width: 799px)';
4412
- this._allActions = [];
4413
- this._listenMobileMedia();
4359
+ var FilterDrawerComponent = /** @class */ (function () {
4360
+ function FilterDrawerComponent(externalParams, _cd, _itemsStore, overlayRef, data) {
4361
+ this.externalParams = externalParams;
4362
+ this._cd = _cd;
4363
+ this._itemsStore = _itemsStore;
4364
+ this.overlayRef = overlayRef;
4365
+ this.data = data;
4366
+ this.inline = false;
4367
+ this.windowDesktop = false;
4368
+ this._itemsStore.prepareItems();
4369
+ this._clear = data.clear;
4370
+ this._done = data.done;
4371
+ this.updateWindowWidth();
4414
4372
  }
4415
- Object.defineProperty(ActionsController.prototype, "menuActions", {
4416
- get: function () {
4417
- return this._menuActions$.value;
4418
- },
4419
- enumerable: false,
4420
- configurable: true
4421
- });
4422
- Object.defineProperty(ActionsController.prototype, "actions", {
4423
- get: function () {
4424
- return this._actions$.value;
4425
- },
4426
- enumerable: false,
4427
- configurable: true
4428
- });
4429
- Object.defineProperty(ActionsController.prototype, "actions$", {
4373
+ FilterDrawerComponent.prototype.updateWindowWidth = function () {
4374
+ this.windowDesktop = window.innerWidth > 1200;
4375
+ };
4376
+ Object.defineProperty(FilterDrawerComponent.prototype, "items$", {
4430
4377
  get: function () {
4431
- return this._actions$.asObservable();
4378
+ return this._itemsStore.visibleItems$;
4432
4379
  },
4433
4380
  enumerable: false,
4434
4381
  configurable: true
4435
4382
  });
4436
- Object.defineProperty(ActionsController.prototype, "menuActions$", {
4383
+ Object.defineProperty(FilterDrawerComponent.prototype, "sortItem", {
4437
4384
  get: function () {
4438
- return this._menuActions$.asObservable();
4385
+ return this._itemsStore.sortByItem;
4439
4386
  },
4440
4387
  enumerable: false,
4441
4388
  configurable: true
4442
4389
  });
4443
- Object.defineProperty(ActionsController.prototype, "visible$", {
4390
+ Object.defineProperty(FilterDrawerComponent.prototype, "sortDirectionItem", {
4444
4391
  get: function () {
4445
- return this._visible$.asObservable();
4392
+ return this._itemsStore.sortDirectionItem;
4446
4393
  },
4447
4394
  enumerable: false,
4448
4395
  configurable: true
4449
4396
  });
4450
- Object.defineProperty(ActionsController.prototype, "mobileMode", {
4397
+ FilterDrawerComponent.prototype.clear = function () {
4398
+ this._clear();
4399
+ // this.overlayRef.detach();
4400
+ };
4401
+ FilterDrawerComponent.prototype.done = function () {
4402
+ this._done();
4403
+ this.overlayRef.detach();
4404
+ };
4405
+ FilterDrawerComponent.prototype.backdropClick = function () {
4406
+ this.done();
4407
+ };
4408
+ return FilterDrawerComponent;
4409
+ }());
4410
+ FilterDrawerComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterDrawerComponent, deps: [{ token: ExternalParamsController }, { token: i0__namespace.ChangeDetectorRef }, { token: FsFilterItemsStore }, { token: FILTER_DRAWER_OVERLAY }, { token: FILTER_DRAWER_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
4411
+ FilterDrawerComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDrawerComponent, selector: "ng-component", inputs: { inline: "inline" }, host: { listeners: { "window:resize": "updateWindowWidth()" } }, ngImport: i0__namespace, 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 *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 class=\"filter-group sort\"\n [item]=\"sortItem\">\n </filter-item>\n <filter-item 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 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__namespace$2.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__namespace$1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4412
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterDrawerComponent, decorators: [{
4413
+ type: i0.Component,
4414
+ args: [{
4415
+ templateUrl: './filter-drawer.component.html',
4416
+ styleUrls: ['filter-drawer.component.scss'],
4417
+ // Commented out because filter items are not updating with a delayed observable. Need to figure this out.
4418
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
4419
+ }]
4420
+ }], ctorParameters: function () {
4421
+ return [{ type: ExternalParamsController }, { type: i0__namespace.ChangeDetectorRef }, { type: FsFilterItemsStore }, { type: i1__namespace$7.OverlayRef, decorators: [{
4422
+ type: i0.Inject,
4423
+ args: [FILTER_DRAWER_OVERLAY]
4424
+ }] }, { type: undefined, decorators: [{
4425
+ type: i0.Inject,
4426
+ args: [FILTER_DRAWER_DATA]
4427
+ }] }];
4428
+ }, propDecorators: { updateWindowWidth: [{
4429
+ type: i0.HostListener,
4430
+ args: ['window:resize']
4431
+ }], inline: [{
4432
+ type: i0.Input
4433
+ }] } });
4434
+
4435
+ var FS_FILTER_META = new i0.InjectionToken('fs.filter.meta', {
4436
+ providedIn: 'root',
4437
+ factory: function () {
4438
+ return {
4439
+ openedFilters: 0,
4440
+ };
4441
+ }
4442
+ });
4443
+
4444
+ var FsFilterOverlayService = /** @class */ (function () {
4445
+ function FsFilterOverlayService(_injector, _filterMeta, _overlay, _focusController) {
4446
+ this._injector = _injector;
4447
+ this._filterMeta = _filterMeta;
4448
+ this._overlay = _overlay;
4449
+ this._focusController = _focusController;
4450
+ this.detach$ = new rxjs.Subject();
4451
+ this.attach$ = new rxjs.Subject();
4452
+ this._destroy$ = new rxjs.Subject();
4453
+ this._openWhenChipClicked();
4454
+ }
4455
+ Object.defineProperty(FsFilterOverlayService.prototype, "isOpened", {
4451
4456
  get: function () {
4452
- return this._breakpointObserver.isMatched(this._mobileMedia);
4457
+ return !!this._overlayRef;
4453
4458
  },
4454
4459
  enumerable: false,
4455
4460
  configurable: true
4456
4461
  });
4457
- ActionsController.prototype.ngOnDestroy = function () {
4458
- this._destroy$.next();
4459
- this._destroy$.complete();
4460
- };
4461
- ActionsController.prototype.initActions = function (rawActions) {
4462
- if (!rawActions || !Array.isArray(rawActions)) {
4463
- return;
4464
- }
4465
- this.show();
4466
- this._allActions = rawActions
4467
- .map(function (action) { return new Action(action); });
4468
- if (this._reorderAction) {
4469
- this._allActions.unshift(this._reorderAction);
4470
- }
4471
- this._classifyActions();
4472
- };
4473
- ActionsController.prototype.show = function () {
4474
- this._visible$.next(true);
4475
- };
4476
- ActionsController.prototype.hide = function () {
4477
- this._visible$.next(false);
4462
+ FsFilterOverlayService.prototype.setClearFn = function (fn) {
4463
+ this._clearFn = fn;
4478
4464
  };
4479
- ActionsController.prototype.addReorderAction = function (action) {
4480
- this._allActions.unshift(action);
4481
- action.isReorderAction = true;
4482
- this._classifyAction(action);
4483
- this._reorderAction = action;
4465
+ FsFilterOverlayService.prototype.setDoneFn = function (fn) {
4466
+ this._doneFn = fn;
4484
4467
  };
4485
- ActionsController.prototype.clearActions = function () {
4486
- this._allActions = [];
4487
- this._setActions([]);
4488
- this._setKebabActions([]);
4468
+ FsFilterOverlayService.prototype.close = function () {
4469
+ if (this._overlayRef) {
4470
+ this._overlayRef.detach();
4471
+ this._overlayRef = null;
4472
+ this.removeFilterClass();
4473
+ }
4489
4474
  };
4490
- ActionsController.prototype.updateActionsVisibility = function () {
4491
- this._allActions.forEach(function (action) { return action.updateVisibility(); });
4492
- this._classifyActions();
4475
+ FsFilterOverlayService.prototype.open = function () {
4476
+ var _this = this;
4477
+ this._overlayRef = this._createOverlay();
4478
+ this._overlayRef.backdropClick()
4479
+ .pipe(operators.takeUntil(this._destroy$))
4480
+ .subscribe(function () {
4481
+ _this._overlayRef.detach();
4482
+ });
4483
+ this._overlayRef.detachments()
4484
+ .pipe(operators.takeUntil(this._destroy$))
4485
+ .subscribe(function () {
4486
+ _this.detach$.next();
4487
+ });
4488
+ this._overlayRef.attachments()
4489
+ .pipe(operators.takeUntil(this._destroy$))
4490
+ .subscribe(function () {
4491
+ _this.attach$.next();
4492
+ });
4493
+ this.addFilterClass();
4494
+ return this.openPortalPreview();
4493
4495
  };
4494
- ActionsController.prototype.updateDisabledState = function () {
4495
- this.actions.forEach(function (action) { return action.updateDisabledState(); });
4496
+ FsFilterOverlayService.prototype.ngOnDestroy = function () {
4497
+ this._destroy$.next();
4498
+ this._destroy$.complete();
4496
4499
  };
4497
- ActionsController.prototype._setKebabActions = function (actions) {
4498
- this._menuActions$.next(actions);
4500
+ FsFilterOverlayService.prototype._createOverlay = function () {
4501
+ var overlayConfig = new i1$7.OverlayConfig({
4502
+ hasBackdrop: true,
4503
+ backdropClass: 'fs-filter-backdrop'
4504
+ });
4505
+ return this._overlay.create(overlayConfig);
4499
4506
  };
4500
- ActionsController.prototype._setActions = function (actions) {
4501
- this._actions$.next(actions);
4507
+ FsFilterOverlayService.prototype.openPortalPreview = function () {
4508
+ var data = { done: this._doneFn, clear: this._clearFn };
4509
+ var injector = this._createInjector(this._injector, data, this._overlayRef);
4510
+ var containerPortal = new portal.ComponentPortal(FilterDrawerComponent, undefined, injector);
4511
+ var containerRef = this._overlayRef.attach(containerPortal);
4512
+ return containerRef.instance;
4502
4513
  };
4503
- ActionsController.prototype._classifyActions = function () {
4504
- var kebabActions = [];
4505
- var actions = [];
4506
- var mobileMode = this.mobileMode;
4507
- this._allActions
4508
- .filter(function (action) {
4509
- return action.visible;
4510
- })
4511
- .forEach(function (action) {
4512
- if (action.menu !== false && (action.menu || mobileMode)) {
4513
- kebabActions.push(action);
4514
- }
4515
- else {
4516
- actions.push(action);
4517
- }
4518
- });
4519
- this._setKebabActions(kebabActions);
4520
- this._setActions(actions);
4514
+ FsFilterOverlayService.prototype._createInjector = function (parentInjector, data, overlayRef) {
4515
+ var injectionTokens = new WeakMap([
4516
+ [FILTER_DRAWER_DATA, data],
4517
+ [FILTER_DRAWER_OVERLAY, overlayRef],
4518
+ ]);
4519
+ return new portal.PortalInjector(parentInjector, injectionTokens);
4521
4520
  };
4522
- ActionsController.prototype._classifyAction = function (action) {
4523
- if (action.menu) {
4524
- this._setKebabActions(__spreadArray(__spreadArray([], __read(this.menuActions)), [action]));
4521
+ FsFilterOverlayService.prototype.removeFilterClass = function () {
4522
+ this._filterMeta.openedFilters--;
4523
+ if (this._filterMeta.openedFilters === 0) {
4524
+ window.document.body.classList.remove('fs-filter-open');
4525
4525
  }
4526
- else {
4527
- this._setActions(__spreadArray(__spreadArray([], __read(this.actions)), [action]));
4526
+ };
4527
+ FsFilterOverlayService.prototype.addFilterClass = function () {
4528
+ this._filterMeta.openedFilters++;
4529
+ if (this._filterMeta.openedFilters === 1) {
4530
+ window.document.body.classList.add('fs-filter-open');
4528
4531
  }
4529
4532
  };
4530
- ActionsController.prototype._listenMobileMedia = function () {
4533
+ FsFilterOverlayService.prototype._openWhenChipClicked = function () {
4531
4534
  var _this = this;
4532
- this._breakpointObserver.observe(this._mobileMedia)
4533
- .pipe(operators.skip(1), operators.takeUntil(this._destroy$))
4535
+ this._focusController.focusOn$
4536
+ .pipe(operators.filter(function (v) { return !!v; }), operators.takeUntil(this._destroy$))
4534
4537
  .subscribe(function () {
4535
- _this._classifyActions();
4538
+ if (!_this.isOpened) {
4539
+ _this.open();
4540
+ }
4536
4541
  });
4537
4542
  };
4538
- return ActionsController;
4543
+ return FsFilterOverlayService;
4539
4544
  }());
4540
- ActionsController.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController, deps: [{ token: i1__namespace$7.BreakpointObserver }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
4541
- ActionsController.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController });
4542
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ActionsController, decorators: [{
4545
+ FsFilterOverlayService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService, deps: [{ token: i0__namespace.Injector }, { token: FS_FILTER_META }, { token: i1__namespace$7.Overlay }, { token: FocusControllerService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
4546
+ FsFilterOverlayService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService });
4547
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterOverlayService, decorators: [{
4543
4548
  type: i0.Injectable
4544
- }], ctorParameters: function () { return [{ type: i1__namespace$7.BreakpointObserver }]; } });
4549
+ }], ctorParameters: function () {
4550
+ return [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
4551
+ type: i0.Inject,
4552
+ args: [FS_FILTER_META]
4553
+ }] }, { type: i1__namespace$7.Overlay }, { type: FocusControllerService }];
4554
+ } });
4555
+
4556
+ var FilterStatusBarDirective = /** @class */ (function () {
4557
+ function FilterStatusBarDirective() {
4558
+ }
4559
+ return FilterStatusBarDirective;
4560
+ }());
4561
+ FilterStatusBarDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterStatusBarDirective, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
4562
+ FilterStatusBarDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FilterStatusBarDirective, selector: "[fsFilterStatusBar]", ngImport: i0__namespace });
4563
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterStatusBarDirective, decorators: [{
4564
+ type: i0.Directive,
4565
+ args: [{
4566
+ selector: '[fsFilterStatusBar]',
4567
+ }]
4568
+ }] });
4545
4569
 
4546
4570
  var FsFilterActionButtonComponent = /** @class */ (function () {
4547
4571
  function FsFilterActionButtonComponent() {
4572
+ this.ActionType = exports.ActionType;
4548
4573
  }
4549
4574
  return FsFilterActionButtonComponent;
4550
4575
  }());
4551
4576
  FsFilterActionButtonComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterActionButtonComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
4552
- FsFilterActionButtonComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterActionButtonComponent, selector: "fs-filter-action-button", inputs: { action: "action" }, host: { classAttribute: "action-button" }, ngImport: i0__namespace, template: "<ng-container [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <button \n type=\"button\"\n *ngSwitchCase=\"'basic'\"\n mat-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Raised button -->\n <button \n type=\"button\"\n *ngSwitchDefault\n mat-raised-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Icon button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"'icon'\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Fab button -->\n <button \n type=\"button\"\n *ngSwitchCase=\"'fab'\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Mini Fab button -->\n <button \n type=\"button\"\n *ngSwitchCase=\"'mini-fab'\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{action.label}}\n </ng-container>\n\n <ng-template #withIcon>\n <mat-icon *ngIf=\"!action.iconPlacement || action.iconPlacement === 'left'\">{{action.icon}}</mat-icon>\n {{action.label}}\n <mat-icon *ngIf=\"action.iconPlacement === 'right'\">{{action.icon}}</mat-icon>\n </ng-template>\n </ng-template>\n</ng-container>\n", components: [{ type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4577
+ FsFilterActionButtonComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterActionButtonComponent, selector: "fs-filter-action-button", inputs: { action: "action" }, host: { classAttribute: "action-button" }, ngImport: i0__namespace, template: "<ng-container [ngSwitch]=\"action.type\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ActionType.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Fab button -->\n <button \n type=\"button\"\n *ngSwitchCase=\"ActionType.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <!-- Mini Fab button -->\n <button \n type=\"button\"\n *ngSwitchCase=\"ActionType.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <button \n type=\"button\"\n *ngSwitchDefault\n mat-button\n [ngClass]=\"{ \n 'mat-raised-button': action.type === 'raised',\n 'mat-flat-button': action.type === 'flat',\n 'mat-stroked-button': action.type === 'stroked',\n 'mat-button': action.type === 'basic',\n 'mat-icon-button': action.type === 'icon'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{action.label}}\n </ng-container>\n\n <ng-template #withIcon>\n <mat-icon *ngIf=\"!action.iconPlacement || action.iconPlacement === 'left'\">{{action.icon}}</mat-icon>\n {{action.label}}\n <mat-icon *ngIf=\"action.iconPlacement === 'right'\">{{action.icon}}</mat-icon>\n </ng-template>\n </ng-template>\n</ng-container>\n", components: [{ type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4553
4578
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterActionButtonComponent, decorators: [{
4554
4579
  type: i0.Component,
4555
4580
  args: [{
@@ -4591,7 +4616,7 @@
4591
4616
  return FsFilterActionsComponent;
4592
4617
  }());
4593
4618
  FsFilterActionsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterActionsComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
4594
- FsFilterActionsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: { kebabActions: "kebabActions", actions: "actions" }, ngImport: i0__namespace, template: "<!-- Buttons -->\n<ng-container *ngFor=\"let action of actions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <ng-container *ngSwitchCase=\"'button'\">\n <fs-filter-action-button\n [action]=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <fs-filter-action-button\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n\n <fs-menu #someRef>\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"childAction.label\">\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{childAction.label}}\n </ng-template>\n </ng-template>\n </ng-container>\n </fs-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <fs-file\n class=\"action-button\"\n [accept]=\"action.accept || '*'\"\n [multiple]=\"action.multiple\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n <fs-filter-action-button [action]=\"action\"></fs-filter-action-button>\n </fs-file>\n </ng-container>\n </ng-container>\n</ng-container>\n<!-- /Buttons -->\n\n<!-- menu -->\n<ng-container *ngIf=\"kebabActions?.length\">\n <fs-filter-action-kebab-actions\n [kebabActions]=\"kebabActions\">\n </fs-filter-action-kebab-actions>\n</ng-container>\n", styles: [":host{display:inline-flex}.action-button{display:block}.action-button+.action-button,fs-menu+.action-button{margin-left:5px}.menu-button{width:36px;height:36px;line-height:36px}\n"], components: [{ type: FsFilterActionButtonComponent, selector: "fs-filter-action-button", inputs: ["action"] }, { type: i3__namespace$4.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4__namespace$3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: FsFilterActionKebabActionsComponent, selector: "fs-filter-action-kebab-actions", inputs: ["kebabActions"] }], directives: [{ type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i7__namespace$1.FsPopoverDirective, selector: "[fsPopover]", inputs: ["text", "template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger", "enabled"] }, { type: i3__namespace$4.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$4.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4619
+ FsFilterActionsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: { kebabActions: "kebabActions", actions: "actions" }, ngImport: i0__namespace, template: "<!-- Buttons -->\n<ng-container *ngFor=\"let action of actions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <ng-container *ngSwitchCase=\"'button'\">\n <fs-filter-action-button\n [action]=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <fs-filter-action-button\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n\n <fs-menu #someRef>\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"childAction.label\">\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{childAction.label}}\n </ng-template>\n </ng-template>\n </ng-container>\n </fs-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <fs-file\n class=\"action-button\"\n [accept]=\"action.accept || '*'\"\n [multiple]=\"action.multiple\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n <fs-filter-action-button \n [action]=\"action\">\n </fs-filter-action-button>\n </fs-file>\n </ng-container>\n </ng-container>\n</ng-container>\n<!-- /Buttons -->\n<!-- menu -->\n<ng-container *ngIf=\"kebabActions?.length\">\n <fs-filter-action-kebab-actions\n [kebabActions]=\"kebabActions\">\n </fs-filter-action-kebab-actions>\n</ng-container>\n", styles: [":host{display:inline-flex}.action-button{display:block}.action-button+.action-button,fs-menu+.action-button{margin-left:5px}.menu-button{width:36px;height:36px;line-height:36px}\n"], components: [{ type: FsFilterActionButtonComponent, selector: "fs-filter-action-button", inputs: ["action"] }, { type: i3__namespace$4.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4__namespace$3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: FsFilterActionKebabActionsComponent, selector: "fs-filter-action-kebab-actions", inputs: ["kebabActions"] }], directives: [{ type: i3__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i7__namespace$1.FsPopoverDirective, selector: "[fsPopover]", inputs: ["text", "template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger", "enabled"] }, { type: i3__namespace$4.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace$4.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
4595
4620
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsFilterActionsComponent, decorators: [{
4596
4621
  type: i0.Component,
4597
4622
  args: [{
@@ -5281,7 +5306,7 @@
5281
5306
  }
5282
5307
  config = Object.assign(Object.assign({}, (this._defaultConfig || {})), config);
5283
5308
  this._config = new FsFilterConfig(config);
5284
- this._actions.initActions(this._config.actions);
5309
+ this._actions.setConfig(this._config);
5285
5310
  this._filterItems.setConfig(this._config);
5286
5311
  this._externalParams.setConfig(this._config);
5287
5312
  this._syncSearchInputWithKeyword();
@@ -5419,7 +5444,7 @@
5419
5444
  FsFilterItemsStore,
5420
5445
  SavedFiltersController,
5421
5446
  ActionsController,
5422
- ], queries: [{ propertyName: "statusBar", first: true, predicate: FilterStatusBarDirective, descendants: true, read: i0.TemplateRef }], viewQueries: [{ propertyName: "searchTextInput", first: true, predicate: ["searchTextInput"], descendants: true }, { propertyName: "searchTextMatInput", first: true, predicate: ["searchTextInput"], descendants: true, read: i3$3.MatInput }], ngImport: i0__namespace, template: "<ng-container>\n <div class=\"filter-container\">\n <ng-container *ngIf=\"hasKeyword\">\n <div class=\"filter-keyword\">\n <form autocomplete=\"off\" role=\"presentation\" *ngIf=\"keywordVisible$ | async\">\n <mat-form-field floatLabel=\"never\">\n <span matPrefix>\n <mat-icon matPrefix>search</mat-icon>\n </span>\n\n <input\n #searchTextInput\n matInput\n [formControl]=\"searchText\"\n [placeholder]=\"searchPlaceholder\"\n name=\"filter-input\"\n (click)=\"filterInputEvent($event)\"\n class=\"filter-input\">\n\n <div matSuffix *ngIf=\"searchText.value && showFilterInput && config.clear\">\n <a\n mat-icon-button \n (click)=\"clearSearchText($event)\"\n class=\"clear\">\n <mat-icon>clear</mat-icon>\n </a>\n </div>\n <div matSuffix>\n <a \n mat-icon-button\n (click)=\"reload($event)\"\n class=\"reload\"\n *ngIf=\"config.reload\">\n <mat-icon>refresh</mat-icon>\n </a>\n </div>\n </mat-form-field>\n </form>\n </div>\n </ng-container>\n\n <div class=\"filter-actions\">\n <ng-container *ngIf=\"hasVisibleItemOrSorting && filtersBtnVisible$ | async\">\n <button\n mat-button\n class=\"filters-button\"\n [ngClass]=\"{\n 'mat-raised-button': config.button.style == 'raised',\n 'mat-button': config.button.style == 'basic',\n 'mat-icon-button': config.button.style == 'icon'\n }\"\n (click)=\"changeVisibilityClick(!showFilterMenu, $event)\"\n type=\"button\"\n [color]=\"config.button.color\">\n <mat-icon *ngIf=\"config.button.icon\">{{config.button.icon}}</mat-icon>\n {{ config.button.label }}\n </button>\n </ng-container>\n \n <fs-filter-actions\n *ngIf=\"actionsVisible$ | async\"\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n </div>\n <div class=\"filter-status-container\">\n <div class=\"filter-status\" *ngIf=\"statusBar\">\n <ng-container *ngTemplateOutlet=\"statusBar\"></ng-container>\n </div>\n <fs-filter-chips\n *ngIf=\"config.chips && hasFilterChips$ | async\"\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n </div>\n</ng-container>", styles: ["fs-filter{display:block}.fs-filter{margin-bottom:20px;display:block}.fs-filter:not(.has-keyword){display:flex;flex-direction:row-reverse}.fs-filter .results{min-height:90px;position:relative;overflow-x:auto;overflow-y:hidden}.fs-filter .filter-status-container{flex-grow:1;display:flex;justify-content:center;flex-direction:column;margin:4px 0}.fs-filter .filter-status-container .filter-status{overflow:hidden;text-overflow:ellipsis;line-height:17px}.fs-filter .filter-status-container .filter-status+fs-filter-chips{margin-top:4px}.fs-filter .filter-status-container fs-filter-chips{display:block}.fs-filter .filter-container{flex-direction:row;box-sizing:border-box;display:flex;position:relative}.fs-filter .filter-container form{width:100%;height:100%}.fs-filter .filter-container .filter-keyword{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;flex:1}.fs-filter .filter-container .filter-keyword .mat-form-field{width:100%;height:100%;font-size:103%}.fs-filter .filter-container .filter-keyword .mat-form-field .mat-form-field-underline{bottom:auto}.fs-filter .filter-container .filter-keyword .mat-form-field .mat-form-field-infix{border-top:0}.fs-filter .filter-container .filter-keyword .mat-form-field .mat-form-field-wrapper{padding-bottom:0;height:100%}.fs-filter .filter-container .filter-keyword .mat-form-field .mat-form-field-flex{align-items:center;height:100%}.fs-filter .filter-container .filter-keyword .mat-form-field-prefix .mat-icon{font-size:22px}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix{display:flex;margin-top:3px}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix .mat-icon-button{height:24px;width:24px}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix .mat-icon{font-size:22px}.fs-filter .filter-container .filter-keyword .mat-form-field-infix{width:auto}.fs-filter .filter-actions{display:flex;align-items:center}.fs-filter button.reload{margin-left:-40px;right:-9px}@media screen and (min-width: 599px){.filter-actions{margin-left:10px}.filters-button+fs-filter-actions:not(:empty){margin-left:5px}}@media screen and (max-width: 600px){.filter-actions{margin-left:5px}.filter-actions .filters-button{font-size:0;padding:0;min-width:unset;width:36px;height:36px;border-radius:50%;box-shadow:unset!important}}@media screen and (min-width: 1200px){body.fs-filter-open{margin-right:350px}.fs-filter-backdrop{display:none}}body.fs-filter-open::-webkit-scrollbar{width:0;background:transparent}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1__namespace$4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: ["kebabActions", "actions"] }, { type: FsFilterChipsComponent, selector: "fs-filter-chips", inputs: ["filters"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }, { type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
5447
+ ], queries: [{ propertyName: "statusBar", first: true, predicate: FilterStatusBarDirective, descendants: true, read: i0.TemplateRef }], viewQueries: [{ propertyName: "searchTextInput", first: true, predicate: ["searchTextInput"], descendants: true }, { propertyName: "searchTextMatInput", first: true, predicate: ["searchTextInput"], descendants: true, read: i3$3.MatInput }], ngImport: i0__namespace, template: "<ng-container>\n <div class=\"filter-container\">\n <ng-container *ngIf=\"hasKeyword\">\n <div class=\"filter-keyword\">\n <form autocomplete=\"off\" role=\"presentation\" *ngIf=\"keywordVisible$ | async\">\n <mat-form-field [floatLabel]=\"'never'\" class=\"form-field-padless\">\n <span matPrefix>\n <mat-icon matPrefix>search</mat-icon>\n </span>\n <input\n #searchTextInput\n matInput\n [formControl]=\"searchText\"\n name=\"filter-input\"\n [placeholder]=\"searchPlaceholder\"\n (click)=\"filterInputEvent($event)\"\n class=\"filter-input\">\n\n <div matSuffix *ngIf=\"searchText.value && showFilterInput && config.clear\">\n <a\n mat-icon-button \n (click)=\"clearSearchText($event)\"\n class=\"clear\">\n <mat-icon>clear</mat-icon>\n </a>\n </div>\n <div matSuffix>\n <a \n mat-icon-button\n (click)=\"reload($event)\"\n class=\"reload\"\n *ngIf=\"config.reload\">\n <mat-icon>refresh</mat-icon>\n </a>\n </div>\n </mat-form-field>\n </form>\n </div>\n </ng-container>\n\n <div class=\"filter-actions\">\n <ng-container *ngIf=\"hasVisibleItemOrSorting && filtersBtnVisible$ | async\">\n <button\n mat-button\n class=\"filters-button\"\n [ngClass]=\"{\n 'mat-raised-button': config.button.style === 'raised',\n 'mat-flat-button': config.button.style === 'flat',\n 'mat-stroked-button': config.button.style === 'stroked',\n 'mat-button': config.button.style === 'basic',\n 'mat-icon-button': config.button.style === 'icon'\n }\"\n (click)=\"changeVisibilityClick(!showFilterMenu, $event)\"\n type=\"button\"\n [color]=\"config.button.color\">\n <mat-icon *ngIf=\"config.button.icon\">{{config.button.icon}}</mat-icon>\n {{ config.button.label }}\n </button>\n </ng-container>\n \n <fs-filter-actions\n *ngIf=\"actionsVisible$ | async\"\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n </div>\n <div class=\"filter-status-container\">\n <div class=\"filter-status\" *ngIf=\"statusBar\">\n <ng-container *ngTemplateOutlet=\"statusBar\"></ng-container>\n </div>\n <fs-filter-chips\n *ngIf=\"config.chips && hasFilterChips$ | async\"\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n </div>\n</ng-container>", styles: ["fs-filter{display:block}.fs-filter{margin-bottom:20px;display:block}.fs-filter:not(.has-keyword){display:flex;flex-direction:row-reverse}.fs-filter .results{min-height:90px;position:relative;overflow-x:auto;overflow-y:hidden}.fs-filter .filter-status-container{flex-grow:1;display:flex;justify-content:center;flex-direction:column;margin:4px 0}.fs-filter .filter-status-container .filter-status{overflow:hidden;text-overflow:ellipsis;line-height:17px}.fs-filter .filter-status-container .filter-status+fs-filter-chips{margin-top:4px}.fs-filter .filter-status-container fs-filter-chips{display:block}.fs-filter .filter-container{flex-direction:row;box-sizing:border-box;display:flex;position:relative}.fs-filter .filter-container form{width:100%;height:100%}.fs-filter .filter-container .filter-keyword{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;flex:1}.fs-filter .filter-container .filter-keyword .mat-form-field{height:100%;width:100%}.fs-filter .filter-container .filter-keyword .mat-form-field .mat-form-field-flex{align-items:center;height:100%}.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:auto}.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-legacy .mat-form-field-infix{border-top:0}.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:0}.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-legacy .mat-icon{font-size:22px;color:#5b5b5b}.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-outline .mat-form-field-suffix,.fs-filter .filter-container .filter-keyword .mat-form-field.mat-form-field-appearance-outline .mat-form-field-prefix{top:0}.fs-filter .filter-container .filter-keyword .mat-form-field-wrapper{height:100%}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix{display:flex}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix .mat-icon-button{height:24px;width:24px}.fs-filter .filter-container .filter-keyword .mat-form-field-suffix .mat-icon-button .mat-icon{display:inline}.fs-filter .filter-actions{display:flex;align-items:center}@media screen and (min-width: 599px){.filter-actions{margin-left:10px}.filters-button+fs-filter-actions:not(:empty){margin-left:5px}}@media screen and (max-width: 600px){.filter-actions{margin-left:5px}.filter-actions .filters-button{font-size:0;padding:0;min-width:unset;width:36px;height:36px;border-radius:50%;box-shadow:unset!important}}@media screen and (min-width: 1200px){body.fs-filter-open{margin-right:350px}.fs-filter-backdrop{display:none}}body.fs-filter-open::-webkit-scrollbar{width:0;background:transparent}\n"], components: [{ type: i1__namespace$3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2__namespace$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1__namespace$4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i1__namespace$4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: ["kebabActions", "actions"] }, { type: FsFilterChipsComponent, selector: "fs-filter-chips", inputs: ["filters"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1__namespace$3.MatPrefix, selector: "[matPrefix]" }, { type: i3__namespace$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1__namespace$3.MatSuffix, selector: "[matSuffix]" }, { type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i3__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
5423
5448
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FilterComponent, decorators: [{
5424
5449
  type: i0.Component,
5425
5450
  args: [{
@@ -5620,7 +5645,7 @@
5620
5645
  common.FsCommonModule,
5621
5646
  i1.FsStoreModule,
5622
5647
  i3.FsDatePickerModule,
5623
- i1$5.FsLabelModule,
5648
+ i1$6.FsLabelModule,
5624
5649
  i4$1.FsAutocompleteModule,
5625
5650
  i5.FsAutocompleteChipsModule,
5626
5651
  scroll.FsScrollModule,
@@ -5651,7 +5676,7 @@
5651
5676
  common.FsCommonModule,
5652
5677
  i1.FsStoreModule,
5653
5678
  i3.FsDatePickerModule,
5654
- i1$5.FsLabelModule,
5679
+ i1$6.FsLabelModule,
5655
5680
  i4$1.FsAutocompleteModule,
5656
5681
  i5.FsAutocompleteChipsModule,
5657
5682
  scroll.FsScrollModule,
@@ -5682,7 +5707,7 @@
5682
5707
  common.FsCommonModule,
5683
5708
  i1.FsStoreModule,
5684
5709
  i3.FsDatePickerModule,
5685
- i1$5.FsLabelModule,
5710
+ i1$6.FsLabelModule,
5686
5711
  i4$1.FsAutocompleteModule,
5687
5712
  i5.FsAutocompleteChipsModule,
5688
5713
  scroll.FsScrollModule,