@firestitch/filter 18.2.6 → 18.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/esm2022/app/models/items/autocomplete-chips-item.mjs +2 -2
- package/esm2022/app/services/saved-filter-controller.service.mjs +1 -2
- package/fesm2022/firestitch-filter.mjs +1 -2
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/enums/item-type.enum.ts","../../src/app/models/items/base-item.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/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-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/models/items/select/base-select-item.ts","../../src/app/helpers/compare.ts","../../src/app/models/items/select/multiple-select-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/parse-date.ts","../../src/app/models/items/week-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/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/item-store.service.ts","../../src/app/services/saved-filter-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/providers/filter-meta.ts","../../src/app/services/filter-overlay.service.ts","../../src/app/services/persistance-controller.service.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/helpers/restore-items.ts","../../src/app/services/query-param-controller.service.ts","../../src/app/services/param-controller.service.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/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/pipes/remove-isolate-value.pipe.ts","../../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/simple/simple.component.ts","../../src/app/components/filters-item/select/simple/simple.component.html","../../src/app/components/filters-item/select/groups/groups.component.ts","../../src/app/components/filters-item/select/groups/groups.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/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/week/week.component.ts","../../src/app/components/filters-item/week/week.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/consts/filter-icon.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.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-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.ts","../../src/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.html","../../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/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["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 public 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 { 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 public setModel(value) {\n super.setModel(value || []);\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}\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 public 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 _validateModel() {\n //\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 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 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 _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","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 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 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 _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 {\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","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 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 { 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","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 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 public getChipsContent(): 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 _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 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 public setModel(value): void {\n if (value) {\n if (!isNaN(value)) {\n value = +value;\n }\n }\n\n super.setModel(value);\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 _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 { 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 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 public getChipsContent(type = null): string {\n return formatPeriodObject(this.value);\n }\n\n protected _validateModel() {\n //\n }\n\n protected _init() { \n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\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 { KeyValue } from '../interfaces';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { CheckboxItem, MultipleSelectItem } from '../models/items';\nimport { BaseItem } from '../models/items/base-item';\n\nimport { arraysAreEquals } from './compare';\nimport { filterToQueryParam } from './query-param-transformers';\n\n\nexport function buildQueryParams(flattenedParams: KeyValue, 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 } else if (filterItem instanceof CheckboxItem) {\n if(filterItem.checked) {\n flattenedParams[filterItem.name] = filterItem.model;\n }\n } else 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","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 public heading: string;\n public subheading: string;\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 heading: data.heading,\n subheading: data.subheading,\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 { buildQueryParams } from '../helpers/build-query-params';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n FilterSort,\n IFilterConfigItem,\n SortItem,\n} from '../interfaces/config.interface';\nimport { KeyValue } 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 ItemStore 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 private _itemsValuesLoaded = false;\n private _hasKeyword = false;\n private _config: FsFilterConfig;\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 this._setKeywordItem();\n }\n }\n\n public queryParams(): KeyValue {\n return buildQueryParams(this.valuesAsQuery(), this.items);\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 models(): KeyValue {\n return this.items\n .reduce((acc, item) => {\n acc[item.name] = item.model;\n\n return acc;\n }, {});\n }\n\n public valuesAsQuery({\n onlyPresented = true,\n items = null,\n persisted = false,\n }: IValueAsQuery = {}): KeyValue {\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: KeyValue) {\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: KeyValue) {\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 });\n }\n\n private _initSortingItems(p: KeyValue): 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 { inject, Injectable, OnDestroy } from '@angular/core';\n\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n IFilterSavedFiltersConfig,\n} from '../interfaces/saved-filters.interface';\n\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class SavedFilterController implements OnDestroy {\n\n private _config: IFilterSavedFiltersConfig;\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 private _itemStore = inject(ItemStore);\n private _prompt = inject(FsPrompt);\n\n public get singularLabel(): string {\n return this._config?.label?.singular || 'Saved filter';\n }\n\n public get singularLabelLower(): string {\n return this.singularLabel.toLowerCase();\n }\n\n public get labelIcon(): string {\n return this._config?.label?.icon || 'save';\n }\n\n public get pluralLabel(): string {\n return this._config?.label?.plural || 'Saved filters';\n }\n\n public get pluralLabelLower(): string {\n return this.pluralLabel.toLowerCase();\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(): KeyValue {\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 filterSavedFiltersConfig: IFilterSavedFiltersConfig,\n ): void {\n if (!filterSavedFiltersConfig) {\n this._setEnabledStatus(false);\n\n return;\n }\n this._setEnabledStatus(true);\n\n this._config = filterSavedFiltersConfig;\n }\n\n public initSavedFilters(savedFilters: IFilterSavedFilter[]): void {\n this.savedFilters = savedFilters;\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this._activeFilter$.next(acitveFilter);\n }\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n if (!this.enabled) {\n return of([]);\n }\n\n return this._config.load()\n .pipe(\n tap((savedFilters) => {\n this.initSavedFilters(savedFilters);\n }),\n );\n }\n\n public create(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: `Create ${this.singularLabel}`,\n label: 'Name',\n required: true,\n commitLabel: 'Create',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n filters: this._itemStore.queryParams(),\n };\n\n return this.save(data);\n }),\n tap((savedFilter) => {\n this.setActiveFilter(savedFilter);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n savedFilter = {\n ...(this.activeFilter || {}),\n ...savedFilter,\n filters: this._itemStore.items\n .filter((item) => item.hasValue)\n .reduce((accum, item) => {\n return {\n ...accum,\n [item.name]: item.model,\n };\n }, {}),\n }; \n\n return this._config.save(savedFilter)\n .pipe(\n tap((_savedFilter) => {\n this.savedFilters = this.activeFilter?.id ? this.savedFilters\n .map((f) => f.id === savedFilter.id ? _savedFilter : f) : [\n ...this.savedFilters,\n _savedFilter,\n ];\n \n this.setActiveFilter(_savedFilter);\n }),\n );\n }\n\n public get orderable(): boolean {\n return !!this._config.order;\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 if (this.activeFilter?.id === savedFilter.id) {\n this.setActiveFilter(null);\n }\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 private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\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';\nimport { NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';\nimport { MatIconButton, MatFabButton, MatMiniFabButton, MatButton } from '@angular/material/button';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatIcon } from '@angular/material/icon';\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 standalone: true,\n imports: [\n NgSwitch,\n NgSwitchCase,\n MatIconButton,\n NgClass,\n NgTemplateOutlet,\n MatFabButton,\n MatMiniFabButton,\n NgSwitchDefault,\n MatButton,\n FsFormModule,\n NgIf,\n MatIcon,\n AsyncPipe,\n ],\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';\nimport { MatIconButton } from '@angular/material/button';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { AsyncPipe } from '@angular/common';\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 standalone: true,\n imports: [\n MatIconButton,\n FsMenuModule,\n MatIcon,\n AsyncPipe,\n ],\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 @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\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 @for (subAction of childAction.items; track subAction) {\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 @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\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 @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('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 @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\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';\nimport { FsFilterActionButtonComponent } from '../action-button/action-button.component';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterActionKebabActionsComponent } from '../action-kebab-actions/action-kebab-actions.component';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterActionButtonComponent,\n FsPopoverModule,\n FsMenuModule,\n MatIcon,\n MatSelect,\n FsSelectButtonModule,\n NgClass,\n FormsModule,\n FsFormModule,\n MatOption,\n FsFileModule,\n FsFilterActionKebabActionsComponent,\n AsyncPipe,\n ],\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","@for (action of actions; track action) {\n @switch (action.mode) {\n @case (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 }\n @case (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 @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group [label]=\"childAction.label\">\n @for (subAction of childAction.items; track subAction) {\n @switch (subAction.mode) {\n @case ('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 @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n @case ('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 @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n }\n }\n </fs-menu-group>\n } @else {\n @switch (childAction.mode) {\n @case ('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 @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n @case ('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 @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n }\n }\n }\n </fs-menu>\n }\n @case (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 @for (item of action.values; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n }\n @case (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 }\n }\n}\n@if (kebabActions?.length) {\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n}\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 standalone: true,\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 { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { FsChipModule } from '@firestitch/chip';\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';\nimport { FsFilterChipContentComponent } from '../filter-chip-content/filter-chip-content.component';\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 standalone: true,\n imports: [\n FsChipModule,\n NgTemplateOutlet,\n FsFilterChipContentComponent,\n AsyncPipe,\n ],\n})\nexport class FsFilterChipComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n @Input() public removable: boolean = false;\n \n @Input() \n @HostBinding('class.clickable') \n public clickable: boolean = false;\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 private _cdRef = inject(ChangeDetectorRef);\n private _focusController = inject(FocusControllerService);\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 click(type = null) {\n if (this.clickable) {\n this._focusController.click(this.item, type);\n }\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","@if (!item.hasPendingValues || (chipDelayedRender$ | async)) {\n @if (rangeItem) {\n @if (item.model?.min || item.model?.from) {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n [removable]=\"removable\"\n (click)=\"click('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 }\n @if (item.model?.max || item.model?.to) {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear && removable\"\n size=\"small\"\n (click)=\"click('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 }\n } @else {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear && removable\"\n size=\"small\"\n (click)=\"click()\"\n (removed)=\"removeItem($event)\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </fs-chip>\n }\n <ng-template\n #chipContent\n let-item=\"item\"\n let-type=\"type\">\n @if (!item.hasPendingValues && !item.loading) {\n <fs-filter-chip-content\n [item]=\"item\"\n [type]=\"type\">\n </fs-filter-chip-content>\n } @else {\n Loading...\n }\n </ng-template>\n}","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ItemType } from '../../enums';\nimport { BaseItem } from '../../models/items/base-item';\nimport { FsFilterChipComponent } from '../filter-chip/filter-chip.component';\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 standalone: true,\n imports: [FsFilterChipComponent, AsyncPipe],\n})\nexport class FsFilterChipsComponent {\n\n @Input() public filters: BaseItem<any>[];\n\n public ItemType = ItemType;\n}\n","@for (item of filters; track item) {\n @if ((item.value$ | async) !== undefined && item.type !== ItemType.Keyword) {\n @if (item.isChipVisible) {\n <fs-filter-chip\n [item]=\"item\"\n [clickable]=\"true\"\n [removable]=\"true\">\n </fs-filter-chip>\n }\n }\n}","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\n\nimport { tap } from 'rxjs';\n\nimport type { SavedFilterController } from '../../services/saved-filter-controller.service';\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 standalone: true,\n imports: [\n MatButton,\n FsFormModule,\n AsyncPipe,\n ],\n})\nexport class FsFilterDrawerActionsComponent {\n\n @Input()\n public savedFiltersController: SavedFilterController;\n\n @Output('clear')\n private _clear = new EventEmitter<void>();\n\n @Output('done')\n private _done = new EventEmitter<void>();\n\n private _message = inject(FsMessage);\n\n public done(): void {\n this._done.emit();\n }\n\n public clear(): void {\n this._clear.emit();\n }\n\n public createFilter(): void {\n this.savedFiltersController.create() \n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this.savedFiltersController.singularLabel}`,\n { positionClass: 'toast-bottom-left' },\n );\n }),\n )\n .subscribe();\n }\n \n}\n","<div class=\"filter-drawer-actions-container\">\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"done()\">\n Done\n </button>\n @if (savedFiltersController.enabled) {\n @if (savedFiltersController.activeFilter$ | async) {\n <button\n mat-button\n type=\"submit\">\n Save\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n (click)=\"createFilter()\">\n Create\n {{ savedFiltersController.singularLabelLower }}\n </button>\n }\n }\n <button\n mat-button\n type=\"button\"\n (click)=\"clear()\">\n Clear\n </button>\n</div>","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\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<OverlayRef>('fs.filter-drawer-overlay');\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, StaticProvider } from '@angular/core';\n\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } 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 } 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 private _injector = inject(Injector);\n private _overlay = inject(Overlay);\n private _focusController = inject(FocusControllerService);\n private _htmlClassRenderer = inject(HtmlClassRenderer);\n private _filterMeta = inject(FS_FILTER_META);\n\n constructor() {\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: Injector, data: any, overlayRef: any): Injector {\n const providers: StaticProvider[] = [\n { provide: FILTER_DRAWER_DATA, useValue: data },\n { provide: FILTER_DRAWER_OVERLAY, useValue: overlayRef },\n ];\n \n return Injector.create({\n providers,\n parent: parentInjector,\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 { 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 PersistanceController {\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 { 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 { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { restoreItems } from '../helpers/restore-items';\n\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class QueryParamController {\n\n private _enabled = false;\n private _params: Record<string, any>;\n\n constructor(\n private _route: ActivatedRoute,\n private _itemStore: ItemStore,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled;\n }\n\n public get params() {\n return this._params;\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._itemStore.items,\n this._itemStore.sortByItem,\n this._itemStore.sortDirectionItem,\n ]\n .filter((item) => !!item);\n\n this._params = 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 { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { buildQueryParams } from '../helpers/build-query-params';\nimport { KeyValue } from '../interfaces';\nimport { FsFilterConfig } from '../models/filter-config';\n\nimport {\n PersistanceController,\n QueryParamController,\n SavedFilterController,\n} from '.';\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class ParamController implements OnDestroy {\n\n private _pending$ = new BehaviorSubject(false);\n private _config: FsFilterConfig;\n private _destroy$ = new Subject<void>();\n private _itemStore = inject(ItemStore);\n private _persistanceController = inject(PersistanceController);\n private _queryParams = inject(QueryParamController);\n private _savedFilterController = inject(SavedFilterController);\n\n public get params(): KeyValue {\n let result: KeyValue = {};\n\n if (this._persistanceController.queryEnabled) {\n result = {\n ...result, \n ...this._persistanceController.getQuery(),\n };\n }\n\n if (this._savedFilterController.enabled && this._savedFilterController.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this._itemStore.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilterController.activeFilterData,\n };\n } else if (this._queryParams.enabled) {\n result = {\n ...result, \n ...this._queryParams.params,\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 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 reloadFiltersWithValues(params: KeyValue) {\n this._itemStore.updateItemsWithValues(params);\n\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public initItems(): void {\n of(null)\n .pipe(\n tap(() => this._pending$.next(true)),\n switchMap(() => this._savedFilterController.load() ),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._initItemsValues();\n this._pending$.next(false);\n this._listenItemsChange();\n this._listenSavedFilterChange();\n });\n }\n\n public _initItemsValues() {\n this._itemStore.init(this.params);\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public fetchQueryParams(): void {\n this._initQueryParams();\n this._itemStore.updateItemsWithValues(this.params);\n }\n\n private _initQueryParams() {\n this._queryParams.init(this._config.queryParam);\n }\n\n private _initSavedFilters() {\n this._savedFilterController.init(this._config.savedFilters);\n }\n\n private _listenSavedFilterChange() {\n this._savedFilterController.activeFilter$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((savedFilter) => {\n if (savedFilter) {\n this.reloadFiltersWithValues(savedFilter.filters);\n } else {\n this._itemStore.filtersClear();\n }\n });\n }\n\n private _listenItemsChange() {\n this._itemStore.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._itemStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n }\n\n private _saveQueryParams() {\n const params = buildQueryParams(\n this._itemStore\n .valuesAsQuery({\n onlyPresented: false,\n items: this._itemStore.items,\n persisted: true,\n }),\n this._itemStore.items,\n );\n \n this._itemStore.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._persistanceController.queryEnabled) {\n const targetItems = this._itemStore.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._persistanceController.setQuery(targetItems);\n }\n }\n}\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 standalone: true,\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 standalone: true,\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 KeyValueDiffers,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormControl, FormsModule, ReactiveFormsModule } 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';\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n FocusToItemDirective,\n MatSuffix,\n ],\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 @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [formControl]=\"textControl\"\n [fsFilterFocusTrigger]=\"item\">\n @if (item.suffix) {\n <span\n matSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Pipe({\n name: 'fsFilterIsolateValues',\n standalone: true,\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 { MultipleSelectItem } from '../../../../models/items/select/multiple-select-item';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FsFilterIsolateValues } from '../../../../pipes/remove-isolate-value.pipe';\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 standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatHint,\n MatCheckbox,\n FsFilterIsolateValues,\n ],\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 @for (item of item.values | fsFilterIsolateValues: item.isolate; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\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 Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { SimpleSelectItem } from '../../../../models/items/select/simple-select-item';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FsFilterIsolateValues } from '../../../../pipes/remove-isolate-value.pipe';\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 standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatCheckbox,\n FsFilterIsolateValues,\n ],\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 @for (item of item.values | fsFilterIsolateValues: item.isolate; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'filter-item-select-groups',\n templateUrl: './groups.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOptgroup,\n MatOption,\n NgStyle,\n ],\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 @for (selectItem of item.values; track selectItem) {\n @if (selectItem[item.children]) {\n <mat-optgroup [label]=\"selectItem.name\">\n @for (subItem of selectItem[item.children]; track subItem) {\n <mat-option\n [value]=\"subItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ subItem.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option\n [value]=\"selectItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ selectItem.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n","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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { SelectGroupsComponent } from './groups/groups.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatSelect,\n SelectMultipleComponent,\n SelectSimpleComponent,\n SelectGroupsComponent,\n AsyncPipe,\n ],\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","@if ((item.loading$ | async)) {\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select disabled></mat-select>\n </mat-form-field>\n} @else {\n @if ((values$ | async)?.length) {\n @if (item.multiple && !item.children) {\n <filter-item-select-multiple\n [item]=\"multipleSelectItem\"\n #selectItem>\n </filter-item-select-multiple>\n }\n @if (!item.multiple && !item.children) {\n <filter-item-select-simple\n [item]=\"simpleSelectItem\"\n #selectItem>\n </filter-item-select-simple>\n }\n @if (item.children) {\n <filter-item-select-groups\n [item]=\"item\"\n #selectItem>\n </filter-item-select-groups>\n }\n }\n}\n\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';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsChipModule } from '@firestitch/chip';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n FsChipModule,\n FormsModule,\n FsFormModule,\n ],\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 compareFn = (modelValue, chipValue) => {\n return String(modelValue.value) === String(chipValue.value);\n };\n}\n","@if (item.values?.length) {\n <fs-label-field>\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}\n@if (item.loading) {\n {{ item.label }} loading...\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';\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsFormModule,\n MatSuffix,\n ],\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 @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field class=\"filter-range-max\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\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';\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { remove as arrayRemove } from '@firestitch/common';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\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 standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsDatePickerModule,\n FsFormModule,\n ],\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 OnInit\n} from '@angular/core';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { WeekItem } from '../../../models/items/week-item';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\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,\n KeyValueDiffers,\n} from '@angular/core';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { FsLabelModule } from '@firestitch/label';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n MatCheckbox,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { TextComponent } from './text/text.component';\nimport { SelectComponent } from './select/select.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { RangeComponent } from './range/range.component';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './autocompletechips/autocompletechips.component';\nimport { DateComponent } from './date/date.component';\nimport { DateRangeComponent } from './date-range/date-range.component';\nimport { WeekComponent } from './week/week.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\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 standalone: true,\n imports: [\n TextComponent,\n SelectComponent,\n ChipsComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n WeekComponent,\n CheckboxComponent,\n ],\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 @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n class=\"interface\"\n [item]=\"textItem\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n class=\"interface\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n class=\"interface interface-range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n class=\"interface\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n class=\"interface\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n class=\"interface interface-date\"\n [item]=\"dateItem\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n class=\"interface\"\n [item]=\"weekItem\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\">\n </filter-item-checkbox>\n }\n }\n\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n HostListener,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { Observable, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { ItemStore } from '../../services/item-store.service';\nimport { ParamController } from '../../services/param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterDrawerActionsComponent } from '../filter-drawer-actions/filter-drawer-actions.component';\nimport { FilterItemComponent } from '../filters-item/filter-item.component';\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 standalone: true,\n imports: [\n FormsModule,\n FsFormModule,\n MatIcon,\n MatFormField,\n MatLabel,\n MatInput,\n FsSkeletonModule,\n FilterItemComponent,\n FsFilterDrawerActionsComponent,\n AsyncPipe,\n ],\n})\nexport class FilterDrawerComponent implements OnInit {\n\n @Input() public inline = false;\n\n public windowDesktop = false;\n public savedFilterName = '';\n\n protected _clear: () => void;\n protected _done: () => void;\n protected _destroyRef = inject(DestroyRef);\n\n private _savedFilterController = inject(SavedFilterController);\n private _message = inject(FsMessage);\n private _itemStore = inject(ItemStore);\n private _overlayRef = inject(FILTER_DRAWER_OVERLAY);\n private _data = inject(FILTER_DRAWER_DATA);\n private _paramController = inject(ParamController);\n\n constructor(\n ) {\n this._itemStore.prepareItems();\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._itemStore.visibleItems$;\n }\n\n public get paramCointroller(): ParamController {\n return this._paramController;\n }\n\n public get savedFiltersController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public ngOnInit(): void {\n this._savedFilterController.activeFilter$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((activeFilter) => {\n this.savedFilterName = activeFilter?.name || '';\n });\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 public saveSavedFilter = () => {\n return this._savedFilterController\n .save({ name: this.savedFilterName })\n .pipe(\n tap((savedFilter) => {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._message\n .success(`Saved ${this._savedFilterController.singularLabel}`, { \n positionClass: 'toast-bottom-left', \n });\n }),\n );\n };\n}\n","<form\n fsForm\n [submit]=\"saveSavedFilter\"\n [dirtySubmitButton]=\"false\">\n <div class=\"filters\">\n <div class=\"filters-wrap\">\n @if (savedFiltersController.activeFilter$ | async) {\n <div class=\"filter-heading\">\n <mat-icon>\n {{ savedFiltersController.labelIcon }}\n </mat-icon>\n <span class=\"text\">\n {{ savedFiltersController.singularLabel }}\n </span>\n </div>\n <div class=\"filter-name\">\n <mat-form-field>\n <mat-label>\n {{ savedFiltersController.singularLabel }} name\n </mat-label>\n <input\n matInput\n required\n [(ngModel)]=\"savedFilterName\"\n name=\"savedFilterName\">\n </mat-form-field>\n <hr>\n <br>\n </div>\n } @else {\n <div class=\"filter-heading\">\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n <span class=\"text\">\n Filters\n </span>\n </div>\n }\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(paramCointroller.pending$ | async) !== true\">\n @for (filterItem of items$ | async; track filterItem) {\n <filter-item\n class=\"filter-group\"\n [item]=\"filterItem\">\n </filter-item>\n }\n </ng-container>\n </div>\n </div>\n @if ((paramCointroller.pending$ | async) !== true) {\n <fs-filter-drawer-actions\n [savedFiltersController]=\"savedFiltersController\"\n class=\"filter-actions\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n }\n </div>\n </div>\n @if (!windowDesktop) {\n <div\n class=\"backdrop\"\n (click)=\"backdropClick()\">\n </div>\n }\n</form>","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","export const FilterIcon = '<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","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { IFilterConfigItem } from '../../../../../interfaces';\nimport { IFilterSavedFilter } from '../../../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../../../models/items';\nimport { ItemStore } from '../../../../../services';\nimport { FsFilterChipComponent } from '../../../../filter-chip/filter-chip.component';\n\n\n@Component({\n selector: 'fs-saved-filter-chips',\n templateUrl: './saved-filter-chips.component.html',\n styleUrls: ['./saved-filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterChipComponent,\n ],\n})\nexport class FsFilterSavedFilterChipsComponent implements OnInit {\n\n @Input() public savedFilter: IFilterSavedFilter;\n\n public items: BaseItem<IFilterConfigItem>[] = [];\n\n private _itemStore = inject(ItemStore);\n\n public ngOnInit(): void {\n this.items = [...this._itemStore.items]\n .filter((item) => !!this.savedFilter.filters[item.name])\n .map((item: BaseItem<IFilterConfigItem>): BaseItem<IFilterConfigItem> => {\n item.setModel(this.savedFilter.filters[item.name]);\n\n return item;\n });\n }\n}\n","<div class=\"filter-chips\">\n @for (item of items; track item.name) {\n <fs-filter-chip [item]=\"item\"></fs-filter-chip>\n }\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { IFilterConfigItem } from '../../../interfaces';\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../models/items';\nimport { FsFilterOverlayService, ItemStore } from '../../../services';\nimport { ParamController } from '../../../services/param-controller.service';\nimport { SavedFilterController } from '../../../services/saved-filter-controller.service';\n\nimport { FsFilterSavedFilterChipsComponent } from './components/saved-filter-chips';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n FsFilterSavedFilterChipsComponent,\n FsMenuModule,\n ],\n})\nexport class FsFilterSavedFilterManageComponent implements OnInit {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFilterController = inject(SavedFilterController);\n private _cdRef = inject(ChangeDetectorRef);\n private _paramController = inject(ParamController);\n private _itemStore = inject(ItemStore);\n private _dialogRef = inject(MatDialogRef);\n private _filterOverlayService = inject(FsFilterOverlayService);\n\n public ngOnInit(): void {\n this.savedFilters = this._savedFilterController.savedFilters;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._itemStore.items;\n }\n\n public get pluralLabelLower(): string {\n return this._savedFilterController.pluralLabelLower;\n }\n\n public get sortable(): boolean {\n return this._savedFilterController.orderable;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._filterOverlayService.open();\n this._dialogRef.close();\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = this._savedFilterController.savedFilters;\n this._cdRef.markForCheck();\n });\n }\n\n public order(savedFilters: IFilterSavedFilter[]) {\n this._savedFilterController.order(savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n Manage {{ pluralLabelLower }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\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>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { map, Observable, switchMap, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { ItemStore } from '../../../services/item-store.service';\nimport { ParamController } from '../../../services/param-controller.service';\nimport type { SavedFilterController } from '../../../services/saved-filter-controller.service';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter-manage';\n\n\n@Component({\n selector: 'fs-saved-filter-autocomplete-chips',\n templateUrl: './saved-filter-autocomplete-chips.component.html',\n styleUrls: ['./saved-filter-autocomplete-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FormsModule,\n ],\n})\nexport class FsSavedFilterAutocompleteChipsComponent implements OnInit {\n\n @Input()\n public savedFiltersController: SavedFilterController;\n\n public selectedFilter: IFilterSavedFilter;\n\n private _itemStore = inject(ItemStore);\n private _paramController = inject(ParamController);\n private _dialog = inject(MatDialog);\n private _destroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n private _prompt = inject(FsPrompt);\n private _message = inject(FsMessage);\n \n public get filters$(): Observable<IFilterSavedFilter[]> {\n return this.savedFiltersController.savedFilters$;\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this.savedFiltersController.activeFilter$;\n }\n\n public get pluralLabelLower(): string {\n return this.savedFiltersController.pluralLabelLower;\n }\n\n public get pluralLabel(): string {\n return this.savedFiltersController.pluralLabel;\n }\n\n public get labelIcon(): string {\n return this.savedFiltersController.labelIcon;\n }\n\n public compareWith = (o1: IFilterSavedFilter, o2: IFilterSavedFilter): boolean => {\n return o1?.id === o2?.id;\n };\n\n public selectFilter(savedFilter: IFilterSavedFilter): void {\n this.savedFiltersController.setActiveFilter(savedFilter);\n }\n\n public selectedFilterChange(savedFilter: IFilterSavedFilter): void {\n this.savedFiltersController.setActiveFilter(savedFilter);\n\n if (!savedFilter) {\n this._itemStore.filtersClear();\n }\n }\n\n public ngOnInit(): void {\n this.savedFiltersController.activeFilter$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((savedFilter) => {\n this.selectedFilter = savedFilter;\n this._cdRef.markForCheck();\n });\n }\n\n public save(): void {\n this.savedFiltersController\n .save(this.selectedFilter)\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this.savedFiltersController.singularLabel}`);\n }),\n )\n .subscribe();\n }\n\n public create(): void {\n this.savedFiltersController.create()\n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this.savedFiltersController.singularLabel}`,\n );\n }),\n )\n .subscribe();\n }\n\n public saveAs(): void {\n this._prompt.input({\n title: 'Save as new alert',\n label: 'Name',\n required: true,\n commitLabel: 'Save',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n filters: { ...this.savedFiltersController.activeFilter.filters },\n };\n\n return this.savedFiltersController.save(data);\n }),\n tap(() => {\n this._message.success(`Saved ${this.savedFiltersController.singularLabel}`);\n }),\n )\n .subscribe();\n } \n\n\n public fetch = (query: string) => {\n return this.savedFiltersController.savedFilters$\n .pipe(\n map((filters: IFilterSavedFilter[]) => filters\n .filter((filter: IFilterSavedFilter) => filter\n .name.toLowerCase().includes(query.toLowerCase()))),\n );\n };\n\n public manageFilters(): void {\n this._dialog\n .open(FsFilterSavedFilterManageComponent, {\n injector: this._injector,\n restoreFocus: false,\n });\n }\n}\n","<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>","import { Directive, TemplateRef } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n standalone: true,\n})\nexport class FilterStatusBarDirective {\n\n 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 { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatFormField, MatPrefix } from '@angular/material/form-field';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { FilterIcon } from '../../consts';\nimport { objectsAreEquals } from '../../helpers/compare';\nimport { IFilterSavedFilter, ISortingChangeEvent, KeyValue } 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 { FsFilterOverlayService } from '../../services/filter-overlay.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { ItemStore } from '../../services/item-store.service';\nimport { ParamController } from '../../services/param-controller.service';\nimport { PersistanceController } from '../../services/persistance-controller.service';\nimport { QueryParamController } from '../../services/query-param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterActionsComponent } from '../actions/actions.component';\nimport { FsFilterChipsComponent } from '../filter-chips/filter-chips.component';\nimport { FsSavedFilterAutocompleteChipsComponent } from '../saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component';\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 ParamController,\n PersistanceController,\n QueryParamController,\n FocusControllerService,\n ItemStore,\n SavedFilterController,\n ActionsController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n FsSavedFilterAutocompleteChipsComponent,\n MatFormField,\n NgClass,\n MatPrefix,\n MatIcon,\n MatInput,\n FormsModule,\n FsFormModule,\n FsClearModule,\n FsFilterChipsComponent,\n FsFilterActionsComponent,\n MatIconAnchor,\n MatSlideToggle,\n AsyncPipe,\n ],\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 public searchPlaceholder = 'Search';\n public keyword = '';\n public autoReload = true;\n\n private _config: FsFilterConfig = null;\n private _sort: FilterSort;\n private _filtersBtnVisible$ = new BehaviorSubject(true);\n private _keywordVisible$ = new BehaviorSubject(false);\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 private _defaultConfig = inject(FS_FILTER_CONFIG, { optional: true });\n private _filterOverlay = inject(FsFilterOverlayService);\n private _zone = inject(NgZone);\n private _paramController = inject(ParamController);\n private _persistanceController = inject(PersistanceController);\n private _itemStore = inject(ItemStore);\n private _actions = inject(ActionsController);\n private _savedFilterController = inject(SavedFilterController);\n\n constructor(\n ) {\n this._itemStore.filter = this;\n this._listenWhenFilterReady();\n this._updateWindowWidth();\n\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n \n iconRegistry.addSvgIconLiteral('filterOutline', sanitizer.bypassSecurityTrustHtml(FilterIcon));\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._itemStore.values();\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n public get filterParamsQuery(): KeyValue {\n return this._itemStore.valuesAsQuery();\n }\n\n public get items() {\n return this._itemStore.items;\n }\n\n public get visibleItems() {\n return this._itemStore.visibleItems;\n }\n\n public get keywordItem(): TextItem | null {\n return this._itemStore.keywordItem;\n }\n\n public get itemsReady$(): Observable<boolean> {\n return this._itemStore.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._itemStore.sortByItem;\n }\n\n public get filtersBtnVisible$(): Observable<boolean> {\n return this._filtersBtnVisible$.asObservable();\n }\n\n public get inlineToolbar$(): Observable<boolean> {\n return combineLatest({\n keywordVisible: this._keywordVisible$.asObservable(),\n activeFilter: of(this.savedFiltersController.enabled),\n })\n .pipe(\n map(({ keywordVisible, activeFilter }) => {\n return !keywordVisible && !activeFilter;\n }),\n );\n }\n\n public get notInlineToolbar$(): Observable<boolean> {\n return this.inlineToolbar$\n .pipe(\n map((inline) => !inline),\n );\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._savedFilterController.setActiveFilter(savedFilter);\n }\n\n public get activeSavedFilter(): IFilterSavedFilter {\n return this._savedFilterController.activeFilter;\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilterController.savedFilters;\n }\n\n public get savedFiltersController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public ngOnInit() {\n this._initAutoFocus();\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._itemStore.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 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._itemStore.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._itemStore.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._itemStore.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 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._itemStore.valuesAsQuery();\n this._sort = this._itemStore.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._itemStore.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keyword = '';\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const data = this._itemStore.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._itemStore.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._paramController.fetchQueryParams();\n }\n\n /**\n * Call change callback and apply new filter values\n */\n public change() {\n const valuesAsQuery = this._itemStore.valuesAsQuery();\n const sort = this._itemStore.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(valuesAsQuery, sort);\n }\n }\n\n if (this.config.change) {\n this.config.change(valuesAsQuery, 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._itemStore.destroyItems();\n this.config.items = items;\n this._itemStore.setConfig(this._config);\n this._paramController.initItems();\n this._updateKeyword();\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n public updateSortings(items: SortItem[]): void {\n this._itemStore.updateSortingItemsValues(items);\n }\n\n private _initFilterWithConfig(config: FilterConfig) {\n if (this.config) {\n this._itemStore.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._persistanceController.setConfig(this._config, this.inDialog);\n this._itemStore.setConfig(this._config);\n this._paramController.setConfig(this._config);\n\n this._updateKeyword();\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._itemStore.keywordItem;\n keywordItem.model = value;\n this.change();\n });\n }\n\n private _initKeywordVisibility() {\n this._keywordVisible$.next(!!this.keywordItem && !this.keywordItem?.hide);\n }\n\n private _initAutoFocus() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.config.autofocus) {\n this.focus();\n }\n });\n }\n\n private _listenInternalItemsChange() {\n this._itemStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.keyword = this._itemStore.keywordItem?.model;\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._paramController.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._updateKeyword();\n\n this.ready.emit();\n });\n }\n\n private _updateKeyword() {\n this.keyword = this._itemStore.keywordItem?.model;\n }\n\n private _updateChipsVisibility() {\n const hasFilterChips = this._itemStore.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 @if (notInlineToolbar$ | async) {\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n }\n <div class=\"filter-inner-container\">\n @if (notInlineToolbar$ | async) {\n <div class=\"filter-inner-inputs\">\n @if (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 }\n @if (savedFiltersController.enabled) {\n <fs-saved-filter-autocomplete-chips [savedFiltersController]=\"savedFiltersController\"></fs-saved-filter-autocomplete-chips>\n }\n </div>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"filterToolbar\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"filterActions\"></ng-container>\n </div>\n @if (notInlineToolbar$ | async) {\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n }\n</div>\n<ng-template #filterStatusBarChips>\n @if (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 }\n @if (config.chips && hasFilterChips$ | async) {\n <fs-filter-chips\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n }\n</ng-template>\n<ng-template #filterActions>\n @if (actionsVisible$ | async) {\n <div class=\"filter-actions\">\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbar>\n @if (config.reload || config.autoReload || ((filtersBtnVisible$ | async) && hasVisibleItemOrSorting)) {\n <div class=\"filter-toolbar\">\n @if ((filtersBtnVisible$ | async) && 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 @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 }\n</ng-template>\n<ng-template #heading>\n @if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\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 standalone: true,\n})\nexport class SelectBackdropComponent {\n constructor() {}\n}\n","","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsStore } 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 { FsSavedFilterAutocompleteChipsComponent } from './components/saved-filter';\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 FsSavedFilterAutocompleteChipsComponent,\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 FsFilterActionsComponent,\n FsFilterActionButtonComponent,\n FsFilterActionKebabActionsComponent,\n FilterStatusBarDirective,\n FocusToItemDirective,\n FsFilterIsolateValues,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\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","i1","i2","i4","i5","tap","i2.ItemStore","i1.FocusControllerService","i3","arrayRemove","switchMap","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-filter.mjs","sources":["../../src/app/enums/item-type.enum.ts","../../src/app/models/items/base-item.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/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-item.ts","../../src/app/models/items/date-time-range-item.ts","../../src/app/models/items/range-item.ts","../../src/app/models/items/select/base-select-item.ts","../../src/app/helpers/compare.ts","../../src/app/models/items/select/multiple-select-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/parse-date.ts","../../src/app/models/items/week-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/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/item-store.service.ts","../../src/app/services/saved-filter-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/providers/filter-meta.ts","../../src/app/services/filter-overlay.service.ts","../../src/app/services/persistance-controller.service.ts","../../src/app/helpers/parse-item-value-from-stored.ts","../../src/app/helpers/restore-items.ts","../../src/app/services/query-param-controller.service.ts","../../src/app/services/param-controller.service.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/text/text.component.ts","../../src/app/components/filters-item/text/text.component.html","../../src/app/pipes/remove-isolate-value.pipe.ts","../../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/simple/simple.component.ts","../../src/app/components/filters-item/select/simple/simple.component.html","../../src/app/components/filters-item/select/groups/groups.component.ts","../../src/app/components/filters-item/select/groups/groups.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/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/week/week.component.ts","../../src/app/components/filters-item/week/week.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/consts/filter-icon.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.ts","../../src/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.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-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.ts","../../src/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.html","../../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/fs-filter.module.ts","../../src/firestitch-filter.ts"],"sourcesContent":["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 public 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 { 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}`).trim());\n\n return acc;\n }, [])\n .join(', ');\n }\n\n public setModel(value) {\n super.setModel(value || []);\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}\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 public 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 _validateModel() {\n //\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 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 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 _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","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 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 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 _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 {\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","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 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 { 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","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 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 public getChipsContent(): 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 _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 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 public setModel(value): void {\n if (value) {\n if (!isNaN(value)) {\n value = +value;\n }\n }\n\n super.setModel(value);\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 _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 { 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 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 public getChipsContent(type = null): string {\n return formatPeriodObject(this.value);\n }\n\n protected _validateModel() {\n //\n }\n\n protected _init() { \n //\n }\n\n protected _clearValue(defaultValue: unknown = undefined) {\n this.model = defaultValue ?? undefined;\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 { KeyValue } from '../interfaces';\nimport { IFilterConfigItem } from '../interfaces/config.interface';\nimport { CheckboxItem, MultipleSelectItem } from '../models/items';\nimport { BaseItem } from '../models/items/base-item';\n\nimport { arraysAreEquals } from './compare';\nimport { filterToQueryParam } from './query-param-transformers';\n\n\nexport function buildQueryParams(flattenedParams: KeyValue, 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 } else if (filterItem instanceof CheckboxItem) {\n if(filterItem.checked) {\n flattenedParams[filterItem.name] = filterItem.model;\n }\n } else 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","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 public heading: string;\n public subheading: string;\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 heading: data.heading,\n subheading: data.subheading,\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 { buildQueryParams } from '../helpers/build-query-params';\nimport { createFilterItem } from '../helpers/create-filter-item';\nimport {\n FilterSort,\n IFilterConfigItem,\n SortItem,\n} from '../interfaces/config.interface';\nimport { KeyValue } 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 ItemStore 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 private _itemsValuesLoaded = false;\n private _hasKeyword = false;\n private _config: FsFilterConfig;\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 this._setKeywordItem();\n }\n }\n\n public queryParams(): KeyValue {\n return buildQueryParams(this.valuesAsQuery(), this.items);\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 models(): KeyValue {\n return this.items\n .reduce((acc, item) => {\n acc[item.name] = item.model;\n\n return acc;\n }, {});\n }\n\n public valuesAsQuery({\n onlyPresented = true,\n items = null,\n persisted = false,\n }: IValueAsQuery = {}): KeyValue {\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: KeyValue) {\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: KeyValue) {\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 });\n }\n\n private _initSortingItems(p: KeyValue): 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 { inject, Injectable, OnDestroy } from '@angular/core';\n\n\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { KeyValue } from '../interfaces/external-params.interface';\nimport {\n IFilterSavedFilter,\n IFilterSavedFiltersConfig,\n} from '../interfaces/saved-filters.interface';\n\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class SavedFilterController implements OnDestroy {\n\n private _config: IFilterSavedFiltersConfig;\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 private _itemStore = inject(ItemStore);\n private _prompt = inject(FsPrompt);\n\n public get singularLabel(): string {\n return this._config?.label?.singular || 'Saved filter';\n }\n\n public get singularLabelLower(): string {\n return this.singularLabel.toLowerCase();\n }\n\n public get labelIcon(): string {\n return this._config?.label?.icon || 'save';\n }\n\n public get pluralLabel(): string {\n return this._config?.label?.plural || 'Saved filters';\n }\n\n public get pluralLabelLower(): string {\n return this.pluralLabel.toLowerCase();\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(): KeyValue {\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 filterSavedFiltersConfig: IFilterSavedFiltersConfig,\n ): void {\n if (!filterSavedFiltersConfig) {\n this._setEnabledStatus(false);\n\n return;\n }\n this._setEnabledStatus(true);\n\n this._config = filterSavedFiltersConfig;\n }\n\n public initSavedFilters(savedFilters: IFilterSavedFilter[]): void {\n this.savedFilters = savedFilters;\n const acitveFilter = this.savedFilters\n .find((f) => f.active);\n\n if (acitveFilter) {\n this._activeFilter$.next(acitveFilter);\n }\n }\n\n public load(): Observable<IFilterSavedFilter[]> {\n if (!this.enabled) {\n return of([]);\n }\n\n return this._config.load()\n .pipe(\n tap((savedFilters) => {\n this.initSavedFilters(savedFilters);\n }),\n );\n }\n\n public create(): Observable<IFilterSavedFilter> {\n return this._prompt.input({\n title: `Create ${this.singularLabel}`,\n label: 'Name',\n required: true,\n commitLabel: 'Create',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n };\n\n return this.save(data);\n }),\n tap((savedFilter) => {\n this.setActiveFilter(savedFilter);\n }),\n );\n }\n\n public save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter> {\n savedFilter = {\n ...(this.activeFilter || {}),\n ...savedFilter,\n filters: this._itemStore.items\n .filter((item) => item.hasValue)\n .reduce((accum, item) => {\n return {\n ...accum,\n [item.name]: item.model,\n };\n }, {}),\n }; \n\n return this._config.save(savedFilter)\n .pipe(\n tap((_savedFilter) => {\n this.savedFilters = this.activeFilter?.id ? this.savedFilters\n .map((f) => f.id === savedFilter.id ? _savedFilter : f) : [\n ...this.savedFilters,\n _savedFilter,\n ];\n \n this.setActiveFilter(_savedFilter);\n }),\n );\n }\n\n public get orderable(): boolean {\n return !!this._config.order;\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 if (this.activeFilter?.id === savedFilter.id) {\n this.setActiveFilter(null);\n }\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 private _setEnabledStatus(value: boolean): void {\n this._enabled$.next(value);\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';\nimport { NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';\nimport { MatIconButton, MatFabButton, MatMiniFabButton, MatButton } from '@angular/material/button';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatIcon } from '@angular/material/icon';\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 standalone: true,\n imports: [\n NgSwitch,\n NgSwitchCase,\n MatIconButton,\n NgClass,\n NgTemplateOutlet,\n MatFabButton,\n MatMiniFabButton,\n NgSwitchDefault,\n MatButton,\n FsFormModule,\n NgIf,\n MatIcon,\n AsyncPipe,\n ],\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';\nimport { MatIconButton } from '@angular/material/button';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { AsyncPipe } from '@angular/common';\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 standalone: true,\n imports: [\n MatIconButton,\n FsMenuModule,\n MatIcon,\n AsyncPipe,\n ],\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 @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\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 @for (subAction of childAction.items; track subAction) {\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 @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\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 @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('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 @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\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';\nimport { FsFilterActionButtonComponent } from '../action-button/action-button.component';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsMenuModule } from '@firestitch/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsSelectButtonModule } from '@firestitch/selectbutton';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { FsFileModule } from '@firestitch/file';\nimport { FsFilterActionKebabActionsComponent } from '../action-kebab-actions/action-kebab-actions.component';\n\n\n@Component({\n selector: 'fs-filter-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterActionButtonComponent,\n FsPopoverModule,\n FsMenuModule,\n MatIcon,\n MatSelect,\n FsSelectButtonModule,\n NgClass,\n FormsModule,\n FsFormModule,\n MatOption,\n FsFileModule,\n FsFilterActionKebabActionsComponent,\n AsyncPipe,\n ],\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","@for (action of actions; track action) {\n @switch (action.mode) {\n @case (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 }\n @case (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 @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group [label]=\"childAction.label\">\n @for (subAction of childAction.items; track subAction) {\n @switch (subAction.mode) {\n @case ('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 @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n @case ('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 @if (subAction.icon) {\n <mat-icon>\n {{ subAction.icon }}\n </mat-icon>\n }\n {{ subAction.label }}\n </ng-template>\n }\n }\n }\n </fs-menu-group>\n } @else {\n @switch (childAction.mode) {\n @case ('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 @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n @case ('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 @if (childAction.icon) {\n <mat-icon>\n {{ childAction.icon }}\n </mat-icon>\n }\n {{ childAction.label }}\n </ng-template>\n }\n }\n }\n }\n </fs-menu>\n }\n @case (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 @for (item of action.values; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n }\n @case (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 }\n }\n}\n@if (kebabActions?.length) {\n <fs-filter-action-kebab-actions [kebabActions]=\"kebabActions\"></fs-filter-action-kebab-actions>\n}\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 standalone: true,\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 { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { FsChipModule } from '@firestitch/chip';\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';\nimport { FsFilterChipContentComponent } from '../filter-chip-content/filter-chip-content.component';\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 standalone: true,\n imports: [\n FsChipModule,\n NgTemplateOutlet,\n FsFilterChipContentComponent,\n AsyncPipe,\n ],\n})\nexport class FsFilterChipComponent implements OnInit, OnDestroy {\n\n @Input() public item: BaseItem<IFilterConfigItem>;\n @Input() public removable: boolean = false;\n \n @Input() \n @HostBinding('class.clickable') \n public clickable: boolean = false;\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 private _cdRef = inject(ChangeDetectorRef);\n private _focusController = inject(FocusControllerService);\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 click(type = null) {\n if (this.clickable) {\n this._focusController.click(this.item, type);\n }\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","@if (!item.hasPendingValues || (chipDelayedRender$ | async)) {\n @if (rangeItem) {\n @if (item.model?.min || item.model?.from) {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear\"\n size=\"small\"\n [removable]=\"removable\"\n (click)=\"click('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 }\n @if (item.model?.max || item.model?.to) {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear && removable\"\n size=\"small\"\n (click)=\"click('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 }\n } @else {\n <fs-chip\n [value]=\"item\"\n [selectable]=\"false\"\n [removable]=\"item.showClear && removable\"\n size=\"small\"\n (click)=\"click()\"\n (removed)=\"removeItem($event)\">\n <ng-template\n [ngTemplateOutlet]=\"chipContent\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </fs-chip>\n }\n <ng-template\n #chipContent\n let-item=\"item\"\n let-type=\"type\">\n @if (!item.hasPendingValues && !item.loading) {\n <fs-filter-chip-content\n [item]=\"item\"\n [type]=\"type\">\n </fs-filter-chip-content>\n } @else {\n Loading...\n }\n </ng-template>\n}","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { ItemType } from '../../enums';\nimport { BaseItem } from '../../models/items/base-item';\nimport { FsFilterChipComponent } from '../filter-chip/filter-chip.component';\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 standalone: true,\n imports: [FsFilterChipComponent, AsyncPipe],\n})\nexport class FsFilterChipsComponent {\n\n @Input() public filters: BaseItem<any>[];\n\n public ItemType = ItemType;\n}\n","@for (item of filters; track item) {\n @if ((item.value$ | async) !== undefined && item.type !== ItemType.Keyword) {\n @if (item.isChipVisible) {\n <fs-filter-chip\n [item]=\"item\"\n [clickable]=\"true\"\n [removable]=\"true\">\n </fs-filter-chip>\n }\n }\n}","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\n\nimport { tap } from 'rxjs';\n\nimport type { SavedFilterController } from '../../services/saved-filter-controller.service';\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 standalone: true,\n imports: [\n MatButton,\n FsFormModule,\n AsyncPipe,\n ],\n})\nexport class FsFilterDrawerActionsComponent {\n\n @Input()\n public savedFiltersController: SavedFilterController;\n\n @Output('clear')\n private _clear = new EventEmitter<void>();\n\n @Output('done')\n private _done = new EventEmitter<void>();\n\n private _message = inject(FsMessage);\n\n public done(): void {\n this._done.emit();\n }\n\n public clear(): void {\n this._clear.emit();\n }\n\n public createFilter(): void {\n this.savedFiltersController.create() \n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this.savedFiltersController.singularLabel}`,\n { positionClass: 'toast-bottom-left' },\n );\n }),\n )\n .subscribe();\n }\n \n}\n","<div class=\"filter-drawer-actions-container\">\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"done()\">\n Done\n </button>\n @if (savedFiltersController.enabled) {\n @if (savedFiltersController.activeFilter$ | async) {\n <button\n mat-button\n type=\"submit\">\n Save\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n (click)=\"createFilter()\">\n Create\n {{ savedFiltersController.singularLabelLower }}\n </button>\n }\n }\n <button\n mat-button\n type=\"button\"\n (click)=\"clear()\">\n Clear\n </button>\n</div>","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\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport const FILTER_DRAWER_OVERLAY = new InjectionToken<OverlayRef>('fs.filter-drawer-overlay');\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, StaticProvider } from '@angular/core';\n\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } 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 } 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 private _injector = inject(Injector);\n private _overlay = inject(Overlay);\n private _focusController = inject(FocusControllerService);\n private _htmlClassRenderer = inject(HtmlClassRenderer);\n private _filterMeta = inject(FS_FILTER_META);\n\n constructor() {\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: Injector, data: any, overlayRef: any): Injector {\n const providers: StaticProvider[] = [\n { provide: FILTER_DRAWER_DATA, useValue: data },\n { provide: FILTER_DRAWER_OVERLAY, useValue: overlayRef },\n ];\n \n return Injector.create({\n providers,\n parent: parentInjector,\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 { 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 PersistanceController {\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 { 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 { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { restoreItems } from '../helpers/restore-items';\n\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class QueryParamController {\n\n private _enabled = false;\n private _params: Record<string, any>;\n\n constructor(\n private _route: ActivatedRoute,\n private _itemStore: ItemStore,\n ) {}\n\n public get enabled(): boolean {\n return this._enabled;\n }\n\n public get params() {\n return this._params;\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._itemStore.items,\n this._itemStore.sortByItem,\n this._itemStore.sortDirectionItem,\n ]\n .filter((item) => !!item);\n\n this._params = 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 { inject, Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { buildQueryParams } from '../helpers/build-query-params';\nimport { KeyValue } from '../interfaces';\nimport { FsFilterConfig } from '../models/filter-config';\n\nimport {\n PersistanceController,\n QueryParamController,\n SavedFilterController,\n} from '.';\nimport { ItemStore } from './item-store.service';\n\n\n@Injectable()\nexport class ParamController implements OnDestroy {\n\n private _pending$ = new BehaviorSubject(false);\n private _config: FsFilterConfig;\n private _destroy$ = new Subject<void>();\n private _itemStore = inject(ItemStore);\n private _persistanceController = inject(PersistanceController);\n private _queryParams = inject(QueryParamController);\n private _savedFilterController = inject(SavedFilterController);\n\n public get params(): KeyValue {\n let result: KeyValue = {};\n\n if (this._persistanceController.queryEnabled) {\n result = {\n ...result, \n ...this._persistanceController.getQuery(),\n };\n }\n\n if (this._savedFilterController.enabled && this._savedFilterController.activeFilter) {\n const query = Object.keys(result)\n .filter((key) => !this._itemStore.itemNames.includes(key))\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: result[key],\n };\n }, {});\n\n result = {\n ...query, \n ...this._savedFilterController.activeFilterData,\n };\n } else if (this._queryParams.enabled) {\n result = {\n ...result, \n ...this._queryParams.params,\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 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 reloadFiltersWithValues(params: KeyValue) {\n this._itemStore.updateItemsWithValues(params);\n\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public initItems(): void {\n of(null)\n .pipe(\n tap(() => this._pending$.next(true)),\n switchMap(() => this._savedFilterController.load() ),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._initItemsValues();\n this._pending$.next(false);\n this._listenItemsChange();\n this._listenSavedFilterChange();\n });\n }\n\n public _initItemsValues() {\n this._itemStore.init(this.params);\n this._saveQueryParams();\n this._savePersistedParams();\n }\n\n public fetchQueryParams(): void {\n this._initQueryParams();\n this._itemStore.updateItemsWithValues(this.params);\n }\n\n private _initQueryParams() {\n this._queryParams.init(this._config.queryParam);\n }\n\n private _initSavedFilters() {\n this._savedFilterController.init(this._config.savedFilters);\n }\n\n private _listenSavedFilterChange() {\n this._savedFilterController.activeFilter$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((savedFilter) => {\n if (savedFilter) {\n this.reloadFiltersWithValues(savedFilter.filters);\n } else {\n this._itemStore.filtersClear();\n }\n });\n }\n\n private _listenItemsChange() {\n this._itemStore.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._itemStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._saveQueryParams();\n this._savePersistedParams();\n });\n }\n\n private _saveQueryParams() {\n const params = buildQueryParams(\n this._itemStore\n .valuesAsQuery({\n onlyPresented: false,\n items: this._itemStore.items,\n persisted: true,\n }),\n this._itemStore.items,\n );\n \n this._itemStore.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._persistanceController.queryEnabled) {\n const targetItems = this._itemStore.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._persistanceController.setQuery(targetItems);\n }\n }\n}\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 standalone: true,\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 standalone: true,\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 KeyValueDiffers,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormControl, FormsModule, ReactiveFormsModule } 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';\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\n\n\n@Component({\n selector: 'filter-item-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n ReactiveFormsModule,\n FocusToItemDirective,\n MatSuffix,\n ],\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 @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [formControl]=\"textControl\"\n [fsFilterFocusTrigger]=\"item\">\n @if (item.suffix) {\n <span\n matSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { BaseItem } from '../models/items/base-item';\n\n\n@Pipe({\n name: 'fsFilterIsolateValues',\n standalone: true,\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 { MultipleSelectItem } from '../../../../models/items/select/multiple-select-item';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FsFilterIsolateValues } from '../../../../pipes/remove-isolate-value.pipe';\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 standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatHint,\n MatCheckbox,\n FsFilterIsolateValues,\n ],\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 @for (item of item.values | fsFilterIsolateValues: item.isolate; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\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 Input,\n ViewChild,\n} from '@angular/core';\n\nimport { MatSelect } from '@angular/material/select';\n\nimport { SimpleSelectItem } from '../../../../models/items/select/simple-select-item';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOption } from '@angular/material/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FsFilterIsolateValues } from '../../../../pipes/remove-isolate-value.pipe';\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 standalone: true,\n imports: [\n MatFormField,\n NgClass,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOption,\n MatCheckbox,\n FsFilterIsolateValues,\n ],\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 @for (item of item.values | fsFilterIsolateValues: item.isolate; track item) {\n <mat-option\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n }\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { FocusToItemDirective } from '../../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'filter-item-select-groups',\n templateUrl: './groups.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatSelect,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n MatOptgroup,\n MatOption,\n NgStyle,\n ],\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 @for (selectItem of item.values; track selectItem) {\n @if (selectItem[item.children]) {\n <mat-optgroup [label]=\"selectItem.name\">\n @for (subItem of selectItem[item.children]; track subItem) {\n <mat-option\n [value]=\"subItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ subItem.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option\n [value]=\"selectItem.value\"\n [ngStyle]=\"selectItem.style\">\n {{ selectItem.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n","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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { SelectGroupsComponent } from './groups/groups.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'filter-item-select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatSelect,\n SelectMultipleComponent,\n SelectSimpleComponent,\n SelectGroupsComponent,\n AsyncPipe,\n ],\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","@if ((item.loading$ | async)) {\n <mat-form-field>\n <mat-label>{{item.label}}</mat-label>\n <mat-select disabled></mat-select>\n </mat-form-field>\n} @else {\n @if ((values$ | async)?.length) {\n @if (item.multiple && !item.children) {\n <filter-item-select-multiple\n [item]=\"multipleSelectItem\"\n #selectItem>\n </filter-item-select-multiple>\n }\n @if (!item.multiple && !item.children) {\n <filter-item-select-simple\n [item]=\"simpleSelectItem\"\n #selectItem>\n </filter-item-select-simple>\n }\n @if (item.children) {\n <filter-item-select-groups\n [item]=\"item\"\n #selectItem>\n </filter-item-select-groups>\n }\n }\n}\n\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';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsChipModule } from '@firestitch/chip';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n FsChipModule,\n FormsModule,\n FsFormModule,\n ],\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 compareFn = (modelValue, chipValue) => {\n return String(modelValue.value) === String(chipValue.value);\n };\n}\n","@if (item.values?.length) {\n <fs-label-field>\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"item.model\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}\n@if (item.loading) {\n {{ item.label }} loading...\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';\nimport { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-range',\n templateUrl: './range.component.html',\n styleUrls: ['./range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatPrefix,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsFormModule,\n MatSuffix,\n ],\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 @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'from'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field class=\"filter-range-max\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"item\"\n [focusTargetType]=\"'to'\"\n type=\"text\"\n inputmode=\"decimal\"\n [(ngModel)]=\"item.model.max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\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';\nimport { FsAutocompleteModule } from '@firestitch/autocomplete';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-autocomplete',\n templateUrl: './autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { remove as arrayRemove } from '@firestitch/common';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\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 standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FocusToItemDirective,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-date',\n templateUrl: './date.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\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';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-date-range',\n templateUrl: './date-range.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FocusToItemDirective,\n FsDatePickerModule,\n FsFormModule,\n ],\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 OnInit\n} from '@angular/core';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { WeekItem } from '../../../models/items/week-item';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FsDatePickerModule } from '@firestitch/datepicker';\nimport { FocusToItemDirective } from '../../../directives/focus-to-item/focus-to-item.directive';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-week',\n templateUrl: './week.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n FormsModule,\n FsDatePickerModule,\n FocusToItemDirective,\n FsFormModule,\n ],\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,\n KeyValueDiffers,\n} from '@angular/core';\n\n\nimport { CheckboxItem } from '../../../models/items/checkbox-item';\nimport { BaseItemComponent } from '../base-item/base-item.component';\nimport { FsLabelModule } from '@firestitch/label';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\n\n\n@Component({\n selector: 'filter-item-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsLabelModule,\n MatCheckbox,\n FormsModule,\n FsFormModule,\n ],\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';\nimport { TextComponent } from './text/text.component';\nimport { SelectComponent } from './select/select.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { RangeComponent } from './range/range.component';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompletechipsComponent } from './autocompletechips/autocompletechips.component';\nimport { DateComponent } from './date/date.component';\nimport { DateRangeComponent } from './date-range/date-range.component';\nimport { WeekComponent } from './week/week.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\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 standalone: true,\n imports: [\n TextComponent,\n SelectComponent,\n ChipsComponent,\n RangeComponent,\n AutocompleteComponent,\n AutocompletechipsComponent,\n DateComponent,\n DateRangeComponent,\n WeekComponent,\n CheckboxComponent,\n ],\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 @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n class=\"interface\"\n [item]=\"textItem\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n class=\"interface\"\n [item]=\"baseSelectItem\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n class=\"interface interface-range\"\n [item]=\"rangeItem\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n class=\"interface\"\n [item]=\"autocompleteItem\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n class=\"interface\"\n [item]=\"autocompleteChipsItem\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n class=\"interface interface-date\"\n [item]=\"dateItem\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n class=\"interface\"\n [item]=\"weekItem\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\">\n </filter-item-checkbox>\n }\n }\n\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n HostListener,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { Observable, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { ItemStore } from '../../services/item-store.service';\nimport { ParamController } from '../../services/param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterDrawerActionsComponent } from '../filter-drawer-actions/filter-drawer-actions.component';\nimport { FilterItemComponent } from '../filters-item/filter-item.component';\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 standalone: true,\n imports: [\n FormsModule,\n FsFormModule,\n MatIcon,\n MatFormField,\n MatLabel,\n MatInput,\n FsSkeletonModule,\n FilterItemComponent,\n FsFilterDrawerActionsComponent,\n AsyncPipe,\n ],\n})\nexport class FilterDrawerComponent implements OnInit {\n\n @Input() public inline = false;\n\n public windowDesktop = false;\n public savedFilterName = '';\n\n protected _clear: () => void;\n protected _done: () => void;\n protected _destroyRef = inject(DestroyRef);\n\n private _savedFilterController = inject(SavedFilterController);\n private _message = inject(FsMessage);\n private _itemStore = inject(ItemStore);\n private _overlayRef = inject(FILTER_DRAWER_OVERLAY);\n private _data = inject(FILTER_DRAWER_DATA);\n private _paramController = inject(ParamController);\n\n constructor(\n ) {\n this._itemStore.prepareItems();\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._itemStore.visibleItems$;\n }\n\n public get paramCointroller(): ParamController {\n return this._paramController;\n }\n\n public get savedFiltersController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public ngOnInit(): void {\n this._savedFilterController.activeFilter$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((activeFilter) => {\n this.savedFilterName = activeFilter?.name || '';\n });\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 public saveSavedFilter = () => {\n return this._savedFilterController\n .save({ name: this.savedFilterName })\n .pipe(\n tap((savedFilter) => {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._message\n .success(`Saved ${this._savedFilterController.singularLabel}`, { \n positionClass: 'toast-bottom-left', \n });\n }),\n );\n };\n}\n","<form\n fsForm\n [submit]=\"saveSavedFilter\"\n [dirtySubmitButton]=\"false\">\n <div class=\"filters\">\n <div class=\"filters-wrap\">\n @if (savedFiltersController.activeFilter$ | async) {\n <div class=\"filter-heading\">\n <mat-icon>\n {{ savedFiltersController.labelIcon }}\n </mat-icon>\n <span class=\"text\">\n {{ savedFiltersController.singularLabel }}\n </span>\n </div>\n <div class=\"filter-name\">\n <mat-form-field>\n <mat-label>\n {{ savedFiltersController.singularLabel }} name\n </mat-label>\n <input\n matInput\n required\n [(ngModel)]=\"savedFilterName\"\n name=\"savedFilterName\">\n </mat-form-field>\n <hr>\n <br>\n </div>\n } @else {\n <div class=\"filter-heading\">\n <mat-icon svgIcon=\"filterOutline\"></mat-icon>\n <span class=\"text\">\n Filters\n </span>\n </div>\n }\n <div class=\"overflow-shadow filter-items\">\n <div class=\"overflow-shadow-content\">\n <ng-container *fsSkeleton=\"(paramCointroller.pending$ | async) !== true\">\n @for (filterItem of items$ | async; track filterItem) {\n <filter-item\n class=\"filter-group\"\n [item]=\"filterItem\">\n </filter-item>\n }\n </ng-container>\n </div>\n </div>\n @if ((paramCointroller.pending$ | async) !== true) {\n <fs-filter-drawer-actions\n [savedFiltersController]=\"savedFiltersController\"\n class=\"filter-actions\"\n (clear)=\"clear()\"\n (done)=\"done()\">\n </fs-filter-drawer-actions>\n }\n </div>\n </div>\n @if (!windowDesktop) {\n <div\n class=\"backdrop\"\n (click)=\"backdropClick()\">\n </div>\n }\n</form>","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","export const FilterIcon = '<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","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { IFilterConfigItem } from '../../../../../interfaces';\nimport { IFilterSavedFilter } from '../../../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../../../models/items';\nimport { ItemStore } from '../../../../../services';\nimport { FsFilterChipComponent } from '../../../../filter-chip/filter-chip.component';\n\n\n@Component({\n selector: 'fs-saved-filter-chips',\n templateUrl: './saved-filter-chips.component.html',\n styleUrls: ['./saved-filter-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFilterChipComponent,\n ],\n})\nexport class FsFilterSavedFilterChipsComponent implements OnInit {\n\n @Input() public savedFilter: IFilterSavedFilter;\n\n public items: BaseItem<IFilterConfigItem>[] = [];\n\n private _itemStore = inject(ItemStore);\n\n public ngOnInit(): void {\n this.items = [...this._itemStore.items]\n .filter((item) => !!this.savedFilter.filters[item.name])\n .map((item: BaseItem<IFilterConfigItem>): BaseItem<IFilterConfigItem> => {\n item.setModel(this.savedFilter.filters[item.name]);\n\n return item;\n });\n }\n}\n","<div class=\"filter-chips\">\n @for (item of items; track item.name) {\n <fs-filter-chip [item]=\"item\"></fs-filter-chip>\n }\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { IFilterConfigItem } from '../../../interfaces';\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { BaseItem } from '../../../models/items';\nimport { FsFilterOverlayService, ItemStore } from '../../../services';\nimport { ParamController } from '../../../services/param-controller.service';\nimport { SavedFilterController } from '../../../services/saved-filter-controller.service';\n\nimport { FsFilterSavedFilterChipsComponent } from './components/saved-filter-chips';\n\n\n@Component({\n templateUrl: './saved-filter-manage.component.html',\n styleUrls: ['./saved-filter-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogModule,\n MatButton,\n FsFilterSavedFilterChipsComponent,\n FsMenuModule,\n ],\n})\nexport class FsFilterSavedFilterManageComponent implements OnInit {\n\n public savedFilters: IFilterSavedFilter[];\n\n private _savedFilterController = inject(SavedFilterController);\n private _cdRef = inject(ChangeDetectorRef);\n private _paramController = inject(ParamController);\n private _itemStore = inject(ItemStore);\n private _dialogRef = inject(MatDialogRef);\n private _filterOverlayService = inject(FsFilterOverlayService);\n\n public ngOnInit(): void {\n this.savedFilters = this._savedFilterController.savedFilters;\n }\n\n public get items(): BaseItem<IFilterConfigItem>[] {\n return this._itemStore.items;\n }\n\n public get pluralLabelLower(): string {\n return this._savedFilterController.pluralLabelLower;\n }\n\n public get sortable(): boolean {\n return this._savedFilterController.orderable;\n }\n\n public selectFilter(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.setActiveFilter(savedFilter);\n this._filterOverlayService.open();\n this._dialogRef.close();\n }\n\n public remove(savedFilter: IFilterSavedFilter) {\n this._savedFilterController.delete(savedFilter)\n .subscribe(() => {\n this.savedFilters = this._savedFilterController.savedFilters;\n this._cdRef.markForCheck();\n });\n }\n\n public order(savedFilters: IFilterSavedFilter[]) {\n this._savedFilterController.order(savedFilters)\n .subscribe();\n }\n\n}\n","<h1 mat-dialog-title>\n Manage {{ pluralLabelLower }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\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>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { map, Observable, switchMap, tap } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';\nimport { ItemStore } from '../../../services/item-store.service';\nimport { ParamController } from '../../../services/param-controller.service';\nimport type { SavedFilterController } from '../../../services/saved-filter-controller.service';\nimport { FsFilterSavedFilterManageComponent } from '../saved-filter-manage';\n\n\n@Component({\n selector: 'fs-saved-filter-autocomplete-chips',\n templateUrl: './saved-filter-autocomplete-chips.component.html',\n styleUrls: ['./saved-filter-autocomplete-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsAutocompleteChipsModule,\n FormsModule,\n ],\n})\nexport class FsSavedFilterAutocompleteChipsComponent implements OnInit {\n\n @Input()\n public savedFiltersController: SavedFilterController;\n\n public selectedFilter: IFilterSavedFilter;\n\n private _itemStore = inject(ItemStore);\n private _paramController = inject(ParamController);\n private _dialog = inject(MatDialog);\n private _destroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n private _prompt = inject(FsPrompt);\n private _message = inject(FsMessage);\n \n public get filters$(): Observable<IFilterSavedFilter[]> {\n return this.savedFiltersController.savedFilters$;\n }\n\n public get activeFilter$(): Observable<IFilterSavedFilter> {\n return this.savedFiltersController.activeFilter$;\n }\n\n public get pluralLabelLower(): string {\n return this.savedFiltersController.pluralLabelLower;\n }\n\n public get pluralLabel(): string {\n return this.savedFiltersController.pluralLabel;\n }\n\n public get labelIcon(): string {\n return this.savedFiltersController.labelIcon;\n }\n\n public compareWith = (o1: IFilterSavedFilter, o2: IFilterSavedFilter): boolean => {\n return o1?.id === o2?.id;\n };\n\n public selectFilter(savedFilter: IFilterSavedFilter): void {\n this.savedFiltersController.setActiveFilter(savedFilter);\n }\n\n public selectedFilterChange(savedFilter: IFilterSavedFilter): void {\n this.savedFiltersController.setActiveFilter(savedFilter);\n\n if (!savedFilter) {\n this._itemStore.filtersClear();\n }\n }\n\n public ngOnInit(): void {\n this.savedFiltersController.activeFilter$\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe((savedFilter) => {\n this.selectedFilter = savedFilter;\n this._cdRef.markForCheck();\n });\n }\n\n public save(): void {\n this.savedFiltersController\n .save(this.selectedFilter)\n .pipe(\n tap(() => {\n this._message.success(`Saved ${this.savedFiltersController.singularLabel}`);\n }),\n )\n .subscribe();\n }\n\n public create(): void {\n this.savedFiltersController.create()\n .pipe(\n tap(() => {\n this._message\n .success(`Created ${this.savedFiltersController.singularLabel}`,\n );\n }),\n )\n .subscribe();\n }\n\n public saveAs(): void {\n this._prompt.input({\n title: 'Save as new alert',\n label: 'Name',\n required: true,\n commitLabel: 'Save',\n dialogConfig: {\n restoreFocus: false,\n },\n })\n .pipe(\n switchMap((name) => {\n const data: IFilterSavedFilter = {\n name,\n filters: { ...this.savedFiltersController.activeFilter.filters },\n };\n\n return this.savedFiltersController.save(data);\n }),\n tap(() => {\n this._message.success(`Saved ${this.savedFiltersController.singularLabel}`);\n }),\n )\n .subscribe();\n } \n\n\n public fetch = (query: string) => {\n return this.savedFiltersController.savedFilters$\n .pipe(\n map((filters: IFilterSavedFilter[]) => filters\n .filter((filter: IFilterSavedFilter) => filter\n .name.toLowerCase().includes(query.toLowerCase()))),\n );\n };\n\n public manageFilters(): void {\n this._dialog\n .open(FsFilterSavedFilterManageComponent, {\n injector: this._injector,\n restoreFocus: false,\n });\n }\n}\n","<fs-autocomplete-chips\n [fetch]=\"fetch\"\n [size]=\"'small'\"\n [multiple]=\"false\"\n [placeholder]=\"pluralLabel\"\n [(ngModel)]=\"selectedFilter\"\n [compareWith]=\"compareWith\"\n [panelClass]=\"'fs-autocomplete-chips-panel-saved-filter'\"\n (ngModelChange)=\"selectedFilterChange($event)\">\n <ng-template\n fsAutocompleteChipsTemplate\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n <ng-template\n fsAutocompleteChipsPrefix\n [icon]=\"labelIcon\">\n </ng-template>\n @if (selectedFilter) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"save()\">\n Save alert filters\n </ng-template>\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"saveAs()\">\n Save as new alert\n </ng-template>\n } @else {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"create()\">\n Create alert\n </ng-template>\n }\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"manageFilters()\">\n Manage {{ pluralLabelLower }}\n </ng-template>\n</fs-autocomplete-chips>","import { Directive, TemplateRef } from '@angular/core';\n\n\n@Directive({\n selector: '[fsFilterStatusBar]',\n standalone: true,\n})\nexport class FilterStatusBarDirective {\n\n 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 { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatFormField, MatPrefix } from '@angular/material/form-field';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FsFormModule } from '@firestitch/form';\n\nimport { BehaviorSubject, combineLatest, fromEvent, interval, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { ActionsController } from '../../classes/actions-controller';\nimport { FilterIcon } from '../../consts';\nimport { objectsAreEquals } from '../../helpers/compare';\nimport { IFilterSavedFilter, ISortingChangeEvent, KeyValue } 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 { FsFilterOverlayService } from '../../services/filter-overlay.service';\nimport { FocusControllerService } from '../../services/focus-controller.service';\nimport { ItemStore } from '../../services/item-store.service';\nimport { ParamController } from '../../services/param-controller.service';\nimport { PersistanceController } from '../../services/persistance-controller.service';\nimport { QueryParamController } from '../../services/query-param-controller.service';\nimport { SavedFilterController } from '../../services/saved-filter-controller.service';\nimport { FsFilterActionsComponent } from '../actions/actions.component';\nimport { FsFilterChipsComponent } from '../filter-chips/filter-chips.component';\nimport { FsSavedFilterAutocompleteChipsComponent } from '../saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component';\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 ParamController,\n PersistanceController,\n QueryParamController,\n FocusControllerService,\n ItemStore,\n SavedFilterController,\n ActionsController,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n FsSavedFilterAutocompleteChipsComponent,\n MatFormField,\n NgClass,\n MatPrefix,\n MatIcon,\n MatInput,\n FormsModule,\n FsFormModule,\n FsClearModule,\n FsFilterChipsComponent,\n FsFilterActionsComponent,\n MatIconAnchor,\n MatSlideToggle,\n AsyncPipe,\n ],\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 public searchPlaceholder = 'Search';\n public keyword = '';\n public autoReload = true;\n\n private _config: FsFilterConfig = null;\n private _sort: FilterSort;\n private _filtersBtnVisible$ = new BehaviorSubject(true);\n private _keywordVisible$ = new BehaviorSubject(false);\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 private _defaultConfig = inject(FS_FILTER_CONFIG, { optional: true });\n private _filterOverlay = inject(FsFilterOverlayService);\n private _zone = inject(NgZone);\n private _paramController = inject(ParamController);\n private _persistanceController = inject(PersistanceController);\n private _itemStore = inject(ItemStore);\n private _actions = inject(ActionsController);\n private _savedFilterController = inject(SavedFilterController);\n\n constructor(\n ) {\n this._itemStore.filter = this;\n this._listenWhenFilterReady();\n this._updateWindowWidth();\n\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n \n iconRegistry.addSvgIconLiteral('filterOutline', sanitizer.bypassSecurityTrustHtml(FilterIcon));\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._itemStore.values();\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n public get filterParamsQuery(): KeyValue {\n return this._itemStore.valuesAsQuery();\n }\n\n public get items() {\n return this._itemStore.items;\n }\n\n public get visibleItems() {\n return this._itemStore.visibleItems;\n }\n\n public get keywordItem(): TextItem | null {\n return this._itemStore.keywordItem;\n }\n\n public get itemsReady$(): Observable<boolean> {\n return this._itemStore.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._itemStore.sortByItem;\n }\n\n public get filtersBtnVisible$(): Observable<boolean> {\n return this._filtersBtnVisible$.asObservable();\n }\n\n public get inlineToolbar$(): Observable<boolean> {\n return combineLatest({\n keywordVisible: this._keywordVisible$.asObservable(),\n activeFilter: of(this.savedFiltersController.enabled),\n })\n .pipe(\n map(({ keywordVisible, activeFilter }) => {\n return !keywordVisible && !activeFilter;\n }),\n );\n }\n\n public get notInlineToolbar$(): Observable<boolean> {\n return this.inlineToolbar$\n .pipe(\n map((inline) => !inline),\n );\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._savedFilterController.setActiveFilter(savedFilter);\n }\n\n public get activeSavedFilter(): IFilterSavedFilter {\n return this._savedFilterController.activeFilter;\n }\n\n public get savedFilters(): IFilterSavedFilter[] {\n return this._savedFilterController.savedFilters;\n }\n\n public get savedFiltersController(): SavedFilterController {\n return this._savedFilterController;\n }\n\n public ngOnInit() {\n this._initAutoFocus();\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._itemStore.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 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._itemStore.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._itemStore.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._itemStore.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 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._itemStore.valuesAsQuery();\n this._sort = this._itemStore.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._itemStore.filtersClear();\n\n if (this.config.clear) {\n this.config.clear();\n }\n\n this.keyword = '';\n }\n\n public reload(event = null) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const data = this._itemStore.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._itemStore.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._paramController.fetchQueryParams();\n }\n\n /**\n * Call change callback and apply new filter values\n */\n public change() {\n const valuesAsQuery = this._itemStore.valuesAsQuery();\n const sort = this._itemStore.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(valuesAsQuery, sort);\n }\n }\n\n if (this.config.change) {\n this.config.change(valuesAsQuery, 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._itemStore.destroyItems();\n this.config.items = items;\n this._itemStore.setConfig(this._config);\n this._paramController.initItems();\n this._updateKeyword();\n }\n\n public keywordChange(keyword) {\n this._keyword$.next(keyword);\n }\n\n public updateSortings(items: SortItem[]): void {\n this._itemStore.updateSortingItemsValues(items);\n }\n\n private _initFilterWithConfig(config: FilterConfig) {\n if (this.config) {\n this._itemStore.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._persistanceController.setConfig(this._config, this.inDialog);\n this._itemStore.setConfig(this._config);\n this._paramController.setConfig(this._config);\n\n this._updateKeyword();\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._itemStore.keywordItem;\n keywordItem.model = value;\n this.change();\n });\n }\n\n private _initKeywordVisibility() {\n this._keywordVisible$.next(!!this.keywordItem && !this.keywordItem?.hide);\n }\n\n private _initAutoFocus() {\n // Avoid ngChanges error\n setTimeout(() => {\n if (this.config.autofocus) {\n this.focus();\n }\n });\n }\n\n private _listenInternalItemsChange() {\n this._itemStore\n .itemsChange$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.keyword = this._itemStore.keywordItem?.model;\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._paramController.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._updateKeyword();\n\n this.ready.emit();\n });\n }\n\n private _updateKeyword() {\n this.keyword = this._itemStore.keywordItem?.model;\n }\n\n private _updateChipsVisibility() {\n const hasFilterChips = this._itemStore.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 @if (notInlineToolbar$ | async) {\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n }\n <div class=\"filter-inner-container\">\n @if (notInlineToolbar$ | async) {\n <div class=\"filter-inner-inputs\">\n @if (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 }\n @if (savedFiltersController.enabled) {\n <fs-saved-filter-autocomplete-chips [savedFiltersController]=\"savedFiltersController\"></fs-saved-filter-autocomplete-chips>\n }\n </div>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"filterToolbar\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"filterActions\"></ng-container>\n </div>\n @if (notInlineToolbar$ | async) {\n <ng-container *ngTemplateOutlet=\"filterStatusBarChips\"></ng-container>\n }\n</div>\n<ng-template #filterStatusBarChips>\n @if (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 }\n @if (config.chips && hasFilterChips$ | async) {\n <fs-filter-chips\n class=\"filter-chips\"\n [filters]=\"items\">\n </fs-filter-chips>\n }\n</ng-template>\n<ng-template #filterActions>\n @if (actionsVisible$ | async) {\n <div class=\"filter-actions\">\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbar>\n @if (config.reload || config.autoReload || ((filtersBtnVisible$ | async) && hasVisibleItemOrSorting)) {\n <div class=\"filter-toolbar\">\n @if ((filtersBtnVisible$ | async) && 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 @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 }\n</ng-template>\n<ng-template #heading>\n @if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\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 standalone: true,\n})\nexport class SelectBackdropComponent {\n constructor() {}\n}\n","","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsStore } 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 { FsSavedFilterAutocompleteChipsComponent } from './components/saved-filter';\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 FsSavedFilterAutocompleteChipsComponent,\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 FsFilterActionsComponent,\n FsFilterActionButtonComponent,\n FsFilterActionKebabActionsComponent,\n FilterStatusBarDirective,\n FocusToItemDirective,\n FsFilterIsolateValues,\n ],\n providers: [\n FsStore,\n ],\n exports: [\n FilterComponent,\n FilterStatusBarDirective,\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","i1","i2","i4","i5","tap","i2.ItemStore","i1.FocusControllerService","i3","arrayRemove","switchMap","map"],"mappings":"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"}
|