@firestitch/filter 18.0.39 → 18.0.41
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/helpers/compare.ts","../../src/app/enums/item-type.enum.ts","../../src/app/models/items/base-item.ts","../../src/app/models/items/select/base-select-item.ts","../../src/app/models/items/select/multiple-select-item.ts","../../src/app/consts/query-param-delimiter.ts","../../src/app/helpers/query-param-transformers.ts","../../src/app/helpers/build-query-params.ts","../../src/app/helpers/get-range-name.ts","../../src/app/models/items/date-range/base-date-range-item.ts","../../src/app/models/items/date-range-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/helpers/parse-date.ts","../../src/app/models/items/week-item.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/helpers/restore-items.ts","../../src/app/models/items/autocomplete/base-autocomplete-item.ts","../../src/app/models/items/autocomplete-chips-item.ts","../../src/app/models/items/autocomplete-item.ts","../../src/app/models/items/checkbox-item.ts","../../src/app/models/items/chips-item.ts","../../src/app/enums/item-date-mode.enum.ts","../../src/app/models/items/date/base-date-item.ts","../../src/app/models/items/date-item.ts","../../src/app/models/items/date-time-item.ts","../../src/app/helpers/find-value.ts","../../src/app/models/items/select/simple-select-item.ts","../../src/app/models/items/select-item.ts","../../src/app/models/items/text-item.ts","../../src/app/helpers/create-filter-item.ts","../../src/app/enums/action-mode.enum.ts","../../src/app/enums/action-type.enum.ts","../../src/app/enums/button-style.ts","../../src/app/enums/menu-action-mode.enum.ts","../../src/app/enums/picker-view-type.enum.ts","../../src/app/models/filter-config.ts","../../src/app/services/items-store.service.ts","../../src/app/services/external-params/query-params-controller.service.ts","../../src/app/services/external-params/query-persistance-controller.service.ts","../../src/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.ts","../../src/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.html","../../src/app/services/external-params/saved-filters-controller.service.ts","../../src/app/services/external-params-controller.service.ts","../../src/app/models/action-menu-item.model.ts","../../src/app/models/action.model.ts","../../src/app/components/action-button/action-button.component.ts","../../src/app/components/action-button/action-button.component.html","../../src/app/components/action-kebab-actions/action-kebab-actions.component.ts","../../src/app/components/action-kebab-actions/action-kebab-actions.component.html","../../src/app/components/actions/actions.component.ts","../../src/app/components/actions/actions.component.html","../../src/app/components/filter-chip-content/filter-chip-content.component.ts","../../src/app/components/filter-chip-content/filter-chip-content.component.html","../../src/app/services/focus-controller.service.ts","../../src/app/components/filter-chip/filter-chip.component.ts","../../src/app/components/filter-chip/filter-chip.component.html","../../src/app/components/filter-chips/filter-chips.component.ts","../../src/app/components/filter-chips/filter-chips.component.html","../../src/app/components/filter-drawer-actions/filter-drawer-actions.component.ts","../../src/app/components/filter-drawer-actions/filter-drawer-actions.component.html","../../src/app/injectors/filter-drawer-data.ts","../../src/app/injectors/filter-drawer-overlay.ts","../../src/app/components/filters-item/base-item/base-item.component.ts","../../src/app/directives/focus-to-item/focus-to-item.directive.ts","../../src/app/components/filters-item/select/groups/groups.component.ts","../../src/app/components/filters-item/select/groups/groups.component.html","../../src/app/pipes/remove-isolate-value.pipe.ts","../../src/app/components/filters-item/select/simple/simple.component.ts","../../src/app/components/filters-item/select/simple/simple.component.html","../../src/app/components/filters-item/select/multiple/multiple.component.ts","../../src/app/components/filters-item/select/multiple/multiple.component.html","../../src/app/components/filters-item/select/select.component.ts","../../src/app/components/filters-item/select/select.component.html","../../src/app/components/filters-item/chips/chips.component.ts","../../src/app/components/filters-item/chips/chips.component.html","../../src/app/components/filters-item/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/components/filters-item/week/week.component.ts","../../src/app/components/filters-item/week/week.component.html","../../src/app/components/filters-item/range/range.component.ts","../../src/app/components/filters-item/range/range.component.html","../../src/app/components/filters-item/autocomplete/autocomplete.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.html","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.ts","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.html","../../src/app/components/filters-item/date/date.component.ts","../../src/app/components/filters-item/date/date.component.html","../../src/app/components/filters-item/date-range/date-range.component.ts","../../src/app/components/filters-item/date-range/date-range.component.html","../../src/app/components/filters-item/checkbox/checkbox.component.ts","../../src/app/components/filters-item/checkbox/checkbox.component.html","../../src/app/components/filters-item/filter-item.component.ts","../../src/app/components/filters-item/filter-item.component.html","../../src/app/components/filter-drawer/filter-drawer.component.ts","../../src/app/components/filter-drawer/filter-drawer.component.html","../../src/app/classes/actions-controller.ts","../../src/app/providers/filter-meta.ts","../../src/app/services/filter-overlay.service.ts","../../src/app/directives/status-bar/status-bar.directive.ts","../../src/app/injectors/filter-config.ts","../../src/app/components/filter/filter.component.ts","../../src/app/components/filter/filter.component.html","../../src/app/components/filters-item/select/backdrop/backdrop.component.ts","../../src/app/components/filters-item/select/backdrop/backdrop.component.html","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.ts","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.html","../../src/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.ts","../../src/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.html","../../src/app/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["import { isObject } from 'lodash-es';\n\n\nexport function objectsAreEquals(obj1, obj2) {\n const oldKeys = Object.keys(obj1);\n const currKeys = Object.keys(obj2);\n\n if (oldKeys.length !== currKeys.length) {\n return false;\n }\n\n for (const key in obj1) {\n if (obj1.hasOwnProperty(key)) {\n const oldItem = obj1[key];\n const currItem = obj2[key];\n const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);\n const isObjects = isObject(oldItem) && isObject(currItem);\n\n if (isArrays && !arraysAreEquals(oldItem, currItem)) {\n return false;\n } else if (isObjects && !objectsAreEquals(oldItem, currItem)) {\n return false;\n } else if (!isArrays && !isObjects && oldItem !== currItem) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function arraysAreEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n for (const el of arr1) {\n if (arr2.indexOf(el) === -1) {\n return false;\n }\n }\n\n return true;\n}\n","export enum ItemType {\n Text = 'text',\n Select = 'select',\n Range = 'range',\n Date = 'date',\n DateTime = 'datetime',\n DateRange = 'daterange',\n Week = 'week',\n DateTimeRange = 'datetimerange',\n AutoComplete = 'autocomplete',\n AutoCompleteChips = 'autocompletechips',\n Checkbox = 'checkbox',\n Chips = 'chips',\n Keyword = 'keyword',\n}\n","\nimport { BehaviorSubject, isObservable, Observable, Subject } from 'rxjs';\nimport {\n finalize,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { isFunction } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { IFilterDefaultFn } from '../../interfaces/items/base.interface';\n\n\nexport abstract class BaseItem<T extends IFilterConfigItem> {\n\n public name: string;\n public label: any;\n public chipLabel: string | string[];\n public hide: boolean;\n public defaultValue: any;\n public defaultValueFn: IFilterDefaultFn;\n public persistedValue: unknown;\n public showClear: boolean;\n public persistanceDisabled: boolean;\n public queryParamsDisabled: boolean;\n public change: (item: BaseItem<T>, filter: FilterComponent) => void;\n public init: (item: BaseItem<T>, filter?) => void;\n\n protected readonly _type: T['type'];\n\n protected _model: any = undefined;\n protected _pendingValues = false;\n protected _pendingDefaultValue = false;\n protected _initializedValues = false;\n protected _valuesFn: (keyword?: string, filter?: FilterComponent) => Observable<any> | any[];\n\n private _loading$ = new BehaviorSubject(false);\n private _value$ = new BehaviorSubject(null);\n private _valueChange$ = new Subject<void>();\n private _values$ = new BehaviorSubject(null);\n private _destroy$ = new Subject<void>();\n private _clear$ = new Subject<unknown>();\n\n constructor(\n itemConfig: T,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n this._type = itemConfig.type;\n this._initConfig(itemConfig);\n }\n\n public get filter(): FilterComponent {\n return this._filter;\n }\n\n public get isTypeAutocomplete() {\n return this.type === ItemType.AutoComplete;\n }\n\n public get isTypeAutocompleteChips() {\n return this.type === ItemType.AutoCompleteChips;\n }\n\n public get isTypeChips() {\n return this.type === ItemType.Chips;\n }\n\n public get isTypeCheckbox() {\n return this.type === ItemType.Checkbox;\n }\n\n public get isTypeSelect() {\n return this.type === ItemType.Select;\n }\n\n public get isTypeDate() {\n return this.type === ItemType.Date;\n }\n\n public get isTypeDateRange() {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeRange() {\n return this.type === ItemType.Range;\n }\n\n public get isTypeDateTimeRange() {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isTypeDateTime() {\n return this.type === ItemType.DateTime;\n }\n\n public get isTypeKeyword() {\n return this.type === ItemType.Keyword;\n }\n\n public get isChipVisible(): boolean {\n return !!this.model && !this.isTypeKeyword;\n }\n\n public get destroy$() {\n return this._destroy$.asObservable();\n }\n\n public get type(): T['type'] {\n return this._type;\n }\n\n public get hasPendingValues(): boolean {\n return this._pendingValues;\n }\n\n public get hasPendingDefaultValue(): boolean {\n return this._pendingDefaultValue;\n }\n\n public get hasValue() {\n return this.value !== undefined;\n }\n\n public get model() {\n return this._model;\n }\n\n public set model(value) {\n this._setModel(value);\n this.valueChanged();\n }\n\n public set values(values) {\n this._values$.next(values);\n }\n\n public get values() {\n return this._values$.getValue();\n }\n\n public get values$(): Observable<unknown> {\n return this._values$.asObservable();\n }\n\n public get valueChange$() {\n return this._valueChange$.asObservable();\n }\n\n public get value$() {\n return this._value$.asObservable();\n }\n\n public get clear$() {\n return this._clear$.asObservable();\n }\n\n public get initialized() {\n return this._initialized;\n }\n\n public get loading$(): Observable<boolean> {\n return this._loading$.asObservable();\n }\n\n public get loading(): boolean {\n return this._loading$.getValue();\n }\n\n public set loading(value: boolean) {\n this._loading$.next(value);\n }\n\n public get isQueryParamVisible(): boolean {\n return true;\n }\n\n public get queryObject(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value.join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get persistanceObject(): Record<string, unknown> {\n return this.queryObject;\n }\n\n public loadDefaultValue(): Observable<any> {\n this._pendingDefaultValue = true;\n\n return this.defaultValueFn()\n .pipe(\n tap((value) => {\n this.defaultValue = value;\n\n this._initDefaultModel();\n }),\n finalize(() => {\n this._pendingDefaultValue = false;\n }),\n );\n }\n\n public valueChanged() {\n this._value$.next(this.value);\n\n if (this.change) {\n this.change(this, this._filter);\n }\n\n if (this.initialized) {\n this._valueChange$.next(null);\n }\n }\n\n public initValues(persistedValue: unknown) {\n this._initializedValues = false;\n this.persistedValue = persistedValue;\n this._initDefaultModel();\n\n const isAutocomplete = this.type === ItemType.AutoComplete || \n this.type === ItemType.AutoCompleteChips;\n\n if (this._valuesFn && !isAutocomplete) {\n const valuesResult = this._valuesFn(null, this._filter);\n\n if (isObservable(valuesResult)) {\n this._pendingValues = true;\n } else {\n this.values = valuesResult;\n this._init();\n this._initializedValues = true;\n }\n\n } else {\n this._init();\n this._initializedValues = true;\n }\n }\n\n public loadAsyncValues(reload = true) {\n if (reload || (!this.loading && this.hasPendingValues)) {\n this.loading = true;\n\n (this._valuesFn(null, this._filter) as Observable<unknown>)\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe((values) => {\n this.values = values;\n this._pendingValues = false;\n this.loading = false;\n this._init();\n this._validateModel();\n this._initializedValues = true;\n });\n\n }\n }\n\n public clear(defaultValue: unknown = undefined) {\n if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {\n console.warn(`\n Filter ${this.name} can not be cleared with .clear() method!\n Use special .clearRange() or clearDateRange() instead.\n `);\n }\n\n this._clear$.next(defaultValue);\n this._clearValue(defaultValue);\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n protected _setModel(value) {\n this._model = value;\n }\n\n protected _initDefaultModel() {\n const model = this.persistedValue ?? this.defaultValue;\n\n if (model !== undefined) {\n this._setModel(model);\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n\n protected get _initialized(): boolean {\n return !this._pendingDefaultValue && !this._pendingValues && this._initializedValues;\n }\n\n private _initConfig(item: T) {\n this.name = item.name;\n this.label = item.label;\n this.chipLabel = item.chipLabel;\n\n if (typeof item.default === 'function') {\n this.defaultValueFn = item.default as IFilterDefaultFn;\n } else {\n this.defaultValue = item.default;\n }\n\n this.init = item.init || (() => {\n //\n });\n this.change = item.change;\n this.hide = item.hide;\n this.showClear = item.clear ?? true;\n this.persistanceDisabled = item.disablePersist ?? false;\n this.queryParamsDisabled = item.disableQueryParams ?? false;\n\n if (isFunction(item.values)) {\n this._valuesFn = item.values;\n } else {\n this.values = item.values;\n }\n }\n\n \n public abstract get value();\n public abstract getChipsContent(type): any;\n\n protected abstract _init();\n protected abstract _validateModel();\n \n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport {\n IFilterConfigSelectIsolate,\n IFilterConfigSelectItem,\n} from '../../../interfaces/items/select.interface';\nimport { BaseItem } from '../base-item';\n\nexport interface IFilterIsolate extends IFilterConfigSelectIsolate {\n enabled: boolean;\n}\n\nexport abstract class BaseSelectItem extends BaseItem<IFilterConfigSelectItem> {\n\n public declare children: string;\n public declare multiple: boolean;\n public declare isolate: IFilterIsolate;\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.multiple = itemConfig.multiple;\n this.children = itemConfig.children;\n\n if (itemConfig.isolate) {\n this.isolate = {\n ...itemConfig.isolate,\n enabled: false,\n };\n }\n }\n \n protected _init() {\n if (!Array.isArray(this.values)) {\n this.values = [];\n }\n\n // TODO Refactor\n if (this.isolate) {\n this.values = this.values.filter((item) => {\n if (Array.isArray(this.isolate.value)) {\n return (this.isolate.value as unknown[]).indexOf(item.value) === -1;\n }\n\n return item.value !== this.isolate.value;\n\n });\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n if (this.isolate) {\n this.isolate.enabled = false;\n }\n }\n\n}\n","import { filter, isArrayEqual } from '@firestitch/common';\n\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../../components/filter/filter.component';\nimport { arraysAreEquals } from '../../../helpers/compare';\nimport { IFilterConfigSelectItem } from '../../../interfaces/items/select.interface';\n\nimport { BaseSelectItem } from './base-select-item';\n\n\nexport class MultipleSelectItem extends BaseSelectItem {\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n _persistedValues: any,\n _filter: FilterComponent,\n ) {\n super(itemConfig, _persistedValues, _filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (this.isolateOptionNotSelected) {\n value = this.values?.map((v) => v.value);\n } else if (!Array.isArray(value) || value.length === 0 || value.indexOf('__all') > -1) {\n value = undefined;\n }\n\n return value;\n }\n\n public get isChipVisible(): boolean {\n return Array.isArray(this.model) && this.model.length > 0;\n }\n\n public get isolateOptionNotSelected() {\n const modelValue = this.model;\n const isolate = this.isolate;\n\n return isolate && !isolate.enabled && modelValue?.length === 0;\n }\n\n public getChipsContent(type = null): string {\n if (!this.model) {\n return '';\n }\n\n const options = this.model.reduce((acc, key) => {\n const itemValue = this.values.find((val) => val.value === key);\n let itemLabel: string;\n\n if (itemValue) {\n itemLabel = itemValue.name;\n } else if (this.isolate && this.isolate.enabled) {\n itemLabel = this.isolate.label;\n }\n\n if (!acc.includes(itemLabel)) {\n acc.push(itemLabel);\n }\n\n return acc;\n }, []);\n\n return options.join(', ');\n }\n\n protected _init() {\n super._init();\n\n const values = this.values.map((itemv) => itemv.value);\n const wrongDefaultValue = !this.model && !Array.isArray(this.defaultValue);\n\n /**\n * When multiple select is in isolate mode and have no options selected\n * it should send to the server all it's possible values,\n * but should not show them as selected in interfaces as well as in query params & persistance\n *\n * Code below prevents filling model with values from query params if query params contain all possible values\n */\n const isolate = !wrongDefaultValue\n && !this.isolateOptionNotSelected\n && arraysAreEquals(this.model, values);\n\n if (wrongDefaultValue || isolate) {\n this.model = [];\n }\n }\n \n protected _setModel(value) {\n if (Array.isArray(value)) {\n value = value.map((val) => {\n if (isNaN(val)) {\n return val;\n }\n\n return +val;\n });\n\n value = value.length === 0 ? undefined : value;\n }\n \n\n super._setModel(value);\n }\n\n protected _validateModel() {\n const possibleValues = filter(this.model || [], (item) => {\n return this.values.find((value) => {\n return value.value === item;\n });\n });\n\n if (!isArrayEqual(this.model, possibleValues)) {\n this.model = possibleValues;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n super._clearValue(defaultValue);\n\n this.model = defaultValue ?? [];\n }\n}\n","export const QUERY_PARAM_DELIMITER = ':';\n","import { QUERY_PARAM_DELIMITER } from '../consts/query-param-delimiter';\n\nexport function filterToQueryParam(value, name): string {\n return `${encodeURIComponent(value)}${QUERY_PARAM_DELIMITER}${encodeURIComponent(name)}`;\n}\n\nexport function filterFromQueryParam(param: string): string[] {\n const parts = param.split(QUERY_PARAM_DELIMITER);\n\n return [decodeURIComponent(parts[0]), decodeURIComponent(parts[1])];\n}\n\n","import { list as arrayList } from '@firestitch/common';\n\nimport { isObject } from 'lodash-es';\n\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { BaseItem } from '../models/items/base-item';\nimport { MultipleSelectItem } from '../models/items/select/multiple-select-item';\n\nimport { arraysAreEquals } from './compare';\nimport { filterToQueryParam } from './query-param-transformers';\n\n\nexport function buildQueryParams(flattenedParams: Record<string, unknown>, items: BaseItem<IFilterConfigItem>[]) {\n items\n .forEach((filterItem) => {\n if (filterItem instanceof MultipleSelectItem && filterItem.isolate) {\n if (filterItem.multiple && filterItem.value) {\n const isolated = arrayList(filterItem.values, 'value').sort();\n const value = filterItem.value.sort();\n\n if (arraysAreEquals(value, isolated)) {\n flattenedParams[filterItem.name] = null;\n }\n }\n }\n\n if (filterItem.isTypeAutocomplete) {\n if (isObject(filterItem.model)) {\n flattenedParams[filterItem.name] = filterToQueryParam(filterItem.model.value, filterItem.model.name);\n }\n } else if (filterItem.isTypeAutocompleteChips || filterItem.isTypeChips) {\n if (Array.isArray(filterItem.model) && filterItem.model.length) {\n flattenedParams[filterItem.name] = filterItem.model.map((item) => {\n return filterToQueryParam(item.value, item.name);\n }).join(',');\n }\n }\n });\n\n return flattenedParams;\n}\n","export function getRangeName(name: string, range: string) {\n return name.concat(range.charAt(0).toUpperCase()).concat(range.slice(1));\n}\n","import { isEmpty } from '@firestitch/common';\nimport { format, simpleFormat } from '@firestitch/date';\n\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone, isObject, isString } from 'lodash-es';\n\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { getRangeName } from '../../../helpers/get-range-name';\nimport {\n IFilterConfigDateRangeItem,\n IFilterItemDefaultDateRange,\n} from '../../../interfaces/items/date-range.interface';\nimport { BaseItem } from '../base-item';\n\n\nexport abstract class BaseDateRangeItem extends BaseItem<IFilterConfigDateRangeItem> {\n\n public get isTypeDateRange(): boolean {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeDateTimeRange(): boolean {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isChipVisible(): boolean {\n return this.model && (this.model.from !== undefined || this.model.to !== undefined);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.from, { zero: true }) && isEmpty(this.model.to, { zero: true }))) {\n value = undefined;\n }\n\n if (isEmpty(value, { zero: true })) {\n return undefined;\n }\n\n let from = value.from;\n let to = value.to;\n\n value = {};\n\n if (from) {\n if (isString(from)) {\n from = parseISO(from);\n }\n\n if (isValid(from) && isDate(from)) {\n value.from = from;\n }\n }\n\n if (to) {\n if (isString(to)) {\n to = parseISO(to);\n }\n\n if (isValid(to) && isDate(to)) {\n value.to = to;\n }\n }\n\n return value;\n }\n\n public get queryObject(): Record<string, Date> {\n const value = this.value || {};\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n\n return {\n [paramFromName]: value.from || undefined,\n [paramToName]: value.to || undefined,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const query = this.queryObject;\n\n return Object.keys(this.queryObject)\n .reduce((acc, key) => {\n acc[key] = query[key] ? simpleFormat(query[key]) : query[key];\n\n return acc;\n }, {});\n }\n\n public getChipsContent(type = null): string {\n const formatTo = this.type === ItemType.DateRange ? 'date' : 'date-time';\n\n if (type === 'from') {\n const from = this.model.from;\n\n return `${format(from, formatTo)}`;\n } else if (type === 'to') {\n const to = this.model.to;\n\n return `${format(to, formatTo)}`;\n }\n }\n\n public clearDateRange(\n type: 'from' | 'to' = null, \n defaultValue: IFilterItemDefaultDateRange = undefined,\n ) {\n if (type === 'from') {\n delete this.model.from;\n\n if (defaultValue?.from) {\n this.model.from = defaultValue.from;\n }\n\n this.model = { ...this.model };\n } else if (type === 'to') {\n delete this.model.to;\n\n if (defaultValue?.to) {\n this.model.to = defaultValue.to;\n }\n\n this.model = { ...this.model };\n } else {\n this.model = defaultValue ? { ...defaultValue } : {};\n }\n }\n\n protected _validateModel() {\n }\n\n public get hasModelValue() {\n return this.model;\n }\n\n protected _setModel(value) {\n if (value) {\n if (value.from && (!isDate(value.from) || !isValid(value.from))) {\n value.from = parseISO(value.from);\n }\n if (value.to && (!isDate(value.to) || !isValid(value.to))) {\n value.to = parseISO(value.to);\n }\n }\n\n super._setModel(value);\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Date From', 'Date To'];\n }\n\n if (!this.model) {\n this.model = this.defaultValue || {};\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = this.defaultValue ?? {};\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './date-range/base-date-range-item';\n\n\nexport class DateRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateRangeItem(config, null, filter);\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './date-range/base-date-range-item';\n\n\nexport class DateTimeRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateTimeRangeItem(config, null, filter);\n }\n\n}\n","import { isEmpty } from '@firestitch/common';\n\nimport { clone, isObject } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigRangeItem,\n IFilterItemDefaultRange,\n} from '../../interfaces/items/range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class RangeItem extends BaseItem<IFilterConfigRangeItem> {\n\n public declare options: { scale?: number };\n public declare prefix: string;\n public declare suffix: string;\n \n constructor(\n itemConfig: IFilterConfigRangeItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.options = itemConfig.options;\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigRangeItem, additionalConfig: unknown, filter: FilterComponent) {\n return new RangeItem(config, additionalConfig, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.max, { zero: true }) && isEmpty(this.model.min, { zero: true }))) {\n value = undefined;\n }\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n const paramMinName = getRangeName(name, 'min');\n const paramMaxName = getRangeName(name, 'max');\n\n if (isObject(value)) {\n params[paramMinName] = value.min || undefined;\n params[paramMaxName] = value.max || undefined;\n } else {\n params[paramMinName] = undefined;\n params[paramMaxName] = undefined;\n }\n\n return params;\n }\n\n public get isChipVisible(): boolean {\n return this.model && (this.model.min !== undefined || this.model.max !== undefined);\n }\n\n public getChipsContent(type): string {\n if (type === 'from') {\n const min = this.model.min;\n\n return `${min}`;\n } else if (type === 'to') {\n const max = this.model.max;\n\n return `${max}`;\n }\n }\n\n public clearRange(type: 'from' | 'to' = null, defaultValue: IFilterItemDefaultRange = undefined) {\n if (type === 'from') {\n delete this.model.min;\n\n if (defaultValue?.min) {\n this.model.min = defaultValue.min;\n }\n\n this.model = { ...this.model };\n } else if (type === 'to') {\n delete this.model.max;\n\n if (defaultValue?.max) {\n this.model.max = defaultValue.max;\n }\n\n this.model = { ...this.model };\n } else {\n this.model = defaultValue ? { ...defaultValue } : {};\n }\n }\n\n protected _validateModel() {\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n\n if (!this.model) {\n this.model = this.defaultValue || {};\n }\n }\n}\n","import { isDate, isValid, parseISO } from 'date-fns';\n\nexport function parseDate(value: string) {\n if (value && (!isDate(value) || !isValid(value))) {\n return parseISO(value);\n }\n\n return value;\n}\n","import { isEmpty } from '@firestitch/common';\nimport { simpleFormat } from '@firestitch/date';\nimport { formatPeriodObject } from '@firestitch/datepicker';\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone, isObject, isString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport { parseDate } from '../../helpers/parse-date';\nimport { IFilterConfigWeekItem } from '../../interfaces/items/week.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class WeekItem extends BaseItem<IFilterConfigWeekItem> {\n\n public declare seedDate: Date;\n \n constructor(\n itemConfig: IFilterConfigWeekItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.seedDate = itemConfig.seedDate;\n }\n\n public static create(config: IFilterConfigWeekItem, filter: FilterComponent) {\n return new WeekItem(config, null, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.from, { zero: true }) && isEmpty(this.model.to, { zero: true }))) {\n value = undefined;\n }\n\n if (isEmpty(value, { zero: true })) {\n return undefined;\n }\n\n let from = value.from;\n let to = value.to;\n const period = value.period;\n\n value = {};\n\n if (from) {\n if (isString(from)) {\n from = parseISO(from);\n }\n\n if (isValid(from) && isDate(from)) {\n value.from = from;\n }\n }\n\n if (to) {\n if (isString(to)) {\n to = parseISO(to);\n }\n\n if (isValid(to) && isDate(to)) {\n value.to = to;\n }\n }\n\n if (period) {\n value.period = isString(period) ? parseInt(period, 10) : period;\n }\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: value?.from || undefined,\n [paramToName]: value?.to || undefined,\n [paramPeriodName]: value?.period || undefined,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const query = this.queryObject;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramFromValue = query[paramFromName] && simpleFormat(query[paramFromName]) || query[paramFromName];\n const paramToName = getRangeName(name, 'to');\n const paramToValue = query[paramToName] && simpleFormat(query[paramToName]) || query[paramToName];\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: paramFromValue,\n [paramToName]: paramToValue,\n [paramPeriodName]: query[paramPeriodName],\n };\n }\n\n public getChipsContent(type = null): string {\n return formatPeriodObject(this.value);\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (value) {\n value.from = parseDate(value.from);\n value.to = parseDate(value.to);\n value.period = parseInt(value.period, 10) || undefined;\n }\n\n super._setModel(value);\n }\n\n protected _init() { }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","import { ItemType } from '../enums/item-type.enum';\n\nimport { getRangeName } from './get-range-name';\nimport { filterFromQueryParam } from './query-param-transformers';\n\nexport function parseItemValueFromStored(item, params) {\n const param = params[item.name];\n\n switch (item.type) {\n case ItemType.Range: {\n const min = params[getRangeName(item.name, 'min')];\n const max = params[getRangeName(item.name, 'max')];\n\n return { min: min, max: max };\n }\n\n case ItemType.DateRange: case ItemType.DateTimeRange: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n\n return { from: from, to: to };\n }\n\n case ItemType.Week: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n const period = params[`${item.name}Period`];\n\n return { from, to, period };\n }\n\n case ItemType.Select: {\n if (item.multiple && !!param) {\n const values = param.split(',');\n\n if (item.isolate) {\n const isolatedValue = Array.isArray(item.isolate.value)\n ? item.isolate.value\n : [item.isolate.value];\n\n item.isolate.enabled = arraysHaveSameElements(isolatedValue, values);\n\n return item.isolate.enabled\n ? isolatedValue\n : values;\n }\n\n return values;\n }\n \n return param;\n \n }\n\n case ItemType.Checkbox: {\n return param === item.checked;\n }\n\n case ItemType.AutoComplete: {\n const filterParts = filterFromQueryParam(param);\n\n return {\n name: filterParts[1],\n value: filterParts[0],\n };\n }\n\n case ItemType.AutoCompleteChips: \n case ItemType.Chips: {\n const filterParts = param.split(',');\n\n return filterParts.reduce((arry, value) => {\n\n const chipParts = filterFromQueryParam(value);\n\n arry.push({\n name: chipParts[1],\n value: chipParts[0],\n });\n\n return arry;\n }, []);\n }\n\n default: {\n return param;\n }\n }\n}\n\nfunction arraysHaveSameElements(arr1: unknown[], arr2: unknown[]): boolean {\n\n arr1 = [...arr1].sort();\n arr2 = [...arr2].sort();\n\n return arr1.some((item) => {\n return arr2.includes(item);\n });\n}\n","import { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { WeekItem } from '../models/items/week-item';\n\nimport { getRangeName } from './get-range-name';\nimport { parseItemValueFromStored } from './parse-item-value-from-stored';\n\n\n/**\n * We need this function because when we store persisted/query/remote filter values\n * it stores with different format, ex.: Range will be stored as RangeFrom && RangeTo\n * and in this case we don't know how to restroe those values.\n *\n * This function do convertation for those kinds of stored values\n *\n * @param params\n * @param items\n * @param paramsCase\n */\nexport function restoreItems(params, items) {\n const result = {};\n\n Object.keys(params)\n .forEach((name) => {\n const item = findItemWidthName(items, name);\n\n if (item) {\n result[item.name] = parseItemValueFromStored(item, params);\n }\n });\n\n return result;\n}\n\nfunction findItemWidthName(items, name) {\n return items\n .find((filterItem) => {\n if (filterItem instanceof RangeItem) {\n return name === getRangeName(filterItem.name, 'min') ||\n name === getRangeName(filterItem.name, 'max') ||\n name === filterItem.name;\n } else if (filterItem instanceof DateRangeItem || filterItem instanceof DateTimeRangeItem) {\n return name === getRangeName(filterItem.name, 'from') ||\n name === getRangeName(filterItem.name, 'to');\n } else if (filterItem instanceof WeekItem) {\n return name === getRangeName(filterItem.name, 'from')\n || name === getRangeName(filterItem.name, 'to')\n || name === `${filterItem.name}Period`;\n }\n\n return filterItem.name === name;\n });\n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../../interfaces/items/autocomplete-chips.interface';\nimport { IFilterConfigAutocompleteItem } from '../../../interfaces/items/autocomplete.interface';\nimport { BaseItem } from '../base-item';\n\ntype AutoCompleteItem = IFilterConfigAutocompleteItem | IFilterConfigAutocompleteChipsItem;\n\nexport abstract class BaseAutocompleteItem<T extends AutoCompleteItem> extends BaseItem<T> {\n\n public search: string;\n\n public declare fetchOnFocus: boolean;\n\n public get valuesFn() {\n return this._valuesFn;\n }\n \n constructor(\n itemConfig: T,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.fetchOnFocus = itemConfig.fetchOnFocus ?? true;\n }\n\n protected _validateModel() {\n //\n }\n\n}\n","import { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\n\nimport { BaseAutocompleteItem } from './autocomplete/base-autocomplete-item';\n\n\nexport class AutocompleteChipsItem\n extends BaseAutocompleteItem<IFilterConfigAutocompleteChipsItem> {\n\n public declare chipImage: string;\n public declare chipIcon: string;\n public declare chipColor: string;\n public declare chipIconColor: string;\n public declare chipBackground: string;\n public declare chipClass: string;\n\n constructor(\n itemConfig: IFilterConfigAutocompleteChipsItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.chipImage = itemConfig.chipImage ?? 'image';\n this.chipIcon = itemConfig.chipIcon;\n this.chipIconColor = itemConfig.chipIconColor;\n this.chipColor = itemConfig.chipColor;\n this.chipBackground = itemConfig.chipBackground;\n this.chipClass = itemConfig.chipClass;\n }\n\n public static create(config: IFilterConfigAutocompleteChipsItem, filter: FilterComponent) {\n return new AutocompleteChipsItem(config, null, filter);\n }\n\n public get value() {\n if (Array.isArray(this.model) && this.model.length === 0) {\n return undefined;\n }\n\n return clone(this.model);\n }\n\n public get queryObject(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value\n .filter((item) => !!item.value)\n .map((item) => item.value)\n .join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get isChipVisible(): boolean {\n return Array.isArray(this.model) && this.model.length > 0;\n }\n\n public getChipsContent() {\n return this.model\n .reduce((acc, i) => {\n acc.push(i.name);\n\n return acc;\n }, [])\n .join(', ');\n }\n\n protected _init() {\n if (this.model === undefined) {\n this._model = [];\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? [];\n this.search = '';\n }\n\n protected _setModel(value) {\n super._setModel(value || []);\n }\n\n}\n","\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseAutocompleteItem } from './autocomplete/base-autocomplete-item';\n\n\nexport class AutocompleteItem extends BaseAutocompleteItem<IFilterConfigAutocompleteItem> {\n\n public static create(config: IFilterConfigAutocompleteItem, filter: FilterComponent) {\n return new AutocompleteItem(config, null, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!this.model || this.model.value === undefined) {\n return undefined;\n }\n\n value = this.model.value;\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model ? this.model.name : '';\n }\n\n protected _init() {\n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n this.search = '';\n }\n}\n","import { toString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigCheckboxItem } from '../../interfaces/items/checkbox.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class CheckboxItem extends BaseItem<IFilterConfigCheckboxItem> {\n\n private declare _checked;\n private declare _unchecked;\n\n constructor(\n itemConfig: IFilterConfigCheckboxItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this._checked = itemConfig.checked ? toString(itemConfig.checked) : 'true';\n this._unchecked = itemConfig.unchecked ? toString(itemConfig.unchecked) : undefined;\n this.defaultValue = itemConfig.default;\n }\n\n public get isTypeCheckbox(): boolean {\n return true;\n }\n\n public get isChipVisible() {\n return this.model;\n }\n\n public get value() {\n return this.model;\n }\n\n public get checked(): boolean {\n return this._checked;\n }\n\n public get unchecked(): boolean {\n return this._unchecked;\n }\n\n public get queryObject(): Record<string, unknown> {\n const params = {};\n params[this.name] = this.model ? this.checked : this.unchecked;\n\n return params;\n }\n\n public getChipsContent(): string {\n return this.label as string;\n }\n\n protected _validateModel() {\n //\n }\n\n public get isQueryParamVisible(): boolean {\n return this.model === true;\n }\n\n protected _init() {\n if (this.model === undefined) {\n this._model = this.defaultValue;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = undefined;\n }\n\n}\n","import { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigChipsItem } from '../../interfaces/items/chips.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class ChipsItem extends BaseItem<IFilterConfigChipsItem> {\n\n public declare multiple: boolean;\n\n constructor(\n itemConfig: IFilterConfigChipsItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.multiple = itemConfig.multiple ?? true;\n }\n \n public static create(config: IFilterConfigChipsItem, filter: FilterComponent) {\n return new ChipsItem(config, null, filter);\n }\n\n public get isTypeChips(): boolean {\n return true;\n }\n\n public get value() {\n const value = clone(this.model);\n\n if (Array.isArray(value) && value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n\n public get isChipVisible(): boolean {\n return !!this.value;\n }\n\n public get queryObject(): Record<string, unknown> {\n if(!this.value) {\n return {};\n }\n\n const value = this.value\n .map((item) => item.value)\n .join(',');\n\n const name = this.name;\n\n return {\n [name]: value,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = Array.isArray(value) ? value.join(',') : undefined;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model\n .reduce((acc, i) => {\n acc.push(i.name);\n\n return acc;\n }, [])\n .join(', ');\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (Array.isArray(value)) {\n value = value.map((val) => {\n if (isNaN(val)) {\n return val;\n }\n\n return +val;\n\n });\n }\n\n this._model = value;\n }\n\n protected _init() {\n if (!Array.isArray(this.values)) {\n this.values = [];\n }\n\n if (this.model && Array.isArray(this.model) && this.values.length) {\n if (Number.isInteger(this.model[0])) {\n this._model = this.model.map((id) => {\n return this.values.find((value) => value.value === id);\n });\n }\n }\n\n if (this.model === undefined) {\n this._model = [];\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? [];\n }\n\n}\n","export enum ItemDateMode {\n Calendar = 'calendar',\n ScrollMonthYear = 'monthyear',\n ScrollMonthDayYear = 'monthdayyear'\n}\n","import { simpleFormat } from '@firestitch/date';\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone } from 'lodash-es';\n\nimport { FilterComponent } from '../../../components/filter/filter.component';\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../../interfaces/items/date.interface';\nimport { BaseItem } from '../base-item';\n\n\nexport abstract class BaseDateItem extends BaseItem<IFilterConfigDateItem> {\n\n public maxYear: number;\n public mode: ItemDateMode;\n \n constructor(\n itemConfig: any,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.maxYear = itemConfig.maxYear;\n this.mode = itemConfig.mode || ItemDateMode.Calendar;\n }\n\n public get value() {\n const value = clone(this.model);\n\n if (!value || !isValid(value) || !isDate(value)) {\n return undefined;\n }\n\n return value;\n }\n\n public get queryObject(): Record<string, Date> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get persistanceObject(): Record<string, string> {\n const value = this.queryObject[this.name];\n\n return {\n [this.name]: value ? simpleFormat(value) : undefined,\n };\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (value) {\n if (!isDate(value) || !isValid(value)) {\n value = parseISO(value);\n }\n }\n\n super._setModel(value);\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n }\n\n}\n","import { format } from '@firestitch/date';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './date/base-date-item';\n\n\nexport class DateItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateItem(config, null, filter);\n }\n\n public getChipsContent(): string {\n let dateFormat = 'date';\n\n if (this.mode === ItemDateMode.ScrollMonthYear) {\n dateFormat = 'full-date-dayless';\n }\n\n return format(this.model, dateFormat);\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigDateItem,\n} from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './date/base-date-item';\n\n\nexport class DateTimeItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateTimeItem(config, null, filter);\n }\n\n public getChipsContent() { \n return null;\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","export function findValue(values, value, children) {\n for (let i = 0; i < values.length; i++) {\n const val = values[i];\n\n if (val[children]) {\n return findValue(val[children], value, children);\n }\n\n if (val.value === value) {\n return val;\n }\n }\n\n return undefined;\n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport { findValue } from '../../../helpers/find-value';\nimport { IFilterConfigSelectItem } from '../../../interfaces/items/select.interface';\n\nimport { BaseSelectItem } from './base-select-item';\n\n\nexport class SimpleSelectItem extends BaseSelectItem {\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n _persistedValues: any,\n _filter: FilterComponent,\n ) {\n super(itemConfig, _persistedValues, _filter);\n }\n\n public get value() {\n let value = this.model;\n\n if (value === '__all' || value === undefined) {\n value = undefined;\n }\n\n return value;\n }\n\n public getChipsContent(type = null): string {\n if (this.children) {\n const itemValue = findValue(this.values, this.model, this.children);\n\n return itemValue && itemValue.name;\n }\n const itemValue = this.values.find((val) => val.value === this.model);\n\n if (itemValue) {\n return itemValue.name;\n } else if (this.isolate) {\n return this.isolate.label;\n }\n\n }\n\n public get isChipVisible(): boolean {\n return this.model !== '__all' && this.model !== undefined;\n }\n\n protected _init() {\n super._init();\n\n if (this.model === undefined && this.defaultValue === undefined) {\n this._model = '__all';\n }\n }\n\n protected get isolateOptionNotSelected() {\n const modelValue = this.model;\n const isolate = this.isolate;\n\n return isolate && !isolate.enabled && modelValue?.length === 0;\n }\n\n protected _setModel(value): void {\n if (value) {\n if (!isNaN(value)) {\n value = +value;\n }\n }\n\n super._setModel(value);\n }\n\n protected _validateModel() {\n const item = this.values.find((value) => {\n return value.value == this.model;\n });\n\n const value = item ? item.value : '__all';\n\n if (this._model !== value) {\n this.model = value;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n super._clearValue(defaultValue);\n\n const value = Array.isArray(this.values) && this.values.some((val) => val.value === '__all')\n ? '__all'\n : undefined;\n\n this.model = defaultValue ?? value;\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\n\nimport { MultipleSelectItem } from './select/multiple-select-item';\nimport { SimpleSelectItem } from './select/simple-select-item';\n\n\nexport class SelectItem {\n\n public readonly type: ItemType.Select;\n\n public static create(config, filter: FilterComponent): SimpleSelectItem | MultipleSelectItem {\n if (config.multiple) {\n return new MultipleSelectItem(config, null, filter);\n }\n\n return new SimpleSelectItem(config, null, filter);\n\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigTextItem,\n} from '../../interfaces/items/text.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class TextItem extends BaseItem<IFilterConfigTextItem> {\n\n public declare prefix: string;\n public declare suffix: string;\n\n constructor(\n itemConfig: IFilterConfigTextItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigTextItem, filter: FilterComponent) {\n return new TextItem(config, null, filter);\n }\n\n public get value() {\n return this.model ? this.model : undefined;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model;\n }\n\n protected _validateModel() {\n //\n }\n\n protected _init() {\n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? '';\n }\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { IFilterConfigDateRangeItem } from '../interfaces/items/date-range.interface';\nimport { IFilterConfigDateItem } from '../interfaces/items/date.interface';\nimport { IFilterConfigTextItem } from '../interfaces/items/text.interface';\nimport { IFilterConfigWeekItem } from '../interfaces/items/week.interface';\nimport { AutocompleteChipsItem } from '../models/items/autocomplete-chips-item';\nimport { AutocompleteItem } from '../models/items/autocomplete-item';\nimport { CheckboxItem } from '../models/items/checkbox-item';\nimport { ChipsItem } from '../models/items/chips-item';\nimport { DateItem } from '../models/items/date-item';\nimport { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeItem } from '../models/items/date-time-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { SelectItem } from '../models/items/select-item';\nimport { TextItem } from '../models/items/text-item';\nimport { WeekItem } from '../models/items/week-item';\n\n\nexport function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent) {\n switch (item.type) {\n case ItemType.Select: {\n return SelectItem.create(item, filter);\n }\n\n case ItemType.Chips: {\n return ChipsItem.create(item, filter);\n }\n\n case ItemType.Range: {\n return RangeItem.create(item, config, filter);\n }\n\n case ItemType.DateRange: {\n return DateRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.DateTimeRange: {\n return DateTimeRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.Date: {\n return DateItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.Week: {\n return WeekItem.create(item as IFilterConfigWeekItem, filter);\n }\n\n case ItemType.DateTime: {\n return DateTimeItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.AutoComplete: {\n return AutocompleteItem.create(item, filter);\n }\n\n case ItemType.AutoCompleteChips: {\n return AutocompleteChipsItem.create(item, filter);\n }\n\n case ItemType.Checkbox: {\n return new CheckboxItem(item, null, filter);\n }\n\n case ItemType.Keyword: case ItemType.Text: {\n return TextItem.create(item as IFilterConfigTextItem, filter);\n }\n }\n}\n","export enum ActionMode {\n Button = 'button',\n SelectButton = 'selectButton',\n Menu = 'menu',\n File = 'file',\n}\n","import { ButtonStyle } from './button-style';\n\nexport enum ActionType {\n Basic = ButtonStyle.Basic,\n Raised = ButtonStyle.Raised,\n Icon = ButtonStyle.Icon,\n Fab = ButtonStyle.Fab,\n MiniFab = ButtonStyle.MiniFab,\n Flat = ButtonStyle.Flat,\n Stroked = ButtonStyle.Stroked, \n}\n","export enum ButtonStyle {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab',\n Flat = 'flat',\n Stroked = 'stroked',\n}\n","export enum MenuActionMode {\n Menu = 'menu',\n File = 'file',\n Group = 'group',\n}\n","export enum PickerViewType {\n Date = \"date\",\n DateTime = \"datetime\",\n Time = \"time\",\n Week = \"week\",\n MonthRange = \"monthrange\"\n}\n","import { ButtonStyle } from '../enums';\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { ChangeFn, FilterSort, FsFilterAutoReload, Sort } from '../interfaces/config.interface';\nimport { IFilterSavedFiltersConfig } from '../interfaces/saved-filters.interface';\n\nimport {\n FilterButton,\n FilterConfig,\n FsFilterPersistance,\n IFilterConfigItem,\n} from './../interfaces/config.interface';\n\nexport const SortByField = 'sortName';\nexport const SortDirectionField = 'sortDirection';\n\n\nexport class FsFilterConfig {\n\n public load = true;\n public persist: FsFilterPersistance = false;\n public savedFilters: IFilterSavedFiltersConfig;\n public inline = false;\n public autofocus = false;\n public chips = false;\n public buttonStyle: ButtonStyle;\n public sortValues: any[] = null;\n public sort: Sort = null;\n public queryParam = false;\n public init: (query?: any, sort?: FilterSort | null, filter?) => void;\n public change: ChangeFn;\n public reload: ChangeFn;\n public autoReload: FsFilterAutoReload;\n public clear: ChangeFn;\n public sortChange: ChangeFn;\n public reloadWhenConfigChanged: boolean;\n public button: FilterButton;\n public items: IFilterConfigItem[];\n public actions: FsFilterAction[];\n public namespace: string; // for persistance\n\n constructor(data: FilterConfig = {}) {\n this._init(data);\n }\n\n private _init(data: FilterConfig = {}) {\n Object.assign(this, {\n load: data.load ?? true,\n persist: data.persist,\n savedFilters: data.savedFilters,\n inline: data.inline ?? false,\n autofocus: data.autofocus ?? false,\n chips: data.chips ?? false,\n sortValues: data.sorts,\n sort: data.sort,\n queryParam: data.queryParam ?? false,\n init: data.init,\n change: data.change,\n reload: data.reload,\n autoReload: data.autoReload,\n clear: data.clear,\n sortChange: data.sortChange,\n case: data.case ?? 'camel',\n reloadWhenConfigChanged: data.reloadWhenConfigChanged,\n items: data.items,\n actions: data.actions,\n buttonStyle: data.buttonStyle || ButtonStyle.Raised,\n });\n\n if (this.persist) {\n if (typeof this.persist === 'object') {\n if (this.persist.name) {\n this.namespace = this.persist.name;\n }\n }\n }\n\n if (this.clear === undefined) {\n this.clear = () => { \n //\n };\n }\n\n this._initButton(data);\n }\n\n private _initButton(data: FilterConfig): void {\n this.button = data.button;\n if (!this.button) {\n this.button = {};\n }\n\n if (this.button.label === undefined) {\n this.button.label = 'Filters';\n }\n\n if (this.button.icon === undefined) {\n this.button.icon = 'filterOutline';\n }\n\n if (this.button.style === undefined) {\n this.button.style = ButtonStyle.Raised;\n }\n\n if (this.button.color === undefined) {\n this.button.color = 'default';\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, forkJoin, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, finalize, takeUntil } from 'rxjs/operators';\n\nimport { pickBy } from 'lodash-es';\n\nimport type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n FilterSort,\n IFilterConfigItem,\n SortItem,\n} from '../interfaces/config.interface';\nimport { IFilterExternalParams } from '../interfaces/external-params.interface';\nimport { ISortingChangeEvent } from '../interfaces/filter.interface';\nimport { IFilterConfigSelectItem } from '../interfaces/items/select.interface';\nimport { FsFilterConfig, SortByField, SortDirectionField } from '../models/filter-config';\nimport { BaseItem } from '../models/items/base-item';\nimport { BaseDateRangeItem } from '../models/items/date-range/base-date-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { MultipleSelectItem } from '../models/items/select/multiple-select-item';\nimport { SimpleSelectItem } from '../models/items/select/simple-select-item';\nimport { TextItem } from '../models/items/text-item';\n\n\ninterface IValueAsQuery {\n onlyPresented?: boolean;\n items?: BaseItem<IFilterConfigItem>[];\n persisted?: boolean;\n}\n\n@Injectable()\nexport class FsFilterItemsStore implements OnDestroy {\n\n public sortByItem: BaseItem<IFilterConfigItem> = null;\n public sortDirectionItem: BaseItem<IFilterConfigItem> = null;\n public keywordItem: TextItem = null;\n public filter: FilterComponent;\n\n private _ready$ = new BehaviorSubject(false);\n private _visibleItems$ = new BehaviorSubject<BaseItem<IFilterConfigItem>[]>([]);\n private _items = new Map<string, BaseItem<IFilterConfigItem>>();\n\n private _itemsValuesLoaded = false;\n private _hasKeyword = false;\n private _config: FsFilterConfig;\n\n private _itemsChange$ = new Subject();\n private _destroy$ = new Subject<void>();\n\n constructor(\n ) {\n this._lazyInit();\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return Array.from(this._items.values());\n }\n\n public get itemNames(): string[] {\n return this.items.map((item) => item.name);\n }\n\n public get visibleItems(): BaseItem<IFilterConfigItem>[] {\n return this._visibleItems$.getValue();\n }\n\n public set visibleItems(items: BaseItem<IFilterConfigItem>[]) {\n this._visibleItems$.next(items);\n }\n\n public get visibleItems$(): Observable<BaseItem<IFilterConfigItem>[]> {\n return this._visibleItems$.asObservable();\n }\n\n public get hasKeyword(): boolean {\n return this._hasKeyword;\n }\n\n public get itemsChange$() {\n return this._itemsChange$.pipe(debounceTime(30));\n }\n\n public get ready$() {\n return this._ready$.asObservable();\n }\n\n public ngOnDestroy() {\n this.destroyItems();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config) {\n this._config = config;\n this.initItems(config.items);\n }\n\n public getItemByName(name: string): BaseItem<IFilterConfigItem> {\n return this._items.get(name);\n }\n\n public initItems(items: IFilterConfigItem[]) {\n this._itemsValuesLoaded = false;\n if (Array.isArray(items)) {\n this._createItems(items);\n }\n }\n\n public filtersClear() {\n this.items.forEach((item) => {\n if (item instanceof RangeItem) {\n item.clearRange(null, item.defaultValue);\n } else if (item instanceof BaseDateRangeItem) {\n item.clearDateRange(null, item.defaultValue);\n } else {\n item.clear(item.defaultValue);\n }\n });\n\n if (this.sortByItem) {\n if (this._config.sort) {\n this.sortByItem.model = this._config.sort.value;\n } else {\n this.sortByItem.clear(this.sortByItem.defaultValue);\n }\n }\n\n if (this.sortDirectionItem) {\n if (this._config.sort) {\n this.sortDirectionItem.model = this._config.sort.direction;\n } else {\n this.sortDirectionItem.clear(this.sortDirectionItem.defaultValue);\n }\n }\n\n this.keywordItem?.clear();\n }\n\n public loadAsyncValues() {\n this.items\n .filter((item) => item.hasPendingValues)\n .forEach((item) => item.loadAsyncValues());\n }\n\n public loadAsyncDefaults(): void {\n // default values can be asynchronous, and we must load them if there is no persisted value instead\n const defaultValuesToBeLoaded = this.items\n .filter((item) => {\n return item.defaultValueFn\n && (item.persistedValue === null || item.persistedValue === undefined);\n });\n\n // special hack for isolate multiple select\n // values for this type of select must be preloaded\n // Read more in class MultipleSelectItem._init()\n const valuesToBeLoaded = this.items\n .filter((item) => {\n return (item instanceof MultipleSelectItem) && item.hasPendingValues && item.isolate;\n });\n\n if (defaultValuesToBeLoaded.length > 0 || valuesToBeLoaded.length > 0) {\n forkJoin(\n [\n ...defaultValuesToBeLoaded\n .map((item) => item.loadDefaultValue()),\n\n ...valuesToBeLoaded\n .map((item) => {\n item.loadAsyncValues();\n\n return item.loading$\n .pipe();\n }),\n ],\n )\n .pipe(\n finalize(() => {\n this._ready$.next(true);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n } else {\n this._ready$.next(true);\n }\n }\n\n public getSort(): FilterSort {\n let sortBy = this.getSortByValue();\n sortBy = sortBy === '__all' ? null : sortBy;\n\n let sortDirection = this.getSortDirectionValue();\n sortDirection = sortDirection === '__all' ? null : sortDirection;\n\n return {\n value: sortBy,\n direction: sortDirection,\n };\n }\n\n public getSortByValue() {\n return this.sortByItem ? this.sortByItem.model : null;\n }\n\n public getSortDirectionValue() {\n return this.sortDirectionItem ? this.sortDirectionItem.model : null;\n }\n\n public updateSort(sort: ISortingChangeEvent) {\n if (sort.sortBy) {\n this.sortByItem.model = sort.sortBy;\n }\n\n if (sort.sortDirection) {\n this.sortDirectionItem.model = sort.sortDirection;\n }\n }\n\n public values(onlyPresented = false): Record<string, unknown> {\n return this.items\n .reduce((acc, item) => {\n const value = item.value;\n\n if (!onlyPresented || value !== null) {\n acc[item.name] = value;\n }\n\n return acc;\n }, {});\n }\n\n public valuesAsQuery({\n onlyPresented = true,\n items = null,\n persisted = false,\n }: IValueAsQuery = {}): Record<string, unknown> {\n const params = {};\n\n (items || this.items)\n .forEach((filterItem: BaseItem<any>) => {\n const values = persisted\n ? filterItem.persistanceObject\n : filterItem.queryObject;\n\n Object.assign(params, values);\n });\n\n if (onlyPresented) {\n return pickBy(params, (val) => {\n return val !== undefined;\n });\n }\n\n return params;\n }\n\n public init(p: IFilterExternalParams) {\n this.items\n .forEach((item) => {\n item.initValues(p[item.name]);\n });\n\n this._initSortingItems(p);\n this.loadAsyncDefaults();\n this._subscribeToItemsChanges();\n }\n\n public updateItemsWithValues(values: IFilterExternalParams) {\n this.items\n .forEach((item) => {\n if (values[item.name]) {\n item.model = values[item.name];\n } else {\n if (item instanceof RangeItem) {\n item.clearRange(null, item.defaultValue);\n } else if (item instanceof BaseDateRangeItem) {\n item.clearDateRange(null, item.defaultValue);\n } else {\n item.clear();\n }\n }\n });\n\n if (this.sortByItem) {\n this.sortByItem.clear();\n }\n if (this.sortDirectionItem) {\n this.sortDirectionItem.clear();\n }\n }\n\n public updateSortingItemsValues(items: SortItem[]) {\n if (!this.sortByItem) {\n return;\n }\n\n this.sortByItem.values = items;\n }\n\n public destroyItems() {\n this.items\n .forEach((item) => item.destroy());\n this.sortByItem?.destroy();\n this.sortDirectionItem?.destroy();\n\n this._items.clear();\n this.sortByItem = null;\n this.sortDirectionItem = null;\n }\n\n /**\n * Some items might need to load async values before they will be shown\n */\n public prepareItems() {\n if (!this._itemsValuesLoaded) {\n this._itemsValuesLoaded = true;\n\n this.loadAsyncValues();\n }\n }\n\n public updateItemsVisiblity(): void {\n this.visibleItems = this.items\n .filter((item) => !item.isTypeKeyword && !item.hide);\n }\n\n private _createItems(items: IFilterConfigItem[]) {\n this._items = new Map(\n items\n .filter((item) => !item.disable)\n .filter((item) => {\n if (this._items.has(item.name)) {\n throw Error('Filter init error. Items name must be unique.');\n }\n\n return true;\n })\n .map((item) => {\n const filterItem = createFilterItem(item, { }, this.filter);\n\n if (filterItem.type === ItemType.Keyword) {\n this._hasKeyword = true;\n }\n\n this._items.set(item.name, filterItem);\n\n return [item.name, filterItem];\n }),\n );\n\n this._createSortingItems();\n }\n\n private _subscribeToItemsChanges() {\n this.items\n .forEach((item) => {\n item.valueChange$\n .pipe(\n takeUntil(item.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(item);\n });\n });\n\n if (this._config.sortValues?.length) {\n this.sortByItem.valueChange$\n .pipe(\n takeUntil(this.sortByItem.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(this.sortByItem);\n });\n\n this.sortDirectionItem.valueChange$\n .pipe(\n takeUntil(this.sortDirectionItem.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(this.sortDirectionItem);\n });\n }\n }\n\n private _lazyInit(): void {\n this.ready$\n .pipe(\n filter((state) => state),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateItemsVisiblity();\n this._setKeywordItem();\n });\n }\n\n private _initSortingItems(p: IFilterExternalParams): void {\n if (this.sortByItem && this.sortDirectionItem) {\n this.sortByItem.initValues(p[this.sortByItem.name]);\n this.sortDirectionItem.initValues(p[this.sortDirectionItem.name]);\n }\n }\n\n private _createSortingItems(): void {\n if (this._config.sortValues?.length > 0) {\n const sortByItem = {\n name: SortByField,\n type: ItemType.Select,\n label: 'Sort by',\n values: this._config.sortValues,\n } as IFilterConfigSelectItem;\n\n\n if (this._config.sort && this._config.sort.value) {\n sortByItem.default = this._config.sort.value;\n }\n\n this.sortByItem = new SimpleSelectItem(\n sortByItem,\n null,\n this.filter,\n );\n\n const sortDirectionItem = {\n name: SortDirectionField,\n type: ItemType.Select,\n label: 'Sort direction',\n values: [\n { name: 'Ascending', value: 'asc' },\n { name: 'Descending', value: 'desc' },\n ],\n } as IFilterConfigSelectItem;\n\n if (this._config.sort && this._config.sort.direction) {\n sortDirectionItem.default = this._config.sort.direction;\n }\n\n this.sortDirectionItem = new SimpleSelectItem(\n sortDirectionItem,\n null,\n this.filter,\n );\n }\n }\n\n private _setKeywordItem() {\n this.keywordItem = this\n .items\n .find((item) => item.isTypeKeyword) as TextItem;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { restoreItems } from '../../helpers/restore-items';\nimport { FsFilterItemsStore } from '../items-store.service';\n\n\n@Injectable()\nexport class QueryParamsController {\n\n private _enabled = false;\n private _fetchedParams: Record<string, any>;\n\n constructor(\n private _route: ActivatedRoute,\n private _itemsStore: FsFilterItemsStore,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled;\n }\n\n public get fetchedParams() {\n return this._fetchedParams;\n }\n\n public init(enabled: boolean) {\n this._enabled = enabled;\n\n if (this.enabled) {\n this.fetchFromQueryParams();\n }\n }\n\n public writeStateToQueryParams(params) {\n if (this._enabled) { \n this._replaceState(params);\n }\n }\n\n /**\n * Parse query and update filter values\n */\n public fetchFromQueryParams() {\n const items = [\n ...this._itemsStore.items,\n this._itemsStore.sortByItem,\n this._itemsStore.sortDirectionItem,\n ]\n .filter((item) => !!item);\n\n this._fetchedParams = restoreItems(\n this._route.snapshot.queryParams,\n items,\n );\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .forEach((name) => {\n if(data[name] === undefined || data[name] === null) {\n url.searchParams.delete(name);\n } else {\n url.searchParams.set(name,data[name]);\n }\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { FsStore } from '@firestitch/store';\n\nimport { FsFilterPersistance, FsFilterPersistanceConfig } from '../../interfaces';\nimport { FsFilterConfig } from '../../models/filter-config';\n\n\n@Injectable()\nexport class QueryPersistanceController {\n\n public queryEnabled = false;\n\n private _store = inject(FsStore);\n private _name: string;\n private _data: any = {};\n private _location = inject(Location);\n private readonly _storeKey = 'fs-filter-persist';\n\n public setConfig(filterConfig: FsFilterConfig, inDialog: boolean) {\n const config = this._initConfig(filterConfig.persist, inDialog);\n\n if(config) {\n this.queryEnabled = config.persistQuery;\n this._name = config.name;\n this._data = this._get() || {};\n }\n }\n\n public setQuery(value: any) {\n this._set('query', value);\n }\n\n public getQuery() {\n return this._data.query || {};\n }\n\n private _set(key: string, value: any) {\n this._data[key] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this._name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this._name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsFilterPersistance, inDialog: boolean): FsFilterPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n persistQuery: !inDialog || !!persistanceConfig.name,\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n\nimport { IFilterExternalParams } from '../../../interfaces/external-params.interface';\nimport {\n FilterRemoteSave,\n IFilterSavedFilter,\n} from '../../../interfaces/saved-filters.interface';\n\n\n@Component({\n templateUrl: './saved-filter-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterSavedFilterEditComponent {\n\n public filterParams: IFilterExternalParams;\n public saveAsFilter: IFilterSavedFilter | 'new' = 'new';\n public savedFilters: IFilterSavedFilter[];\n public savedFilterName = '';\n\n private _saveCallback: FilterRemoteSave;\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private _dialogRef: MatDialogRef<FsFilterSavedFilterEditComponent>,\n ) {\n this.savedFilters = this.data.savedFilters;\n this._saveCallback = this.data.saveCallback;\n }\n\n public save = () => {\n const savedFilter: IFilterSavedFilter = this.saveAsFilter === 'new' ? \n {\n name: this.savedFilterName,\n active: true,\n filters: this.data.params,\n } : {\n ...this.saveAsFilter,\n filters: this.data.params,\n };\n\n return this._saveCallback(savedFilter)\n .pipe(\n tap((filter) => {\n this._dialogRef.close(filter);\n }),\n takeUntil(this._destroy$),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <h1 mat-dialog-title>\n Save filter\n </h1>\n <div mat-dialog-content>\n <mat-form-field>\n <mat-label>Save as</mat-label>\n <mat-select [(ngModel)]=\"saveAsFilter\" name=\"saveAs\">\n <mat-option value=\"new\">New filter</mat-option>\n <ng-container *ngIf=\"savedFilters.length\">\n <mat-optgroup label=\"Saved filters\">\n <ng-container *ngFor=\"let filter of savedFilters\">\n <mat-option [value]=\"filter\">{{ filter.name }}</mat-option>\n </ng-container>\n </mat-optgroup>\n </ng-container>\n </mat-select>\n </mat-form-field>\n <br>\n <mat-form-field *ngIf=\"saveAsFilter === 'new'\">\n <mat-label>Name</mat-label>\n <input matInput name=\"filter-name\" [(ngModel)]=\"savedFilterName\" required>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button \n mat-button\n type=\"submit\"\n color=\"primary\">\n {{ saveAsFilter === 'new' ? 'Create' : 'Save' }}\n </button>\n\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </div>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport {\n FsFilterSavedFilterEditComponent,\n} from '../../components/saved-filter/saved-filter-edit/saved-filter-edit.component';\nimport { buildQueryParams } from '../../helpers/build-query-params';\nimport { restoreItems } from '../../helpers/restore-items';\nimport { IFilterExternalParams } from '../../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n IFilterSavedFiltersConfig,\n} from '../../interfaces/saved-filters.interface';\nimport { FsFilterItemsStore } from '../items-store.service';\n\n\n@Injectable()\nexport class SavedFiltersController implements OnDestroy {\n\n protected _config: IFilterSavedFiltersConfig;\n\n private _savedFilters$ = new BehaviorSubject<IFilterSavedFilter[]>([]);\n private _activeFilter$ = new BehaviorSubject<IFilterSavedFilter>(null);\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _dialog: MatDialog,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilters$.getValue();\n }\n\n public set savedFilters(filters: IFilterSavedFilter[]) {\n this._savedFilters$.next(filters);\n }\n\n public get savedFilters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilter(): IFilterSavedFilter {\n return this._activeFilter$.getValue();\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._activeFilter$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilterData(): IFilterExternalParams {\n return this._activeFilter$.getValue()?.filters;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(\n remoteParamsConfig: IFilterSavedFiltersConfig,\n ): void {\n if (!remoteParamsConfig) {\n this._setEnabledStatus(false);\n\n return;\n }\n this._setEnabledStatus(true);\n\n this._config = remoteParamsConfig;\n }\n\n public initSavedFilters(filters: IFilterSavedFilter[]): void {\n filters = [...filters];\n filters.forEach((savedFilter) => {\n savedFilter.filters = restoreItems(\n savedFilter.filters,\n this._itemsStore.items,\n );\n });\n\n this.savedFilters = filters;\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n return this._config.load()\n .pipe(\n tap((response) => {\n this.initSavedFilters(response);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._config.save(savedFilter);\n }\n\n public order(savedFilters: IFilterSavedFilter[]): Observable<IFilterSavedFilter[]> {\n return this._config.order(savedFilters)\n .pipe(\n tap(() => {\n this.savedFilters = [\n ...savedFilters,\n ];\n }),\n );\n }\n\n public delete(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._config.delete(savedFilter)\n .pipe(\n tap(() => {\n this.savedFilters = this.savedFilters\n .filter((f) => f.id !== savedFilter.id);\n }),\n );\n }\n\n public setActiveFilter(savedFilter: IFilterSavedFilter): void {\n if (savedFilter) {\n const existingFilter = this.savedFilters\n .find((f) => f.id === savedFilter.id);\n\n if (!existingFilter) {\n throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);\n }\n\n this._activeFilter$.next(existingFilter);\n } else {\n this._activeFilter$.next(null);\n }\n }\n\n public openSavedFilterEditDialog(): void {\n const params = buildQueryParams(\n this._itemsStore.valuesAsQuery(),\n this._itemsStore.items,\n );\n\n const dialogConfig = {\n data: {\n params: params,\n savedFilters: this.savedFilters,\n saveCallback: this.save.bind(this),\n },\n };\n\n this._dialog\n .open(FsFilterSavedFilterEditComponent, dialogConfig)\n .beforeClosed()\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe((updatedFilter: IFilterSavedFilter | null) => {\n if (updatedFilter) {\n // get already saved related filter object\n const savedFilter = this.savedFilters\n .find((f) => f.id === updatedFilter.id);\n\n // restore values from query string\n updatedFilter.filters = restoreItems(\n updatedFilter.filters,\n this._itemsStore.items,\n );\n\n\n if (savedFilter) {\n Object.assign(savedFilter, updatedFilter);\n } else {\n this.resetActiveFilter();\n this.savedFilters = [\n ...this.savedFilters,\n updatedFilter,\n ];\n }\n\n this.updateActiveFilter();\n }\n });\n }\n\n public updateActiveFilter(): void {\n // Lookup active filter\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this.setActiveFilter(acitveFilter);\n }\n }\n\n public resetActiveFilter(): void {\n // Reset all previously activated filters\n this.savedFilters.forEach((savedFilter) => {\n savedFilter.active = false;\n });\n\n this.setActiveFilter(null);\n }\n\n private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { buildQueryParams } from '../helpers/build-query-params';\nimport { IFilterExternalParams, IFilterSavedFilter } from '../interfaces';\nimport { FsFilterConfig } from '../models/filter-config';\n\nimport {\n QueryParamsController, QueryPersistanceController, SavedFiltersController,\n} from './external-params';\nimport { FsFilterItemsStore } from './items-store.service';\n\n\n@Injectable()\nexport class ExternalParamsController implements OnDestroy {\n\n protected _init;\n\n private _pending$ = new BehaviorSubject(false);\n private _shouldResetSavedFilters = true;\n private _config: FsFilterConfig;\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _persistanceStore: QueryPersistanceController,\n private _queryParams: QueryParamsController,\n private _savedFilters: SavedFiltersController,\n ) { }\n\n public get params(): IFilterExternalParams {\n let result: IFilterExternalParams = {};\n\n if (this._persistanceStore.queryEnabled) {\n result = {\n ...result, \n ...this._persistanceStore.getQuery(),\n };\n }\n\n if (this._savedFilters.enabled && this._savedFilters.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this._itemsStore.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilters.activeFilterData,\n };\n } else if (this._queryParams.enabled) {\n result = {\n ...result, \n ...this._queryParams.fetchedParams,\n };\n }\n\n return result;\n }\n\n public get pending(): boolean {\n return this._pending$.getValue();\n }\n\n public get pending$(): Observable<boolean> {\n return this._pending$.asObservable();\n }\n\n public get savedFiltersController(): SavedFiltersController {\n return this._savedFilters;\n }\n\n public get savedFiltersEnabled(): boolean {\n return this._savedFilters.enabled;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config) {\n this._config = config;\n\n this._initQueryParams();\n this._initSavedFilters();\n this.initItems();\n }\n\n public setActiveSavedFilter(savedFilter: IFilterSavedFilter) {\n this.savedFiltersController.setActiveFilter(savedFilter);\n\n if (savedFilter) {\n this.reloadFiltersWithValues(savedFilter.filters, false);\n }\n }\n\n public reloadFiltersWithValues(params: IFilterExternalParams, shouldResetSavedFilters = true) {\n this._shouldResetSavedFilters = shouldResetSavedFilters;\n this._itemsStore.updateItemsWithValues(params);\n\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public initItems(): void {\n this._pending$.next(true);\n if (this._savedFilters.enabled) {\n this._savedFilters\n .load()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._savedFilters.updateActiveFilter();\n this._initItemsValues();\n this._listenAndResetSavedFilters();\n this._pending$.next(false);\n });\n } else {\n this._initItemsValues();\n this._pending$.next(false);\n }\n\n this._listenItemsChange();\n }\n\n public _initItemsValues() {\n this._itemsStore.init(this.params);\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public fetchQueryParams(): void {\n this._initQueryParams();\n this._itemsStore.updateItemsWithValues(this.params);\n }\n\n private _initQueryParams() {\n this._queryParams.init(this._config.queryParam);\n }\n\n private _initSavedFilters() {\n this._savedFilters.init(this._config.savedFilters);\n }\n\n private _listenItemsChange() {\n this._itemsStore.ready$\n .pipe(\n filter((v) => v),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n\n this._itemsStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n }\n\n private _listenAndResetSavedFilters(): void {\n this._itemsStore\n .itemsChange$\n .pipe(\n filter(() => !!this.savedFiltersController.activeFilter),\n switchMap(() => {\n const shouldReset = this._shouldResetSavedFilters;\n\n this._shouldResetSavedFilters = true;\n\n return of(shouldReset);\n }),\n filter((shouldReset) => shouldReset),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.savedFiltersController.resetActiveFilter();\n });\n }\n\n private _saveQueryParams() {\n\n const params = buildQueryParams(\n this._itemsStore\n .valuesAsQuery({\n onlyPresented: false,\n items: this._itemsStore.items,\n persisted: true,\n }),\n this._itemsStore.items,\n );\n \n this._itemsStore.items\n .filter((item) => item.queryParamsDisabled || !item.isQueryParamVisible)\n .forEach((item) => {\n params[item.name] = undefined;\n });\n\n this._queryParams.writeStateToQueryParams(params);\n }\n\n private _savePersistedParams() {\n if(this._persistanceStore.queryEnabled) {\n const targetItems = this._itemsStore.items\n .filter((item) => !item.persistanceDisabled)\n .filter((item) => item.value !== undefined)\n .reduce((acc, item) => {\n acc[item.name] = item.model;\n\n return acc;\n }, {});\n\n this._persistanceStore.setQuery(targetItems);\n }\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { MenuActionMode } from '../enums';\nimport {\n FsFilterActionClickFn, FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterMenuActionFileItem,\n IFsFilterMenuActionGroupItem,\n IFsFilterMenuActionItem, IFsFilterMenuActionLink,\n} from '../interfaces/action.interface';\n\n\nexport class ActionMenuItem {\n\n public icon: string;\n public label: string;\n public mode: MenuActionMode;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public click: FsFilterActionClickFn;\n public routerLink: IFsFilterMenuActionLink;\n public items: ActionMenuItem[] = [];\n\n private _isGroup = false;\n private _showFn: FsFilterActionShowFn;\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem = {},\n private _parent?: ActionMenuItem,\n ) {\n this._init(config);\n }\n\n public get isGroup(): boolean {\n return this._isGroup;\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || !this.isGroup) {\n this._visible$.next(visible);\n\n return;\n }\n\n const numberOfVisibleChildren = this.items\n .reduce((acc, item) => {\n item.updateVisibility();\n\n if (item.visible) {\n acc++;\n }\n\n return acc;\n }, 0);\n\n this._visible$.next(!!numberOfVisibleChildren);\n }\n\n private _initFile(config: IFsFilterMenuActionFileItem): void {\n this.multiple = config.multiple;\n this.accept = config.accept;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.imageQuality = config.imageQuality;\n this.fileSelected = config.fileSelected;\n }\n\n private _init(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem | IFsFilterMenuActionFileItem,\n ) {\n this.label = config.label;\n this.icon = config.icon;\n this.mode = config.mode || MenuActionMode.Menu;\n this._showFn = config.show;\n\n if (this.mode === MenuActionMode.File) {\n this._initFile(config as IFsFilterMenuActionFileItem);\n }\n\n if ('items' in config) {\n this._isGroup = true;\n\n if (Array.isArray(config.items)) {\n this.items = config\n .items\n .map((item) => new ActionMenuItem(item, this));\n }\n\n this.updateVisibility();\n } else {\n this.click = config.click;\n this.routerLink = config.link;\n\n if (!this._parent) {\n this.updateVisibility();\n }\n }\n }\n}\n","import { ThemePalette } from '@angular/material/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ButtonStyle } from '../enums';\nimport { ActionMode } from '../enums/action-mode.enum';\nimport {\n FsFilterAction,\n FsFilterActionClickFn,\n FsFilterActionDisabledFn,\n FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterFileAction,\n IFsFilterSelectButtonAction,\n} from '../interfaces/action.interface';\n\nimport { ActionMenuItem } from './action-menu-item.model';\nimport { FsFilterConfig } from './filter-config';\n\n\nexport class Action {\n\n public primary = true;\n public icon: string;\n public iconPlacement: 'left' | 'right';\n public label: string;\n public value: any;\n public menu: boolean;\n public color: ThemePalette;\n public customize: boolean;\n public className: string;\n public click: FsFilterActionClickFn;\n public style: ButtonStyle;\n public tabIndex: number;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public tooltip: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public change: (value: any) => void;\n public values: any[];\n public mode: ActionMode;\n public isReorderAction = false;\n public deselect = false;\n public classArray: string[] = [];\n public items: ActionMenuItem[] = [];\n\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n private _showFn: FsFilterActionShowFn;\n private _disabledFn: FsFilterActionDisabledFn;\n\n constructor(filterConfig: FsFilterConfig, actionConfig: FsFilterAction = {}) {\n this._init(filterConfig, actionConfig);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || this.mode !== ActionMode.Menu) {\n this._visible$.next(visible);\n\n return;\n }\n\n const hasVisibleChildren = this.items.some((item) => item.visible);\n this._visible$.next(hasVisibleChildren);\n }\n\n public updateDisabledState(): void {\n if (this._disabledFn) {\n this.disabled = this._disabledFn();\n }\n }\n\n private _init(filterConfig: FsFilterConfig, config: FsFilterAction = {}): void {\n config.mode = config.mode ?? ActionMode.Button;\n this._initCore(filterConfig, config);\n\n switch (config.mode) {\n case ActionMode.Button: {\n this.customize = config.customize;\n this.click = config.click ?? (() => {\n // do nothing\n });\n this._disabledFn = config.disabled;\n\n this.updateDisabledState();\n } break;\n\n case ActionMode.Menu: {\n if (config.items && Array.isArray(config.items)) {\n this.items = config.items.map((item) => new ActionMenuItem(item));\n }\n } break;\n\n case ActionMode.SelectButton: {\n this._initSelectButton(config);\n } break;\n\n case ActionMode.File: {\n this._initFile(config);\n } break;\n }\n\n this.updateVisibility();\n }\n\n private _initCore(filterConfig: FsFilterConfig, config: FsFilterAction): void {\n this.primary = config.primary ?? true;\n this.color = config.color;\n this.tooltip = config.tooltip;\n this.label = config.label;\n this.mode = config.mode;\n this.icon = config.icon;\n this.iconPlacement = config.iconPlacement;\n this._showFn = config.show;\n this.tabIndex = config.tabIndex ?? 0;\n this.menu = config.menu;\n\n if (!this.style) {\n this.style = config.icon && !config.label ?\n ButtonStyle.Icon :\n (config.style || filterConfig.buttonStyle || ButtonStyle.Raised);\n\n if(!this.primary && this.style === ButtonStyle.Flat) {\n this.style = ButtonStyle.Stroked;\n }\n }\n\n if (config.className) {\n this.className = config.className;\n this.classArray = this.className\n .split(' ');\n }\n\n if (!this.primary && this.mode === ActionMode.SelectButton) {\n this.color = null; // should be null because of styles logic in select-button\n }\n\n if (this.primary) {\n this.color = 'primary';\n }\n\n }\n\n private _initSelectButton(config: IFsFilterSelectButtonAction): void {\n this.values = config.values;\n this.value = config.default;\n this.change = config.change;\n this.deselect = config.deselect ?? false;\n }\n\n private _initFile(config: IFsFilterFileAction): void {\n this.fileSelected = config.select;\n this.fileError = config.error;\n this.accept = config.accept;\n this.imageQuality = config.imageQuality;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.click = config.click ?? (() => {\n //\n });\n this._disabledFn = config.disabled;\n\n if ((config).multiple !== undefined) {\n this.multiple = (config).multiple;\n }\n\n this.updateDisabledState();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-action-button',\n templateUrl: './action-button.component.html',\n styleUrl: './action-button.component.scss',\n host: { class: 'action-button' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionButtonComponent {\n\n public ButtonStyle = ButtonStyle;\n\n @Input()\n public action: Action;\n\n}\n","<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\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 <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-action-kebab-actions',\n styleUrls: ['./action-kebab-actions.component.scss'],\n templateUrl: './action-kebab-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionKebabActionsComponent {\n\n @Input()\n public kebabActions: Action[];\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n}\n","<button \n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\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)=\"actionClick(subAction, $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)=\"actionClick(childAction, $event)\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template \n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template \n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { ActionMode, ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionsComponent {\n\n @Input()\n public kebabActions: Action[] = [];\n\n @Input()\n public actions: Action[] = [];\n\n public ButtonStyle = ButtonStyle;\n public ActionMode = ActionMode;\n\n public actionChange(action: Action, value: any, selectButton: MatSelect): void {\n if(action.change) {\n action.change(value); \n\n if(action.deselect) {\n selectButton.writeValue(null);\n }\n }\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n}\n","<ng-container *ngFor=\"let action of actions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <ng-container *ngSwitchCase=\"ActionMode.Button\">\n <fs-filter-action-button\n [action]=\"action\"\n class=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.Menu\">\n <fs-filter-action-button\n class=\"action\"\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n <fs-menu\n #someRef\n class=\"action\">\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-container [ngSwitch]=\"subAction.mode\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">\n {{ subAction.icon }}\n </mat-icon>\n {{ subAction.label }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template\n fs-menu-file-item\n [multiple]=\"subAction.multiple\"\n [accept]=\"subAction.accept || '*'\"\n [minWidth]=\"subAction.minWidth\"\n [minHeight]=\"subAction.minHeight\"\n [imageWidth]=\"subAction.maxWidth\"\n [imageHeight]=\"subAction.maxHeight\"\n (select)=\"subAction.fileSelected($event)\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">\n {{ subAction.icon }}\n </mat-icon>\n {{ subAction.label }}\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-container [ngSwitch]=\"childAction.mode\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"(childAction.visible$ | async) === false\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">\n {{ childAction.icon }}\n </mat-icon>\n {{ childAction.label }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template\n fs-menu-file-item\n [multiple]=\"childAction.multiple\"\n [accept]=\"childAction.accept || '*'\"\n [minWidth]=\"childAction.minWidth\"\n [minHeight]=\"childAction.minHeight\"\n [imageWidth]=\"childAction.maxWidth\"\n [imageHeight]=\"childAction.maxHeight\"\n (select)=\"childAction.fileSelected($event)\"\n [hidden]=\"(childAction.visible$ | async) === false\">\n <mat-icon *ngIf=\"childAction.icon\">\n {{ childAction.icon }}\n </mat-icon>\n {{ childAction.label }}\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </fs-menu>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.SelectButton\">\n <mat-select\n class=\"action action-select-button\"\n [buttonType]=\"'basic'\"\n [ngClass]=\"{\n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n }\"\n [placeholder]=\"action.label\"\n [(ngModel)]=\"action.value\"\n [color]=\"action.color\"\n (ngModelChange)=\"actionChange(action, $event, selectButton)\"\n fsSelectButton\n #selectButton\n [deselectOnChange]=\"action.deselect\">\n <mat-option\n *ngFor=\"let item of action.values\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.File\">\n <fs-file\n class=\"action 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<ng-container *ngIf=\"kebabActions?.length\">\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { BaseItem } from '../../models/items/base-item';\n\n\n@Component({\n selector: 'fs-filter-chip-content',\n templateUrl: './filter-chip-content.component.html',\n styleUrls: ['./filter-chip-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipContentComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n @Input() public type: 'from' | 'to';\n\n public content;\n\n private _destroy$ = new Subject();\n\n constructor(private _cdRef: ChangeDetectorRef) {\n }\n\n public ngOnInit() {\n this.listenValueChangesForRanges();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public listenValueChangesForRanges() {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.content = this._getContent();\n this._cdRef.detectChanges();\n });\n }\n\n private _getContent() {\n const result = this.item.getChipsContent(this.type);\n\n if (this.item.chipLabel !== undefined) {\n if (this.item.chipLabel === '') {\n return `${result}`;\n } \n if (Array.isArray(this.item.chipLabel)) {\n const label = getLabelFromArray(this.item.chipLabel, this.type);\n\n return `${label}: ${result}`;\n }\n \n return `${this.item.chipLabel}: ${result}`;\n \n \n } \n if (Array.isArray(this.item.label)) {\n const label = getLabelFromArray(this.item.label, this.type);\n\n return `${label}: ${result}`;\n } \n if (this.item.isTypeCheckbox) {\n return result;\n }\n \n return `${this.item.label}: ${result}`;\n \n \n }\n}\n\nfunction getLabelFromArray(labelArr, type) {\n if (type === 'from' && labelArr[0]) {\n return `${labelArr[0]}`;\n } else if (type === 'to' && labelArr[1]) {\n return `${labelArr[1]}`;\n }\n \n return '';\n \n}\n","{{ content }}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Injectable()\nexport class FocusControllerService {\n\n private _focusOn = new BehaviorSubject<{ item: BaseItem<any>, type: 'from' | 'to'}>(null);\n\n constructor() {}\n\n public get focusOn$() {\n return this._focusOn.asObservable();\n }\n\n public click(item: BaseItem<any>, type: 'from' | 'to' = null) {\n this._focusOn.next({ item, type });\n }\n\n public listenFocusFor$(targetItem: BaseItem<any>, targetType: 'from' | 'to' = null) {\n return this._focusOn\n .pipe(\n filter((event) => !!event),\n filter(({ item, type }) => {\n return targetItem === item && targetType === type;\n }),\n tap(() => this.clearFocus()),\n );\n }\n\n public clearFocus() {\n this._focusOn.next(null);\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { combineLatest, Observable, Subject, timer } from 'rxjs';\nimport { map, mapTo, startWith, takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { BaseItem } from '../../models/items/base-item';\nimport { DateRangeItem } from '../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport { RangeItem } from '../../models/items/range-item';\nimport { FocusControllerService } from '../../services/focus-controller.service';\n\n\n@Component({\n selector: 'fs-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrls: ['./filter-chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n\n public rangeItem: boolean;\n\n public chipDelayedRender$: Observable<boolean>;\n\n private _chipRenderTimer$ = timer(500)\n .pipe(\n mapTo(true),\n );\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _focusController: FocusControllerService,\n ) {\n }\n\n public ngOnInit() {\n this.rangeItem = this.item.isTypeDateRange\n || this.item.isTypeRange\n || this.item.isTypeDateTimeRange;\n\n this.listenValueChangesForRanges();\n\n if (this.item.hasPendingValues) {\n this.item.loadAsyncValues(false);\n\n this._initDelayRender();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focusOnItem(type = null) {\n this._focusController.click(this.item, type);\n }\n\n public removeItem(event: MouseEvent, type = null) {\n if (this.item instanceof RangeItem) {\n this.item.clearRange(type);\n } else if (this.item instanceof DateRangeItem || this.item instanceof DateTimeRangeItem) {\n this.item.clearDateRange(type);\n } else {\n this.item.clear();\n }\n }\n\n public listenValueChangesForRanges() {\n this.item.valueChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n private _initDelayRender() {\n this.chipDelayedRender$ = combineLatest([\n this.item.values$,\n this._chipRenderTimer$.pipe(startWith(false)),\n ])\n .pipe(\n map(([values, timerValue]) => {\n return !!values || timerValue;\n }),\n );\n }\n}\n","<ng-container *ngIf=\"!item.hasPendingValues || (chipDelayedRender$ | async)\">\n <ng-container *ngIf=\"rangeItem; else defaultChip\">\n <fs-chip\n *ngIf=\"item.model?.min || item.model?.from\"\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem('from')\"\n (removed)=\"removeItem($event, 'from')\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item, type: 'from' }\">\n </ng-template>\n </fs-chip>\n <fs-chip\n *ngIf=\"item.model?.max || item.model?.to\"\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem('to')\"\n (removed)=\"removeItem($event, 'to')\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item, type: 'to' }\">\n </ng-template>\n </fs-chip>\n </ng-container>\n <ng-template #defaultChip>\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem()\"\n (removed)=\"removeItem($event)\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </fs-chip>\n </ng-template>\n <ng-template\n #chipContent\n let-item=\"item\"\n let-type=\"type\">\n <ng-container *ngIf=\"!item.hasPendingValues && !item.loading; else lodaingValues\">\n <fs-filter-chip-content\n [item]=\"item\"\n [type]=\"type\">\n </fs-filter-chip-content>\n </ng-container>\n <ng-template #lodaingValues>\n Loading...\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ItemType } from '../../enums';\nimport { BaseItem } from '../../models/items/base-item';\n\n\n@Component({\n selector: 'fs-filter-chips',\n templateUrl: './filter-chips.component.html',\n styleUrls: ['./filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipsComponent {\n\n @Input() public filters: BaseItem<any>[];\n\n public ItemType = ItemType;\n}\n","<ng-container *ngFor=\"let item of filters\">\n <ng-container *ngIf=\"(item.value$ | async) !== undefined && item.type !== ItemType.Keyword\">\n @if (item.isChipVisible) {\n <fs-filter-chip [item]=\"item\"></fs-filter-chip>\n }\n </ng-container>\n</ng-container>","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n\n@Component({\n selector: 'fs-filter-drawer-actions',\n templateUrl: './filter-drawer-actions.component.html',\n styleUrls: ['./filter-drawer-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterDrawerActionsComponent {\n\n @Output('clear')\n private _clear = new EventEmitter<void>();\n\n @Output('done')\n private _done = new EventEmitter<void>();\n\n public done(): void {\n this._done.emit();\n }\n\n public clear(): void {\n this._clear.emit();\n }\n \n}\n","<a mat-button color=\"primary\" (click)=\"done()\">Done</a>\n<a mat-button (click)=\"clear()\">Clear</a>\n\n\n","import { InjectionToken } from '@angular/core';\n\nexport const FILTER_DRAWER_DATA = new InjectionToken<any>('fs.filter-drawer-data');\n","import { InjectionToken } from '@angular/core';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<any>('fs.filter-drawer-overlay');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n Input,\n KeyValueDiffer,\n KeyValueDiffers, OnChanges, OnDestroy,\n SimpleChanges,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../../interfaces/config.interface';\nimport { BaseItem } from '../../../models/items/base-item';\n\n\n@Component({\n selector: 'base-item',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseItemComponent<T extends BaseItem<IFilterConfigItem>>\nimplements DoCheck, OnChanges, OnDestroy {\n\n @Input()\n public set item(value: T) {\n this._item = value;\n }\n\n public get item(): T {\n return this._item;\n }\n\n @Input()\n public inline = false;\n\n public label!: string;\n\n protected _item: T;\n protected _kvDiffer: KeyValueDiffer<string, any>;\n\n private _destroy$ = new Subject();\n private _debouncer$ = new Subject();\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n this._kvDiffer = this._kvDiffers.find(this.item || {}).create();\n this.listenWithDebounce();\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$.asObservable();\n }\n\n public destroy() {\n return this._destroy$.asObservable();\n }\n\n public ngDoCheck(): void {\n if (this._kvDiffer) {\n const changes = this._kvDiffer.diff(this.item);\n\n if (changes) {\n this._cd.detectChanges();\n }\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.item) {\n this.label = Array.isArray(this.item.label) ? this.item.label[0] : this.item.label;\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public listenWithDebounce() {\n this._debouncer$\n .pipe(\n debounceTime(150),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.item.valueChanged();\n });\n }\n\n public itemChange() {\n this._debouncer$.next(null);\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, Optional, Self,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsAutocompleteComponent } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsComponent } from '@firestitch/autocomplete-chips';\nimport {\n DateRangePickerFromComponent, DateRangePickerToComponent,\n FsDatePickerComponent,\n FsDateScrollPickerComponent,\n} from '@firestitch/datepicker';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { FocusControllerService } from '../../services/focus-controller.service';\n\n\n@Directive({\n selector: '[fsFilterFocusTrigger]',\n})\nexport class FocusToItemDirective implements OnInit, OnDestroy {\n\n @Input('fsFilterFocusTrigger')\n private _item;\n\n @Input('focusTargetType')\n private _focusTargetType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _el: ElementRef,\n private _focusController: FocusControllerService,\n @Optional() @Self() private _targetSelect: MatSelect,\n @Optional() @Self() private _targetDate: FsDatePickerComponent,\n @Optional() @Self() private _targetDateScroll: FsDateScrollPickerComponent,\n @Optional() @Self() private _targetDateRangeFrom: DateRangePickerFromComponent,\n @Optional() @Self() private _targetDateRangeTo: DateRangePickerToComponent,\n @Optional() @Self() private _targetAutocomplete: FsAutocompleteComponent,\n @Optional() @Self() private _targetAutocompleteChips: FsAutocompleteChipsComponent,\n ) {}\n\n public ngOnInit(): void {\n this._focusController\n .listenFocusFor$(this._item, this._focusTargetType)\n .pipe(\n delay(500),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._focus();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _focus() {\n switch (this._item.type) {\n case ItemType.Select: {\n this._targetSelect.open();\n } break;\n\n case ItemType.Text: case ItemType.Range: {\n this._el.nativeElement.focus();\n } break;\n\n case ItemType.Date: {\n if (this._item.mode === ItemDateMode.Calendar) {\n this._targetDate.open();\n } else {\n this._targetDateScroll.open();\n }\n } break;\n case ItemType.DateRange: {\n if (this._focusTargetType === 'from') {\n this._targetDateRangeFrom.open();\n } else {\n this._targetDateRangeTo.open();\n }\n } break;\n\n case ItemType.AutoComplete: {\n this._targetAutocomplete.focus();\n } break;\n\n case ItemType.AutoCompleteChips: {\n this._targetAutocompleteChips.focus();\n } break;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\n@Component({\n selector: 'filter-item-select-groups',\n templateUrl: './groups.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectGroupsComponent {\n\n @ViewChild('select', { static: true }) public select: MatSelect;\n @Input() public item;\n\n constructor(public cd: ChangeDetectorRef) {}\n\n public compare(o1, o2) {\n return o1 == o2;\n }\n\n public markForCheck() {\n this.cd.markForCheck();\n }\n}\n","<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","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Pipe({\n name: 'fsFilterIsolateValues',\n})\nexport class FsFilterIsolateValues implements PipeTransform {\n transform(values: BaseItem<any>[], isolate) {\n if (!isolate) {\n return values;\n }\n\n return values.filter((value) => {\n return value.value !== isolate.value;\n });\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { SimpleSelectItem } from '../../../../models/items/select/simple-select-item';\n\n\n@Component({\n selector: 'filter-item-select-simple',\n templateUrl: './simple.component.html',\n styleUrls: ['./simple.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectSimpleComponent {\n\n @Input() public item: SimpleSelectItem;\n\n @ViewChild('select', { static: true }) \n public select: MatSelect;\n\n constructor(\n private _cd: ChangeDetectorRef,\n ) {}\n\n public changed() {\n if (this.item.isolate) {\n this.item.isolate.enabled = false;\n }\n }\n\n public isolateChange(filter) {\n filter.model = filter.isolate.enabled ? filter.isolate.value : null;\n }\n\n public markForCheck() {\n this._cd.markForCheck();\n }\n}\n","<mat-form-field [ngClass]=\"{ isolate: !!item.isolate }\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\">\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</mat-form-field>\n@if (item.isolate) {\n <mat-checkbox\n (change)=\"isolateChange(item)\"\n [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">\n {{ item.isolate.label }}\n </span>\n </mat-checkbox>\n}","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { MultipleSelectItem } from '../../../../models/items/select/multiple-select-item';\n\n\n@Component({\n selector: 'filter-item-select-multiple',\n templateUrl: './multiple.component.html',\n styleUrls: ['./multiple.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectMultipleComponent {\n\n @Input()\n public item: MultipleSelectItem;\n\n @ViewChild('select', { static: true })\n public select: MatSelect;\n\n constructor(\n private _cd: ChangeDetectorRef,\n ) {}\n\n public changed() {\n\n if (this.item.isolate) {\n\n this.item.isolate.enabled = false;\n\n if (this.item.multiple && Array.isArray(this.item.model)) {\n const index = this.item.model.indexOf(this.item.isolate.value);\n\n if (index > -1) {\n this.item.model.splice(index, 1);\n }\n }\n }\n }\n\n public close() {\n this.select.close();\n }\n\n public markForCheck() {\n this._cd.markForCheck();\n }\n\n public isolateChange(filter) {\n if (filter.isolate.enabled) {\n filter.model = filter.multiple ? [filter.isolate.value] : filter.isolate.value;\n } else {\n if (filter.multiple) {\n filter.model = filter.defaultValue ? filter.defaultValue : [];\n } else {\n filter.model = filter.defaultValue ? filter.defaultValue : null;\n }\n }\n }\n}\n","<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>\n {{ item.label }}\n </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 <mat-hint>\n @if (item.isolate) {\n <mat-checkbox\n (change)=\"isolateChange(item)\"\n [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">\n {{ item.isolate.label }}\n </span>\n </mat-checkbox>\n }\n </mat-hint>\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n KeyValueDiffers,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { BaseSelectItem } from '../../../models/items/select/base-select-item';\nimport { MultipleSelectItem } from '../../../models/items/select/multiple-select-item';\nimport { SimpleSelectItem } from '../../../models/items/select/simple-select-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\nimport { SelectMultipleComponent } from './multiple/multiple.component';\nimport { SelectSimpleComponent } from './simple/simple.component';\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent \n extends BaseItemComponent<BaseSelectItem> \n implements DoCheck, OnChanges {\n\n @ViewChild('selectItem')\n public selectedItem: SelectSimpleComponent | SelectMultipleComponent;\n // For case when we have multiple selection with __all option\n // If _all has been selected than we must disable all other items\n public allItemsOptionSelected = false;\n\n public get multipleSelectItem(): MultipleSelectItem {\n return this.item as MultipleSelectItem;\n }\n\n public get simpleSelectItem(): SimpleSelectItem {\n return this.item as SimpleSelectItem;\n }\n\n public values$: Observable<unknown[]>;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n \n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.item) {\n this.values$ = this.item.values$ as Observable<unknown[]>;\n }\n }\n\n public ngDoCheck() {\n if (this._kvDiffer) {\n const changes = this._kvDiffer.diff(this.item);\n\n if (changes) {\n this._cd.markForCheck();\n\n if (this.selectedItem) {\n this.selectedItem.markForCheck();\n }\n }\n }\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers\n} from '@angular/core';\n\nimport { ChipsItem } from '../../../models/items/chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: [ './chips.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipsComponent extends BaseItemComponent<ChipsItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public modelChange() {\n this.itemChange();\n }\n\n public compareFn(modelValue, chipValue) {\n return String(modelValue.value) === String(chipValue.value);\n }\n}\n","<ng-template [ngIf]=\"item.values?.length\">\n <fs-label-field>\n <fs-label>{{item.label}}</fs-label>\n <fs-chips \n [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n <fs-chip \n *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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\n\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { TextItem } from '../../../models/items/text-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent extends BaseItemComponent<TextItem> implements OnInit {\n\n public textControl = new UntypedFormControl();\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit(): void {\n this._listenControlValueChanges();\n this._listenModelChanges();\n }\n\n private _listenControlValueChanges(): void {\n this.textControl.valueChanges\n .pipe(\n distinctUntilChanged(),\n debounceTime(200),\n takeUntil(this.destroy$),\n )\n .subscribe((value) => {\n this.item.model = value;\n });\n }\n\n private _listenModelChanges(): void {\n this._item.value$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.textControl.setValue(this.item.model, { emitEvent: false });\n });\n }\n\n}\n","<mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <span\n matTextPrefix\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [formControl]=\"textControl\"\n [fsFilterFocusTrigger]=\"item\">\n <span\n matSuffix\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit\n} from '@angular/core';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { WeekItem } from '../../../models/items/week-item';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WeekComponent extends BaseItemComponent<WeekItem> implements OnInit {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {}\n}\n","<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input \n matInput\n fsDateWeekPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, ElementRef,\n KeyValueDiffers, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RangeItem } from '../../../models/items/range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent extends BaseItemComponent<RangeItem> implements OnInit {\n\n @ViewChild('from', { static: true })\n public from: ElementRef;\n\n @ViewChild('to', { static: true })\n public to;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit(): void {\n this.listenChanges();\n }\n\n public listenChanges() {\n const fromListener = fromEvent(this.from.nativeElement, 'keyup')\n .pipe(\n distinctUntilChanged(),\n );\n\n const toListener = fromEvent(this.to.nativeElement, 'keyup')\n .pipe(\n distinctUntilChanged(),\n );\n\n merge(fromListener, toListener)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.itemChange();\n });\n }\n}\n","<div class=\"form-field\">\n <mat-form-field class=\"filter-range-min\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <span\n matTextPrefix\n class=\"text-prefix\"\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n <span\n matSuffix\n class=\"text-suffix\"\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n </mat-form-field>\n <mat-form-field class=\"filter-range-max\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <span\n matTextPrefix\n class=\"text-prefix\"\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n <span\n matSuffix\n class=\"text-suffix\"\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n </mat-form-field>\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { AutocompleteItem } from '../../../models/items/autocomplete-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompleteComponent extends BaseItemComponent<AutocompleteItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public displayWith = (data) => {\n return data ? data.name : data;\n };\n\n public fetch = (keyword): Observable<any> => {\n return this.item.valuesFn(keyword, this.item.filter) as Observable<any>;\n };\n}\n","<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.showClear\"\n name=\"item.name\">\n <ng-template fsAutocompleteTemplate let-data=\"data\">\n {{data.name}}\n </ng-template>\n</fs-autocomplete>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\nimport { remove as arrayRemove } from '@firestitch/common';\n\nimport { AutocompleteChipsItem } from '../../../models/items/autocomplete-chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocompletechips',\n templateUrl: './autocompletechips.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompletechipsComponent extends BaseItemComponent<AutocompleteChipsItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public addAutocompleteChipItem(event) {\n if (event.data && this.item.model.indexOf(event.data.value) === -1) {\n this.item.model.push(event.data);\n this.itemChange();\n }\n }\n\n public removeAutocompleteChipItem(event) {\n arrayRemove(this.item.model, { value: event.data.value });\n this.itemChange();\n }\n\n public clearAutocompleteChipItem() {\n this.item.clear();\n this.itemChange();\n }\n\n public fetch = (keyword) => {\n return this.item.valuesFn(keyword, this.item.filter);\n };\n\n public compareItems(item1, item2): boolean {\n return item1?.value === item2?.value;\n }\n}\n","<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 [allowText]=\"false\"\n [label]=\"label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.showClear\"\n [removable]=\"item.showClear\"\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>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit,\n} from '@angular/core';\n\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport type { DateItem } from '../../../models/items/date-item';\nimport type { DateTimeItem } from '../../../models/items/date-time-item';\nimport type { BaseDateItem } from '../../../models/items/date/base-date-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends BaseItemComponent<DateItem | DateTimeItem> implements OnInit {\n\n public viewType = PickerViewType.Date;\n\n public itemDateMode = ItemDateMode;\n public showYear = true;\n public showMonth = true;\n public showDay = true;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTime ? PickerViewType.DateTime : PickerViewType.Date;\n\n if ((this.item as BaseDateItem).mode === ItemDateMode.ScrollMonthYear) {\n this.showDay = false;\n }\n }\n}\n","@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n </mat-form-field>\n}","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers, OnInit\n} from '@angular/core';\n\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { DateRangeItem } from '../../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../../models/items/date-time-range-item';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends BaseItemComponent<DateRangeItem | DateTimeRangeItem> implements OnInit {\n\n public viewType = PickerViewType.Date;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {\n if (this.item.type === ItemType.DateTimeRange) {\n this.viewType = PickerViewType.DateTime;\n } else {\n this.viewType = PickerViewType.Date;\n }\n }\n}\n","<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.showClear\"\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.showClear\"\n [view]=\"viewType\"\n name=\"date_to\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent extends BaseItemComponent<CheckboxItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n \n}\n","<fs-label-field>\n <mat-checkbox\n [(ngModel)]=\"item.model\"\n [name]=\"item.name\">\n {{ item.label }}\n </mat-checkbox>\n</fs-label-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport type { AutocompleteChipsItem } from '../../models/items/autocomplete-chips-item';\nimport type { AutocompleteItem } from '../../models/items/autocomplete-item';\nimport type { BaseItem } from '../../models/items/base-item';\nimport type { CheckboxItem } from '../../models/items/checkbox-item';\nimport type { ChipsItem } from '../../models/items/chips-item';\nimport type { DateItem } from '../../models/items/date-item';\nimport type { DateRangeItem } from '../../models/items/date-range-item';\nimport type { DateTimeItem } from '../../models/items/date-time-item';\nimport type { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport type { RangeItem } from '../../models/items/range-item';\nimport type { BaseSelectItem } from '../../models/items/select/base-select-item';\nimport type { TextItem } from '../../models/items/text-item';\nimport type { WeekItem } from '../../models/items/week-item';\n\n\n@Component({\n selector: 'filter-item',\n templateUrl: './filter-item.component.html',\n styleUrls: ['./filter-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterItemComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<any>;\n\n public itemType = ItemType;\n\n public get textItem(): TextItem {\n return this.item as TextItem;\n }\n\n public get chipsItem(): ChipsItem {\n return this.item as ChipsItem;\n }\n\n public get baseSelectItem(): BaseSelectItem {\n return this.item as BaseSelectItem;\n }\n\n public get rangeItem(): RangeItem {\n return this.item as RangeItem;\n }\n\n public get autocompleteItem(): AutocompleteItem {\n return this.item as AutocompleteItem;\n }\n\n public get autocompleteChipsItem(): AutocompleteChipsItem {\n return this.item as AutocompleteChipsItem;\n }\n\n public get dateItem(): DateItem {\n return this.item as DateItem;\n }\n\n public get dateRangeItem(): DateRangeItem {\n return this.item as DateRangeItem;\n }\n\n public get dateTimeItem(): DateTimeItem {\n return this.item as DateTimeItem;\n }\n\n public get dateTimeRangeItem(): DateTimeRangeItem {\n return this.item as DateTimeRangeItem;\n }\n\n public get weekItem(): WeekItem {\n return this.item as WeekItem;\n }\n\n public get checkboxItem(): CheckboxItem {\n return this.item as CheckboxItem;\n }\n\n private _destroy$ = new Subject<void>();\n\n constructor(private _cdRef: ChangeDetectorRef) { }\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n}\n","<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text \n class=\"interface\"\n *ngSwitchCase=\"itemType.Text\"\n [item]=\"textItem\">\n </filter-item-text>\n\n <filter-item-select \n class=\"interface\"\n *ngSwitchCase=\"itemType.Select\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n\n <filter-item-chips \n class=\"interface\"\n *ngSwitchCase=\"itemType.Chips\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n\n <filter-item-range \n class=\"interface interface-range\"\n *ngSwitchCase=\"itemType.Range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n\n <filter-item-autocomplete \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoComplete\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n\n <filter-item-autocompletechips \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoCompleteChips\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.Date\"\n [item]=\"dateItem\">\n </filter-item-date>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTime\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateRange\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTimeRange\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n\n <filter-item-week \n class=\"interface\"\n *ngSwitchCase=\"itemType.Week\"\n [item]=\"weekItem\">\n </filter-item-week>\n\n <filter-item-checkbox \n class=\"interface interface-checkbox\"\n *ngSwitchCase=\"itemType.Checkbox\"\n [item]=\"checkboxItem\">\n </filter-item-checkbox>\n </ng-container>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { Observable } from 'rxjs';\n\nimport { FILTER_DRAWER_DATA } from '../../injectors/filter-drawer-data';\nimport { FILTER_DRAWER_OVERLAY } from '../../injectors/filter-drawer-overlay';\nimport { BaseItem } from '../../models/items/base-item';\nimport { ExternalParamsController } from '../../services/external-params-controller.service';\nimport { FsFilterItemsStore } from '../../services/items-store.service';\n\ntype Item = BaseItem<any>;\n\n@Component({\n templateUrl: './filter-drawer.component.html',\n styleUrls: ['./filter-drawer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterDrawerComponent {\n\n @Input() public inline = false;\n\n public windowDesktop = false;\n\n protected _clear: () => void;\n protected _done: () => void;\n\n constructor(\n @Inject(FILTER_DRAWER_OVERLAY) private _overlayRef: OverlayRef,\n @Inject(FILTER_DRAWER_DATA) private _data,\n public externalParams: ExternalParamsController,\n protected _cd: ChangeDetectorRef,\n protected _itemsStore: FsFilterItemsStore,\n ) {\n this._itemsStore.prepareItems();\n\n this._clear = this._data.clear;\n this._done = this._data.done;\n\n this.updateWindowWidth();\n }\n\n @HostListener('window:resize')\n public updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n public get items$(): Observable<Item[]> {\n return this._itemsStore.visibleItems$;\n }\n\n public get sortItem(): Item {\n return this._itemsStore.sortByItem;\n }\n\n public get sortDirectionItem(): Item {\n return this._itemsStore.sortDirectionItem;\n }\n\n public clear() {\n this._clear();\n }\n\n public done() {\n this._done();\n this._overlayRef.detach();\n }\n\n public backdropClick() {\n this.done();\n }\n}\n","<div class=\"filters\">\n <div class=\"filters-wrap\">\n\n <div class=\"filter-by\">\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n <span class=\"text\">Filters</span>\n </div>\n\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(externalParams.pending$ | async) !== true\">\n <filter-item \n *ngFor=\"let filterItem of items$ | async\"\n class=\"filter-group\"\n [item]=\"filterItem\">\n </filter-item>\n\n <ng-container *ngIf=\"sortItem && sortItem.values && sortItem.values.length > 0\">\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortItem\">\n </filter-item>\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortDirectionItem\">\n </filter-item>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <fs-filter-drawer-actions \n class=\"filter-actions\"\n *ngIf=\"(externalParams.pending$ | async) !== true\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n </div>\n</div>\n<div class=\"backdrop\" *ngIf=\"!windowDesktop\" (click)=\"backdropClick()\"></div>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { Action } from '../models/action.model';\nimport { FsFilterConfig } from '../models/filter-config';\n\n\n@Injectable()\nexport class ActionsController implements OnDestroy {\n\n private _visible$ = new BehaviorSubject(false);\n private _actions$ = new BehaviorSubject<Action[]>([]);\n private _menuActions$ = new BehaviorSubject<Action[]>([]);\n private _destroy$ = new Subject<void>();\n private _config: FsFilterConfig;\n\n private readonly _mobileMedia = '(max-width: 799px)';\n private _allActions: Action[] = [];\n private _reorderAction: Action;\n\n constructor(\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._listenMobileMedia();\n }\n\n public get menuActions(): Action[] {\n return this._menuActions$.value;\n }\n\n public get actions(): Action[] {\n return this._actions$.value;\n }\n\n public get actions$(): Observable<Action[]> {\n return this._actions$.asObservable();\n }\n\n public get menuActions$(): Observable<Action[]> {\n return this._menuActions$.asObservable();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public get mobileMode(): boolean {\n return this._breakpointObserver.isMatched(this._mobileMedia);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config: FsFilterConfig) {\n this._config = config;\n this.initActions(config.actions);\n }\n\n public initActions(rawActions: FsFilterAction[]) {\n if (!rawActions || !Array.isArray(rawActions)) {\n return;\n }\n\n this.show();\n\n this._allActions = rawActions\n .map((action) => new Action(this._config, action));\n\n if (this._reorderAction) {\n this._allActions.unshift(this._reorderAction);\n }\n\n this._classifyActions();\n }\n\n public show() {\n this._visible$.next(true);\n }\n\n public hide() {\n this._visible$.next(false);\n }\n\n public addReorderAction(action: Action) {\n this._allActions.unshift(action);\n\n action.isReorderAction = true;\n\n this._classifyAction(action);\n this._reorderAction = action;\n }\n\n public clearActions() {\n this._allActions = [];\n this._setActions([]);\n this._setKebabActions([]);\n }\n\n public updateActionsVisibility() {\n this._allActions.forEach((action) => action.updateVisibility());\n this._classifyActions();\n }\n\n public updateDisabledState() {\n this.actions.forEach((action) => action.updateDisabledState())\n }\n\n private _setKebabActions(actions: Action[]) {\n this._menuActions$.next(actions);\n }\n\n private _setActions(actions: Action[]) {\n this._actions$.next(actions);\n }\n\n private _classifyActions() {\n const kebabActions = [];\n const actions = [];\n const mobileMode = this.mobileMode;\n\n this._allActions\n .filter((action) => {\n return action.visible;\n })\n .forEach((action) => {\n if (action.menu !== false && (action.menu || mobileMode)) {\n kebabActions.push(action);\n } else {\n actions.push(action);\n }\n });\n\n this._setKebabActions(kebabActions);\n this._setActions(actions);\n }\n\n private _classifyAction(action: Action) {\n if (action.menu) {\n this._setKebabActions([...this.menuActions, action]);\n } else {\n this._setActions([...this.actions, action]);\n }\n }\n\n private _listenMobileMedia() {\n this._breakpointObserver.observe(this._mobileMedia)\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._classifyActions();\n })\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface FsFilterMeta {\n openedFilters: number;\n}\n\nexport const FS_FILTER_META =\n new InjectionToken<FsFilterMeta>('fs.filter.meta',\n {\n providedIn: 'root',\n factory: () => {\n return {\n openedFilters: 0,\n };\n }\n }\n );\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\n\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\n\nimport { HtmlClassRenderer } from '@firestitch/html';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';\nimport { FILTER_DRAWER_DATA } from '../injectors/filter-drawer-data';\nimport { FILTER_DRAWER_OVERLAY } from '../injectors/filter-drawer-overlay';\nimport { FS_FILTER_META, FsFilterMeta } from '../providers/filter-meta';\n\nimport { FocusControllerService } from './focus-controller.service';\n\n\n@Injectable()\nexport class FsFilterOverlayService implements OnDestroy {\n\n private _detach$ = new Subject<void>();\n private _attach$ = new Subject<void>();\n private _clearFn: () => void;\n private _doneFn: () => void;\n\n private _destroy$ = new Subject();\n private _overlayRef: OverlayRef;\n\n constructor(\n @Inject(FS_FILTER_META) private _filterMeta: FsFilterMeta,\n private _injector: Injector,\n private _overlay: Overlay,\n private _focusController: FocusControllerService,\n private _htmlClassRenderer: HtmlClassRenderer,\n ) {\n this._openWhenChipClicked();\n }\n\n public get detach$(): Observable<void> {\n return this._detach$.asObservable();\n }\n\n public get attach$(): Observable<void> {\n return this._attach$.asObservable();\n }\n\n public get isOpened() {\n return !!this._overlayRef;\n }\n\n public setClearFn(fn: () => void) {\n this._clearFn = fn;\n }\n\n public setDoneFn(fn: () => void) {\n this._doneFn = fn;\n }\n\n public close() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._removeFilterClass();\n } \n }\n\n public open() {\n if (this._overlayRef) {\n return;\n }\n\n this._overlayRef = this._createOverlay();\n this._overlayRef.detachments()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._detach$.next(null);\n this._overlayRef = null;\n });\n\n this._overlayRef.attachments()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._attach$.next(null);\n });\n\n this._addFilterClass();\n\n return this._openPortalPreview();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _createOverlay() {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n });\n\n return this._overlay.create(overlayConfig);\n }\n\n private _openPortalPreview() {\n const data = {\n done: this._doneFn,\n clear: this._clearFn,\n };\n const injector = this._createInjector(this._injector, data, this._overlayRef);\n const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);\n const containerRef = this._overlayRef.attach<FilterDrawerComponent>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _createInjector(parentInjector, data, overlayRef) {\n const injectionTokens = new WeakMap<any, any>([\n [FILTER_DRAWER_DATA, data],\n [FILTER_DRAWER_OVERLAY, overlayRef],\n ]);\n\n return new PortalInjector(parentInjector, injectionTokens);\n }\n\n private _removeFilterClass() {\n this._filterMeta.openedFilters--;\n\n if (this._filterMeta.openedFilters === 0) {\n this._htmlClassRenderer.removeClass('fs-filter-open');\n }\n }\n\n private _addFilterClass() {\n this._filterMeta.openedFilters++;\n\n if (this._filterMeta.openedFilters === 1) {\n this._htmlClassRenderer.addClass('fs-filter-open');\n }\n }\n\n private _openWhenChipClicked(): void {\n this._focusController.focusOn$\n .pipe(\n filter((v) => !!v),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n if (!this.isOpened) {\n this.open();\n }\n });\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n})\nexport class FilterStatusBarDirective {\n\n public constructor(\n public templateRef: TemplateRef<any>,\n ) { }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_FILTER_CONFIG = new InjectionToken<any>('fs.filter-config');\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { DrawerRef } from '@firestitch/drawer';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { objectsAreEquals } from '../../helpers/compare';\nimport { IFilterSavedFilter, ISortingChangeEvent } from '../../interfaces';\nimport { FsFilterAction } from '../../interfaces/action.interface';\nimport {\n FilterConfig, FilterSort, IFilterConfigItem, SortItem,\n} from '../../interfaces/config.interface';\nimport { IUpdateFilterItemConfig } from '../../interfaces/update-filter-item.interface';\nimport { FsFilterConfig } from '../../models/filter-config';\nimport { BaseItem } from '../../models/items/base-item';\nimport { TextItem } from '../../models/items/text-item';\nimport { ExternalParamsController } from '../../services/external-params-controller.service';\nimport { QueryParamsController } from '../../services/external-params/query-params-controller.service';\nimport { QueryPersistanceController } from '../../services/external-params/query-persistance-controller.service';\nimport { SavedFiltersController } from '../../services/external-params/saved-filters-controller.service';\nimport { FsFilterOverlayService } from '../../services/filter-overlay.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { FsFilterItemsStore } from '../../services/items-store.service';\n\nimport { FilterStatusBarDirective } from './../../directives/status-bar/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './../../injectors/filter-config';\n\n\n@Component({\n selector: 'fs-filter',\n styleUrls: ['./filter.component.scss'],\n templateUrl: './filter.component.html',\n providers: [\n FsFilterOverlayService,\n ExternalParamsController,\n QueryPersistanceController,\n QueryParamsController,\n FocusControllerService,\n FsFilterItemsStore,\n SavedFiltersController,\n ActionsController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterComponent implements OnInit, OnDestroy {\n\n @Input('config')\n public set setConfig(config) {\n this._initFilterWithConfig(config);\n }\n\n @Input('filter')\n public set setFilter(config) {\n this._initFilterWithConfig(config);\n }\n\n @Input() public showSortBy: any = true;\n @Input() public showFilterInput = true;\n @Output() public closed = new EventEmitter<any>();\n @Output() public opened = new EventEmitter<any>();\n @Output() public ready = new EventEmitter<void>();\n\n @ContentChild(FilterStatusBarDirective)\n public statusBar: FilterStatusBarDirective;\n\n @ViewChild('keywordMatInput', { read: MatInput })\n public keywordMatInput: MatInput;\n\n @ViewChild('reloadEl', { read: ElementRef })\n public reloadEl: ElementRef;\n\n @HostBinding('class.filters-open')\n public showFilterMenu = false;\n\n @HostBinding('class.window-desktop')\n public windowDesktop = false;\n\n @HostBinding('class.fs-filter')\n public fsFilterClass = true;\n\n @HostBinding('class.has-keyword')\n public get hasKeyword() {\n return this._filterItems.hasKeyword;\n }\n\n public searchPlaceholder = 'Search';\n public keyword = '';\n public autoReload = true;\n\n protected _config: FsFilterConfig = null;\n\n private _sort: FilterSort;\n private _filtersBtnVisible$ = new BehaviorSubject(true);\n private _keywordVisible$ = new BehaviorSubject(true);\n private _hasFilterChips$ = new BehaviorSubject(false);\n private _keyword$ = new Subject();\n private _destroy$ = new Subject<void>();\n private _dialogRef = inject(MatDialogRef, { optional: true });\n private _drawerRef = inject(DrawerRef, { optional: true }); \n\n constructor(\n @Optional() @Inject(FS_FILTER_CONFIG) private _defaultConfig: FsFilterConfig,\n private _filterOverlay: FsFilterOverlayService,\n private _zone: NgZone,\n private _externalParams: ExternalParamsController,\n private _persistanceParams: QueryPersistanceController,\n private _filterItems: FsFilterItemsStore,\n private _actions: ActionsController,\n private _savedFiltersController: SavedFiltersController,\n ) {\n this._filterItems.filter = this;\n this._listenWhenFilterReady();\n this._updateWindowWidth();\n\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n const filterAlt = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M440-160q-17 0-28.5-11.5T400-200v-240L161-745q-14-17-4-36t31-19h584q21 0 31 19t-4 36L560-440v240q0 17-11.5 28.5T520-160h-80Zm40-276 240-304H240l240 304Zm0 0Z\"/></svg>';\n\n iconRegistry.addSvgIconLiteral('filterOutline', sanitizer.bypassSecurityTrustHtml(filterAlt));\n\n this._filterOverlay.attach$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.showFilterMenu = true;\n });\n\n this._filterOverlay.detach$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.showFilterMenu = false;\n });\n\n this._listenWindowResize();\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get filterParams() {\n return this._filterItems.values();\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n public get filterParamsQuery(): Record<string, unknown> {\n return this._filterItems.valuesAsQuery();\n }\n\n public get items() {\n return this._filterItems.items;\n }\n\n public get visibleItems() {\n return this._filterItems.visibleItems;\n }\n\n public get keywordItem(): TextItem | null {\n return this._filterItems.keywordItem;\n }\n\n public get itemsReady$(): Observable<boolean> {\n return this._filterItems.ready$;\n }\n\n public get hasFilterChips$(): Observable<boolean> {\n return this._hasFilterChips$.asObservable();\n }\n\n public get hasVisibleItemOrSorting(): boolean {\n return this.visibleItems.length > 0 || !!this._filterItems.sortByItem;\n }\n\n public get filtersBtnVisible$(): Observable<boolean> {\n return this._filtersBtnVisible$.asObservable();\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordVisible$.asObservable();\n }\n\n public get actionsVisible$() {\n return this._actions.visible$;\n }\n\n public get actions$() {\n return this._actions.actions$;\n }\n\n public get menuActions$() {\n return this._actions.menuActions$;\n }\n\n public set activeSavedFilter(savedFilter: IFilterSavedFilter) {\n this._externalParams.setActiveSavedFilter(savedFilter);\n }\n\n public get activeSavedFilter(): IFilterSavedFilter {\n return this._savedFiltersController.activeFilter;\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFiltersController.savedFilters;\n }\n\n public ngOnInit() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.config.autofocus) {\n this.focus();\n }\n });\n\n this._initAutoReload();\n this._listenInputChanges();\n this._listenInternalItemsChange();\n this._initOverlay();\n }\n\n public ngOnDestroy() {\n this._destroyFilterDrawer();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordMatInput?.focus();\n }\n\n public updateSort(sort: ISortingChangeEvent) {\n this._filterItems.updateSort(sort);\n }\n\n /**\n *\n * Do update value of some field\n *\n * @param values - values for update\n *\n * To update text value just pass new text value\n *\n * public updateSelectValue(val) {\n * this.filterEl.updateValues({ keyword: val });\n * }\n *\n * To update select or observable select you could pass suitable value\n *\n * public updateSelectValue(val: number) {\n * this.filterEl.updateValues({ simple_select: val }, { observable_select: val });\n * }\n *\n * To update checkbox value just pass true/false as value\n *\n * public updateCheckox(val: boolean) {\n * this.filterEl.updateValues({ checkbox: val });\n * }\n *\n * To update range value just pass object with min&max object or just with one of targets\n *\n * Ex.: { min: 10, max 15 }, { min: 5 }, { max 5 }\n *\n * public updateRange(val) {\n * this.filterEl.updateValues({ range: val });\n * }\n *\n * To update autocomplete just pass object with name/value fields\n *\n * Ex.: { name: 'John Doe', value: 1 }\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocomplete_user_id: val });\n * }\n *\n * To update autocompletechips just pass:\n *\n * 1) object with name/value fields - will be appended to existing set of values\n *\n * { name: 'John Doe', value: 1 }\n *\n * 2) array of objects - will be appended to existing set of values\n *\n * [{ name: 'John Doe', value: 1 }, { name: 'Darya Filipova', value: 2 }]\n *\n * 3) null - clear existing set of values\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocompletechips_user_id: val });\n * }\n *\n */\n public updateValues(values) {\n Object.keys(values).forEach((key) => {\n const filterItem = this.items\n .find((item) => item.name === key);\n\n if (!filterItem) {\n return;\n }\n\n filterItem.model = values[key];\n });\n }\n\n public hide() {\n this.changeVisibility(false);\n }\n\n public show() {\n this.changeVisibility(true);\n }\n\n public changeVisibilityClick(value, event = null) {\n\n if (event) {\n event.stopPropagation();\n }\n\n this.changeVisibility(value);\n }\n\n public get itemValues(): any[] {\n return this.items\n .map((item) => item.value);\n }\n\n public get nonEmptyItemValues(): any[] {\n return this.items\n .filter((item) => item.value !== undefined)\n .map((item) => item.value);\n }\n\n public get hasItemValues(): boolean {\n return this.items\n .some((item) => item.value !== undefined);\n }\n\n public getItemValue(name: string) {\n const item = this.items\n .find((_item) => _item.name === name);\n\n return item?.value;\n }\n\n public showItem(name: string) {\n const item = this.getItem(name);\n\n if (item) {\n item.hide = false;\n\n this._filterItems.updateItemsVisiblity();\n }\n }\n\n public hideItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.hide = true;\n\n this._filterItems.updateItemsVisiblity();\n }\n\n public clearItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.clear();\n }\n\n public updateItemConfig(\n name: string,\n params: IUpdateFilterItemConfig,\n ): void {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.label = params.label ?? item.label;\n item.chipLabel = params.chipLabel ?? item.chipLabel;\n\n this._filterItems.updateItemsVisiblity();\n }\n\n public getItemValueChange$(name: string): Observable<any> | null {\n const item = this.items.find((i) => i.name === name);\n\n if (item) {\n return item.value$\n .pipe(\n map(() => {\n return item.model;\n }),\n );\n }\n\n return null;\n\n }\n\n public changeVisibility(state: boolean) {\n if (state === this.showFilterMenu) {\n return;\n }\n\n if (!state) {\n this.closed.emit();\n\n return this._destroyFilterDrawer();\n }\n\n if (!this.hasVisibleItemOrSorting) {\n return;\n }\n\n this._listenEscButton();\n\n this.opened.emit();\n\n this._filterOverlay.open();\n }\n\n public init() {\n const data = this._filterItems.valuesAsQuery();\n this._sort = this._filterItems.getSort();\n\n if (this.config.init) {\n this.config.init(data, this._sort, this);\n }\n\n this._updateChipsVisibility();\n\n this.items\n .forEach((item) => {\n item.init(item, this);\n });\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this._filterItems.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keyword = '';\n }\n\n /**\n * Close filter window and do change callback\n */\n public search(event) {\n this.changeVisibilityClick(false, event);\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const data = this._filterItems.valuesAsQuery();\n const el = this.reloadEl?.nativeElement;\n\n if(el) {\n el.style.transition = 'all 0.75s 0.0s';\n el.style.transform = 'rotate(360deg)';\n\n setTimeout(() => {\n el.style.transition = null;\n el.style.transform = null;\n }, 1000);\n }\n\n if (this.config.reload) {\n this.config.reload(data, this._filterItems.getSort());\n }\n }\n\n public getItem(name): BaseItem<any> {\n return this.items\n .find((item) => item.name === name);\n }\n\n public fetchQueryParams(): void {\n this._externalParams.fetchQueryParams();\n }\n\n /**\n * Call change callback and apply new filter values\n */\n public change() {\n const data = this._filterItems.valuesAsQuery();\n const sort = this._filterItems.getSort();\n\n const sortingChanged = ((!sort || !this._sort) && sort !== this._sort)\n || (sort && this._sort && !objectsAreEquals(this._sort, sort));\n\n if (sortingChanged) {\n this._sort = sort;\n\n if (this.config.sortChange) {\n this.config.sortChange(data, sort);\n }\n }\n\n if (this.config.change) {\n this.config.change(data, sort);\n }\n\n this._updateChipsVisibility();\n\n // visibility for actions can depend on filters state\n this._actions.updateActionsVisibility();\n }\n\n /**\n * Update filter actions config\n *\n * @param actions\n */\n public updateActions(actions: FsFilterAction[]): void {\n this._actions.initActions(actions);\n }\n\n /**\n * Show \"Filters\" button\n */\n public showFiltersBtn(): void {\n this._filtersBtnVisible$.next(true);\n }\n\n /**\n * Hide \"Filters\" button\n */\n public hideFiltersBtn(): void {\n this._filtersBtnVisible$.next(false);\n }\n\n /**\n * Show \"Keyword\" field if it present\n */\n public showKeywordField(): void {\n this._keywordVisible$.next(true);\n }\n\n /**\n * Hide \"Keyword\" field if it present\n */\n public hideKeywordField(): void {\n this._keywordVisible$.next(false);\n }\n\n /**\n * Go through actions and check show() callback and update visible actions\n */\n public updateActionsVisibility(): void {\n this._actions.updateActionsVisibility();\n }\n\n /**\n * Go through actions and check disabled() callback and update disabled state\n */\n public updateDisabledState(): void {\n this._actions.updateDisabledState();\n }\n\n public setItems(items: IFilterConfigItem[]) {\n this._filterItems.destroyItems();\n\n this.config.items = items;\n this._filterItems.setConfig(this._config);\n this._externalParams.initItems();\n\n this._syncSearchInputWithKeyword();\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n public updateSortings(items: SortItem[]): void {\n this._filterItems.updateSortingItemsValues(items);\n }\n\n private _initFilterWithConfig(config: FilterConfig) {\n if (this.config) {\n this._filterItems.destroyItems();\n }\n\n config = {\n ...(this._defaultConfig || {}),\n ...config,\n };\n\n this._config = new FsFilterConfig(config);\n this._actions.setConfig(this._config);\n this._persistanceParams.setConfig(this._config, this.inDialog);\n this._filterItems.setConfig(this._config);\n this._externalParams.setConfig(this._config);\n\n this._syncSearchInputWithKeyword();\n\n if (this.config.reloadWhenConfigChanged) {\n this.change();\n }\n }\n\n private _destroyFilterDrawer() {\n this._filterOverlay.close();\n }\n\n private _updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n private _listenEscButton() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'keyup')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this.closed),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this.changeVisibility(false);\n });\n });\n });\n }\n\n private _listenWindowResize() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(100),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this._updateWindowWidth();\n });\n });\n });\n }\n\n private _initAutoReload() {\n if(this.config.autoReload) {\n interval(this.config.autoReload.seconds * 1000)\n .pipe(\n filter(() => this.autoReload),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.reload(null);\n });\n }\n }\n\n private _listenInputChanges() {\n this._keyword$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n const keywordItem = this._filterItems.keywordItem;\n keywordItem.model = value;\n this.change();\n });\n }\n\n private _syncSearchInputWithKeyword(): void {\n const keywordItem = this._filterItems.keywordItem;\n if (keywordItem) {\n this.keyword = keywordItem.model;\n this.searchPlaceholder = keywordItem.label as string || 'Search';\n }\n }\n\n private _listenInternalItemsChange() {\n this._filterItems\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.change();\n });\n }\n\n private _initOverlay() {\n this._filterOverlay.setClearFn(this.clear.bind(this));\n this._filterOverlay.setDoneFn(this.hide.bind(this));\n }\n\n // We may need some time to recieve external params and after that ready can be emitted\n private _listenWhenFilterReady() {\n combineLatest(\n [\n this._externalParams.pending$,\n this.itemsReady$,\n ])\n .pipe(\n filter(([pendingParams, itemsReady]) => !pendingParams && itemsReady),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.init();\n this._syncSearchInputWithKeyword();\n\n this.ready.emit();\n });\n }\n\n private _updateChipsVisibility() {\n const hasFilterChips = this._filterItems.items\n .some((item: BaseItem<any>) => {\n return item.isChipVisible;\n });\n\n this._hasFilterChips$.next(hasFilterChips);\n }\n}\n","<div class=\"filter-container\">\n <div class=\"filter-inner-container\">\n <ng-container *ngIf=\"!hasKeyword; else filterKeyword\">\n <div>\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </div>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"filterToolbar\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"filterActions\"></ng-container>\n </div>\n <ng-container *ngIf=\"hasKeyword\">\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </ng-container>\n</div>\n<ng-template #filterStatusBarChips>\n <ng-container *ngIf=\"statusBar\">\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"config.chips && hasFilterChips$ | async\">\n <fs-filter-chips\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n </ng-container>\n</ng-template>\n<ng-template #filterKeyword>\n <div class=\"filter-keyword\">\n <ng-container *ngIf=\"(keywordVisible$ | async) && !keywordItem?.hide \">\n <mat-form-field\n class=\"search-form-field form-field-padless\"\n [ngClass]=\"{\n 'has-keyword': !!keyword\n }\">\n <span\n matPrefix\n class=\"icon\">\n <mat-icon matPrefix>\n search\n </mat-icon>\n </span>\n <input\n #keywordMatInput\n matInput\n [(ngModel)]=\"keyword\"\n (ngModelChange)=\"keywordChange($event)\"\n name=\"filter-input\"\n [fsClear]=\"true\"\n [placeholder]=\"searchPlaceholder\">\n </mat-form-field>\n </ng-container>\n </div>\n</ng-template>\n<ng-template #filterActions>\n <div class=\"filter-actions\">\n <fs-filter-actions\n *ngIf=\"actionsVisible$ | async\"\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n</ng-template>\n<ng-template #filterToolbar>\n <div class=\"filter-toolbar\">\n @if (filtersBtnVisible$ | async) {\n @if (hasVisibleItemOrSorting) {\n <a\n mat-icon-button\n class=\"button-filters\"\n (click)=\"changeVisibilityClick(!showFilterMenu, $event)\"\n [color]=\"config.button.color\">\n @if (config.button.icon) {\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n }\n {{ config.button.label }}\n </a>\n }\n }\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n @if (config.autoReload) {\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [(ngModel)]=\"autoReload\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n }\n </div>\n }\n </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, } from '@angular/core';\n\n@Component({\n selector: 'filter-item-select-backdrop',\n styleUrls: ['./backdrop.component.scss'],\n templateUrl: './backdrop.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectBackdropComponent {\n constructor() {}\n}\n","","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FilterRemoteOrder, IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { SavedFiltersController } from '../../../services/external-params/saved-filters-controller.service';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterSavedFilterManageComponent {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFiltersController: SavedFiltersController;\n private _filterRemoteOrder: FilterRemoteOrder;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private _cdRef: ChangeDetectorRef,\n ) {\n this._savedFiltersController = this.data.savedFiltersController;\n this.savedFilters = [...this._savedFiltersController.savedFilters];\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFiltersController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = [...this._savedFiltersController.savedFilters];\n this._cdRef.markForCheck();\n });\n }\n\n public drop(event: CdkDragDrop<any[]>) {\n moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);\n\n this._savedFiltersController.order(this.savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n class=\"saved-filter-manage-chip\"\n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { ExternalParamsController } from '../../../services/external-params-controller.service';\nimport { SavedFiltersController } from '../../../services/external-params/saved-filters-controller.service';\nimport { FsFilterItemsStore } from '../../../services/items-store.service';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter-manage';\n\n\n@Component({\n selector: 'fs-filter-saved-filters-menu',\n templateUrl: './saved-filters-menu.component.html',\n styleUrls: ['./saved-filters-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsSavedFiltersMenuComponent {\n\n @Output()\n public clear = new EventEmitter<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _externalParams: ExternalParamsController,\n private _savedFilters: SavedFiltersController,\n private _dialog: MatDialog,\n ) {}\n\n public get filters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters.savedFilters$;\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._savedFilters.activeFilter$;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter): void {\n this._externalParams.setActiveSavedFilter(savedFilter);\n }\n\n public removeActiveFilter(): void {\n this._itemsStore.filtersClear();\n this._externalParams.setActiveSavedFilter(null);\n\n this.clear.emit();\n }\n\n public saveFilters() {\n this._externalParams\n .savedFiltersController\n .openSavedFilterEditDialog();\n }\n\n\n public manageFilters(): void {\n this._dialog.open(FsFilterSavedFilterManageComponent, {\n data: {\n savedFiltersController: this._savedFilters,\n },\n });\n }\n}\n","<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'None' }}</a>\n\n<fs-menu #menu>\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n <ng-container *ngIf=\"(filters$ | async).length !==0\">\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <ng-template fs-menu-divider-item></ng-template>\n </ng-container>\n\n <ng-template \n fs-menu-item \n (click)=\"saveFilters()\">\n Save\n </ng-template>\n \n <ng-template \n fs-menu-item \n (click)=\"manageFilters()\">\n Manage\n </ng-template>\n</fs-menu>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsChipModule } from '@firestitch/chip';\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsScrollModule } from '@firestitch/scroll';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsStore, FsStoreModule } from '@firestitch/store';\n\nimport { FsFilterActionButtonComponent } from './components/action-button/action-button.component';\nimport { FsFilterActionKebabActionsComponent } from './components/action-kebab-actions/action-kebab-actions.component';\nimport { FsFilterActionsComponent } from './components/actions/actions.component';\nimport { FsFilterChipContentComponent } from './components/filter-chip-content/filter-chip-content.component';\nimport { FsFilterChipComponent } from './components/filter-chip/filter-chip.component';\nimport { FsFilterChipsComponent } from './components/filter-chips/filter-chips.component';\nimport { FsFilterDrawerActionsComponent } from './components/filter-drawer-actions/filter-drawer-actions.component';\nimport { FilterDrawerComponent } from './components/filter-drawer/filter-drawer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { AutocompleteComponent } from './components/filters-item/autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './components/filters-item/autocompletechips/autocompletechips.component';\nimport { BaseItemComponent } from './components/filters-item/base-item/base-item.component';\nimport { CheckboxComponent } from './components/filters-item/checkbox/checkbox.component';\nimport { ChipsComponent } from './components/filters-item/chips/chips.component';\nimport { DateRangeComponent } from './components/filters-item/date-range/date-range.component';\nimport { DateComponent } from './components/filters-item/date/date.component';\nimport { FilterItemComponent } from './components/filters-item/filter-item.component';\nimport { RangeComponent } from './components/filters-item/range/range.component';\nimport { SelectBackdropComponent } from './components/filters-item/select/backdrop/backdrop.component';\nimport { SelectGroupsComponent } from './components/filters-item/select/groups/groups.component';\nimport { SelectMultipleComponent } from './components/filters-item/select/multiple/multiple.component';\nimport { SelectComponent } from './components/filters-item/select/select.component';\nimport { SelectSimpleComponent } from './components/filters-item/select/simple/simple.component';\nimport { TextComponent } from './components/filters-item/text/text.component';\nimport { WeekComponent } from './components/filters-item/week/week.component';\nimport { FsFilterSavedFilterManageComponent } from './components/saved-filter';\nimport { FsFilterSavedFilterEditComponent } from './components/saved-filter/saved-filter-edit/saved-filter-edit.component';\nimport { FsSavedFiltersMenuComponent } from './components/saved-filter/saved-filters-menu/saved-filters-menu.component';\nimport { FocusToItemDirective } from './directives/focus-to-item/focus-to-item.directive';\nimport { FilterStatusBarDirective } from './directives/status-bar/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './injectors/filter-config';\nimport { FilterConfig } from './interfaces/config.interface';\nimport { FsFilterIsolateValues } from './pipes/remove-isolate-value.pipe';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n \n DragDropModule,\n \n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatChipsModule,\n MatCheckboxModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatDialogModule,\n MatTooltipModule,\n MatSlideToggleModule,\n\n FsChipModule,\n FsCommonModule,\n FsStoreModule,\n FsDatePickerModule,\n FsLabelModule,\n FsAutocompleteModule,\n FsAutocompleteChipsModule,\n FsScrollModule,\n FsMenuModule,\n FsSkeletonModule,\n FsFormModule,\n FsFileModule,\n FsSelectButtonModule,\n FsClearModule,\n FsPopoverModule,\n\n PortalModule,\n ],\n declarations: [\n BaseItemComponent,\n FilterComponent,\n FilterItemComponent,\n FsFilterChipsComponent,\n SelectComponent,\n SelectGroupsComponent,\n SelectSimpleComponent,\n SelectMultipleComponent,\n ChipsComponent,\n TextComponent,\n WeekComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n CheckboxComponent,\n FilterDrawerComponent,\n SelectBackdropComponent,\n FsFilterChipComponent,\n FsFilterChipContentComponent,\n FsFilterDrawerActionsComponent,\n FsFilterSavedFilterEditComponent,\n FsSavedFiltersMenuComponent,\n FsFilterActionsComponent,\n FsFilterActionButtonComponent,\n FsFilterActionKebabActionsComponent,\n FsFilterSavedFilterManageComponent,\n\n FilterStatusBarDirective,\n FocusToItemDirective,\n\n // Pipes\n FsFilterIsolateValues,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\n FsSavedFiltersMenuComponent,\n ],\n})\nexport class FsFilterModule {\n public static forRoot(config: FilterConfig = {}): ModuleWithProviders<FsFilterModule> {\n return {\n ngModule: FsFilterModule,\n providers: [\n {\n provide: FS_FILTER_CONFIG,\n useValue: {\n button: {\n label: '',\n },\n ...config,\n } as FilterConfig,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["arrayList","filter","i2.FsFilterItemsStore","i1","i2","i3","i4","i5","i6","i7","i8","i9","i1.FsFilterItemsStore","i2.QueryPersistanceController","i2.QueryParamsController","i2.SavedFiltersController","i11.FsFilterActionButtonComponent","i12.FsFilterActionKebabActionsComponent","i1.FocusControllerService","i4.FsFilterChipContentComponent","i2.FsFilterChipComponent","i7.FocusToItemDirective","i8.FocusToItemDirective","i9.FsFilterIsolateValues","i4.SelectGroupsComponent","i5.SelectSimpleComponent","i6.SelectMultipleComponent","i5.FocusToItemDirective","i6.FocusToItemDirective","i4.FocusToItemDirective","arrayRemove","i2.SelectComponent","i3.ChipsComponent","i4.TextComponent","i5.WeekComponent","i6.RangeComponent","i7.AutocompleteComponent","i8.AutocompletechipsComponent","i9.DateComponent","i10.DateRangeComponent","i11.CheckboxComponent","i1.ExternalParamsController","i6.FilterItemComponent","i7.FsFilterDrawerActionsComponent","i2.FocusControllerService","i1.FsFilterOverlayService","i2.ExternalParamsController","i3.QueryPersistanceController","i4.FsFilterItemsStore","i5.ActionsController","i6.SavedFiltersController","i10","i11","i12","i14","i16.FsFilterChipsComponent","i17.FsFilterActionsComponent","i3.SavedFiltersController"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/helpers/compare.ts","../../src/app/enums/item-type.enum.ts","../../src/app/models/items/base-item.ts","../../src/app/models/items/select/base-select-item.ts","../../src/app/models/items/select/multiple-select-item.ts","../../src/app/consts/query-param-delimiter.ts","../../src/app/helpers/query-param-transformers.ts","../../src/app/helpers/build-query-params.ts","../../src/app/helpers/get-range-name.ts","../../src/app/models/items/date-range/base-date-range-item.ts","../../src/app/models/items/date-range-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/helpers/parse-date.ts","../../src/app/models/items/week-item.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/helpers/restore-items.ts","../../src/app/models/items/autocomplete/base-autocomplete-item.ts","../../src/app/models/items/autocomplete-chips-item.ts","../../src/app/models/items/autocomplete-item.ts","../../src/app/models/items/checkbox-item.ts","../../src/app/models/items/chips-item.ts","../../src/app/enums/item-date-mode.enum.ts","../../src/app/models/items/date/base-date-item.ts","../../src/app/models/items/date-item.ts","../../src/app/models/items/date-time-item.ts","../../src/app/helpers/find-value.ts","../../src/app/models/items/select/simple-select-item.ts","../../src/app/models/items/select-item.ts","../../src/app/models/items/text-item.ts","../../src/app/helpers/create-filter-item.ts","../../src/app/enums/action-mode.enum.ts","../../src/app/enums/action-type.enum.ts","../../src/app/enums/button-style.ts","../../src/app/enums/menu-action-mode.enum.ts","../../src/app/enums/picker-view-type.enum.ts","../../src/app/models/filter-config.ts","../../src/app/services/items-store.service.ts","../../src/app/services/external-params/query-params-controller.service.ts","../../src/app/services/external-params/query-persistance-controller.service.ts","../../src/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.ts","../../src/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.html","../../src/app/services/external-params/saved-filters-controller.service.ts","../../src/app/services/external-params-controller.service.ts","../../src/app/models/action-menu-item.model.ts","../../src/app/models/action.model.ts","../../src/app/components/action-button/action-button.component.ts","../../src/app/components/action-button/action-button.component.html","../../src/app/components/action-kebab-actions/action-kebab-actions.component.ts","../../src/app/components/action-kebab-actions/action-kebab-actions.component.html","../../src/app/components/actions/actions.component.ts","../../src/app/components/actions/actions.component.html","../../src/app/components/filter-chip-content/filter-chip-content.component.ts","../../src/app/components/filter-chip-content/filter-chip-content.component.html","../../src/app/services/focus-controller.service.ts","../../src/app/components/filter-chip/filter-chip.component.ts","../../src/app/components/filter-chip/filter-chip.component.html","../../src/app/components/filter-chips/filter-chips.component.ts","../../src/app/components/filter-chips/filter-chips.component.html","../../src/app/components/filter-drawer-actions/filter-drawer-actions.component.ts","../../src/app/components/filter-drawer-actions/filter-drawer-actions.component.html","../../src/app/injectors/filter-drawer-data.ts","../../src/app/injectors/filter-drawer-overlay.ts","../../src/app/components/filters-item/base-item/base-item.component.ts","../../src/app/directives/focus-to-item/focus-to-item.directive.ts","../../src/app/components/filters-item/select/groups/groups.component.ts","../../src/app/components/filters-item/select/groups/groups.component.html","../../src/app/pipes/remove-isolate-value.pipe.ts","../../src/app/components/filters-item/select/simple/simple.component.ts","../../src/app/components/filters-item/select/simple/simple.component.html","../../src/app/components/filters-item/select/multiple/multiple.component.ts","../../src/app/components/filters-item/select/multiple/multiple.component.html","../../src/app/components/filters-item/select/select.component.ts","../../src/app/components/filters-item/select/select.component.html","../../src/app/components/filters-item/chips/chips.component.ts","../../src/app/components/filters-item/chips/chips.component.html","../../src/app/components/filters-item/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/components/filters-item/week/week.component.ts","../../src/app/components/filters-item/week/week.component.html","../../src/app/components/filters-item/range/range.component.ts","../../src/app/components/filters-item/range/range.component.html","../../src/app/components/filters-item/autocomplete/autocomplete.component.ts","../../src/app/components/filters-item/autocomplete/autocomplete.component.html","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.ts","../../src/app/components/filters-item/autocompletechips/autocompletechips.component.html","../../src/app/components/filters-item/date/date.component.ts","../../src/app/components/filters-item/date/date.component.html","../../src/app/components/filters-item/date-range/date-range.component.ts","../../src/app/components/filters-item/date-range/date-range.component.html","../../src/app/components/filters-item/checkbox/checkbox.component.ts","../../src/app/components/filters-item/checkbox/checkbox.component.html","../../src/app/components/filters-item/filter-item.component.ts","../../src/app/components/filters-item/filter-item.component.html","../../src/app/components/filter-drawer/filter-drawer.component.ts","../../src/app/components/filter-drawer/filter-drawer.component.html","../../src/app/classes/actions-controller.ts","../../src/app/providers/filter-meta.ts","../../src/app/services/filter-overlay.service.ts","../../src/app/directives/status-bar/status-bar.directive.ts","../../src/app/injectors/filter-config.ts","../../src/app/components/filter/filter.component.ts","../../src/app/components/filter/filter.component.html","../../src/app/components/filters-item/select/backdrop/backdrop.component.ts","../../src/app/components/filters-item/select/backdrop/backdrop.component.html","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.ts","../../src/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.html","../../src/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.ts","../../src/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.html","../../src/app/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["import { isObject } from 'lodash-es';\n\n\nexport function objectsAreEquals(obj1, obj2) {\n const oldKeys = Object.keys(obj1);\n const currKeys = Object.keys(obj2);\n\n if (oldKeys.length !== currKeys.length) {\n return false;\n }\n\n for (const key in obj1) {\n if (obj1.hasOwnProperty(key)) {\n const oldItem = obj1[key];\n const currItem = obj2[key];\n const isArrays = Array.isArray(oldItem) && Array.isArray(currItem);\n const isObjects = isObject(oldItem) && isObject(currItem);\n\n if (isArrays && !arraysAreEquals(oldItem, currItem)) {\n return false;\n } else if (isObjects && !objectsAreEquals(oldItem, currItem)) {\n return false;\n } else if (!isArrays && !isObjects && oldItem !== currItem) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function arraysAreEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n for (const el of arr1) {\n if (arr2.indexOf(el) === -1) {\n return false;\n }\n }\n\n return true;\n}\n","export enum ItemType {\n Text = 'text',\n Select = 'select',\n Range = 'range',\n Date = 'date',\n DateTime = 'datetime',\n DateRange = 'daterange',\n Week = 'week',\n DateTimeRange = 'datetimerange',\n AutoComplete = 'autocomplete',\n AutoCompleteChips = 'autocompletechips',\n Checkbox = 'checkbox',\n Chips = 'chips',\n Keyword = 'keyword',\n}\n","\nimport { BehaviorSubject, isObservable, Observable, Subject } from 'rxjs';\nimport {\n finalize,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { isFunction } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { IFilterDefaultFn } from '../../interfaces/items/base.interface';\n\n\nexport abstract class BaseItem<T extends IFilterConfigItem> {\n\n public name: string;\n public label: any;\n public chipLabel: string | string[];\n public hide: boolean;\n public defaultValue: any;\n public defaultValueFn: IFilterDefaultFn;\n public persistedValue: unknown;\n public showClear: boolean;\n public persistanceDisabled: boolean;\n public queryParamsDisabled: boolean;\n public change: (item: BaseItem<T>, filter: FilterComponent) => void;\n public init: (item: BaseItem<T>, filter?) => void;\n\n protected readonly _type: T['type'];\n\n protected _model: any = undefined;\n protected _pendingValues = false;\n protected _pendingDefaultValue = false;\n protected _initializedValues = false;\n protected _valuesFn: (keyword?: string, filter?: FilterComponent) => Observable<any> | any[];\n\n private _loading$ = new BehaviorSubject(false);\n private _value$ = new BehaviorSubject(null);\n private _valueChange$ = new Subject<void>();\n private _values$ = new BehaviorSubject(null);\n private _destroy$ = new Subject<void>();\n private _clear$ = new Subject<unknown>();\n\n constructor(\n itemConfig: T,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n this._type = itemConfig.type;\n this._initConfig(itemConfig);\n }\n\n public get filter(): FilterComponent {\n return this._filter;\n }\n\n public get isTypeAutocomplete() {\n return this.type === ItemType.AutoComplete;\n }\n\n public get isTypeAutocompleteChips() {\n return this.type === ItemType.AutoCompleteChips;\n }\n\n public get isTypeChips() {\n return this.type === ItemType.Chips;\n }\n\n public get isTypeCheckbox() {\n return this.type === ItemType.Checkbox;\n }\n\n public get isTypeSelect() {\n return this.type === ItemType.Select;\n }\n\n public get isTypeDate() {\n return this.type === ItemType.Date;\n }\n\n public get isTypeDateRange() {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeRange() {\n return this.type === ItemType.Range;\n }\n\n public get isTypeDateTimeRange() {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isTypeDateTime() {\n return this.type === ItemType.DateTime;\n }\n\n public get isTypeKeyword() {\n return this.type === ItemType.Keyword;\n }\n\n public get isChipVisible(): boolean {\n return !!this.model && !this.isTypeKeyword;\n }\n\n public get destroy$() {\n return this._destroy$.asObservable();\n }\n\n public get type(): T['type'] {\n return this._type;\n }\n\n public get hasPendingValues(): boolean {\n return this._pendingValues;\n }\n\n public get hasPendingDefaultValue(): boolean {\n return this._pendingDefaultValue;\n }\n\n public get hasValue() {\n return this.value !== undefined;\n }\n\n public get model() {\n return this._model;\n }\n\n public set model(value) {\n this._setModel(value);\n this.valueChanged();\n }\n\n public set values(values) {\n this._values$.next(values);\n }\n\n public get values() {\n return this._values$.getValue();\n }\n\n public get values$(): Observable<unknown> {\n return this._values$.asObservable();\n }\n\n public get valueChange$() {\n return this._valueChange$.asObservable();\n }\n\n public get value$() {\n return this._value$.asObservable();\n }\n\n public get clear$() {\n return this._clear$.asObservable();\n }\n\n public get initialized() {\n return this._initialized;\n }\n\n public get loading$(): Observable<boolean> {\n return this._loading$.asObservable();\n }\n\n public get loading(): boolean {\n return this._loading$.getValue();\n }\n\n public set loading(value: boolean) {\n this._loading$.next(value);\n }\n\n public get isQueryParamVisible(): boolean {\n return true;\n }\n\n public get queryObject(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value.join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get persistanceObject(): Record<string, unknown> {\n return this.queryObject;\n }\n\n public loadDefaultValue(): Observable<any> {\n this._pendingDefaultValue = true;\n\n return this.defaultValueFn()\n .pipe(\n tap((value) => {\n this.defaultValue = value;\n\n this._initDefaultModel();\n }),\n finalize(() => {\n this._pendingDefaultValue = false;\n }),\n );\n }\n\n public valueChanged() {\n this._value$.next(this.value);\n\n if (this.change) {\n this.change(this, this._filter);\n }\n\n if (this.initialized) {\n this._valueChange$.next(null);\n }\n }\n\n public initValues(persistedValue: unknown) {\n this._initializedValues = false;\n this.persistedValue = persistedValue;\n this._initDefaultModel();\n\n const isAutocomplete = this.type === ItemType.AutoComplete || \n this.type === ItemType.AutoCompleteChips;\n\n if (this._valuesFn && !isAutocomplete) {\n const valuesResult = this._valuesFn(null, this._filter);\n\n if (isObservable(valuesResult)) {\n this._pendingValues = true;\n } else {\n this.values = valuesResult;\n this._init();\n this._initializedValues = true;\n }\n\n } else {\n this._init();\n this._initializedValues = true;\n }\n }\n\n public loadAsyncValues(reload = true) {\n if (reload || (!this.loading && this.hasPendingValues)) {\n this.loading = true;\n\n (this._valuesFn(null, this._filter) as Observable<unknown>)\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe((values) => {\n this.values = values;\n this._pendingValues = false;\n this.loading = false;\n this._init();\n this._validateModel();\n this._initializedValues = true;\n });\n\n }\n }\n\n public clear(defaultValue: unknown = undefined) {\n if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {\n console.warn(`\n Filter ${this.name} can not be cleared with .clear() method!\n Use special .clearRange() or clearDateRange() instead.\n `);\n }\n\n this._clear$.next(defaultValue);\n this._clearValue(defaultValue);\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n protected _setModel(value) {\n this._model = value;\n }\n\n protected _initDefaultModel() {\n const model = this.persistedValue ?? this.defaultValue;\n\n if (model !== undefined) {\n this._setModel(model);\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n\n protected get _initialized(): boolean {\n return !this._pendingDefaultValue && !this._pendingValues && this._initializedValues;\n }\n\n private _initConfig(item: T) {\n this.name = item.name;\n this.label = item.label;\n this.chipLabel = item.chipLabel;\n\n if (typeof item.default === 'function') {\n this.defaultValueFn = item.default as IFilterDefaultFn;\n } else {\n this.defaultValue = item.default;\n }\n\n this.init = item.init || (() => {\n //\n });\n this.change = item.change;\n this.hide = item.hide;\n this.showClear = item.clear ?? true;\n this.persistanceDisabled = item.disablePersist ?? false;\n this.queryParamsDisabled = item.disableQueryParams ?? false;\n\n if (isFunction(item.values)) {\n this._valuesFn = item.values;\n } else {\n this.values = item.values;\n }\n }\n\n \n public abstract get value();\n public abstract getChipsContent(type): any;\n\n protected abstract _init();\n protected abstract _validateModel();\n \n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport {\n IFilterConfigSelectIsolate,\n IFilterConfigSelectItem,\n} from '../../../interfaces/items/select.interface';\nimport { BaseItem } from '../base-item';\n\nexport interface IFilterIsolate extends IFilterConfigSelectIsolate {\n enabled: boolean;\n}\n\nexport abstract class BaseSelectItem extends BaseItem<IFilterConfigSelectItem> {\n\n public declare children: string;\n public declare multiple: boolean;\n public declare isolate: IFilterIsolate;\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.multiple = itemConfig.multiple;\n this.children = itemConfig.children;\n\n if (itemConfig.isolate) {\n this.isolate = {\n ...itemConfig.isolate,\n enabled: false,\n };\n }\n }\n \n protected _init() {\n if (!Array.isArray(this.values)) {\n this.values = [];\n }\n\n // TODO Refactor\n if (this.isolate) {\n this.values = this.values.filter((item) => {\n if (Array.isArray(this.isolate.value)) {\n return (this.isolate.value as unknown[]).indexOf(item.value) === -1;\n }\n\n return item.value !== this.isolate.value;\n\n });\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n if (this.isolate) {\n this.isolate.enabled = false;\n }\n }\n\n}\n","import { filter, isArrayEqual } from '@firestitch/common';\n\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../../components/filter/filter.component';\nimport { arraysAreEquals } from '../../../helpers/compare';\nimport { IFilterConfigSelectItem } from '../../../interfaces/items/select.interface';\n\nimport { BaseSelectItem } from './base-select-item';\n\n\nexport class MultipleSelectItem extends BaseSelectItem {\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n _persistedValues: any,\n _filter: FilterComponent,\n ) {\n super(itemConfig, _persistedValues, _filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (this.isolateOptionNotSelected) {\n value = this.values?.map((v) => v.value);\n } else if (!Array.isArray(value) || value.length === 0 || value.indexOf('__all') > -1) {\n value = undefined;\n }\n\n return value;\n }\n\n public get isChipVisible(): boolean {\n return Array.isArray(this.model) && this.model.length > 0;\n }\n\n public get isolateOptionNotSelected() {\n const modelValue = this.model;\n const isolate = this.isolate;\n\n return isolate && !isolate.enabled && modelValue?.length === 0;\n }\n\n public getChipsContent(type = null): string {\n if (!this.model) {\n return '';\n }\n\n const options = this.model.reduce((acc, key) => {\n const itemValue = this.values.find((val) => val.value === key);\n let itemLabel: string;\n\n if (itemValue) {\n itemLabel = itemValue.name;\n } else if (this.isolate && this.isolate.enabled) {\n itemLabel = this.isolate.label;\n }\n\n if (!acc.includes(itemLabel)) {\n acc.push(itemLabel);\n }\n\n return acc;\n }, []);\n\n return options.join(', ');\n }\n\n protected _init() {\n super._init();\n\n const values = this.values.map((itemv) => itemv.value);\n const wrongDefaultValue = !this.model && !Array.isArray(this.defaultValue);\n\n /**\n * When multiple select is in isolate mode and have no options selected\n * it should send to the server all it's possible values,\n * but should not show them as selected in interfaces as well as in query params & persistance\n *\n * Code below prevents filling model with values from query params if query params contain all possible values\n */\n const isolate = !wrongDefaultValue\n && !this.isolateOptionNotSelected\n && arraysAreEquals(this.model, values);\n\n if (wrongDefaultValue || isolate) {\n this.model = [];\n }\n }\n \n protected _setModel(value) {\n if (Array.isArray(value)) {\n value = value.map((val) => {\n if (isNaN(val)) {\n return val;\n }\n\n return +val;\n });\n\n value = value.length === 0 ? undefined : value;\n }\n \n\n super._setModel(value);\n }\n\n protected _validateModel() {\n const possibleValues = filter(this.model || [], (item) => {\n return this.values.find((value) => {\n return value.value === item;\n });\n });\n\n if (!isArrayEqual(this.model, possibleValues)) {\n this.model = possibleValues;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n super._clearValue(defaultValue);\n\n this.model = defaultValue ?? [];\n }\n}\n","export const QUERY_PARAM_DELIMITER = ':';\n","import { QUERY_PARAM_DELIMITER } from '../consts/query-param-delimiter';\n\nexport function filterToQueryParam(value, name): string {\n return `${encodeURIComponent(value)}${QUERY_PARAM_DELIMITER}${encodeURIComponent(name)}`;\n}\n\nexport function filterFromQueryParam(param: string): string[] {\n const parts = param.split(QUERY_PARAM_DELIMITER);\n\n return [decodeURIComponent(parts[0]), decodeURIComponent(parts[1])];\n}\n\n","import { list as arrayList } from '@firestitch/common';\n\nimport { isObject } from 'lodash-es';\n\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { BaseItem } from '../models/items/base-item';\nimport { MultipleSelectItem } from '../models/items/select/multiple-select-item';\n\nimport { arraysAreEquals } from './compare';\nimport { filterToQueryParam } from './query-param-transformers';\n\n\nexport function buildQueryParams(flattenedParams: Record<string, unknown>, items: BaseItem<IFilterConfigItem>[]) {\n items\n .forEach((filterItem) => {\n if (filterItem instanceof MultipleSelectItem && filterItem.isolate) {\n if (filterItem.multiple && filterItem.value) {\n const isolated = arrayList(filterItem.values, 'value').sort();\n const value = filterItem.value.sort();\n\n if (arraysAreEquals(value, isolated)) {\n flattenedParams[filterItem.name] = null;\n }\n }\n }\n\n if (filterItem.isTypeAutocomplete) {\n if (isObject(filterItem.model)) {\n flattenedParams[filterItem.name] = filterToQueryParam(filterItem.model.value, filterItem.model.name);\n }\n } else if (filterItem.isTypeAutocompleteChips || filterItem.isTypeChips) {\n if (Array.isArray(filterItem.model) && filterItem.model.length) {\n flattenedParams[filterItem.name] = filterItem.model.map((item) => {\n return filterToQueryParam(item.value, item.name);\n }).join(',');\n }\n }\n });\n\n return flattenedParams;\n}\n","export function getRangeName(name: string, range: string) {\n return name.concat(range.charAt(0).toUpperCase()).concat(range.slice(1));\n}\n","import { isEmpty } from '@firestitch/common';\nimport { format, simpleFormat } from '@firestitch/date';\n\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone, isObject, isString } from 'lodash-es';\n\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { getRangeName } from '../../../helpers/get-range-name';\nimport {\n IFilterConfigDateRangeItem,\n IFilterItemDefaultDateRange,\n} from '../../../interfaces/items/date-range.interface';\nimport { BaseItem } from '../base-item';\n\n\nexport abstract class BaseDateRangeItem extends BaseItem<IFilterConfigDateRangeItem> {\n\n public get isTypeDateRange(): boolean {\n return this.type === ItemType.DateRange;\n }\n\n public get isTypeDateTimeRange(): boolean {\n return this.type === ItemType.DateTimeRange;\n }\n\n public get isChipVisible(): boolean {\n return this.model && (this.model.from !== undefined || this.model.to !== undefined);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.from, { zero: true }) && isEmpty(this.model.to, { zero: true }))) {\n value = undefined;\n }\n\n if (isEmpty(value, { zero: true })) {\n return undefined;\n }\n\n let from = value.from;\n let to = value.to;\n\n value = {};\n\n if (from) {\n if (isString(from)) {\n from = parseISO(from);\n }\n\n if (isValid(from) && isDate(from)) {\n value.from = from;\n }\n }\n\n if (to) {\n if (isString(to)) {\n to = parseISO(to);\n }\n\n if (isValid(to) && isDate(to)) {\n value.to = to;\n }\n }\n\n return value;\n }\n\n public get queryObject(): Record<string, Date> {\n const value = this.value || {};\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n\n return {\n [paramFromName]: value.from || undefined,\n [paramToName]: value.to || undefined,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const query = this.queryObject;\n\n return Object.keys(this.queryObject)\n .reduce((acc, key) => {\n acc[key] = query[key] ? simpleFormat(query[key]) : query[key];\n\n return acc;\n }, {});\n }\n\n public getChipsContent(type = null): string {\n const formatTo = this.type === ItemType.DateRange ? 'date' : 'date-time';\n\n if (type === 'from') {\n const from = this.model.from;\n\n return `${format(from, formatTo)}`;\n } else if (type === 'to') {\n const to = this.model.to;\n\n return `${format(to, formatTo)}`;\n }\n }\n\n public clearDateRange(\n type: 'from' | 'to' = null, \n defaultValue: IFilterItemDefaultDateRange = undefined,\n ) {\n if (type === 'from') {\n delete this.model.from;\n\n if (defaultValue?.from) {\n this.model.from = defaultValue.from;\n }\n\n this.model = { ...this.model };\n } else if (type === 'to') {\n delete this.model.to;\n\n if (defaultValue?.to) {\n this.model.to = defaultValue.to;\n }\n\n this.model = { ...this.model };\n } else {\n this.model = defaultValue ? { ...defaultValue } : {};\n }\n }\n\n protected _validateModel() {\n }\n\n public get hasModelValue() {\n return this.model;\n }\n\n protected _setModel(value) {\n if (value) {\n if (value.from && (!isDate(value.from) || !isValid(value.from))) {\n value.from = parseISO(value.from);\n }\n if (value.to && (!isDate(value.to) || !isValid(value.to))) {\n value.to = parseISO(value.to);\n }\n }\n\n super._setModel(value);\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Date From', 'Date To'];\n }\n\n if (!this.model) {\n this.model = this.defaultValue || {};\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = this.defaultValue ?? {};\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './date-range/base-date-range-item';\n\n\nexport class DateRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateRangeItem(config, null, filter);\n }\n\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigDateRangeItem } from '../../interfaces/items/date-range.interface';\n\nimport { BaseDateRangeItem } from './date-range/base-date-range-item';\n\n\nexport class DateTimeRangeItem extends BaseDateRangeItem {\n\n public static create(config: IFilterConfigDateRangeItem, filter: FilterComponent) {\n return new DateTimeRangeItem(config, null, filter);\n }\n\n}\n","import { isEmpty } from '@firestitch/common';\n\nimport { clone, isObject } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport {\n IFilterConfigRangeItem,\n IFilterItemDefaultRange,\n} from '../../interfaces/items/range.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class RangeItem extends BaseItem<IFilterConfigRangeItem> {\n\n public declare options: { scale?: number };\n public declare prefix: string;\n public declare suffix: string;\n \n constructor(\n itemConfig: IFilterConfigRangeItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.options = itemConfig.options;\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigRangeItem, additionalConfig: unknown, filter: FilterComponent) {\n return new RangeItem(config, additionalConfig, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.max, { zero: true }) && isEmpty(this.model.min, { zero: true }))) {\n value = undefined;\n }\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n const paramMinName = getRangeName(name, 'min');\n const paramMaxName = getRangeName(name, 'max');\n\n if (isObject(value)) {\n params[paramMinName] = value.min || undefined;\n params[paramMaxName] = value.max || undefined;\n } else {\n params[paramMinName] = undefined;\n params[paramMaxName] = undefined;\n }\n\n return params;\n }\n\n public get isChipVisible(): boolean {\n return this.model && (this.model.min !== undefined || this.model.max !== undefined);\n }\n\n public getChipsContent(type): string {\n if (type === 'from') {\n const min = this.model.min;\n\n return `${min}`;\n } else if (type === 'to') {\n const max = this.model.max;\n\n return `${max}`;\n }\n }\n\n public clearRange(type: 'from' | 'to' = null, defaultValue: IFilterItemDefaultRange = undefined) {\n if (type === 'from') {\n delete this.model.min;\n\n if (defaultValue?.min) {\n this.model.min = defaultValue.min;\n }\n\n this.model = { ...this.model };\n } else if (type === 'to') {\n delete this.model.max;\n\n if (defaultValue?.max) {\n this.model.max = defaultValue.max;\n }\n\n this.model = { ...this.model };\n } else {\n this.model = defaultValue ? { ...defaultValue } : {};\n }\n }\n\n protected _validateModel() {\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n\n if (!this.model) {\n this.model = this.defaultValue || {};\n }\n }\n}\n","import { isDate, isValid, parseISO } from 'date-fns';\n\nexport function parseDate(value: string) {\n if (value && (!isDate(value) || !isValid(value))) {\n return parseISO(value);\n }\n\n return value;\n}\n","import { isEmpty } from '@firestitch/common';\nimport { simpleFormat } from '@firestitch/date';\nimport { formatPeriodObject } from '@firestitch/datepicker';\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone, isObject, isString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { getRangeName } from '../../helpers/get-range-name';\nimport { parseDate } from '../../helpers/parse-date';\nimport { IFilterConfigWeekItem } from '../../interfaces/items/week.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class WeekItem extends BaseItem<IFilterConfigWeekItem> {\n\n public declare seedDate: Date;\n \n constructor(\n itemConfig: IFilterConfigWeekItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.seedDate = itemConfig.seedDate;\n }\n\n public static create(config: IFilterConfigWeekItem, filter: FilterComponent) {\n return new WeekItem(config, null, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!isObject(this.model) ||\n (isEmpty(this.model.from, { zero: true }) && isEmpty(this.model.to, { zero: true }))) {\n value = undefined;\n }\n\n if (isEmpty(value, { zero: true })) {\n return undefined;\n }\n\n let from = value.from;\n let to = value.to;\n const period = value.period;\n\n value = {};\n\n if (from) {\n if (isString(from)) {\n from = parseISO(from);\n }\n\n if (isValid(from) && isDate(from)) {\n value.from = from;\n }\n }\n\n if (to) {\n if (isString(to)) {\n to = parseISO(to);\n }\n\n if (isValid(to) && isDate(to)) {\n value.to = to;\n }\n }\n\n if (period) {\n value.period = isString(period) ? parseInt(period, 10) : period;\n }\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramToName = getRangeName(name, 'to');\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: value?.from || undefined,\n [paramToName]: value?.to || undefined,\n [paramPeriodName]: value?.period || undefined,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const query = this.queryObject;\n const name = this.name;\n const paramFromName = getRangeName(name, 'from');\n const paramFromValue = query[paramFromName] && simpleFormat(query[paramFromName]) || query[paramFromName];\n const paramToName = getRangeName(name, 'to');\n const paramToValue = query[paramToName] && simpleFormat(query[paramToName]) || query[paramToName];\n const paramPeriodName = `${name}Period`;\n\n return {\n [paramFromName]: paramFromValue,\n [paramToName]: paramToValue,\n [paramPeriodName]: query[paramPeriodName],\n };\n }\n\n public getChipsContent(type = null): string {\n return formatPeriodObject(this.value);\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (value) {\n value.from = parseDate(value.from);\n value.to = parseDate(value.to);\n value.period = parseInt(value.period, 10) || undefined;\n }\n\n super._setModel(value);\n }\n\n protected _init() { }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","import { ItemType } from '../enums/item-type.enum';\n\nimport { getRangeName } from './get-range-name';\nimport { filterFromQueryParam } from './query-param-transformers';\n\nexport function parseItemValueFromStored(item, params) {\n const param = params[item.name];\n\n switch (item.type) {\n case ItemType.Range: {\n const min = params[getRangeName(item.name, 'min')];\n const max = params[getRangeName(item.name, 'max')];\n\n return { min: min, max: max };\n }\n\n case ItemType.DateRange: case ItemType.DateTimeRange: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n\n return { from: from, to: to };\n }\n\n case ItemType.Week: {\n const from = params[getRangeName(item.name, 'from')];\n const to = params[getRangeName(item.name, 'to')];\n const period = params[`${item.name}Period`];\n\n return { from, to, period };\n }\n\n case ItemType.Select: {\n if (item.multiple && !!param) {\n const values = param.split(',');\n\n if (item.isolate) {\n const isolatedValue = Array.isArray(item.isolate.value)\n ? item.isolate.value\n : [item.isolate.value];\n\n item.isolate.enabled = arraysHaveSameElements(isolatedValue, values);\n\n return item.isolate.enabled\n ? isolatedValue\n : values;\n }\n\n return values;\n }\n \n return param;\n \n }\n\n case ItemType.Checkbox: {\n return param === item.checked;\n }\n\n case ItemType.AutoComplete: {\n const filterParts = filterFromQueryParam(param);\n\n return {\n name: filterParts[1],\n value: filterParts[0],\n };\n }\n\n case ItemType.AutoCompleteChips: \n case ItemType.Chips: {\n const filterParts = param.split(',');\n\n return filterParts.reduce((arry, value) => {\n\n const chipParts = filterFromQueryParam(value);\n\n arry.push({\n name: chipParts[1],\n value: chipParts[0],\n });\n\n return arry;\n }, []);\n }\n\n default: {\n return param;\n }\n }\n}\n\nfunction arraysHaveSameElements(arr1: unknown[], arr2: unknown[]): boolean {\n\n arr1 = [...arr1].sort();\n arr2 = [...arr2].sort();\n\n return arr1.some((item) => {\n return arr2.includes(item);\n });\n}\n","import { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { WeekItem } from '../models/items/week-item';\n\nimport { getRangeName } from './get-range-name';\nimport { parseItemValueFromStored } from './parse-item-value-from-stored';\n\n\n/**\n * We need this function because when we store persisted/query/remote filter values\n * it stores with different format, ex.: Range will be stored as RangeFrom && RangeTo\n * and in this case we don't know how to restroe those values.\n *\n * This function do convertation for those kinds of stored values\n *\n * @param params\n * @param items\n * @param paramsCase\n */\nexport function restoreItems(params, items) {\n const result = {};\n\n Object.keys(params)\n .forEach((name) => {\n const item = findItemWidthName(items, name);\n\n if (item) {\n result[item.name] = parseItemValueFromStored(item, params);\n }\n });\n\n return result;\n}\n\nfunction findItemWidthName(items, name) {\n return items\n .find((filterItem) => {\n if (filterItem instanceof RangeItem) {\n return name === getRangeName(filterItem.name, 'min') ||\n name === getRangeName(filterItem.name, 'max') ||\n name === filterItem.name;\n } else if (filterItem instanceof DateRangeItem || filterItem instanceof DateTimeRangeItem) {\n return name === getRangeName(filterItem.name, 'from') ||\n name === getRangeName(filterItem.name, 'to');\n } else if (filterItem instanceof WeekItem) {\n return name === getRangeName(filterItem.name, 'from')\n || name === getRangeName(filterItem.name, 'to')\n || name === `${filterItem.name}Period`;\n }\n\n return filterItem.name === name;\n });\n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../../interfaces/items/autocomplete-chips.interface';\nimport { IFilterConfigAutocompleteItem } from '../../../interfaces/items/autocomplete.interface';\nimport { BaseItem } from '../base-item';\n\ntype AutoCompleteItem = IFilterConfigAutocompleteItem | IFilterConfigAutocompleteChipsItem;\n\nexport abstract class BaseAutocompleteItem<T extends AutoCompleteItem> extends BaseItem<T> {\n\n public search: string;\n\n public declare fetchOnFocus: boolean;\n\n public get valuesFn() {\n return this._valuesFn;\n }\n \n constructor(\n itemConfig: T,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.fetchOnFocus = itemConfig.fetchOnFocus ?? true;\n }\n\n protected _validateModel() {\n //\n }\n\n}\n","import { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteChipsItem } from '../../interfaces/items/autocomplete-chips.interface';\n\nimport { BaseAutocompleteItem } from './autocomplete/base-autocomplete-item';\n\n\nexport class AutocompleteChipsItem\n extends BaseAutocompleteItem<IFilterConfigAutocompleteChipsItem> {\n\n public declare chipImage: string;\n public declare chipIcon: string;\n public declare chipColor: string;\n public declare chipIconColor: string;\n public declare chipBackground: string;\n public declare chipClass: string;\n\n constructor(\n itemConfig: IFilterConfigAutocompleteChipsItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.chipImage = itemConfig.chipImage ?? 'image';\n this.chipIcon = itemConfig.chipIcon;\n this.chipIconColor = itemConfig.chipIconColor;\n this.chipColor = itemConfig.chipColor;\n this.chipBackground = itemConfig.chipBackground;\n this.chipClass = itemConfig.chipClass;\n }\n\n public static create(config: IFilterConfigAutocompleteChipsItem, filter: FilterComponent) {\n return new AutocompleteChipsItem(config, null, filter);\n }\n\n public get value() {\n if (Array.isArray(this.model) && this.model.length === 0) {\n return undefined;\n }\n\n return clone(this.model);\n }\n\n public get queryObject(): Record<string, unknown> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n if (Array.isArray(value)) {\n params[this.name] = value\n .filter((item) => !!item.value)\n .map((item) => item.value)\n .join(',');\n } else {\n params[name] = value;\n }\n\n return params;\n }\n\n public get isChipVisible(): boolean {\n return Array.isArray(this.model) && this.model.length > 0;\n }\n\n public getChipsContent() {\n return this.model\n .reduce((acc, i) => {\n acc.push(i.name);\n\n return acc;\n }, [])\n .join(', ');\n }\n\n protected _init() {\n if (this.model === undefined) {\n this._model = [];\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? [];\n this.search = '';\n }\n\n protected _setModel(value) {\n super._setModel(value || []);\n }\n\n}\n","\nimport { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomplete.interface';\n\nimport { BaseAutocompleteItem } from './autocomplete/base-autocomplete-item';\n\n\nexport class AutocompleteItem extends BaseAutocompleteItem<IFilterConfigAutocompleteItem> {\n\n public static create(config: IFilterConfigAutocompleteItem, filter: FilterComponent) {\n return new AutocompleteItem(config, null, filter);\n }\n\n public get value() {\n let value = clone(this.model);\n\n if (!this.model || this.model.value === undefined) {\n return undefined;\n }\n\n value = this.model.value;\n\n return value;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model ? this.model.name : '';\n }\n\n protected _init() {\n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n this.search = '';\n }\n}\n","import { toString } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigCheckboxItem } from '../../interfaces/items/checkbox.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class CheckboxItem extends BaseItem<IFilterConfigCheckboxItem> {\n\n private declare _checked;\n private declare _unchecked;\n\n constructor(\n itemConfig: IFilterConfigCheckboxItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this._checked = itemConfig.checked ? toString(itemConfig.checked) : 'true';\n this._unchecked = itemConfig.unchecked ? toString(itemConfig.unchecked) : undefined;\n this.defaultValue = itemConfig.default;\n }\n\n public get isTypeCheckbox(): boolean {\n return true;\n }\n\n public get isChipVisible() {\n return this.model;\n }\n\n public get value() {\n return this.model;\n }\n\n public get checked(): boolean {\n return this._checked;\n }\n\n public get unchecked(): boolean {\n return this._unchecked;\n }\n\n public get queryObject(): Record<string, unknown> {\n const params = {};\n params[this.name] = this.model ? this.checked : this.unchecked;\n\n return params;\n }\n\n public getChipsContent(): string {\n return this.label as string;\n }\n\n protected _validateModel() {\n //\n }\n\n public get isQueryParamVisible(): boolean {\n return this.model === true;\n }\n\n protected _init() {\n if (this.model === undefined) {\n this._model = this.defaultValue;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = undefined;\n }\n\n}\n","import { clone } from 'lodash-es';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { IFilterConfigChipsItem } from '../../interfaces/items/chips.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class ChipsItem extends BaseItem<IFilterConfigChipsItem> {\n\n public declare multiple: boolean;\n\n constructor(\n itemConfig: IFilterConfigChipsItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.multiple = itemConfig.multiple ?? true;\n }\n \n public static create(config: IFilterConfigChipsItem, filter: FilterComponent) {\n return new ChipsItem(config, null, filter);\n }\n\n public get isTypeChips(): boolean {\n return true;\n }\n\n public get value() {\n const value = clone(this.model);\n\n if (Array.isArray(value) && value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n\n public get isChipVisible(): boolean {\n return !!this.value;\n }\n\n public get queryObject(): Record<string, unknown> {\n if(!this.value) {\n return {};\n }\n\n const value = this.value\n .map((item) => item.value)\n .join(',');\n\n const name = this.name;\n\n return {\n [name]: value,\n };\n }\n\n public get persistanceObject(): Record<string, string> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = Array.isArray(value) ? value.join(',') : undefined;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model\n .reduce((acc, i) => {\n acc.push(i.name);\n\n return acc;\n }, [])\n .join(', ');\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (Array.isArray(value)) {\n value = value.map((val) => {\n if (isNaN(val)) {\n return val;\n }\n\n return +val;\n\n });\n }\n\n this._model = value;\n }\n\n protected _init() {\n if (!Array.isArray(this.values)) {\n this.values = [];\n }\n\n if (this.model && Array.isArray(this.model) && this.values.length) {\n if (Number.isInteger(this.model[0])) {\n this._model = this.model.map((id) => {\n return this.values.find((value) => value.value === id);\n });\n }\n }\n\n if (this.model === undefined) {\n this._model = [];\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? [];\n }\n\n}\n","export enum ItemDateMode {\n Calendar = 'calendar',\n ScrollMonthYear = 'monthyear',\n ScrollMonthDayYear = 'monthdayyear'\n}\n","import { simpleFormat } from '@firestitch/date';\n\nimport { isDate, isValid, parseISO } from 'date-fns';\nimport { clone } from 'lodash-es';\n\nimport { FilterComponent } from '../../../components/filter/filter.component';\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../../interfaces/items/date.interface';\nimport { BaseItem } from '../base-item';\n\n\nexport abstract class BaseDateItem extends BaseItem<IFilterConfigDateItem> {\n\n public maxYear: number;\n public mode: ItemDateMode;\n \n constructor(\n itemConfig: any,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.maxYear = itemConfig.maxYear;\n this.mode = itemConfig.mode || ItemDateMode.Calendar;\n }\n\n public get value() {\n const value = clone(this.model);\n\n if (!value || !isValid(value) || !isDate(value)) {\n return undefined;\n }\n\n return value;\n }\n\n public get queryObject(): Record<string, Date> {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public get persistanceObject(): Record<string, string> {\n const value = this.queryObject[this.name];\n\n return {\n [this.name]: value ? simpleFormat(value) : undefined,\n };\n }\n\n protected _validateModel() {\n //\n }\n\n protected _setModel(value) {\n if (value) {\n if (!isDate(value) || !isValid(value)) {\n value = parseISO(value);\n }\n }\n\n super._setModel(value);\n }\n\n protected _init() {\n if (!this.label) {\n this.label = ['Min', 'Max'];\n }\n }\n\n}\n","import { format } from '@firestitch/date';\n\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { IFilterConfigDateItem } from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './date/base-date-item';\n\n\nexport class DateItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateItem(config, null, filter);\n }\n\n public getChipsContent(): string {\n let dateFormat = 'date';\n\n if (this.mode === ItemDateMode.ScrollMonthYear) {\n dateFormat = 'full-date-dayless';\n }\n\n return format(this.model, dateFormat);\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","import type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigDateItem,\n} from '../../interfaces/items/date.interface';\n\nimport { BaseDateItem } from './date/base-date-item';\n\n\nexport class DateTimeItem extends BaseDateItem {\n\n public static create(config: IFilterConfigDateItem, filter: FilterComponent) {\n return new DateTimeItem(config, null, filter);\n }\n\n public getChipsContent() { \n return null;\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\n }\n}\n","export function findValue(values, value, children) {\n for (let i = 0; i < values.length; i++) {\n const val = values[i];\n\n if (val[children]) {\n return findValue(val[children], value, children);\n }\n\n if (val.value === value) {\n return val;\n }\n }\n\n return undefined;\n}\n","import type { FilterComponent } from '../../../components/filter/filter.component';\nimport { findValue } from '../../../helpers/find-value';\nimport { IFilterConfigSelectItem } from '../../../interfaces/items/select.interface';\n\nimport { BaseSelectItem } from './base-select-item';\n\n\nexport class SimpleSelectItem extends BaseSelectItem {\n\n constructor(\n itemConfig: IFilterConfigSelectItem,\n _persistedValues: any,\n _filter: FilterComponent,\n ) {\n super(itemConfig, _persistedValues, _filter);\n }\n\n public get value() {\n let value = this.model;\n\n if (value === '__all' || value === undefined) {\n value = undefined;\n }\n\n return value;\n }\n\n public getChipsContent(type = null): string {\n if (this.children) {\n const itemValue = findValue(this.values, this.model, this.children);\n\n return itemValue && itemValue.name;\n }\n const itemValue = this.values.find((val) => val.value === this.model);\n\n if (itemValue) {\n return itemValue.name;\n } else if (this.isolate) {\n return this.isolate.label;\n }\n\n }\n\n public get isChipVisible(): boolean {\n return this.model !== '__all' && this.model !== undefined;\n }\n\n protected _init() {\n super._init();\n\n if (this.model === undefined && this.defaultValue === undefined) {\n this._model = '__all';\n }\n }\n\n protected get isolateOptionNotSelected() {\n const modelValue = this.model;\n const isolate = this.isolate;\n\n return isolate && !isolate.enabled && modelValue?.length === 0;\n }\n\n protected _setModel(value): void {\n if (value) {\n if (!isNaN(value)) {\n value = +value;\n }\n }\n\n super._setModel(value);\n }\n\n protected _validateModel() {\n const item = this.values.find((value) => {\n return value.value == this.model;\n });\n\n const value = item ? item.value : '__all';\n\n if (this._model !== value) {\n this.model = value;\n }\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n super._clearValue(defaultValue);\n\n const value = Array.isArray(this.values) && this.values.some((val) => val.value === '__all')\n ? '__all'\n : undefined;\n\n this.model = defaultValue ?? value;\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport { ItemType } from '../../enums/item-type.enum';\n\nimport { MultipleSelectItem } from './select/multiple-select-item';\nimport { SimpleSelectItem } from './select/simple-select-item';\n\n\nexport class SelectItem {\n\n public readonly type: ItemType.Select;\n\n public static create(config, filter: FilterComponent): SimpleSelectItem | MultipleSelectItem {\n if (config.multiple) {\n return new MultipleSelectItem(config, null, filter);\n }\n\n return new SimpleSelectItem(config, null, filter);\n\n }\n}\n","\nimport type { FilterComponent } from '../../components/filter/filter.component';\nimport {\n IFilterConfigTextItem,\n} from '../../interfaces/items/text.interface';\n\nimport { BaseItem } from './base-item';\n\n\nexport class TextItem extends BaseItem<IFilterConfigTextItem> {\n\n public declare prefix: string;\n public declare suffix: string;\n\n constructor(\n itemConfig: IFilterConfigTextItem,\n protected _additionalConfig: unknown,\n protected _filter: FilterComponent,\n ) {\n super(itemConfig, _additionalConfig, _filter);\n this.prefix = itemConfig.prefix;\n this.suffix = itemConfig.suffix;\n }\n\n public static create(config: IFilterConfigTextItem, filter: FilterComponent) {\n return new TextItem(config, null, filter);\n }\n\n public get value() {\n return this.model ? this.model : undefined;\n }\n\n public get queryObject() {\n const value = this.value;\n const name = this.name;\n const params = {};\n\n params[name] = value;\n\n return params;\n }\n\n public getChipsContent() {\n return this.model;\n }\n\n protected _validateModel() {\n //\n }\n\n protected _init() {\n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? '';\n }\n}\n","import type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { IFilterConfigDateRangeItem } from '../interfaces/items/date-range.interface';\nimport { IFilterConfigDateItem } from '../interfaces/items/date.interface';\nimport { IFilterConfigTextItem } from '../interfaces/items/text.interface';\nimport { IFilterConfigWeekItem } from '../interfaces/items/week.interface';\nimport { AutocompleteChipsItem } from '../models/items/autocomplete-chips-item';\nimport { AutocompleteItem } from '../models/items/autocomplete-item';\nimport { CheckboxItem } from '../models/items/checkbox-item';\nimport { ChipsItem } from '../models/items/chips-item';\nimport { DateItem } from '../models/items/date-item';\nimport { DateRangeItem } from '../models/items/date-range-item';\nimport { DateTimeItem } from '../models/items/date-time-item';\nimport { DateTimeRangeItem } from '../models/items/date-time-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { SelectItem } from '../models/items/select-item';\nimport { TextItem } from '../models/items/text-item';\nimport { WeekItem } from '../models/items/week-item';\n\n\nexport function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent) {\n switch (item.type) {\n case ItemType.Select: {\n return SelectItem.create(item, filter);\n }\n\n case ItemType.Chips: {\n return ChipsItem.create(item, filter);\n }\n\n case ItemType.Range: {\n return RangeItem.create(item, config, filter);\n }\n\n case ItemType.DateRange: {\n return DateRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.DateTimeRange: {\n return DateTimeRangeItem.create(item as IFilterConfigDateRangeItem, filter);\n }\n\n case ItemType.Date: {\n return DateItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.Week: {\n return WeekItem.create(item as IFilterConfigWeekItem, filter);\n }\n\n case ItemType.DateTime: {\n return DateTimeItem.create(item as IFilterConfigDateItem, filter);\n }\n\n case ItemType.AutoComplete: {\n return AutocompleteItem.create(item, filter);\n }\n\n case ItemType.AutoCompleteChips: {\n return AutocompleteChipsItem.create(item, filter);\n }\n\n case ItemType.Checkbox: {\n return new CheckboxItem(item, null, filter);\n }\n\n case ItemType.Keyword: case ItemType.Text: {\n return TextItem.create(item as IFilterConfigTextItem, filter);\n }\n }\n}\n","export enum ActionMode {\n Button = 'button',\n SelectButton = 'selectButton',\n Menu = 'menu',\n File = 'file',\n}\n","import { ButtonStyle } from './button-style';\n\nexport enum ActionType {\n Basic = ButtonStyle.Basic,\n Raised = ButtonStyle.Raised,\n Icon = ButtonStyle.Icon,\n Fab = ButtonStyle.Fab,\n MiniFab = ButtonStyle.MiniFab,\n Flat = ButtonStyle.Flat,\n Stroked = ButtonStyle.Stroked, \n}\n","export enum ButtonStyle {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab',\n Flat = 'flat',\n Stroked = 'stroked',\n}\n","export enum MenuActionMode {\n Menu = 'menu',\n File = 'file',\n Group = 'group',\n}\n","export enum PickerViewType {\n Date = \"date\",\n DateTime = \"datetime\",\n Time = \"time\",\n Week = \"week\",\n MonthRange = \"monthrange\"\n}\n","import { ButtonStyle } from '../enums';\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { ChangeFn, FilterSort, FsFilterAutoReload, Sort } from '../interfaces/config.interface';\nimport { IFilterSavedFiltersConfig } from '../interfaces/saved-filters.interface';\n\nimport {\n FilterButton,\n FilterConfig,\n FsFilterPersistance,\n IFilterConfigItem,\n} from './../interfaces/config.interface';\n\nexport const SortByField = 'sortName';\nexport const SortDirectionField = 'sortDirection';\n\n\nexport class FsFilterConfig {\n\n public load = true;\n public persist: FsFilterPersistance = false;\n public savedFilters: IFilterSavedFiltersConfig;\n public inline = false;\n public autofocus = false;\n public chips = false;\n public buttonStyle: ButtonStyle;\n public sortValues: any[] = null;\n public sort: Sort = null;\n public queryParam = false;\n public init: (query?: any, sort?: FilterSort | null, filter?) => void;\n public change: ChangeFn;\n public reload: ChangeFn;\n public autoReload: FsFilterAutoReload;\n public clear: ChangeFn;\n public sortChange: ChangeFn;\n public reloadWhenConfigChanged: boolean;\n public button: FilterButton;\n public items: IFilterConfigItem[];\n public actions: FsFilterAction[];\n public namespace: string; // for persistance\n\n constructor(data: FilterConfig = {}) {\n this._init(data);\n }\n\n private _init(data: FilterConfig = {}) {\n Object.assign(this, {\n load: data.load ?? true,\n persist: data.persist,\n savedFilters: data.savedFilters,\n inline: data.inline ?? false,\n autofocus: data.autofocus ?? false,\n chips: data.chips ?? false,\n sortValues: data.sorts,\n sort: data.sort,\n queryParam: data.queryParam ?? false,\n init: data.init,\n change: data.change,\n reload: data.reload,\n autoReload: data.autoReload,\n clear: data.clear,\n sortChange: data.sortChange,\n case: data.case ?? 'camel',\n reloadWhenConfigChanged: data.reloadWhenConfigChanged,\n items: data.items,\n actions: data.actions,\n buttonStyle: data.buttonStyle || ButtonStyle.Raised,\n });\n\n if (this.persist) {\n if (typeof this.persist === 'object') {\n if (this.persist.name) {\n this.namespace = this.persist.name;\n }\n }\n }\n\n if (this.clear === undefined) {\n this.clear = () => { \n //\n };\n }\n\n this._initButton(data);\n }\n\n private _initButton(data: FilterConfig): void {\n this.button = data.button;\n if (!this.button) {\n this.button = {};\n }\n\n if (this.button.label === undefined) {\n this.button.label = 'Filters';\n }\n\n if (this.button.icon === undefined) {\n this.button.icon = 'filterOutline';\n }\n\n if (this.button.style === undefined) {\n this.button.style = ButtonStyle.Raised;\n }\n\n if (this.button.color === undefined) {\n this.button.color = 'default';\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, forkJoin, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, finalize, takeUntil } from 'rxjs/operators';\n\nimport { pickBy } from 'lodash-es';\n\nimport type { FilterComponent } from '../components/filter/filter.component';\nimport { ItemType } from '../enums/item-type.enum';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n FilterSort,\n IFilterConfigItem,\n SortItem,\n} from '../interfaces/config.interface';\nimport { IFilterExternalParams } from '../interfaces/external-params.interface';\nimport { ISortingChangeEvent } from '../interfaces/filter.interface';\nimport { IFilterConfigSelectItem } from '../interfaces/items/select.interface';\nimport { FsFilterConfig, SortByField, SortDirectionField } from '../models/filter-config';\nimport { BaseItem } from '../models/items/base-item';\nimport { BaseDateRangeItem } from '../models/items/date-range/base-date-range-item';\nimport { RangeItem } from '../models/items/range-item';\nimport { MultipleSelectItem } from '../models/items/select/multiple-select-item';\nimport { SimpleSelectItem } from '../models/items/select/simple-select-item';\nimport { TextItem } from '../models/items/text-item';\n\n\ninterface IValueAsQuery {\n onlyPresented?: boolean;\n items?: BaseItem<IFilterConfigItem>[];\n persisted?: boolean;\n}\n\n@Injectable()\nexport class FsFilterItemsStore implements OnDestroy {\n\n public sortByItem: BaseItem<IFilterConfigItem> = null;\n public sortDirectionItem: BaseItem<IFilterConfigItem> = null;\n public keywordItem: TextItem = null;\n public filter: FilterComponent;\n\n private _ready$ = new BehaviorSubject(false);\n private _visibleItems$ = new BehaviorSubject<BaseItem<IFilterConfigItem>[]>([]);\n private _items = new Map<string, BaseItem<IFilterConfigItem>>();\n\n private _itemsValuesLoaded = false;\n private _hasKeyword = false;\n private _config: FsFilterConfig;\n\n private _itemsChange$ = new Subject();\n private _destroy$ = new Subject<void>();\n\n constructor(\n ) {\n this._lazyInit();\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return Array.from(this._items.values());\n }\n\n public get itemNames(): string[] {\n return this.items.map((item) => item.name);\n }\n\n public get visibleItems(): BaseItem<IFilterConfigItem>[] {\n return this._visibleItems$.getValue();\n }\n\n public set visibleItems(items: BaseItem<IFilterConfigItem>[]) {\n this._visibleItems$.next(items);\n }\n\n public get visibleItems$(): Observable<BaseItem<IFilterConfigItem>[]> {\n return this._visibleItems$.asObservable();\n }\n\n public get hasKeyword(): boolean {\n return this._hasKeyword;\n }\n\n public get itemsChange$() {\n return this._itemsChange$.pipe(debounceTime(30));\n }\n\n public get ready$() {\n return this._ready$.asObservable();\n }\n\n public ngOnDestroy() {\n this.destroyItems();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config) {\n this._config = config;\n this.initItems(config.items);\n }\n\n public getItemByName(name: string): BaseItem<IFilterConfigItem> {\n return this._items.get(name);\n }\n\n public initItems(items: IFilterConfigItem[]) {\n this._itemsValuesLoaded = false;\n if (Array.isArray(items)) {\n this._createItems(items);\n }\n }\n\n public filtersClear() {\n this.items.forEach((item) => {\n if (item instanceof RangeItem) {\n item.clearRange(null, item.defaultValue);\n } else if (item instanceof BaseDateRangeItem) {\n item.clearDateRange(null, item.defaultValue);\n } else {\n item.clear(item.defaultValue);\n }\n });\n\n if (this.sortByItem) {\n if (this._config.sort) {\n this.sortByItem.model = this._config.sort.value;\n } else {\n this.sortByItem.clear(this.sortByItem.defaultValue);\n }\n }\n\n if (this.sortDirectionItem) {\n if (this._config.sort) {\n this.sortDirectionItem.model = this._config.sort.direction;\n } else {\n this.sortDirectionItem.clear(this.sortDirectionItem.defaultValue);\n }\n }\n\n this.keywordItem?.clear();\n }\n\n public loadAsyncValues() {\n this.items\n .filter((item) => item.hasPendingValues)\n .forEach((item) => item.loadAsyncValues());\n }\n\n public loadAsyncDefaults(): void {\n // default values can be asynchronous, and we must load them if there is no persisted value instead\n const defaultValuesToBeLoaded = this.items\n .filter((item) => {\n return item.defaultValueFn\n && (item.persistedValue === null || item.persistedValue === undefined);\n });\n\n // special hack for isolate multiple select\n // values for this type of select must be preloaded\n // Read more in class MultipleSelectItem._init()\n const valuesToBeLoaded = this.items\n .filter((item) => {\n return (item instanceof MultipleSelectItem) && item.hasPendingValues && item.isolate;\n });\n\n if (defaultValuesToBeLoaded.length > 0 || valuesToBeLoaded.length > 0) {\n forkJoin(\n [\n ...defaultValuesToBeLoaded\n .map((item) => item.loadDefaultValue()),\n\n ...valuesToBeLoaded\n .map((item) => {\n item.loadAsyncValues();\n\n return item.loading$\n .pipe();\n }),\n ],\n )\n .pipe(\n finalize(() => {\n this._ready$.next(true);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n } else {\n this._ready$.next(true);\n }\n }\n\n public getSort(): FilterSort {\n let sortBy = this.getSortByValue();\n sortBy = sortBy === '__all' ? null : sortBy;\n\n let sortDirection = this.getSortDirectionValue();\n sortDirection = sortDirection === '__all' ? null : sortDirection;\n\n return {\n value: sortBy,\n direction: sortDirection,\n };\n }\n\n public getSortByValue() {\n return this.sortByItem ? this.sortByItem.model : null;\n }\n\n public getSortDirectionValue() {\n return this.sortDirectionItem ? this.sortDirectionItem.model : null;\n }\n\n public updateSort(sort: ISortingChangeEvent) {\n if (sort.sortBy) {\n this.sortByItem.model = sort.sortBy;\n }\n\n if (sort.sortDirection) {\n this.sortDirectionItem.model = sort.sortDirection;\n }\n }\n\n public values(onlyPresented = false): Record<string, unknown> {\n return this.items\n .reduce((acc, item) => {\n const value = item.value;\n\n if (!onlyPresented || value !== null) {\n acc[item.name] = value;\n }\n\n return acc;\n }, {});\n }\n\n public valuesAsQuery({\n onlyPresented = true,\n items = null,\n persisted = false,\n }: IValueAsQuery = {}): Record<string, unknown> {\n const params = {};\n\n (items || this.items)\n .forEach((filterItem: BaseItem<any>) => {\n const values = persisted\n ? filterItem.persistanceObject\n : filterItem.queryObject;\n\n Object.assign(params, values);\n });\n\n if (onlyPresented) {\n return pickBy(params, (val) => {\n return val !== undefined;\n });\n }\n\n return params;\n }\n\n public init(p: IFilterExternalParams) {\n this.items\n .forEach((item) => {\n item.initValues(p[item.name]);\n });\n\n this._initSortingItems(p);\n this.loadAsyncDefaults();\n this._subscribeToItemsChanges();\n }\n\n public updateItemsWithValues(values: IFilterExternalParams) {\n this.items\n .forEach((item) => {\n if (values[item.name]) {\n item.model = values[item.name];\n } else {\n if (item instanceof RangeItem) {\n item.clearRange(null, item.defaultValue);\n } else if (item instanceof BaseDateRangeItem) {\n item.clearDateRange(null, item.defaultValue);\n } else {\n item.clear();\n }\n }\n });\n\n if (this.sortByItem) {\n this.sortByItem.clear();\n }\n if (this.sortDirectionItem) {\n this.sortDirectionItem.clear();\n }\n }\n\n public updateSortingItemsValues(items: SortItem[]) {\n if (!this.sortByItem) {\n return;\n }\n\n this.sortByItem.values = items;\n }\n\n public destroyItems() {\n this.items\n .forEach((item) => item.destroy());\n this.sortByItem?.destroy();\n this.sortDirectionItem?.destroy();\n\n this._items.clear();\n this.sortByItem = null;\n this.sortDirectionItem = null;\n }\n\n /**\n * Some items might need to load async values before they will be shown\n */\n public prepareItems() {\n if (!this._itemsValuesLoaded) {\n this._itemsValuesLoaded = true;\n\n this.loadAsyncValues();\n }\n }\n\n public updateItemsVisiblity(): void {\n this.visibleItems = this.items\n .filter((item) => !item.isTypeKeyword && !item.hide);\n }\n\n private _createItems(items: IFilterConfigItem[]) {\n this._items = new Map(\n items\n .filter((item) => !item.disable)\n .filter((item) => {\n if (this._items.has(item.name)) {\n throw Error('Filter init error. Items name must be unique.');\n }\n\n return true;\n })\n .map((item) => {\n const filterItem = createFilterItem(item, { }, this.filter);\n\n if (filterItem.type === ItemType.Keyword) {\n this._hasKeyword = true;\n }\n\n this._items.set(item.name, filterItem);\n\n return [item.name, filterItem];\n }),\n );\n\n this._createSortingItems();\n }\n\n private _subscribeToItemsChanges() {\n this.items\n .forEach((item) => {\n item.valueChange$\n .pipe(\n takeUntil(item.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(item);\n });\n });\n\n if (this._config.sortValues?.length) {\n this.sortByItem.valueChange$\n .pipe(\n takeUntil(this.sortByItem.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(this.sortByItem);\n });\n\n this.sortDirectionItem.valueChange$\n .pipe(\n takeUntil(this.sortDirectionItem.destroy$),\n )\n .subscribe(() => {\n this._itemsChange$.next(this.sortDirectionItem);\n });\n }\n }\n\n private _lazyInit(): void {\n this.ready$\n .pipe(\n filter((state) => state),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateItemsVisiblity();\n this._setKeywordItem();\n });\n }\n\n private _initSortingItems(p: IFilterExternalParams): void {\n if (this.sortByItem && this.sortDirectionItem) {\n this.sortByItem.initValues(p[this.sortByItem.name]);\n this.sortDirectionItem.initValues(p[this.sortDirectionItem.name]);\n }\n }\n\n private _createSortingItems(): void {\n if (this._config.sortValues?.length > 0) {\n const sortByItem = {\n name: SortByField,\n type: ItemType.Select,\n label: 'Sort by',\n values: this._config.sortValues,\n } as IFilterConfigSelectItem;\n\n\n if (this._config.sort && this._config.sort.value) {\n sortByItem.default = this._config.sort.value;\n }\n\n this.sortByItem = new SimpleSelectItem(\n sortByItem,\n null,\n this.filter,\n );\n\n const sortDirectionItem = {\n name: SortDirectionField,\n type: ItemType.Select,\n label: 'Sort direction',\n values: [\n { name: 'Ascending', value: 'asc' },\n { name: 'Descending', value: 'desc' },\n ],\n } as IFilterConfigSelectItem;\n\n if (this._config.sort && this._config.sort.direction) {\n sortDirectionItem.default = this._config.sort.direction;\n }\n\n this.sortDirectionItem = new SimpleSelectItem(\n sortDirectionItem,\n null,\n this.filter,\n );\n }\n }\n\n private _setKeywordItem() {\n this.keywordItem = this\n .items\n .find((item) => item.isTypeKeyword) as TextItem;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { restoreItems } from '../../helpers/restore-items';\nimport { FsFilterItemsStore } from '../items-store.service';\n\n\n@Injectable()\nexport class QueryParamsController {\n\n private _enabled = false;\n private _fetchedParams: Record<string, any>;\n\n constructor(\n private _route: ActivatedRoute,\n private _itemsStore: FsFilterItemsStore,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled;\n }\n\n public get fetchedParams() {\n return this._fetchedParams;\n }\n\n public init(enabled: boolean) {\n this._enabled = enabled;\n\n if (this.enabled) {\n this.fetchFromQueryParams();\n }\n }\n\n public writeStateToQueryParams(params) {\n if (this._enabled) { \n this._replaceState(params);\n }\n }\n\n /**\n * Parse query and update filter values\n */\n public fetchFromQueryParams() {\n const items = [\n ...this._itemsStore.items,\n this._itemsStore.sortByItem,\n this._itemsStore.sortDirectionItem,\n ]\n .filter((item) => !!item);\n\n this._fetchedParams = restoreItems(\n this._route.snapshot.queryParams,\n items,\n );\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .forEach((name) => {\n if(data[name] === undefined || data[name] === null) {\n url.searchParams.delete(name);\n } else {\n url.searchParams.set(name,data[name]);\n }\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { FsStore } from '@firestitch/store';\n\nimport { FsFilterPersistance, FsFilterPersistanceConfig } from '../../interfaces';\nimport { FsFilterConfig } from '../../models/filter-config';\n\n\n@Injectable()\nexport class QueryPersistanceController {\n\n public queryEnabled = false;\n\n private _store = inject(FsStore);\n private _name: string;\n private _data: any = {};\n private _location = inject(Location);\n private readonly _storeKey = 'fs-filter-persist';\n\n public setConfig(filterConfig: FsFilterConfig, inDialog: boolean) {\n const config = this._initConfig(filterConfig.persist, inDialog);\n\n if(config) {\n this.queryEnabled = config.persistQuery;\n this._name = config.name;\n this._data = this._get() || {};\n }\n }\n\n public setQuery(value: any) {\n this._set('query', value);\n }\n\n public getQuery() {\n return this._data.query || {};\n }\n\n private _set(key: string, value: any) {\n this._data[key] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this._name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this._name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsFilterPersistance, inDialog: boolean): FsFilterPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n persistQuery: !inDialog || !!persistanceConfig.name,\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsFilterPersistance): FsFilterPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n\nimport { IFilterExternalParams } from '../../../interfaces/external-params.interface';\nimport {\n FilterRemoteSave,\n IFilterSavedFilter,\n} from '../../../interfaces/saved-filters.interface';\n\n\n@Component({\n templateUrl: './saved-filter-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterSavedFilterEditComponent {\n\n public filterParams: IFilterExternalParams;\n public saveAsFilter: IFilterSavedFilter | 'new' = 'new';\n public savedFilters: IFilterSavedFilter[];\n public savedFilterName = '';\n\n private _saveCallback: FilterRemoteSave;\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private _dialogRef: MatDialogRef<FsFilterSavedFilterEditComponent>,\n ) {\n this.savedFilters = this.data.savedFilters;\n this._saveCallback = this.data.saveCallback;\n }\n\n public save = () => {\n const savedFilter: IFilterSavedFilter = this.saveAsFilter === 'new' ? \n {\n name: this.savedFilterName,\n active: true,\n filters: this.data.params,\n } : {\n ...this.saveAsFilter,\n filters: this.data.params,\n };\n\n return this._saveCallback(savedFilter)\n .pipe(\n tap((filter) => {\n this._dialogRef.close(filter);\n }),\n takeUntil(this._destroy$),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <h1 mat-dialog-title>\n Save filter\n </h1>\n <div mat-dialog-content>\n <mat-form-field>\n <mat-label>Save as</mat-label>\n <mat-select [(ngModel)]=\"saveAsFilter\" name=\"saveAs\">\n <mat-option value=\"new\">New filter</mat-option>\n <ng-container *ngIf=\"savedFilters.length\">\n <mat-optgroup label=\"Saved filters\">\n <ng-container *ngFor=\"let filter of savedFilters\">\n <mat-option [value]=\"filter\">{{ filter.name }}</mat-option>\n </ng-container>\n </mat-optgroup>\n </ng-container>\n </mat-select>\n </mat-form-field>\n <br>\n <mat-form-field *ngIf=\"saveAsFilter === 'new'\">\n <mat-label>Name</mat-label>\n <input matInput name=\"filter-name\" [(ngModel)]=\"savedFilterName\" required>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button \n mat-button\n type=\"submit\"\n color=\"primary\">\n {{ saveAsFilter === 'new' ? 'Create' : 'Save' }}\n </button>\n\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </div>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport {\n FsFilterSavedFilterEditComponent,\n} from '../../components/saved-filter/saved-filter-edit/saved-filter-edit.component';\nimport { buildQueryParams } from '../../helpers/build-query-params';\nimport { restoreItems } from '../../helpers/restore-items';\nimport { IFilterExternalParams } from '../../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n IFilterSavedFiltersConfig,\n} from '../../interfaces/saved-filters.interface';\nimport { FsFilterItemsStore } from '../items-store.service';\n\n\n@Injectable()\nexport class SavedFiltersController implements OnDestroy {\n\n protected _config: IFilterSavedFiltersConfig;\n\n private _savedFilters$ = new BehaviorSubject<IFilterSavedFilter[]>([]);\n private _activeFilter$ = new BehaviorSubject<IFilterSavedFilter>(null);\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _dialog: MatDialog,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilters$.getValue();\n }\n\n public set savedFilters(filters: IFilterSavedFilter[]) {\n this._savedFilters$.next(filters);\n }\n\n public get savedFilters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilter(): IFilterSavedFilter {\n return this._activeFilter$.getValue();\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._activeFilter$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n public get activeFilterData(): IFilterExternalParams {\n return this._activeFilter$.getValue()?.filters;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public init(\n remoteParamsConfig: IFilterSavedFiltersConfig,\n ): void {\n if (!remoteParamsConfig) {\n this._setEnabledStatus(false);\n\n return;\n }\n this._setEnabledStatus(true);\n\n this._config = remoteParamsConfig;\n }\n\n public initSavedFilters(filters: IFilterSavedFilter[]): void {\n filters = [...filters];\n filters.forEach((savedFilter) => {\n savedFilter.filters = restoreItems(\n savedFilter.filters,\n this._itemsStore.items,\n );\n });\n\n this.savedFilters = filters;\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n return this._config.load()\n .pipe(\n tap((response) => {\n this.initSavedFilters(response);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._config.save(savedFilter);\n }\n\n public order(savedFilters: IFilterSavedFilter[]): Observable<IFilterSavedFilter[]> {\n return this._config.order(savedFilters)\n .pipe(\n tap(() => {\n this.savedFilters = [\n ...savedFilters,\n ];\n }),\n );\n }\n\n public delete(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n return this._config.delete(savedFilter)\n .pipe(\n tap(() => {\n this.savedFilters = this.savedFilters\n .filter((f) => f.id !== savedFilter.id);\n }),\n );\n }\n\n public setActiveFilter(savedFilter: IFilterSavedFilter): void {\n if (savedFilter) {\n const existingFilter = this.savedFilters\n .find((f) => f.id === savedFilter.id);\n\n if (!existingFilter) {\n throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);\n }\n\n this._activeFilter$.next(existingFilter);\n } else {\n this._activeFilter$.next(null);\n }\n }\n\n public openSavedFilterEditDialog(): void {\n const params = buildQueryParams(\n this._itemsStore.valuesAsQuery(),\n this._itemsStore.items,\n );\n\n const dialogConfig = {\n data: {\n params: params,\n savedFilters: this.savedFilters,\n saveCallback: this.save.bind(this),\n },\n };\n\n this._dialog\n .open(FsFilterSavedFilterEditComponent, dialogConfig)\n .beforeClosed()\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe((updatedFilter: IFilterSavedFilter | null) => {\n if (updatedFilter) {\n // get already saved related filter object\n const savedFilter = this.savedFilters\n .find((f) => f.id === updatedFilter.id);\n\n // restore values from query string\n updatedFilter.filters = restoreItems(\n updatedFilter.filters,\n this._itemsStore.items,\n );\n\n\n if (savedFilter) {\n Object.assign(savedFilter, updatedFilter);\n } else {\n this.resetActiveFilter();\n this.savedFilters = [\n ...this.savedFilters,\n updatedFilter,\n ];\n }\n\n this.updateActiveFilter();\n }\n });\n }\n\n public updateActiveFilter(): void {\n // Lookup active filter\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this.setActiveFilter(acitveFilter);\n }\n }\n\n public resetActiveFilter(): void {\n // Reset all previously activated filters\n this.savedFilters.forEach((savedFilter) => {\n savedFilter.active = false;\n });\n\n this.setActiveFilter(null);\n }\n\n private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { buildQueryParams } from '../helpers/build-query-params';\nimport { IFilterExternalParams, IFilterSavedFilter } from '../interfaces';\nimport { FsFilterConfig } from '../models/filter-config';\n\nimport {\n QueryParamsController, QueryPersistanceController, SavedFiltersController,\n} from './external-params';\nimport { FsFilterItemsStore } from './items-store.service';\n\n\n@Injectable()\nexport class ExternalParamsController implements OnDestroy {\n\n protected _init;\n\n private _pending$ = new BehaviorSubject(false);\n private _shouldResetSavedFilters = true;\n private _config: FsFilterConfig;\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _persistanceStore: QueryPersistanceController,\n private _queryParams: QueryParamsController,\n private _savedFilters: SavedFiltersController,\n ) { }\n\n public get params(): IFilterExternalParams {\n let result: IFilterExternalParams = {};\n\n if (this._persistanceStore.queryEnabled) {\n result = {\n ...result, \n ...this._persistanceStore.getQuery(),\n };\n }\n\n if (this._savedFilters.enabled && this._savedFilters.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this._itemsStore.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilters.activeFilterData,\n };\n } else if (this._queryParams.enabled) {\n result = {\n ...result, \n ...this._queryParams.fetchedParams,\n };\n }\n\n return result;\n }\n\n public get pending(): boolean {\n return this._pending$.getValue();\n }\n\n public get pending$(): Observable<boolean> {\n return this._pending$.asObservable();\n }\n\n public get savedFiltersController(): SavedFiltersController {\n return this._savedFilters;\n }\n\n public get savedFiltersEnabled(): boolean {\n return this._savedFilters.enabled;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config) {\n this._config = config;\n\n this._initQueryParams();\n this._initSavedFilters();\n this.initItems();\n }\n\n public setActiveSavedFilter(savedFilter: IFilterSavedFilter) {\n this.savedFiltersController.setActiveFilter(savedFilter);\n\n if (savedFilter) {\n this.reloadFiltersWithValues(savedFilter.filters, false);\n }\n }\n\n public reloadFiltersWithValues(params: IFilterExternalParams, shouldResetSavedFilters = true) {\n this._shouldResetSavedFilters = shouldResetSavedFilters;\n this._itemsStore.updateItemsWithValues(params);\n\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public initItems(): void {\n this._pending$.next(true);\n if (this._savedFilters.enabled) {\n this._savedFilters\n .load()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._savedFilters.updateActiveFilter();\n this._initItemsValues();\n this._listenAndResetSavedFilters();\n this._pending$.next(false);\n });\n } else {\n this._initItemsValues();\n this._pending$.next(false);\n }\n\n this._listenItemsChange();\n }\n\n public _initItemsValues() {\n this._itemsStore.init(this.params);\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public fetchQueryParams(): void {\n this._initQueryParams();\n this._itemsStore.updateItemsWithValues(this.params);\n }\n\n private _initQueryParams() {\n this._queryParams.init(this._config.queryParam);\n }\n\n private _initSavedFilters() {\n this._savedFilters.init(this._config.savedFilters);\n }\n\n private _listenItemsChange() {\n this._itemsStore.ready$\n .pipe(\n filter((v) => v),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n\n this._itemsStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n }\n\n private _listenAndResetSavedFilters(): void {\n this._itemsStore\n .itemsChange$\n .pipe(\n filter(() => !!this.savedFiltersController.activeFilter),\n switchMap(() => {\n const shouldReset = this._shouldResetSavedFilters;\n\n this._shouldResetSavedFilters = true;\n\n return of(shouldReset);\n }),\n filter((shouldReset) => shouldReset),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.savedFiltersController.resetActiveFilter();\n });\n }\n\n private _saveQueryParams() {\n\n const params = buildQueryParams(\n this._itemsStore\n .valuesAsQuery({\n onlyPresented: false,\n items: this._itemsStore.items,\n persisted: true,\n }),\n this._itemsStore.items,\n );\n \n this._itemsStore.items\n .filter((item) => item.queryParamsDisabled || !item.isQueryParamVisible)\n .forEach((item) => {\n params[item.name] = undefined;\n });\n\n this._queryParams.writeStateToQueryParams(params);\n }\n\n private _savePersistedParams() {\n if(this._persistanceStore.queryEnabled) {\n const targetItems = this._itemsStore.items\n .filter((item) => !item.persistanceDisabled)\n .filter((item) => item.value !== undefined)\n .reduce((acc, item) => {\n acc[item.name] = item.model;\n\n return acc;\n }, {});\n\n this._persistanceStore.setQuery(targetItems);\n }\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { MenuActionMode } from '../enums';\nimport {\n FsFilterActionClickFn, FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterMenuActionFileItem,\n IFsFilterMenuActionGroupItem,\n IFsFilterMenuActionItem, IFsFilterMenuActionLink,\n} from '../interfaces/action.interface';\n\n\nexport class ActionMenuItem {\n\n public icon: string;\n public label: string;\n public mode: MenuActionMode;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public click: FsFilterActionClickFn;\n public routerLink: IFsFilterMenuActionLink;\n public items: ActionMenuItem[] = [];\n\n private _isGroup = false;\n private _showFn: FsFilterActionShowFn;\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem = {},\n private _parent?: ActionMenuItem,\n ) {\n this._init(config);\n }\n\n public get isGroup(): boolean {\n return this._isGroup;\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || !this.isGroup) {\n this._visible$.next(visible);\n\n return;\n }\n\n const numberOfVisibleChildren = this.items\n .reduce((acc, item) => {\n item.updateVisibility();\n\n if (item.visible) {\n acc++;\n }\n\n return acc;\n }, 0);\n\n this._visible$.next(!!numberOfVisibleChildren);\n }\n\n private _initFile(config: IFsFilterMenuActionFileItem): void {\n this.multiple = config.multiple;\n this.accept = config.accept;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.imageQuality = config.imageQuality;\n this.fileSelected = config.fileSelected;\n }\n\n private _init(\n config: IFsFilterMenuActionGroupItem | IFsFilterMenuActionItem | IFsFilterMenuActionFileItem,\n ) {\n this.label = config.label;\n this.icon = config.icon;\n this.mode = config.mode || MenuActionMode.Menu;\n this._showFn = config.show;\n\n if (this.mode === MenuActionMode.File) {\n this._initFile(config as IFsFilterMenuActionFileItem);\n }\n\n if ('items' in config) {\n this._isGroup = true;\n\n if (Array.isArray(config.items)) {\n this.items = config\n .items\n .map((item) => new ActionMenuItem(item, this));\n }\n\n this.updateVisibility();\n } else {\n this.click = config.click;\n this.routerLink = config.link;\n\n if (!this._parent) {\n this.updateVisibility();\n }\n }\n }\n}\n","import { ThemePalette } from '@angular/material/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ButtonStyle } from '../enums';\nimport { ActionMode } from '../enums/action-mode.enum';\nimport {\n FsFilterAction,\n FsFilterActionClickFn,\n FsFilterActionDisabledFn,\n FsFilterActionShowFn,\n FsFilterFileActionErrorFn,\n FsFilterFileActionSelectFn,\n IFsFilterFileAction,\n IFsFilterSelectButtonAction,\n} from '../interfaces/action.interface';\n\nimport { ActionMenuItem } from './action-menu-item.model';\nimport { FsFilterConfig } from './filter-config';\n\n\nexport class Action {\n\n public primary = true;\n public icon: string;\n public iconPlacement: 'left' | 'right';\n public label: string;\n public value: any;\n public menu: boolean;\n public color: ThemePalette;\n public customize: boolean;\n public className: string;\n public click: FsFilterActionClickFn;\n public style: ButtonStyle;\n public tabIndex: number;\n public fileSelected: FsFilterFileActionSelectFn;\n public fileError: FsFilterFileActionErrorFn;\n public multiple: boolean;\n public accept: string;\n public tooltip: string;\n public minWidth: number;\n public minHeight: number;\n public maxWidth: number;\n public maxHeight: number;\n public imageQuality: number;\n public change: (value: any) => void;\n public values: any[];\n public mode: ActionMode;\n public isReorderAction = false;\n public deselect = false;\n public classArray: string[] = [];\n public items: ActionMenuItem[] = [];\n\n private _visible$ = new BehaviorSubject<boolean>(true);\n private _disabled$ = new BehaviorSubject<boolean>(false);\n private _showFn: FsFilterActionShowFn;\n private _disabledFn: FsFilterActionDisabledFn;\n\n constructor(filterConfig: FsFilterConfig, actionConfig: FsFilterAction = {}) {\n this._init(filterConfig, actionConfig);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public set disabled(value: boolean) {\n this._disabled$.next(value);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public updateVisibility(): void {\n const visible = this._showFn ? this._showFn() : true;\n\n if (!visible || this.mode !== ActionMode.Menu) {\n this._visible$.next(visible);\n\n return;\n }\n\n const hasVisibleChildren = this.items.some((item) => item.visible);\n this._visible$.next(hasVisibleChildren);\n }\n\n public updateDisabledState(): void {\n if (this._disabledFn) {\n this.disabled = this._disabledFn();\n }\n }\n\n private _init(filterConfig: FsFilterConfig, config: FsFilterAction = {}): void {\n config.mode = config.mode ?? ActionMode.Button;\n this._initCore(filterConfig, config);\n\n switch (config.mode) {\n case ActionMode.Button: {\n this.customize = config.customize;\n this.click = config.click ?? (() => {\n // do nothing\n });\n this._disabledFn = config.disabled;\n\n this.updateDisabledState();\n } break;\n\n case ActionMode.Menu: {\n if (config.items && Array.isArray(config.items)) {\n this.items = config.items.map((item) => new ActionMenuItem(item));\n }\n } break;\n\n case ActionMode.SelectButton: {\n this._initSelectButton(config);\n } break;\n\n case ActionMode.File: {\n this._initFile(config);\n } break;\n }\n\n this.updateVisibility();\n }\n\n private _initCore(filterConfig: FsFilterConfig, config: FsFilterAction): void {\n this.primary = config.primary ?? true;\n this.color = config.color;\n this.tooltip = config.tooltip;\n this.label = config.label;\n this.mode = config.mode;\n this.icon = config.icon;\n this.iconPlacement = config.iconPlacement;\n this._showFn = config.show;\n this.tabIndex = config.tabIndex ?? 0;\n this.menu = config.menu;\n\n if (!this.style) {\n this.style = config.icon && !config.label ?\n ButtonStyle.Icon :\n (config.style || filterConfig.buttonStyle || ButtonStyle.Raised);\n\n if(!this.primary && this.style === ButtonStyle.Flat) {\n this.style = ButtonStyle.Stroked;\n }\n }\n\n if (config.className) {\n this.className = config.className;\n this.classArray = this.className\n .split(' ');\n }\n\n if (!this.primary && this.mode === ActionMode.SelectButton) {\n this.color = null; // should be null because of styles logic in select-button\n }\n\n if (this.primary) {\n this.color = 'primary';\n }\n\n }\n\n private _initSelectButton(config: IFsFilterSelectButtonAction): void {\n this.values = config.values;\n this.value = config.default;\n this.change = config.change;\n this.deselect = config.deselect ?? false;\n }\n\n private _initFile(config: IFsFilterFileAction): void {\n this.fileSelected = config.select;\n this.fileError = config.error;\n this.accept = config.accept;\n this.imageQuality = config.imageQuality;\n this.minWidth = config.minWidth;\n this.minHeight = config.minHeight;\n this.maxWidth = config.maxWidth;\n this.maxHeight = config.maxHeight;\n this.click = config.click ?? (() => {\n //\n });\n this._disabledFn = config.disabled;\n\n if ((config).multiple !== undefined) {\n this.multiple = (config).multiple;\n }\n\n this.updateDisabledState();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-action-button',\n templateUrl: './action-button.component.html',\n styleUrl: './action-button.component.scss',\n host: { class: 'action-button' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionButtonComponent {\n\n public ButtonStyle = ButtonStyle;\n\n @Input()\n public action: Action;\n\n}\n","<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.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 <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\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 <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-action-kebab-actions',\n styleUrls: ['./action-kebab-actions.component.scss'],\n templateUrl: './action-kebab-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionKebabActionsComponent {\n\n @Input()\n public kebabActions: Action[];\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n}\n","<button \n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\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)=\"actionClick(subAction, $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)=\"actionClick(childAction, $event)\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template \n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template \n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { ActionMode, ButtonStyle } from '../../enums';\nimport { Action } from '../../models/action.model';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterActionsComponent {\n\n @Input()\n public kebabActions: Action[] = [];\n\n @Input()\n public actions: Action[] = [];\n\n public ButtonStyle = ButtonStyle;\n public ActionMode = ActionMode;\n\n public actionChange(action: Action, value: any, selectButton: MatSelect): void {\n if(action.change) {\n action.change(value); \n\n if(action.deselect) {\n selectButton.writeValue(null);\n }\n }\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n}\n","<ng-container *ngFor=\"let action of actions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <ng-container *ngSwitchCase=\"ActionMode.Button\">\n <fs-filter-action-button\n [action]=\"action\"\n class=\"action\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.Menu\">\n <fs-filter-action-button\n class=\"action\"\n [action]=\"action\"\n [fsMenuTriggerFor]=\"someRef\"\n fsPopover\n [enabled]=\"!!action.tooltip\"\n [text]=\"action.tooltip\">\n </fs-filter-action-button>\n <fs-menu\n #someRef\n class=\"action\">\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-container [ngSwitch]=\"subAction.mode\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">\n {{ subAction.icon }}\n </mat-icon>\n {{ subAction.label }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template\n fs-menu-file-item\n [multiple]=\"subAction.multiple\"\n [accept]=\"subAction.accept || '*'\"\n [minWidth]=\"subAction.minWidth\"\n [minHeight]=\"subAction.minHeight\"\n [imageWidth]=\"subAction.maxWidth\"\n [imageHeight]=\"subAction.maxHeight\"\n (select)=\"subAction.fileSelected($event)\"\n [hidden]=\"(subAction.visible$ | async) === false\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">\n {{ subAction.icon }}\n </mat-icon>\n {{ subAction.label }}\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-container [ngSwitch]=\"childAction.mode\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"(childAction.visible$ | async) === false\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">\n {{ childAction.icon }}\n </mat-icon>\n {{ childAction.label }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template\n fs-menu-file-item\n [multiple]=\"childAction.multiple\"\n [accept]=\"childAction.accept || '*'\"\n [minWidth]=\"childAction.minWidth\"\n [minHeight]=\"childAction.minHeight\"\n [imageWidth]=\"childAction.maxWidth\"\n [imageHeight]=\"childAction.maxHeight\"\n (select)=\"childAction.fileSelected($event)\"\n [hidden]=\"(childAction.visible$ | async) === false\">\n <mat-icon *ngIf=\"childAction.icon\">\n {{ childAction.icon }}\n </mat-icon>\n {{ childAction.label }}\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </fs-menu>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.SelectButton\">\n <mat-select\n class=\"action action-select-button\"\n [buttonType]=\"'basic'\"\n [ngClass]=\"{\n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n }\"\n [placeholder]=\"action.label\"\n [(ngModel)]=\"action.value\"\n [color]=\"action.color\"\n (ngModelChange)=\"actionChange(action, $event, selectButton)\"\n fsSelectButton\n #selectButton\n [deselectOnChange]=\"action.deselect\">\n <mat-option\n *ngFor=\"let item of action.values\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"ActionMode.File\">\n <fs-file\n class=\"action 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<ng-container *ngIf=\"kebabActions?.length\">\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { BaseItem } from '../../models/items/base-item';\n\n\n@Component({\n selector: 'fs-filter-chip-content',\n templateUrl: './filter-chip-content.component.html',\n styleUrls: ['./filter-chip-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipContentComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n @Input() public type: 'from' | 'to';\n\n public content;\n\n private _destroy$ = new Subject();\n\n constructor(private _cdRef: ChangeDetectorRef) {\n }\n\n public ngOnInit() {\n this.listenValueChangesForRanges();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public listenValueChangesForRanges() {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.content = this._getContent();\n this._cdRef.detectChanges();\n });\n }\n\n private _getContent() {\n const result = this.item.getChipsContent(this.type);\n\n if (this.item.chipLabel !== undefined) {\n if (this.item.chipLabel === '') {\n return `${result}`;\n } \n if (Array.isArray(this.item.chipLabel)) {\n const label = getLabelFromArray(this.item.chipLabel, this.type);\n\n return `${label}: ${result}`;\n }\n \n return `${this.item.chipLabel}: ${result}`;\n \n \n } \n if (Array.isArray(this.item.label)) {\n const label = getLabelFromArray(this.item.label, this.type);\n\n return `${label}: ${result}`;\n } \n if (this.item.isTypeCheckbox) {\n return result;\n }\n \n return `${this.item.label}: ${result}`;\n \n \n }\n}\n\nfunction getLabelFromArray(labelArr, type) {\n if (type === 'from' && labelArr[0]) {\n return `${labelArr[0]}`;\n } else if (type === 'to' && labelArr[1]) {\n return `${labelArr[1]}`;\n }\n \n return '';\n \n}\n","{{ content }}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Injectable()\nexport class FocusControllerService {\n\n private _focusOn = new BehaviorSubject<{ item: BaseItem<any>, type: 'from' | 'to'}>(null);\n\n constructor() {}\n\n public get focusOn$() {\n return this._focusOn.asObservable();\n }\n\n public click(item: BaseItem<any>, type: 'from' | 'to' = null) {\n this._focusOn.next({ item, type });\n }\n\n public listenFocusFor$(targetItem: BaseItem<any>, targetType: 'from' | 'to' = null) {\n return this._focusOn\n .pipe(\n filter((event) => !!event),\n filter(({ item, type }) => {\n return targetItem === item && targetType === type;\n }),\n tap(() => this.clearFocus()),\n );\n }\n\n public clearFocus() {\n this._focusOn.next(null);\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { combineLatest, Observable, Subject, timer } from 'rxjs';\nimport { map, mapTo, startWith, takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../interfaces/config.interface';\nimport { BaseItem } from '../../models/items/base-item';\nimport { DateRangeItem } from '../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport { RangeItem } from '../../models/items/range-item';\nimport { FocusControllerService } from '../../services/focus-controller.service';\n\n\n@Component({\n selector: 'fs-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrls: ['./filter-chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n\n public rangeItem: boolean;\n\n public chipDelayedRender$: Observable<boolean>;\n\n private _chipRenderTimer$ = timer(500)\n .pipe(\n mapTo(true),\n );\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _focusController: FocusControllerService,\n ) {\n }\n\n public ngOnInit() {\n this.rangeItem = this.item.isTypeDateRange\n || this.item.isTypeRange\n || this.item.isTypeDateTimeRange;\n\n this.listenValueChangesForRanges();\n\n if (this.item.hasPendingValues) {\n this.item.loadAsyncValues(false);\n\n this._initDelayRender();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focusOnItem(type = null) {\n this._focusController.click(this.item, type);\n }\n\n public removeItem(event: MouseEvent, type = null) {\n if (this.item instanceof RangeItem) {\n this.item.clearRange(type);\n } else if (this.item instanceof DateRangeItem || this.item instanceof DateTimeRangeItem) {\n this.item.clearDateRange(type);\n } else {\n this.item.clear();\n }\n }\n\n public listenValueChangesForRanges() {\n this.item.valueChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n private _initDelayRender() {\n this.chipDelayedRender$ = combineLatest([\n this.item.values$,\n this._chipRenderTimer$.pipe(startWith(false)),\n ])\n .pipe(\n map(([values, timerValue]) => {\n return !!values || timerValue;\n }),\n );\n }\n}\n","<ng-container *ngIf=\"!item.hasPendingValues || (chipDelayedRender$ | async)\">\n <ng-container *ngIf=\"rangeItem; else defaultChip\">\n <fs-chip\n *ngIf=\"item.model?.min || item.model?.from\"\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem('from')\"\n (removed)=\"removeItem($event, 'from')\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item, type: 'from' }\">\n </ng-template>\n </fs-chip>\n <fs-chip\n *ngIf=\"item.model?.max || item.model?.to\"\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem('to')\"\n (removed)=\"removeItem($event, 'to')\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item, type: 'to' }\">\n </ng-template>\n </fs-chip>\n </ng-container>\n <ng-template #defaultChip>\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n (click)=\"focusOnItem()\"\n (removed)=\"removeItem($event)\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </fs-chip>\n </ng-template>\n <ng-template\n #chipContent\n let-item=\"item\"\n let-type=\"type\">\n <ng-container *ngIf=\"!item.hasPendingValues && !item.loading; else lodaingValues\">\n <fs-filter-chip-content\n [item]=\"item\"\n [type]=\"type\">\n </fs-filter-chip-content>\n </ng-container>\n <ng-template #lodaingValues>\n Loading...\n </ng-template>\n </ng-template>\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ItemType } from '../../enums';\nimport { BaseItem } from '../../models/items/base-item';\n\n\n@Component({\n selector: 'fs-filter-chips',\n templateUrl: './filter-chips.component.html',\n styleUrls: ['./filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterChipsComponent {\n\n @Input() public filters: BaseItem<any>[];\n\n public ItemType = ItemType;\n}\n","<ng-container *ngFor=\"let item of filters\">\n <ng-container *ngIf=\"(item.value$ | async) !== undefined && item.type !== ItemType.Keyword\">\n @if (item.isChipVisible) {\n <fs-filter-chip [item]=\"item\"></fs-filter-chip>\n }\n </ng-container>\n</ng-container>","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n\n@Component({\n selector: 'fs-filter-drawer-actions',\n templateUrl: './filter-drawer-actions.component.html',\n styleUrls: ['./filter-drawer-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterDrawerActionsComponent {\n\n @Output('clear')\n private _clear = new EventEmitter<void>();\n\n @Output('done')\n private _done = new EventEmitter<void>();\n\n public done(): void {\n this._done.emit();\n }\n\n public clear(): void {\n this._clear.emit();\n }\n \n}\n","<a mat-button color=\"primary\" (click)=\"done()\">Done</a>\n<a mat-button (click)=\"clear()\">Clear</a>\n\n\n","import { InjectionToken } from '@angular/core';\n\nexport const FILTER_DRAWER_DATA = new InjectionToken<any>('fs.filter-drawer-data');\n","import { InjectionToken } from '@angular/core';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<any>('fs.filter-drawer-overlay');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n Input,\n KeyValueDiffer,\n KeyValueDiffers, OnChanges, OnDestroy,\n SimpleChanges,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { IFilterConfigItem } from '../../../interfaces/config.interface';\nimport { BaseItem } from '../../../models/items/base-item';\n\n\n@Component({\n selector: 'base-item',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseItemComponent<T extends BaseItem<IFilterConfigItem>>\nimplements DoCheck, OnChanges, OnDestroy {\n\n @Input()\n public set item(value: T) {\n this._item = value;\n }\n\n public get item(): T {\n return this._item;\n }\n\n @Input()\n public inline = false;\n\n public label!: string;\n\n protected _item: T;\n protected _kvDiffer: KeyValueDiffer<string, any>;\n\n private _destroy$ = new Subject();\n private _debouncer$ = new Subject();\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n this._kvDiffer = this._kvDiffers.find(this.item || {}).create();\n this.listenWithDebounce();\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$.asObservable();\n }\n\n public destroy() {\n return this._destroy$.asObservable();\n }\n\n public ngDoCheck(): void {\n if (this._kvDiffer) {\n const changes = this._kvDiffer.diff(this.item);\n\n if (changes) {\n this._cd.detectChanges();\n }\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.item) {\n this.label = Array.isArray(this.item.label) ? this.item.label[0] : this.item.label;\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public listenWithDebounce() {\n this._debouncer$\n .pipe(\n debounceTime(150),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.item.valueChanged();\n });\n }\n\n public itemChange() {\n this._debouncer$.next(null);\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, Optional, Self,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { FsAutocompleteComponent } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsComponent } from '@firestitch/autocomplete-chips';\nimport {\n DateRangePickerFromComponent, DateRangePickerToComponent,\n FsDatePickerComponent,\n FsDateScrollPickerComponent,\n} from '@firestitch/datepicker';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ItemDateMode } from '../../enums/item-date-mode.enum';\nimport { ItemType } from '../../enums/item-type.enum';\nimport { FocusControllerService } from '../../services/focus-controller.service';\n\n\n@Directive({\n selector: '[fsFilterFocusTrigger]',\n})\nexport class FocusToItemDirective implements OnInit, OnDestroy {\n\n @Input('fsFilterFocusTrigger')\n private _item;\n\n @Input('focusTargetType')\n private _focusTargetType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _el: ElementRef,\n private _focusController: FocusControllerService,\n @Optional() @Self() private _targetSelect: MatSelect,\n @Optional() @Self() private _targetDate: FsDatePickerComponent,\n @Optional() @Self() private _targetDateScroll: FsDateScrollPickerComponent,\n @Optional() @Self() private _targetDateRangeFrom: DateRangePickerFromComponent,\n @Optional() @Self() private _targetDateRangeTo: DateRangePickerToComponent,\n @Optional() @Self() private _targetAutocomplete: FsAutocompleteComponent,\n @Optional() @Self() private _targetAutocompleteChips: FsAutocompleteChipsComponent,\n ) {}\n\n public ngOnInit(): void {\n this._focusController\n .listenFocusFor$(this._item, this._focusTargetType)\n .pipe(\n delay(500),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._focus();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _focus() {\n switch (this._item.type) {\n case ItemType.Select: {\n this._targetSelect.open();\n } break;\n\n case ItemType.Text: case ItemType.Range: {\n this._el.nativeElement.focus();\n } break;\n\n case ItemType.Date: {\n if (this._item.mode === ItemDateMode.Calendar) {\n this._targetDate.open();\n } else {\n this._targetDateScroll.open();\n }\n } break;\n case ItemType.DateRange: {\n if (this._focusTargetType === 'from') {\n this._targetDateRangeFrom.open();\n } else {\n this._targetDateRangeTo.open();\n }\n } break;\n\n case ItemType.AutoComplete: {\n this._targetAutocomplete.focus();\n } break;\n\n case ItemType.AutoCompleteChips: {\n this._targetAutocompleteChips.focus();\n } break;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\n@Component({\n selector: 'filter-item-select-groups',\n templateUrl: './groups.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectGroupsComponent {\n\n @ViewChild('select', { static: true }) public select: MatSelect;\n @Input() public item;\n\n constructor(public cd: ChangeDetectorRef) {}\n\n public compare(o1, o2) {\n return o1 == o2;\n }\n\n public markForCheck() {\n this.cd.markForCheck();\n }\n}\n","<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","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Pipe({\n name: 'fsFilterIsolateValues',\n})\nexport class FsFilterIsolateValues implements PipeTransform {\n transform(values: BaseItem<any>[], isolate) {\n if (!isolate) {\n return values;\n }\n\n return values.filter((value) => {\n return value.value !== isolate.value;\n });\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { SimpleSelectItem } from '../../../../models/items/select/simple-select-item';\n\n\n@Component({\n selector: 'filter-item-select-simple',\n templateUrl: './simple.component.html',\n styleUrls: ['./simple.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectSimpleComponent {\n\n @Input() public item: SimpleSelectItem;\n\n @ViewChild('select', { static: true }) \n public select: MatSelect;\n\n constructor(\n private _cd: ChangeDetectorRef,\n ) {}\n\n public changed() {\n if (this.item.isolate) {\n this.item.isolate.enabled = false;\n }\n }\n\n public isolateChange(filter) {\n filter.model = filter.isolate.enabled ? filter.isolate.value : null;\n }\n\n public markForCheck() {\n this._cd.markForCheck();\n }\n}\n","<mat-form-field [ngClass]=\"{ isolate: !!item.isolate }\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n #select\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n (ngModelChange)=\"changed()\">\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</mat-form-field>\n@if (item.isolate) {\n <mat-checkbox\n (change)=\"isolateChange(item)\"\n [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">\n {{ item.isolate.label }}\n </span>\n </mat-checkbox>\n}","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { MultipleSelectItem } from '../../../../models/items/select/multiple-select-item';\n\n\n@Component({\n selector: 'filter-item-select-multiple',\n templateUrl: './multiple.component.html',\n styleUrls: ['./multiple.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectMultipleComponent {\n\n @Input()\n public item: MultipleSelectItem;\n\n @ViewChild('select', { static: true })\n public select: MatSelect;\n\n constructor(\n private _cd: ChangeDetectorRef,\n ) {}\n\n public changed() {\n\n if (this.item.isolate) {\n\n this.item.isolate.enabled = false;\n\n if (this.item.multiple && Array.isArray(this.item.model)) {\n const index = this.item.model.indexOf(this.item.isolate.value);\n\n if (index > -1) {\n this.item.model.splice(index, 1);\n }\n }\n }\n }\n\n public close() {\n this.select.close();\n }\n\n public markForCheck() {\n this._cd.markForCheck();\n }\n\n public isolateChange(filter) {\n if (filter.isolate.enabled) {\n filter.model = filter.multiple ? [filter.isolate.value] : filter.isolate.value;\n } else {\n if (filter.multiple) {\n filter.model = filter.defaultValue ? filter.defaultValue : [];\n } else {\n filter.model = filter.defaultValue ? filter.defaultValue : null;\n }\n }\n }\n}\n","<mat-form-field [ngClass]=\"{ isolate: item.isolate }\">\n <mat-label>\n {{ item.label }}\n </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 <mat-hint>\n @if (item.isolate) {\n <mat-checkbox\n (change)=\"isolateChange(item)\"\n [(ngModel)]=\"item.isolate.enabled\">\n <span class=\"checkbox-label\">\n {{ item.isolate.label }}\n </span>\n </mat-checkbox>\n }\n </mat-hint>\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n KeyValueDiffers,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { BaseSelectItem } from '../../../models/items/select/base-select-item';\nimport { MultipleSelectItem } from '../../../models/items/select/multiple-select-item';\nimport { SimpleSelectItem } from '../../../models/items/select/simple-select-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\nimport { SelectMultipleComponent } from './multiple/multiple.component';\nimport { SelectSimpleComponent } from './simple/simple.component';\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent \n extends BaseItemComponent<BaseSelectItem> \n implements DoCheck, OnChanges {\n\n @ViewChild('selectItem')\n public selectedItem: SelectSimpleComponent | SelectMultipleComponent;\n // For case when we have multiple selection with __all option\n // If _all has been selected than we must disable all other items\n public allItemsOptionSelected = false;\n\n public get multipleSelectItem(): MultipleSelectItem {\n return this.item as MultipleSelectItem;\n }\n\n public get simpleSelectItem(): SimpleSelectItem {\n return this.item as SimpleSelectItem;\n }\n\n public values$: Observable<unknown[]>;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n \n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.item) {\n this.values$ = this.item.values$ as Observable<unknown[]>;\n }\n }\n\n public ngDoCheck() {\n if (this._kvDiffer) {\n const changes = this._kvDiffer.diff(this.item);\n\n if (changes) {\n this._cd.markForCheck();\n\n if (this.selectedItem) {\n this.selectedItem.markForCheck();\n }\n }\n }\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers\n} from '@angular/core';\n\nimport { ChipsItem } from '../../../models/items/chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: [ './chips.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipsComponent extends BaseItemComponent<ChipsItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public modelChange() {\n this.itemChange();\n }\n\n public compareFn(modelValue, chipValue) {\n return String(modelValue.value) === String(chipValue.value);\n }\n}\n","<ng-template [ngIf]=\"item.values?.length\">\n <fs-label-field>\n <fs-label>{{item.label}}</fs-label>\n <fs-chips \n [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n <fs-chip \n *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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\n\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { TextItem } from '../../../models/items/text-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextComponent extends BaseItemComponent<TextItem> implements OnInit {\n\n public textControl = new UntypedFormControl();\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit(): void {\n this._listenControlValueChanges();\n this._listenModelChanges();\n }\n\n private _listenControlValueChanges(): void {\n this.textControl.valueChanges\n .pipe(\n distinctUntilChanged(),\n debounceTime(200),\n takeUntil(this.destroy$),\n )\n .subscribe((value) => {\n this.item.model = value;\n });\n }\n\n private _listenModelChanges(): void {\n this._item.value$\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.textControl.setValue(this.item.model, { emitEvent: false });\n });\n }\n\n}\n","<mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <span\n matTextPrefix\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [formControl]=\"textControl\"\n [fsFilterFocusTrigger]=\"item\">\n <span\n matSuffix\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n</mat-form-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit\n} from '@angular/core';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { WeekItem } from '../../../models/items/week-item';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WeekComponent extends BaseItemComponent<WeekItem> implements OnInit {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {}\n}\n","<mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <input \n matInput\n fsDateWeekPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, ElementRef,\n KeyValueDiffers, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RangeItem } from '../../../models/items/range-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeComponent extends BaseItemComponent<RangeItem> implements OnInit {\n\n @ViewChild('from', { static: true })\n public from: ElementRef;\n\n @ViewChild('to', { static: true })\n public to;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit(): void {\n this.listenChanges();\n }\n\n public listenChanges() {\n const fromListener = fromEvent(this.from.nativeElement, 'keyup')\n .pipe(\n distinctUntilChanged(),\n );\n\n const toListener = fromEvent(this.to.nativeElement, 'keyup')\n .pipe(\n distinctUntilChanged(),\n );\n\n merge(fromListener, toListener)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.itemChange();\n });\n }\n}\n","<div class=\"form-field\">\n <mat-form-field class=\"filter-range-min\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <span\n matTextPrefix\n class=\"text-prefix\"\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n <span\n matSuffix\n class=\"text-suffix\"\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n </mat-form-field>\n <mat-form-field class=\"filter-range-max\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <span\n matTextPrefix\n class=\"text-prefix\"\n *ngIf=\"item.prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n <span\n matSuffix\n class=\"text-suffix\"\n *ngIf=\"item.suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n </mat-form-field>\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { AutocompleteItem } from '../../../models/items/autocomplete-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompleteComponent extends BaseItemComponent<AutocompleteItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public displayWith = (data) => {\n return data ? data.name : data;\n };\n\n public fetch = (keyword): Observable<any> => {\n return this.item.valuesFn(keyword, this.item.filter) as Observable<any>;\n };\n}\n","<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.showClear\"\n name=\"item.name\">\n <ng-template fsAutocompleteTemplate let-data=\"data\">\n {{data.name}}\n </ng-template>\n</fs-autocomplete>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\nimport { remove as arrayRemove } from '@firestitch/common';\n\nimport { AutocompleteChipsItem } from '../../../models/items/autocomplete-chips-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-autocompletechips',\n templateUrl: './autocompletechips.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompletechipsComponent extends BaseItemComponent<AutocompleteChipsItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public addAutocompleteChipItem(event) {\n if (event.data && this.item.model.indexOf(event.data.value) === -1) {\n this.item.model.push(event.data);\n this.itemChange();\n }\n }\n\n public removeAutocompleteChipItem(event) {\n arrayRemove(this.item.model, { value: event.data.value });\n this.itemChange();\n }\n\n public clearAutocompleteChipItem() {\n this.item.clear();\n this.itemChange();\n }\n\n public fetch = (keyword) => {\n return this.item.valuesFn(keyword, this.item.filter);\n };\n\n public compareItems(item1, item2): boolean {\n return item1?.value === item2?.value;\n }\n}\n","<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 [allowText]=\"false\"\n [label]=\"label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.showClear\"\n [removable]=\"item.showClear\"\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>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit,\n} from '@angular/core';\n\nimport { ItemDateMode } from '../../../enums/item-date-mode.enum';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\nimport type { DateItem } from '../../../models/items/date-item';\nimport type { DateTimeItem } from '../../../models/items/date-time-item';\nimport type { BaseDateItem } from '../../../models/items/date/base-date-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends BaseItemComponent<DateItem | DateTimeItem> implements OnInit {\n\n public viewType = PickerViewType.Date;\n\n public itemDateMode = ItemDateMode;\n public showYear = true;\n public showMonth = true;\n public showDay = true;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {\n this.viewType = this.item.type === ItemType.DateTime ? PickerViewType.DateTime : PickerViewType.Date;\n\n if ((this.item as BaseDateItem).mode === ItemDateMode.ScrollMonthYear) {\n this.showDay = false;\n }\n }\n}\n","@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field>\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"item\"\n [(ngModel)]=\"item.model\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.showClear\"\n [name]=\"item.name\">\n </mat-form-field>\n}","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers, OnInit\n} from '@angular/core';\n\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { ItemType } from '../../../enums/item-type.enum';\nimport { DateRangeItem } from '../../../models/items/date-range-item';\nimport { DateTimeRangeItem } from '../../../models/items/date-time-range-item';\nimport { PickerViewType } from '../../../enums/picker-view-type.enum';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends BaseItemComponent<DateRangeItem | DateTimeRangeItem> implements OnInit {\n\n public viewType = PickerViewType.Date;\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef\n ) {\n super(_kvDiffers, _cd);\n }\n\n public ngOnInit() {\n if (this.item.type === ItemType.DateTimeRange) {\n this.viewType = PickerViewType.DateTime;\n } else {\n this.viewType = PickerViewType.Date;\n }\n }\n}\n","<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.showClear\"\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.showClear\"\n [view]=\"viewType\"\n name=\"date_to\">\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n} from '@angular/core';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent extends BaseItemComponent<CheckboxItem> {\n\n constructor(\n protected _kvDiffers: KeyValueDiffers,\n protected _cd: ChangeDetectorRef,\n ) {\n super(_kvDiffers, _cd);\n }\n \n}\n","<fs-label-field>\n <mat-checkbox\n [(ngModel)]=\"item.model\"\n [name]=\"item.name\">\n {{ item.label }}\n </mat-checkbox>\n</fs-label-field>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ItemType } from '../../enums/item-type.enum';\nimport type { AutocompleteChipsItem } from '../../models/items/autocomplete-chips-item';\nimport type { AutocompleteItem } from '../../models/items/autocomplete-item';\nimport type { BaseItem } from '../../models/items/base-item';\nimport type { CheckboxItem } from '../../models/items/checkbox-item';\nimport type { ChipsItem } from '../../models/items/chips-item';\nimport type { DateItem } from '../../models/items/date-item';\nimport type { DateRangeItem } from '../../models/items/date-range-item';\nimport type { DateTimeItem } from '../../models/items/date-time-item';\nimport type { DateTimeRangeItem } from '../../models/items/date-time-range-item';\nimport type { RangeItem } from '../../models/items/range-item';\nimport type { BaseSelectItem } from '../../models/items/select/base-select-item';\nimport type { TextItem } from '../../models/items/text-item';\nimport type { WeekItem } from '../../models/items/week-item';\n\n\n@Component({\n selector: 'filter-item',\n templateUrl: './filter-item.component.html',\n styleUrls: ['./filter-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterItemComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<any>;\n\n public itemType = ItemType;\n\n public get textItem(): TextItem {\n return this.item as TextItem;\n }\n\n public get chipsItem(): ChipsItem {\n return this.item as ChipsItem;\n }\n\n public get baseSelectItem(): BaseSelectItem {\n return this.item as BaseSelectItem;\n }\n\n public get rangeItem(): RangeItem {\n return this.item as RangeItem;\n }\n\n public get autocompleteItem(): AutocompleteItem {\n return this.item as AutocompleteItem;\n }\n\n public get autocompleteChipsItem(): AutocompleteChipsItem {\n return this.item as AutocompleteChipsItem;\n }\n\n public get dateItem(): DateItem {\n return this.item as DateItem;\n }\n\n public get dateRangeItem(): DateRangeItem {\n return this.item as DateRangeItem;\n }\n\n public get dateTimeItem(): DateTimeItem {\n return this.item as DateTimeItem;\n }\n\n public get dateTimeRangeItem(): DateTimeRangeItem {\n return this.item as DateTimeRangeItem;\n }\n\n public get weekItem(): WeekItem {\n return this.item as WeekItem;\n }\n\n public get checkboxItem(): CheckboxItem {\n return this.item as CheckboxItem;\n }\n\n private _destroy$ = new Subject<void>();\n\n constructor(private _cdRef: ChangeDetectorRef) { }\n\n public ngOnInit(): void {\n this.item.value$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n}\n","<div class=\"filter filter-{{ item.type }}\">\n\n <ng-container [ngSwitch]=\"item.type\">\n <filter-item-text \n class=\"interface\"\n *ngSwitchCase=\"itemType.Text\"\n [item]=\"textItem\">\n </filter-item-text>\n\n <filter-item-select \n class=\"interface\"\n *ngSwitchCase=\"itemType.Select\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n\n <filter-item-chips \n class=\"interface\"\n *ngSwitchCase=\"itemType.Chips\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n\n <filter-item-range \n class=\"interface interface-range\"\n *ngSwitchCase=\"itemType.Range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n\n <filter-item-autocomplete \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoComplete\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n\n <filter-item-autocompletechips \n class=\"interface\"\n *ngSwitchCase=\"itemType.AutoCompleteChips\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.Date\"\n [item]=\"dateItem\">\n </filter-item-date>\n\n <filter-item-date \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTime\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateRange\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n\n <filter-item-date-range \n class=\"interface interface-date\"\n *ngSwitchCase=\"itemType.DateTimeRange\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n\n <filter-item-week \n class=\"interface\"\n *ngSwitchCase=\"itemType.Week\"\n [item]=\"weekItem\">\n </filter-item-week>\n\n <filter-item-checkbox \n class=\"interface interface-checkbox\"\n *ngSwitchCase=\"itemType.Checkbox\"\n [item]=\"checkboxItem\">\n </filter-item-checkbox>\n </ng-container>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { Observable } from 'rxjs';\n\nimport { FILTER_DRAWER_DATA } from '../../injectors/filter-drawer-data';\nimport { FILTER_DRAWER_OVERLAY } from '../../injectors/filter-drawer-overlay';\nimport { BaseItem } from '../../models/items/base-item';\nimport { ExternalParamsController } from '../../services/external-params-controller.service';\nimport { FsFilterItemsStore } from '../../services/items-store.service';\n\ntype Item = BaseItem<any>;\n\n@Component({\n templateUrl: './filter-drawer.component.html',\n styleUrls: ['./filter-drawer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterDrawerComponent {\n\n @Input() public inline = false;\n\n public windowDesktop = false;\n\n protected _clear: () => void;\n protected _done: () => void;\n\n constructor(\n @Inject(FILTER_DRAWER_OVERLAY) private _overlayRef: OverlayRef,\n @Inject(FILTER_DRAWER_DATA) private _data,\n public externalParams: ExternalParamsController,\n protected _cd: ChangeDetectorRef,\n protected _itemsStore: FsFilterItemsStore,\n ) {\n this._itemsStore.prepareItems();\n\n this._clear = this._data.clear;\n this._done = this._data.done;\n\n this.updateWindowWidth();\n }\n\n @HostListener('window:resize')\n public updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n public get items$(): Observable<Item[]> {\n return this._itemsStore.visibleItems$;\n }\n\n public get sortItem(): Item {\n return this._itemsStore.sortByItem;\n }\n\n public get sortDirectionItem(): Item {\n return this._itemsStore.sortDirectionItem;\n }\n\n public clear() {\n this._clear();\n }\n\n public done() {\n this._done();\n this._overlayRef.detach();\n }\n\n public backdropClick() {\n this.done();\n }\n}\n","<div class=\"filters\">\n <div class=\"filters-wrap\">\n\n <div class=\"filter-by\">\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n <span class=\"text\">Filters</span>\n </div>\n\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(externalParams.pending$ | async) !== true\">\n <filter-item \n *ngFor=\"let filterItem of items$ | async\"\n class=\"filter-group\"\n [item]=\"filterItem\">\n </filter-item>\n\n <ng-container *ngIf=\"sortItem && sortItem.values && sortItem.values.length > 0\">\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortItem\">\n </filter-item>\n <filter-item \n class=\"filter-group sort\"\n [item]=\"sortDirectionItem\">\n </filter-item>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <fs-filter-drawer-actions \n class=\"filter-actions\"\n *ngIf=\"(externalParams.pending$ | async) !== true\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n </div>\n</div>\n<div class=\"backdrop\" *ngIf=\"!windowDesktop\" (click)=\"backdropClick()\"></div>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { FsFilterAction } from '../interfaces/action.interface';\nimport { Action } from '../models/action.model';\nimport { FsFilterConfig } from '../models/filter-config';\n\n\n@Injectable()\nexport class ActionsController implements OnDestroy {\n\n private _visible$ = new BehaviorSubject(false);\n private _actions$ = new BehaviorSubject<Action[]>([]);\n private _menuActions$ = new BehaviorSubject<Action[]>([]);\n private _destroy$ = new Subject<void>();\n private _config: FsFilterConfig;\n\n private readonly _mobileMedia = '(max-width: 799px)';\n private _allActions: Action[] = [];\n private _reorderAction: Action;\n\n constructor(\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._listenMobileMedia();\n }\n\n public get menuActions(): Action[] {\n return this._menuActions$.value;\n }\n\n public get actions(): Action[] {\n return this._actions$.value;\n }\n\n public get actions$(): Observable<Action[]> {\n return this._actions$.asObservable();\n }\n\n public get menuActions$(): Observable<Action[]> {\n return this._menuActions$.asObservable();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n public get mobileMode(): boolean {\n return this._breakpointObserver.isMatched(this._mobileMedia);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public setConfig(config: FsFilterConfig) {\n this._config = config;\n this.initActions(config.actions);\n }\n\n public initActions(rawActions: FsFilterAction[]) {\n if (!rawActions || !Array.isArray(rawActions)) {\n return;\n }\n\n this.show();\n\n this._allActions = rawActions\n .map((action) => new Action(this._config, action));\n\n if (this._reorderAction) {\n this._allActions.unshift(this._reorderAction);\n }\n\n this._classifyActions();\n }\n\n public show() {\n this._visible$.next(true);\n }\n\n public hide() {\n this._visible$.next(false);\n }\n\n public addReorderAction(action: Action) {\n this._allActions.unshift(action);\n\n action.isReorderAction = true;\n\n this._classifyAction(action);\n this._reorderAction = action;\n }\n\n public clearActions() {\n this._allActions = [];\n this._setActions([]);\n this._setKebabActions([]);\n }\n\n public updateActionsVisibility() {\n this._allActions.forEach((action) => action.updateVisibility());\n this._classifyActions();\n }\n\n public updateDisabledState() {\n this.actions.forEach((action) => action.updateDisabledState())\n }\n\n private _setKebabActions(actions: Action[]) {\n this._menuActions$.next(actions);\n }\n\n private _setActions(actions: Action[]) {\n this._actions$.next(actions);\n }\n\n private _classifyActions() {\n const kebabActions = [];\n const actions = [];\n const mobileMode = this.mobileMode;\n\n this._allActions\n .filter((action) => {\n return action.visible;\n })\n .forEach((action) => {\n if (action.menu !== false && (action.menu || mobileMode)) {\n kebabActions.push(action);\n } else {\n actions.push(action);\n }\n });\n\n this._setKebabActions(kebabActions);\n this._setActions(actions);\n }\n\n private _classifyAction(action: Action) {\n if (action.menu) {\n this._setKebabActions([...this.menuActions, action]);\n } else {\n this._setActions([...this.actions, action]);\n }\n }\n\n private _listenMobileMedia() {\n this._breakpointObserver.observe(this._mobileMedia)\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._classifyActions();\n })\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface FsFilterMeta {\n openedFilters: number;\n}\n\nexport const FS_FILTER_META =\n new InjectionToken<FsFilterMeta>('fs.filter.meta',\n {\n providedIn: 'root',\n factory: () => {\n return {\n openedFilters: 0,\n };\n }\n }\n );\n","import { Inject, Injectable, Injector, OnDestroy } from '@angular/core';\n\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\n\nimport { HtmlClassRenderer } from '@firestitch/html';\n\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';\nimport { FILTER_DRAWER_DATA } from '../injectors/filter-drawer-data';\nimport { FILTER_DRAWER_OVERLAY } from '../injectors/filter-drawer-overlay';\nimport { FS_FILTER_META, FsFilterMeta } from '../providers/filter-meta';\n\nimport { FocusControllerService } from './focus-controller.service';\n\n\n@Injectable()\nexport class FsFilterOverlayService implements OnDestroy {\n\n private _detach$ = new Subject<void>();\n private _attach$ = new Subject<void>();\n private _clearFn: () => void;\n private _doneFn: () => void;\n\n private _destroy$ = new Subject();\n private _overlayRef: OverlayRef;\n\n constructor(\n @Inject(FS_FILTER_META) private _filterMeta: FsFilterMeta,\n private _injector: Injector,\n private _overlay: Overlay,\n private _focusController: FocusControllerService,\n private _htmlClassRenderer: HtmlClassRenderer,\n ) {\n this._openWhenChipClicked();\n }\n\n public get detach$(): Observable<void> {\n return this._detach$.asObservable();\n }\n\n public get attach$(): Observable<void> {\n return this._attach$.asObservable();\n }\n\n public get isOpened() {\n return !!this._overlayRef;\n }\n\n public setClearFn(fn: () => void) {\n this._clearFn = fn;\n }\n\n public setDoneFn(fn: () => void) {\n this._doneFn = fn;\n }\n\n public close() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._removeFilterClass();\n } \n }\n\n public open() {\n if (this._overlayRef) {\n return;\n }\n\n this._overlayRef = this._createOverlay();\n this._overlayRef.detachments()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._detach$.next(null);\n this._overlayRef = null;\n });\n\n this._overlayRef.attachments()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._attach$.next(null);\n });\n\n this._addFilterClass();\n\n return this._openPortalPreview();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _createOverlay() {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n });\n\n return this._overlay.create(overlayConfig);\n }\n\n private _openPortalPreview() {\n const data = {\n done: this._doneFn,\n clear: this._clearFn,\n };\n const injector = this._createInjector(this._injector, data, this._overlayRef);\n const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);\n const containerRef = this._overlayRef.attach<FilterDrawerComponent>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _createInjector(parentInjector, data, overlayRef) {\n const injectionTokens = new WeakMap<any, any>([\n [FILTER_DRAWER_DATA, data],\n [FILTER_DRAWER_OVERLAY, overlayRef],\n ]);\n\n return new PortalInjector(parentInjector, injectionTokens);\n }\n\n private _removeFilterClass() {\n this._filterMeta.openedFilters--;\n\n if (this._filterMeta.openedFilters === 0) {\n this._htmlClassRenderer.removeClass('fs-filter-open');\n }\n }\n\n private _addFilterClass() {\n this._filterMeta.openedFilters++;\n\n if (this._filterMeta.openedFilters === 1) {\n this._htmlClassRenderer.addClass('fs-filter-open');\n }\n }\n\n private _openWhenChipClicked(): void {\n this._focusController.focusOn$\n .pipe(\n filter((v) => !!v),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n if (!this.isOpened) {\n this.open();\n }\n });\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n})\nexport class FilterStatusBarDirective {\n\n public constructor(\n public templateRef: TemplateRef<any>,\n ) { }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_FILTER_CONFIG = new InjectionToken<any>('fs.filter-config');\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { DrawerRef } from '@firestitch/drawer';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { objectsAreEquals } from '../../helpers/compare';\nimport { IFilterSavedFilter, ISortingChangeEvent } from '../../interfaces';\nimport { FsFilterAction } from '../../interfaces/action.interface';\nimport {\n FilterConfig, FilterSort, IFilterConfigItem, SortItem,\n} from '../../interfaces/config.interface';\nimport { IUpdateFilterItemConfig } from '../../interfaces/update-filter-item.interface';\nimport { FsFilterConfig } from '../../models/filter-config';\nimport { BaseItem } from '../../models/items/base-item';\nimport { TextItem } from '../../models/items/text-item';\nimport { ExternalParamsController } from '../../services/external-params-controller.service';\nimport { QueryParamsController } from '../../services/external-params/query-params-controller.service';\nimport { QueryPersistanceController } from '../../services/external-params/query-persistance-controller.service';\nimport { SavedFiltersController } from '../../services/external-params/saved-filters-controller.service';\nimport { FsFilterOverlayService } from '../../services/filter-overlay.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { FsFilterItemsStore } from '../../services/items-store.service';\n\nimport { FilterStatusBarDirective } from './../../directives/status-bar/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './../../injectors/filter-config';\n\n\n@Component({\n selector: 'fs-filter',\n styleUrls: ['./filter.component.scss'],\n templateUrl: './filter.component.html',\n providers: [\n FsFilterOverlayService,\n ExternalParamsController,\n QueryPersistanceController,\n QueryParamsController,\n FocusControllerService,\n FsFilterItemsStore,\n SavedFiltersController,\n ActionsController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterComponent implements OnInit, OnDestroy {\n\n @Input('config')\n public set setConfig(config) {\n this._initFilterWithConfig(config);\n }\n\n @Input('filter')\n public set setFilter(config) {\n this._initFilterWithConfig(config);\n }\n\n @Input() public showSortBy: any = true;\n @Output() public closed = new EventEmitter<any>();\n @Output() public opened = new EventEmitter<any>();\n @Output() public ready = new EventEmitter<void>();\n\n @ContentChild(FilterStatusBarDirective)\n public statusBar: FilterStatusBarDirective;\n\n @ViewChild('keywordMatInput', { read: MatInput })\n public keywordMatInput: MatInput;\n\n @ViewChild('reloadEl', { read: ElementRef })\n public reloadEl: ElementRef;\n\n @HostBinding('class.filters-open')\n public showFilterMenu = false;\n\n @HostBinding('class.window-desktop')\n public windowDesktop = false;\n\n @HostBinding('class.fs-filter')\n public fsFilterClass = true;\n\n @HostBinding('class.has-keyword')\n public get hasKeyword() {\n return this._filterItems.hasKeyword;\n }\n\n public searchPlaceholder = 'Search';\n public keyword = '';\n public autoReload = true;\n\n protected _config: FsFilterConfig = null;\n\n private _sort: FilterSort;\n private _filtersBtnVisible$ = new BehaviorSubject(true);\n private _keywordVisible$ = new BehaviorSubject(true);\n private _hasFilterChips$ = new BehaviorSubject(false);\n private _keyword$ = new Subject();\n private _destroy$ = new Subject<void>();\n private _dialogRef = inject(MatDialogRef, { optional: true });\n private _drawerRef = inject(DrawerRef, { optional: true }); \n\n constructor(\n @Optional() @Inject(FS_FILTER_CONFIG) private _defaultConfig: FsFilterConfig,\n private _filterOverlay: FsFilterOverlayService,\n private _zone: NgZone,\n private _externalParams: ExternalParamsController,\n private _persistanceParams: QueryPersistanceController,\n private _filterItems: FsFilterItemsStore,\n private _actions: ActionsController,\n private _savedFiltersController: SavedFiltersController,\n ) {\n this._filterItems.filter = this;\n this._listenWhenFilterReady();\n this._updateWindowWidth();\n\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n const filterAlt = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M440-160q-17 0-28.5-11.5T400-200v-240L161-745q-14-17-4-36t31-19h584q21 0 31 19t-4 36L560-440v240q0 17-11.5 28.5T520-160h-80Zm40-276 240-304H240l240 304Zm0 0Z\"/></svg>';\n\n iconRegistry.addSvgIconLiteral('filterOutline', sanitizer.bypassSecurityTrustHtml(filterAlt));\n\n this._filterOverlay.attach$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.showFilterMenu = true;\n });\n\n this._filterOverlay.detach$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.showFilterMenu = false;\n });\n\n this._listenWindowResize();\n }\n\n public get config(): FsFilterConfig {\n return this._config;\n }\n\n public get filterParams() {\n return this._filterItems.values();\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n public get filterParamsQuery(): Record<string, unknown> {\n return this._filterItems.valuesAsQuery();\n }\n\n public get items() {\n return this._filterItems.items;\n }\n\n public get visibleItems() {\n return this._filterItems.visibleItems;\n }\n\n public get keywordItem(): TextItem | null {\n return this._filterItems.keywordItem;\n }\n\n public get itemsReady$(): Observable<boolean> {\n return this._filterItems.ready$;\n }\n\n public get hasFilterChips$(): Observable<boolean> {\n return this._hasFilterChips$.asObservable();\n }\n\n public get hasVisibleItemOrSorting(): boolean {\n return this.visibleItems.length > 0 || !!this._filterItems.sortByItem;\n }\n\n public get filtersBtnVisible$(): Observable<boolean> {\n return this._filtersBtnVisible$.asObservable();\n }\n\n public get keywordVisible$(): Observable<boolean> {\n return this._keywordVisible$.asObservable()\n .pipe(\n map((visible) => {\n return visible && this.hasKeyword;\n }),\n );\n }\n\n public get actionsVisible$() {\n return this._actions.visible$;\n }\n\n public get actions$() {\n return this._actions.actions$;\n }\n\n public get menuActions$() {\n return this._actions.menuActions$;\n }\n\n public set activeSavedFilter(savedFilter: IFilterSavedFilter) {\n this._externalParams.setActiveSavedFilter(savedFilter);\n }\n\n public get activeSavedFilter(): IFilterSavedFilter {\n return this._savedFiltersController.activeFilter;\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFiltersController.savedFilters;\n }\n\n public ngOnInit() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.config.autofocus) {\n this.focus();\n }\n });\n\n this._initAutoReload();\n this._listenInputChanges();\n this._listenInternalItemsChange();\n this._initKeywordVisibility();\n this._initOverlay();\n }\n\n public ngOnDestroy() {\n this._destroyFilterDrawer();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public focus() {\n this.keywordMatInput?.focus();\n }\n\n public updateSort(sort: ISortingChangeEvent) {\n this._filterItems.updateSort(sort);\n }\n\n /**\n *\n * Do update value of some field\n *\n * @param values - values for update\n *\n * To update text value just pass new text value\n *\n * public updateSelectValue(val) {\n * this.filterEl.updateValues({ keyword: val });\n * }\n *\n * To update select or observable select you could pass suitable value\n *\n * public updateSelectValue(val: number) {\n * this.filterEl.updateValues({ simple_select: val }, { observable_select: val });\n * }\n *\n * To update checkbox value just pass true/false as value\n *\n * public updateCheckox(val: boolean) {\n * this.filterEl.updateValues({ checkbox: val });\n * }\n *\n * To update range value just pass object with min&max object or just with one of targets\n *\n * Ex.: { min: 10, max 15 }, { min: 5 }, { max 5 }\n *\n * public updateRange(val) {\n * this.filterEl.updateValues({ range: val });\n * }\n *\n * To update autocomplete just pass object with name/value fields\n *\n * Ex.: { name: 'John Doe', value: 1 }\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocomplete_user_id: val });\n * }\n *\n * To update autocompletechips just pass:\n *\n * 1) object with name/value fields - will be appended to existing set of values\n *\n * { name: 'John Doe', value: 1 }\n *\n * 2) array of objects - will be appended to existing set of values\n *\n * [{ name: 'John Doe', value: 1 }, { name: 'Darya Filipova', value: 2 }]\n *\n * 3) null - clear existing set of values\n *\n * public updateAutocomplete(val) {\n * this.filterEl.updateValues({ autocompletechips_user_id: val });\n * }\n *\n */\n public updateValues(values) {\n Object.keys(values).forEach((key) => {\n const filterItem = this.items\n .find((item) => item.name === key);\n\n if (!filterItem) {\n return;\n }\n\n filterItem.model = values[key];\n });\n }\n\n public hide() {\n this.changeVisibility(false);\n }\n\n public show() {\n this.changeVisibility(true);\n }\n\n public changeVisibilityClick(value, event = null) {\n\n if (event) {\n event.stopPropagation();\n }\n\n this.changeVisibility(value);\n }\n\n public get itemValues(): any[] {\n return this.items\n .map((item) => item.value);\n }\n\n public get nonEmptyItemValues(): any[] {\n return this.items\n .filter((item) => item.value !== undefined)\n .map((item) => item.value);\n }\n\n public get hasItemValues(): boolean {\n return this.items\n .some((item) => item.value !== undefined);\n }\n\n public getItemValue(name: string) {\n const item = this.items\n .find((_item) => _item.name === name);\n\n return item?.value;\n }\n\n public showItem(name: string) {\n const item = this.getItem(name);\n\n if (item) {\n item.hide = false;\n\n this._filterItems.updateItemsVisiblity();\n }\n }\n\n public hideItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.hide = true;\n\n this._filterItems.updateItemsVisiblity();\n }\n\n public clearItem(name: string) {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.clear();\n }\n\n public updateItemConfig(\n name: string,\n params: IUpdateFilterItemConfig,\n ): void {\n const item = this.getItem(name);\n\n if (!item) {\n return;\n }\n\n item.label = params.label ?? item.label;\n item.chipLabel = params.chipLabel ?? item.chipLabel;\n\n this._filterItems.updateItemsVisiblity();\n }\n\n public getItemValueChange$(name: string): Observable<any> | null {\n const item = this.items.find((i) => i.name === name);\n\n if (item) {\n return item.value$\n .pipe(\n map(() => {\n return item.model;\n }),\n );\n }\n\n return null;\n\n }\n\n public changeVisibility(state: boolean) {\n if (state === this.showFilterMenu) {\n return;\n }\n\n if (!state) {\n this.closed.emit();\n\n return this._destroyFilterDrawer();\n }\n\n if (!this.hasVisibleItemOrSorting) {\n return;\n }\n\n this._listenEscButton();\n\n this.opened.emit();\n\n this._filterOverlay.open();\n }\n\n public init() {\n const data = this._filterItems.valuesAsQuery();\n this._sort = this._filterItems.getSort();\n\n if (this.config.init) {\n this.config.init(data, this._sort, this);\n }\n\n this._updateChipsVisibility();\n\n this.items\n .forEach((item) => {\n item.init(item, this);\n });\n }\n\n public clear(event = null) {\n if (event) {\n event.stopPropagation();\n }\n\n this._filterItems.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keyword = '';\n }\n\n /**\n * Close filter window and do change callback\n */\n public search(event) {\n this.changeVisibilityClick(false, event);\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const data = this._filterItems.valuesAsQuery();\n const el = this.reloadEl?.nativeElement;\n\n if(el) {\n el.style.transition = 'all 0.75s 0.0s';\n el.style.transform = 'rotate(360deg)';\n\n setTimeout(() => {\n el.style.transition = null;\n el.style.transform = null;\n }, 1000);\n }\n\n if (this.config.reload) {\n this.config.reload(data, this._filterItems.getSort());\n }\n }\n\n public getItem(name): BaseItem<any> {\n return this.items\n .find((item) => item.name === name);\n }\n\n public fetchQueryParams(): void {\n this._externalParams.fetchQueryParams();\n }\n\n /**\n * Call change callback and apply new filter values\n */\n public change() {\n const data = this._filterItems.valuesAsQuery();\n const sort = this._filterItems.getSort();\n\n const sortingChanged = ((!sort || !this._sort) && sort !== this._sort)\n || (sort && this._sort && !objectsAreEquals(this._sort, sort));\n\n if (sortingChanged) {\n this._sort = sort;\n\n if (this.config.sortChange) {\n this.config.sortChange(data, sort);\n }\n }\n\n if (this.config.change) {\n this.config.change(data, sort);\n }\n\n this._updateChipsVisibility();\n\n // visibility for actions can depend on filters state\n this._actions.updateActionsVisibility();\n }\n\n /**\n * Update filter actions config\n *\n * @param actions\n */\n public updateActions(actions: FsFilterAction[]): void {\n this._actions.initActions(actions);\n }\n\n /**\n * Show \"Filters\" button\n */\n public showFiltersBtn(): void {\n this._filtersBtnVisible$.next(true);\n }\n\n /**\n * Hide \"Filters\" button\n */\n public hideFiltersBtn(): void {\n this._filtersBtnVisible$.next(false);\n }\n\n /**\n * Show \"Keyword\" field if it present\n */\n public showKeywordField(): void {\n this._keywordVisible$.next(true);\n }\n\n /**\n * Hide \"Keyword\" field if it present\n */\n public hideKeywordField(): void {\n this._keywordVisible$.next(false);\n }\n\n /**\n * Go through actions and check show() callback and update visible actions\n */\n public updateActionsVisibility(): void {\n this._actions.updateActionsVisibility();\n }\n\n /**\n * Go through actions and check disabled() callback and update disabled state\n */\n public updateDisabledState(): void {\n this._actions.updateDisabledState();\n }\n\n public setItems(items: IFilterConfigItem[]) {\n this._filterItems.destroyItems();\n\n this.config.items = items;\n this._filterItems.setConfig(this._config);\n this._externalParams.initItems();\n\n this._syncSearchInputWithKeyword();\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n public updateSortings(items: SortItem[]): void {\n this._filterItems.updateSortingItemsValues(items);\n }\n\n private _initFilterWithConfig(config: FilterConfig) {\n if (this.config) {\n this._filterItems.destroyItems();\n }\n\n config = {\n ...(this._defaultConfig || {}),\n ...config,\n };\n\n this._config = new FsFilterConfig(config);\n this._actions.setConfig(this._config);\n this._persistanceParams.setConfig(this._config, this.inDialog);\n this._filterItems.setConfig(this._config);\n this._externalParams.setConfig(this._config);\n\n this._syncSearchInputWithKeyword();\n\n if (this.config.reloadWhenConfigChanged) {\n this.change();\n }\n }\n\n private _destroyFilterDrawer() {\n this._filterOverlay.close();\n }\n\n private _updateWindowWidth() {\n this.windowDesktop = window.innerWidth > 1200;\n }\n\n private _listenEscButton() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'keyup')\n .pipe(\n filter((event: KeyboardEvent) => event.code === 'Escape'),\n takeUntil(this.closed),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this.changeVisibility(false);\n });\n });\n });\n }\n\n private _listenWindowResize() {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(100),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._zone.run(() => {\n this._updateWindowWidth();\n });\n });\n });\n }\n\n private _initAutoReload() {\n if(this.config.autoReload) {\n interval(this.config.autoReload.seconds * 1000)\n .pipe(\n filter(() => this.autoReload),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.reload(null);\n });\n }\n }\n\n private _listenInputChanges() {\n this._keyword$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this._destroy$),\n )\n .subscribe((value) => {\n const keywordItem = this._filterItems.keywordItem;\n keywordItem.model = value;\n this.change();\n });\n }\n\n private _syncSearchInputWithKeyword(): void {\n const keywordItem = this._filterItems.keywordItem;\n if (keywordItem) {\n this.keyword = keywordItem.model;\n this.searchPlaceholder = keywordItem.label as string || 'Search';\n }\n }\n\n private _initKeywordVisibility() {\n this._keywordVisible$.next(!this.keywordItem?.hide);\n }\n\n private _listenInternalItemsChange() {\n this._filterItems\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.change();\n });\n }\n\n private _initOverlay() {\n this._filterOverlay.setClearFn(this.clear.bind(this));\n this._filterOverlay.setDoneFn(this.hide.bind(this));\n }\n\n // We may need some time to recieve external params and after that ready can be emitted\n private _listenWhenFilterReady() {\n combineLatest(\n [\n this._externalParams.pending$,\n this.itemsReady$,\n ])\n .pipe(\n filter(([pendingParams, itemsReady]) => !pendingParams && itemsReady),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.init();\n this._syncSearchInputWithKeyword();\n\n this.ready.emit();\n });\n }\n\n private _updateChipsVisibility() {\n const hasFilterChips = this._filterItems.items\n .some((item: BaseItem<any>) => {\n return item.isChipVisible;\n });\n\n this._hasFilterChips$.next(hasFilterChips);\n }\n}\n","<div class=\"filter-container\">\n <div class=\"filter-inner-container\">\n <ng-container *ngIf=\"!hasKeyword; else filterKeyword\">\n <div>\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </div>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"filterToolbar\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"filterActions\"></ng-container>\n </div>\n <ng-container *ngIf=\"hasKeyword\">\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </ng-container>\n</div>\n<ng-template #filterStatusBarChips>\n <ng-container *ngIf=\"statusBar\">\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"config.chips && hasFilterChips$ | async\">\n <fs-filter-chips\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n </ng-container>\n</ng-template>\n<ng-template #filterKeyword>\n <div class=\"filter-keyword\">\n <ng-container *ngIf=\"(keywordVisible$ | async)\">\n <mat-form-field\n class=\"search-form-field form-field-padless\"\n [ngClass]=\"{\n 'has-keyword': !!keyword\n }\">\n <span\n matPrefix\n class=\"icon\">\n <mat-icon matPrefix>\n search\n </mat-icon>\n </span>\n <input\n #keywordMatInput\n matInput\n [(ngModel)]=\"keyword\"\n (ngModelChange)=\"keywordChange($event)\"\n name=\"filter-input\"\n [fsClear]=\"true\"\n [placeholder]=\"searchPlaceholder\">\n </mat-form-field>\n </ng-container>\n </div>\n</ng-template>\n<ng-template #filterActions>\n <div class=\"filter-actions\">\n <fs-filter-actions\n *ngIf=\"actionsVisible$ | async\"\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n</ng-template>\n<ng-template #filterToolbar>\n <div class=\"filter-toolbar\">\n @if (filtersBtnVisible$ | async) {\n @if (hasVisibleItemOrSorting) {\n <a\n mat-icon-button\n class=\"button-filters\"\n (click)=\"changeVisibilityClick(!showFilterMenu, $event)\"\n [color]=\"config.button.color\">\n @if (config.button.icon) {\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n }\n {{ config.button.label }}\n </a>\n }\n }\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n @if (config.autoReload) {\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [(ngModel)]=\"autoReload\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n }\n </div>\n }\n </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, } from '@angular/core';\n\n@Component({\n selector: 'filter-item-select-backdrop',\n styleUrls: ['./backdrop.component.scss'],\n templateUrl: './backdrop.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectBackdropComponent {\n constructor() {}\n}\n","","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FilterRemoteOrder, IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { SavedFiltersController } from '../../../services/external-params/saved-filters-controller.service';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsFilterSavedFilterManageComponent {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFiltersController: SavedFiltersController;\n private _filterRemoteOrder: FilterRemoteOrder;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private _cdRef: ChangeDetectorRef,\n ) {\n this._savedFiltersController = this.data.savedFiltersController;\n this.savedFilters = [...this._savedFiltersController.savedFilters];\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFiltersController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = [...this._savedFiltersController.savedFilters];\n this._cdRef.markForCheck();\n });\n }\n\n public drop(event: CdkDragDrop<any[]>) {\n moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);\n\n this._savedFiltersController.order(this.savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n class=\"saved-filter-manage-chip\"\n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { ExternalParamsController } from '../../../services/external-params-controller.service';\nimport { SavedFiltersController } from '../../../services/external-params/saved-filters-controller.service';\nimport { FsFilterItemsStore } from '../../../services/items-store.service';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter-manage';\n\n\n@Component({\n selector: 'fs-filter-saved-filters-menu',\n templateUrl: './saved-filters-menu.component.html',\n styleUrls: ['./saved-filters-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsSavedFiltersMenuComponent {\n\n @Output()\n public clear = new EventEmitter<void>();\n\n constructor(\n private _itemsStore: FsFilterItemsStore,\n private _externalParams: ExternalParamsController,\n private _savedFilters: SavedFiltersController,\n private _dialog: MatDialog,\n ) {}\n\n public get filters$(): Observable<IFilterSavedFilter[]> {\n return this._savedFilters.savedFilters$;\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this._savedFilters.activeFilter$;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter): void {\n this._externalParams.setActiveSavedFilter(savedFilter);\n }\n\n public removeActiveFilter(): void {\n this._itemsStore.filtersClear();\n this._externalParams.setActiveSavedFilter(null);\n\n this.clear.emit();\n }\n\n public saveFilters() {\n this._externalParams\n .savedFiltersController\n .openSavedFilterEditDialog();\n }\n\n\n public manageFilters(): void {\n this._dialog.open(FsFilterSavedFilterManageComponent, {\n data: {\n savedFiltersController: this._savedFilters,\n },\n });\n }\n}\n","<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'None' }}</a>\n\n<fs-menu #menu>\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n <ng-container *ngIf=\"(filters$ | async).length !==0\">\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <ng-template fs-menu-divider-item></ng-template>\n </ng-container>\n\n <ng-template \n fs-menu-item \n (click)=\"saveFilters()\">\n Save\n </ng-template>\n \n <ng-template \n fs-menu-item \n (click)=\"manageFilters()\">\n Manage\n </ng-template>\n</fs-menu>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsChipModule } from '@firestitch/chip';\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsCommonModule } from '@firestitch/common';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsScrollModule } from '@firestitch/scroll';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsStore, FsStoreModule } from '@firestitch/store';\n\nimport { FsFilterActionButtonComponent } from './components/action-button/action-button.component';\nimport { FsFilterActionKebabActionsComponent } from './components/action-kebab-actions/action-kebab-actions.component';\nimport { FsFilterActionsComponent } from './components/actions/actions.component';\nimport { FsFilterChipContentComponent } from './components/filter-chip-content/filter-chip-content.component';\nimport { FsFilterChipComponent } from './components/filter-chip/filter-chip.component';\nimport { FsFilterChipsComponent } from './components/filter-chips/filter-chips.component';\nimport { FsFilterDrawerActionsComponent } from './components/filter-drawer-actions/filter-drawer-actions.component';\nimport { FilterDrawerComponent } from './components/filter-drawer/filter-drawer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { AutocompleteComponent } from './components/filters-item/autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './components/filters-item/autocompletechips/autocompletechips.component';\nimport { BaseItemComponent } from './components/filters-item/base-item/base-item.component';\nimport { CheckboxComponent } from './components/filters-item/checkbox/checkbox.component';\nimport { ChipsComponent } from './components/filters-item/chips/chips.component';\nimport { DateRangeComponent } from './components/filters-item/date-range/date-range.component';\nimport { DateComponent } from './components/filters-item/date/date.component';\nimport { FilterItemComponent } from './components/filters-item/filter-item.component';\nimport { RangeComponent } from './components/filters-item/range/range.component';\nimport { SelectBackdropComponent } from './components/filters-item/select/backdrop/backdrop.component';\nimport { SelectGroupsComponent } from './components/filters-item/select/groups/groups.component';\nimport { SelectMultipleComponent } from './components/filters-item/select/multiple/multiple.component';\nimport { SelectComponent } from './components/filters-item/select/select.component';\nimport { SelectSimpleComponent } from './components/filters-item/select/simple/simple.component';\nimport { TextComponent } from './components/filters-item/text/text.component';\nimport { WeekComponent } from './components/filters-item/week/week.component';\nimport { FsFilterSavedFilterManageComponent } from './components/saved-filter';\nimport { FsFilterSavedFilterEditComponent } from './components/saved-filter/saved-filter-edit/saved-filter-edit.component';\nimport { FsSavedFiltersMenuComponent } from './components/saved-filter/saved-filters-menu/saved-filters-menu.component';\nimport { FocusToItemDirective } from './directives/focus-to-item/focus-to-item.directive';\nimport { FilterStatusBarDirective } from './directives/status-bar/status-bar.directive';\nimport { FS_FILTER_CONFIG } from './injectors/filter-config';\nimport { FilterConfig } from './interfaces/config.interface';\nimport { FsFilterIsolateValues } from './pipes/remove-isolate-value.pipe';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n \n DragDropModule,\n \n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatChipsModule,\n MatCheckboxModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatDialogModule,\n MatTooltipModule,\n MatSlideToggleModule,\n\n FsChipModule,\n FsCommonModule,\n FsStoreModule,\n FsDatePickerModule,\n FsLabelModule,\n FsAutocompleteModule,\n FsAutocompleteChipsModule,\n FsScrollModule,\n FsMenuModule,\n FsSkeletonModule,\n FsFormModule,\n FsFileModule,\n FsSelectButtonModule,\n FsClearModule,\n FsPopoverModule,\n\n PortalModule,\n ],\n declarations: [\n BaseItemComponent,\n FilterComponent,\n FilterItemComponent,\n FsFilterChipsComponent,\n SelectComponent,\n SelectGroupsComponent,\n SelectSimpleComponent,\n SelectMultipleComponent,\n ChipsComponent,\n TextComponent,\n WeekComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n CheckboxComponent,\n FilterDrawerComponent,\n SelectBackdropComponent,\n FsFilterChipComponent,\n FsFilterChipContentComponent,\n FsFilterDrawerActionsComponent,\n FsFilterSavedFilterEditComponent,\n FsSavedFiltersMenuComponent,\n FsFilterActionsComponent,\n FsFilterActionButtonComponent,\n FsFilterActionKebabActionsComponent,\n FsFilterSavedFilterManageComponent,\n\n FilterStatusBarDirective,\n FocusToItemDirective,\n\n // Pipes\n FsFilterIsolateValues,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\n FsSavedFiltersMenuComponent,\n ],\n})\nexport class FsFilterModule {\n public static forRoot(config: FilterConfig = {}): ModuleWithProviders<FsFilterModule> {\n return {\n ngModule: FsFilterModule,\n providers: [\n {\n provide: FS_FILTER_CONFIG,\n useValue: {\n button: {\n label: '',\n },\n ...config,\n } as FilterConfig,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["arrayList","filter","i2.FsFilterItemsStore","i1","i2","i3","i4","i5","i6","i7","i8","i9","i1.FsFilterItemsStore","i2.QueryPersistanceController","i2.QueryParamsController","i2.SavedFiltersController","i11.FsFilterActionButtonComponent","i12.FsFilterActionKebabActionsComponent","i1.FocusControllerService","i4.FsFilterChipContentComponent","i2.FsFilterChipComponent","i7.FocusToItemDirective","i8.FocusToItemDirective","i9.FsFilterIsolateValues","i4.SelectGroupsComponent","i5.SelectSimpleComponent","i6.SelectMultipleComponent","i5.FocusToItemDirective","i6.FocusToItemDirective","i4.FocusToItemDirective","arrayRemove","i2.SelectComponent","i3.ChipsComponent","i4.TextComponent","i5.WeekComponent","i6.RangeComponent","i7.AutocompleteComponent","i8.AutocompletechipsComponent","i9.DateComponent","i10.DateRangeComponent","i11.CheckboxComponent","i1.ExternalParamsController","i6.FilterItemComponent","i7.FsFilterDrawerActionsComponent","i2.FocusControllerService","i1.FsFilterOverlayService","i2.ExternalParamsController","i3.QueryPersistanceController","i4.FsFilterItemsStore","i5.ActionsController","i6.SavedFiltersController","i10","i11","i12","i14","i16.FsFilterChipsComponent","i17.FsFilterActionsComponent","i3.SavedFiltersController"],"mappings":"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"}
|