@recursyve/nice-data-filter-kit 18.0.2 → 18.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.mjs +4 -2
- package/fesm2022/recursyve-nice-data-filter-kit.mjs +3 -1
- package/fesm2022/recursyve-nice-data-filter-kit.mjs.map +1 -1
- package/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-nice-data-filter-kit.mjs","sources":["../../../projects/nice-data-filter-kit/src/lib/utils/query-params.utils.ts","../../../projects/nice-data-filter-kit/src/lib/api/filter.api.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-buttons.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-cards.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-custom-content.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-empty-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-filters.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-table.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-title.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-empty-search-result-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-directives.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/columns.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/layout.model.ts","../../../projects/nice-data-filter-kit/src/lib/utils/order.utils.ts","../../../projects/nice-data-filter-kit/src/lib/utils/filter.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/providers/base-filter.service.ts","../../../projects/nice-data-filter-kit/src/lib/api/saved-report.api.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/providers/base-list-saved-report.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.query.ts","../../../projects/nice-data-filter-kit/src/lib/models/filter.model.ts","../../../projects/nice-data-filter-kit/src/lib/models/query.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/utils/qb-filter.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.form.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/providers/filter-group.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/pipes/filter-group-icon.pipe.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/filter-selection/filter-selection.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/filter-selection/filter-selection.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder-trigger.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/select/select-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/select/select-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/text/text-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/text/text-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/number/number-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/number/number-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/radio/radio-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/radio/radio-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/date/date-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/date/date-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/rule.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/rule.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.template.html","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.template.html","../../../projects/nice-data-filter-kit/src/lib/utils/date.adapter.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/models/list-states.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/providers/multi-state-filter.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.query.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.query.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/pipes/filter-group-icon.pipe.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.form.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/providers/async-typeahead.provider.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/rule.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/common/data.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.template.html","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list-state.query.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list-state.service.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export-buttons.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/search/search.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/search/search.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/query-params.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-nested-filter-view.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-paginator.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-sort.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-tables.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/providers/selectable-list-content.service.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-checkbox.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-base-filter-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.module.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/providers/preload-selected-entities.provider.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-select-all.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/utils/string.utils.ts","../../../projects/nice-data-filter-kit/src/public-api.ts","../../../projects/nice-data-filter-kit/src/recursyve-nice-data-filter-kit.ts"],"sourcesContent":["import { HttpParams } from \"@angular/common/http\";\nimport { isNullOrUndefined } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel } from \"../models/filter.model\";\n\nexport class QueryParamsUtils {\n public static hasFilterParameters(params: { [key: string]: any }): boolean {\n const keys = [\"start\", \"length\", \"order\", \"search\", \"rules\"];\n return Object.keys(params).some(key => keys.includes(key));\n }\n\n public static extractFilterParameters(params: { [key: string]: any }): FilterParametersModel {\n const filters: FilterParametersModel = {};\n if (!isNullOrUndefined(params.start)) {\n filters.start = Number(params.start);\n }\n if (!isNullOrUndefined(params.length)) {\n filters.length = Number(params.length);\n }\n if (!isNullOrUndefined(params.order)) {\n try {\n filters.order = JSON.parse(params.order);\n } catch (e) {\n delete filters.order;\n }\n }\n if (!isNullOrUndefined(params.search)) {\n filters.search = params.search;\n }\n if (!isNullOrUndefined(params.rules)) {\n try {\n filters.rules = JSON.parse(params.rules);\n } catch (e) {\n delete filters.rules;\n }\n }\n\n return filters;\n }\n\n public static filterParametersToParamsMap(filterParameters: FilterParametersModel): { [key: string]: any } {\n const params: { [key: string]: any } = {};\n if (!isNullOrUndefined(filterParameters.start)) {\n params.start = filterParameters.start;\n }\n if (!isNullOrUndefined(filterParameters.length)) {\n params.length = filterParameters.length;\n }\n if (!isNullOrUndefined(filterParameters.order)) {\n params.order = JSON.stringify(filterParameters.order);\n } else {\n params.order = null;\n }\n if (!isNullOrUndefined(filterParameters.search)) {\n params.search = filterParameters.search;\n }\n if (!isNullOrUndefined(filterParameters.rules)) {\n params.rules = JSON.stringify(filterParameters.rules);\n }\n\n return params;\n }\n\n public static fromObject(obj: any): string {\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) {\n delete obj[key];\n }\n });\n return new HttpParams({\n fromObject: obj\n }).toString();\n }\n}\n","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Type } from \"@angular/core\";\nimport { HttpOptions, NiceHttpExceptionFactory } from \"@recursyve/nice-ui-kit.v2\";\nimport { AbstractConstructor, Constructor } from \"@recursyve/nice-ui-kit.v2/lib/types/constructor\";\nimport { plainToInstance } from \"class-transformer\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterQueryModel, FilterResultModel, SelectFilterValue } from \"../models/filter.model\";\nimport { QueryParamsUtils } from \"../utils/query-params.utils\";\n\nexport interface NiceHttpOptions {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n reportProgress?: boolean;\n withCredentials?: boolean;\n}\n\nexport interface QueryParams {\n [param: string]: any;\n}\n\nexport interface NiceFilterApiDefinition {\n filter(queryModel: FilterQueryModel, option?: HttpOptions): Observable<FilterResultModel>;\n\n filterCount(queryModel: FilterQueryModel): Observable<number>;\n\n downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob>;\n\n getPrintableHtml(queryModel: FilterQueryModel): Observable<string>;\n\n getFilterConfig(option?: HttpOptions): Observable<FilterConfigurationModel[]>;\n\n searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]>;\n\n searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue>;\n}\n\nexport class NiceFilterApi<T> implements NiceFilterApiDefinition {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {\n }\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.http.post<FilterResultModel<T>>(this.url(\"filter\"), queryModel, option);\n }\n\n public filterCount(queryModel: FilterQueryModel): Observable<number> {\n return this.http.post<number>(this.url(\"filter-count\"), queryModel);\n }\n\n public downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob> {\n return this.http.post(this.url(`download/${type}`), queryModel, { responseType: \"blob\" });\n }\n\n public getPrintableHtml(queryModel: FilterQueryModel): Observable<string> {\n return this.http.post(this.url(`download/html`), queryModel, { responseType: \"text\" });\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.http.get<FilterConfigurationModel[]>(this.url(\"filter/config\"), option);\n }\n\n public searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.http.get<SelectFilterValue[]>(this.url(`filter/config/value`), {\n params: {\n ...options?.params,\n id,\n value\n }\n });\n }\n\n public searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue> {\n return this.http.get<SelectFilterValue>(this.url(`filter/config/id`), {\n params: {\n ...options?.params,\n id,\n resourceId\n }\n });\n }\n\n protected url(route?: string, queryParams?: object): string;\n protected url(queryParams: object): string;\n protected url(...args: [string | object, object?]): string {\n const [route, queryParams] = this.transformUrlArgs(args);\n const params = queryParams ? `?${QueryParamsUtils.fromObject(queryParams)}` : \"\";\n if (route) {\n return `${this.filterApiUrl}/${this.path}/${route}${params}`;\n }\n\n return `${this.filterApiUrl}/${this.path}${params}`;\n }\n\n private transformUrlArgs(args: [string | object, object?]): [route: string, queryParams?: object] {\n const [routeOfQueryParams, query] = args;\n if (args.length === 1) {\n if (typeof routeOfQueryParams === \"string\") {\n return [routeOfQueryParams];\n }\n\n return [\"\", routeOfQueryParams];\n }\n\n return [(routeOfQueryParams as string) ?? \"\", query];\n }\n}\n\nexport interface HasNiceFilterApiDefinition {\n exceptionFactory: NiceHttpExceptionFactory;\n httpClient: HttpClient;\n apiUrl: string;\n path: string;\n\n url(route?: string): string;\n\n delete<T>(route?: string, options?: HttpOptions): Observable<T>;\n\n get<T>(route?: string, options?: HttpOptions): Observable<T>;\n\n patch<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n\n post<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n\n put<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n}\n\nexport type NiceFilterApiDefinitionCtor = Constructor<NiceFilterApiDefinition> & AbstractConstructor<NiceFilterApiDefinition>;\n\nexport const mixinNiceFilterApi = <T>(model?: Type<T>) => {\n return <C extends Constructor<HasNiceFilterApiDefinition>>(base: C): NiceFilterApiDefinitionCtor & C => {\n return class extends base {\n constructor(...args: any[]) {\n super(...args);\n }\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.post<FilterResultModel>(\"filter\", queryModel, option).pipe(\n map(x => model ? ({\n ...x,\n values: plainToInstance(model, x.values)\n }) : x)\n );\n }\n\n public filterCount(queryModel: FilterQueryModel): Observable<number> {\n return this.post<number>(\"filter-count\", queryModel);\n }\n\n public downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob> {\n return this.post(`download/${type}`, queryModel, { responseType: \"blob\" } as any);\n }\n\n public getPrintableHtml(queryModel: FilterQueryModel): Observable<string> {\n return this.post(`download/html`, queryModel, { responseType: \"text\" } as any);\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.get<FilterConfigurationModel[]>(\"filter/config\", option);\n }\n\n public searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.get<SelectFilterValue[]>(\"filter/config/value\", {\n params: {\n ...options?.params,\n id,\n value\n }\n });\n }\n\n public searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue> {\n return this.get<SelectFilterValue>(\"filter/config/id\", {\n params: {\n ...options?.params,\n id,\n resourceId\n }\n });\n }\n };\n };\n};\n","import { Directive, Input, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListButton]\" })\nexport class NiceBaseListButtonsDirective {\n @Input()\n public position: \"prefix\" | \"suffix\" | \"search\" = \"suffix\";\n\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListCards]\" })\nexport class NiceBaseListCardsDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListContent]\" })\nexport class NiceBaseListCustomContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListEmptyState]\" })\nexport class NiceBaseListEmptyStateDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListFilters]\" })\nexport class NiceBaseListFiltersDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, Input, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTable]\" })\nexport class NiceBaseListTableDirective {\n @Input()\n public stickyHeader = true;\n\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTitle]\" })\nexport class NiceBaseListTitleDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListEmptySearchResultState]\" })\nexport class NiceBaseListEmptySearchResultStateDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceBaseListButtonsDirective } from \"./base-list-buttons.directive\";\n\nimport { NiceBaseListCardsDirective } from \"./base-list-cards.directive\";\nimport { NiceBaseListCustomContentDirective } from \"./base-list-custom-content.directive\";\nimport { NiceBaseListEmptyStateDirective } from \"./base-list-empty-state.directive\";\nimport { NiceBaseListFiltersDirective } from \"./base-list-filters.directive\";\nimport { NiceBaseListTableDirective } from \"./base-list-table.directive\";\nimport { NiceBaseListTitleDirective } from \"./base-list-title.directive\";\nimport { NiceBaseListEmptySearchResultStateDirective } from \"./base-list-empty-search-result-state.directive\";\n\n@NgModule({\n declarations: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective,\n NiceBaseListEmptySearchResultStateDirective\n ],\n exports: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective,\n NiceBaseListEmptySearchResultStateDirective\n ]\n})\nexport class NiceBaseListDirectiveModule {}\n","export interface TableColumnsModel {\n id: string;\n sortable?: boolean;\n}\n\nexport class TableColumns implements TableColumnsModel {\n public id: string;\n public sortable: boolean;\n public nullLast: boolean;\n\n constructor(id: string, sortable = true, nullLast = false) {\n this.id = id;\n this.sortable = sortable;\n this.nullLast = nullLast;\n }\n}\n","export type AvailableLayoutItem = \"title\" |\n \"search\" |\n \"prefixButtons\" |\n \"suffixButtons\" |\n \"exportButtons\" |\n \"content\" |\n \"pagination\" |\n \"queryBuilder\" |\n \"filters\";\n\nexport enum LayoutContent {\n Table = \"table\",\n Cards = \"cards\",\n Custom = \"custom\"\n}\n\nexport interface LayoutItem {\n name: AvailableLayoutItem;\n flex?: string;\n align?: string;\n classes?: string[];\n}\n\nexport interface Layout {\n classes?: string[];\n items: (LayoutItem | Layout)[];\n}\n\nexport type BaseListPageLayout = (LayoutItem | Layout);\nexport interface BaseListLayout {\n default: Layout | BaseListPageLayout[];\n xs?: Layout | BaseListPageLayout[];\n sm?: Layout | BaseListPageLayout[];\n md?: Layout | BaseListPageLayout[];\n lg?: Layout | BaseListPageLayout[];\n xl?: Layout | BaseListPageLayout[];\n}\n\nexport const defaultLayout: BaseListLayout = {\n default: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/3\"],\n },\n {\n classes: [\"flex flex-row flex-auto flex-shrink-0 justify-center items-center\"],\n items: [\n {\n name: \"search\",\n classes: [\"flex flex-auto flex-shrink-0\"],\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end\"],\n items: [\n {\n name: \"prefixButtons\",\n classes: [\"flex justify-end items-center\"],\n },\n {\n name: \"exportButtons\",\n classes: [\"flex justify-end items-center\"],\n },\n {\n name: \"suffixButtons\",\n classes: [\"flex justify-end items-center\"],\n }\n ]\n }\n ]\n }\n ]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n },\n sm: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row justify-center items-center mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/2\"]\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end items-center\"],\n items: [\n {\n name: \"prefixButtons\"\n },\n {\n name: \"exportButtons\"\n },\n {\n name: \"suffixButtons\"\n }\n ]\n }\n ]\n },\n {\n name: \"search\",\n classes: [\"flex justify-center items-center mb-8\"]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n },\n xs: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row justify-center items-center mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/2\"]\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end items-center\"],\n items: [\n {\n name: \"prefixButtons\"\n },\n {\n name: \"exportButtons\"\n },\n {\n name: \"suffixButtons\"\n }\n ]\n }\n ]\n },\n {\n name: \"search\",\n classes: [\"flex justify-center items-center mb-8\"]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n }\n};\n","import { OrderModel } from \"../models/filter.model\";\n\nexport class OrderUtils {\n public static mergeOrder(oldOrder?: OrderModel, newOrder?: OrderModel): OrderModel | undefined {\n if (oldOrder && !newOrder) return undefined;\n\n return {\n ...oldOrder,\n ...newOrder\n };\n }\n\n public static combineOrders(\n firstOrder?: OrderModel | OrderModel[],\n secondOrder?: OrderModel | OrderModel[],\n opts: { uniqueFromBack } = { uniqueFromBack: false }\n ): OrderModel[] {\n if (!Array.isArray(firstOrder)) firstOrder = [firstOrder];\n if (!Array.isArray(secondOrder)) secondOrder = [secondOrder];\n\n const orders = [...firstOrder, ...secondOrder].filter(order => order);\n\n // Make sure order columns are unique\n if (opts?.uniqueFromBack) {\n // Keep unique values from the back of the array\n return [...new Map(orders.map(order => [order.column, order])).values()]\n } else {\n // Keep unique values from the front of the array\n const columns = orders.map(order => order.column);\n return orders.filter((order, index) => columns.indexOf(order.column) === index);\n }\n }\n}\n","import { ObjectUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel, FilterQueryModel } from \"../models/filter.model\";\nimport { OrderUtils } from \"./order.utils\";\n\nexport class FilterUtils {\n public static parametersToRequest(filterParameters: FilterParametersModel): FilterQueryModel {\n return {\n page: {\n number: Math.ceil((filterParameters.start ?? 0) / (filterParameters.length ?? 1)),\n size: filterParameters.length ?? 0\n },\n search: {\n value: filterParameters.search ?? \"\"\n },\n query: {\n condition: \"and\",\n rules: filterParameters.rules ?? []\n },\n order: OrderUtils.combineOrders(filterParameters.order, filterParameters.fallbackOrder),\n data: filterParameters.data,\n groupBy: filterParameters.groupBy\n };\n }\n\n public static filterChangeNeedsRefresh(currentFilters: FilterParametersModel, newFilters: FilterParametersModel): boolean {\n const newFilterKeys = Object.keys(newFilters).sort();\n if (newFilterKeys.length === 0) {\n return true;\n }\n return newFilterKeys.some((key) => {\n const currentValue = (currentFilters as any)[key];\n const newValue = (currentFilters as any)[key];\n if (Array.isArray(currentValue)) {\n return !ObjectUtils.areObjectsEqual(currentValue, newValue);\n } else if (typeof currentValue === \"object\" && currentValue !== null) {\n return !ObjectUtils.areObjectsEqual(currentValue, newValue);\n } else {\n return currentValue !== newValue;\n }\n });\n }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceFilterApi, NiceFilterApiDefinition, NiceHttpOptions } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel, SelectFilterValue } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { HttpOptions } from \"@recursyve/nice-ui-kit.v2\";\n\nexport interface INiceFilterService<T> {\n getFilterConfig(option: NiceHttpOptions): Observable<FilterConfigurationModel[]>;\n\n filter(params: FilterParametersModel, option: NiceHttpOptions): Observable<FilterResultModel<T>>;\n\n getFile(type: string, parameters: FilterParametersModel): Observable<Blob>;\n\n getPrintableHtml(parameters: FilterParametersModel): Observable<string>;\n}\n\n@Injectable()\nexport class NiceFilterService<T> implements INiceFilterService<T> {\n constructor(@Inject(NiceFilterApi) protected api?: NiceFilterApiDefinition) {}\n\n public filter(params: FilterParametersModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.api?.filter(FilterUtils.parametersToRequest(params), option);\n }\n\n public getFile(type: string, parameters: FilterParametersModel): Observable<Blob> {\n return this.api?.downloadData(type, FilterUtils.parametersToRequest(parameters));\n }\n\n public getPrintableHtml(parameters: FilterParametersModel): Observable<string> {\n return this.api?.getPrintableHtml(FilterUtils.parametersToRequest(parameters));\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.api?.getFilterConfig(option);\n }\n\n public searchFilterValue(\n filterConfig: FilterConfigurationModel,\n value: string,\n options?: HttpOptions\n ): Observable<SelectFilterValue[]> {\n return this.api?.searchFilterValue(filterConfig.id, value, options);\n }\n\n public searchFilterResourceValue(\n filterConfig: FilterConfigurationModel,\n resourceId: number,\n options?: HttpOptions\n ): Observable<SelectFilterValue> {\n return this.api?.searchFilterResourceValue(filterConfig.id, resourceId, options);\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { QueryParamsUtils } from \"../utils/query-params.utils\";\nimport { NiceSavedReportDto } from \"./dto/saved-reports.dto\";\nimport { NiceSavedReports } from \"./models/saved-reports.model\";\n\nexport class NiceSavedReportsApi {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {}\n\n public create(dto: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.http.post<NiceSavedReports>(this.url(), dto);\n }\n\n public getAll(): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url());\n }\n\n public getByTable(table: string): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url(`${table}`));\n }\n\n public getTopByTable(table: string | undefined): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url(`${table}/top`));\n }\n\n public hit(id: number): Observable<void> {\n return this.http.put<void>(this.url(`${id}/hit`), null);\n }\n\n public update(id: number, dto: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.http.put<NiceSavedReports>(this.url(`${id}`), dto);\n }\n\n public delete(id: number): Observable<void> {\n return this.http.delete<void>(this.url(`${id}`));\n }\n\n protected url(route?: string, queryParams?: object): string;\n protected url(queryParams: object): string;\n protected url(...args: [string | object, object?]): string {\n const [route, queryParams] = this.transformUrlArgs(args);\n const params = queryParams ? `?${QueryParamsUtils.fromObject(queryParams)}` : \"\";\n if (route) {\n return `${this.filterApiUrl}/${this.path}/${route}${params}`;\n }\n\n return `${this.filterApiUrl}/${this.path}${params}`;\n }\n\n private transformUrlArgs(args: [string | object, object?]): [route: string, queryParams?: object] {\n const [routeOfQueryParams, query] = args;\n if (args.length === 1) {\n if (typeof routeOfQueryParams === \"string\") {\n return [routeOfQueryParams];\n }\n\n return [\"\", routeOfQueryParams];\n }\n\n return [(routeOfQueryParams as string) ?? \"\", query];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceSavedReportDto } from \"../../../api/dto/saved-reports.dto\";\nimport { NiceSavedReports } from \"../../../api/models/saved-reports.model\";\nimport { NiceSavedReportsApi } from \"../../../api/saved-report.api\";\n\n@Injectable()\nexport class NiceSavedReportService {\n constructor(private api: NiceSavedReportsApi) {}\n\n public create(report: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.api.create(report);\n }\n\n public update(id: number, report: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.api.update(id, report);\n }\n\n public remove(id: number): Observable<void> {\n return this.api.delete(id);\n }\n\n public getByTableName(table: string): Observable<NiceSavedReports[]> {\n return this.api.getByTable(table);\n }\n\n public getTopByTableName(table: string): Observable<NiceSavedReports[]> {\n return this.api.getTopByTable(table);\n }\n\n public hit(id: number): Observable<void> {\n return this.api.hit(id);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const BASE_LIST_ICONS = new InjectionToken(\"base_list_icons\");\nexport const BASE_LIST_LAYOUT = new InjectionToken(\"base_list_layout\");\nexport const DEFAULT_RULES = new InjectionToken(\"default_rules\");\nexport const DEFAULT_PARAMETERS = new InjectionToken(\"default_parameters\");\nexport const LIST_TABLE = new InjectionToken(\"list_table\");\nexport const TABLE_COLUMNS = new InjectionToken(\"table_columns\");\nexport const EXPORTS_SETTINGS = new InjectionToken(\"exports_settings\");\nexport const ENABLE_QUERY_BUILDER = new InjectionToken(\"enable_query_builder\");\nexport const DISABLE_QUERY_PARAMS = new InjectionToken(\"disable_query_param\");\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Store, StoreConfig } from \"@datorama/akita\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { DEFAULT_PARAMETERS, DEFAULT_RULES } from \"../base-list.constant\";\n\nexport interface NiceBaseListState {\n loading?: boolean;\n disabled: boolean;\n mergePageResults: boolean;\n resetPaging: boolean;\n filterConfigLoading: boolean;\n filterResult: FilterResultModel | null;\n filterParameters: FilterParametersModel;\n filterConfig: FilterConfigurationModel[];\n showQueryBuilder: boolean;\n defaultRules: (QueryRuleModel | QueryModel)[];\n queryParams: any;\n}\n\nexport const initialBaseListState: NiceBaseListState = {\n disabled: false,\n mergePageResults: false,\n resetPaging: false,\n filterConfigLoading: false,\n filterResult: null,\n filterParameters: {\n start: 0,\n length: 10,\n order: {},\n search: \"\",\n rules: [],\n data: {}\n },\n filterConfig: [],\n showQueryBuilder: false,\n defaultRules: [],\n queryParams: {}\n};\n\n@Injectable()\n@StoreConfig({ name: \"base-list\", resettable: true })\nexport class NiceBaseListStore<T extends NiceBaseListState = NiceBaseListState> extends Store<T> {\n constructor(\n @Optional() @Inject(DEFAULT_PARAMETERS) parameters: FilterParametersModel,\n @Optional() @Inject(DEFAULT_RULES) defaultRules: QueryModel[]\n ) {\n super({\n ...initialBaseListState,\n filterParameters: {\n ...initialBaseListState.filterParameters,\n ...(parameters ?? {})\n },\n defaultRules\n } as T);\n }\n\n public setFilterConfigLoading(loading: boolean): void {\n this.update({\n filterConfigLoading: loading\n } as T);\n }\n\n public setResult(filterResult: FilterResultModel, reset: boolean = false): void {\n const { mergePageResults } = this.getValue();\n if (mergePageResults && !reset) {\n this.update((state) => ({\n filterResult: {\n page: filterResult.page,\n total: filterResult.total,\n values: state.resetPaging ? filterResult.values : [\n ...(state.filterResult?.values ?? []),\n ...filterResult.values\n ]\n },\n resetPaging: false\n }) as T);\n } else {\n this.update({\n filterResult\n } as T);\n }\n }\n\n public setParameters(filterParameters: FilterParametersModel): void {\n this.update({\n filterParameters\n } as T);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Query } from \"@datorama/akita\";\nimport { combineLatest, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { NiceBaseListState, NiceBaseListStore } from \"./base-list.store\";\n\n@Injectable()\nexport class NiceBaseListQuery<T extends NiceBaseListState = NiceBaseListState> extends Query<T> {\n constructor(protected store: NiceBaseListStore<T>) {\n super(store);\n }\n\n public selectEmpty(): Observable<boolean> {\n return combineLatest([\n this.selectLoading(),\n this.selectData(),\n this.selectFilterParameters()\n ]).pipe(\n map(([loading, data, parameter]) => !data?.length && !loading && !parameter?.search)\n );\n }\n\n public selectSearchResultEmpty(): Observable<boolean> {\n return combineLatest([\n this.selectLoading(),\n this.selectData(),\n this.selectFilterParameters()\n ]).pipe(\n map(([loading, data, parameter]) => !data?.length && !loading && !!parameter?.search)\n );\n }\n\n public selectData(): Observable<any[]> {\n return this.select(s => s.filterResult?.values ?? []) as Observable<any[]>;\n }\n\n public selectFilterParameters(): Observable<FilterParametersModel> {\n return this.select(s => s.filterParameters);\n }\n\n public selectFilterResult(): Observable<FilterResultModel | null> {\n return this.select(s => s.filterResult);\n }\n\n public selectFilterConfig(): Observable<FilterConfigurationModel[]> {\n return this.select(s => s.filterConfig);\n }\n\n public selectFilterConfigLoading(): Observable<boolean> {\n return this.select(s => s.filterConfigLoading);\n }\n\n public selectShowQueryBuilder(): Observable<boolean> {\n return this.select(s => s.showQueryBuilder);\n }\n}\n","import { QueryModel } from \"./query.model\";\n\nexport interface FilterParametersModel {\n start?: number | null;\n length?: number | null;\n order?: OrderModel | null; // This is the primary order (used for the mat table)\n fallbackOrder?: OrderModel | OrderModel[] | null; // These orders are fallback; well be placed after order\n search?: string | null;\n rules?: QueryModel[] | null;\n draw?: number | null;\n data?: object | null;\n groupBy?: string | null;\n}\n\nexport interface FilterPageMode {\n number: number;\n size: number;\n}\n\nexport interface FilterSearchModel {\n value: string;\n}\n\nexport interface OrderModel {\n column?: string | null;\n direction?: \"asc\" | \"desc\" | null;\n nullLast?: boolean | null;\n}\n\nexport interface FilterQueryModel {\n page?: FilterPageMode;\n search?: FilterSearchModel;\n query?: QueryModel;\n order?: OrderModel | OrderModel[];\n data?: object | undefined;\n groupBy?: string;\n}\n\nexport interface FilterResultModel<T = any> {\n values: T[];\n total: number;\n page?: {\n number: number;\n size: number;\n };\n}\n\nexport enum FilterType {\n Text = \"text\",\n Number = \"number\",\n Date = \"date\",\n Select = \"select\",\n Radio = \"radio\",\n Options = \"options\"\n}\n\nexport type OptionsFilterSelectionMode = \"radio\" | \"select\";\n\nexport interface RadioFilterOptionConfiguration {\n key: string;\n name: string;\n}\n\nexport interface FilterOperatorsConfiguration {\n id: string;\n name: string;\n}\n\nexport interface FilterGroupConfiguration {\n key: string;\n name: string;\n}\n\nexport interface FilterBaseConfigurationModel {\n type: FilterType;\n operators: FilterOperatorsConfiguration[];\n group?: FilterGroupConfiguration;\n values?: unknown[];\n lazyLoading?: boolean;\n selectionMode?: OptionsFilterSelectionMode;\n options?: RadioFilterOptionConfiguration[];\n mask?: string;\n}\n\nexport interface FilterConfigurationModel extends FilterBaseConfigurationModel {\n id: string;\n name: string;\n}\n\nexport interface SelectFilterValue {\n id: number;\n name: string;\n}\n","export type Condition = \"and\" | \"or\";\n\nexport enum FilterOperatorTypes {\n Equal = \"equal\",\n NotEqual = \"not_equal\",\n In = \"in\",\n NotIn = \"not_in\",\n Less = \"less\",\n LessOrEqual = \"less_or_equal\",\n Greater = \"greater\",\n GreaterOrEqual = \"greater_or_equal\",\n Between = \"between\",\n NotBetween = \"not_between\",\n IsNull = \"is_null\",\n IsNotNull = \"is_not_null\",\n BeginsWith = \"begins_with\",\n NotBeginsWith = \"not_begins_with\",\n EndsWith = \"ends_with\",\n NotEndsWith = \"not_ends_with\",\n Contains = \"contains\",\n NotContains = \"not_contains\",\n IsEmpty = \"is_empty\",\n IsNotEmpty = \"is_not_empty\",\n None = \"none\"\n}\n\nexport interface CustomOperator {\n name: string;\n where?: any;\n having?: any;\n}\n\nexport type FilterOperators = FilterOperatorTypes | CustomOperator;\n\nexport interface RuleModel {\n operation: FilterOperators;\n value: unknown | unknown[];\n}\n\nexport interface QueryRuleModel extends RuleModel {\n id: string;\n}\n\nexport interface QueryModel {\n condition: Condition;\n rules: (QueryRuleModel | QueryModel)[];\n}\n","import { FilterConfigurationModel, FilterType } from \"../../../models/filter.model\";\nimport { FilterOperators, FilterOperatorTypes, QueryModel, QueryRuleModel } from \"../../../models/query.model\";\n\nexport class QBFilterUtils {\n public static noInputOperators: FilterOperators[] = [\n FilterOperatorTypes.IsEmpty,\n FilterOperatorTypes.IsNotEmpty,\n FilterOperatorTypes.IsNull,\n FilterOperatorTypes.IsNotNull,\n FilterOperatorTypes.None\n ];\n\n public static singleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Equal,\n FilterOperatorTypes.NotEqual,\n FilterOperatorTypes.Less,\n FilterOperatorTypes.LessOrEqual,\n FilterOperatorTypes.Greater,\n FilterOperatorTypes.GreaterOrEqual,\n FilterOperatorTypes.BeginsWith,\n FilterOperatorTypes.NotBeginsWith,\n FilterOperatorTypes.EndsWith,\n FilterOperatorTypes.NotEndsWith,\n FilterOperatorTypes.Contains,\n FilterOperatorTypes.NotContains\n ];\n\n public static doubleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Between,\n FilterOperatorTypes.NotBetween\n ];\n\n public static isSingleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.singleInputOperators.includes(filterOperator);\n }\n\n public static isDoubleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.doubleInputOperators.includes(filterOperator);\n }\n\n public static isNoInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.noInputOperators.includes(filterOperator);\n }\n\n public static createRule(config: FilterConfigurationModel, operator?: FilterOperators): QueryRuleModel {\n const base = {\n id: config.id,\n operation: operator || (config.operators[0].id as FilterOperators)\n };\n switch (config.type) {\n case FilterType.Text:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [\"\", \"\"] : \"\"\n };\n case FilterType.Select:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [null, null] : null\n };\n case FilterType.Date:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()\n };\n case FilterType.Radio:\n case FilterType.Options:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator)\n ? [config.options?.[0].key, config.options?.[0].key]\n : config.options?.[0].key\n };\n case FilterType.Number:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [0, 0] : 0\n };\n }\n }\n\n public static createQueryModel(config: FilterConfigurationModel): QueryModel {\n return {\n condition: \"or\",\n rules: [QBFilterUtils.createRule(config)]\n };\n }\n}\n","import { ApplicationRef, Inject, Injectable } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { arrayAdd, arrayRemove, arrayUpsert } from \"@datorama/akita\";\nimport { FileUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { firstValueFrom, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { QueryParamsUtils } from \"../../../utils/query-params.utils\";\nimport { QBFilterUtils } from \"../../query-builder/utils/qb-filter.utils\";\nimport { DISABLE_QUERY_PARAMS } from \"../base-list.constant\";\nimport { NiceFilterService } from \"../providers/base-filter.service\";\nimport { NiceBaseListStore } from \"./base-list.store\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { OrderUtils } from \"../../../utils/order.utils\";\n\n@Injectable()\nexport class NiceBaseListService<Filter extends NiceFilterService<any> = NiceFilterService<any>> {\n public queryParamsLoaded$ = new Subject();\n\n protected downloadFileName = \"data\";\n protected unsubscribeAll$ = new Subject<void>();\n protected loadingData = false;\n\n constructor(\n protected store: NiceBaseListStore,\n @Inject(NiceFilterService)\n protected filterService: Filter,\n @Inject(DISABLE_QUERY_PARAMS)\n protected disableQueryParams: boolean,\n protected activatedRoute: ActivatedRoute,\n protected router: Router,\n protected appRef: ApplicationRef\n ) {\n }\n\n public get filter(): Filter {\n return this.filterService;\n }\n\n public async init(configQueryParams: QueryParams = {}): Promise<void> {\n this.store.setFilterConfigLoading(true);\n try {\n const filterConfig = await firstValueFrom(this.filterService.getFilterConfig({ params: configQueryParams }));\n this.store.update({\n filterConfig\n });\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setFilterConfigLoading(false);\n }\n }\n\n public resetStore(): void {\n this.store.reset();\n }\n\n public resetData(): void {\n this.store.update({\n filterResult: null\n });\n }\n\n public closeSubscriptions(): void {\n this.unsubscribeAll$.next(null);\n this.unsubscribeAll$.complete();\n this.queryParamsLoaded$.complete();\n }\n\n public disableList(): void {\n this.store.update({\n disabled: true\n });\n }\n\n public enableList(): void {\n this.store.update({\n disabled: false\n });\n }\n\n public setLoading(loading: boolean): void {\n this.store.setLoading(loading);\n }\n\n public setMode(mode: \"normal\" | \"infinite-scroll\"): void {\n this.store.update({\n mergePageResults: mode === \"infinite-scroll\"\n });\n }\n\n public setQueryParams(queryParams: any): void {\n this.store.update({ queryParams });\n }\n\n public loadQueryParams(autoLoad: boolean): void {\n if (this.disableQueryParams) {\n return;\n }\n\n this.activatedRoute?.queryParams\n .pipe(\n takeUntil(this.unsubscribeAll$),\n map((params: { [key: string]: any }) => {\n return {\n params: QueryParamsUtils.extractFilterParameters(params)\n };\n })\n )\n .subscribe(({ params }) => {\n if (!params || Object.keys(params).length === 0) {\n params = this.store.getValue().filterParameters;\n }\n const { filterParameters, filterResult } = this.store.getValue();\n if (\n FilterUtils.filterChangeNeedsRefresh(filterParameters, params) ||\n !filterResult\n ) {\n if (autoLoad) {\n this.loadData(params, false);\n } else {\n this.setParameters(params, false, true);\n }\n }\n\n this.queryParamsLoaded$.next(null);\n });\n }\n\n public async resetAndLoadData(parameters?: FilterParametersModel, updateQueryParams: boolean = true): Promise<void> {\n return this.loadData(parameters, updateQueryParams, true);\n }\n\n public async loadData(parameters?: FilterParametersModel, updateQueryParams: boolean = true, reset: boolean = false): Promise<void> {\n const { disabled, queryParams } = this.store.getValue();\n try {\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, disabled ? false : updateQueryParams);\n }\n if (!disabled) {\n this.store.setLoading(true);\n this.loadingData = true;\n const result = await firstValueFrom(this.filterService.filter(this.getParameters(filterParameters), {\n params: queryParams\n }));\n this.store.setResult(result, reset);\n }\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public async searchData(search: string): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n search\n });\n }\n\n public async loadNewPage(start: number, length: number): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n start,\n length\n });\n }\n\n public async loadNextPage(): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n start: filterParameters.start + filterParameters.length\n });\n }\n\n public resetPaging(): void {\n const { filterParameters } = this.store.getValue();\n this.store.setParameters({\n ...filterParameters,\n start: 0\n });\n this.store.update({\n resetPaging: true\n });\n }\n\n public async downloadData(\n type: string,\n parameters?: FilterParametersModel,\n updateQueryParams: boolean = true\n ): Promise<void> {\n try {\n this.store.setLoading(true);\n this.loadingData = true;\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, updateQueryParams);\n }\n const result = await firstValueFrom(this.filterService.getFile(type, this.getParameters(filterParameters)));\n FileUtils.downloadFile(`${this.downloadFileName}.${type}`, result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public async printData(parameters?: FilterParametersModel, updateQueryParams: boolean = true): Promise<void> {\n try {\n this.store.setLoading(true);\n this.loadingData = true;\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, updateQueryParams);\n }\n const result = await firstValueFrom(this.filterService.getPrintableHtml(this.getParameters(filterParameters)));\n FileUtils.openPrintableWindow(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public updateRule(id: string, newRule: QueryRuleModel): void {\n const { filterParameters } = this.store.getValue();\n const rules = filterParameters.rules?.[0];\n if (!rules || rules.rules.length === 0) {\n this.updateRules([newRule]);\n return;\n }\n\n const oldRule = rules.rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n let newRules = rules.rules;\n if (oldRule) {\n if (newRule) {\n // Array replace\n newRules = [\n ...rules.rules.slice(0, rules.rules.indexOf(oldRule)),\n newRule,\n ...rules.rules.slice(rules.rules.indexOf(oldRule) + 1, rules.rules.length)\n ];\n } else {\n newRules = rules.rules.filter((r) => (r as QueryRuleModel).id !== id);\n }\n } else {\n newRules = [...newRules, newRule];\n }\n this.updateRules(newRules as QueryRuleModel[]);\n }\n\n public updateDefaultRules(rule: (QueryRuleModel | QueryModel)[]): void {\n this.store.update({\n defaultRules: rule\n });\n }\n\n public async updateGlobalRules(rules: QueryModel[], updateQueryParams = true, reset = true): Promise<void> {\n if (reset) {\n this.resetPaging();\n }\n\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n ...filterParameters,\n rules\n };\n\n await this.loadData(newRules, updateQueryParams);\n }\n\n public addRuleFromConfig(config: FilterConfigurationModel): void {\n this.resetPaging();\n\n const { filterParameters } = this.store.getValue();\n\n const newRules: FilterParametersModel = {\n ...filterParameters,\n rules: [\n ...(filterParameters.rules as QueryModel[]),\n QBFilterUtils.createQueryModel(config)\n ]\n };\n\n this.store.update({\n showQueryBuilder: true\n });\n\n this.loadData(newRules, true);\n }\n\n public updateRules(rules: QueryRuleModel[]): void {\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n order: filterParameters.order,\n rules: [\n {\n condition: \"and\",\n rules\n }\n ]\n };\n\n this.loadData(newRules, true);\n }\n\n public toggleQueryBuilder(): void {\n this.store.update((state) => ({\n showQueryBuilder: !state.showQueryBuilder\n }));\n }\n\n public addListValue(value: any, opts?: AddEntitiesOptions): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, value, opts)\n }\n });\n }\n\n public updateListValue(value: any, key = \"id\"): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayUpsert(filterResult.values, value[key], value)\n }\n });\n }\n\n public removeListValue(value: any, key = \"id\"): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, value[key])\n }\n });\n }\n\n public getParameters(filterParameters?: FilterParametersModel): FilterParametersModel {\n const { defaultRules } = this.store.getValue();\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n if (defaultRules?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: defaultRules\n });\n }\n return parameters;\n }\n\n protected async updateQueryParams(queryParams: any): Promise<void> {\n if (!this.activatedRoute || this.disableQueryParams) {\n return;\n }\n\n await this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: \"merge\"\n });\n }\n\n private mergeParameters(parameters?: FilterParametersModel): FilterParametersModel {\n const { filterParameters } = this.store.getValue();\n if (!parameters) {\n return filterParameters;\n }\n\n return {\n ...filterParameters,\n ...parameters,\n order: OrderUtils.mergeOrder(filterParameters.order, parameters.order),\n fallbackOrder: OrderUtils.combineOrders(filterParameters.fallbackOrder, parameters.fallbackOrder, { uniqueFromBack: true })\n };\n }\n\n private setParameters(parameters: FilterParametersModel, updateQueryParams: boolean = true, merge: boolean = false): void {\n if (merge) {\n parameters = this.mergeParameters(parameters);\n }\n\n this.store.setParameters(parameters);\n if (updateQueryParams) {\n this.updateQueryParams(QueryParamsUtils.filterParametersToParamsMap(parameters));\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const QUERY_BUILDER_ICONS = new InjectionToken(\"query_builder_icons\");\n","import { Array, Control, Required } from \"@recursyve/ngx-form-generator\";\nimport { Condition, FilterOperators, QueryModel, QueryRuleModel } from \"../../models/query.model\";\nimport { QBFilterUtils } from \"./utils/qb-filter.utils\";\n\nexport class QueryRuleForm {\n @Control()\n @Required()\n public id: string;\n\n @Control()\n @Required()\n public operation: string;\n\n @Control()\n @Required()\n public value: any;\n\n @Control()\n @Required()\n public secondValue: any;\n\n constructor(rule: QueryRuleModel) {\n if (!rule) {\n return;\n }\n\n this.id = rule.id;\n this.operation = rule.operation as string;\n if (QBFilterUtils.isDoubleInput(rule.operation)) {\n this.value = rule.value[0];\n this.secondValue = rule.value[1];\n } else {\n this.value = rule.value;\n }\n }\n\n public transform(): QueryRuleModel {\n return {\n id: this.id,\n operation: this.operation as FilterOperators,\n value: this.secondValue === undefined ? this.value : [this.value, this.secondValue]\n };\n }\n}\n\nexport class QueryForm {\n @Control()\n @Required()\n public condition: string;\n\n @Array(QueryRuleForm)\n public rules: QueryRuleForm[];\n}\n\nexport class QueryBuilderForm {\n @Array(QueryForm)\n public rules: QueryForm[];\n\n constructor(rules: QueryModel[]) {\n if (!rules) {\n rules = [];\n }\n\n this.rules = rules.map(x => ({\n condition: x.condition,\n rules: x.rules.map(rule => new QueryRuleForm(rule as QueryRuleModel))\n }));\n }\n\n public transform(): QueryModel[] {\n return this.rules.map(x => ({\n condition: x.condition as Condition,\n rules: x.rules.map(rule => rule.transform())\n }));\n }\n}\n","import { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\n\nexport abstract class NiceFilterGroupService<T> {\n public abstract getFilterGroupIconClass(group: T): string | NiceBaseListIcons;\n}\n","import { Optional, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\nimport { NiceFilterGroupService } from \"../providers/filter-group.service\";\n\n@Pipe({\n name: \"filterGroupIcon\"\n})\nexport class FilterGroupIconPipe implements PipeTransform {\n constructor(@Optional() private service?: NiceFilterGroupService<any>) {}\n\n public transform(value: string): NiceBaseListIcons {\n if (!this.service) {\n return null;\n }\n\n const icon = this.service.getFilterGroupIconClass(value);\n if (typeof icon === \"string\") {\n return {\n class: icon\n };\n }\n return icon;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ArrayUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterConfigurationModel, FilterGroupConfiguration } from \"../../../models/filter.model\";\n\n@Component({\n selector: \"nice-filter-selection\",\n templateUrl: \"filter-selection.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterSelectionComponent {\n @Input()\n public filterConfigs: FilterConfigurationModel[];\n\n @Input()\n public loading: boolean;\n\n @Output()\n public filterSelected = new EventEmitter<FilterConfigurationModel>();\n\n public get filterGroups(): [FilterGroupConfiguration, FilterConfigurationModel[]][] {\n const groups = ArrayUtils.uniqueObjects(this.filterConfigs.map(x => x.group), x => x?.key);\n\n const result: [FilterGroupConfiguration, FilterConfigurationModel[]][] = [];\n for (const group of groups) {\n if (!group) {\n continue;\n }\n\n result.push([group, this.filterConfigs.filter(x => x.group?.key === group.key)]);\n }\n\n return result.sort(([, a], [, b]) => b.length - a.length);\n }\n\n public selectFilter(filterConfigurationModel: FilterConfigurationModel): void {\n this.filterSelected.emit(filterConfigurationModel);\n }\n}\n","<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item *ngIf=\"group[0].key | filterGroupIcon as icon\">\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"icon.class\" *ngIf=\"icon.class\"></i>\n <mat-icon mat-list-icon class=\"text-accent\" [svgIcon]=\"icon.svgIcon\" *ngIf=\"icon.svgIcon\"></mat-icon>\n <mat-icon mat-list-icon class=\"text-accent\" *ngIf=\"icon.matIcon\">{{ icon.matIcon }}</mat-icon>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output } from \"@angular/core\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\n\n@Directive({ selector: \"[niceQueryBuilderTrigger]\" })\nexport class QueryBuilderTriggerDirective {\n private overlayRef: OverlayRef;\n private filterSelectionRef: ComponentRef<FilterSelectionComponent>;\n\n private _queryBuilderFilters: FilterConfigurationModel[];\n private _queryBuilderFiltersLoading: boolean;\n\n @Input()\n public set queryBuilderFilters(queryBuilderFilters: FilterConfigurationModel[] | null) {\n if (queryBuilderFilters) {\n this._queryBuilderFilters = queryBuilderFilters;\n }\n this.updateFilterSelectionComponent();\n }\n\n @Input()\n public set queryBuilderFiltersLoading(queryBuilderFiltersLoading: boolean) {\n this._queryBuilderFiltersLoading = queryBuilderFiltersLoading;\n this.updateFilterSelectionComponent();\n }\n\n @Output()\n public queryBuilderFilterSelected = new EventEmitter<FilterConfigurationModel>();\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private platform: Platform\n ) {}\n\n @HostListener(\"click\")\n public click(): void {\n const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: this.isMobile() ? \"end\" : \"center\",\n overlayY: \"top\"\n }\n ]);\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n\n const filterSelectionPortal = new ComponentPortal(FilterSelectionComponent);\n this.filterSelectionRef = this.overlayRef.attach(filterSelectionPortal);\n this.updateFilterSelectionComponent();\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n private close(): void {\n this.overlayRef.dispose();\n }\n\n private updateFilterSelectionComponent(): void {\n if (!this.filterSelectionRef) {\n return;\n }\n\n this.filterSelectionRef.instance.filterConfigs = this._queryBuilderFilters;\n this.filterSelectionRef.instance.loading = this._queryBuilderFiltersLoading;\n this.filterSelectionRef.instance.filterSelected.subscribe((filter: FilterConfigurationModel) => {\n this.queryBuilderFilterSelected.emit(filter);\n this.close();\n });\n }\n\n private isMobile(): boolean {\n return this.platform.ANDROID || this.platform.IOS;\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\n\n@Component({ template: `` })\nexport class FilterComponent<T> implements ControlValueAccessor {\n private _value: T;\n\n public get value(): T | undefined {\n return this._value;\n }\n\n protected propagateChanges = (_: T) => {};\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public registerOnChange(fn: (_: T) => void): void {\n this.propagateChanges = fn;\n }\n\n public writeValue(value: T): void {\n this._value = value;\n }\n\n public onValueChange(value: T): void {\n this.propagateChanges(value);\n }\n}\n","import { Component, forwardRef, Input, OnChanges, OnDestroy, OnInit, Optional, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { of, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, switchMap } from \"rxjs/operators\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../models/filter.model\";\nimport { NiceFilterService } from \"../../../../base-list/providers/base-filter.service\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-select-filter\",\n templateUrl: \"select-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ]\n})\nexport class SelectFilterComponent extends FilterComponent<unknown> implements OnInit, OnDestroy, OnChanges {\n @Input()\n public filterConfig: FilterConfigurationModel;\n public values: SelectFilterValue[] = [];\n\n public search$ = new Subject<string>();\n\n private searchSub$: Subscription;\n\n constructor(@Optional() protected filterService: NiceFilterService<any>) {\n super();\n }\n\n public async ngOnInit(): Promise<void> {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n }\n\n this.searchSub$ = this.search$\n .pipe(\n debounceTime(300),\n switchMap(value => {\n if (this.filterConfig.lazyLoading) {\n return this.filterService.searchFilterValue(this.filterConfig, value);\n }\n\n return of(this.filterConfig.values as SelectFilterValue[]);\n })\n )\n .subscribe(values => {\n this.values = values;\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"filterConfig\" in changes) {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n } else {\n this.values = [];\n }\n }\n }\n\n private async searchValue(): Promise<void> {\n if (this.value && !this.values.find(v => v.id === this.value)) {\n const value = await this.filterService\n .searchFilterResourceValue(this.filterConfig, this.value as number)\n .toPromise();\n this.values = [...this.values, value];\n }\n }\n\n public onValueChange(value: unknown): void {\n super.onValueChange(value);\n this.searchValue();\n }\n\n public ngOnDestroy(): void {\n this.searchSub$.unsubscribe();\n }\n\n public writeValue(value: unknown): void {\n super.writeValue(value);\n this.searchValue();\n }\n}\n","<mat-form-field class=\"flex-auto\">\n <nice-typeahead *ngIf=\"!filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n\n <nice-typeahead *ngIf=\"filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n [typeahead]=\"search$\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-text-filter\",\n templateUrl: \"text-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ]\n})\nexport class TextFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" [mask]=\"(filterConfig?.mask) || ''\" [validation]=\"false\" type=\"text\" />\n</mat-form-field>\n","import { Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-number-filter\",\n templateUrl: \"number-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ]\n})\nexport class NumberFilterComponent extends FilterComponent<number> {}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" type=\"number\" />\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-radio-filter\",\n templateUrl: \"radio-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioFilterComponent),\n multi: true\n }\n ]\n})\nexport class RadioFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-radio-group class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n</mat-radio-group>\n","import { Component, forwardRef, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { NiceQueryBuilderIconOptions } from \"../../../models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"../../../query-builder.constant\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-date-filter\",\n templateUrl: \"date-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ]\n})\nexport class DateFilterComponent extends FilterComponent<string> {\n constructor(@Optional() @Inject(QUERY_BUILDER_ICONS) public icons: NiceQueryBuilderIconOptions) {\n super();\n }\n}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [matDatepicker]=\"picker\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon [svgIcon]=\"icons.datePicker.svgIcon\">{{ icons.datePicker.matIcon }}</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { FormGroupName } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { FilterConfigurationModel } from \"../../../models/filter.model\";\nimport { FilterOperators, QueryRuleModel } from \"../../../models/query.model\";\nimport { NiceQueryBuilderIconOptions } from \"../models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"../query-builder.constant\";\nimport { QueryForm, QueryRuleForm } from \"../query-builder.form\";\nimport { QBFilterUtils } from \"../utils/qb-filter.utils\";\n\n@Component({\n selector: \"nice-rule\",\n templateUrl: \"rule.template.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class RuleComponent implements OnInit {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Output()\n public remove = new EventEmitter();\n\n public formGroup: GeneratedFormGroup<QueryForm>;\n public rules: GeneratedFormArray<QueryRuleForm>;\n public filterOperator: FilterOperators;\n\n public get filterConfig(): FilterConfigurationModel {\n const rule = this.rules.at(0).value as QueryRuleModel;\n return this.filterConfigs?.find(f => f.id === rule.id) as FilterConfigurationModel;\n }\n\n public get isSingleInput(): boolean {\n return !this.isDoubleInput && !this.isNoInput;\n }\n\n public get isDoubleInput(): boolean {\n return QBFilterUtils.isDoubleInput(this.filterOperator);\n }\n\n public get isNoInput(): boolean {\n return QBFilterUtils.isNoInput(this.filterOperator);\n }\n\n constructor(\n @Optional() @Inject(QUERY_BUILDER_ICONS)\n public icons: NiceQueryBuilderIconOptions,\n private formGroupName: FormGroupName\n ) {}\n\n public ngOnInit(): void {\n this.formGroup = this.formGroupName.control as GeneratedFormGroup<QueryForm>;\n this.rules = this.formGroup.get(\"rules\") as GeneratedFormArray<QueryRuleForm>;\n this.filterOperator = this.rules.at(0).value.operation;\n }\n\n public onUpdateFilterConfig(config: FilterConfigurationModel): void {\n const rule = QBFilterUtils.createRule(config);\n this.rules.patchValue([rule as QueryRuleForm]);\n this.filterOperator = rule.operation;\n }\n\n public onClickOr(): void {\n this.rules.push(QBFilterUtils.createRule(this.filterConfig, this.filterOperator));\n }\n\n public onUpdateFilterOperator(operator: string): void {\n this.filterOperator = operator as FilterOperators;\n for (const rule of this.rules.controls) {\n rule.get(\"operation\")?.patchValue(this.filterOperator);\n\n if (this.isDoubleInput) {\n rule.get(\"value\")?.patchValue([rule.value.value, rule.value.value]);\n }\n }\n }\n\n public onClickDelete(index: number): void {\n if (this.rules.length > 1) {\n this.rules.removeAt(index);\n } else {\n this.remove.emit();\n }\n }\n}\n","<div class=\"flex flex-row justify-start items-center gap-2.5\">\n <button\n class=\"select-filter\"\n mat-raised-button\n color=\"accent\"\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfigs\"\n (queryBuilderFilterSelected)=\"onUpdateFilterConfig($event)\"\n >\n <div class=\"flex flex-row justify-between items-center\">\n <div class=\"config-name\">{{ filterConfig?.name }}</div>\n <mat-icon [svgIcon]=\"icons.arrowDown.svgIcon\">{{ icons.arrowDown.matIcon }}</mat-icon>\n </div>\n </button>\n <div class=\"flex flex-col md:flex-row flex-auto justify-start items-center gap-2.5\">\n <mat-form-field class=\"rule-form-field\">\n <mat-select\n class=\"rule-operator\"\n [ngModel]=\"filterOperator\"\n (ngModelChange)=\"onUpdateFilterOperator($event)\"\n >\n <mat-option *ngFor=\"let operator of filterConfig?.operators\" [value]=\"operator.id\">\n {{ operator?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"flex flex-col flex-grow flex-shrink md:flex-row flex-wrap\" [formGroup]=\"formGroup\">\n <ng-container formArrayName=\"rules\">\n <div\n class=\"rule-container flex flex-col md:flex-row flex-full justify-start items-center gap-2.5\"\n [class.is-double-input]=\"!!isDoubleInput\"\n [class.is-single-input]=\"!isDoubleInput\"\n [formGroupName]=\"i\"\n *ngFor=\"let rule of rules.controls; let i = index\"\n >\n <ng-container *ngIf=\"isSingleInput\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter *ngSwitchCase=\"'text'\" class=\"flex flex-auto\" formControlName=\"value\" [filterConfig]=\"filterConfig\"></nice-text-filter>\n <nice-number-filter *ngSwitchCase=\"'number'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter *ngSwitchCase=\"'date'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-date-filter>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isDoubleInput\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-text-filter>\n <nice-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-date-filter>\n </ng-container>\n <h3 class=\"aligned-text\">\n {{ \"components.query_builder.rule.conditions.and\" | translate }}\n </h3>\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-text-filter>\n <nice-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-date-filter>\n </ng-container>\n </ng-container>\n <div class=\"rule-buttons flex flex-row gap-2\">\n <button mat-mini-fab class=\"or-button aligned-button\" (click)=\"onClickOr()\">\n {{ \"components.query_builder.rule.conditions.or\" | translate }}\n </button>\n <button class=\"aligned-button\" mat-icon-button color=\"warn\" (click)=\"onClickDelete(i)\">\n <mat-icon [svgIcon]=\"icons.delete.svgIcon\">{{ icons.delete.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, forwardRef, Inject, Input, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup, ngxFormGeneratorFactory } from \"@recursyve/ngx-form-generator\";\nimport { NiceSavedReports } from \"../../api/models/saved-reports.model\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { QueryModel } from \"../../models/query.model\";\nimport { NiceQueryBuilderIconOptions } from \"./models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"./query-builder.constant\";\nimport { QueryBuilderForm, QueryForm } from \"./query-builder.form\";\nimport { QBFilterUtils } from \"./utils/qb-filter.utils\";\n\n@Component({\n selector: \"nice-query-builder\",\n templateUrl: \"./query-builder.template.html\",\n styleUrls: [\"./query-builder.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceQueryBuilderComponent),\n multi: true\n },\n {\n provide: GeneratedFormGroup,\n useFactory: ngxFormGeneratorFactory(QueryBuilderForm)\n }\n ]\n})\nexport class NiceQueryBuilderComponent implements ControlValueAccessor {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Input()\n public currentSavedReport: NiceSavedReports | null;\n\n @Input()\n public loading: boolean;\n\n @Output()\n public close = new EventEmitter();\n\n @Output()\n public createReport = new EventEmitter();\n\n @Output()\n public updateReport = new EventEmitter();\n\n public rules: GeneratedFormArray<QueryForm>;\n\n public get canSave(): boolean {\n return !this.currentSavedReport;\n }\n\n private propagateChanges = (_: QueryModel[]) => {};\n\n constructor(\n @Optional() @Inject(QUERY_BUILDER_ICONS)\n public icons: NiceQueryBuilderIconOptions,\n public formGroup: GeneratedFormGroup<QueryBuilderForm>\n ) {\n this.rules = this.formGroup.get(\"rules\") as GeneratedFormArray<QueryForm>;\n }\n\n public registerOnChange(fn: (rules: QueryModel[]) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n\n public writeValue(rules: QueryModel[]): void {\n this.rules.clear();\n this.formGroup.patchValue(new QueryBuilderForm(rules));\n }\n\n public onClickAddRule(filterConfigurationModel: FilterConfigurationModel): void {\n this.rules.push(QBFilterUtils.createQueryModel(filterConfigurationModel));\n }\n\n public onClickDeleteRule(id: number): void {\n this.rules.removeAt(id);\n\n if (this.rules.length === 0) {\n this.close.emit();\n this.onClickApply();\n }\n }\n\n public onClickApply(): void {\n this.propagateChanges(this.formGroup.getRawValue().transform());\n }\n\n public onClickSaveReport(): void {\n this.createReport.emit();\n }\n\n public onClickUpdateReport(): void {\n this.updateReport.emit();\n }\n}\n","<div class=\"rules-container flex flex-col\" *ngIf=\"!loading\" [formGroup]=\"formGroup\">\n <ng-container formArrayName=\"rules\">\n <nice-rule\n *ngFor=\"let rule of rules.controls; let i = index\"\n (remove)=\"onClickDeleteRule(i)\"\n [filterConfigs]=\"filterConfigs\"\n [formGroupName]=\"i\"\n ></nice-rule>\n </ng-container>\n <div class=\"flex justify-between\">\n <button\n class=\"add-button add-rule-button\"\n mat-mini-fab\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfigs\"\n (queryBuilderFilterSelected)=\"onClickAddRule($event)\"\n >\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n </button>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <!-- TODO: Support saved reports -->\n <!--<button mat-button color=\"primary\" (click)=\"onClickSaveReport()\" *ngIf=\"canSave\">\n <mat-icon class=\"mr-8\" fxHide.lt-md>save</mat-icon>\n {{ \"components.query_builder.save_report\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"onClickUpdateReport()\" *ngIf=\"!canSave\">\n <mat-icon class=\"mr-8\" fxHide.lt-md>save</mat-icon>\n {{ \"components.query_builder.update_report\" | translate }}\n </button>-->\n <button mat-stroked-button color=\"accent\" (click)=\"onClickApply()\">\n {{ \"components.query_builder.update\" | translate }}\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n</div>\n","import {\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef\n} from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { PageEvent } from \"@angular/material/paginator\";\nimport { Sort } from \"@angular/material/sort\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { ExportBottomSheetComponent, ExportStrategy, NiceMediaWatcherService } from \"@recursyve/nice-ui-kit.v2\";\nimport { combineLatest, Observable, Subject } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, map, switchMap } from \"rxjs/operators\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../models/query.model\";\nimport {\n BASE_LIST_ICONS,\n BASE_LIST_LAYOUT,\n ENABLE_QUERY_BUILDER,\n EXPORTS_SETTINGS,\n TABLE_COLUMNS\n} from \"./base-list.constant\";\nimport { NiceBaseListButtonsDirective } from \"./directives/base-list-buttons.directive\";\nimport { NiceBaseListCardsDirective } from \"./directives/base-list-cards.directive\";\nimport { NiceBaseListCustomContentDirective } from \"./directives/base-list-custom-content.directive\";\nimport { NiceBaseListEmptyStateDirective } from \"./directives/base-list-empty-state.directive\";\nimport { NiceBaseListFiltersDirective } from \"./directives/base-list-filters.directive\";\nimport { NiceBaseListTableDirective } from \"./directives/base-list-table.directive\";\nimport { NiceBaseListTitleDirective } from \"./directives/base-list-title.directive\";\nimport { TableColumns } from \"./models/columns.model\";\nimport { ExportSettings } from \"./models/export.model\";\nimport { NiceBaseIconOptions } from \"./models/icons.model\";\nimport { BaseListLayout, LayoutContent } from \"./models/layout.model\";\nimport { NiceFilterService } from \"./providers/base-filter.service\";\nimport { NiceBaseListQuery } from \"./store/base-list.query\";\nimport { NiceBaseListService } from \"./store/base-list.service\";\nimport { NiceBaseListStore } from \"./store/base-list.store\";\nimport { NiceBaseListEmptySearchResultStateDirective } from \"./directives/base-list-empty-search-result-state.directive\";\n\n@Component({\n selector: \"nice-base-list\",\n templateUrl: \"./base-list.template.html\",\n providers: [\n NiceBaseListQuery,\n NiceBaseListService,\n NiceBaseListStore\n ]\n})\nexport class NiceBaseListComponent<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit, OnDestroy, OnChanges {\n @ContentChild(NiceBaseListTitleDirective, { read: TemplateRef })\n public title: TemplateRef<any>;\n\n @ContentChildren(NiceBaseListButtonsDirective)\n public buttons: NiceBaseListButtonsDirective[];\n\n @ContentChild(NiceBaseListTableDirective)\n public table: NiceBaseListTableDirective;\n\n @ContentChild(NiceBaseListCardsDirective, { read: TemplateRef })\n public cards: TemplateRef<any>;\n\n @ContentChild(NiceBaseListCustomContentDirective, { read: TemplateRef })\n public customContent: TemplateRef<any>;\n\n @ContentChild(NiceBaseListFiltersDirective, { read: TemplateRef })\n public filters: TemplateRef<any>;\n\n @ContentChild(NiceBaseListEmptyStateDirective, { read: TemplateRef })\n public emptyState: TemplateRef<any>;\n\n @ContentChild(NiceBaseListEmptySearchResultStateDirective, { read: TemplateRef })\n public emptySearchResultState: TemplateRef<any>;\n\n @Input()\n public mode: \"normal\" | \"infinite-scroll\" = \"normal\";\n\n @Input()\n public layout: \"page\" | \"component\" = \"page\";\n\n @Input()\n public layoutContent = LayoutContent.Table;\n\n @Input()\n public autoChangeLayout = true;\n\n @Input()\n public baseRoute: string;\n\n @Input()\n public routeFn: (item: any) => string | string[];\n\n @Input()\n public navigateFn: (baseRoute: string, item: any) => string;\n\n @Input()\n public autoLoad = true;\n\n @Input()\n public pageTitle: string;\n\n @Input()\n public canExport = true;\n\n @Input()\n public disableRouting = false;\n\n @Input()\n public customExport: ExportStrategy[] = [];\n\n @Input()\n public queryParams: QueryParams = {};\n\n @Input()\n public configQueryParams: QueryParams = {};\n\n @Output()\n public newPage = new EventEmitter<PageEvent>();\n\n public defaultPageSizeOptions = [10, 25, 50, 100];\n public columnNames: string[] = [];\n\n public loading$ = this.query.selectLoading();\n\n public filterResult$ = this.query.selectFilterResult();\n public data$ = this.query.selectData();\n public recordsFiltered$ = this.filterResult$.pipe(map(f => f && f.total));\n public isEmpty$ = this.query.selectEmpty();\n public isSearchResultEmpty$ = this.query.selectSearchResultEmpty();\n\n public showQueryBuilder$ = this.query.selectShowQueryBuilder();\n public filterParameters$ = this.query.selectFilterParameters();\n public index$ = this.filterParameters$.pipe(map(f => Math.floor((f.start ?? 0) / (f.length ?? 1))));\n public length$ = this.filterParameters$.pipe(map(f => f.length));\n public searchQuery$ = this.filterParameters$.pipe(map(f => f.search));\n public filterConfig$ = this.query.selectFilterConfig();\n public sortColumn$ = this.filterParameters$.pipe(map(f => (f.order && f.order.column) ?? \"\"));\n public sortDirection$ = this.filterParameters$.pipe(map(f => f.order && f.order.direction));\n\n public filterConfigLoading$ = this.query.selectFilterConfigLoading();\n public rules$ = this.filterParameters$.pipe(map(parameters => parameters.rules));\n public rulesCount$ = this.filterParameters$.pipe(map(parameters => parameters.rules?.length ?? 0));\n\n public xsActive$ = this.mediaWatcher.xsBreakpointActive$;\n public smActive$ = this.mediaWatcher.smBreakpointActive$;\n public mdActive$ = this.mediaWatcher.mdBreakpointActive$;\n public lgActive$ = this.mediaWatcher.lgBreakpointActive$;\n public xlActive$ = this.mediaWatcher.xlBreakpointActive$;\n public defaultActive$ = combineLatest([this.xsActive$, this.smActive$, this.mdActive$, this.lgActive$, this.xlActive$]).pipe(\n map(([xs, sm, md, lg, xl]) => {\n return xs && !this.listLayout.xs\n || sm && !this.listLayout.sm\n || md && !this.listLayout.md\n || lg && !this.listLayout.lg\n || xl && !this.listLayout.xl;\n })\n );\n\n private searchText$ = new Subject<string>();\n\n constructor(\n @Optional()\n @Inject(ENABLE_QUERY_BUILDER)\n public enableQueryBuilder: boolean,\n @Inject(BASE_LIST_ICONS)\n public icons: NiceBaseIconOptions,\n @Inject(BASE_LIST_LAYOUT)\n public listLayout: BaseListLayout,\n @Inject(TABLE_COLUMNS)\n public columns: TableColumns[],\n @Inject(EXPORTS_SETTINGS)\n private readonly exportsSettings: ExportSettings,\n public readonly query: NiceBaseListQuery,\n public readonly service: NiceBaseListService<Filter>,\n private readonly activatedRoute: ActivatedRoute,\n private readonly bottomSheet: MatBottomSheet,\n private readonly router: Router,\n private readonly mediaWatcher: NiceMediaWatcherService\n ) {\n this.setColumns(columns);\n }\n\n public get prefixButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"prefix\")?.template;\n }\n\n public get suffixButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"suffix\")?.template;\n }\n\n public get searchButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"search\")?.template;\n }\n\n public async ngOnInit(): Promise<void> {\n await this.service.init(this.configQueryParams);\n this.service.loadQueryParams(this.autoLoad);\n\n this.searchText$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((search) => {\n this.service.resetPaging();\n return this.service.searchData(search);\n })\n )\n .subscribe();\n\n this.mediaWatcher.asObservable().subscribe(() => {\n if (!this.autoChangeLayout) {\n return;\n }\n\n if (this.mediaWatcher.isActive(\"lt-md\") && this.layoutContent === LayoutContent.Table) {\n this.layoutContent = LayoutContent.Cards;\n } else {\n this.layoutContent = LayoutContent.Table;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.service.closeSubscriptions();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"mode\" in changes) {\n this.service.setMode(changes.mode.currentValue);\n }\n if (\"queryParams\" in changes) {\n this.service.setQueryParams(changes.queryParams.currentValue);\n }\n }\n\n public setLoading(loading: boolean): void {\n this.service.setLoading(loading);\n }\n\n public clickToggleShowQueryBuilder(): void {\n this.service.toggleQueryBuilder();\n }\n\n public onUpdateRules(rules: QueryModel[]): void {\n this.service.updateGlobalRules(rules);\n }\n\n public onQueryBuilderFilterSelected(filterConfigurationModel: FilterConfigurationModel): void {\n this.service.addRuleFromConfig(filterConfigurationModel);\n }\n\n public onUpdatePage(pageEvent: PageEvent): void {\n this.service.loadNewPage(pageEvent.pageIndex * pageEvent.pageSize, pageEvent.pageSize);\n this.newPage.emit(pageEvent);\n }\n\n public onUpdateSearch(search: string): void {\n this.searchText$.next(search);\n }\n\n public getFilterRule$(id: string): Observable<QueryRuleModel | undefined> {\n return this.filterParameters$.pipe(\n map(f => {\n return (\n f.rules &&\n f.rules[0] &&\n f.rules[0].rules &&\n (f.rules[0].rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel)\n );\n })\n );\n }\n\n public onUpdateSort(sort: Sort): void {\n const nullLast = this.columns.find((x) => x.id === sort.active)?.nullLast;\n if (!sort.active || !sort.direction) {\n sort = {\n active: \"id\",\n direction: \"asc\"\n };\n }\n\n this.service.loadData({\n order: sort.active && sort.direction ? { column: sort.active, direction: sort.direction, nullLast } : null\n });\n }\n\n public updateRule(id: string, newRule: QueryRuleModel): void {\n this.service.updateRule(id, newRule);\n }\n\n public updateRules(rules: QueryRuleModel[]): void {\n this.service.updateRules(rules);\n }\n\n public clickExport(): void {\n const exports = [];\n if (this.exportsSettings.xlsx) {\n exports.push({\n type: \"xlsx\",\n onClickExport: () => this.clickXlsx()\n });\n } else if (this.exportsSettings.csv) {\n exports.push({\n type: \"csv\",\n onClickExport: () => this.clickCsv()\n });\n } else if (this.exportsSettings.pdf) {\n exports.push({\n type: \"pdf\",\n onClickExport: () => this.clickPdf()\n });\n }\n this.bottomSheet.open(ExportBottomSheetComponent, {\n data: {\n exportStrategies: [\n ...exports,\n ...this.customExport\n ]\n }\n });\n }\n\n public navigate(item: any): void {\n if (this.navigateFn) {\n this.navigateFn(this.baseRoute, item);\n } else {\n const route = this.routeFn ? this.routeFn(item) : [(this.baseRoute || \"\") + item?.id];\n this.router.navigate(typeof route === \"string\" ? [route] : route, { relativeTo: this.activatedRoute });\n }\n }\n\n public clickXlsx(): void {\n this.service.downloadData(\"xlsx\");\n }\n\n public clickCsv(): void {\n this.service.downloadData(\"csv\");\n }\n\n public clickPrint(): void {\n this.service.printData();\n }\n\n public clickPdf(): void {\n this.service.downloadData(\"pdf\");\n }\n\n public setColumns(columns: TableColumns[]): void {\n this.columns = columns;\n this.columnNames = columns.map(x => x.id);\n }\n\n public addColumns(columns: TableColumns[], prepend = false): void {\n if (prepend) {\n this.setColumns([\n ...columns,\n ...this.columns\n ]);\n } else {\n this.setColumns([\n ...this.columns,\n ...columns\n ]);\n }\n }\n}\n","<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl, active: xlActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg, active: lgActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md, active: mdActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm, active: smActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs, active: xsActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default, active: defaultActive$ | async }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\" let-active=\"active\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout }, active }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout, active }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\" let-active=\"active\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item, active }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\" let-active=\"active\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon [svgIcon]=\"icons.search.svgIcon\">{{ icons.search.matIcon }}</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n\n <ng-container *ngIf=\"searchButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"searchButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async) && (filterConfig$ | async).length > 0\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [svgIcon]=\"icons.queryBuilder.svgIcon\"\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n {{ icons.queryBuilder.matIcon }}\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [svgIcon]=\"icons.queryBuilder.svgIcon\"\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n {{ icons.queryBuilder.matIcon }}\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"((isEmpty$ | async) && emptyState) || ((isSearchResultEmpty$ | async) && emptySearchResultState); else showData\">\n\n <ng-container *ngIf=\"(isSearchResultEmpty$ | async)\">\n <ng-container *ngTemplateOutlet=\"emptySearchResultState\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isEmpty$ | async\">\n <ng-container *ngTemplateOutlet=\"emptyState\"></ng-container>\n </ng-container>\n\n </ng-container>\n <ng-template #showData>\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: table.stickyHeader\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\" let-active=\"active\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data, active }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\" let-active=\"active\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { $implicit: data$ | async, data: data$ | async, total: recordsFiltered$ | async, active }\"></ng-container>\n </div>\n</ng-template>\n","import { Injectable } from \"@angular/core\";\nimport { NativeDateAdapter } from \"@angular/material/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Injectable()\nexport class NiceCustomDateAdapter extends NativeDateAdapter {\n constructor(private translateService: TranslateService) {\n super();\n\n this.setLocale(this.translateService.getDefaultLang());\n\n // @ts-ignore\n this._format = (dtf: any, date: any) => {\n return dtf.format(date);\n };\n }\n\n public format(date: Date, displayFormat: any): string {\n return super.format(date, displayFormat);\n }\n\n public getDate(date: Date): number {\n return date.getUTCDate();\n }\n\n public getMonth(date: Date): number {\n return date.getUTCMonth();\n }\n\n public getYear(date: Date): number {\n return date.getUTCFullYear();\n }\n}\n","import { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\n\nexport interface NiceQueryBuilderIconOptions {\n add?: NiceBaseListIcons;\n refresh?: NiceBaseListIcons;\n delete?: NiceBaseListIcons;\n arrowDown?: NiceBaseListIcons;\n datePicker?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceQueryBuilderIconOptions = {\n add: {\n matIcon: \"add\"\n },\n refresh: {\n matIcon: \"refresh\"\n },\n delete: {\n matIcon: \"delete\"\n },\n arrowDown: {\n matIcon: \"arrow_drop_down\"\n },\n datePicker: {\n matIcon: \"today\"\n }\n};\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { DateAdapter, MatRippleModule } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceLoadingSpinnerModule, NiceTypeaheadModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { NiceCustomDateAdapter } from \"../../utils/date.adapter\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { defaultIcons, NiceQueryBuilderIconOptions } from \"./models/icons.model\";\nimport { FilterGroupIconPipe } from \"./pipes/filter-group-icon.pipe\";\nimport { QueryBuilderTriggerDirective } from \"./query-builder-trigger.directive\";\nimport { NiceQueryBuilderComponent } from \"./query-builder.component\";\nimport { QUERY_BUILDER_ICONS } from \"./query-builder.constant\";\nimport { DateFilterComponent } from \"./rule/components/date/date-filter.component\";\nimport { NumberFilterComponent } from \"./rule/components/number/number-filter.component\";\nimport { RadioFilterComponent } from \"./rule/components/radio/radio-filter.component\";\nimport { SelectFilterComponent } from \"./rule/components/select/select-filter.component\";\nimport { TextFilterComponent } from \"./rule/components/text/text-filter.component\";\nimport { RuleComponent } from \"./rule/rule.component\";\n\nexport interface QueryBuilderGlobalOptions {\n icons?: NiceQueryBuilderIconOptions;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n OverlayModule,\n MatCardModule,\n MatListModule,\n MatButtonModule,\n MatRippleModule,\n MatIconModule,\n MatSelectModule,\n MatInputModule,\n MatDatepickerModule,\n MatRadioModule,\n NiceLoadingSpinnerModule,\n NiceTypeaheadModule,\n ReactiveFormsModule,\n NgxMaskDirective\n ],\n declarations: [\n NiceQueryBuilderComponent,\n QueryBuilderTriggerDirective,\n FilterSelectionComponent,\n RuleComponent,\n SelectFilterComponent,\n TextFilterComponent,\n NumberFilterComponent,\n RadioFilterComponent,\n DateFilterComponent,\n FilterGroupIconPipe\n ],\n providers: [{ provide: DateAdapter, useClass: NiceCustomDateAdapter }],\n exports: [NiceQueryBuilderComponent, QueryBuilderTriggerDirective]\n})\nexport class NiceQueryBuilderModule {\n public static forRoot(options?: QueryBuilderGlobalOptions): ModuleWithProviders<NiceQueryBuilderModule> {\n return {\n ngModule: NiceQueryBuilderModule,\n providers: [\n {\n provide: QUERY_BUILDER_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n }\n ]\n };\n }\n}\n","export type NiceBaseListIcons =\n { matIcon: string; svgIcon?: string; } |\n { matIcon?: string; svgIcon: string; } |\n { class: string, matIcon?: string; svgIcon?: string; };\n\nexport interface NiceBaseIconOptions {\n search?: NiceBaseListIcons;\n queryBuilder?: NiceBaseListIcons;\n close?: NiceBaseListIcons;\n print?: NiceBaseListIcons;\n download?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceBaseIconOptions = {\n search: {\n matIcon: \"search\"\n },\n queryBuilder: {\n matIcon: \"filter_list\"\n },\n close: {\n matIcon: \"close\"\n },\n print: {\n matIcon: \"print\"\n },\n download: {\n matIcon: \"cloud_download\"\n }\n};\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBadgeModule } from \"@angular/material/badge\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatPaginatorModule } from \"@angular/material/paginator\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule, NiceLoadingSpinnerModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel } from \"../../models/filter.model\";\nimport { QueryModel } from \"../../models/query.model\";\nimport { NiceFilterGroupService } from \"../query-builder/providers/filter-group.service\";\nimport { NiceQueryBuilderModule } from \"../query-builder/query-builder.module\";\nimport { NiceBaseListComponent } from \"./base-list.component\";\nimport {\n BASE_LIST_ICONS,\n BASE_LIST_LAYOUT,\n DEFAULT_PARAMETERS, DEFAULT_RULES, DISABLE_QUERY_PARAMS,\n ENABLE_QUERY_BUILDER,\n EXPORTS_SETTINGS,\n LIST_TABLE,\n TABLE_COLUMNS\n} from \"./base-list.constant\";\nimport { NiceBaseListDirectiveModule } from \"./directives/base-list-directives.module\";\nimport { TableColumns } from \"./models/columns.model\";\nimport { ExportSettings } from \"./models/export.model\";\nimport { defaultIcons, NiceBaseIconOptions } from \"./models/icons.model\";\nimport { BaseListLayout, defaultLayout } from \"./models/layout.model\";\nimport { NiceFilterService } from \"./providers/base-filter.service\";\nimport { NiceSavedReportService } from \"./providers/base-list-saved-report.service\";\n\nexport interface BaseListOptions<T> {\n table: string;\n columns: TableColumns[];\n filterService: Type<NiceFilterService<T>>;\n defaultRules?: QueryModel[];\n defaultParameters?: FilterParametersModel;\n layout?: BaseListLayout;\n exports?: ExportSettings;\n disableQueryBuilder?: boolean;\n disableQueryParams?: boolean;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\nexport interface BaseListGlobalOptions {\n layout?: BaseListLayout;\n icons?: NiceBaseIconOptions;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\n@NgModule({\n imports: [\n NiceExportBottomSheetModule,\n NiceBaseListDirectiveModule,\n CommonModule,\n FormsModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCardModule,\n MatPaginatorModule,\n TranslateModule,\n NiceLoadingSpinnerModule,\n MatTableModule,\n MatSortModule,\n MatRippleModule,\n MatBottomSheetModule,\n NiceQueryBuilderModule,\n MatBadgeModule\n ],\n declarations: [\n NiceBaseListComponent\n ],\n exports: [\n NiceBaseListComponent,\n NiceBaseListDirectiveModule\n ]\n})\nexport class NiceBaseListModule {\n public static forRoot(options?: BaseListGlobalOptions): ModuleWithProviders<NiceBaseListModule> {\n return {\n ngModule: NiceBaseListModule,\n providers: [\n {\n provide: BASE_LIST_LAYOUT,\n useValue: options?.layout ?? defaultLayout\n },\n {\n provide: BASE_LIST_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n },\n ...(options?.queryBuilder ? [\n {\n provide: ENABLE_QUERY_BUILDER,\n useValue: true\n },\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x)\n };\n }\n\n public static providerFactory<T>(options: BaseListOptions<T>): Provider[] {\n return [\n {\n provide: NiceFilterService,\n useClass: options.filterService\n },\n {\n provide: LIST_TABLE,\n useValue: options.table\n },\n {\n provide: TABLE_COLUMNS,\n useValue: options.columns,\n },\n {\n provide: DEFAULT_RULES,\n useValue: options.defaultRules\n },\n {\n provide: DEFAULT_PARAMETERS,\n useValue: options.defaultParameters\n },\n options.layout ? {\n provide: BASE_LIST_LAYOUT,\n useValue: options.layout\n } : undefined,\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: DISABLE_QUERY_PARAMS,\n useValue: options.disableQueryParams ?? false\n },\n options.disableQueryBuilder !== undefined ? {\n provide: ENABLE_QUERY_BUILDER,\n useValue: !options.disableQueryBuilder\n } : null,\n ...(options.queryBuilder ? [\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x);\n }\n}\n","import { FilterParametersModel } from \"../../../models/filter.model\";\nimport { TableColumns } from \"../../base-list/models/columns.model\";\n\nexport class NiceListState {\n table: string;\n columns: TableColumns[];\n defaultParameters?: FilterParametersModel;\n}\n\nexport interface ListStates {\n [state: string]: NiceListState;\n}\n","import { NiceFilterApiDefinition } from \"../../../api/filter.api\";\nimport { NiceFilterService } from \"../../base-list/providers/base-filter.service\";\n\nexport class NiceMultiStateFilterService extends NiceFilterService<any> {\n protected constructor(protected filters: { [state: string]: NiceFilterApiDefinition }) {\n super();\n }\n\n public switchState(state: string): void {\n this.api = this.filters[state];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { StoreConfig } from \"@datorama/akita\";\nimport { initialBaseListState, NiceBaseListState, NiceBaseListStore } from \"../../base-list/store/base-list.store\";\n\n// tslint:disable-next-line:no-empty-interface\nexport interface NiceMultiStateListState extends NiceBaseListState {}\n\nexport const initialValue: NiceMultiStateListState = {\n ...initialBaseListState\n};\n\n@Injectable()\n@StoreConfig({ name: \"multi-state-list\", resettable: true })\nexport class NiceMultiStateListStore extends NiceBaseListStore<NiceMultiStateListState> {\n constructor() {\n super(null, []);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceBaseListQuery } from \"../../base-list/store/base-list.query\";\nimport { NiceMultiStateListState, NiceMultiStateListStore } from \"./multi-state-list.store\";\n\n@Injectable()\nexport class NiceMultiStateListQuery extends NiceBaseListQuery<NiceMultiStateListState> {\n constructor(protected store: NiceMultiStateListStore) {\n super(store);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const LIST_STATES = new InjectionToken(\"list_states\");\n","import { ApplicationRef, Inject, Injectable } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { DISABLE_QUERY_PARAMS } from \"../../base-list/base-list.constant\";\nimport { TableColumns } from \"../../base-list/models/columns.model\";\nimport { NiceBaseListService } from \"../../base-list/store/base-list.service\";\nimport { initialBaseListState } from \"../../base-list/store/base-list.store\";\nimport { ListStates } from \"../models/list-states.model\";\nimport { LIST_STATES } from \"../multi-state-list.constant\";\nimport { NiceMultiStateFilterService } from \"../providers/multi-state-filter.service\";\nimport { NiceMultiStateListStore } from \"./multi-state-list.store\";\n\n@Injectable()\nexport class NiceMultiStateListService extends NiceBaseListService {\n constructor(\n @Inject(LIST_STATES) private states: ListStates,\n @Inject(DISABLE_QUERY_PARAMS)\n disableQueryParams: boolean,\n store: NiceMultiStateListStore,\n activatedRoute: ActivatedRoute,\n router: Router,\n appRef: ApplicationRef,\n private multiFilterService: NiceMultiStateFilterService\n ) {\n super(store, multiFilterService, disableQueryParams, activatedRoute, router, appRef);\n }\n\n public reset(): void {\n this.store.reset();\n }\n\n public setStateDefaultFilter(state: string, parameters: FilterParametersModel): void {\n this.states[state].defaultParameters = parameters;\n }\n\n public switchState(state: string): TableColumns[] {\n const newState = this.states[state];\n if (!state) {\n return [];\n }\n\n this.multiFilterService.switchState(state);\n this.reset();\n this.init();\n this.loadData(newState.defaultParameters ?? initialBaseListState.filterParameters);\n return newState.columns;\n }\n}\n","import { Component, Inject, Input, Optional } from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { NiceMediaWatcherService } from \"@recursyve/nice-ui-kit.v2\";\nimport { NiceBaseListComponent } from \"../base-list/base-list.component\";\nimport { BASE_LIST_ICONS, BASE_LIST_LAYOUT, ENABLE_QUERY_BUILDER, EXPORTS_SETTINGS } from \"../base-list/base-list.constant\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { NiceBaseIconOptions } from \"../base-list/models/icons.model\";\nimport { BaseListLayout } from \"../base-list/models/layout.model\";\nimport { NiceMultiStateListQuery } from \"./store/multi-state-list.query\";\nimport { NiceMultiStateListService } from \"./store/multi-state-list.service\";\nimport { NiceMultiStateListStore } from \"./store/multi-state-list.store\";\n\n@Component({\n selector: \"nice-multi-state-list\",\n templateUrl: \"../base-list/base-list.template.html\",\n providers: [\n NiceMultiStateListQuery,\n NiceMultiStateListService,\n NiceMultiStateListStore\n ]\n})\nexport class NiceMultiStateListComponent extends NiceBaseListComponent {\n @Input()\n public set state(state: string) {\n this.switchState(state);\n }\n\n constructor(\n @Optional() @Inject(ENABLE_QUERY_BUILDER) enableQueryBuilder: boolean,\n @Inject(BASE_LIST_ICONS) icons: NiceBaseIconOptions,\n @Inject(BASE_LIST_LAYOUT) listLayout: BaseListLayout,\n @Inject(EXPORTS_SETTINGS) exportsSetting: ExportSettings,\n query: NiceMultiStateListQuery,\n activatedRoute: ActivatedRoute,\n bottomSheet: MatBottomSheet,\n router: Router,\n mediaWatcher: NiceMediaWatcherService,\n private multiStateListService: NiceMultiStateListService,\n ) {\n super(\n enableQueryBuilder,\n icons,\n listLayout,\n [],\n exportsSetting,\n query,\n multiStateListService,\n activatedRoute,\n bottomSheet,\n router,\n mediaWatcher\n );\n }\n\n private switchState(state: string): void {\n const columns = this.multiStateListService.switchState(state);\n this.setColumns(columns);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBadgeModule } from \"@angular/material/badge\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatPaginatorModule } from \"@angular/material/paginator\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule, NiceLoadingSpinnerModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { BASE_LIST_LAYOUT, DISABLE_QUERY_PARAMS, ENABLE_QUERY_BUILDER, EXPORTS_SETTINGS } from \"../base-list/base-list.constant\";\nimport { NiceBaseListDirectiveModule } from \"../base-list/directives/base-list-directives.module\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { BaseListLayout } from \"../base-list/models/layout.model\";\nimport { NiceSavedReportService } from \"../base-list/providers/base-list-saved-report.service\";\nimport { NiceFilterGroupService } from \"../query-builder/providers/filter-group.service\";\nimport { NiceQueryBuilderModule } from \"../query-builder/query-builder.module\";\nimport { ListStates } from \"./models/list-states.model\";\nimport { NiceMultiStateListComponent } from \"./multi-state-list.component\";\nimport { LIST_STATES } from \"./multi-state-list.constant\";\nimport { NiceMultiStateFilterService } from \"./providers/multi-state-filter.service\";\n\nexport interface MultiStateListOptions {\n filterService: Type<NiceMultiStateFilterService>;\n states: ListStates;\n layout?: BaseListLayout;\n exports?: ExportSettings;\n disableQueryBuilder?: boolean;\n disableQueryParams?: boolean;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\n@NgModule({\n imports: [\n NiceExportBottomSheetModule,\n NiceBaseListDirectiveModule,\n CommonModule,\n FormsModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCardModule,\n MatPaginatorModule,\n TranslateModule,\n NiceLoadingSpinnerModule,\n MatTableModule,\n MatSortModule,\n MatRippleModule,\n MatBottomSheetModule,\n NiceQueryBuilderModule,\n MatBadgeModule\n ],\n declarations: [\n NiceMultiStateListComponent\n ],\n exports: [\n NiceMultiStateListComponent,\n NiceBaseListDirectiveModule\n ]\n})\nexport class NiceMultiStateListModule {\n public static providerFactory<T>(options: MultiStateListOptions): Provider[] {\n return [\n {\n provide: NiceMultiStateFilterService,\n useExisting: options.filterService\n },\n {\n provide: LIST_STATES,\n useValue: options.states\n },\n options.layout ? {\n provide: BASE_LIST_LAYOUT,\n useValue: options.layout\n } : undefined,\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: DISABLE_QUERY_PARAMS,\n useValue: options.disableQueryParams ?? false\n },\n options.disableQueryBuilder !== undefined ? {\n provide: ENABLE_QUERY_BUILDER,\n useValue: !options.disableQueryBuilder\n } : null,\n ...(options.queryBuilder ? [\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const EXPORTS_SETTINGS = new InjectionToken(\"exports_settings\");\nexport const FILTER_VIEW_ICONS = new InjectionToken(\"filter_view_icons\");\nexport const FILTER_VIEW_STATE = new InjectionToken(\"filter_view_state\");\nexport const FILTER_VIEW_STORE = new InjectionToken(\"filter_view_store\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { arrayAdd, arrayRemove, arrayUpsert, EntityState, EntityStore, HashMap, transaction } from \"@datorama/akita\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { StoreConfigOptions } from \"@datorama/akita/src/lib/storeConfig\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { OrderOptions } from \"../models/order-options.model\";\nimport { FILTER_VIEW_STATE, FILTER_VIEW_STORE } from \"../nice-filter-view.constant\";\n\nexport interface NiceFilterViewState extends EntityState {\n subStates: HashMap<any>;\n mode: \"paginated\" | \"accumulated\";\n autoLoad: boolean;\n disabled: boolean;\n initialLoadCompleted: boolean;\n filterConfigLoading: boolean;\n filterConfig: FilterConfigurationModel[];\n filterResult: FilterResultModel | null;\n filterParameters: FilterParametersModel;\n baseRules: (QueryRuleModel | QueryModel)[];\n queryParams: QueryParams | null;\n orderColumns: OrderOptions | null;\n resetResult: boolean;\n}\n\nexport const initialValue: NiceFilterViewState = {\n subStates: {},\n mode: \"paginated\",\n autoLoad: true,\n disabled: false,\n initialLoadCompleted: false,\n filterConfigLoading: false,\n filterConfig: [],\n filterResult: null,\n filterParameters: {\n start: 0,\n length: 10,\n order: {},\n search: \"\",\n rules: [],\n data: {}\n },\n baseRules: [],\n queryParams: null,\n orderColumns: null,\n resetResult: false\n};\n\n@Injectable()\nexport class NiceFilterViewStore extends EntityStore<NiceFilterViewState> {\n constructor(@Inject(FILTER_VIEW_STATE) state: Partial<NiceFilterViewState>, @Inject(FILTER_VIEW_STORE) store: StoreConfigOptions) {\n super({\n ...initialValue,\n ...state,\n filterParameters: {\n ...initialValue.filterParameters,\n ...(state.filterParameters ?? {})\n }\n }, store);\n }\n\n public setFilterConfigLoading(loading: boolean): void {\n this.update({ filterConfigLoading: loading });\n }\n\n public setParameters(filterParameters: FilterParametersModel): void {\n this.update({ filterParameters });\n }\n\n public patchParameters(filterParameters: FilterParametersModel): void {\n this.update(({ filterParameters: currentFilterParameters }) => ({\n filterParameters: {\n ...currentFilterParameters,\n ...filterParameters\n }\n }));\n }\n\n @transaction()\n public setResult(filterResult: FilterResultModel): void {\n const { mode, resetResult, initialLoadCompleted } = this.getValue();\n if (mode === \"accumulated\") {\n this.update((state) => ({\n filterResult: {\n page: filterResult.page,\n total: filterResult.total,\n values: [\n ...(resetResult ? [] : state.filterResult?.values ?? []),\n ...filterResult.values\n ]\n },\n resetResult: false\n }));\n } else {\n this.update({\n filterResult\n });\n }\n\n if (mode === \"accumulated\" && !resetResult) {\n this.add([...filterResult.values]);\n } else {\n this.set([...filterResult.values]);\n }\n\n if (!initialLoadCompleted) {\n this.update({ initialLoadCompleted: true });\n }\n }\n\n @transaction()\n public addValue(value: any, opts?: AddEntitiesOptions): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, value, opts)\n }\n });\n\n this.add(value, opts);\n }\n\n @transaction()\n public addValues(values: any[], opts?: AddEntitiesOptions): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, values, opts)\n }\n });\n\n this.add(values, opts);\n }\n\n @transaction()\n public upsertValue(value: any, key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayUpsert(filterResult.values, value[idKey], value, idKey)\n }\n });\n\n this.upsert(value[idKey], value);\n }\n\n @transaction()\n public upsertValues(values: any[], key?: string): void {\n const idKey = key ?? this.idKey;\n for (const value of values) {\n this.update(({ filterResult }) => ({\n filterResult: {\n ...(filterResult ?? { values: [] }),\n values: arrayUpsert(filterResult?.values ?? [], value[idKey], value, idKey)\n }\n }));\n\n this.upsert(value[idKey], value);\n }\n }\n\n @transaction()\n public removeValue(value: any, key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, value[idKey], idKey)\n }\n });\n\n this.remove(value[idKey]);\n }\n\n @transaction()\n public removeValues(values: any[], key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n const ids = values.map(value => value[idKey]);\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, ids)\n }\n });\n\n this.remove(ids);\n }\n\n public getParameters(filterParameters?: FilterParametersModel): FilterParametersModel {\n const { baseRules } = this.getValue();\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n if (baseRules?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: baseRules\n });\n }\n return parameters;\n }\n\n public getSubState<T>(name: string): T {\n const { subStates } = this.getValue();\n return subStates[name];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { QueryEntity } from \"@datorama/akita\";\nimport { Observable } from \"rxjs\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { NiceFilterViewState, NiceFilterViewStore } from \"./nice-filter-view.store\";\nimport { QueryParams } from \"../../../api/filter.api\";\n\n@Injectable()\nexport class NiceFilterViewQuery extends QueryEntity<NiceFilterViewState> {\n constructor(protected store: NiceFilterViewStore) {\n super(store);\n }\n\n public selectSubState<T>(name: string): Observable<T> {\n return this.select((state) => state.subStates[name]);\n }\n\n public selectFilterConfigLoading(): Observable<boolean> {\n return this.select(\"filterConfigLoading\");\n }\n\n public selectFilterConfig(): Observable<FilterConfigurationModel[]> {\n return this.select(\"filterConfig\");\n }\n\n public selectFilterParameters(): Observable<FilterParametersModel> {\n return this.select(\"filterParameters\");\n }\n\n public selectFilterResult(): Observable<FilterResultModel | null> {\n return this.select(\"filterResult\");\n }\n\n public selectQueryParams(): Observable<QueryParams> {\n return this.select(\"queryParams\");\n }\n\n public getParameters(): FilterParametersModel {\n return this.store.getParameters(this.store.getValue().filterParameters);\n }\n\n public getSubState<T>(name: string): T {\n return this.store.getSubState(name);\n }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { arrayAdd, arrayRemove, arrayUpsert, transaction } from \"@datorama/akita\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { FileUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { firstValueFrom } from \"rxjs\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { FilterOperatorTypes, QueryModel, QueryRuleModel, RuleModel } from \"../../../models/query.model\";\nimport { NiceFilterService } from \"../../base-list/providers/base-filter.service\";\nimport { NiceFilterViewStore } from \"./nice-filter-view.store\";\n\n@Injectable()\nexport class NiceFilterViewService<Filter extends NiceFilterService<any> = NiceFilterService<any>> {\n constructor(\n private store: NiceFilterViewStore,\n @Inject(NiceFilterService)\n public readonly filterService: Filter\n ) {}\n\n public reset(): void {\n this.store.reset();\n }\n\n public disable(): void {\n this.store.update({\n disabled: true\n });\n }\n\n public updateSubState<T>(name: string, value: T): void {\n this.store.update((state) => ({\n subStates: {\n ...state.subStates,\n [name]: value\n }\n }));\n }\n\n public enable(): void {\n this.store.update({\n disabled: false\n });\n }\n\n public setAutoLoad(autoLoad: boolean): void {\n this.store.update({ autoLoad });\n }\n\n public setLoading(loading: boolean): void {\n this.store.setLoading(loading);\n }\n\n public setMode(mode: \"paginated\" | \"accumulated\"): void {\n this.store.update({ mode });\n }\n\n public async loadConfig(configQueryParams: QueryParams = {}): Promise<void> {\n this.store.setFilterConfigLoading(true);\n try {\n const filterConfig = await firstValueFrom(this.filterService.getFilterConfig({ params: configQueryParams }));\n this.store.update({\n filterConfig\n });\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setFilterConfigLoading(false);\n }\n }\n\n public async filter(): Promise<void> {\n const { filterParameters, disabled, queryParams } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(\n this.filterService.filter(\n this.store.getParameters(filterParameters),\n { params: queryParams },\n ),\n );\n this.store.setResult(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n public async downloadData(type: string, downloadFileName: string, ids?: number[]): Promise<void> {\n const { filterParameters, disabled } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n\n if (ids?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: [\n {\n id: \"id\",\n operation: FilterOperatorTypes.In,\n value: ids\n }\n ]\n }\n );\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(this.filterService.getFile(type, this.store.getParameters(parameters)));\n FileUtils.downloadFile(`${downloadFileName}.${type}`, result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n public async printData(): Promise<void> {\n const { filterParameters, disabled } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(this.filterService.getPrintableHtml(this.store.getParameters(filterParameters)));\n FileUtils.openPrintableWindow(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n /**\n * @deprecated reload show not be passed, and the caller should instead call `filter()` after calling this function.\n */\n // tslint:disable-next-line:unified-signatures\n public setParameters(filterParameters: FilterParametersModel, reload: boolean): void;\n public setParameters(filterParameters: FilterParametersModel): void;\n public setParameters(filterParameters: FilterParametersModel, reload?: boolean): void {\n this.store.setParameters(filterParameters);\n if (reload) {\n this.filter();\n }\n }\n\n public patchParameters(filterParameters: FilterParametersModel): void {\n this.store.patchParameters(filterParameters);\n }\n\n public resetPaging(): void {\n const { filterParameters } = this.store.getValue();\n this.setParameters({\n ...filterParameters,\n start: 0\n });\n\n this.resetResult(true);\n }\n\n public setQueryParams(queryParams: QueryParams): void {\n this.store.update({ queryParams });\n }\n\n public setBaseRules(rule: (QueryRuleModel | QueryModel)[], reload: boolean): void {\n this.store.update({\n baseRules: rule\n });\n\n if (reload) {\n this.filter();\n }\n }\n\n public addBaseRule(rule: QueryRuleModel, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayAdd(baseRules ?? [], rule)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public upsertBaseRules(rule: QueryRuleModel, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayUpsert(baseRules ?? [], rule.id, rule)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public removeBaseRules(key: string, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayRemove(baseRules ?? [], key)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public setRules(rules: QueryModel | QueryModel[]): void {\n if (!Array.isArray(rules)) {\n rules = [rules];\n }\n\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n search: filterParameters.search,\n order: filterParameters.order,\n fallbackOrder: filterParameters.fallbackOrder,\n start: 0,\n length: filterParameters.length,\n data: filterParameters.data,\n rules\n };\n\n this.setParameters(newRules);\n }\n\n public upsertRule(id: string, newRule: RuleModel): void {\n const { filterParameters } = this.store.getValue();\n const currentQuery = filterParameters.rules?.[0];\n const rule: QueryRuleModel = {\n id,\n ...newRule\n };\n const query: QueryModel = { rules: [rule], condition: \"and\" };\n if (!currentQuery || currentQuery.rules.length === 0) {\n this.setRules(query);\n return;\n }\n\n const oldRule = currentQuery.rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n let newRules = currentQuery.rules;\n if (oldRule) {\n if (newRule) {\n // Array replace\n newRules = [\n ...currentQuery.rules.slice(0, currentQuery.rules.indexOf(oldRule)),\n rule,\n ...currentQuery.rules.slice(currentQuery.rules.indexOf(oldRule) + 1, currentQuery.rules.length)\n ];\n } else {\n newRules = currentQuery.rules.filter((r) => (r as QueryRuleModel).id !== id);\n }\n } else {\n newRules = [...newRules, rule];\n }\n this.setRules({\n condition: currentQuery.condition,\n rules: newRules\n });\n }\n\n public removeRule(id: string): void {\n const { filterParameters } = this.store.getValue();\n const currentQuery = filterParameters.rules?.[0];\n const oldRule = currentQuery?.rules?.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n if (!oldRule) {\n return;\n }\n\n const newRules = currentQuery.rules.filter((r) => (r as QueryRuleModel).id !== id);\n this.setRules({\n condition: currentQuery.condition,\n rules: newRules\n });\n }\n\n public addValue(value: any, opts?: AddEntitiesOptions): void {\n this.store.addValue(value, opts);\n }\n\n public addValues(value: any[], opts?: AddEntitiesOptions): void {\n this.store.addValues(value, opts);\n }\n\n public upsertValue(value: any, key?: string): void {\n this.store.upsertValue(value, key);\n }\n\n public upsertValues(values: any[], key?: string): void {\n this.store.upsertValues(values, key);\n }\n\n public removeValue(value: any, key?: string): void {\n this.store.removeValue(value, key);\n }\n\n public removeValues(values: any[], key?: string): void {\n this.store.removeValues(values, key);\n }\n\n @transaction()\n public resetResult(waitForNextFilter: boolean): void {\n if (!waitForNextFilter) {\n this.store.update({\n filterResult: null\n });\n this.store.set([]);\n } else {\n this.store.update({\n resetResult: true\n });\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ADVANCED_FILTER_ICONS = new InjectionToken(\"advanced_filter_icons\");\nexport const ADVANCED_DATE_FILTER_OPTIONS = new InjectionToken(\"advanced_date_filter_options\");\n","import { Optional, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\nimport { NiceFilterGroupService } from \"../../query-builder/providers/filter-group.service\";\n\n@Pipe({\n name: \"niceFilterGroupIcon\"\n})\nexport class NiceFilterGroupIconPipe implements PipeTransform {\n constructor(@Optional() private service?: NiceFilterGroupService<any>) {}\n\n public transform(value: string): NiceBaseListIcons {\n if (!this.service) {\n return null;\n }\n\n const icon = this.service.getFilterGroupIconClass(value);\n if (typeof icon === \"string\") {\n return {\n class: icon\n };\n }\n return icon;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ArrayUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterGroupConfiguration } from \"../../../../../models/filter.model\";\nimport { NiceFilterViewQuery } from \"../../../store/nice-filter-view.query\";\n\n@Component({\n selector: \"nice-advanced-filter-selection\",\n templateUrl: \"filter-selection.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFilterSelectionComponent {\n @Output()\n public filterSelected = new EventEmitter<FilterConfigurationModel>();\n\n public loading$ = this.query.selectFilterConfigLoading();\n public filterGroups$ = this.query.selectFilterConfig().pipe(\n map((config) => {\n const groups = ArrayUtils.uniqueObjects(config.map(x => x.group), x => x?.key);\n\n const result: [FilterGroupConfiguration, FilterConfigurationModel[]][] = [];\n for (const group of groups) {\n if (!group) {\n continue;\n }\n\n result.push([group, config.filter(x => x.group?.key === group.key)]);\n }\n\n return result.sort(([, a], [, b]) => b.length - a.length);\n })\n );\n\n constructor(private query: NiceFilterViewQuery) {}\n\n public selectFilter(filterConfigurationModel: FilterConfigurationModel): void {\n this.filterSelected.emit(filterConfigurationModel);\n }\n\n public trackGroups(index: number, value: [FilterGroupConfiguration, FilterConfigurationModel[]]): any {\n return value[0]?.key ?? index;\n }\n\n public trackFilter(index: number, value: FilterConfigurationModel): any {\n return value.id ?? index;\n }\n}\n","<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading$ | async\">\n <div [class.md:grid-cols-2]=\"filterGroups.length >= 2\" class=\"grid grid-cols-1 gap-4\" *ngIf=\"filterGroups$ | async as filterGroups\">\n <div class=\"flex flex-col\" *ngFor=\"let group of filterGroups; trackBy: trackGroups\">\n <div class=\"filter-group flex items-center gap-4 pb-4\">\n <ng-container *ngIf=\"group[0].key | niceFilterGroupIcon as icon\">\n <i matListItemIcon class=\"group-icon fal\" [ngClass]=\"icon.class\" *ngIf=\"icon.class\"></i>\n <mat-icon matListItemIcon class=\"group-icon\" [svgIcon]=\"icon.svgIcon\" *ngIf=\"icon.svgIcon\"></mat-icon>\n <mat-icon matListItemIcon class=\"group-icon\" *ngIf=\"icon.matIcon\">{{ icon.matIcon }}</mat-icon>\n </ng-container>\n\n <strong class=\"group-name\">{{ group[0].name }}</strong>\n </div>\n\n <div class=\"filter-item\" matRipple *ngFor=\"let filter of group[1]; trackBy: trackFilter\" (click)=\"selectFilter(filter)\">\n {{ filter?.name }}\n </div>\n </div>\n </div>\n</mat-card>\n","import { ConnectedPosition, Overlay, OverlayPositionBuilder, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Output } from \"@angular/core\";\nimport { FilterConfigurationModel } from \"../../../../models/filter.model\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceAdvancedFilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\n\n@Directive({ selector: \"[niceAdvancedFiltersTrigger]\", exportAs: \"niceAdvancedFiltersTrigger\" })\nexport class AdvancedFiltersTriggerDirective {\n private overlayRef: OverlayRef;\n private filterSelectionRef: ComponentRef<NiceAdvancedFilterSelectionComponent>;\n\n @Input()\n public position: \"topRight\" | \"bottomCenter\" = \"bottomCenter\";\n\n @Output()\n public advancedFilterSelected = new EventEmitter<FilterConfigurationModel>();\n\n private get connectedPosition(): ConnectedPosition {\n if (this.position === \"topRight\") {\n return {\n originX: \"end\",\n originY: \"top\",\n overlayX: \"start\",\n overlayY: \"top\",\n offsetX: 15\n };\n }\n\n return {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: \"center\",\n overlayY: \"top\"\n };\n }\n\n constructor(\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private platform: Platform,\n private injector: Injector\n ) {}\n\n @HostListener(\"click\")\n public click(): void {\n const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n this.connectedPosition\n ]);\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n\n const filterSelectionPortal = new ComponentPortal(NiceAdvancedFilterSelectionComponent, null, this.injector);\n this.filterSelectionRef = this.overlayRef.attach(filterSelectionPortal);\n this.updateFilterSelectionComponent();\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n private close(): void {\n this.overlayRef.dispose();\n }\n\n private updateFilterSelectionComponent(): void {\n if (!this.filterSelectionRef) {\n return;\n }\n\n this.filterSelectionRef.instance.filterSelected.subscribe((filter: FilterConfigurationModel) => {\n this.advancedFilterSelected.emit(filter);\n this.close();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { combineLatestWith, map } from \"rxjs/operators\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { QueryRuleModel } from \"../../../../../models/query.model\";\nimport { NiceFilterViewQuery } from \"../../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../../store/nice-filter-view.service\";\nimport { ADVANCED_FILTER_ICONS } from \"../advanced-filters.constant\";\nimport { NiceAdvancedFilterIconOptions } from \"../models/icons.model\";\n\n@Component({\n selector: \"nice-advanced-filters-button\",\n templateUrl: \"advanced-filters-button.template.html\",\n styleUrls: [\"advanced-filters-button.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFiltersButtonComponent {\n public shouldShowAdvancedFilters$ = this.query.selectSubState<boolean>(\"showAdvancedFilters\");\n public hasParameters$ = this.query.selectFilterParameters().pipe(\n combineLatestWith(this.query.selectFilterConfig()),\n map(([parameter, config]) =>\n !!parameter\n .rules\n ?.filter((rule) => config.some((conf) => conf?.id === (rule.rules[0] as QueryRuleModel)?.id))\n ?.length\n )\n );\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS) public icons: NiceAdvancedFilterIconOptions,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService\n ) {}\n\n public clickToggleShowAdvancedFilters(): void {\n this.service.updateSubState(\"showAdvancedFilters\", !this.query.getSubState(\"showAdvancedFilters\"));\n }\n\n public onSelectedFilter(filter: FilterConfigurationModel): void {\n this.service.updateSubState(\"showAdvancedFilters\", true);\n this.service.updateSubState(\"initialSelectedFilter\", filter);\n }\n}\n","<div class=\"relative\">\n <ng-container *ngIf=\"(hasParameters$ | async) && (shouldShowAdvancedFilters$ | async) !== true\">\n <div class=\"absolute top-1 right-1 w-2 h-2 z-10 rounded bg-accent\"></div>\n\n <button mat-icon-button (click)=\"clickToggleShowAdvancedFilters()\">\n <mat-icon [svgIcon]=\"icons.queryBuilder.svgIcon\">{{ icons.queryBuilder.matIcon }}</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"shouldShowAdvancedFilters$ | async\">\n <button mat-icon-button (click)=\"clickToggleShowAdvancedFilters()\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(hasParameters$ | async) !== true && (shouldShowAdvancedFilters$ | async) !== true\">\n <button mat-icon-button niceAdvancedFiltersTrigger (advancedFilterSelected)=\"onSelectedFilter($event)\">\n <mat-icon [svgIcon]=\"icons.queryBuilder.svgIcon\">{{ icons.queryBuilder.matIcon }}</mat-icon>\n </button>\n </ng-container>\n</div>\n","import { Validators } from \"@angular/forms\";\nimport { AddValidatorIf, Array, Control, Required } from \"@recursyve/ngx-form-generator\";\nimport { Condition, FilterOperators, QueryModel, QueryRuleModel } from \"../../../../models/query.model\";\nimport { QBFilterUtils } from \"../../../query-builder/utils/qb-filter.utils\";\n\nexport class FilterFormValues {\n @Control()\n @Required()\n public value: any;\n\n @Control()\n @AddValidatorIf(({ parent }) => QBFilterUtils.isDoubleInput(parent.operation), Validators.required)\n public secondValue: any;\n}\n\nexport class FilterForm {\n @Control()\n @Required()\n public id: string;\n\n @Control()\n @Required()\n public operation: string;\n\n @Control()\n @Required()\n public condition: Condition;\n\n @Array(FilterFormValues)\n public values: FilterFormValues[];\n\n constructor(value: QueryModel | QueryRuleModel) {\n if (!value) {\n return;\n }\n\n if ((value as QueryRuleModel).id) {\n const rule = value as QueryRuleModel;\n const needsTwoValues = QBFilterUtils.isDoubleInput(rule.operation);\n Object.assign(this, {\n id: rule.id,\n operation: rule.operation as string,\n condition: \"or\",\n values: [\n {\n value: needsTwoValues ? rule.value[0] : rule.value,\n secondValue: needsTwoValues ? rule.value[1] : undefined\n }\n ]\n });\n return;\n }\n\n const query = value as QueryModel;\n const firstRule = query.rules[0] as QueryRuleModel;\n if (!query.rules.every((rule) => (rule as QueryRuleModel).id === firstRule.id)) {\n return;\n }\n\n const firstRuleNeedsTwoValues = QBFilterUtils.isDoubleInput(firstRule.operation);\n Object.assign(this, {\n id: firstRule.id,\n operation: firstRule.operation as string,\n condition: query.condition,\n values: query.rules.map((rule: QueryRuleModel) => ({\n value: firstRuleNeedsTwoValues ? rule.value[0] : rule.value,\n secondValue: firstRuleNeedsTwoValues ? rule.value[1] : undefined\n }))\n });\n return ;\n }\n\n public transform(): QueryModel | QueryRuleModel {\n if (this.values.length === 1) {\n const value = this.values[0];\n return {\n id: this.id,\n operation: this.operation as FilterOperators,\n value: QBFilterUtils.isDoubleInput(this.operation as FilterOperators) ? [value.value, value.secondValue] : value.value\n };\n }\n\n return {\n condition: this.condition,\n rules: this.values.map((value) => ({\n id: this.id,\n operation: this.operation,\n value: QBFilterUtils.isDoubleInput(this.operation as FilterOperators) ? [value.value, value.secondValue] : value.value\n }) as QueryRuleModel)\n };\n }\n}\n\nexport class AdvancedFiltersForm {\n @Array(FilterForm)\n public rules: FilterForm[];\n\n @Control({ defaultValue: \"and\" })\n @Required()\n public condition: Condition;\n\n constructor(query: QueryModel) {\n if (!query) {\n return;\n }\n\n if (!query?.rules) {\n this.rules = [];\n this.condition = \"and\";\n }\n\n this.condition = query.condition;\n this.rules = query.rules.map(x => new FilterForm(x));\n }\n\n public transform(): QueryModel {\n return {\n condition: this.condition,\n rules: this.rules.map((rule) => rule.transform())\n };\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceAsyncTypeaheadProvider, NiceAsyncTypeaheadSearchResult } from \"@recursyve/nice-ui-kit.v2\";\nimport { lastValueFrom } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../models/filter.model\";\nimport { NiceFilterService } from \"../../../../base-list/providers/base-filter.service\";\n\ninterface AdvancedFiltersAsyncTypeaheadOptions {\n filterConfig: FilterConfigurationModel;\n queryParams?: Record<string, any>;\n}\n\n@Injectable()\nexport class AdvancedFiltersAsyncTypeaheadProvider extends NiceAsyncTypeaheadProvider<SelectFilterValue> {\n public resource = \"advancedFilter\";\n\n private pageSize = 20;\n\n constructor(private filterService: NiceFilterService<any>) {\n super();\n }\n\n public getById(id: number, options: AdvancedFiltersAsyncTypeaheadOptions): Promise<SelectFilterValue> {\n return lastValueFrom(\n this.filterService.searchFilterResourceValue(\n options.filterConfig,\n id,\n { params: options?.queryParams }\n )\n );\n }\n\n public async search(\n searchQuery: string,\n page: number,\n options: AdvancedFiltersAsyncTypeaheadOptions\n ): Promise<NiceAsyncTypeaheadSearchResult<SelectFilterValue>> {\n return lastValueFrom(\n this.filterService\n .searchFilterValue(options.filterConfig, searchQuery, {\n params: {\n ...options?.queryParams,\n page,\n pageSize: this.pageSize,\n },\n })\n .pipe(\n map((items) => ({\n items,\n nextPage: items.length === this.pageSize ? page + 1 : null,\n }))\n )\n );\n }\n\n public format(item: SelectFilterValue): string {\n return item.name;\n }\n}\n","import { FilterConfigurationModel, FilterType } from \"../../../../../models/filter.model\";\nimport { FilterOperators, FilterOperatorTypes, QueryRuleModel } from \"../../../../../models/query.model\";\n\nexport class AdvancedFiltersUtils {\n public static noInputOperators: FilterOperators[] = [\n FilterOperatorTypes.IsEmpty,\n FilterOperatorTypes.IsNotEmpty,\n FilterOperatorTypes.IsNull,\n FilterOperatorTypes.IsNotNull,\n FilterOperatorTypes.None\n ];\n\n public static singleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Equal,\n FilterOperatorTypes.NotEqual,\n FilterOperatorTypes.Less,\n FilterOperatorTypes.LessOrEqual,\n FilterOperatorTypes.Greater,\n FilterOperatorTypes.GreaterOrEqual,\n FilterOperatorTypes.BeginsWith,\n FilterOperatorTypes.NotBeginsWith,\n FilterOperatorTypes.EndsWith,\n FilterOperatorTypes.NotEndsWith,\n FilterOperatorTypes.Contains,\n FilterOperatorTypes.NotContains\n ];\n\n public static doubleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Between,\n FilterOperatorTypes.NotBetween\n ];\n\n public static isSingleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.singleInputOperators.includes(filterOperator);\n }\n\n public static isDoubleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.doubleInputOperators.includes(filterOperator);\n }\n\n public static isNoInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.noInputOperators.includes(filterOperator);\n }\n\n public static createRule(config: FilterConfigurationModel, operator?: FilterOperators): QueryRuleModel {\n const base = {\n id: config.id,\n operation: operator || (config.operators[0].id as FilterOperators)\n };\n switch (config.type) {\n case FilterType.Text:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [\"\", \"\"] : \"\"\n };\n case FilterType.Number:\n case FilterType.Select:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [null, null] : null\n };\n case FilterType.Date:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()\n };\n case FilterType.Radio:\n case FilterType.Options:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator)\n ? [config.options?.[0].key, config.options?.[0].key]\n : config.options?.[0].key\n };\n }\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\n\n@Component({ template: `` })\nexport class FilterComponent<T> implements ControlValueAccessor {\n private _value: T;\n\n public get value(): T | undefined {\n return this._value;\n }\n\n protected propagateChanges = (_: T) => {};\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public registerOnChange(fn: (_: T) => void): void {\n this.propagateChanges = fn;\n }\n\n public writeValue(value: T): void {\n this._value = value;\n }\n\n public onValueChange(value: T): void {\n this.propagateChanges(value);\n }\n}\n","import { Component, forwardRef, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ADVANCED_DATE_FILTER_OPTIONS, ADVANCED_FILTER_ICONS } from \"../../../advanced-filters.constant\";\nimport { NiceAdvancedFilterIconOptions } from \"../../../models/icons.model\";\nimport { FilterComponent } from \"../filter.component\";\nimport { AdvancedDateFilterOptions } from \"../../../models/advanced-date-filter-options.model\";\nimport { MatDatepicker } from \"@angular/material/datepicker\";\n\n@Component({\n selector: \"nice-advanced-date-filter\",\n templateUrl: \"date-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedDateFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedDateFilterComponent extends FilterComponent<string> {\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS) public icons: NiceAdvancedFilterIconOptions,\n @Optional() @Inject(ADVANCED_DATE_FILTER_OPTIONS) public advancedDateFilterOptions: AdvancedDateFilterOptions\n ) {\n super();\n }\n\n public onInputClick(picker: MatDatepicker<any>): void {\n if (!this.advancedDateFilterOptions.openDatePickerOnClick) {\n return;\n }\n\n picker.open();\n }\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"onInputClick(picker)\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon\n matDatepickerToggleIcon\n [svgIcon]=\"icons.datePicker.svgIcon\"\n >\n {{ icons.datePicker.matIcon }}\n </mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","import { Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-number-filter\",\n templateUrl: \"number-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedNumberFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedNumberFilterComponent extends FilterComponent<number> {}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" type=\"number\" />\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-options-filter\",\n templateUrl: \"options-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedOptionsFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedOptionsFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<div class=\"mb-4\" *ngIf=\"filterConfig.selectionMode === 'radio'\">\n <mat-radio-group class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<ng-container *ngIf=\"filterConfig.selectionMode === 'select'\">\n <mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <mat-select [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-option *ngFor=\"let option of filterConfig.options\" [value]=\"option.key\">\n {{ option?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</ng-container>","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-radio-filter\",\n templateUrl: \"radio-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedRadioFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedRadioFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-radio-group appearance=\"outline\" class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n</mat-radio-group>\n","import { Component, forwardRef, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\nimport { NiceFilterViewQuery } from \"../../../../../store/nice-filter-view.query\";\n\n@Component({\n selector: \"nice-advanced-select-filter\",\n templateUrl: \"select-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedSelectFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedSelectFilterComponent extends FilterComponent<unknown> implements OnInit, OnChanges {\n @Input()\n public filterConfig: FilterConfigurationModel;\n\n public values: SelectFilterValue[] = [];\n\n protected queryParams$ = this.filterViewQuery.selectQueryParams();\n\n constructor(private filterViewQuery: NiceFilterViewQuery) {\n super();\n }\n\n public async ngOnInit(): Promise<void> {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"filterConfig\" in changes) {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n } else {\n this.values = [];\n }\n }\n }\n\n public onValueChange(value: unknown): void {\n super.onValueChange(value);\n }\n\n public writeValue(value: unknown): void {\n super.writeValue(value);\n }\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <nice-typeahead\n *ngIf=\"!filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n\n <nice-async-typeahead\n *ngIf=\"filterConfig.lazyLoading\"\n resource=\"advancedFilter\"\n [searchOptions]=\"{ filterConfig, queryParams: queryParams$ | async }\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n ></nice-async-typeahead>\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-text-filter\",\n templateUrl: \"text-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedTextFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedTextFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" [mask]=\"(filterConfig?.mask) || ''\" [validation]=\"false\" type=\"text\" />\n</mat-form-field>\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { FormGroupName } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { Observable, startWith } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { ADVANCED_FILTER_ICONS } from \"../advanced-filters.constant\";\nimport { FilterForm, FilterFormValues } from \"../advanced-filters.form\";\nimport { NiceAdvancedFilterIconOptions } from \"../models/icons.model\";\nimport { AdvancedFiltersUtils } from \"../utils/advanced-filters.utils\";\n\n@Component({\n selector: \"nice-advanced-rule\",\n templateUrl: \"rule.template.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceAdvancedRuleComponent implements OnInit {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Output()\n public remove = new EventEmitter();\n\n public formGroup: GeneratedFormGroup<FilterForm>;\n public valuesFormArray: GeneratedFormArray<FilterFormValues>;\n\n public isSingleInput$: Observable<boolean>;\n public isDoubleInput$: Observable<boolean>;\n\n public get filterConfig(): FilterConfigurationModel {\n const ruleId = this.formGroup.get(\"id\").value as string;\n return this.filterConfigs?.find(f => f.id === ruleId) as FilterConfigurationModel;\n }\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS)\n public icons: NiceAdvancedFilterIconOptions,\n private formGroupName: FormGroupName\n ) {}\n\n public ngOnInit(): void {\n this.formGroup = this.formGroupName.control as GeneratedFormGroup<FilterForm>;\n this.valuesFormArray = this.formGroup.get(\"values\") as GeneratedFormArray<FilterFormValues>;\n\n const operationFormControl = this.formGroup.get(\"operation\");\n this.isSingleInput$ = operationFormControl.valueChanges.pipe(\n startWith(operationFormControl.value),\n map((operation) => !AdvancedFiltersUtils.isDoubleInput(operation) && !AdvancedFiltersUtils.isNoInput(operation))\n );\n this.isDoubleInput$ = operationFormControl.valueChanges.pipe(\n startWith(operationFormControl.value),\n map((operation) => AdvancedFiltersUtils.isDoubleInput(operation))\n );\n }\n\n public onUpdateFilterConfig(config: FilterConfigurationModel): void {\n const rule = AdvancedFiltersUtils.createRule(config);\n this.valuesFormArray.clear({ emitEvent: false });\n this.formGroup.patchValue(new FilterForm(rule));\n }\n\n public addValue(index: number): void {\n this.valuesFormArray.insert(index, {});\n }\n\n public removeValue(i: number): void {\n this.valuesFormArray.removeAt(i);\n if (!this.valuesFormArray.length) {\n this.remove.emit();\n }\n }\n}\n","<div class=\"flex flex-row gap-4\" [formGroup]=\"formGroup\">\n <div class=\"basis-80\">\n <button\n class=\"select-filter w-full\"\n mat-stroked-button\n niceAdvancedFiltersTrigger\n originX=\"start\"\n (advancedFilterSelected)=\"onUpdateFilterConfig($event)\"\n >\n <div class=\"flex flex-row justify-between items-center w-full\">\n <div class=\"config-name\">{{ filterConfig?.name }}</div>\n <mat-icon [svgIcon]=\"icons.arrowDown.svgIcon\">{{ icons.arrowDown.matIcon }}</mat-icon>\n </div>\n </button>\n </div>\n\n <div class=\"flex flex-col basis-44 gap-4\">\n <mat-form-field appearance=\"outline\" class=\"rule-form-field\">\n <mat-select class=\"rule-operator\" formControlName=\"operation\">\n <mat-option *ngFor=\"let operator of filterConfig?.operators\" [value]=\"operator.id\">\n {{ operator?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container *ngIf=\"valuesFormArray.controls.length > 1\">\n <mat-button-toggle-group class=\"condition-toggle\" formControlName=\"condition\">\n <mat-button-toggle value=\"and\">{{ \"components.nice_advanced_filters.rule.conditions.and\" | translate }}</mat-button-toggle>\n <mat-button-toggle value=\"or\">{{ \"components.nice_advanced_filters.rule.conditions.or\" | translate }}</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"flex flex-col flex-auto gap-4\" formArrayName=\"values\">\n <div class=\"flex items-center gap-4\" [formGroupName]=\"i\" *ngFor=\"let _ of valuesFormArray.controls; let i = index\">\n <div class=\"rule-container flex flex-col md:flex-row flex-auto justify-start items-center gap-2.5\">\n <ng-container *ngIf=\"isSingleInput$ | async\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter *ngSwitchCase=\"'text'\" class=\"flex flex-auto\" formControlName=\"value\" [filterConfig]=\"filterConfig\"></nice-advanced-text-filter>\n <nice-advanced-number-filter *ngSwitchCase=\"'number'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter *ngSwitchCase=\"'date'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-advanced-date-filter>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isDoubleInput$ | async\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-text-filter>\n <nice-advanced-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-date-filter>\n </ng-container>\n <h3 class=\"aligned-text\">\n {{ \"components.nice_advanced_filters.rule.conditions.and\" | translate }}\n </h3>\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-text-filter>\n <nice-advanced-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-date-filter>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"basis-12\">\n <button class=\"add-button\" mat-icon-button (click)=\"addValue(i + 1)\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n </button>\n </div>\n\n <div class=\"basis-12\">\n <button class=\"remove-button\" mat-icon-button (click)=\"removeValue(i)\">\n <mat-icon [svgIcon]=\"icons.delete.svgIcon\">{{ icons.delete.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { GeneratedFormArray, GeneratedFormGroup, NgxFormGeneratorProvider } from \"@recursyve/ngx-form-generator\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"@recursyve/nice-ui-kit.v2\";\nimport { Observable, startWith } from \"rxjs\";\nimport { FilterConfigurationModel } from \"../../../../models/filter.model\";\nimport { QueryRuleModel } from \"../../../../models/query.model\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { ADVANCED_FILTER_ICONS } from \"./advanced-filters.constant\";\nimport { AdvancedFiltersForm, FilterForm, FilterFormValues } from \"./advanced-filters.form\";\nimport { NiceAdvancedFilterIconOptions } from \"./models/icons.model\";\nimport { AdvancedFiltersAsyncTypeaheadProvider } from \"./providers/async-typeahead.provider\";\nimport { AdvancedFiltersUtils } from \"./utils/advanced-filters.utils\";\n\n@Component({\n selector: \"nice-advanced-filters\",\n templateUrl: \"advanced-filters.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n NgxFormGeneratorProvider.forFeature([AdvancedFiltersForm]),\n {\n provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,\n useClass: AdvancedFiltersAsyncTypeaheadProvider,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFiltersComponent implements OnInit, OnDestroy {\n public config$ = this.query.selectFilterConfig();\n\n public rules$: Observable<FilterForm[]>;\n public rulesFormArray: GeneratedFormArray<FilterForm>;\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS)\n public icons: NiceAdvancedFilterIconOptions,\n public formGroup: GeneratedFormGroup<AdvancedFiltersForm>,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.rulesFormArray = this.formGroup.get(\"rules\") as GeneratedFormArray<FilterForm>;\n this.rules$ = this.rulesFormArray.valueChanges.pipe(startWith(this.rulesFormArray.value));\n }\n\n public ngOnInit(): void {\n const { filterParameters, subStates } = this.query.getValue();\n\n if (filterParameters.rules?.length) {\n this.formGroup.patchValue(new AdvancedFiltersForm(filterParameters.rules[0]));\n }\n\n if (subStates.initialSelectedFilter) {\n this.onClickAddRule(subStates.initialSelectedFilter);\n return;\n }\n }\n\n public ngOnDestroy(): void {\n this.removeEmptyRules({ reload: false });\n }\n\n public onClickAddRule(filterConfigurationModel: FilterConfigurationModel): void {\n this.rulesFormArray.push(new FilterForm(AdvancedFiltersUtils.createRule(filterConfigurationModel)));\n this.changeDetectorRef.markForCheck();\n }\n\n public onClickDeleteRule(index: number): void {\n this.rulesFormArray.removeAt(index);\n if (!this.rulesFormArray.length) {\n this.service.setRules([]);\n this.service.filter();\n this.onClose();\n }\n }\n\n public onClose(): void {\n this.removeEmptyRules();\n this.service.updateSubState(\"showAdvancedFilters\", false);\n }\n\n public onRefresh(): void {\n this.service.updateSubState(\"initialSelectedFilter\", null);\n this.service.setRules(this.formGroup.getRawValue().transform());\n this.service.resetResult(true);\n this.service.filter();\n }\n\n public removeEmptyRules({ reload }: { reload: boolean } = { reload: true }): void {\n if (this.rulesFormArray.length !== 1) {\n return;\n }\n\n const values = this.rulesFormArray.get([0, \"values\"]).getRawValue() as FilterFormValues[];\n if (values.length !== 1) {\n return;\n }\n\n const value = values[0];\n if (value.value || value.value === false || value.secondValue || value.secondValue === true) {\n return;\n }\n\n this.rulesFormArray.removeAt(0);\n\n const { filterParameters } = this.query.getValue();\n if (!filterParameters.rules.length || !filterParameters.rules[0].rules.length) {\n return;\n }\n\n this.service.setRules([]);\n if (!reload) {\n return;\n }\n\n if ((filterParameters.rules[0].rules[0] as QueryRuleModel).value) {\n this.service.filter();\n }\n }\n}\n","<div class=\"flex flex-col gap-4\" [formGroup]=\"formGroup\">\n <div class=\"advanced-filter-title\">{{ \"components.nice_advanced_filters.title\" | translate }}</div>\n\n <div class=\"flex flex-row gap-12\">\n <div class=\"advanced-filter-condition\">{{ \"components.nice_advanced_filters.conditions.should_match\" | translate }}</div>\n\n <mat-radio-group formControlName=\"condition\">\n <mat-radio-button value=\"and\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.every\" | translate }}</span></mat-radio-button>\n <mat-radio-button value=\"or\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.some\" | translate }}</span></mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div class=\"flex flex-col gap-4\" formArrayName=\"rules\" *ngFor=\"let _ of rulesFormArray.controls; let i = index\">\n <nice-advanced-rule [filterConfigs]=\"config$ | async\" [formGroupName]=\"i\" (remove)=\"onClickDeleteRule(i)\"></nice-advanced-rule>\n </div>\n\n <div>\n <button class=\"add-condition\" mat-stroked-button color=\"accent\" niceAdvancedFiltersTrigger position=\"topRight\" (advancedFilterSelected)=\"onClickAddRule($event)\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.add_condition\" | translate }}</div>\n </div>\n </button>\n </div>\n\n <div class=\"flex gap-6 justify-end pt-4\">\n <button class=\"close-button\" mat-button color=\"accent\" (click)=\"onClose()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.close\" | translate }}</div>\n </div>\n </button>\n\n <button class=\"refresh-button\" mat-flat-button color=\"accent\" (click)=\"onRefresh()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.refresh\" | translate }}</div>\n </div>\n </button>\n </div>\n</div>\n","import { NiceBaseListIcons } from \"../../../../base-list/models/icons.model\";\n\nexport interface NiceAdvancedFilterIconOptions {\n add?: NiceBaseListIcons;\n close?: NiceBaseListIcons;\n refresh?: NiceBaseListIcons;\n delete?: NiceBaseListIcons;\n arrowDown?: NiceBaseListIcons;\n datePicker?: NiceBaseListIcons;\n queryBuilder?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceAdvancedFilterIconOptions = {\n add: {\n matIcon: \"add\"\n },\n close: {\n matIcon: \"close\"\n },\n refresh: {\n matIcon: \"refresh\"\n },\n delete: {\n matIcon: \"delete\"\n },\n arrowDown: {\n matIcon: \"arrow_drop_down\"\n },\n datePicker: {\n matIcon: \"today\"\n },\n queryBuilder: {\n matIcon: \"filter_list\"\n }\n};\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatOptionModule, MatRippleModule } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceAsyncTypeaheadModule, NiceLoadingSpinnerModule, NiceTypeaheadModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { NiceFilterGroupService } from \"../../../query-builder/providers/filter-group.service\";\nimport { NiceFilterGroupIconPipe } from \"../../pipes/filter-group-icon.pipe\";\nimport { AdvancedFiltersTriggerDirective } from \"./advanced-filters-trigger.directive\";\nimport { NiceAdvancedFiltersComponent } from \"./advanced-filters.component\";\nimport { ADVANCED_DATE_FILTER_OPTIONS, ADVANCED_FILTER_ICONS } from \"./advanced-filters.constant\";\nimport { NiceAdvancedFiltersButtonComponent } from \"./button/advanced-filters-button.component\";\nimport { NiceAdvancedFilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { defaultIcons, NiceAdvancedFilterIconOptions } from \"./models/icons.model\";\nimport { NiceAdvancedDateFilterComponent } from \"./rule/components/date/date-filter.component\";\nimport { NiceAdvancedNumberFilterComponent } from \"./rule/components/number/number-filter.component\";\nimport { NiceAdvancedOptionsFilterComponent } from \"./rule/components/options/options-filter.component\";\nimport { NiceAdvancedRadioFilterComponent } from \"./rule/components/radio/radio-filter.component\";\nimport { NiceAdvancedSelectFilterComponent } from \"./rule/components/select/select-filter.component\";\nimport { NiceAdvancedTextFilterComponent } from \"./rule/components/text/text-filter.component\";\nimport { NiceAdvancedRuleComponent } from \"./rule/rule.component\";\nimport { AdvancedDateFilterOptions } from \"./models/advanced-date-filter-options.model\";\n\nexport interface NiceAdvancedFiltersOptions {\n icons?: NiceAdvancedFilterIconOptions;\n filterGroupService?: Type<NiceFilterGroupService<any>>;\n advancedDateFilter?: AdvancedDateFilterOptions;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatCardModule,\n MatListModule,\n NiceLoadingSpinnerModule,\n MatIconModule,\n MatRippleModule,\n MatButtonModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n FormsModule,\n MatInputModule,\n MatButtonToggleModule,\n TranslateModule,\n MatDatepickerModule,\n NiceTypeaheadModule,\n NiceAsyncTypeaheadModule,\n NgxMaskDirective\n ],\n declarations: [\n NiceAdvancedFiltersComponent,\n NiceAdvancedFiltersButtonComponent,\n NiceAdvancedFilterSelectionComponent,\n\n NiceAdvancedRuleComponent,\n NiceAdvancedDateFilterComponent,\n NiceAdvancedNumberFilterComponent,\n NiceAdvancedOptionsFilterComponent,\n NiceAdvancedRadioFilterComponent,\n NiceAdvancedSelectFilterComponent,\n NiceAdvancedTextFilterComponent,\n\n AdvancedFiltersTriggerDirective,\n\n NiceFilterGroupIconPipe\n ],\n providers: [],\n exports: [NiceAdvancedFiltersComponent, NiceAdvancedRuleComponent, NiceAdvancedFiltersButtonComponent, AdvancedFiltersTriggerDirective],\n})\nexport class NiceAdvancedFiltersModule {\n public static forRoot(options?: NiceAdvancedFiltersOptions): ModuleWithProviders<NiceAdvancedFiltersModule> {\n return {\n ngModule: NiceAdvancedFiltersModule,\n providers: [\n {\n provide: ADVANCED_FILTER_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n },\n {\n provide: ADVANCED_DATE_FILTER_OPTIONS,\n useValue: { ...(options?.advancedDateFilter ?? {}) }\n },\n options?.filterGroupService ? {\n provide: NiceFilterGroupService,\n useClass: options.filterGroupService\n } : undefined\n ].filter((provider) => !!provider)\n };\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceFilterData]\" })\nexport class NiceFilterDataDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Component, ContentChild, TemplateRef, ViewEncapsulation } from \"@angular/core\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterDataDirective } from \"../common/data.directive\";\n\n@Component({\n selector: \"nice-filter-custom-data-view, div[nice-filter-custom-data-view]\",\n templateUrl: \"custom-data-view.template.html\",\n styleUrls: [\"custom-data-view.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterCustomDataViewComponent {\n @ContentChild(NiceFilterDataDirective, { read: TemplateRef })\n public content: TemplateRef<any>;\n\n public data$ = this.query.selectAll();\n\n constructor(private query: NiceFilterViewQuery) {}\n}\n","<ng-container *ngIf=\"content\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data$ | async }\"></ng-container>\n</ng-container>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER = new InjectionToken(\"nice_preload_selected_entities_provider\");\n","import { EntityStore, QueryEntity } from \"@datorama/akita\";\nimport { Observable } from \"rxjs\";\nimport { NiceSelectableListState } from \"./selectable-list.state\";\n\nexport class NiceSelectableListStateQuery<T> extends QueryEntity<NiceSelectableListState<T>> {\n constructor(store: EntityStore<NiceSelectableListState<T>>) {\n super(store);\n }\n\n public selectAllSelected(): Observable<boolean> {\n return this.select(\"allSelected\");\n }\n\n public selectActiveViewIndex(): Observable<number> {\n return this.select(({ ids, active }) => {\n const index = ids.indexOf(active);\n return index + 1;\n });\n }\n\n public selectFirstActive(): Observable<boolean> {\n return this.select(({ ids, active }) => {\n if (!ids.length) {\n return true;\n }\n\n return ids[0] === active;\n });\n }\n\n public selectLastActive(): Observable<boolean> {\n return this.select(({ ids, active }) => {\n if (!ids.length) {\n return true;\n }\n\n return ids[ids.length - 1] === active;\n });\n }\n}\n","import { Router } from \"@angular/router\";\nimport { arrayAdd, arrayRemove, EntityStore } from \"@datorama/akita\";\nimport { NiceSelectableListLoadAllEntitiesOptions } from \"../model/load-all-entities-options.model\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NicePreloadSelectedEntitiesProvider } from \"../providers/preload-selected-entities.provider\";\nimport { NiceSelectableListState, SelectAllBehaviour } from \"./selectable-list.state\";\n\nexport class NiceSelectableListStateService<T, ID = any> {\n private _options?: NiceSelectableListOptions;\n\n public get idKey(): string {\n return this._options?.idKey ?? \"id\";\n }\n\n public get preloadedWindow(): number {\n return this._options?.preloadWindow ?? 2;\n }\n\n public get queryParamsDisabled(): boolean {\n return this._options?.disableQueryParams ?? false;\n }\n\n public get selectAllBehaviour(): SelectAllBehaviour | null {\n return this._options?.selectAllBehaviour ?? null;\n }\n\n constructor(\n private store: EntityStore<NiceSelectableListState<any>>,\n private router: Router,\n private preloadService?: NicePreloadSelectedEntitiesProvider<T>,\n options?: NiceSelectableListOptions\n ) {\n this._options = options;\n }\n\n public setOptions(options?: NiceSelectableListOptions): void {\n this._options = options;\n }\n\n public setActive(entity: T): void {\n this.store.setActive(entity[this.idKey]);\n }\n\n public getIndex(identifier: number): number {\n const { ids } = this.store.getValue();\n const index = ids.indexOf(identifier);\n return index + 1;\n }\n\n public async selectAll(options?: NiceSelectableListLoadAllEntitiesOptions): Promise<void> {\n if (!this.preloadService) {\n return this.store.update({\n allSelected: true\n });\n }\n\n const ids = await this.preloadService.loadAllEntities(options);\n this.store.set(ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n })));\n\n return this.store.update({\n allSelected: true\n });\n }\n\n public async select(id: ID): Promise<void> {\n this.store.update((state) => ({\n unselectedEntity: arrayRemove(state.unselectedEntity, id as any)\n }));\n\n this.store.add({\n [this.idKey]: id,\n loaded: false\n });\n\n if (this.preloadService) {\n const entity = await this.preloadService.loadEntityById(id as any);\n this.store.upsert(id as any, {\n ...entity,\n loaded: true\n });\n }\n }\n\n public async selectMany(ids: ID[], active: ID): Promise<void> {\n this.store.add(\n ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n }))\n );\n\n if (active) {\n this.store.setActive(active);\n await this.loadEntities(true);\n }\n }\n\n public async selectEntity(entity: T): Promise<void> {\n this.store.update((state) => ({\n unselectedEntity: arrayRemove(state.unselectedEntity, entity[this.idKey])\n }));\n\n this.store.upsert(entity[this.idKey], { ...entity, loaded: true });\n\n if (this.preloadService) {\n const preloadedEntity = await this.preloadService.reloadEntity(entity);\n this.store.upsert(preloadedEntity[this.idKey], { ...preloadedEntity, loaded: true });\n }\n }\n\n public async selectManyEntities(entities: T[]): Promise<void> {\n if (!this.preloadService) {\n return this.store.upsertMany(entities.map((entity) => ({ ...entity, loaded: true })));\n }\n\n const preloadedEntities = await this.preloadService.reloadEntities(entities);\n this.store.upsertMany(preloadedEntities.map((preloadedEntity) => ({ ...preloadedEntity, loaded: true })));\n }\n\n public unselectAll(): void {\n this.store.set([]);\n\n return this.store.update({\n allSelected: false,\n unselectedEntity: []\n });\n }\n\n public unselect(id: ID): void {\n this.store.update((state) => ({\n unselectedEntity: arrayAdd(state.unselectedEntity, id)\n }));\n\n this.store.remove(id as any);\n }\n\n public unselectEntity(entity: T): void {\n this.store.update((state) => ({\n unselectedEntity: arrayAdd(state.unselectedEntity, entity[this.idKey])\n }));\n\n this.store.remove(entity[this.idKey]);\n }\n\n public unselectManyEntities(entities: T[]): void {\n this.store.remove(entities.map((entity) => entity[this.idKey]));\n }\n\n public updateEntity(entity: T): void {\n this.store.update(entity[this.idKey], entity);\n }\n\n public async setEntities(ids: ID[], activeId: ID): Promise<void> {\n this.store.update({\n unselectedEntity: [],\n allSelected: false\n });\n\n this.store.set(ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n })));\n\n if (activeId) {\n this.store.setActive(activeId);\n }\n\n await this.loadEntities(true);\n }\n\n public async next(): Promise<void> {\n const { ids, active } = this.store.getValue();\n const index = ids.indexOf(active);\n await this.loadActiveEntity(ids[index + 1], 1);\n }\n\n public async previous(): Promise<void> {\n const { ids, active } = this.store.getValue();\n const index = ids.indexOf(active);\n await this.loadActiveEntity(ids[index - 1], -1);\n }\n\n public async first(): Promise<void> {\n const { ids } = this.store.getValue();\n await this.loadActiveEntity(ids[0], 1);\n }\n\n public async last(): Promise<void> {\n const { ids } = this.store.getValue();\n await this.loadActiveEntity(ids[ids.length - 1], -1);\n }\n\n public async removeActive(): Promise<void> {\n const { active, ids } = this.store.getValue();\n const index = ids.indexOf(active);\n\n this.store.remove(active);\n\n if (index === (ids.length - 1)) {\n await this.loadActiveEntity(ids[index - 1], -1);\n } else {\n await this.loadActiveEntity(ids[index + 1], 1);\n }\n }\n\n public async loadActiveEntity(id: number, direction: number) {\n try {\n this.store.setActive(id);\n\n const { entities } = this.store.getValue();\n if (!entities[+id + direction * this.preloadedWindow]?.loaded) {\n await this.loadEntities(false);\n }\n } catch (e) {\n this.store.setError(e);\n }\n }\n\n public async loadEntities(loadExtremity: boolean): Promise<void> {\n if (!this.preloadService) {\n return;\n }\n\n const toLoad = this.getListIdToLoad(loadExtremity);\n if (!toLoad.length) {\n return;\n }\n\n const entities = await this.preloadService.loadEntitiesById(toLoad);\n this.store.upsertMany(entities.map((entity) => ({ ...entity, loaded: true })));\n }\n\n public getListIdToLoad(loadExtremity: boolean): number[] {\n const { active, ids, entities } = this.store.getValue();\n const from = ids.indexOf(active) - this.preloadedWindow > 0 ? ids.indexOf(active) - this.preloadedWindow : 0;\n const to = ids.indexOf(active) + this.preloadedWindow < ids.length - 1\n ? ids.indexOf(active) + this.preloadedWindow\n : ids.length - 1;\n\n const toLoad = [];\n if (loadExtremity) {\n if (ids.length <= 2) {\n return ids;\n }\n\n toLoad.push(ids[0], ids[ids.length - 1]);\n }\n\n for (let i = from; i <= to; i++) {\n if (ids[i] === null || ids[0] === undefined) {\n continue;\n }\n\n if (!toLoad.includes(ids[i]) && !entities[ids[i]]?.loaded) {\n toLoad.push(ids[i]);\n }\n }\n\n return toLoad;\n }\n\n public generateQueryParams(): { selection: number[] | null; selected: number | null; } {\n const { ids, active } = this.store.getValue();\n return {\n selection: ids.length ? ids : null,\n selected: active ?? null\n };\n }\n\n public setQueryParams(): void {\n if (!this.queryParamsDisabled) {\n this.router.navigate([], {\n queryParams: this.generateQueryParams(),\n queryParamsHandling: \"merge\"\n });\n }\n }\n}\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { EntityStore } from \"@datorama/akita\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NicePreloadSelectedEntitiesProvider } from \"../providers/preload-selected-entities.provider\";\nimport { NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER } from \"../selectable-list.constant\";\nimport { NiceSelectableListStateQuery } from \"./selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./selectable-list-state.service\";\nimport { NiceSelectableListState } from \"./selectable-list.state\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NiceSelectableListService {\n private stores = new Map<string, { store: EntityStore<NiceSelectableListState<any>>, query: NiceSelectableListStateQuery<any> }>();\n private services = new Map<string, NiceSelectableListStateService<any>>();\n\n constructor(\n @Optional() @Inject(NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER)\n private providers: NicePreloadSelectedEntitiesProvider<any>[],\n private router: Router\n ) {}\n\n public createState(name: string, options?: NiceSelectableListOptions) {\n const store = new EntityStore<NiceSelectableListState<any>>(\n { allSelected: false, unselectedEntity: [] },\n { name, idKey: options?.idKey }\n );\n const query = new NiceSelectableListStateQuery(store);\n\n const state = { store, query };\n this.stores.set(name, state);\n\n return state;\n }\n\n public getState(name: string) {\n return this.stores.get(name);\n }\n\n public withState<T, ID = any>(stateName: string, options?: NiceSelectableListOptions): NiceSelectableListStateService<T, ID> {\n const provider = this.providers?.find((p) => p.state === stateName);\n const service = this.services.get(stateName);\n if (service) {\n if (options) {\n service.setOptions(options);\n }\n\n return service;\n }\n\n const newState = this.createState(stateName, options);\n const newService = new NiceSelectableListStateService<T>(newState.store, this.router, provider, options);\n this.services.set(stateName, newService);\n return newService;\n }\n\n public query<T>(stateName: string): NiceSelectableListStateQuery<T> {\n const state = this.getState(stateName);\n if (!state) {\n throw new Error(\"No state found\");\n }\n\n return state.query;\n }\n}\n","import { Component, Inject, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { ExportBottomSheetComponent, ExportStrategy } from \"@recursyve/nice-ui-kit.v2\";\nimport { ExportSettings } from \"../../../base-list/models/export.model\";\nimport { NiceBaseIconOptions } from \"../../../base-list/models/icons.model\";\nimport { EXPORTS_SETTINGS, FILTER_VIEW_ICONS } from \"../../nice-filter-view.constant\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceSelectableListService } from \"../../../../directive/selectable-list/store/selectable-list.service\";\n\n@Component({\n selector: \"nice-filter-export-buttons, div[nice-filter-export-buttons]\",\n templateUrl: \"export-buttons.template.html\",\n styleUrls: [\"export-buttons.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterExportButtonsComponent {\n @Input()\n public customExport: ExportStrategy[] = [];\n\n @Input()\n public downloadFileName = \"data\";\n\n @Input()\n public canPrint = true;\n\n public loading$ = this.query.selectLoading();\n\n constructor(\n @Inject(FILTER_VIEW_ICONS) public icons: NiceBaseIconOptions,\n @Inject(EXPORTS_SETTINGS) private readonly exportsSettings: ExportSettings,\n private niceFilterViewQuery: NiceFilterViewQuery,\n private selectableListService: NiceSelectableListService,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private readonly bottomSheet: MatBottomSheet\n ) {\n }\n\n public clickExport(): void {\n const exports = [];\n\n const subState = this.niceFilterViewQuery.getSubState<{ stateName: string }>(\"selectable\");\n\n let selected: number[] = [];\n\n if (subState?.stateName) {\n selected = this.selectableListService.query(subState.stateName).getAll().map((entity) => entity.id);\n }\n\n if (this.exportsSettings.xlsx) {\n exports.push({\n type: \"xlsx\",\n onClickExport: () => this.clickXlsx()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_xlsx\",\n onClickExport: () => this.clickXlsx(selected)\n });\n }\n }\n if (this.exportsSettings.csv) {\n exports.push({\n type: \"csv\",\n onClickExport: () => this.clickCsv()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_csv\",\n onClickExport: () => this.clickCsv(selected)\n });\n }\n }\n if (this.exportsSettings.pdf) {\n exports.push({\n type: \"pdf\",\n onClickExport: () => this.clickPdf()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_pdf\",\n onClickExport: () => this.clickPdf(selected)\n });\n }\n }\n\n this.bottomSheet.open(ExportBottomSheetComponent, {\n data: {\n exportStrategies: [\n ...exports,\n ...this.customExport\n ]\n }\n });\n }\n\n public clickXlsx(ids?: number []): void {\n this.service.downloadData(\"xlsx\", this.downloadFileName, ids);\n }\n\n public clickCsv(ids?: number []): void {\n this.service.downloadData(\"csv\", this.downloadFileName, ids);\n }\n\n public clickPrint(): void {\n this.service.printData();\n }\n\n public clickPdf(ids?: number []): void {\n this.service.downloadData(\"pdf\", this.downloadFileName, ids);\n }\n}\n","<button\n *ngIf=\"canPrint\"\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n</button>\n\n<button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n</button>\n","import { Directive, HostListener, Input } from \"@angular/core\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\n\n@Directive({selector: \"[niceFilterExport]\"})\nexport class NiceFilterExportDirective {\n @Input()\n public type: string;\n\n @Input()\n public downloadFileName = \"data\";\n\n constructor(private service: NiceFilterViewService) {}\n\n @HostListener(\"click\")\n public onClick(): void {\n this.service.downloadData(this.type, this.downloadFileName);\n }\n}\n","import { Component, ContentChild, TemplateRef, ViewEncapsulation } from \"@angular/core\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceFilterDataDirective } from \"../common/data.directive\";\n\n@Component({\n selector: \"nice-filter-infinite-scroll-data-view, div[nice-filter-infinite-scroll-data-view]\",\n templateUrl: \"infinite-scroll-data-view.template.html\",\n styleUrls: [\"infinite-scroll-data-view.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterInfiniteScrollDataViewComponent {\n @ContentChild(NiceFilterDataDirective, { read: TemplateRef })\n public content: TemplateRef<any>;\n\n public data$ = this.query.selectAll();\n\n constructor(private query: NiceFilterViewQuery, private service: NiceFilterViewService) {}\n\n public async loadNextPage(): Promise<void> {\n const { filterParameters, filterResult } = this.query.getValue();\n this.service.setMode(\"accumulated\");\n\n if (filterResult && filterResult.values.length >= filterResult.total) {\n return;\n }\n\n this.service.setParameters({\n ...filterParameters,\n start: filterParameters.start + filterParameters.length\n });\n this.service.filter();\n }\n}\n","<ng-container *ngIf=\"content\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data$ | async }\"></ng-container>\n</ng-container>\n","import { Component, Inject, Input, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { Subject, tap } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from \"rxjs/operators\";\nimport { NiceBaseIconOptions } from \"../../../base-list/models/icons.model\";\nimport { FILTER_VIEW_ICONS } from \"../../nice-filter-view.constant\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\n\n@Component({\n selector: \"nice-filter-search\",\n templateUrl: \"search.template.html\",\n styleUrls: [\"search.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterSearchComponent implements OnInit, OnDestroy {\n @Input()\n public appearance: \"default\" | \"outlined\" | \"legacy\" | \"custom\" = \"default\";\n\n public searchQuery$ = this.query.selectFilterParameters().pipe(map(f => f.search));\n\n private unsubscribeAll$ = new Subject<void>();\n private searchText$ = new Subject<string>();\n\n constructor(\n @Inject(FILTER_VIEW_ICONS) public icons: NiceBaseIconOptions,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService\n ) {}\n\n public ngOnInit() {\n this.searchText$\n .pipe(\n takeUntil(this.unsubscribeAll$),\n debounceTime(300),\n distinctUntilChanged(),\n tap((search: string) => {\n const { mode } = this.query.getValue();\n if (mode === \"accumulated\") {\n this.service.resetPaging();\n }\n\n const { filterParameters } = this.query.getValue();\n this.service.setParameters({\n ...filterParameters,\n start: 0,\n search\n });\n this.service.filter();\n })\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public onUpdateSearch(search: string): void {\n this.searchText$.next(search);\n }\n}\n","<div\n class=\"search-wrapper mx-md-0\"\n [class.nice-search-default]=\"appearance === 'default'\"\n [class.nice-search-outlined]=\"appearance === 'outlined'\"\n [class.nice-search-legacy]=\"appearance === 'legacy'\"\n [class.nice-search-custom]=\"appearance === 'custom'\"\n>\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon [svgIcon]=\"icons.search.svgIcon\">{{ icons.search.matIcon }}</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n\n <ng-content select=\"[niceFilterSearchButtons]\"></ng-content>\n </div>\n</div>\n","import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { combineLatest, distinct, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { QueryParamsUtils } from \"../../../utils/query-params.utils\";\nimport { NiceFilterViewQuery } from \"../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../store/nice-filter-view.service\";\n\n@Directive({ selector: \"nice-filter-view[niceFilterQueryParams]\" })\nexport class NiceFilterQueryParamsDirective implements OnInit, OnDestroy {\n @Input()\n public replaceUrlOnNavigation: boolean;\n\n @Output()\n public init = new EventEmitter();\n\n private unsubscribeAll$ = new Subject<void>();\n private _initialized = false;\n\n public get initialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n public ngOnInit(): void {\n this.query.selectFilterParameters().pipe(takeUntil(this.unsubscribeAll$)).subscribe((parameters) => {\n this.updateQueryParams(parameters);\n });\n\n this.loadQueryParams();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n private updateQueryParams(parameters: FilterParametersModel): void {\n if (!this.route) {\n return;\n }\n\n const params = { ...parameters };\n const { mode } = this.query.getValue();\n if (mode === \"accumulated\") {\n delete params.start;\n delete params.length;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: QueryParamsUtils.filterParametersToParamsMap(params),\n queryParamsHandling: \"merge\",\n replaceUrl: this.replaceUrlOnNavigation\n });\n }\n\n private loadQueryParams(): void {\n combineLatest([\n this.route.queryParams.pipe(map((params) => params.start), distinct()),\n this.route.queryParams.pipe(map((params) => params.length), distinct()),\n this.route.queryParams.pipe(map((params) => params.order), distinct()),\n this.route.queryParams.pipe(map((params) => params.search), distinct()),\n this.route.queryParams.pipe(map((params) => params.rules), distinct()),\n ]).pipe(\n takeUntil(this.unsubscribeAll$),\n map(() => {\n const params = this.route.snapshot.queryParams;\n return {\n params: QueryParamsUtils.extractFilterParameters(params)\n };\n })\n ).subscribe(({ params }) => {\n if (!QueryParamsUtils.hasFilterParameters(params) || Object.keys(params).length === 0) {\n params = { ...this.query.getValue().filterParameters };\n }\n const { filterParameters, filterResult } = this.query.getValue();\n if (\n FilterUtils.filterChangeNeedsRefresh(filterParameters, params) ||\n !filterResult\n ) {\n this.service.setParameters({\n ...params,\n fallbackOrder: filterParameters.fallbackOrder\n });\n }\n\n if (!this._initialized) {\n this._initialized = true;\n this.init.emit();\n }\n });\n }\n}\n","import { Directive, inject, OnDestroy, OnInit } from \"@angular/core\";\nimport { Observable, Subject, take } from \"rxjs\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\n\nexport type AfterQueryParamLoadedCallback = () => void;\n\n@Directive()\nexport abstract class NiceNestedFilterView<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit, OnDestroy {\n private readonly _afterQueryParamHooks: Set<AfterQueryParamLoadedCallback> = new Set();\n\n protected unsubscribeAll$ = new Subject<void>();\n\n protected filterViewService: NiceFilterViewService<Filter> = inject(NiceFilterViewService);\n protected filterViewQuery: NiceFilterViewQuery = inject(NiceFilterViewQuery);\n protected queryParams: NiceFilterQueryParamsDirective | null = inject(NiceFilterQueryParamsDirective, { optional: true });\n\n public filterViewLoading$: Observable<boolean>;\n public filterViewCount$: Observable<number>;\n\n public ngOnInit(): void {\n this.filterViewLoading$ = this.filterViewQuery.selectLoading();\n this.filterViewCount$ = this.filterViewQuery.selectCount();\n\n if (!this.queryParams || this.queryParams?.initialized) {\n this.onInit();\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.onInit());\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n protected afterInit(fn: AfterQueryParamLoadedCallback): void {\n if (!this.queryParams || this.queryParams?.initialized) {\n fn.bind(this)();\n return;\n }\n\n this._afterQueryParamHooks.add(fn);\n }\n\n private onInit(): void {\n for (const hook of this._afterQueryParamHooks) {\n hook.bind(this)();\n }\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatPaginator } from \"@angular/material/paginator\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNestedFilterView } from \"../nice-nested-filter-view\";\n\n@Directive({ selector: \"mat-paginator[niceFilterPagination]\" })\nexport class NiceFilterMatPaginatorPaginationDirective extends NiceNestedFilterView implements OnInit {\n public defaultPageSizeOptions = [10, 25, 50, 100];\n\n constructor(private paginator: MatPaginator) {\n super();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n if (!this.paginator.pageSizeOptions.length) {\n this.paginator.pageSizeOptions = this.defaultPageSizeOptions;\n }\n\n this.filterViewQuery.selectFilterResult().pipe(takeUntil(this.unsubscribeAll$)).subscribe((res) => {\n if (!res) {\n return;\n }\n\n const { page, total } = res;\n this.paginator.pageIndex = page.number;\n this.paginator.pageSize = page.size;\n this.paginator.length = total;\n });\n\n this.paginator.page.pipe(takeUntil(this.unsubscribeAll$)).subscribe((page) => {\n this.filterViewService.patchParameters({\n start: page.pageIndex * page.pageSize,\n length: page.pageSize\n });\n this.filterViewService.filter();\n });\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatSort } from \"@angular/material/sort\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNestedFilterView } from \"../nice-nested-filter-view\";\n\n@Directive({ selector: \"mat-table[matSort][niceFilterSorting]\" })\nexport class NiceFilterMatSortSortingDirective extends NiceNestedFilterView implements OnInit {\n constructor(private sort: MatSort) {\n super();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n this.filterViewQuery.selectFilterParameters().pipe(takeUntil(this.unsubscribeAll$)).subscribe((res) => {\n if (!res) {\n return;\n }\n\n const { order } = res;\n if (!order) {\n return;\n }\n\n this.sort.direction = order.direction;\n this.sort.active = order.column;\n });\n\n this.sort.sortChange.pipe(takeUntil(this.unsubscribeAll$)).subscribe((sort) => {\n const { orderColumns } = this.filterViewQuery.getValue();\n const column = orderColumns?.[sort.active];\n\n if (!sort.direction) {\n this.filterViewService.patchParameters({\n order: null\n });\n } else {\n this.filterViewService.patchParameters({\n order: {\n column: column?.column ?? sort.active,\n direction: sort.direction as \"asc\" | \"desc\",\n nullLast: column?.nullLast\n }\n });\n }\n this.filterViewService.filter();\n });\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatTable } from \"@angular/material/table\";\nimport { NiceFilterViewQuery } from \"../store/nice-filter-view.query\";\n\n@Directive({ selector: \"mat-table[niceFilterDataView]\" })\nexport class NiceFilterMatTableViewDirective implements OnInit {\n constructor(private query: NiceFilterViewQuery, private table: MatTable<any>) {}\n\n public ngOnInit(): void {\n this.table.dataSource = this.query.selectAll();\n }\n}\n","import { Injectable, QueryList } from \"@angular/core\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NiceSelectableListCheckboxDirective } from \"../selectable-list-checkbox.directive\";\n\n@Injectable({ providedIn: \"any\" })\nexport class NiceSelectableListContentService {\n private _options: NiceSelectableListOptions;\n private _state: string | null = null;\n private _checkboxes: QueryList<NiceSelectableListCheckboxDirective> = new QueryList();\n\n private defaultOptions: NiceSelectableListOptions = { idKey: \"id\", preloadWindow: 2 };\n\n public get options(): NiceSelectableListOptions {\n return this._options ?? this.defaultOptions;\n }\n\n public get state(): string | null {\n return this._state;\n }\n\n public get checkboxes(): QueryList<NiceSelectableListCheckboxDirective> {\n return this._checkboxes;\n }\n\n public setOptions(options: NiceSelectableListOptions): void {\n this._options = {\n ...this.defaultOptions,\n ...options\n };\n }\n\n public setState(state: string): void {\n this._state = state;\n }\n\n public setCheckboxes(checkboxes: QueryList<NiceSelectableListCheckboxDirective>): void {\n this._checkboxes = checkboxes;\n }\n}\n","import { Directive, DoCheck, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { EntityActions } from \"@datorama/akita\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListStateQuery } from \"./store/selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\nimport { NiceSelectableListState } from \"./store/selectable-list.state\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListCheckbox]\"\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListCheckboxDirective implements OnInit, OnDestroy, DoCheck {\n @Input()\n public selectableEntity?: any;\n\n @Input()\n public selectPage?: boolean;\n\n private selectableListStateService!: NiceSelectableListStateService<any>;\n private selectableListStateQuery!: NiceSelectableListStateQuery<NiceSelectableListState<any>>;\n\n private unsubscribeAll$ = new Subject<void>();\n\n private initialized = false;\n\n private get currentId(): any {\n if (!this.selectableEntity || !this.selectableListStateService) {\n return null;\n }\n\n return this.selectableEntity[this.selectableListStateService.idKey];\n }\n\n constructor(\n public readonly checkbox: MatCheckbox,\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public ngOnInit(): void {\n this.selectableListStateService = this.selectableListService.withState(this.service.state);\n this.selectableListStateQuery = this.selectableListService.query(this.service.state);\n\n if (this.selectableEntity) {\n this.handleSelectableEntity();\n }\n\n if (this.selectPage) {\n this.handleSelectPage();\n }\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n this.initialized = false;\n }\n\n public ngDoCheck(): void {\n if (this.selectPage && !this.initialized) {\n this.updateCheckboxState();\n }\n }\n\n private handleSelectableEntity(): void {\n if (this.checkbox.checked) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n }\n\n if (!this.checkbox.checked && this.selectableListStateQuery.getEntity(this.currentId)) {\n this.checkbox.checked = true;\n }\n\n this.checkbox.change.pipe(takeUntil(this.unsubscribeAll$)).subscribe((value) => {\n if (value.checked && !this.selectableListStateQuery.getEntity(this.currentId)) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n }\n\n if (!value.checked && this.selectableListStateQuery.getEntity(this.currentId)) {\n this.selectableListStateService.unselectEntity(this.selectableEntity);\n }\n });\n\n this.selectableListStateQuery.selectEntityAction([\n EntityActions.Add,\n EntityActions.Remove,\n EntityActions.Set\n ]).pipe(takeUntil(this.unsubscribeAll$)).subscribe(({ ids, type }) => {\n const shouldTakeAction = ids.includes(this.currentId);\n if (!shouldTakeAction) {\n if (type === EntityActions.Set) {\n this.propageCheckedValue(this.checkbox, false);\n }\n return;\n }\n\n if (!this.checkbox.checked && (type === EntityActions.Add || type === EntityActions.Set)) {\n this.propageCheckedValue(this.checkbox, true);\n }\n\n if (this.checkbox.checked && type === EntityActions.Remove) {\n this.propageCheckedValue(this.checkbox, false);\n }\n });\n\n this.selectableListStateQuery.selectAllSelected().pipe(takeUntil(this.unsubscribeAll$)).subscribe((allSelected) => {\n const selectAllBehaviour = this.selectableListStateService.selectAllBehaviour;\n if (allSelected) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n if (selectAllBehaviour === \"lock\") {\n this.checkbox.disabled = true;\n }\n } else {\n this.selectableListStateService.unselectEntity(this.selectableEntity);\n this.checkbox.disabled = false;\n }\n });\n }\n\n private handleSelectPage(): void {\n this.selectableListStateQuery.selectCount().subscribe(() => this.updateCheckboxState());\n\n this.checkbox.change.pipe(takeUntil(this.unsubscribeAll$)).subscribe((value) => {\n for (const checkbox of this.service.checkboxes) {\n if (checkbox.selectPage) {\n continue;\n }\n\n checkbox.checkbox.checked = value.checked;\n checkbox.checkbox.change.emit({ checked: value.checked, source: checkbox.checkbox });\n }\n });\n\n this.selectableListStateQuery.selectAllSelected().pipe(takeUntil(this.unsubscribeAll$)).subscribe((allSelected) => {\n const selectAllBehaviour = this.selectableListStateService.selectAllBehaviour;\n if (allSelected) {\n if (selectAllBehaviour === \"lock\") {\n this.checkbox.disabled = true;\n }\n } else {\n this.checkbox.disabled = false;\n }\n });\n }\n\n private updateCheckboxState(): void {\n const count = this.selectableListStateQuery.getCount();\n const checkboxes = this.service.checkboxes.filter((checkbox) => !checkbox.selectPage);\n if (!checkboxes.length) {\n if (!count) {\n this.checkbox.indeterminate = false;\n this.checkbox.checked = false;\n return;\n }\n\n this.checkbox.indeterminate = true;\n this.checkbox.checked = false;\n return;\n }\n\n this.initialized = true;\n if (!count) {\n this.checkbox.indeterminate = false;\n this.checkbox.checked = false;\n return;\n }\n if (count !== checkboxes.length) {\n this.checkbox.indeterminate = true;\n this.checkbox.checked = false;\n return;\n }\n if (count === checkboxes.length) {\n this.checkbox.checked = true;\n this.checkbox.indeterminate = false;\n }\n }\n\n private propageCheckedValue(checkbox: MatCheckbox, checked: boolean): void {\n checkbox.checked = checked;\n checkbox.change.emit({ checked, source: checkbox});\n }\n}\n","import { AfterContentInit, ContentChildren, Directive, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { EntityActions } from \"@datorama/akita\";\nimport { combineLatest, distinct, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListOptions } from \"./model/selectable-list-options.model\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListCheckboxDirective } from \"./selectable-list-checkbox.directive\";\nimport { NiceSelectableListStateQuery } from \"./store/selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [NiceSelectableListContentService]\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListDirective implements OnInit, OnDestroy, OnChanges, AfterContentInit {\n @Input()\n public state: string;\n\n @Input()\n public options: NiceSelectableListOptions;\n\n @ContentChildren(NiceSelectableListCheckboxDirective, { descendants: true })\n public readonly checkboxes: QueryList<NiceSelectableListCheckboxDirective>;\n\n private unsubscribeAll$ = new Subject<void>();\n private unsubscribeQuerySub$ = new Subject<void>();\n\n private stateService!: NiceSelectableListStateService<any>;\n private stateQuery!: NiceSelectableListStateQuery<any>;\n\n constructor(\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService,\n private route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n if (this.options?.disableQueryParams) {\n return;\n }\n\n combineLatest([\n this.route.queryParams.pipe(map((params) => params.selection), distinct()),\n this.route.queryParams.pipe(map((params) => params.selected), distinct())\n ]).pipe(takeUntil(this.unsubscribeAll$)).subscribe(([selection, selected]: [string | string[], string]) => {\n if (!selection) {\n this.stateService.setQueryParams();\n return;\n }\n\n const newSelection = typeof selection === \"string\" ? [+selection] : selection.map((s) => +s);\n const newSelected = selected ? +selected : null;\n\n const { ids, active } = this.stateQuery.getValue();\n if (!ids.length || !ids.every((id) => newSelection.includes(id))) {\n this.stateService.setEntities(newSelection, newSelected);\n return;\n }\n\n if (newSelected && active !== newSelected) {\n this.stateService.setActive(newSelected);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n this.unsubscribeQuerySub$.next();\n this.unsubscribeQuerySub$.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"options\" in changes) {\n this.service.setOptions(this.options);\n this.stateService?.setOptions(this.options);\n }\n\n if (\"state\" in changes) {\n this.service.setState(this.state);\n this.stateService = this.selectableListService.withState<any>(this.state, this.options);\n this.stateQuery = this.selectableListService.query(this.state);\n this.listenOnStateChanges();\n }\n }\n\n public ngAfterContentInit(): void {\n this.service.setCheckboxes(this.checkboxes);\n }\n\n private listenOnStateChanges(): void {\n this.unsubscribeQuerySub$.next();\n this.stateQuery.selectEntityAction([\n EntityActions.Add,\n EntityActions.Remove,\n EntityActions.Set\n ]).pipe(takeUntil(this.unsubscribeQuerySub$)).subscribe(() => {\n this.stateService.setQueryParams();\n });\n\n this.stateQuery.selectActiveId().pipe(takeUntil(this.unsubscribeQuerySub$)).subscribe(() => this.stateService.setQueryParams());\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\nimport { NiceFilterViewStore } from \"./store/nice-filter-view.store\";\n\n@Component({\n selector: \"nice-filter-view\",\n templateUrl: \"nice-filter-view.template.html\",\n styleUrls: [\"nice-filter-view.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n NiceFilterViewQuery,\n NiceFilterViewService,\n NiceFilterViewStore\n ]\n})\nexport class NiceFilterViewComponent implements OnChanges {\n @Input()\n public queryParams: QueryParams = {};\n\n constructor(private service: NiceFilterViewService) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"queryParams\" in changes) {\n this.service.setQueryParams(this.queryParams);\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { Observable, take } from \"rxjs\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { NiceSelectableListDirective } from \"../../directive/selectable-list/selectable-list.directive\";\nimport { QueryModel, QueryRuleModel, RuleModel } from \"../../models/query.model\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceAdvancedFiltersComponent } from \"./components/advanced-filters/advanced-filters.component\";\nimport { NiceAdvancedFiltersButtonComponent } from \"./components/advanced-filters/button/advanced-filters-button.component\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\nimport { NiceFilterViewComponent } from \"./nice-filter-view.component\";\nimport { AfterQueryParamLoadedCallback } from \"./nice-nested-filter-view\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\n\nexport interface NiceBaseFilterViewInitOptions {\n mode?: \"paginated\" | \"accumulated\";\n loadConfig?: boolean;\n configQueryParams?: QueryParams;\n}\n\n@Component({\n template: ``\n})\nexport abstract class NiceBaseFilterViewComponent<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit {\n @ViewChild(NiceFilterViewComponent, { read: NiceFilterViewService, static: true })\n protected filterViewService: NiceFilterViewService<Filter>;\n\n @ViewChild(NiceFilterViewComponent, { read: NiceFilterViewQuery, static: true })\n protected filterViewQuery: NiceFilterViewQuery;\n\n @ViewChild(NiceFilterQueryParamsDirective, { static: true })\n protected queryParams: NiceFilterQueryParamsDirective;\n\n @ViewChild(NiceAdvancedFiltersButtonComponent, { static: true })\n protected advancedFiltersButton: NiceAdvancedFiltersButtonComponent;\n\n @ViewChild(NiceAdvancedFiltersComponent, { static: true })\n private advancedFilters: NiceAdvancedFiltersComponent;\n\n @ViewChild(NiceSelectableListDirective, { static: true })\n private selectableListDirective: NiceSelectableListDirective;\n\n private readonly _afterQueryParamHooks: Set<AfterQueryParamLoadedCallback> = new Set();\n\n public filterViewLoading$: Observable<boolean>;\n public filterViewCount$: Observable<number>;\n\n public ngOnInit(autoLoad = true, { mode, loadConfig, configQueryParams }: NiceBaseFilterViewInitOptions = {}): void {\n if (mode) {\n this.filterViewService.setMode(mode);\n }\n\n this.autoLoad(autoLoad);\n this.loadConfig(loadConfig, configQueryParams);\n\n this.filterViewLoading$ = this.filterViewQuery.selectLoading();\n this.filterViewCount$ = this.filterViewQuery.selectCount();\n\n if (this.selectableListDirective) {\n this.filterViewService.updateSubState(\"selectable\", { stateName: this.selectableListDirective.state });\n }\n\n if (!this.queryParams || this.queryParams?.initialized) {\n this.onInit();\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.onInit());\n }\n\n /**\n * Call the filter endpoint with the current filter parameters.\n */\n public loadData(): void {\n this.filterViewService.filter();\n }\n\n /**\n * Disable the filter view. This will stop calling any api routes.\n */\n public disable(): void {\n this.filterViewService.disable();\n }\n\n /**\n * Enable the filter view. This will resume calling any api routes.\n */\n public enable(): void {\n this.filterViewService.enable();\n }\n\n /**\n * Update the loading state\n */\n public setLoading(loading: boolean): void {\n this.filterViewService.setLoading(loading);\n }\n\n /**\n * Set a set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public setBaseRules(rule: (QueryRuleModel | QueryModel)[], reload = true): void {\n this.filterViewService.setBaseRules(rule, reload);\n }\n\n /**\n * Add a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public addBaseRule(rule: QueryRuleModel, reload = true): void {\n this.filterViewService.addBaseRule(rule, reload);\n }\n\n /**\n * Add a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public upsertBaseRule(rule: QueryRuleModel, reload = true): void {\n this.filterViewService.upsertBaseRules(rule, reload);\n }\n\n /**\n * Remove a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public removeBaseRule(id: string, reload = true): void {\n this.filterViewService.removeBaseRules(id, reload);\n }\n\n /**\n * Reset all rules with a new set of rules.\n */\n public setRules(rules: QueryModel | QueryModel[], reload = true): void {\n this.filterViewService.setRules(rules);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n /**\n * Add or update a rule.\n * NOTE: This will only check for rules in the first element of the rules array in the current filterParameters.\n */\n public upsertRule(id: string, newRule: RuleModel, reload = true): void {\n this.filterViewService.upsertRule(id, newRule);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n /**\n * Remove a rule.\n * NOTE: This will only check for rules in the first element of the rules array in the current filterParameters.\n */\n public removeRule(id: string, reload = true): void {\n this.filterViewService.removeRule(id);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n protected afterInit(fn: AfterQueryParamLoadedCallback): void {\n if (!this.queryParams || this.queryParams?.initialized) {\n fn.bind(this)();\n return;\n }\n\n this._afterQueryParamHooks.add(fn);\n }\n\n private autoLoad(autoLoad: boolean): void {\n const { autoLoad: defaultAutoLoad } = this.filterViewQuery.getValue();\n if (!this.queryParams) {\n if (autoLoad && defaultAutoLoad) {\n this.filterViewService.filter();\n } else {\n this.filterViewService.setAutoLoad(autoLoad);\n }\n return;\n }\n\n if (!autoLoad && defaultAutoLoad) {\n this.filterViewService.setAutoLoad(autoLoad);\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.loadData());\n }\n\n private loadConfig(loadConfig?: boolean, configQueryParams?: QueryParams): void {\n if (loadConfig === true) {\n this.filterViewService.loadConfig(configQueryParams);\n return;\n }\n\n if (loadConfig === false) {\n return;\n }\n\n if (this.advancedFiltersButton || this.advancedFilters) {\n this.filterViewService.loadConfig(configQueryParams);\n }\n }\n\n private onInit(): void {\n for (const hook of this._afterQueryParamHooks) {\n hook.bind(this)();\n }\n }\n}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { StoreConfigOptions } from \"@datorama/akita/src/lib/storeConfig\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { defaultIcons, NiceBaseIconOptions } from \"../base-list/models/icons.model\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceFilterDataDirective } from \"./components/common/data.directive\";\nimport { NiceFilterCustomDataViewComponent } from \"./components/custom-data-view/custom-data-view.component\";\nimport { NiceFilterExportButtonsComponent } from \"./components/export-buttons/export-buttons.component\";\nimport { NiceFilterExportDirective } from \"./components/export-buttons/export.directive\";\nimport { NiceFilterInfiniteScrollDataViewComponent } from \"./components/infinite-scroll-data-view/infinite-scroll-data-view.component\";\nimport { NiceFilterSearchComponent } from \"./components/search/search.component\";\nimport { NiceFilterMatPaginatorPaginationDirective } from \"./directives/mat-paginator\";\nimport { NiceFilterMatSortSortingDirective } from \"./directives/mat-sort\";\nimport { NiceFilterMatTableViewDirective } from \"./directives/mat-tables\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\n\nimport { NiceFilterViewComponent } from \"./nice-filter-view.component\";\nimport { EXPORTS_SETTINGS, FILTER_VIEW_ICONS, FILTER_VIEW_STATE, FILTER_VIEW_STORE } from \"./nice-filter-view.constant\";\nimport { NiceFilterViewState } from \"./store/nice-filter-view.store\";\n\nexport interface NiceFilterViewOptions<T> {\n filterService: Type<NiceFilterService<T>>;\n exports?: ExportSettings;\n state?: Partial<NiceFilterViewState>;\n store?: StoreConfigOptions;\n}\n\nexport interface NiceFilterViewGlobalOptions {\n icons?: NiceBaseIconOptions;\n}\n\n@NgModule({\n imports: [\n TranslateModule,\n MatIconModule,\n FormsModule,\n AsyncPipe,\n NgIf,\n NgTemplateOutlet,\n MatTooltipModule,\n MatButtonModule,\n MatBottomSheetModule,\n\n NiceExportBottomSheetModule\n ],\n declarations: [\n NiceFilterViewComponent,\n NiceFilterCustomDataViewComponent,\n NiceFilterExportButtonsComponent,\n NiceFilterInfiniteScrollDataViewComponent,\n NiceFilterSearchComponent,\n\n NiceFilterDataDirective,\n NiceFilterExportDirective,\n NiceFilterMatTableViewDirective,\n NiceFilterMatSortSortingDirective,\n NiceFilterMatPaginatorPaginationDirective,\n NiceFilterQueryParamsDirective\n ],\n providers: [],\n exports: [\n NiceFilterViewComponent,\n NiceFilterCustomDataViewComponent,\n NiceFilterExportButtonsComponent,\n NiceFilterInfiniteScrollDataViewComponent,\n NiceFilterSearchComponent,\n\n NiceFilterDataDirective,\n NiceFilterExportDirective,\n NiceFilterMatTableViewDirective,\n NiceFilterMatSortSortingDirective,\n NiceFilterMatPaginatorPaginationDirective,\n NiceFilterQueryParamsDirective\n ],\n})\nexport class NiceFilterViewModule {\n public static forRoot(options?: NiceFilterViewGlobalOptions): ModuleWithProviders<NiceFilterViewModule> {\n return {\n ngModule: NiceFilterViewModule,\n providers: [\n {\n provide: FILTER_VIEW_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n }\n ].filter(x => !!x)\n };\n }\n\n public static providerFactory<T>(options: NiceFilterViewOptions<T>): Provider[] {\n return [\n {\n provide: NiceFilterService,\n useClass: options.filterService\n },\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: FILTER_VIEW_STATE,\n useValue: options.state ?? {}\n },\n {\n provide: FILTER_VIEW_STORE,\n useValue: options.store ?? { name: \"nice-filter-view\", resettable: true }\n }\n ].filter(x => !!x);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceSelectableListLoadAllEntitiesOptions } from \"../model/load-all-entities-options.model\";\n\n@Injectable()\nexport abstract class NicePreloadSelectedEntitiesProvider<T, ID = number> {\n public abstract state: string;\n public abstract reloadEntity(entity: T): Promise<T>;\n public abstract reloadEntities(entities: T[]): Promise<T[]>;\n public abstract loadEntityById(id: ID): Promise<T>;\n public abstract loadEntitiesById(ids: ID[]): Promise<T[]>;\n public abstract loadAllEntities(options?: NiceSelectableListLoadAllEntitiesOptions): Promise<ID[]>;\n}\n","import { Directive, HostListener, Input, OnInit, Optional } from \"@angular/core\";\nimport { QueryEntity } from \"@datorama/akita\";\nimport { NiceFilterViewQuery } from \"../../components/nice-filter-view/store/nice-filter-view.query\";\nimport { FilterUtils } from \"../../utils/filter.utils\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\nimport { NiceSelectableListState } from \"./store/selectable-list.state\";\n\n@Directive({\n selector: \"button[niceSelectableListSelectAll]\"\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListSelectAllDirective implements OnInit {\n @Input()\n public action: \"select\" | \"unselect\" = \"select\";\n\n private selectableListStateService!: NiceSelectableListStateService<any>;\n private selectableListStateQuery!: QueryEntity<NiceSelectableListState<any>>;\n\n constructor(\n @Optional()\n private niceFilterViewQuery: NiceFilterViewQuery | null,\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public ngOnInit(): void {\n this.selectableListStateService = this.selectableListService.withState(this.service.state);\n this.selectableListStateQuery = this.selectableListService.query(this.service.state);\n }\n\n @HostListener(\"click\")\n public onClick(): void {\n if (this.action === \"select\") {\n const filterParameters = this.niceFilterViewQuery?.getParameters() ?? {};\n const query = filterParameters ? FilterUtils.parametersToRequest(filterParameters) : null;\n this.selectableListStateService.selectAll({ query });\n } else {\n this.selectableListStateService.unselectAll();\n }\n }\n}\n","import { Directive, EmbeddedViewRef, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { distinctUntilChanged, map, takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\n\nclass NiceSelectableListIsEmptyDirectiveContext {\n $implicit: boolean;\n isEmpty: boolean;\n}\n\n// tslint:disable-next-line:directive-selector\n@Directive({ selector: \"[niceSelectableListIsEmpty]\" })\nexport class NiceSelectableListIsEmptyDirective implements OnInit, OnDestroy {\n private context = new NiceSelectableListIsEmptyDirectiveContext();\n private embeddedViewRef: EmbeddedViewRef<any> | null = null;\n\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private contentService: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public static ngTemplateContextGuard(\n directive: NiceSelectableListIsEmptyDirective,\n ctx: any\n ): ctx is NiceSelectableListIsEmptyDirectiveContext {\n return true;\n }\n\n public ngOnInit(): void {\n const state = this.contentService.state;\n const query = this.selectableListService.query(state);\n\n this.context.$implicit = this.context.isEmpty = (query.getCount() === 0);\n\n if (!this.embeddedViewRef) {\n this.viewContainerRef.clear();\n this.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);\n }\n\n query.selectCount().pipe(\n takeUntil(this.unsubscribeAll$),\n map((count) => count === 0),\n distinctUntilChanged()\n ).subscribe((isEmpty) => {\n this.context.$implicit = this.context.isEmpty = isEmpty;\n\n this.embeddedViewRef.context = this.context;\n this.embeddedViewRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n}\n","import { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { NicePreloadSelectedEntitiesProvider } from \"./providers/preload-selected-entities.provider\";\nimport { NiceSelectableListCheckboxDirective } from \"./selectable-list-checkbox.directive\";\nimport { NiceSelectableListSelectAllDirective } from \"./selectable-list-select-all.directive\";\nimport { NiceSelectableListIsEmptyDirective } from \"./selectable-list-state.directive\";\nimport { NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER } from \"./selectable-list.constant\";\nimport { NiceSelectableListDirective } from \"./selectable-list.directive\";\n\n@NgModule({\n imports: [],\n declarations: [NiceSelectableListDirective, NiceSelectableListCheckboxDirective, NiceSelectableListSelectAllDirective, NiceSelectableListIsEmptyDirective],\n exports: [NiceSelectableListDirective, NiceSelectableListCheckboxDirective, NiceSelectableListSelectAllDirective, NiceSelectableListIsEmptyDirective]\n})\nexport class NiceSelectableListModule {\n public static register(\n ...providers: Type<NicePreloadSelectedEntitiesProvider<any, any>>[]\n ): ModuleWithProviders<NiceSelectableListModule> {\n return {\n ngModule: NiceSelectableListModule,\n providers: providers.map(x => ({\n provide: NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER,\n useClass: x,\n multi: true\n }))\n };\n }\n}\n","import { TableColumns } from \"../components/base-list/models/columns.model\";\n\nexport class StringUtils {}\n\ndeclare global {\n interface String {\n toTableColumn(sortable?: boolean, nullLast?: boolean): TableColumns;\n toTableColumn({ sortable, nullLast }: { sortable?: boolean, nullLast?: boolean }): TableColumns;\n }\n}\n\n// tslint:disable-next-line:max-line-length\nString.prototype.toTableColumn = function(sortableOrOptions: boolean | { sortable?: boolean, nullLast?: boolean }, nullLast?: boolean): TableColumns {\n const options = typeof sortableOrOptions === \"object\" ? sortableOrOptions : { sortable: sortableOrOptions, nullLast };\n return new TableColumns(this.toString(), options.sortable, options.nullLast);\n};\n","/*\n * Public API Surface of nice-data-filter-kit\n */\n\nexport * from \"./lib/api/public-api\";\nexport * from \"./lib/components/public-api\";\nexport * from \"./lib/directive/public-api\";\nexport * from \"./lib/models/public-api\";\nexport * from \"./lib/utils/public-api\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NiceSavedReportsApi","EXPORTS_SETTINGS","i1.NiceBaseListStore","Array","i1.NiceFilterGroupService","i1","i2","i4","i6","i7.FilterGroupIconPipe","FilterComponent","i1.NiceFilterService","i3","i5","i7","i8.QueryBuilderTriggerDirective","i9.SelectFilterComponent","i10.TextFilterComponent","i11.NumberFilterComponent","i12.RadioFilterComponent","i13.DateFilterComponent","i14","i6.QueryBuilderTriggerDirective","i7.RuleComponent","i8","i1.NiceBaseListQuery","i2.NiceBaseListService","i9","i16.NiceQueryBuilderComponent","i17.QueryBuilderTriggerDirective","i19","defaultIcons","initialValue","i1.NiceMultiStateListStore","i3.NiceMultiStateFilterService","i1.NiceMultiStateListQuery","i5.NiceMultiStateListService","i1.NiceFilterViewStore","i1.NiceFilterViewQuery","i8.NiceFilterGroupIconPipe","i2.NiceFilterViewService","i6.AdvancedFiltersTriggerDirective","i9.NiceAdvancedDateFilterComponent","i10.NiceAdvancedNumberFilterComponent","i11.NiceAdvancedOptionsFilterComponent","i12.NiceAdvancedRadioFilterComponent","i13.NiceAdvancedSelectFilterComponent","i14.NiceAdvancedTextFilterComponent","i15.AdvancedFiltersTriggerDirective","i16","i2.NiceFilterViewQuery","i3.NiceFilterViewService","i9.NiceAdvancedRuleComponent","i10.AdvancedFiltersTriggerDirective","i11","i2.NiceSelectableListService","i1.NiceFilterViewService","i2.NiceSelectableListContentService","i3.NiceSelectableListService","i1.NiceSelectableListContentService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recursyve-nice-data-filter-kit.mjs","sources":["../../../projects/nice-data-filter-kit/src/lib/utils/query-params.utils.ts","../../../projects/nice-data-filter-kit/src/lib/api/filter.api.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-buttons.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-cards.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-custom-content.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-empty-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-filters.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-table.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-title.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-empty-search-result-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/directives/base-list-directives.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/columns.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/layout.model.ts","../../../projects/nice-data-filter-kit/src/lib/utils/order.utils.ts","../../../projects/nice-data-filter-kit/src/lib/utils/filter.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/providers/base-filter.service.ts","../../../projects/nice-data-filter-kit/src/lib/api/saved-report.api.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/providers/base-list-saved-report.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.query.ts","../../../projects/nice-data-filter-kit/src/lib/models/filter.model.ts","../../../projects/nice-data-filter-kit/src/lib/models/query.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/utils/qb-filter.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/store/base-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.form.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/providers/filter-group.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/pipes/filter-group-icon.pipe.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/filter-selection/filter-selection.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/filter-selection/filter-selection.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder-trigger.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/select/select-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/select/select-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/text/text-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/text/text-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/number/number-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/number/number-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/radio/radio-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/radio/radio-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/date/date-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/components/date/date-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/rule.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/rule/rule.template.html","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.template.html","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.template.html","../../../projects/nice-data-filter-kit/src/lib/utils/date.adapter.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/query-builder/query-builder.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/base-list/base-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/models/list-states.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/providers/multi-state-filter.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.query.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/store/multi-state-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/multi-state-list/multi-state-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.store.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.query.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/store/nice-filter-view.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.constant.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/pipes/filter-group-icon.pipe.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.form.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/providers/async-typeahead.provider.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/rule/rule.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/models/icons.model.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/common/data.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.template.html","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.constant.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list-state.query.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list-state.service.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/store/selectable-list.service.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export-buttons.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/export-buttons/export.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/search/search.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/components/search/search.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/query-params.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-nested-filter-view.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-paginator.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-sort.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/directives/mat-tables.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/providers/selectable-list-content.service.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-checkbox.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.directive.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.template.html","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-base-filter-view.component.ts","../../../projects/nice-data-filter-kit/src/lib/components/nice-filter-view/nice-filter-view.module.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/providers/preload-selected-entities.provider.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-select-all.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list-state.directive.ts","../../../projects/nice-data-filter-kit/src/lib/directive/selectable-list/selectable-list.module.ts","../../../projects/nice-data-filter-kit/src/lib/utils/string.utils.ts","../../../projects/nice-data-filter-kit/src/public-api.ts","../../../projects/nice-data-filter-kit/src/recursyve-nice-data-filter-kit.ts"],"sourcesContent":["import { HttpParams } from \"@angular/common/http\";\nimport { isNullOrUndefined } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel } from \"../models/filter.model\";\n\nexport class QueryParamsUtils {\n public static hasFilterParameters(params: { [key: string]: any }): boolean {\n const keys = [\"start\", \"length\", \"order\", \"search\", \"rules\"];\n return Object.keys(params).some(key => keys.includes(key));\n }\n\n public static extractFilterParameters(params: { [key: string]: any }): FilterParametersModel {\n const filters: FilterParametersModel = {};\n if (!isNullOrUndefined(params.start)) {\n filters.start = Number(params.start);\n }\n if (!isNullOrUndefined(params.length)) {\n filters.length = Number(params.length);\n }\n if (!isNullOrUndefined(params.order)) {\n try {\n filters.order = JSON.parse(params.order);\n } catch (e) {\n delete filters.order;\n }\n }\n if (!isNullOrUndefined(params.search)) {\n filters.search = params.search;\n }\n if (!isNullOrUndefined(params.rules)) {\n try {\n filters.rules = JSON.parse(params.rules);\n } catch (e) {\n delete filters.rules;\n }\n }\n\n return filters;\n }\n\n public static filterParametersToParamsMap(filterParameters: FilterParametersModel): { [key: string]: any } {\n const params: { [key: string]: any } = {};\n if (!isNullOrUndefined(filterParameters.start)) {\n params.start = filterParameters.start;\n }\n if (!isNullOrUndefined(filterParameters.length)) {\n params.length = filterParameters.length;\n }\n if (!isNullOrUndefined(filterParameters.order)) {\n params.order = JSON.stringify(filterParameters.order);\n } else {\n params.order = null;\n }\n if (!isNullOrUndefined(filterParameters.search)) {\n params.search = filterParameters.search;\n }\n if (!isNullOrUndefined(filterParameters.rules)) {\n params.rules = JSON.stringify(filterParameters.rules);\n }\n\n return params;\n }\n\n public static fromObject(obj: any): string {\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) {\n delete obj[key];\n }\n });\n return new HttpParams({\n fromObject: obj\n }).toString();\n }\n}\n","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Type } from \"@angular/core\";\nimport { HttpOptions, NiceHttpExceptionFactory } from \"@recursyve/nice-ui-kit.v2\";\nimport { AbstractConstructor, Constructor } from \"@recursyve/nice-ui-kit.v2/lib/types/constructor\";\nimport { plainToInstance } from \"class-transformer\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterQueryModel, FilterResultModel, SelectFilterValue } from \"../models/filter.model\";\nimport { QueryParamsUtils } from \"../utils/query-params.utils\";\n\nexport interface NiceHttpOptions {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n reportProgress?: boolean;\n withCredentials?: boolean;\n}\n\nexport interface QueryParams {\n [param: string]: any;\n}\n\nexport interface NiceFilterApiDefinition {\n filter(queryModel: FilterQueryModel, option?: HttpOptions): Observable<FilterResultModel>;\n\n filterCount(queryModel: FilterQueryModel): Observable<number>;\n\n downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob>;\n\n getPrintableHtml(queryModel: FilterQueryModel): Observable<string>;\n\n getFilterConfig(option?: HttpOptions): Observable<FilterConfigurationModel[]>;\n\n searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]>;\n\n searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue>;\n}\n\nexport class NiceFilterApi<T> implements NiceFilterApiDefinition {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {\n }\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.http.post<FilterResultModel<T>>(this.url(\"filter\"), queryModel, option);\n }\n\n public filterCount(queryModel: FilterQueryModel): Observable<number> {\n return this.http.post<number>(this.url(\"filter-count\"), queryModel);\n }\n\n public downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob> {\n return this.http.post(this.url(`download/${type}`), queryModel, { responseType: \"blob\" });\n }\n\n public getPrintableHtml(queryModel: FilterQueryModel): Observable<string> {\n return this.http.post(this.url(`download/html`), queryModel, { responseType: \"text\" });\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.http.get<FilterConfigurationModel[]>(this.url(\"filter/config\"), option);\n }\n\n public searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.http.get<SelectFilterValue[]>(this.url(`filter/config/value`), {\n params: {\n ...options?.params,\n id,\n value\n }\n });\n }\n\n public searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue> {\n return this.http.get<SelectFilterValue>(this.url(`filter/config/id`), {\n params: {\n ...options?.params,\n id,\n resourceId\n }\n });\n }\n\n protected url(route?: string, queryParams?: object): string;\n protected url(queryParams: object): string;\n protected url(...args: [string | object, object?]): string {\n const [route, queryParams] = this.transformUrlArgs(args);\n const params = queryParams ? `?${QueryParamsUtils.fromObject(queryParams)}` : \"\";\n if (route) {\n return `${this.filterApiUrl}/${this.path}/${route}${params}`;\n }\n\n return `${this.filterApiUrl}/${this.path}${params}`;\n }\n\n private transformUrlArgs(args: [string | object, object?]): [route: string, queryParams?: object] {\n const [routeOfQueryParams, query] = args;\n if (args.length === 1) {\n if (typeof routeOfQueryParams === \"string\") {\n return [routeOfQueryParams];\n }\n\n return [\"\", routeOfQueryParams];\n }\n\n return [(routeOfQueryParams as string) ?? \"\", query];\n }\n}\n\nexport interface HasNiceFilterApiDefinition {\n exceptionFactory: NiceHttpExceptionFactory;\n httpClient: HttpClient;\n apiUrl: string;\n path: string;\n\n url(route?: string): string;\n\n delete<T>(route?: string, options?: HttpOptions): Observable<T>;\n\n get<T>(route?: string, options?: HttpOptions): Observable<T>;\n\n patch<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n\n post<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n\n put<T>(route?: string, body?: any, options?: HttpOptions): Observable<T>;\n}\n\nexport type NiceFilterApiDefinitionCtor = Constructor<NiceFilterApiDefinition> & AbstractConstructor<NiceFilterApiDefinition>;\n\nexport const mixinNiceFilterApi = <T>(model?: Type<T>) => {\n return <C extends Constructor<HasNiceFilterApiDefinition>>(base: C): NiceFilterApiDefinitionCtor & C => {\n return class extends base {\n constructor(...args: any[]) {\n super(...args);\n }\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.post<FilterResultModel>(\"filter\", queryModel, option).pipe(\n map(x => model ? ({\n ...x,\n values: plainToInstance(model, x.values)\n }) : x)\n );\n }\n\n public filterCount(queryModel: FilterQueryModel): Observable<number> {\n return this.post<number>(\"filter-count\", queryModel);\n }\n\n public downloadData(type: string, queryModel: FilterQueryModel): Observable<Blob> {\n return this.post(`download/${type}`, queryModel, { responseType: \"blob\" } as any);\n }\n\n public getPrintableHtml(queryModel: FilterQueryModel): Observable<string> {\n return this.post(`download/html`, queryModel, { responseType: \"text\" } as any);\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.get<FilterConfigurationModel[]>(\"filter/config\", option);\n }\n\n public searchFilterValue(id: string, value: string, options?: HttpOptions): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.get<SelectFilterValue[]>(\"filter/config/value\", {\n params: {\n ...options?.params,\n id,\n value\n }\n });\n }\n\n public searchFilterResourceValue(id: string, resourceId: number, options?: HttpOptions): Observable<SelectFilterValue> {\n return this.get<SelectFilterValue>(\"filter/config/id\", {\n params: {\n ...options?.params,\n id,\n resourceId\n }\n });\n }\n };\n };\n};\n","import { Directive, Input, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListButton]\" })\nexport class NiceBaseListButtonsDirective {\n @Input()\n public position: \"prefix\" | \"suffix\" | \"search\" = \"suffix\";\n\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListCards]\" })\nexport class NiceBaseListCardsDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListContent]\" })\nexport class NiceBaseListCustomContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListEmptyState]\" })\nexport class NiceBaseListEmptyStateDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListFilters]\" })\nexport class NiceBaseListFiltersDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, Input, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTable]\" })\nexport class NiceBaseListTableDirective {\n @Input()\n public stickyHeader = true;\n\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTitle]\" })\nexport class NiceBaseListTitleDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListEmptySearchResultState]\" })\nexport class NiceBaseListEmptySearchResultStateDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NiceBaseListButtonsDirective } from \"./base-list-buttons.directive\";\n\nimport { NiceBaseListCardsDirective } from \"./base-list-cards.directive\";\nimport { NiceBaseListCustomContentDirective } from \"./base-list-custom-content.directive\";\nimport { NiceBaseListEmptyStateDirective } from \"./base-list-empty-state.directive\";\nimport { NiceBaseListFiltersDirective } from \"./base-list-filters.directive\";\nimport { NiceBaseListTableDirective } from \"./base-list-table.directive\";\nimport { NiceBaseListTitleDirective } from \"./base-list-title.directive\";\nimport { NiceBaseListEmptySearchResultStateDirective } from \"./base-list-empty-search-result-state.directive\";\n\n@NgModule({\n declarations: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective,\n NiceBaseListEmptySearchResultStateDirective\n ],\n exports: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective,\n NiceBaseListEmptySearchResultStateDirective\n ]\n})\nexport class NiceBaseListDirectiveModule {}\n","export interface TableColumnsModel {\n id: string;\n sortable?: boolean;\n}\n\nexport class TableColumns implements TableColumnsModel {\n public id: string;\n public sortable: boolean;\n public nullLast: boolean;\n\n constructor(id: string, sortable = true, nullLast = false) {\n this.id = id;\n this.sortable = sortable;\n this.nullLast = nullLast;\n }\n}\n","export type AvailableLayoutItem = \"title\" |\n \"search\" |\n \"prefixButtons\" |\n \"suffixButtons\" |\n \"exportButtons\" |\n \"content\" |\n \"pagination\" |\n \"queryBuilder\" |\n \"filters\";\n\nexport enum LayoutContent {\n Table = \"table\",\n Cards = \"cards\",\n Custom = \"custom\"\n}\n\nexport interface LayoutItem {\n name: AvailableLayoutItem;\n flex?: string;\n align?: string;\n classes?: string[];\n}\n\nexport interface Layout {\n classes?: string[];\n items: (LayoutItem | Layout)[];\n}\n\nexport type BaseListPageLayout = (LayoutItem | Layout);\nexport interface BaseListLayout {\n default: Layout | BaseListPageLayout[];\n xs?: Layout | BaseListPageLayout[];\n sm?: Layout | BaseListPageLayout[];\n md?: Layout | BaseListPageLayout[];\n lg?: Layout | BaseListPageLayout[];\n xl?: Layout | BaseListPageLayout[];\n}\n\nexport const defaultLayout: BaseListLayout = {\n default: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/3\"],\n },\n {\n classes: [\"flex flex-row flex-auto flex-shrink-0 justify-center items-center\"],\n items: [\n {\n name: \"search\",\n classes: [\"flex flex-auto flex-shrink-0\"],\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end\"],\n items: [\n {\n name: \"prefixButtons\",\n classes: [\"flex justify-end items-center\"],\n },\n {\n name: \"exportButtons\",\n classes: [\"flex justify-end items-center\"],\n },\n {\n name: \"suffixButtons\",\n classes: [\"flex justify-end items-center\"],\n }\n ]\n }\n ]\n }\n ]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n },\n sm: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row justify-center items-center mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/2\"]\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end items-center\"],\n items: [\n {\n name: \"prefixButtons\"\n },\n {\n name: \"exportButtons\"\n },\n {\n name: \"suffixButtons\"\n }\n ]\n }\n ]\n },\n {\n name: \"search\",\n classes: [\"flex justify-center items-center mb-8\"]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n },\n xs: {\n classes: [\"flex flex-col\"],\n items: [\n {\n classes: [\"flex flex-row justify-center items-center mb-8\"],\n items: [\n {\n name: \"title\",\n classes: [\"flex flex-full max-w-1/2\"]\n },\n {\n classes: [\"flex flex-auto flex-shrink-0 justify-end items-center\"],\n items: [\n {\n name: \"prefixButtons\"\n },\n {\n name: \"exportButtons\"\n },\n {\n name: \"suffixButtons\"\n }\n ]\n }\n ]\n },\n {\n name: \"search\",\n classes: [\"flex justify-center items-center mb-8\"]\n },\n {\n name: \"queryBuilder\"\n },\n {\n name: \"filters\"\n },\n {\n name: \"content\"\n },\n {\n name: \"pagination\"\n }\n ]\n }\n};\n","import { OrderModel } from \"../models/filter.model\";\n\nexport class OrderUtils {\n public static mergeOrder(oldOrder?: OrderModel, newOrder?: OrderModel): OrderModel | undefined {\n if (oldOrder && !newOrder) return undefined;\n\n return {\n ...oldOrder,\n ...newOrder\n };\n }\n\n public static combineOrders(\n firstOrder?: OrderModel | OrderModel[],\n secondOrder?: OrderModel | OrderModel[],\n opts: { uniqueFromBack } = { uniqueFromBack: false }\n ): OrderModel[] {\n if (!Array.isArray(firstOrder)) firstOrder = [firstOrder];\n if (!Array.isArray(secondOrder)) secondOrder = [secondOrder];\n\n const orders = [...firstOrder, ...secondOrder].filter(order => order);\n\n // Make sure order columns are unique\n if (opts?.uniqueFromBack) {\n // Keep unique values from the back of the array\n return [...new Map(orders.map(order => [order.column, order])).values()]\n } else {\n // Keep unique values from the front of the array\n const columns = orders.map(order => order.column);\n return orders.filter((order, index) => columns.indexOf(order.column) === index);\n }\n }\n}\n","import { ObjectUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel, FilterQueryModel } from \"../models/filter.model\";\nimport { OrderUtils } from \"./order.utils\";\n\nexport class FilterUtils {\n public static parametersToRequest(filterParameters: FilterParametersModel): FilterQueryModel {\n return {\n page: {\n number: Math.ceil((filterParameters.start ?? 0) / (filterParameters.length ?? 1)),\n size: filterParameters.length ?? 0\n },\n search: {\n value: filterParameters.search ?? \"\"\n },\n query: {\n condition: \"and\",\n rules: filterParameters.rules ?? []\n },\n order: OrderUtils.combineOrders(filterParameters.order, filterParameters.fallbackOrder),\n data: filterParameters.data,\n groupBy: filterParameters.groupBy\n };\n }\n\n public static filterChangeNeedsRefresh(currentFilters: FilterParametersModel, newFilters: FilterParametersModel): boolean {\n const newFilterKeys = Object.keys(newFilters).sort();\n if (newFilterKeys.length === 0) {\n return true;\n }\n return newFilterKeys.some((key) => {\n const currentValue = (currentFilters as any)[key];\n const newValue = (currentFilters as any)[key];\n if (Array.isArray(currentValue)) {\n return !ObjectUtils.areObjectsEqual(currentValue, newValue);\n } else if (typeof currentValue === \"object\" && currentValue !== null) {\n return !ObjectUtils.areObjectsEqual(currentValue, newValue);\n } else {\n return currentValue !== newValue;\n }\n });\n }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceFilterApi, NiceFilterApiDefinition, NiceHttpOptions } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel, SelectFilterValue } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { HttpOptions } from \"@recursyve/nice-ui-kit.v2\";\n\nexport interface INiceFilterService<T> {\n getFilterConfig(option: NiceHttpOptions): Observable<FilterConfigurationModel[]>;\n\n filter(params: FilterParametersModel, option: NiceHttpOptions): Observable<FilterResultModel<T>>;\n\n getFile(type: string, parameters: FilterParametersModel): Observable<Blob>;\n\n getPrintableHtml(parameters: FilterParametersModel): Observable<string>;\n}\n\n@Injectable()\nexport class NiceFilterService<T> implements INiceFilterService<T> {\n constructor(@Inject(NiceFilterApi) protected api?: NiceFilterApiDefinition) {}\n\n public filter(params: FilterParametersModel, option: NiceHttpOptions = {}): Observable<FilterResultModel<T>> {\n return this.api?.filter(FilterUtils.parametersToRequest(params), option);\n }\n\n public getFile(type: string, parameters: FilterParametersModel): Observable<Blob> {\n return this.api?.downloadData(type, FilterUtils.parametersToRequest(parameters));\n }\n\n public getPrintableHtml(parameters: FilterParametersModel): Observable<string> {\n return this.api?.getPrintableHtml(FilterUtils.parametersToRequest(parameters));\n }\n\n public getFilterConfig(option: NiceHttpOptions = {}): Observable<FilterConfigurationModel[]> {\n return this.api?.getFilterConfig(option);\n }\n\n public searchFilterValue(\n filterConfig: FilterConfigurationModel,\n value: string,\n options?: HttpOptions\n ): Observable<SelectFilterValue[]> {\n return this.api?.searchFilterValue(filterConfig.id, value, options);\n }\n\n public searchFilterResourceValue(\n filterConfig: FilterConfigurationModel,\n resourceId: number,\n options?: HttpOptions\n ): Observable<SelectFilterValue> {\n return this.api?.searchFilterResourceValue(filterConfig.id, resourceId, options);\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { QueryParamsUtils } from \"../utils/query-params.utils\";\nimport { NiceSavedReportDto } from \"./dto/saved-reports.dto\";\nimport { NiceSavedReports } from \"./models/saved-reports.model\";\n\nexport class NiceSavedReportsApi {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {}\n\n public create(dto: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.http.post<NiceSavedReports>(this.url(), dto);\n }\n\n public getAll(): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url());\n }\n\n public getByTable(table: string): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url(`${table}`));\n }\n\n public getTopByTable(table: string | undefined): Observable<NiceSavedReports[]> {\n return this.http.get<NiceSavedReports[]>(this.url(`${table}/top`));\n }\n\n public hit(id: number): Observable<void> {\n return this.http.put<void>(this.url(`${id}/hit`), null);\n }\n\n public update(id: number, dto: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.http.put<NiceSavedReports>(this.url(`${id}`), dto);\n }\n\n public delete(id: number): Observable<void> {\n return this.http.delete<void>(this.url(`${id}`));\n }\n\n protected url(route?: string, queryParams?: object): string;\n protected url(queryParams: object): string;\n protected url(...args: [string | object, object?]): string {\n const [route, queryParams] = this.transformUrlArgs(args);\n const params = queryParams ? `?${QueryParamsUtils.fromObject(queryParams)}` : \"\";\n if (route) {\n return `${this.filterApiUrl}/${this.path}/${route}${params}`;\n }\n\n return `${this.filterApiUrl}/${this.path}${params}`;\n }\n\n private transformUrlArgs(args: [string | object, object?]): [route: string, queryParams?: object] {\n const [routeOfQueryParams, query] = args;\n if (args.length === 1) {\n if (typeof routeOfQueryParams === \"string\") {\n return [routeOfQueryParams];\n }\n\n return [\"\", routeOfQueryParams];\n }\n\n return [(routeOfQueryParams as string) ?? \"\", query];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceSavedReportDto } from \"../../../api/dto/saved-reports.dto\";\nimport { NiceSavedReports } from \"../../../api/models/saved-reports.model\";\nimport { NiceSavedReportsApi } from \"../../../api/saved-report.api\";\n\n@Injectable()\nexport class NiceSavedReportService {\n constructor(private api: NiceSavedReportsApi) {}\n\n public create(report: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.api.create(report);\n }\n\n public update(id: number, report: NiceSavedReportDto): Observable<NiceSavedReports> {\n return this.api.update(id, report);\n }\n\n public remove(id: number): Observable<void> {\n return this.api.delete(id);\n }\n\n public getByTableName(table: string): Observable<NiceSavedReports[]> {\n return this.api.getByTable(table);\n }\n\n public getTopByTableName(table: string): Observable<NiceSavedReports[]> {\n return this.api.getTopByTable(table);\n }\n\n public hit(id: number): Observable<void> {\n return this.api.hit(id);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const BASE_LIST_ICONS = new InjectionToken(\"base_list_icons\");\nexport const BASE_LIST_LAYOUT = new InjectionToken(\"base_list_layout\");\nexport const DEFAULT_RULES = new InjectionToken(\"default_rules\");\nexport const DEFAULT_PARAMETERS = new InjectionToken(\"default_parameters\");\nexport const LIST_TABLE = new InjectionToken(\"list_table\");\nexport const TABLE_COLUMNS = new InjectionToken(\"table_columns\");\nexport const EXPORTS_SETTINGS = new InjectionToken(\"exports_settings\");\nexport const ENABLE_QUERY_BUILDER = new InjectionToken(\"enable_query_builder\");\nexport const DISABLE_QUERY_PARAMS = new InjectionToken(\"disable_query_param\");\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Store, StoreConfig } from \"@datorama/akita\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { DEFAULT_PARAMETERS, DEFAULT_RULES } from \"../base-list.constant\";\n\nexport interface NiceBaseListState {\n loading?: boolean;\n disabled: boolean;\n mergePageResults: boolean;\n resetPaging: boolean;\n filterConfigLoading: boolean;\n filterResult: FilterResultModel | null;\n filterParameters: FilterParametersModel;\n filterConfig: FilterConfigurationModel[];\n showQueryBuilder: boolean;\n defaultRules: (QueryRuleModel | QueryModel)[];\n queryParams: any;\n}\n\nexport const initialBaseListState: NiceBaseListState = {\n disabled: false,\n mergePageResults: false,\n resetPaging: false,\n filterConfigLoading: false,\n filterResult: null,\n filterParameters: {\n start: 0,\n length: 10,\n order: {},\n search: \"\",\n rules: [],\n data: {}\n },\n filterConfig: [],\n showQueryBuilder: false,\n defaultRules: [],\n queryParams: {}\n};\n\n@Injectable()\n@StoreConfig({ name: \"base-list\", resettable: true })\nexport class NiceBaseListStore<T extends NiceBaseListState = NiceBaseListState> extends Store<T> {\n constructor(\n @Optional() @Inject(DEFAULT_PARAMETERS) parameters: FilterParametersModel,\n @Optional() @Inject(DEFAULT_RULES) defaultRules: QueryModel[]\n ) {\n super({\n ...initialBaseListState,\n filterParameters: {\n ...initialBaseListState.filterParameters,\n ...(parameters ?? {})\n },\n defaultRules\n } as T);\n }\n\n public setFilterConfigLoading(loading: boolean): void {\n this.update({\n filterConfigLoading: loading\n } as T);\n }\n\n public setResult(filterResult: FilterResultModel, reset: boolean = false): void {\n const { mergePageResults } = this.getValue();\n if (mergePageResults && !reset) {\n this.update((state) => ({\n filterResult: {\n page: filterResult.page,\n total: filterResult.total,\n values: state.resetPaging ? filterResult.values : [\n ...(state.filterResult?.values ?? []),\n ...filterResult.values\n ]\n },\n resetPaging: false\n }) as T);\n } else {\n this.update({\n filterResult\n } as T);\n }\n }\n\n public setParameters(filterParameters: FilterParametersModel): void {\n this.update({\n filterParameters\n } as T);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Query } from \"@datorama/akita\";\nimport { combineLatest, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { NiceBaseListState, NiceBaseListStore } from \"./base-list.store\";\n\n@Injectable()\nexport class NiceBaseListQuery<T extends NiceBaseListState = NiceBaseListState> extends Query<T> {\n constructor(protected store: NiceBaseListStore<T>) {\n super(store);\n }\n\n public selectEmpty(): Observable<boolean> {\n return combineLatest([\n this.selectLoading(),\n this.selectData(),\n this.selectFilterParameters()\n ]).pipe(\n map(([loading, data, parameter]) => !data?.length && !loading && !parameter?.search)\n );\n }\n\n public selectSearchResultEmpty(): Observable<boolean> {\n return combineLatest([\n this.selectLoading(),\n this.selectData(),\n this.selectFilterParameters()\n ]).pipe(\n map(([loading, data, parameter]) => !data?.length && !loading && !!parameter?.search)\n );\n }\n\n public selectData(): Observable<any[]> {\n return this.select(s => s.filterResult?.values ?? []) as Observable<any[]>;\n }\n\n public selectFilterParameters(): Observable<FilterParametersModel> {\n return this.select(s => s.filterParameters);\n }\n\n public selectFilterResult(): Observable<FilterResultModel | null> {\n return this.select(s => s.filterResult);\n }\n\n public selectFilterConfig(): Observable<FilterConfigurationModel[]> {\n return this.select(s => s.filterConfig);\n }\n\n public selectFilterConfigLoading(): Observable<boolean> {\n return this.select(s => s.filterConfigLoading);\n }\n\n public selectShowQueryBuilder(): Observable<boolean> {\n return this.select(s => s.showQueryBuilder);\n }\n}\n","import { QueryModel } from \"./query.model\";\n\nexport interface FilterParametersModel {\n start?: number | null;\n length?: number | null;\n order?: OrderModel | null; // This is the primary order (used for the mat table)\n fallbackOrder?: OrderModel | OrderModel[] | null; // These orders are fallback; well be placed after order\n search?: string | null;\n rules?: QueryModel[] | null;\n draw?: number | null;\n data?: object | null;\n groupBy?: string | null;\n}\n\nexport interface FilterPageMode {\n number: number;\n size: number;\n}\n\nexport interface FilterSearchModel {\n value: string;\n}\n\nexport interface OrderModel {\n column?: string | null;\n direction?: \"asc\" | \"desc\" | null;\n nullLast?: boolean | null;\n}\n\nexport interface FilterQueryModel {\n page?: FilterPageMode;\n search?: FilterSearchModel;\n query?: QueryModel;\n order?: OrderModel | OrderModel[];\n data?: object | undefined;\n groupBy?: string;\n}\n\nexport interface FilterResultModel<T = any> {\n values: T[];\n total: number;\n page?: {\n number: number;\n size: number;\n };\n}\n\nexport enum FilterType {\n Text = \"text\",\n Number = \"number\",\n Date = \"date\",\n Select = \"select\",\n Radio = \"radio\",\n Options = \"options\"\n}\n\nexport type OptionsFilterSelectionMode = \"radio\" | \"select\";\n\nexport interface RadioFilterOptionConfiguration {\n key: string;\n name: string;\n}\n\nexport interface FilterOperatorsConfiguration {\n id: string;\n name: string;\n}\n\nexport interface FilterGroupConfiguration {\n key: string;\n name: string;\n}\n\nexport interface FilterBaseConfigurationModel {\n type: FilterType;\n operators: FilterOperatorsConfiguration[];\n group?: FilterGroupConfiguration;\n values?: unknown[];\n lazyLoading?: boolean;\n selectionMode?: OptionsFilterSelectionMode;\n options?: RadioFilterOptionConfiguration[];\n mask?: string;\n}\n\nexport interface FilterConfigurationModel extends FilterBaseConfigurationModel {\n id: string;\n name: string;\n}\n\nexport interface SelectFilterValue {\n id: number;\n name: string;\n}\n","export type Condition = \"and\" | \"or\";\n\nexport enum FilterOperatorTypes {\n Equal = \"equal\",\n NotEqual = \"not_equal\",\n In = \"in\",\n NotIn = \"not_in\",\n Less = \"less\",\n LessOrEqual = \"less_or_equal\",\n Greater = \"greater\",\n GreaterOrEqual = \"greater_or_equal\",\n Between = \"between\",\n NotBetween = \"not_between\",\n IsNull = \"is_null\",\n IsNotNull = \"is_not_null\",\n BeginsWith = \"begins_with\",\n NotBeginsWith = \"not_begins_with\",\n EndsWith = \"ends_with\",\n NotEndsWith = \"not_ends_with\",\n Contains = \"contains\",\n NotContains = \"not_contains\",\n IsEmpty = \"is_empty\",\n IsNotEmpty = \"is_not_empty\",\n None = \"none\"\n}\n\nexport interface CustomOperator {\n name: string;\n where?: any;\n having?: any;\n}\n\nexport type FilterOperators = FilterOperatorTypes | CustomOperator;\n\nexport interface RuleModel {\n operation: FilterOperators;\n value: unknown | unknown[];\n}\n\nexport interface QueryRuleModel extends RuleModel {\n id: string;\n}\n\nexport interface QueryModel {\n condition: Condition;\n rules: (QueryRuleModel | QueryModel)[];\n}\n","import { FilterConfigurationModel, FilterType } from \"../../../models/filter.model\";\nimport { FilterOperators, FilterOperatorTypes, QueryModel, QueryRuleModel } from \"../../../models/query.model\";\n\nexport class QBFilterUtils {\n public static noInputOperators: FilterOperators[] = [\n FilterOperatorTypes.IsEmpty,\n FilterOperatorTypes.IsNotEmpty,\n FilterOperatorTypes.IsNull,\n FilterOperatorTypes.IsNotNull,\n FilterOperatorTypes.None\n ];\n\n public static singleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Equal,\n FilterOperatorTypes.NotEqual,\n FilterOperatorTypes.Less,\n FilterOperatorTypes.LessOrEqual,\n FilterOperatorTypes.Greater,\n FilterOperatorTypes.GreaterOrEqual,\n FilterOperatorTypes.BeginsWith,\n FilterOperatorTypes.NotBeginsWith,\n FilterOperatorTypes.EndsWith,\n FilterOperatorTypes.NotEndsWith,\n FilterOperatorTypes.Contains,\n FilterOperatorTypes.NotContains\n ];\n\n public static doubleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Between,\n FilterOperatorTypes.NotBetween\n ];\n\n public static isSingleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.singleInputOperators.includes(filterOperator);\n }\n\n public static isDoubleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.doubleInputOperators.includes(filterOperator);\n }\n\n public static isNoInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return QBFilterUtils.noInputOperators.includes(filterOperator);\n }\n\n public static createRule(config: FilterConfigurationModel, operator?: FilterOperators): QueryRuleModel {\n const base = {\n id: config.id,\n operation: operator || (config.operators[0].id as FilterOperators)\n };\n switch (config.type) {\n case FilterType.Text:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [\"\", \"\"] : \"\"\n };\n case FilterType.Select:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [null, null] : null\n };\n case FilterType.Date:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()\n };\n case FilterType.Radio:\n case FilterType.Options:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator)\n ? [config.options?.[0].key, config.options?.[0].key]\n : config.options?.[0].key\n };\n case FilterType.Number:\n return {\n ...base,\n value: QBFilterUtils.isDoubleInput(operator) ? [0, 0] : 0\n };\n }\n }\n\n public static createQueryModel(config: FilterConfigurationModel): QueryModel {\n return {\n condition: \"or\",\n rules: [QBFilterUtils.createRule(config)]\n };\n }\n}\n","import { ApplicationRef, Inject, Injectable } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { arrayAdd, arrayRemove, arrayUpsert } from \"@datorama/akita\";\nimport { FileUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { firstValueFrom, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { QueryParamsUtils } from \"../../../utils/query-params.utils\";\nimport { QBFilterUtils } from \"../../query-builder/utils/qb-filter.utils\";\nimport { DISABLE_QUERY_PARAMS } from \"../base-list.constant\";\nimport { NiceFilterService } from \"../providers/base-filter.service\";\nimport { NiceBaseListStore } from \"./base-list.store\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { OrderUtils } from \"../../../utils/order.utils\";\n\n@Injectable()\nexport class NiceBaseListService<Filter extends NiceFilterService<any> = NiceFilterService<any>> {\n public queryParamsLoaded$ = new Subject();\n\n protected downloadFileName = \"data\";\n protected unsubscribeAll$ = new Subject<void>();\n protected loadingData = false;\n\n constructor(\n protected store: NiceBaseListStore,\n @Inject(NiceFilterService)\n protected filterService: Filter,\n @Inject(DISABLE_QUERY_PARAMS)\n protected disableQueryParams: boolean,\n protected activatedRoute: ActivatedRoute,\n protected router: Router,\n protected appRef: ApplicationRef\n ) {\n }\n\n public get filter(): Filter {\n return this.filterService;\n }\n\n public async init(configQueryParams: QueryParams = {}): Promise<void> {\n this.store.setFilterConfigLoading(true);\n try {\n const filterConfig = await firstValueFrom(this.filterService.getFilterConfig({ params: configQueryParams }));\n this.store.update({\n filterConfig\n });\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setFilterConfigLoading(false);\n }\n }\n\n public resetStore(): void {\n this.store.reset();\n }\n\n public resetData(): void {\n this.store.update({\n filterResult: null\n });\n }\n\n public closeSubscriptions(): void {\n this.unsubscribeAll$.next(null);\n this.unsubscribeAll$.complete();\n this.queryParamsLoaded$.complete();\n }\n\n public disableList(): void {\n this.store.update({\n disabled: true\n });\n }\n\n public enableList(): void {\n this.store.update({\n disabled: false\n });\n }\n\n public setLoading(loading: boolean): void {\n this.store.setLoading(loading);\n }\n\n public setMode(mode: \"normal\" | \"infinite-scroll\"): void {\n this.store.update({\n mergePageResults: mode === \"infinite-scroll\"\n });\n }\n\n public setQueryParams(queryParams: any): void {\n this.store.update({ queryParams });\n }\n\n public loadQueryParams(autoLoad: boolean): void {\n if (this.disableQueryParams) {\n return;\n }\n\n this.activatedRoute?.queryParams\n .pipe(\n takeUntil(this.unsubscribeAll$),\n map((params: { [key: string]: any }) => {\n return {\n params: QueryParamsUtils.extractFilterParameters(params)\n };\n })\n )\n .subscribe(({ params }) => {\n if (!params || Object.keys(params).length === 0) {\n params = this.store.getValue().filterParameters;\n }\n const { filterParameters, filterResult } = this.store.getValue();\n if (\n FilterUtils.filterChangeNeedsRefresh(filterParameters, params) ||\n !filterResult\n ) {\n if (autoLoad) {\n this.loadData(params, false);\n } else {\n this.setParameters(params, false, true);\n }\n }\n\n this.queryParamsLoaded$.next(null);\n });\n }\n\n public async resetAndLoadData(parameters?: FilterParametersModel, updateQueryParams: boolean = true): Promise<void> {\n return this.loadData(parameters, updateQueryParams, true);\n }\n\n public async loadData(parameters?: FilterParametersModel, updateQueryParams: boolean = true, reset: boolean = false): Promise<void> {\n const { disabled, queryParams } = this.store.getValue();\n try {\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, disabled ? false : updateQueryParams);\n }\n if (!disabled) {\n this.store.setLoading(true);\n this.loadingData = true;\n const result = await firstValueFrom(this.filterService.filter(this.getParameters(filterParameters), {\n params: queryParams\n }));\n this.store.setResult(result, reset);\n }\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public async searchData(search: string): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n search\n });\n }\n\n public async loadNewPage(start: number, length: number): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n start,\n length\n });\n }\n\n public async loadNextPage(): Promise<void> {\n const { filterParameters } = this.store.getValue();\n await this.loadData({\n ...filterParameters,\n start: filterParameters.start + filterParameters.length\n });\n }\n\n public resetPaging(): void {\n const { filterParameters } = this.store.getValue();\n this.store.setParameters({\n ...filterParameters,\n start: 0\n });\n this.store.update({\n resetPaging: true\n });\n }\n\n public async downloadData(\n type: string,\n parameters?: FilterParametersModel,\n updateQueryParams: boolean = true\n ): Promise<void> {\n try {\n this.store.setLoading(true);\n this.loadingData = true;\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, updateQueryParams);\n }\n const result = await firstValueFrom(this.filterService.getFile(type, this.getParameters(filterParameters)));\n FileUtils.downloadFile(`${this.downloadFileName}.${type}`, result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public async printData(parameters?: FilterParametersModel, updateQueryParams: boolean = true): Promise<void> {\n try {\n this.store.setLoading(true);\n this.loadingData = true;\n const filterParameters = this.mergeParameters(parameters);\n if (filterParameters) {\n this.setParameters(filterParameters, updateQueryParams);\n }\n const result = await firstValueFrom(this.filterService.getPrintableHtml(this.getParameters(filterParameters)));\n FileUtils.openPrintableWindow(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n this.loadingData = false;\n }\n }\n\n public updateRule(id: string, newRule: QueryRuleModel): void {\n const { filterParameters } = this.store.getValue();\n const rules = filterParameters.rules?.[0];\n if (!rules || rules.rules.length === 0) {\n this.updateRules([newRule]);\n return;\n }\n\n const oldRule = rules.rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n let newRules = rules.rules;\n if (oldRule) {\n if (newRule) {\n // Array replace\n newRules = [\n ...rules.rules.slice(0, rules.rules.indexOf(oldRule)),\n newRule,\n ...rules.rules.slice(rules.rules.indexOf(oldRule) + 1, rules.rules.length)\n ];\n } else {\n newRules = rules.rules.filter((r) => (r as QueryRuleModel).id !== id);\n }\n } else {\n newRules = [...newRules, newRule];\n }\n this.updateRules(newRules as QueryRuleModel[]);\n }\n\n public updateDefaultRules(rule: (QueryRuleModel | QueryModel)[]): void {\n this.store.update({\n defaultRules: rule\n });\n }\n\n public async updateGlobalRules(rules: QueryModel[], updateQueryParams = true, reset = true): Promise<void> {\n if (reset) {\n this.resetPaging();\n }\n\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n ...filterParameters,\n rules\n };\n\n await this.loadData(newRules, updateQueryParams);\n }\n\n public addRuleFromConfig(config: FilterConfigurationModel): void {\n this.resetPaging();\n\n const { filterParameters } = this.store.getValue();\n\n const newRules: FilterParametersModel = {\n ...filterParameters,\n rules: [\n ...(filterParameters.rules as QueryModel[]),\n QBFilterUtils.createQueryModel(config)\n ]\n };\n\n this.store.update({\n showQueryBuilder: true\n });\n\n this.loadData(newRules, true);\n }\n\n public updateRules(rules: QueryRuleModel[]): void {\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n order: filterParameters.order,\n rules: [\n {\n condition: \"and\",\n rules\n }\n ]\n };\n\n this.loadData(newRules, true);\n }\n\n public toggleQueryBuilder(): void {\n this.store.update((state) => ({\n showQueryBuilder: !state.showQueryBuilder\n }));\n }\n\n public addListValue(value: any, opts?: AddEntitiesOptions): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, value, opts)\n }\n });\n }\n\n public updateListValue(value: any, key = \"id\"): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayUpsert(filterResult.values, value[key], value)\n }\n });\n }\n\n public removeListValue(value: any, key = \"id\"): void {\n const { filterResult } = this.store.getValue();\n if (!filterResult) {\n return;\n }\n\n this.store.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, value[key])\n }\n });\n }\n\n public getParameters(filterParameters?: FilterParametersModel): FilterParametersModel {\n const { defaultRules } = this.store.getValue();\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n if (defaultRules?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: defaultRules\n });\n }\n return parameters;\n }\n\n protected async updateQueryParams(queryParams: any): Promise<void> {\n if (!this.activatedRoute || this.disableQueryParams) {\n return;\n }\n\n await this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: \"merge\"\n });\n }\n\n private mergeParameters(parameters?: FilterParametersModel): FilterParametersModel {\n const { filterParameters } = this.store.getValue();\n if (!parameters) {\n return filterParameters;\n }\n\n return {\n ...filterParameters,\n ...parameters,\n order: OrderUtils.mergeOrder(filterParameters.order, parameters.order),\n fallbackOrder: OrderUtils.combineOrders(filterParameters.fallbackOrder, parameters.fallbackOrder, { uniqueFromBack: true })\n };\n }\n\n private setParameters(parameters: FilterParametersModel, updateQueryParams: boolean = true, merge: boolean = false): void {\n if (merge) {\n parameters = this.mergeParameters(parameters);\n }\n\n this.store.setParameters(parameters);\n if (updateQueryParams) {\n this.updateQueryParams(QueryParamsUtils.filterParametersToParamsMap(parameters));\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const QUERY_BUILDER_ICONS = new InjectionToken(\"query_builder_icons\");\n","import { Array, Control, Required } from \"@recursyve/ngx-form-generator\";\nimport { Condition, FilterOperators, QueryModel, QueryRuleModel } from \"../../models/query.model\";\nimport { QBFilterUtils } from \"./utils/qb-filter.utils\";\n\nexport class QueryRuleForm {\n @Control()\n @Required()\n public id: string;\n\n @Control()\n @Required()\n public operation: string;\n\n @Control()\n @Required()\n public value: any;\n\n @Control()\n @Required()\n public secondValue: any;\n\n constructor(rule: QueryRuleModel) {\n if (!rule) {\n return;\n }\n\n this.id = rule.id;\n this.operation = rule.operation as string;\n if (QBFilterUtils.isDoubleInput(rule.operation)) {\n this.value = rule.value[0];\n this.secondValue = rule.value[1];\n } else {\n this.value = rule.value;\n }\n }\n\n public transform(): QueryRuleModel {\n return {\n id: this.id,\n operation: this.operation as FilterOperators,\n value: this.secondValue === undefined ? this.value : [this.value, this.secondValue]\n };\n }\n}\n\nexport class QueryForm {\n @Control()\n @Required()\n public condition: string;\n\n @Array(QueryRuleForm)\n public rules: QueryRuleForm[];\n}\n\nexport class QueryBuilderForm {\n @Array(QueryForm)\n public rules: QueryForm[];\n\n constructor(rules: QueryModel[]) {\n if (!rules) {\n rules = [];\n }\n\n this.rules = rules.map(x => ({\n condition: x.condition,\n rules: x.rules.map(rule => new QueryRuleForm(rule as QueryRuleModel))\n }));\n }\n\n public transform(): QueryModel[] {\n return this.rules.map(x => ({\n condition: x.condition as Condition,\n rules: x.rules.map(rule => rule.transform())\n }));\n }\n}\n","import { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\n\nexport abstract class NiceFilterGroupService<T> {\n public abstract getFilterGroupIconClass(group: T): string | NiceBaseListIcons;\n}\n","import { Optional, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\nimport { NiceFilterGroupService } from \"../providers/filter-group.service\";\n\n@Pipe({\n name: \"filterGroupIcon\"\n})\nexport class FilterGroupIconPipe implements PipeTransform {\n constructor(@Optional() private service?: NiceFilterGroupService<any>) {}\n\n public transform(value: string): NiceBaseListIcons {\n if (!this.service) {\n return null;\n }\n\n const icon = this.service.getFilterGroupIconClass(value);\n if (typeof icon === \"string\") {\n return {\n class: icon\n };\n }\n return icon;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ArrayUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterConfigurationModel, FilterGroupConfiguration } from \"../../../models/filter.model\";\n\n@Component({\n selector: \"nice-filter-selection\",\n templateUrl: \"filter-selection.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterSelectionComponent {\n @Input()\n public filterConfigs: FilterConfigurationModel[];\n\n @Input()\n public loading: boolean;\n\n @Output()\n public filterSelected = new EventEmitter<FilterConfigurationModel>();\n\n public get filterGroups(): [FilterGroupConfiguration, FilterConfigurationModel[]][] {\n const groups = ArrayUtils.uniqueObjects(this.filterConfigs.map(x => x.group), x => x?.key);\n\n const result: [FilterGroupConfiguration, FilterConfigurationModel[]][] = [];\n for (const group of groups) {\n if (!group) {\n continue;\n }\n\n result.push([group, this.filterConfigs.filter(x => x.group?.key === group.key)]);\n }\n\n return result.sort(([, a], [, b]) => b.length - a.length);\n }\n\n public selectFilter(filterConfigurationModel: FilterConfigurationModel): void {\n this.filterSelected.emit(filterConfigurationModel);\n }\n}\n","<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item *ngIf=\"group[0].key | filterGroupIcon as icon\">\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"icon.class\" *ngIf=\"icon.class\"></i>\n <mat-icon mat-list-icon class=\"text-accent\" [svgIcon]=\"icon.svgIcon\" *ngIf=\"icon.svgIcon\"></mat-icon>\n <mat-icon mat-list-icon class=\"text-accent\" *ngIf=\"icon.matIcon\">{{ icon.matIcon }}</mat-icon>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output } from \"@angular/core\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\n\n@Directive({ selector: \"[niceQueryBuilderTrigger]\" })\nexport class QueryBuilderTriggerDirective {\n private overlayRef: OverlayRef;\n private filterSelectionRef: ComponentRef<FilterSelectionComponent>;\n\n private _queryBuilderFilters: FilterConfigurationModel[];\n private _queryBuilderFiltersLoading: boolean;\n\n @Input()\n public set queryBuilderFilters(queryBuilderFilters: FilterConfigurationModel[] | null) {\n if (queryBuilderFilters) {\n this._queryBuilderFilters = queryBuilderFilters;\n }\n this.updateFilterSelectionComponent();\n }\n\n @Input()\n public set queryBuilderFiltersLoading(queryBuilderFiltersLoading: boolean) {\n this._queryBuilderFiltersLoading = queryBuilderFiltersLoading;\n this.updateFilterSelectionComponent();\n }\n\n @Output()\n public queryBuilderFilterSelected = new EventEmitter<FilterConfigurationModel>();\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private platform: Platform\n ) {}\n\n @HostListener(\"click\")\n public click(): void {\n const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: this.isMobile() ? \"end\" : \"center\",\n overlayY: \"top\"\n }\n ]);\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n\n const filterSelectionPortal = new ComponentPortal(FilterSelectionComponent);\n this.filterSelectionRef = this.overlayRef.attach(filterSelectionPortal);\n this.updateFilterSelectionComponent();\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n private close(): void {\n this.overlayRef.dispose();\n }\n\n private updateFilterSelectionComponent(): void {\n if (!this.filterSelectionRef) {\n return;\n }\n\n this.filterSelectionRef.instance.filterConfigs = this._queryBuilderFilters;\n this.filterSelectionRef.instance.loading = this._queryBuilderFiltersLoading;\n this.filterSelectionRef.instance.filterSelected.subscribe((filter: FilterConfigurationModel) => {\n this.queryBuilderFilterSelected.emit(filter);\n this.close();\n });\n }\n\n private isMobile(): boolean {\n return this.platform.ANDROID || this.platform.IOS;\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\n\n@Component({ template: `` })\nexport class FilterComponent<T> implements ControlValueAccessor {\n private _value: T;\n\n public get value(): T | undefined {\n return this._value;\n }\n\n protected propagateChanges = (_: T) => {};\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public registerOnChange(fn: (_: T) => void): void {\n this.propagateChanges = fn;\n }\n\n public writeValue(value: T): void {\n this._value = value;\n }\n\n public onValueChange(value: T): void {\n this.propagateChanges(value);\n }\n}\n","import { Component, forwardRef, Input, OnChanges, OnDestroy, OnInit, Optional, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { of, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, switchMap } from \"rxjs/operators\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../models/filter.model\";\nimport { NiceFilterService } from \"../../../../base-list/providers/base-filter.service\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-select-filter\",\n templateUrl: \"select-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ]\n})\nexport class SelectFilterComponent extends FilterComponent<unknown> implements OnInit, OnDestroy, OnChanges {\n @Input()\n public filterConfig: FilterConfigurationModel;\n public values: SelectFilterValue[] = [];\n\n public search$ = new Subject<string>();\n\n private searchSub$: Subscription;\n\n constructor(@Optional() protected filterService: NiceFilterService<any>) {\n super();\n }\n\n public async ngOnInit(): Promise<void> {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n }\n\n this.searchSub$ = this.search$\n .pipe(\n debounceTime(300),\n switchMap(value => {\n if (this.filterConfig.lazyLoading) {\n return this.filterService.searchFilterValue(this.filterConfig, value);\n }\n\n return of(this.filterConfig.values as SelectFilterValue[]);\n })\n )\n .subscribe(values => {\n this.values = values;\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"filterConfig\" in changes) {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n } else {\n this.values = [];\n }\n }\n }\n\n private async searchValue(): Promise<void> {\n if (this.value && !this.values.find(v => v.id === this.value)) {\n const value = await this.filterService\n .searchFilterResourceValue(this.filterConfig, this.value as number)\n .toPromise();\n this.values = [...this.values, value];\n }\n }\n\n public onValueChange(value: unknown): void {\n super.onValueChange(value);\n this.searchValue();\n }\n\n public ngOnDestroy(): void {\n this.searchSub$.unsubscribe();\n }\n\n public writeValue(value: unknown): void {\n super.writeValue(value);\n this.searchValue();\n }\n}\n","<mat-form-field class=\"flex-auto\">\n <nice-typeahead *ngIf=\"!filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n\n <nice-typeahead *ngIf=\"filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n [typeahead]=\"search$\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-text-filter\",\n templateUrl: \"text-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ]\n})\nexport class TextFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" [mask]=\"(filterConfig?.mask) || ''\" [validation]=\"false\" type=\"text\" />\n</mat-form-field>\n","import { Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-number-filter\",\n templateUrl: \"number-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ]\n})\nexport class NumberFilterComponent extends FilterComponent<number> {}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" type=\"number\" />\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-radio-filter\",\n templateUrl: \"radio-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioFilterComponent),\n multi: true\n }\n ]\n})\nexport class RadioFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-radio-group class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n</mat-radio-group>\n","import { Component, forwardRef, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { NiceQueryBuilderIconOptions } from \"../../../models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"../../../query-builder.constant\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-date-filter\",\n templateUrl: \"date-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ]\n})\nexport class DateFilterComponent extends FilterComponent<string> {\n constructor(@Optional() @Inject(QUERY_BUILDER_ICONS) public icons: NiceQueryBuilderIconOptions) {\n super();\n }\n}\n","<mat-form-field class=\"flex-auto\">\n <input matInput [matDatepicker]=\"picker\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon [svgIcon]=\"icons.datePicker.svgIcon\">{{ icons.datePicker.matIcon }}</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { FormGroupName } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { FilterConfigurationModel } from \"../../../models/filter.model\";\nimport { FilterOperators, QueryRuleModel } from \"../../../models/query.model\";\nimport { NiceQueryBuilderIconOptions } from \"../models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"../query-builder.constant\";\nimport { QueryForm, QueryRuleForm } from \"../query-builder.form\";\nimport { QBFilterUtils } from \"../utils/qb-filter.utils\";\n\n@Component({\n selector: \"nice-rule\",\n templateUrl: \"rule.template.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class RuleComponent implements OnInit {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Output()\n public remove = new EventEmitter();\n\n public formGroup: GeneratedFormGroup<QueryForm>;\n public rules: GeneratedFormArray<QueryRuleForm>;\n public filterOperator: FilterOperators;\n\n public get filterConfig(): FilterConfigurationModel {\n const rule = this.rules.at(0).value as QueryRuleModel;\n return this.filterConfigs?.find(f => f.id === rule.id) as FilterConfigurationModel;\n }\n\n public get isSingleInput(): boolean {\n return !this.isDoubleInput && !this.isNoInput;\n }\n\n public get isDoubleInput(): boolean {\n return QBFilterUtils.isDoubleInput(this.filterOperator);\n }\n\n public get isNoInput(): boolean {\n return QBFilterUtils.isNoInput(this.filterOperator);\n }\n\n constructor(\n @Optional() @Inject(QUERY_BUILDER_ICONS)\n public icons: NiceQueryBuilderIconOptions,\n private formGroupName: FormGroupName\n ) {}\n\n public ngOnInit(): void {\n this.formGroup = this.formGroupName.control as GeneratedFormGroup<QueryForm>;\n this.rules = this.formGroup.get(\"rules\") as GeneratedFormArray<QueryRuleForm>;\n this.filterOperator = this.rules.at(0).value.operation;\n }\n\n public onUpdateFilterConfig(config: FilterConfigurationModel): void {\n const rule = QBFilterUtils.createRule(config);\n this.rules.patchValue([rule as QueryRuleForm]);\n this.filterOperator = rule.operation;\n }\n\n public onClickOr(): void {\n this.rules.push(QBFilterUtils.createRule(this.filterConfig, this.filterOperator));\n }\n\n public onUpdateFilterOperator(operator: string): void {\n this.filterOperator = operator as FilterOperators;\n for (const rule of this.rules.controls) {\n rule.get(\"operation\")?.patchValue(this.filterOperator);\n\n if (this.isDoubleInput) {\n rule.get(\"value\")?.patchValue([rule.value.value, rule.value.value]);\n }\n }\n }\n\n public onClickDelete(index: number): void {\n if (this.rules.length > 1) {\n this.rules.removeAt(index);\n } else {\n this.remove.emit();\n }\n }\n}\n","<div class=\"flex flex-row justify-start items-center gap-2.5\">\n <button\n class=\"select-filter\"\n mat-raised-button\n color=\"accent\"\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfigs\"\n (queryBuilderFilterSelected)=\"onUpdateFilterConfig($event)\"\n >\n <div class=\"flex flex-row justify-between items-center\">\n <div class=\"config-name\">{{ filterConfig?.name }}</div>\n <mat-icon [svgIcon]=\"icons.arrowDown.svgIcon\">{{ icons.arrowDown.matIcon }}</mat-icon>\n </div>\n </button>\n <div class=\"flex flex-col md:flex-row flex-auto justify-start items-center gap-2.5\">\n <mat-form-field class=\"rule-form-field\">\n <mat-select\n class=\"rule-operator\"\n [ngModel]=\"filterOperator\"\n (ngModelChange)=\"onUpdateFilterOperator($event)\"\n >\n <mat-option *ngFor=\"let operator of filterConfig?.operators\" [value]=\"operator.id\">\n {{ operator?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"flex flex-col flex-grow flex-shrink md:flex-row flex-wrap\" [formGroup]=\"formGroup\">\n <ng-container formArrayName=\"rules\">\n <div\n class=\"rule-container flex flex-col md:flex-row flex-full justify-start items-center gap-2.5\"\n [class.is-double-input]=\"!!isDoubleInput\"\n [class.is-single-input]=\"!isDoubleInput\"\n [formGroupName]=\"i\"\n *ngFor=\"let rule of rules.controls; let i = index\"\n >\n <ng-container *ngIf=\"isSingleInput\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter *ngSwitchCase=\"'text'\" class=\"flex flex-auto\" formControlName=\"value\" [filterConfig]=\"filterConfig\"></nice-text-filter>\n <nice-number-filter *ngSwitchCase=\"'number'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter *ngSwitchCase=\"'date'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-date-filter>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isDoubleInput\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-text-filter>\n <nice-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-date-filter>\n </ng-container>\n <h3 class=\"aligned-text\">\n {{ \"components.query_builder.rule.conditions.and\" | translate }}\n </h3>\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-text-filter>\n <nice-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-number-filter>\n <nice-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-radio-filter>\n <nice-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-select-filter>\n <nice-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-date-filter>\n </ng-container>\n </ng-container>\n <div class=\"rule-buttons flex flex-row gap-2\">\n <button mat-mini-fab class=\"or-button aligned-button\" (click)=\"onClickOr()\">\n {{ \"components.query_builder.rule.conditions.or\" | translate }}\n </button>\n <button class=\"aligned-button\" mat-icon-button color=\"warn\" (click)=\"onClickDelete(i)\">\n <mat-icon [svgIcon]=\"icons.delete.svgIcon\">{{ icons.delete.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, forwardRef, Inject, Input, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup, ngxFormGeneratorFactory } from \"@recursyve/ngx-form-generator\";\nimport { NiceSavedReports } from \"../../api/models/saved-reports.model\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { QueryModel } from \"../../models/query.model\";\nimport { NiceQueryBuilderIconOptions } from \"./models/icons.model\";\nimport { QUERY_BUILDER_ICONS } from \"./query-builder.constant\";\nimport { QueryBuilderForm, QueryForm } from \"./query-builder.form\";\nimport { QBFilterUtils } from \"./utils/qb-filter.utils\";\n\n@Component({\n selector: \"nice-query-builder\",\n templateUrl: \"./query-builder.template.html\",\n styleUrls: [\"./query-builder.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceQueryBuilderComponent),\n multi: true\n },\n {\n provide: GeneratedFormGroup,\n useFactory: ngxFormGeneratorFactory(QueryBuilderForm)\n }\n ]\n})\nexport class NiceQueryBuilderComponent implements ControlValueAccessor {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Input()\n public currentSavedReport: NiceSavedReports | null;\n\n @Input()\n public loading: boolean;\n\n @Output()\n public close = new EventEmitter();\n\n @Output()\n public createReport = new EventEmitter();\n\n @Output()\n public updateReport = new EventEmitter();\n\n public rules: GeneratedFormArray<QueryForm>;\n\n public get canSave(): boolean {\n return !this.currentSavedReport;\n }\n\n private propagateChanges = (_: QueryModel[]) => {};\n\n constructor(\n @Optional() @Inject(QUERY_BUILDER_ICONS)\n public icons: NiceQueryBuilderIconOptions,\n public formGroup: GeneratedFormGroup<QueryBuilderForm>\n ) {\n this.rules = this.formGroup.get(\"rules\") as GeneratedFormArray<QueryForm>;\n }\n\n public registerOnChange(fn: (rules: QueryModel[]) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(fn: any): void {}\n\n public writeValue(rules: QueryModel[]): void {\n this.rules.clear();\n this.formGroup.patchValue(new QueryBuilderForm(rules));\n }\n\n public onClickAddRule(filterConfigurationModel: FilterConfigurationModel): void {\n this.rules.push(QBFilterUtils.createQueryModel(filterConfigurationModel));\n }\n\n public onClickDeleteRule(id: number): void {\n this.rules.removeAt(id);\n\n if (this.rules.length === 0) {\n this.close.emit();\n this.onClickApply();\n }\n }\n\n public onClickApply(): void {\n this.propagateChanges(this.formGroup.getRawValue().transform());\n }\n\n public onClickSaveReport(): void {\n this.createReport.emit();\n }\n\n public onClickUpdateReport(): void {\n this.updateReport.emit();\n }\n}\n","<div class=\"rules-container flex flex-col\" *ngIf=\"!loading\" [formGroup]=\"formGroup\">\n <ng-container formArrayName=\"rules\">\n <nice-rule\n *ngFor=\"let rule of rules.controls; let i = index\"\n (remove)=\"onClickDeleteRule(i)\"\n [filterConfigs]=\"filterConfigs\"\n [formGroupName]=\"i\"\n ></nice-rule>\n </ng-container>\n <div class=\"flex justify-between\">\n <button\n class=\"add-button add-rule-button\"\n mat-mini-fab\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfigs\"\n (queryBuilderFilterSelected)=\"onClickAddRule($event)\"\n >\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n </button>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <!-- TODO: Support saved reports -->\n <!--<button mat-button color=\"primary\" (click)=\"onClickSaveReport()\" *ngIf=\"canSave\">\n <mat-icon class=\"mr-8\" fxHide.lt-md>save</mat-icon>\n {{ \"components.query_builder.save_report\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"onClickUpdateReport()\" *ngIf=\"!canSave\">\n <mat-icon class=\"mr-8\" fxHide.lt-md>save</mat-icon>\n {{ \"components.query_builder.update_report\" | translate }}\n </button>-->\n <button mat-stroked-button color=\"accent\" (click)=\"onClickApply()\">\n {{ \"components.query_builder.update\" | translate }}\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n</div>\n","import {\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef\n} from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { PageEvent } from \"@angular/material/paginator\";\nimport { Sort } from \"@angular/material/sort\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { ExportBottomSheetComponent, ExportStrategy, NiceMediaWatcherService } from \"@recursyve/nice-ui-kit.v2\";\nimport { combineLatest, Observable, Subject } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, map, switchMap } from \"rxjs/operators\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { FilterConfigurationModel } from \"../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../models/query.model\";\nimport {\n BASE_LIST_ICONS,\n BASE_LIST_LAYOUT,\n ENABLE_QUERY_BUILDER,\n EXPORTS_SETTINGS,\n TABLE_COLUMNS\n} from \"./base-list.constant\";\nimport { NiceBaseListButtonsDirective } from \"./directives/base-list-buttons.directive\";\nimport { NiceBaseListCardsDirective } from \"./directives/base-list-cards.directive\";\nimport { NiceBaseListCustomContentDirective } from \"./directives/base-list-custom-content.directive\";\nimport { NiceBaseListEmptyStateDirective } from \"./directives/base-list-empty-state.directive\";\nimport { NiceBaseListFiltersDirective } from \"./directives/base-list-filters.directive\";\nimport { NiceBaseListTableDirective } from \"./directives/base-list-table.directive\";\nimport { NiceBaseListTitleDirective } from \"./directives/base-list-title.directive\";\nimport { TableColumns } from \"./models/columns.model\";\nimport { ExportSettings } from \"./models/export.model\";\nimport { NiceBaseIconOptions } from \"./models/icons.model\";\nimport { BaseListLayout, LayoutContent } from \"./models/layout.model\";\nimport { NiceFilterService } from \"./providers/base-filter.service\";\nimport { NiceBaseListQuery } from \"./store/base-list.query\";\nimport { NiceBaseListService } from \"./store/base-list.service\";\nimport { NiceBaseListStore } from \"./store/base-list.store\";\nimport { NiceBaseListEmptySearchResultStateDirective } from \"./directives/base-list-empty-search-result-state.directive\";\n\n@Component({\n selector: \"nice-base-list\",\n templateUrl: \"./base-list.template.html\",\n providers: [\n NiceBaseListQuery,\n NiceBaseListService,\n NiceBaseListStore\n ]\n})\nexport class NiceBaseListComponent<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit, OnDestroy, OnChanges {\n @ContentChild(NiceBaseListTitleDirective, { read: TemplateRef })\n public title: TemplateRef<any>;\n\n @ContentChildren(NiceBaseListButtonsDirective)\n public buttons: NiceBaseListButtonsDirective[];\n\n @ContentChild(NiceBaseListTableDirective)\n public table: NiceBaseListTableDirective;\n\n @ContentChild(NiceBaseListCardsDirective, { read: TemplateRef })\n public cards: TemplateRef<any>;\n\n @ContentChild(NiceBaseListCustomContentDirective, { read: TemplateRef })\n public customContent: TemplateRef<any>;\n\n @ContentChild(NiceBaseListFiltersDirective, { read: TemplateRef })\n public filters: TemplateRef<any>;\n\n @ContentChild(NiceBaseListEmptyStateDirective, { read: TemplateRef })\n public emptyState: TemplateRef<any>;\n\n @ContentChild(NiceBaseListEmptySearchResultStateDirective, { read: TemplateRef })\n public emptySearchResultState: TemplateRef<any>;\n\n @Input()\n public mode: \"normal\" | \"infinite-scroll\" = \"normal\";\n\n @Input()\n public layout: \"page\" | \"component\" = \"page\";\n\n @Input()\n public layoutContent = LayoutContent.Table;\n\n @Input()\n public autoChangeLayout = true;\n\n @Input()\n public baseRoute: string;\n\n @Input()\n public routeFn: (item: any) => string | string[];\n\n @Input()\n public navigateFn: (baseRoute: string, item: any) => string;\n\n @Input()\n public autoLoad = true;\n\n @Input()\n public pageTitle: string;\n\n @Input()\n public canExport = true;\n\n @Input()\n public disableRouting = false;\n\n @Input()\n public customExport: ExportStrategy[] = [];\n\n @Input()\n public queryParams: QueryParams = {};\n\n @Input()\n public configQueryParams: QueryParams = {};\n\n @Output()\n public newPage = new EventEmitter<PageEvent>();\n\n public defaultPageSizeOptions = [10, 25, 50, 100];\n public columnNames: string[] = [];\n\n public loading$ = this.query.selectLoading();\n\n public filterResult$ = this.query.selectFilterResult();\n public data$ = this.query.selectData();\n public recordsFiltered$ = this.filterResult$.pipe(map(f => f && f.total));\n public isEmpty$ = this.query.selectEmpty();\n public isSearchResultEmpty$ = this.query.selectSearchResultEmpty();\n\n public showQueryBuilder$ = this.query.selectShowQueryBuilder();\n public filterParameters$ = this.query.selectFilterParameters();\n public index$ = this.filterParameters$.pipe(map(f => Math.floor((f.start ?? 0) / (f.length ?? 1))));\n public length$ = this.filterParameters$.pipe(map(f => f.length));\n public searchQuery$ = this.filterParameters$.pipe(map(f => f.search));\n public filterConfig$ = this.query.selectFilterConfig();\n public sortColumn$ = this.filterParameters$.pipe(map(f => (f.order && f.order.column) ?? \"\"));\n public sortDirection$ = this.filterParameters$.pipe(map(f => f.order && f.order.direction));\n\n public filterConfigLoading$ = this.query.selectFilterConfigLoading();\n public rules$ = this.filterParameters$.pipe(map(parameters => parameters.rules));\n public rulesCount$ = this.filterParameters$.pipe(map(parameters => parameters.rules?.length ?? 0));\n\n public xsActive$ = this.mediaWatcher.xsBreakpointActive$;\n public smActive$ = this.mediaWatcher.smBreakpointActive$;\n public mdActive$ = this.mediaWatcher.mdBreakpointActive$;\n public lgActive$ = this.mediaWatcher.lgBreakpointActive$;\n public xlActive$ = this.mediaWatcher.xlBreakpointActive$;\n public defaultActive$ = combineLatest([this.xsActive$, this.smActive$, this.mdActive$, this.lgActive$, this.xlActive$]).pipe(\n map(([xs, sm, md, lg, xl]) => {\n return xs && !this.listLayout.xs\n || sm && !this.listLayout.sm\n || md && !this.listLayout.md\n || lg && !this.listLayout.lg\n || xl && !this.listLayout.xl;\n })\n );\n\n private searchText$ = new Subject<string>();\n\n constructor(\n @Optional()\n @Inject(ENABLE_QUERY_BUILDER)\n public enableQueryBuilder: boolean,\n @Inject(BASE_LIST_ICONS)\n public icons: NiceBaseIconOptions,\n @Inject(BASE_LIST_LAYOUT)\n public listLayout: BaseListLayout,\n @Inject(TABLE_COLUMNS)\n public columns: TableColumns[],\n @Inject(EXPORTS_SETTINGS)\n private readonly exportsSettings: ExportSettings,\n public readonly query: NiceBaseListQuery,\n public readonly service: NiceBaseListService<Filter>,\n private readonly activatedRoute: ActivatedRoute,\n private readonly bottomSheet: MatBottomSheet,\n private readonly router: Router,\n private readonly mediaWatcher: NiceMediaWatcherService\n ) {\n this.setColumns(columns);\n }\n\n public get prefixButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"prefix\")?.template;\n }\n\n public get suffixButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"suffix\")?.template;\n }\n\n public get searchButtons(): TemplateRef<any> | undefined {\n return this.buttons?.find(x => x.position === \"search\")?.template;\n }\n\n public async ngOnInit(): Promise<void> {\n await this.service.init(this.configQueryParams);\n this.service.loadQueryParams(this.autoLoad);\n\n this.searchText$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((search) => {\n this.service.resetPaging();\n return this.service.searchData(search);\n })\n )\n .subscribe();\n\n this.mediaWatcher.asObservable().subscribe(() => {\n if (!this.autoChangeLayout) {\n return;\n }\n\n if (this.mediaWatcher.isActive(\"lt-md\") && this.layoutContent === LayoutContent.Table) {\n this.layoutContent = LayoutContent.Cards;\n } else {\n this.layoutContent = LayoutContent.Table;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.service.closeSubscriptions();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"mode\" in changes) {\n this.service.setMode(changes.mode.currentValue);\n }\n if (\"queryParams\" in changes) {\n this.service.setQueryParams(changes.queryParams.currentValue);\n }\n }\n\n public setLoading(loading: boolean): void {\n this.service.setLoading(loading);\n }\n\n public clickToggleShowQueryBuilder(): void {\n this.service.toggleQueryBuilder();\n }\n\n public onUpdateRules(rules: QueryModel[]): void {\n this.service.updateGlobalRules(rules);\n }\n\n public onQueryBuilderFilterSelected(filterConfigurationModel: FilterConfigurationModel): void {\n this.service.addRuleFromConfig(filterConfigurationModel);\n }\n\n public onUpdatePage(pageEvent: PageEvent): void {\n this.service.loadNewPage(pageEvent.pageIndex * pageEvent.pageSize, pageEvent.pageSize);\n this.newPage.emit(pageEvent);\n }\n\n public onUpdateSearch(search: string): void {\n this.searchText$.next(search);\n }\n\n public getFilterRule$(id: string): Observable<QueryRuleModel | undefined> {\n return this.filterParameters$.pipe(\n map(f => {\n return (\n f.rules &&\n f.rules[0] &&\n f.rules[0].rules &&\n (f.rules[0].rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel)\n );\n })\n );\n }\n\n public onUpdateSort(sort: Sort): void {\n const nullLast = this.columns.find((x) => x.id === sort.active)?.nullLast;\n if (!sort.active || !sort.direction) {\n sort = {\n active: \"id\",\n direction: \"asc\"\n };\n }\n\n this.service.loadData({\n order: sort.active && sort.direction ? { column: sort.active, direction: sort.direction, nullLast } : null\n });\n }\n\n public updateRule(id: string, newRule: QueryRuleModel): void {\n this.service.updateRule(id, newRule);\n }\n\n public updateRules(rules: QueryRuleModel[]): void {\n this.service.updateRules(rules);\n }\n\n public clickExport(): void {\n const exports = [];\n if (this.exportsSettings.xlsx) {\n exports.push({\n type: \"xlsx\",\n onClickExport: () => this.clickXlsx()\n });\n } else if (this.exportsSettings.csv) {\n exports.push({\n type: \"csv\",\n onClickExport: () => this.clickCsv()\n });\n } else if (this.exportsSettings.pdf) {\n exports.push({\n type: \"pdf\",\n onClickExport: () => this.clickPdf()\n });\n }\n this.bottomSheet.open(ExportBottomSheetComponent, {\n data: {\n exportStrategies: [\n ...exports,\n ...this.customExport\n ]\n }\n });\n }\n\n public navigate(item: any): void {\n if (this.navigateFn) {\n this.navigateFn(this.baseRoute, item);\n } else {\n const route = this.routeFn ? this.routeFn(item) : [(this.baseRoute || \"\") + item?.id];\n this.router.navigate(typeof route === \"string\" ? [route] : route, { relativeTo: this.activatedRoute });\n }\n }\n\n public clickXlsx(): void {\n this.service.downloadData(\"xlsx\");\n }\n\n public clickCsv(): void {\n this.service.downloadData(\"csv\");\n }\n\n public clickPrint(): void {\n this.service.printData();\n }\n\n public clickPdf(): void {\n this.service.downloadData(\"pdf\");\n }\n\n public setColumns(columns: TableColumns[]): void {\n this.columns = columns;\n this.columnNames = columns.map(x => x.id);\n }\n\n public addColumns(columns: TableColumns[], prepend = false): void {\n if (prepend) {\n this.setColumns([\n ...columns,\n ...this.columns\n ]);\n } else {\n this.setColumns([\n ...this.columns,\n ...columns\n ]);\n }\n }\n}\n","<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl, active: xlActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg, active: lgActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md, active: mdActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm, active: smActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs, active: xsActive$ | async }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default, active: defaultActive$ | async }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\" let-active=\"active\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout }, active }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout, active }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\" let-active=\"active\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item, active }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\" let-active=\"active\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon [svgIcon]=\"icons.search.svgIcon\">{{ icons.search.matIcon }}</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n\n <ng-container *ngIf=\"searchButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"searchButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async) && (filterConfig$ | async).length > 0\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [svgIcon]=\"icons.queryBuilder.svgIcon\"\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n {{ icons.queryBuilder.matIcon }}\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [svgIcon]=\"icons.queryBuilder.svgIcon\"\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n {{ icons.queryBuilder.matIcon }}\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"((isEmpty$ | async) && emptyState) || ((isSearchResultEmpty$ | async) && emptySearchResultState); else showData\">\n\n <ng-container *ngIf=\"(isSearchResultEmpty$ | async)\">\n <ng-container *ngTemplateOutlet=\"emptySearchResultState\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isEmpty$ | async\">\n <ng-container *ngTemplateOutlet=\"emptyState\"></ng-container>\n </ng-container>\n\n </ng-container>\n <ng-template #showData>\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item, active }\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: table.stickyHeader\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table.template; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\" let-active=\"active\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data, active }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\" let-active=\"active\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { $implicit: data$ | async, data: data$ | async, total: recordsFiltered$ | async, active }\"></ng-container>\n </div>\n</ng-template>\n","import { Injectable } from \"@angular/core\";\nimport { NativeDateAdapter } from \"@angular/material/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Injectable()\nexport class NiceCustomDateAdapter extends NativeDateAdapter {\n constructor(private translateService: TranslateService) {\n super();\n\n this.setLocale(this.translateService.getDefaultLang());\n\n // @ts-ignore\n this._format = (dtf: any, date: any) => {\n return dtf.format(date);\n };\n }\n\n public format(date: Date, displayFormat: any): string {\n return super.format(date, displayFormat);\n }\n\n public getDate(date: Date): number {\n return date.getUTCDate();\n }\n\n public getMonth(date: Date): number {\n return date.getUTCMonth();\n }\n\n public getYear(date: Date): number {\n return date.getUTCFullYear();\n }\n}\n","import { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\n\nexport interface NiceQueryBuilderIconOptions {\n add?: NiceBaseListIcons;\n refresh?: NiceBaseListIcons;\n delete?: NiceBaseListIcons;\n arrowDown?: NiceBaseListIcons;\n datePicker?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceQueryBuilderIconOptions = {\n add: {\n matIcon: \"add\"\n },\n refresh: {\n matIcon: \"refresh\"\n },\n delete: {\n matIcon: \"delete\"\n },\n arrowDown: {\n matIcon: \"arrow_drop_down\"\n },\n datePicker: {\n matIcon: \"today\"\n }\n};\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { DateAdapter, MatRippleModule } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceLoadingSpinnerModule, NiceTypeaheadModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { NiceCustomDateAdapter } from \"../../utils/date.adapter\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { defaultIcons, NiceQueryBuilderIconOptions } from \"./models/icons.model\";\nimport { FilterGroupIconPipe } from \"./pipes/filter-group-icon.pipe\";\nimport { QueryBuilderTriggerDirective } from \"./query-builder-trigger.directive\";\nimport { NiceQueryBuilderComponent } from \"./query-builder.component\";\nimport { QUERY_BUILDER_ICONS } from \"./query-builder.constant\";\nimport { DateFilterComponent } from \"./rule/components/date/date-filter.component\";\nimport { NumberFilterComponent } from \"./rule/components/number/number-filter.component\";\nimport { RadioFilterComponent } from \"./rule/components/radio/radio-filter.component\";\nimport { SelectFilterComponent } from \"./rule/components/select/select-filter.component\";\nimport { TextFilterComponent } from \"./rule/components/text/text-filter.component\";\nimport { RuleComponent } from \"./rule/rule.component\";\n\nexport interface QueryBuilderGlobalOptions {\n icons?: NiceQueryBuilderIconOptions;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n OverlayModule,\n MatCardModule,\n MatListModule,\n MatButtonModule,\n MatRippleModule,\n MatIconModule,\n MatSelectModule,\n MatInputModule,\n MatDatepickerModule,\n MatRadioModule,\n NiceLoadingSpinnerModule,\n NiceTypeaheadModule,\n ReactiveFormsModule,\n NgxMaskDirective\n ],\n declarations: [\n NiceQueryBuilderComponent,\n QueryBuilderTriggerDirective,\n FilterSelectionComponent,\n RuleComponent,\n SelectFilterComponent,\n TextFilterComponent,\n NumberFilterComponent,\n RadioFilterComponent,\n DateFilterComponent,\n FilterGroupIconPipe\n ],\n providers: [{ provide: DateAdapter, useClass: NiceCustomDateAdapter }],\n exports: [NiceQueryBuilderComponent, QueryBuilderTriggerDirective]\n})\nexport class NiceQueryBuilderModule {\n public static forRoot(options?: QueryBuilderGlobalOptions): ModuleWithProviders<NiceQueryBuilderModule> {\n return {\n ngModule: NiceQueryBuilderModule,\n providers: [\n {\n provide: QUERY_BUILDER_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n }\n ]\n };\n }\n}\n","export type NiceBaseListIcons =\n { matIcon: string; svgIcon?: string; } |\n { matIcon?: string; svgIcon: string; } |\n { class: string, matIcon?: string; svgIcon?: string; };\n\nexport interface NiceBaseIconOptions {\n search?: NiceBaseListIcons;\n queryBuilder?: NiceBaseListIcons;\n close?: NiceBaseListIcons;\n print?: NiceBaseListIcons;\n download?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceBaseIconOptions = {\n search: {\n matIcon: \"search\"\n },\n queryBuilder: {\n matIcon: \"filter_list\"\n },\n close: {\n matIcon: \"close\"\n },\n print: {\n matIcon: \"print\"\n },\n download: {\n matIcon: \"cloud_download\"\n }\n};\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBadgeModule } from \"@angular/material/badge\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatPaginatorModule } from \"@angular/material/paginator\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule, NiceLoadingSpinnerModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { FilterParametersModel } from \"../../models/filter.model\";\nimport { QueryModel } from \"../../models/query.model\";\nimport { NiceFilterGroupService } from \"../query-builder/providers/filter-group.service\";\nimport { NiceQueryBuilderModule } from \"../query-builder/query-builder.module\";\nimport { NiceBaseListComponent } from \"./base-list.component\";\nimport {\n BASE_LIST_ICONS,\n BASE_LIST_LAYOUT,\n DEFAULT_PARAMETERS, DEFAULT_RULES, DISABLE_QUERY_PARAMS,\n ENABLE_QUERY_BUILDER,\n EXPORTS_SETTINGS,\n LIST_TABLE,\n TABLE_COLUMNS\n} from \"./base-list.constant\";\nimport { NiceBaseListDirectiveModule } from \"./directives/base-list-directives.module\";\nimport { TableColumns } from \"./models/columns.model\";\nimport { ExportSettings } from \"./models/export.model\";\nimport { defaultIcons, NiceBaseIconOptions } from \"./models/icons.model\";\nimport { BaseListLayout, defaultLayout } from \"./models/layout.model\";\nimport { NiceFilterService } from \"./providers/base-filter.service\";\nimport { NiceSavedReportService } from \"./providers/base-list-saved-report.service\";\n\nexport interface BaseListOptions<T> {\n table: string;\n columns: TableColumns[];\n filterService: Type<NiceFilterService<T>>;\n defaultRules?: QueryModel[];\n defaultParameters?: FilterParametersModel;\n layout?: BaseListLayout;\n exports?: ExportSettings;\n disableQueryBuilder?: boolean;\n disableQueryParams?: boolean;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\nexport interface BaseListGlobalOptions {\n layout?: BaseListLayout;\n icons?: NiceBaseIconOptions;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\n@NgModule({\n imports: [\n NiceExportBottomSheetModule,\n NiceBaseListDirectiveModule,\n CommonModule,\n FormsModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCardModule,\n MatPaginatorModule,\n TranslateModule,\n NiceLoadingSpinnerModule,\n MatTableModule,\n MatSortModule,\n MatRippleModule,\n MatBottomSheetModule,\n NiceQueryBuilderModule,\n MatBadgeModule\n ],\n declarations: [\n NiceBaseListComponent\n ],\n exports: [\n NiceBaseListComponent,\n NiceBaseListDirectiveModule\n ]\n})\nexport class NiceBaseListModule {\n public static forRoot(options?: BaseListGlobalOptions): ModuleWithProviders<NiceBaseListModule> {\n return {\n ngModule: NiceBaseListModule,\n providers: [\n {\n provide: BASE_LIST_LAYOUT,\n useValue: options?.layout ?? defaultLayout\n },\n {\n provide: BASE_LIST_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n },\n ...(options?.queryBuilder ? [\n {\n provide: ENABLE_QUERY_BUILDER,\n useValue: true\n },\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x)\n };\n }\n\n public static providerFactory<T>(options: BaseListOptions<T>): Provider[] {\n return [\n {\n provide: NiceFilterService,\n useClass: options.filterService\n },\n {\n provide: LIST_TABLE,\n useValue: options.table\n },\n {\n provide: TABLE_COLUMNS,\n useValue: options.columns,\n },\n {\n provide: DEFAULT_RULES,\n useValue: options.defaultRules\n },\n {\n provide: DEFAULT_PARAMETERS,\n useValue: options.defaultParameters\n },\n options.layout ? {\n provide: BASE_LIST_LAYOUT,\n useValue: options.layout\n } : undefined,\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: DISABLE_QUERY_PARAMS,\n useValue: options.disableQueryParams ?? false\n },\n options.disableQueryBuilder !== undefined ? {\n provide: ENABLE_QUERY_BUILDER,\n useValue: !options.disableQueryBuilder\n } : null,\n ...(options.queryBuilder ? [\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x);\n }\n}\n","import { FilterParametersModel } from \"../../../models/filter.model\";\nimport { TableColumns } from \"../../base-list/models/columns.model\";\n\nexport class NiceListState {\n table: string;\n columns: TableColumns[];\n defaultParameters?: FilterParametersModel;\n}\n\nexport interface ListStates {\n [state: string]: NiceListState;\n}\n","import { NiceFilterApiDefinition } from \"../../../api/filter.api\";\nimport { NiceFilterService } from \"../../base-list/providers/base-filter.service\";\n\nexport class NiceMultiStateFilterService extends NiceFilterService<any> {\n protected constructor(protected filters: { [state: string]: NiceFilterApiDefinition }) {\n super();\n }\n\n public switchState(state: string): void {\n this.api = this.filters[state];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { StoreConfig } from \"@datorama/akita\";\nimport { initialBaseListState, NiceBaseListState, NiceBaseListStore } from \"../../base-list/store/base-list.store\";\n\n// tslint:disable-next-line:no-empty-interface\nexport interface NiceMultiStateListState extends NiceBaseListState {}\n\nexport const initialValue: NiceMultiStateListState = {\n ...initialBaseListState\n};\n\n@Injectable()\n@StoreConfig({ name: \"multi-state-list\", resettable: true })\nexport class NiceMultiStateListStore extends NiceBaseListStore<NiceMultiStateListState> {\n constructor() {\n super(null, []);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceBaseListQuery } from \"../../base-list/store/base-list.query\";\nimport { NiceMultiStateListState, NiceMultiStateListStore } from \"./multi-state-list.store\";\n\n@Injectable()\nexport class NiceMultiStateListQuery extends NiceBaseListQuery<NiceMultiStateListState> {\n constructor(protected store: NiceMultiStateListStore) {\n super(store);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const LIST_STATES = new InjectionToken(\"list_states\");\n","import { ApplicationRef, Inject, Injectable } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { DISABLE_QUERY_PARAMS } from \"../../base-list/base-list.constant\";\nimport { TableColumns } from \"../../base-list/models/columns.model\";\nimport { NiceBaseListService } from \"../../base-list/store/base-list.service\";\nimport { initialBaseListState } from \"../../base-list/store/base-list.store\";\nimport { ListStates } from \"../models/list-states.model\";\nimport { LIST_STATES } from \"../multi-state-list.constant\";\nimport { NiceMultiStateFilterService } from \"../providers/multi-state-filter.service\";\nimport { NiceMultiStateListStore } from \"./multi-state-list.store\";\n\n@Injectable()\nexport class NiceMultiStateListService extends NiceBaseListService {\n constructor(\n @Inject(LIST_STATES) private states: ListStates,\n @Inject(DISABLE_QUERY_PARAMS)\n disableQueryParams: boolean,\n store: NiceMultiStateListStore,\n activatedRoute: ActivatedRoute,\n router: Router,\n appRef: ApplicationRef,\n private multiFilterService: NiceMultiStateFilterService\n ) {\n super(store, multiFilterService, disableQueryParams, activatedRoute, router, appRef);\n }\n\n public reset(): void {\n this.store.reset();\n }\n\n public setStateDefaultFilter(state: string, parameters: FilterParametersModel): void {\n this.states[state].defaultParameters = parameters;\n }\n\n public switchState(state: string): TableColumns[] {\n const newState = this.states[state];\n if (!state) {\n return [];\n }\n\n this.multiFilterService.switchState(state);\n this.reset();\n this.init();\n this.loadData(newState.defaultParameters ?? initialBaseListState.filterParameters);\n return newState.columns;\n }\n}\n","import { Component, Inject, Input, Optional } from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { NiceMediaWatcherService } from \"@recursyve/nice-ui-kit.v2\";\nimport { NiceBaseListComponent } from \"../base-list/base-list.component\";\nimport { BASE_LIST_ICONS, BASE_LIST_LAYOUT, ENABLE_QUERY_BUILDER, EXPORTS_SETTINGS } from \"../base-list/base-list.constant\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { NiceBaseIconOptions } from \"../base-list/models/icons.model\";\nimport { BaseListLayout } from \"../base-list/models/layout.model\";\nimport { NiceMultiStateListQuery } from \"./store/multi-state-list.query\";\nimport { NiceMultiStateListService } from \"./store/multi-state-list.service\";\nimport { NiceMultiStateListStore } from \"./store/multi-state-list.store\";\n\n@Component({\n selector: \"nice-multi-state-list\",\n templateUrl: \"../base-list/base-list.template.html\",\n providers: [\n NiceMultiStateListQuery,\n NiceMultiStateListService,\n NiceMultiStateListStore\n ]\n})\nexport class NiceMultiStateListComponent extends NiceBaseListComponent {\n @Input()\n public set state(state: string) {\n this.switchState(state);\n }\n\n constructor(\n @Optional() @Inject(ENABLE_QUERY_BUILDER) enableQueryBuilder: boolean,\n @Inject(BASE_LIST_ICONS) icons: NiceBaseIconOptions,\n @Inject(BASE_LIST_LAYOUT) listLayout: BaseListLayout,\n @Inject(EXPORTS_SETTINGS) exportsSetting: ExportSettings,\n query: NiceMultiStateListQuery,\n activatedRoute: ActivatedRoute,\n bottomSheet: MatBottomSheet,\n router: Router,\n mediaWatcher: NiceMediaWatcherService,\n private multiStateListService: NiceMultiStateListService,\n ) {\n super(\n enableQueryBuilder,\n icons,\n listLayout,\n [],\n exportsSetting,\n query,\n multiStateListService,\n activatedRoute,\n bottomSheet,\n router,\n mediaWatcher\n );\n }\n\n private switchState(state: string): void {\n const columns = this.multiStateListService.switchState(state);\n this.setColumns(columns);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBadgeModule } from \"@angular/material/badge\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatPaginatorModule } from \"@angular/material/paginator\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule, NiceLoadingSpinnerModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { BASE_LIST_LAYOUT, DISABLE_QUERY_PARAMS, ENABLE_QUERY_BUILDER, EXPORTS_SETTINGS } from \"../base-list/base-list.constant\";\nimport { NiceBaseListDirectiveModule } from \"../base-list/directives/base-list-directives.module\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { BaseListLayout } from \"../base-list/models/layout.model\";\nimport { NiceSavedReportService } from \"../base-list/providers/base-list-saved-report.service\";\nimport { NiceFilterGroupService } from \"../query-builder/providers/filter-group.service\";\nimport { NiceQueryBuilderModule } from \"../query-builder/query-builder.module\";\nimport { ListStates } from \"./models/list-states.model\";\nimport { NiceMultiStateListComponent } from \"./multi-state-list.component\";\nimport { LIST_STATES } from \"./multi-state-list.constant\";\nimport { NiceMultiStateFilterService } from \"./providers/multi-state-filter.service\";\n\nexport interface MultiStateListOptions {\n filterService: Type<NiceMultiStateFilterService>;\n states: ListStates;\n layout?: BaseListLayout;\n exports?: ExportSettings;\n disableQueryBuilder?: boolean;\n disableQueryParams?: boolean;\n queryBuilder?: {\n filterGroupService: Type<NiceFilterGroupService<any>>;\n savedReportService?: Type<NiceSavedReportService>;\n };\n}\n\n@NgModule({\n imports: [\n NiceExportBottomSheetModule,\n NiceBaseListDirectiveModule,\n CommonModule,\n FormsModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCardModule,\n MatPaginatorModule,\n TranslateModule,\n NiceLoadingSpinnerModule,\n MatTableModule,\n MatSortModule,\n MatRippleModule,\n MatBottomSheetModule,\n NiceQueryBuilderModule,\n MatBadgeModule\n ],\n declarations: [\n NiceMultiStateListComponent\n ],\n exports: [\n NiceMultiStateListComponent,\n NiceBaseListDirectiveModule\n ]\n})\nexport class NiceMultiStateListModule {\n public static providerFactory<T>(options: MultiStateListOptions): Provider[] {\n return [\n {\n provide: NiceMultiStateFilterService,\n useExisting: options.filterService\n },\n {\n provide: LIST_STATES,\n useValue: options.states\n },\n options.layout ? {\n provide: BASE_LIST_LAYOUT,\n useValue: options.layout\n } : undefined,\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: DISABLE_QUERY_PARAMS,\n useValue: options.disableQueryParams ?? false\n },\n options.disableQueryBuilder !== undefined ? {\n provide: ENABLE_QUERY_BUILDER,\n useValue: !options.disableQueryBuilder\n } : null,\n ...(options.queryBuilder ? [\n {\n provide: NiceFilterGroupService,\n useClass: options.queryBuilder.filterGroupService\n },\n options.queryBuilder.savedReportService ? {\n provide: NiceSavedReportService,\n useClass: options.queryBuilder.savedReportService\n } : undefined\n ] : [])\n ].filter(x => !!x);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const EXPORTS_SETTINGS = new InjectionToken(\"exports_settings\");\nexport const FILTER_VIEW_ICONS = new InjectionToken(\"filter_view_icons\");\nexport const FILTER_VIEW_STATE = new InjectionToken(\"filter_view_state\");\nexport const FILTER_VIEW_STORE = new InjectionToken(\"filter_view_store\");\n","import { Inject, Injectable } from \"@angular/core\";\nimport { arrayAdd, arrayRemove, arrayUpsert, EntityState, EntityStore, HashMap, transaction } from \"@datorama/akita\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { StoreConfigOptions } from \"@datorama/akita/src/lib/storeConfig\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { QueryModel, QueryRuleModel } from \"../../../models/query.model\";\nimport { OrderOptions } from \"../models/order-options.model\";\nimport { FILTER_VIEW_STATE, FILTER_VIEW_STORE } from \"../nice-filter-view.constant\";\n\nexport interface NiceFilterViewState extends EntityState {\n subStates: HashMap<any>;\n mode: \"paginated\" | \"accumulated\";\n autoLoad: boolean;\n disabled: boolean;\n initialLoadCompleted: boolean;\n filterConfigLoading: boolean;\n filterConfig: FilterConfigurationModel[];\n filterResult: FilterResultModel | null;\n filterParameters: FilterParametersModel;\n baseRules: (QueryRuleModel | QueryModel)[];\n queryParams: QueryParams | null;\n orderColumns: OrderOptions | null;\n resetResult: boolean;\n}\n\nexport const initialValue: NiceFilterViewState = {\n subStates: {},\n mode: \"paginated\",\n autoLoad: true,\n disabled: false,\n initialLoadCompleted: false,\n filterConfigLoading: false,\n filterConfig: [],\n filterResult: null,\n filterParameters: {\n start: 0,\n length: 10,\n order: {},\n search: \"\",\n rules: [],\n data: {}\n },\n baseRules: [],\n queryParams: null,\n orderColumns: null,\n resetResult: false\n};\n\n@Injectable()\nexport class NiceFilterViewStore extends EntityStore<NiceFilterViewState> {\n constructor(@Inject(FILTER_VIEW_STATE) state: Partial<NiceFilterViewState>, @Inject(FILTER_VIEW_STORE) store: StoreConfigOptions) {\n super({\n ...initialValue,\n ...state,\n filterParameters: {\n ...initialValue.filterParameters,\n ...(state.filterParameters ?? {})\n }\n }, store);\n }\n\n public setFilterConfigLoading(loading: boolean): void {\n this.update({ filterConfigLoading: loading });\n }\n\n public setParameters(filterParameters: FilterParametersModel): void {\n this.update({ filterParameters });\n }\n\n public patchParameters(filterParameters: FilterParametersModel): void {\n this.update(({ filterParameters: currentFilterParameters }) => ({\n filterParameters: {\n ...currentFilterParameters,\n ...filterParameters\n }\n }));\n }\n\n @transaction()\n public setResult(filterResult: FilterResultModel): void {\n const { mode, resetResult, initialLoadCompleted } = this.getValue();\n if (mode === \"accumulated\") {\n this.update((state) => ({\n filterResult: {\n page: filterResult.page,\n total: filterResult.total,\n values: [\n ...(resetResult ? [] : state.filterResult?.values ?? []),\n ...filterResult.values\n ]\n },\n resetResult: false\n }));\n } else {\n this.update({\n filterResult\n });\n }\n\n if (mode === \"accumulated\" && !resetResult) {\n this.add([...filterResult.values]);\n } else {\n this.set([...filterResult.values]);\n }\n\n if (!initialLoadCompleted) {\n this.update({ initialLoadCompleted: true });\n }\n }\n\n @transaction()\n public addValue(value: any, opts?: AddEntitiesOptions): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, value, opts)\n }\n });\n\n this.add(value, opts);\n }\n\n @transaction()\n public addValues(values: any[], opts?: AddEntitiesOptions): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayAdd(filterResult.values, values, opts)\n }\n });\n\n this.add(values, opts);\n }\n\n @transaction()\n public upsertValue(value: any, key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayUpsert(filterResult.values, value[idKey], value, idKey)\n }\n });\n\n this.upsert(value[idKey], value);\n }\n\n @transaction()\n public upsertValues(values: any[], key?: string): void {\n const idKey = key ?? this.idKey;\n for (const value of values) {\n this.update(({ filterResult }) => ({\n filterResult: {\n ...(filterResult ?? { values: [] }),\n values: arrayUpsert(filterResult?.values ?? [], value[idKey], value, idKey)\n }\n }));\n\n this.upsert(value[idKey], value);\n }\n }\n\n @transaction()\n public removeValue(value: any, key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, value[idKey], idKey)\n }\n });\n\n this.remove(value[idKey]);\n }\n\n @transaction()\n public removeValues(values: any[], key?: string): void {\n const { filterResult } = this.getValue();\n if (!filterResult) {\n return;\n }\n\n const idKey = key ?? this.idKey;\n const ids = values.map(value => value[idKey]);\n this.update({\n filterResult: {\n ...filterResult,\n values: arrayRemove(filterResult.values, ids)\n }\n });\n\n this.remove(ids);\n }\n\n public getParameters(filterParameters?: FilterParametersModel): FilterParametersModel {\n const { baseRules } = this.getValue();\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n if (baseRules?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: baseRules\n });\n }\n return parameters;\n }\n\n public getSubState<T>(name: string): T {\n const { subStates } = this.getValue();\n return subStates[name];\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { QueryEntity } from \"@datorama/akita\";\nimport { Observable } from \"rxjs\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel } from \"../../../models/filter.model\";\nimport { NiceFilterViewState, NiceFilterViewStore } from \"./nice-filter-view.store\";\nimport { QueryParams } from \"../../../api/filter.api\";\n\n@Injectable()\nexport class NiceFilterViewQuery extends QueryEntity<NiceFilterViewState> {\n constructor(protected store: NiceFilterViewStore) {\n super(store);\n }\n\n public selectSubState<T>(name: string): Observable<T> {\n return this.select((state) => state.subStates[name]);\n }\n\n public selectFilterConfigLoading(): Observable<boolean> {\n return this.select(\"filterConfigLoading\");\n }\n\n public selectFilterConfig(): Observable<FilterConfigurationModel[]> {\n return this.select(\"filterConfig\");\n }\n\n public selectFilterParameters(): Observable<FilterParametersModel> {\n return this.select(\"filterParameters\");\n }\n\n public selectFilterResult(): Observable<FilterResultModel | null> {\n return this.select(\"filterResult\");\n }\n\n public selectQueryParams(): Observable<QueryParams> {\n return this.select(\"queryParams\");\n }\n\n public getParameters(): FilterParametersModel {\n return this.store.getParameters(this.store.getValue().filterParameters);\n }\n\n public getSubState<T>(name: string): T {\n return this.store.getSubState(name);\n }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { arrayAdd, arrayRemove, arrayUpsert, transaction } from \"@datorama/akita\";\nimport { AddEntitiesOptions } from \"@datorama/akita/src/lib/addEntities\";\nimport { FileUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { firstValueFrom } from \"rxjs\";\nimport { QueryParams } from \"../../../api/filter.api\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { FilterOperatorTypes, QueryModel, QueryRuleModel, RuleModel } from \"../../../models/query.model\";\nimport { NiceFilterService } from \"../../base-list/providers/base-filter.service\";\nimport { NiceFilterViewStore } from \"./nice-filter-view.store\";\n\n@Injectable()\nexport class NiceFilterViewService<Filter extends NiceFilterService<any> = NiceFilterService<any>> {\n constructor(\n private store: NiceFilterViewStore,\n @Inject(NiceFilterService)\n public readonly filterService: Filter\n ) {}\n\n public reset(): void {\n this.store.reset();\n }\n\n public disable(): void {\n this.store.update({\n disabled: true\n });\n }\n\n public updateSubState<T>(name: string, value: T): void {\n this.store.update((state) => ({\n subStates: {\n ...state.subStates,\n [name]: value\n }\n }));\n }\n\n public enable(): void {\n this.store.update({\n disabled: false\n });\n }\n\n public setAutoLoad(autoLoad: boolean): void {\n this.store.update({ autoLoad });\n }\n\n public setLoading(loading: boolean): void {\n this.store.setLoading(loading);\n }\n\n public setMode(mode: \"paginated\" | \"accumulated\"): void {\n this.store.update({ mode });\n }\n\n public async loadConfig(configQueryParams: QueryParams = {}): Promise<void> {\n this.store.setFilterConfigLoading(true);\n try {\n const filterConfig = await firstValueFrom(this.filterService.getFilterConfig({ params: configQueryParams }));\n this.store.update({\n filterConfig\n });\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setFilterConfigLoading(false);\n }\n }\n\n public async filter(): Promise<void> {\n const { filterParameters, disabled, queryParams } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(\n this.filterService.filter(\n this.store.getParameters(filterParameters),\n { params: queryParams },\n ),\n );\n this.store.setResult(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n public async downloadData(type: string, downloadFileName: string, ids?: number[]): Promise<void> {\n const { filterParameters, disabled } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n const parameters = {\n ...filterParameters,\n rules: filterParameters?.rules ? [...filterParameters.rules] : []\n };\n\n if (ids?.length) {\n parameters.rules.push({\n condition: \"and\",\n rules: [\n {\n id: \"id\",\n operation: FilterOperatorTypes.In,\n value: ids\n }\n ]\n }\n );\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(this.filterService.getFile(type, this.store.getParameters(parameters)));\n FileUtils.downloadFile(`${downloadFileName}.${type}`, result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n public async printData(): Promise<void> {\n const { filterParameters, disabled } = this.store.getValue();\n if (disabled) {\n return;\n }\n\n try {\n this.store.setLoading(true);\n const result = await firstValueFrom(this.filterService.getPrintableHtml(this.store.getParameters(filterParameters)));\n FileUtils.openPrintableWindow(result);\n } catch (e) {\n this.store.setError(e);\n } finally {\n this.store.setLoading(false);\n }\n }\n\n /**\n * @deprecated reload show not be passed, and the caller should instead call `filter()` after calling this function.\n */\n // tslint:disable-next-line:unified-signatures\n public setParameters(filterParameters: FilterParametersModel, reload: boolean): void;\n public setParameters(filterParameters: FilterParametersModel): void;\n public setParameters(filterParameters: FilterParametersModel, reload?: boolean): void {\n this.store.setParameters(filterParameters);\n if (reload) {\n this.filter();\n }\n }\n\n public patchParameters(filterParameters: FilterParametersModel): void {\n this.store.patchParameters(filterParameters);\n }\n\n public resetPaging(): void {\n const { filterParameters } = this.store.getValue();\n this.setParameters({\n ...filterParameters,\n start: 0\n });\n\n this.resetResult(true);\n }\n\n public setQueryParams(queryParams: QueryParams): void {\n this.store.update({ queryParams });\n }\n\n public setBaseRules(rule: (QueryRuleModel | QueryModel)[], reload: boolean): void {\n this.store.update({\n baseRules: rule\n });\n\n if (reload) {\n this.filter();\n }\n }\n\n public addBaseRule(rule: QueryRuleModel, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayAdd(baseRules ?? [], rule)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public upsertBaseRules(rule: QueryRuleModel, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayUpsert(baseRules ?? [], rule.id, rule)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public removeBaseRules(key: string, reload: boolean): void {\n this.store.update(({ baseRules }) => ({\n baseRules: arrayRemove(baseRules ?? [], key)\n }));\n\n if (reload) {\n this.filter();\n }\n }\n\n public setRules(rules: QueryModel | QueryModel[]): void {\n if (!Array.isArray(rules)) {\n rules = [rules];\n }\n\n const { filterParameters } = this.store.getValue();\n const newRules: FilterParametersModel = {\n search: filterParameters.search,\n order: filterParameters.order,\n fallbackOrder: filterParameters.fallbackOrder,\n start: 0,\n length: filterParameters.length,\n data: filterParameters.data,\n rules\n };\n\n this.setParameters(newRules);\n }\n\n public upsertRule(id: string, newRule: RuleModel): void {\n const { filterParameters } = this.store.getValue();\n const currentQuery = filterParameters.rules?.[0];\n const rule: QueryRuleModel = {\n id,\n ...newRule\n };\n const query: QueryModel = { rules: [rule], condition: \"and\" };\n if (!currentQuery || currentQuery.rules.length === 0) {\n this.setRules(query);\n return;\n }\n\n const oldRule = currentQuery.rules.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n let newRules = currentQuery.rules;\n if (oldRule) {\n if (newRule) {\n // Array replace\n newRules = [\n ...currentQuery.rules.slice(0, currentQuery.rules.indexOf(oldRule)),\n rule,\n ...currentQuery.rules.slice(currentQuery.rules.indexOf(oldRule) + 1, currentQuery.rules.length)\n ];\n } else {\n newRules = currentQuery.rules.filter((r) => (r as QueryRuleModel).id !== id);\n }\n } else {\n newRules = [...newRules, rule];\n }\n this.setRules({\n condition: currentQuery.condition,\n rules: newRules\n });\n }\n\n public removeRule(id: string): void {\n const { filterParameters } = this.store.getValue();\n const currentQuery = filterParameters.rules?.[0];\n const oldRule = currentQuery?.rules?.find((r) => (r as QueryRuleModel).id === id) as QueryRuleModel;\n if (!oldRule) {\n return;\n }\n\n const newRules = currentQuery.rules.filter((r) => (r as QueryRuleModel).id !== id);\n this.setRules({\n condition: currentQuery.condition,\n rules: newRules\n });\n }\n\n public addValue(value: any, opts?: AddEntitiesOptions): void {\n this.store.addValue(value, opts);\n }\n\n public addValues(value: any[], opts?: AddEntitiesOptions): void {\n this.store.addValues(value, opts);\n }\n\n public upsertValue(value: any, key?: string): void {\n this.store.upsertValue(value, key);\n }\n\n public upsertValues(values: any[], key?: string): void {\n this.store.upsertValues(values, key);\n }\n\n public removeValue(value: any, key?: string): void {\n this.store.removeValue(value, key);\n }\n\n public removeValues(values: any[], key?: string): void {\n this.store.removeValues(values, key);\n }\n\n @transaction()\n public resetResult(waitForNextFilter: boolean): void {\n if (!waitForNextFilter) {\n this.store.update({\n filterResult: null\n });\n this.store.set([]);\n } else {\n this.store.update({\n resetResult: true\n });\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ADVANCED_FILTER_ICONS = new InjectionToken(\"advanced_filter_icons\");\nexport const ADVANCED_DATE_FILTER_OPTIONS = new InjectionToken(\"advanced_date_filter_options\");\n","import { Optional, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceBaseListIcons } from \"../../base-list/models/icons.model\";\nimport { NiceFilterGroupService } from \"../../query-builder/providers/filter-group.service\";\n\n@Pipe({\n name: \"niceFilterGroupIcon\"\n})\nexport class NiceFilterGroupIconPipe implements PipeTransform {\n constructor(@Optional() private service?: NiceFilterGroupService<any>) {}\n\n public transform(value: string): NiceBaseListIcons {\n if (!this.service) {\n return null;\n }\n\n const icon = this.service.getFilterGroupIconClass(value);\n if (typeof icon === \"string\") {\n return {\n class: icon\n };\n }\n return icon;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation } from \"@angular/core\";\nimport { ArrayUtils } from \"@recursyve/nice-ui-kit.v2\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, FilterGroupConfiguration } from \"../../../../../models/filter.model\";\nimport { NiceFilterViewQuery } from \"../../../store/nice-filter-view.query\";\n\n@Component({\n selector: \"nice-advanced-filter-selection\",\n templateUrl: \"filter-selection.template.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFilterSelectionComponent {\n @Output()\n public filterSelected = new EventEmitter<FilterConfigurationModel>();\n\n public loading$ = this.query.selectFilterConfigLoading();\n public filterGroups$ = this.query.selectFilterConfig().pipe(\n map((config) => {\n const groups = ArrayUtils.uniqueObjects(config.map(x => x.group), x => x?.key);\n\n const result: [FilterGroupConfiguration, FilterConfigurationModel[]][] = [];\n for (const group of groups) {\n if (!group) {\n continue;\n }\n\n result.push([group, config.filter(x => x.group?.key === group.key)]);\n }\n\n return result.sort(([, a], [, b]) => b.length - a.length);\n })\n );\n\n constructor(private query: NiceFilterViewQuery) {}\n\n public selectFilter(filterConfigurationModel: FilterConfigurationModel): void {\n this.filterSelected.emit(filterConfigurationModel);\n }\n\n public trackGroups(index: number, value: [FilterGroupConfiguration, FilterConfigurationModel[]]): any {\n return value[0]?.key ?? index;\n }\n\n public trackFilter(index: number, value: FilterConfigurationModel): any {\n return value.id ?? index;\n }\n}\n","<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading$ | async\">\n <div [class.md:grid-cols-2]=\"filterGroups.length >= 2\" class=\"grid grid-cols-1 gap-4\" *ngIf=\"filterGroups$ | async as filterGroups\">\n <div class=\"flex flex-col\" *ngFor=\"let group of filterGroups; trackBy: trackGroups\">\n <div class=\"filter-group flex items-center gap-4 pb-4\">\n <ng-container *ngIf=\"group[0].key | niceFilterGroupIcon as icon\">\n <i matListItemIcon class=\"group-icon fal\" [ngClass]=\"icon.class\" *ngIf=\"icon.class\"></i>\n <mat-icon matListItemIcon class=\"group-icon\" [svgIcon]=\"icon.svgIcon\" *ngIf=\"icon.svgIcon\"></mat-icon>\n <mat-icon matListItemIcon class=\"group-icon\" *ngIf=\"icon.matIcon\">{{ icon.matIcon }}</mat-icon>\n </ng-container>\n\n <strong class=\"group-name\">{{ group[0].name }}</strong>\n </div>\n\n <div class=\"filter-item\" matRipple *ngFor=\"let filter of group[1]; trackBy: trackFilter\" (click)=\"selectFilter(filter)\">\n {{ filter?.name }}\n </div>\n </div>\n </div>\n</mat-card>\n","import { ConnectedPosition, Overlay, OverlayPositionBuilder, OverlayRef } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Output } from \"@angular/core\";\nimport { FilterConfigurationModel } from \"../../../../models/filter.model\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceAdvancedFilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\n\n@Directive({ selector: \"[niceAdvancedFiltersTrigger]\", exportAs: \"niceAdvancedFiltersTrigger\" })\nexport class AdvancedFiltersTriggerDirective {\n private overlayRef: OverlayRef;\n private filterSelectionRef: ComponentRef<NiceAdvancedFilterSelectionComponent>;\n\n @Input()\n public position: \"topRight\" | \"bottomCenter\" = \"bottomCenter\";\n\n @Output()\n public advancedFilterSelected = new EventEmitter<FilterConfigurationModel>();\n\n private get connectedPosition(): ConnectedPosition {\n if (this.position === \"topRight\") {\n return {\n originX: \"end\",\n originY: \"top\",\n overlayX: \"start\",\n overlayY: \"top\",\n offsetX: 15\n };\n }\n\n return {\n originX: \"center\",\n originY: \"bottom\",\n overlayX: \"center\",\n overlayY: \"top\"\n };\n }\n\n constructor(\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private platform: Platform,\n private injector: Injector\n ) {}\n\n @HostListener(\"click\")\n public click(): void {\n const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n this.connectedPosition\n ]);\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n\n const filterSelectionPortal = new ComponentPortal(NiceAdvancedFilterSelectionComponent, null, this.injector);\n this.filterSelectionRef = this.overlayRef.attach(filterSelectionPortal);\n this.updateFilterSelectionComponent();\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n private close(): void {\n this.overlayRef.dispose();\n }\n\n private updateFilterSelectionComponent(): void {\n if (!this.filterSelectionRef) {\n return;\n }\n\n this.filterSelectionRef.instance.filterSelected.subscribe((filter: FilterConfigurationModel) => {\n this.advancedFilterSelected.emit(filter);\n this.close();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { combineLatestWith, map } from \"rxjs/operators\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { QueryRuleModel } from \"../../../../../models/query.model\";\nimport { NiceFilterViewQuery } from \"../../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../../store/nice-filter-view.service\";\nimport { ADVANCED_FILTER_ICONS } from \"../advanced-filters.constant\";\nimport { NiceAdvancedFilterIconOptions } from \"../models/icons.model\";\n\n@Component({\n selector: \"nice-advanced-filters-button\",\n templateUrl: \"advanced-filters-button.template.html\",\n styleUrls: [\"advanced-filters-button.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFiltersButtonComponent {\n public shouldShowAdvancedFilters$ = this.query.selectSubState<boolean>(\"showAdvancedFilters\");\n public hasParameters$ = this.query.selectFilterParameters().pipe(\n combineLatestWith(this.query.selectFilterConfig()),\n map(([parameter, config]) =>\n !!parameter\n .rules\n ?.filter((rule) => config.some((conf) => conf?.id === (rule.rules[0] as QueryRuleModel)?.id))\n ?.length\n )\n );\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS) public icons: NiceAdvancedFilterIconOptions,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService\n ) {}\n\n public clickToggleShowAdvancedFilters(): void {\n this.service.updateSubState(\"showAdvancedFilters\", !this.query.getSubState(\"showAdvancedFilters\"));\n }\n\n public onSelectedFilter(filter: FilterConfigurationModel): void {\n this.service.updateSubState(\"showAdvancedFilters\", true);\n this.service.updateSubState(\"initialSelectedFilter\", filter);\n }\n}\n","<div class=\"relative\">\n <ng-container *ngIf=\"(hasParameters$ | async) && (shouldShowAdvancedFilters$ | async) !== true\">\n <div class=\"absolute top-1 right-1 w-2 h-2 z-10 rounded bg-accent\"></div>\n\n <button mat-icon-button (click)=\"clickToggleShowAdvancedFilters()\">\n <mat-icon [svgIcon]=\"icons.queryBuilder.svgIcon\">{{ icons.queryBuilder.matIcon }}</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"shouldShowAdvancedFilters$ | async\">\n <button mat-icon-button (click)=\"clickToggleShowAdvancedFilters()\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(hasParameters$ | async) !== true && (shouldShowAdvancedFilters$ | async) !== true\">\n <button mat-icon-button niceAdvancedFiltersTrigger (advancedFilterSelected)=\"onSelectedFilter($event)\">\n <mat-icon [svgIcon]=\"icons.queryBuilder.svgIcon\">{{ icons.queryBuilder.matIcon }}</mat-icon>\n </button>\n </ng-container>\n</div>\n","import { Validators } from \"@angular/forms\";\nimport { AddValidatorIf, Array, Control, Required } from \"@recursyve/ngx-form-generator\";\nimport { Condition, FilterOperators, QueryModel, QueryRuleModel } from \"../../../../models/query.model\";\nimport { QBFilterUtils } from \"../../../query-builder/utils/qb-filter.utils\";\n\nexport class FilterFormValues {\n @Control()\n @Required()\n public value: any;\n\n @Control()\n @AddValidatorIf(({ parent }) => QBFilterUtils.isDoubleInput(parent.operation), Validators.required)\n public secondValue: any;\n}\n\nexport class FilterForm {\n @Control()\n @Required()\n public id: string;\n\n @Control()\n @Required()\n public operation: string;\n\n @Control()\n @Required()\n public condition: Condition;\n\n @Array(FilterFormValues)\n public values: FilterFormValues[];\n\n constructor(value: QueryModel | QueryRuleModel) {\n if (!value) {\n return;\n }\n\n if ((value as QueryRuleModel).id) {\n const rule = value as QueryRuleModel;\n const needsTwoValues = QBFilterUtils.isDoubleInput(rule.operation);\n Object.assign(this, {\n id: rule.id,\n operation: rule.operation as string,\n condition: \"or\",\n values: [\n {\n value: needsTwoValues ? rule.value[0] : rule.value,\n secondValue: needsTwoValues ? rule.value[1] : undefined\n }\n ]\n });\n return;\n }\n\n const query = value as QueryModel;\n const firstRule = query.rules[0] as QueryRuleModel;\n if (!query.rules.every((rule) => (rule as QueryRuleModel).id === firstRule.id)) {\n return;\n }\n\n const firstRuleNeedsTwoValues = QBFilterUtils.isDoubleInput(firstRule.operation);\n Object.assign(this, {\n id: firstRule.id,\n operation: firstRule.operation as string,\n condition: query.condition,\n values: query.rules.map((rule: QueryRuleModel) => ({\n value: firstRuleNeedsTwoValues ? rule.value[0] : rule.value,\n secondValue: firstRuleNeedsTwoValues ? rule.value[1] : undefined\n }))\n });\n return ;\n }\n\n public transform(): QueryModel | QueryRuleModel {\n if (this.values.length === 1) {\n const value = this.values[0];\n return {\n id: this.id,\n operation: this.operation as FilterOperators,\n value: QBFilterUtils.isDoubleInput(this.operation as FilterOperators) ? [value.value, value.secondValue] : value.value\n };\n }\n\n return {\n condition: this.condition,\n rules: this.values.map((value) => ({\n id: this.id,\n operation: this.operation,\n value: QBFilterUtils.isDoubleInput(this.operation as FilterOperators) ? [value.value, value.secondValue] : value.value\n }) as QueryRuleModel)\n };\n }\n}\n\nexport class AdvancedFiltersForm {\n @Array(FilterForm)\n public rules: FilterForm[];\n\n @Control({ defaultValue: \"and\" })\n @Required()\n public condition: Condition;\n\n constructor(query: QueryModel) {\n if (!query) {\n return;\n }\n\n if (!query?.rules) {\n this.rules = [];\n this.condition = \"and\";\n }\n\n this.condition = query.condition;\n this.rules = query.rules.map(x => new FilterForm(x));\n }\n\n public transform(): QueryModel {\n return {\n condition: this.condition,\n rules: this.rules.map((rule) => rule.transform())\n };\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceAsyncTypeaheadProvider, NiceAsyncTypeaheadSearchResult } from \"@recursyve/nice-ui-kit.v2\";\nimport { lastValueFrom } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../models/filter.model\";\nimport { NiceFilterService } from \"../../../../base-list/providers/base-filter.service\";\n\ninterface AdvancedFiltersAsyncTypeaheadOptions {\n filterConfig: FilterConfigurationModel;\n queryParams?: Record<string, any>;\n}\n\n@Injectable()\nexport class AdvancedFiltersAsyncTypeaheadProvider extends NiceAsyncTypeaheadProvider<SelectFilterValue> {\n public resource = \"advancedFilter\";\n\n private pageSize = 20;\n\n constructor(private filterService: NiceFilterService<any>) {\n super();\n }\n\n public getById(id: number, options: AdvancedFiltersAsyncTypeaheadOptions): Promise<SelectFilterValue> {\n return lastValueFrom(\n this.filterService.searchFilterResourceValue(\n options.filterConfig,\n id,\n { params: options?.queryParams }\n )\n );\n }\n\n public async search(\n searchQuery: string,\n page: number,\n options: AdvancedFiltersAsyncTypeaheadOptions\n ): Promise<NiceAsyncTypeaheadSearchResult<SelectFilterValue>> {\n return lastValueFrom(\n this.filterService\n .searchFilterValue(options.filterConfig, searchQuery, {\n params: {\n ...options?.queryParams,\n page,\n pageSize: this.pageSize,\n },\n })\n .pipe(\n map((items) => ({\n items,\n nextPage: items.length === this.pageSize ? page + 1 : null,\n }))\n )\n );\n }\n\n public format(item: SelectFilterValue): string {\n return item.name;\n }\n}\n","import { FilterConfigurationModel, FilterType } from \"../../../../../models/filter.model\";\nimport { FilterOperators, FilterOperatorTypes, QueryRuleModel } from \"../../../../../models/query.model\";\n\nexport class AdvancedFiltersUtils {\n public static noInputOperators: FilterOperators[] = [\n FilterOperatorTypes.IsEmpty,\n FilterOperatorTypes.IsNotEmpty,\n FilterOperatorTypes.IsNull,\n FilterOperatorTypes.IsNotNull,\n FilterOperatorTypes.None\n ];\n\n public static singleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Equal,\n FilterOperatorTypes.NotEqual,\n FilterOperatorTypes.Less,\n FilterOperatorTypes.LessOrEqual,\n FilterOperatorTypes.Greater,\n FilterOperatorTypes.GreaterOrEqual,\n FilterOperatorTypes.BeginsWith,\n FilterOperatorTypes.NotBeginsWith,\n FilterOperatorTypes.EndsWith,\n FilterOperatorTypes.NotEndsWith,\n FilterOperatorTypes.Contains,\n FilterOperatorTypes.NotContains\n ];\n\n public static doubleInputOperators: FilterOperators[] = [\n FilterOperatorTypes.Between,\n FilterOperatorTypes.NotBetween\n ];\n\n public static isSingleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.singleInputOperators.includes(filterOperator);\n }\n\n public static isDoubleInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.doubleInputOperators.includes(filterOperator);\n }\n\n public static isNoInput(filterOperator?: FilterOperators): boolean {\n if (!filterOperator) {\n return false;\n }\n return AdvancedFiltersUtils.noInputOperators.includes(filterOperator);\n }\n\n public static createRule(config: FilterConfigurationModel, operator?: FilterOperators): QueryRuleModel {\n const base = {\n id: config.id,\n operation: operator || (config.operators[0].id as FilterOperators)\n };\n switch (config.type) {\n case FilterType.Text:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [\"\", \"\"] : \"\"\n };\n case FilterType.Number:\n case FilterType.Select:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [null, null] : null\n };\n case FilterType.Date:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator) ? [new Date(), new Date()] : new Date()\n };\n case FilterType.Radio:\n case FilterType.Options:\n return {\n ...base,\n value: AdvancedFiltersUtils.isDoubleInput(operator)\n ? [config.options?.[0].key, config.options?.[0].key]\n : config.options?.[0].key\n };\n }\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\n\n@Component({ template: `` })\nexport class FilterComponent<T> implements ControlValueAccessor {\n private _value: T;\n\n public get value(): T | undefined {\n return this._value;\n }\n\n protected propagateChanges = (_: T) => {};\n\n public registerOnTouched(fn: any): void {\n // NO-OP\n }\n\n public registerOnChange(fn: (_: T) => void): void {\n this.propagateChanges = fn;\n }\n\n public writeValue(value: T): void {\n this._value = value;\n }\n\n public onValueChange(value: T): void {\n this.propagateChanges(value);\n }\n}\n","import { Component, forwardRef, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ADVANCED_DATE_FILTER_OPTIONS, ADVANCED_FILTER_ICONS } from \"../../../advanced-filters.constant\";\nimport { NiceAdvancedFilterIconOptions } from \"../../../models/icons.model\";\nimport { FilterComponent } from \"../filter.component\";\nimport { AdvancedDateFilterOptions } from \"../../../models/advanced-date-filter-options.model\";\nimport { MatDatepicker } from \"@angular/material/datepicker\";\n\n@Component({\n selector: \"nice-advanced-date-filter\",\n templateUrl: \"date-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedDateFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedDateFilterComponent extends FilterComponent<string> {\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS) public icons: NiceAdvancedFilterIconOptions,\n @Optional() @Inject(ADVANCED_DATE_FILTER_OPTIONS) public advancedDateFilterOptions: AdvancedDateFilterOptions\n ) {\n super();\n }\n\n public onInputClick(picker: MatDatepicker<any>): void {\n if (!this.advancedDateFilterOptions.openDatePickerOnClick) {\n return;\n }\n\n picker.open();\n }\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"onInputClick(picker)\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon\n matDatepickerToggleIcon\n [svgIcon]=\"icons.datePicker.svgIcon\"\n >\n {{ icons.datePicker.matIcon }}\n </mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","import { Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-number-filter\",\n templateUrl: \"number-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedNumberFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedNumberFilterComponent extends FilterComponent<number> {}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" type=\"number\" />\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-options-filter\",\n templateUrl: \"options-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedOptionsFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedOptionsFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<div class=\"mb-4\" *ngIf=\"filterConfig.selectionMode === 'radio'\">\n <mat-radio-group class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<ng-container *ngIf=\"filterConfig.selectionMode === 'select'\">\n <mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <mat-select [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-option *ngFor=\"let option of filterConfig.options\" [value]=\"option.key\">\n {{ option?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</ng-container>","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-radio-filter\",\n templateUrl: \"radio-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedRadioFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedRadioFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-radio-group appearance=\"outline\" class=\"flex-auto\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n <mat-radio-button class=\"mx-4\" *ngFor=\"let option of filterConfig.options\" [value]=\"option?.key\">\n {{ option?.name }}\n </mat-radio-button>\n</mat-radio-group>\n","import { Component, forwardRef, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel, SelectFilterValue } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\nimport { NiceFilterViewQuery } from \"../../../../../store/nice-filter-view.query\";\n\n@Component({\n selector: \"nice-advanced-select-filter\",\n templateUrl: \"select-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedSelectFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedSelectFilterComponent extends FilterComponent<unknown> implements OnInit, OnChanges {\n @Input()\n public filterConfig: FilterConfigurationModel;\n\n public values: SelectFilterValue[] = [];\n\n protected queryParams$ = this.filterViewQuery.selectQueryParams();\n\n constructor(private filterViewQuery: NiceFilterViewQuery) {\n super();\n }\n\n public async ngOnInit(): Promise<void> {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"filterConfig\" in changes) {\n if (!this.filterConfig.lazyLoading) {\n this.values = this.filterConfig.values as SelectFilterValue[];\n } else {\n this.values = [];\n }\n }\n }\n\n public onValueChange(value: unknown): void {\n super.onValueChange(value);\n }\n\n public writeValue(value: unknown): void {\n super.writeValue(value);\n }\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <nice-typeahead\n *ngIf=\"!filterConfig.lazyLoading\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [items]=\"values\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></nice-typeahead>\n\n <nice-async-typeahead\n *ngIf=\"filterConfig.lazyLoading\"\n resource=\"advancedFilter\"\n [searchOptions]=\"{ filterConfig, queryParams: queryParams$ | async }\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n ></nice-async-typeahead>\n</mat-form-field>\n","import { Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterConfigurationModel } from \"../../../../../../../models/filter.model\";\nimport { FilterComponent } from \"../filter.component\";\n\n@Component({\n selector: \"nice-advanced-text-filter\",\n templateUrl: \"text-filter.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceAdvancedTextFilterComponent),\n multi: true\n }\n ]\n})\nexport class NiceAdvancedTextFilterComponent extends FilterComponent<string> {\n @Input()\n public filterConfig: FilterConfigurationModel;\n}\n","<mat-form-field appearance=\"outline\" class=\"flex-auto\">\n <input matInput [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" [mask]=\"(filterConfig?.mask) || ''\" [validation]=\"false\" type=\"text\" />\n</mat-form-field>\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation } from \"@angular/core\";\nimport { FormGroupName } from \"@angular/forms\";\nimport { GeneratedFormArray, GeneratedFormGroup } from \"@recursyve/ngx-form-generator\";\nimport { Observable, startWith } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { FilterConfigurationModel } from \"../../../../../models/filter.model\";\nimport { ADVANCED_FILTER_ICONS } from \"../advanced-filters.constant\";\nimport { FilterForm, FilterFormValues } from \"../advanced-filters.form\";\nimport { NiceAdvancedFilterIconOptions } from \"../models/icons.model\";\nimport { AdvancedFiltersUtils } from \"../utils/advanced-filters.utils\";\n\n@Component({\n selector: \"nice-advanced-rule\",\n templateUrl: \"rule.template.html\",\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceAdvancedRuleComponent implements OnInit {\n @Input()\n public filterConfigs: FilterConfigurationModel[] | null;\n\n @Output()\n public remove = new EventEmitter();\n\n public formGroup: GeneratedFormGroup<FilterForm>;\n public valuesFormArray: GeneratedFormArray<FilterFormValues>;\n\n public isSingleInput$: Observable<boolean>;\n public isDoubleInput$: Observable<boolean>;\n\n public get filterConfig(): FilterConfigurationModel {\n const ruleId = this.formGroup.get(\"id\").value as string;\n return this.filterConfigs?.find(f => f.id === ruleId) as FilterConfigurationModel;\n }\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS)\n public icons: NiceAdvancedFilterIconOptions,\n private formGroupName: FormGroupName\n ) {}\n\n public ngOnInit(): void {\n this.formGroup = this.formGroupName.control as GeneratedFormGroup<FilterForm>;\n this.valuesFormArray = this.formGroup.get(\"values\") as GeneratedFormArray<FilterFormValues>;\n\n const operationFormControl = this.formGroup.get(\"operation\");\n this.isSingleInput$ = operationFormControl.valueChanges.pipe(\n startWith(operationFormControl.value),\n map((operation) => !AdvancedFiltersUtils.isDoubleInput(operation) && !AdvancedFiltersUtils.isNoInput(operation))\n );\n this.isDoubleInput$ = operationFormControl.valueChanges.pipe(\n startWith(operationFormControl.value),\n map((operation) => AdvancedFiltersUtils.isDoubleInput(operation))\n );\n }\n\n public onUpdateFilterConfig(config: FilterConfigurationModel): void {\n const rule = AdvancedFiltersUtils.createRule(config);\n this.valuesFormArray.clear({ emitEvent: false });\n this.formGroup.patchValue(new FilterForm(rule));\n }\n\n public addValue(index: number): void {\n this.valuesFormArray.insert(index, {});\n }\n\n public removeValue(i: number): void {\n this.valuesFormArray.removeAt(i);\n if (!this.valuesFormArray.length) {\n this.remove.emit();\n }\n }\n}\n","<div class=\"flex flex-row gap-4\" [formGroup]=\"formGroup\">\n <div class=\"basis-80\">\n <button\n class=\"select-filter w-full\"\n mat-stroked-button\n niceAdvancedFiltersTrigger\n originX=\"start\"\n (advancedFilterSelected)=\"onUpdateFilterConfig($event)\"\n >\n <div class=\"flex flex-row justify-between items-center w-full\">\n <div class=\"config-name\">{{ filterConfig?.name }}</div>\n <mat-icon [svgIcon]=\"icons.arrowDown.svgIcon\">{{ icons.arrowDown.matIcon }}</mat-icon>\n </div>\n </button>\n </div>\n\n <div class=\"flex flex-col basis-44 gap-4\">\n <mat-form-field appearance=\"outline\" class=\"rule-form-field\">\n <mat-select class=\"rule-operator\" formControlName=\"operation\">\n <mat-option *ngFor=\"let operator of filterConfig?.operators\" [value]=\"operator.id\">\n {{ operator?.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container *ngIf=\"valuesFormArray.controls.length > 1\">\n <mat-button-toggle-group class=\"condition-toggle\" formControlName=\"condition\">\n <mat-button-toggle value=\"and\">{{ \"components.nice_advanced_filters.rule.conditions.and\" | translate }}</mat-button-toggle>\n <mat-button-toggle value=\"or\">{{ \"components.nice_advanced_filters.rule.conditions.or\" | translate }}</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"flex flex-col flex-auto gap-4\" formArrayName=\"values\">\n <div class=\"flex items-center gap-4\" [formGroupName]=\"i\" *ngFor=\"let _ of valuesFormArray.controls; let i = index\">\n <div class=\"rule-container flex flex-col md:flex-row flex-auto justify-start items-center gap-2.5\">\n <ng-container *ngIf=\"isSingleInput$ | async\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter *ngSwitchCase=\"'text'\" class=\"flex flex-auto\" formControlName=\"value\" [filterConfig]=\"filterConfig\"></nice-advanced-text-filter>\n <nice-advanced-number-filter *ngSwitchCase=\"'number'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter *ngSwitchCase=\"'date'\" class=\"flex flex-auto\" formControlName=\"value\"></nice-advanced-date-filter>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isDoubleInput$ | async\">\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-text-filter>\n <nice-advanced-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n ></nice-advanced-date-filter>\n </ng-container>\n <h3 class=\"aligned-text\">\n {{ \"components.nice_advanced_filters.rule.conditions.and\" | translate }}\n </h3>\n <ng-container [ngSwitch]=\"filterConfig?.type\">\n <nice-advanced-text-filter\n *ngSwitchCase=\"'text'\"\n [filterConfig]=\"filterConfig\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-text-filter>\n <nice-advanced-number-filter\n *ngSwitchCase=\"'number'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-number-filter>\n <nice-advanced-options-filter\n *ngSwitchCase=\"'options'\"\n class=\"flex flex-auto\"\n formControlName=\"value\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-options-filter>\n <nice-advanced-radio-filter\n *ngSwitchCase=\"'radio'\"\n class=\"flex flex-auto mb-4\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-radio-filter>\n <nice-advanced-select-filter\n *ngSwitchCase=\"'select'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n [filterConfig]=\"filterConfig\"\n ></nice-advanced-select-filter>\n <nice-advanced-date-filter\n *ngSwitchCase=\"'date'\"\n class=\"flex flex-auto\"\n formControlName=\"secondValue\"\n ></nice-advanced-date-filter>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"basis-12\">\n <button class=\"add-button\" mat-icon-button (click)=\"addValue(i + 1)\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n </button>\n </div>\n\n <div class=\"basis-12\">\n <button class=\"remove-button\" mat-icon-button (click)=\"removeValue(i)\">\n <mat-icon [svgIcon]=\"icons.delete.svgIcon\">{{ icons.delete.matIcon }}</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { GeneratedFormArray, GeneratedFormGroup, NgxFormGeneratorProvider } from \"@recursyve/ngx-form-generator\";\nimport { NICE_ASYNC_TYPEAHEAD_PROVIDER } from \"@recursyve/nice-ui-kit.v2\";\nimport { Observable, startWith } from \"rxjs\";\nimport { FilterConfigurationModel } from \"../../../../models/filter.model\";\nimport { QueryRuleModel } from \"../../../../models/query.model\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { ADVANCED_FILTER_ICONS } from \"./advanced-filters.constant\";\nimport { AdvancedFiltersForm, FilterForm, FilterFormValues } from \"./advanced-filters.form\";\nimport { NiceAdvancedFilterIconOptions } from \"./models/icons.model\";\nimport { AdvancedFiltersAsyncTypeaheadProvider } from \"./providers/async-typeahead.provider\";\nimport { AdvancedFiltersUtils } from \"./utils/advanced-filters.utils\";\n\n@Component({\n selector: \"nice-advanced-filters\",\n templateUrl: \"advanced-filters.template.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n NgxFormGeneratorProvider.forFeature([AdvancedFiltersForm]),\n {\n provide: NICE_ASYNC_TYPEAHEAD_PROVIDER,\n useClass: AdvancedFiltersAsyncTypeaheadProvider,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceAdvancedFiltersComponent implements OnInit, OnDestroy {\n public config$ = this.query.selectFilterConfig();\n\n public rules$: Observable<FilterForm[]>;\n public rulesFormArray: GeneratedFormArray<FilterForm>;\n\n constructor(\n @Optional() @Inject(ADVANCED_FILTER_ICONS)\n public icons: NiceAdvancedFilterIconOptions,\n public formGroup: GeneratedFormGroup<AdvancedFiltersForm>,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.rulesFormArray = this.formGroup.get(\"rules\") as GeneratedFormArray<FilterForm>;\n this.rules$ = this.rulesFormArray.valueChanges.pipe(startWith(this.rulesFormArray.value));\n }\n\n public ngOnInit(): void {\n const { filterParameters, subStates } = this.query.getValue();\n\n if (filterParameters.rules?.length) {\n this.formGroup.patchValue(new AdvancedFiltersForm(filterParameters.rules[0]));\n }\n\n if (subStates.initialSelectedFilter) {\n this.onClickAddRule(subStates.initialSelectedFilter);\n return;\n }\n }\n\n public ngOnDestroy(): void {\n this.removeEmptyRules({ reload: false });\n }\n\n public onClickAddRule(filterConfigurationModel: FilterConfigurationModel): void {\n this.rulesFormArray.push(new FilterForm(AdvancedFiltersUtils.createRule(filterConfigurationModel)));\n this.changeDetectorRef.markForCheck();\n }\n\n public onClickDeleteRule(index: number): void {\n this.rulesFormArray.removeAt(index);\n if (!this.rulesFormArray.length) {\n this.service.setRules([]);\n this.service.filter();\n this.onClose();\n }\n }\n\n public onClose(): void {\n this.removeEmptyRules();\n this.service.updateSubState(\"showAdvancedFilters\", false);\n }\n\n public onRefresh(): void {\n this.service.updateSubState(\"initialSelectedFilter\", null);\n this.service.setRules(this.formGroup.getRawValue().transform());\n this.service.resetResult(true);\n this.service.filter();\n }\n\n public removeEmptyRules({ reload }: { reload: boolean } = { reload: true }): void {\n if (this.rulesFormArray.length !== 1) {\n return;\n }\n\n const values = this.rulesFormArray.get([0, \"values\"]).getRawValue() as FilterFormValues[];\n if (values.length !== 1) {\n return;\n }\n\n const value = values[0];\n if (value.value || value.value === false || value.secondValue || value.secondValue === true) {\n return;\n }\n\n this.rulesFormArray.removeAt(0);\n\n const { filterParameters } = this.query.getValue();\n if (!filterParameters.rules.length || !filterParameters.rules[0].rules.length) {\n return;\n }\n\n this.service.setRules([]);\n if (!reload) {\n return;\n }\n\n if ((filterParameters.rules[0].rules[0] as QueryRuleModel).value) {\n this.service.filter();\n }\n }\n}\n","<div class=\"flex flex-col gap-4\" [formGroup]=\"formGroup\">\n <div class=\"advanced-filter-title\">{{ \"components.nice_advanced_filters.title\" | translate }}</div>\n\n <div class=\"flex flex-row gap-12\">\n <div class=\"advanced-filter-condition\">{{ \"components.nice_advanced_filters.conditions.should_match\" | translate }}</div>\n\n <mat-radio-group formControlName=\"condition\">\n <mat-radio-button value=\"and\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.every\" | translate }}</span></mat-radio-button>\n <mat-radio-button value=\"or\"><span class=\"ml-4 mr-8\">{{ \"components.nice_advanced_filters.conditions.some\" | translate }}</span></mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div class=\"flex flex-col gap-4\" formArrayName=\"rules\" *ngFor=\"let _ of rulesFormArray.controls; let i = index\">\n <nice-advanced-rule [filterConfigs]=\"config$ | async\" [formGroupName]=\"i\" (remove)=\"onClickDeleteRule(i)\"></nice-advanced-rule>\n </div>\n\n <div>\n <button class=\"add-condition\" mat-stroked-button color=\"accent\" niceAdvancedFiltersTrigger position=\"topRight\" (advancedFilterSelected)=\"onClickAddRule($event)\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.add.svgIcon\">{{ icons.add.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.add_condition\" | translate }}</div>\n </div>\n </button>\n </div>\n\n <div class=\"flex gap-6 justify-end pt-4\">\n <button class=\"close-button\" mat-button color=\"accent\" (click)=\"onClose()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.close.svgIcon\">{{ icons.close.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.close\" | translate }}</div>\n </div>\n </button>\n\n <button class=\"refresh-button\" mat-flat-button color=\"accent\" (click)=\"onRefresh()\">\n <div class=\"flex items-center gap-4\">\n <mat-icon [svgIcon]=\"icons.refresh.svgIcon\">{{ icons.refresh.matIcon }}</mat-icon>\n\n <div>{{ \"components.nice_advanced_filters.refresh\" | translate }}</div>\n </div>\n </button>\n </div>\n</div>\n","import { NiceBaseListIcons } from \"../../../../base-list/models/icons.model\";\n\nexport interface NiceAdvancedFilterIconOptions {\n add?: NiceBaseListIcons;\n close?: NiceBaseListIcons;\n refresh?: NiceBaseListIcons;\n delete?: NiceBaseListIcons;\n arrowDown?: NiceBaseListIcons;\n datePicker?: NiceBaseListIcons;\n queryBuilder?: NiceBaseListIcons;\n}\n\nexport const defaultIcons: NiceAdvancedFilterIconOptions = {\n add: {\n matIcon: \"add\"\n },\n close: {\n matIcon: \"close\"\n },\n refresh: {\n matIcon: \"refresh\"\n },\n delete: {\n matIcon: \"delete\"\n },\n arrowDown: {\n matIcon: \"arrow_drop_down\"\n },\n datePicker: {\n matIcon: \"today\"\n },\n queryBuilder: {\n matIcon: \"filter_list\"\n }\n};\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatOptionModule, MatRippleModule } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceAsyncTypeaheadModule, NiceLoadingSpinnerModule, NiceTypeaheadModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { NiceFilterGroupService } from \"../../../query-builder/providers/filter-group.service\";\nimport { NiceFilterGroupIconPipe } from \"../../pipes/filter-group-icon.pipe\";\nimport { AdvancedFiltersTriggerDirective } from \"./advanced-filters-trigger.directive\";\nimport { NiceAdvancedFiltersComponent } from \"./advanced-filters.component\";\nimport { ADVANCED_DATE_FILTER_OPTIONS, ADVANCED_FILTER_ICONS } from \"./advanced-filters.constant\";\nimport { NiceAdvancedFiltersButtonComponent } from \"./button/advanced-filters-button.component\";\nimport { NiceAdvancedFilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { defaultIcons, NiceAdvancedFilterIconOptions } from \"./models/icons.model\";\nimport { NiceAdvancedDateFilterComponent } from \"./rule/components/date/date-filter.component\";\nimport { NiceAdvancedNumberFilterComponent } from \"./rule/components/number/number-filter.component\";\nimport { NiceAdvancedOptionsFilterComponent } from \"./rule/components/options/options-filter.component\";\nimport { NiceAdvancedRadioFilterComponent } from \"./rule/components/radio/radio-filter.component\";\nimport { NiceAdvancedSelectFilterComponent } from \"./rule/components/select/select-filter.component\";\nimport { NiceAdvancedTextFilterComponent } from \"./rule/components/text/text-filter.component\";\nimport { NiceAdvancedRuleComponent } from \"./rule/rule.component\";\nimport { AdvancedDateFilterOptions } from \"./models/advanced-date-filter-options.model\";\n\nexport interface NiceAdvancedFiltersOptions {\n icons?: NiceAdvancedFilterIconOptions;\n filterGroupService?: Type<NiceFilterGroupService<any>>;\n advancedDateFilter?: AdvancedDateFilterOptions;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatCardModule,\n MatListModule,\n NiceLoadingSpinnerModule,\n MatIconModule,\n MatRippleModule,\n MatButtonModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n FormsModule,\n MatInputModule,\n MatButtonToggleModule,\n TranslateModule,\n MatDatepickerModule,\n NiceTypeaheadModule,\n NiceAsyncTypeaheadModule,\n NgxMaskDirective\n ],\n declarations: [\n NiceAdvancedFiltersComponent,\n NiceAdvancedFiltersButtonComponent,\n NiceAdvancedFilterSelectionComponent,\n\n NiceAdvancedRuleComponent,\n NiceAdvancedDateFilterComponent,\n NiceAdvancedNumberFilterComponent,\n NiceAdvancedOptionsFilterComponent,\n NiceAdvancedRadioFilterComponent,\n NiceAdvancedSelectFilterComponent,\n NiceAdvancedTextFilterComponent,\n\n AdvancedFiltersTriggerDirective,\n\n NiceFilterGroupIconPipe\n ],\n providers: [],\n exports: [NiceAdvancedFiltersComponent, NiceAdvancedRuleComponent, NiceAdvancedFiltersButtonComponent, AdvancedFiltersTriggerDirective],\n})\nexport class NiceAdvancedFiltersModule {\n public static forRoot(options?: NiceAdvancedFiltersOptions): ModuleWithProviders<NiceAdvancedFiltersModule> {\n return {\n ngModule: NiceAdvancedFiltersModule,\n providers: [\n {\n provide: ADVANCED_FILTER_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n },\n {\n provide: ADVANCED_DATE_FILTER_OPTIONS,\n useValue: { ...(options?.advancedDateFilter ?? {}) }\n },\n options?.filterGroupService ? {\n provide: NiceFilterGroupService,\n useClass: options.filterGroupService\n } : undefined\n ].filter((provider) => !!provider)\n };\n }\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceFilterData]\" })\nexport class NiceFilterDataDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Component, ContentChild, TemplateRef, ViewEncapsulation } from \"@angular/core\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterDataDirective } from \"../common/data.directive\";\n\n@Component({\n selector: \"nice-filter-custom-data-view, div[nice-filter-custom-data-view]\",\n templateUrl: \"custom-data-view.template.html\",\n styleUrls: [\"custom-data-view.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterCustomDataViewComponent {\n @ContentChild(NiceFilterDataDirective, { read: TemplateRef })\n public content: TemplateRef<any>;\n\n public data$ = this.query.selectAll();\n\n constructor(private query: NiceFilterViewQuery) {}\n}\n","<ng-container *ngIf=\"content\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data$ | async }\"></ng-container>\n</ng-container>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER = new InjectionToken(\"nice_preload_selected_entities_provider\");\n","import { EntityStore, QueryEntity } from \"@datorama/akita\";\nimport { Observable } from \"rxjs\";\nimport { NiceSelectableListState } from \"./selectable-list.state\";\n\nexport class NiceSelectableListStateQuery<T> extends QueryEntity<NiceSelectableListState<T>> {\n constructor(store: EntityStore<NiceSelectableListState<T>>) {\n super(store);\n }\n\n public selectAllSelected(): Observable<boolean> {\n return this.select(\"allSelected\");\n }\n\n public selectActiveViewIndex(): Observable<number> {\n return this.select(({ ids, active }) => {\n const index = ids.indexOf(active);\n return index + 1;\n });\n }\n\n public selectFirstActive(): Observable<boolean> {\n return this.select(({ ids, active }) => {\n if (!ids.length) {\n return true;\n }\n\n return ids[0] === active;\n });\n }\n\n public selectLastActive(): Observable<boolean> {\n return this.select(({ ids, active }) => {\n if (!ids.length) {\n return true;\n }\n\n return ids[ids.length - 1] === active;\n });\n }\n}\n","import { Router } from \"@angular/router\";\nimport { arrayAdd, arrayRemove, EntityStore } from \"@datorama/akita\";\nimport { NiceSelectableListLoadAllEntitiesOptions } from \"../model/load-all-entities-options.model\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NicePreloadSelectedEntitiesProvider } from \"../providers/preload-selected-entities.provider\";\nimport { NiceSelectableListState, SelectAllBehaviour } from \"./selectable-list.state\";\n\nexport class NiceSelectableListStateService<T, ID = any> {\n private _options?: NiceSelectableListOptions;\n\n public get idKey(): string {\n return this._options?.idKey ?? \"id\";\n }\n\n public get preloadedWindow(): number {\n return this._options?.preloadWindow ?? 2;\n }\n\n public get queryParamsDisabled(): boolean {\n return this._options?.disableQueryParams ?? false;\n }\n\n public get selectAllBehaviour(): SelectAllBehaviour | null {\n return this._options?.selectAllBehaviour ?? null;\n }\n\n constructor(\n private store: EntityStore<NiceSelectableListState<any>>,\n private router: Router,\n private preloadService?: NicePreloadSelectedEntitiesProvider<T>,\n options?: NiceSelectableListOptions\n ) {\n this._options = options;\n }\n\n public setOptions(options?: NiceSelectableListOptions): void {\n this._options = options;\n }\n\n public setActive(entity: T): void {\n this.store.setActive(entity[this.idKey]);\n }\n\n public getIndex(identifier: number): number {\n const { ids } = this.store.getValue();\n const index = ids.indexOf(identifier);\n return index + 1;\n }\n\n public async selectAll(options?: NiceSelectableListLoadAllEntitiesOptions): Promise<void> {\n if (!this.preloadService) {\n return this.store.update({\n allSelected: true\n });\n }\n\n const ids = await this.preloadService.loadAllEntities(options);\n this.store.set(ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n })));\n\n return this.store.update({\n allSelected: true\n });\n }\n\n public async select(id: ID): Promise<void> {\n this.store.update((state) => ({\n unselectedEntity: arrayRemove(state.unselectedEntity, id as any)\n }));\n\n this.store.add({\n [this.idKey]: id,\n loaded: false\n });\n\n if (this.preloadService) {\n const entity = await this.preloadService.loadEntityById(id as any);\n this.store.upsert(id as any, {\n ...entity,\n loaded: true\n });\n }\n }\n\n public async selectMany(ids: ID[], active: ID): Promise<void> {\n this.store.add(\n ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n }))\n );\n\n if (active) {\n this.store.setActive(active);\n await this.loadEntities(true);\n }\n }\n\n public async selectEntity(entity: T): Promise<void> {\n this.store.update((state) => ({\n unselectedEntity: arrayRemove(state.unselectedEntity, entity[this.idKey])\n }));\n\n this.store.upsert(entity[this.idKey], { ...entity, loaded: true });\n\n if (this.preloadService) {\n const preloadedEntity = await this.preloadService.reloadEntity(entity);\n this.store.upsert(preloadedEntity[this.idKey], { ...preloadedEntity, loaded: true });\n }\n }\n\n public async selectManyEntities(entities: T[]): Promise<void> {\n if (!this.preloadService) {\n return this.store.upsertMany(entities.map((entity) => ({ ...entity, loaded: true })));\n }\n\n const preloadedEntities = await this.preloadService.reloadEntities(entities);\n this.store.upsertMany(preloadedEntities.map((preloadedEntity) => ({ ...preloadedEntity, loaded: true })));\n }\n\n public unselectAll(): void {\n this.store.set([]);\n\n return this.store.update({\n allSelected: false,\n unselectedEntity: []\n });\n }\n\n public unselect(id: ID): void {\n this.store.update((state) => ({\n unselectedEntity: arrayAdd(state.unselectedEntity, id)\n }));\n\n this.store.remove(id as any);\n }\n\n public unselectEntity(entity: T): void {\n this.store.update((state) => ({\n unselectedEntity: arrayAdd(state.unselectedEntity, entity[this.idKey])\n }));\n\n this.store.remove(entity[this.idKey]);\n }\n\n public unselectManyEntities(entities: T[]): void {\n this.store.remove(entities.map((entity) => entity[this.idKey]));\n }\n\n public updateEntity(entity: T): void {\n this.store.update(entity[this.idKey], entity);\n }\n\n public async setEntities(ids: ID[], activeId: ID): Promise<void> {\n this.store.update({\n unselectedEntity: [],\n allSelected: false\n });\n\n this.store.set(ids.map((id) => ({\n [this.idKey]: id,\n loaded: false\n })));\n\n if (activeId) {\n this.store.setActive(activeId);\n }\n\n await this.loadEntities(true);\n }\n\n public async next(): Promise<void> {\n const { ids, active } = this.store.getValue();\n const index = ids.indexOf(active);\n await this.loadActiveEntity(ids[index + 1], 1);\n }\n\n public async previous(): Promise<void> {\n const { ids, active } = this.store.getValue();\n const index = ids.indexOf(active);\n await this.loadActiveEntity(ids[index - 1], -1);\n }\n\n public async first(): Promise<void> {\n const { ids } = this.store.getValue();\n await this.loadActiveEntity(ids[0], 1);\n }\n\n public async last(): Promise<void> {\n const { ids } = this.store.getValue();\n await this.loadActiveEntity(ids[ids.length - 1], -1);\n }\n\n public async removeActive(): Promise<void> {\n const { active, ids } = this.store.getValue();\n const index = ids.indexOf(active);\n\n this.store.remove(active);\n\n if (index === (ids.length - 1)) {\n await this.loadActiveEntity(ids[index - 1], -1);\n } else {\n await this.loadActiveEntity(ids[index + 1], 1);\n }\n }\n\n public async loadActiveEntity(id: number, direction: number) {\n try {\n this.store.setActive(id);\n\n const { entities } = this.store.getValue();\n if (!entities[+id + direction * this.preloadedWindow]?.loaded) {\n await this.loadEntities(false);\n }\n } catch (e) {\n this.store.setError(e);\n }\n }\n\n public async loadEntities(loadExtremity: boolean): Promise<void> {\n if (!this.preloadService) {\n return;\n }\n\n const toLoad = this.getListIdToLoad(loadExtremity);\n if (!toLoad.length) {\n return;\n }\n\n const entities = await this.preloadService.loadEntitiesById(toLoad);\n this.store.upsertMany(entities.map((entity) => ({ ...entity, loaded: true })));\n }\n\n public getListIdToLoad(loadExtremity: boolean): number[] {\n const { active, ids, entities } = this.store.getValue();\n const from = ids.indexOf(active) - this.preloadedWindow > 0 ? ids.indexOf(active) - this.preloadedWindow : 0;\n const to = ids.indexOf(active) + this.preloadedWindow < ids.length - 1\n ? ids.indexOf(active) + this.preloadedWindow\n : ids.length - 1;\n\n const toLoad = [];\n if (loadExtremity) {\n if (ids.length <= 2) {\n return ids;\n }\n\n toLoad.push(ids[0], ids[ids.length - 1]);\n }\n\n for (let i = from; i <= to; i++) {\n if (ids[i] === null || ids[0] === undefined) {\n continue;\n }\n\n if (!toLoad.includes(ids[i]) && !entities[ids[i]]?.loaded) {\n toLoad.push(ids[i]);\n }\n }\n\n return toLoad;\n }\n\n public generateQueryParams(): { selection: number[] | null; selected: number | null; } {\n const { ids, active } = this.store.getValue();\n return {\n selection: ids.length ? ids : null,\n selected: active ?? null\n };\n }\n\n public setQueryParams(): void {\n if (!this.queryParamsDisabled) {\n this.router.navigate([], {\n queryParams: this.generateQueryParams(),\n queryParamsHandling: \"merge\"\n });\n }\n }\n}\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { EntityStore } from \"@datorama/akita\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NicePreloadSelectedEntitiesProvider } from \"../providers/preload-selected-entities.provider\";\nimport { NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER } from \"../selectable-list.constant\";\nimport { NiceSelectableListStateQuery } from \"./selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./selectable-list-state.service\";\nimport { NiceSelectableListState } from \"./selectable-list.state\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NiceSelectableListService {\n private stores = new Map<string, { store: EntityStore<NiceSelectableListState<any>>, query: NiceSelectableListStateQuery<any> }>();\n private services = new Map<string, NiceSelectableListStateService<any>>();\n\n constructor(\n @Optional() @Inject(NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER)\n private providers: NicePreloadSelectedEntitiesProvider<any>[],\n private router: Router\n ) {}\n\n public createState(name: string, options?: NiceSelectableListOptions) {\n const store = new EntityStore<NiceSelectableListState<any>>(\n { allSelected: false, unselectedEntity: [] },\n { name, idKey: options?.idKey }\n );\n const query = new NiceSelectableListStateQuery(store);\n\n const state = { store, query };\n this.stores.set(name, state);\n\n return state;\n }\n\n public getState(name: string) {\n return this.stores.get(name);\n }\n\n public withState<T, ID = any>(stateName: string, options?: NiceSelectableListOptions): NiceSelectableListStateService<T, ID> {\n const provider = this.providers?.find((p) => p.state === stateName);\n const service = this.services.get(stateName);\n if (service) {\n if (options) {\n service.setOptions(options);\n }\n\n return service;\n }\n\n const newState = this.createState(stateName, options);\n const newService = new NiceSelectableListStateService<T>(newState.store, this.router, provider, options);\n this.services.set(stateName, newService);\n return newService;\n }\n\n public query<T>(stateName: string): NiceSelectableListStateQuery<T> {\n const state = this.getState(stateName);\n if (!state) {\n throw new Error(\"No state found\");\n }\n\n return state.query;\n }\n}\n","import { Component, Inject, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatBottomSheet } from \"@angular/material/bottom-sheet\";\nimport { ExportBottomSheetComponent, ExportStrategy } from \"@recursyve/nice-ui-kit.v2\";\nimport { ExportSettings } from \"../../../base-list/models/export.model\";\nimport { NiceBaseIconOptions } from \"../../../base-list/models/icons.model\";\nimport { EXPORTS_SETTINGS, FILTER_VIEW_ICONS } from \"../../nice-filter-view.constant\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceSelectableListService } from \"../../../../directive/selectable-list/store/selectable-list.service\";\n\n@Component({\n selector: \"nice-filter-export-buttons, div[nice-filter-export-buttons]\",\n templateUrl: \"export-buttons.template.html\",\n styleUrls: [\"export-buttons.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterExportButtonsComponent {\n @Input()\n public customExport: ExportStrategy[] = [];\n\n @Input()\n public downloadFileName = \"data\";\n\n @Input()\n public canPrint = true;\n\n public loading$ = this.query.selectLoading();\n\n constructor(\n @Inject(FILTER_VIEW_ICONS) public icons: NiceBaseIconOptions,\n @Inject(EXPORTS_SETTINGS) private readonly exportsSettings: ExportSettings,\n private niceFilterViewQuery: NiceFilterViewQuery,\n private selectableListService: NiceSelectableListService,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private readonly bottomSheet: MatBottomSheet\n ) {\n }\n\n public clickExport(): void {\n const exports = [];\n\n const subState = this.niceFilterViewQuery.getSubState<{ stateName: string }>(\"selectable\");\n\n let selected: number[] = [];\n\n if (subState?.stateName) {\n selected = this.selectableListService.query(subState.stateName).getAll().map((entity) => entity.id);\n }\n\n if (this.exportsSettings.xlsx) {\n exports.push({\n type: \"xlsx\",\n onClickExport: () => this.clickXlsx()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_xlsx\",\n onClickExport: () => this.clickXlsx(selected)\n });\n }\n }\n if (this.exportsSettings.csv) {\n exports.push({\n type: \"csv\",\n onClickExport: () => this.clickCsv()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_csv\",\n onClickExport: () => this.clickCsv(selected)\n });\n }\n }\n if (this.exportsSettings.pdf) {\n exports.push({\n type: \"pdf\",\n onClickExport: () => this.clickPdf()\n });\n\n if (selected.length) {\n exports.push({\n type: \"selected_pdf\",\n onClickExport: () => this.clickPdf(selected)\n });\n }\n }\n\n this.bottomSheet.open(ExportBottomSheetComponent, {\n data: {\n exportStrategies: [\n ...exports,\n ...this.customExport\n ]\n }\n });\n }\n\n public clickXlsx(ids?: number []): void {\n this.service.downloadData(\"xlsx\", this.downloadFileName, ids);\n }\n\n public clickCsv(ids?: number []): void {\n this.service.downloadData(\"csv\", this.downloadFileName, ids);\n }\n\n public clickPrint(): void {\n this.service.printData();\n }\n\n public clickPdf(ids?: number []): void {\n this.service.downloadData(\"pdf\", this.downloadFileName, ids);\n }\n}\n","<button\n *ngIf=\"canPrint\"\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.print.svgIcon\">{{ icons.print.matIcon }}</mat-icon>\n</button>\n\n<button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"export-button\"\n mat-mini-fab\n>\n <mat-icon [svgIcon]=\"icons.download.svgIcon\">{{ icons.download.matIcon }}</mat-icon>\n</button>\n","import { Directive, HostListener, Input } from \"@angular/core\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\n\n@Directive({selector: \"[niceFilterExport]\"})\nexport class NiceFilterExportDirective {\n @Input()\n public type: string;\n\n @Input()\n public downloadFileName = \"data\";\n\n constructor(private service: NiceFilterViewService) {}\n\n @HostListener(\"click\")\n public onClick(): void {\n this.service.downloadData(this.type, this.downloadFileName);\n }\n}\n","import { Component, ContentChild, OnInit, TemplateRef, ViewEncapsulation } from \"@angular/core\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\nimport { NiceFilterDataDirective } from \"../common/data.directive\";\n\n@Component({\n selector: \"nice-filter-infinite-scroll-data-view, div[nice-filter-infinite-scroll-data-view]\",\n templateUrl: \"infinite-scroll-data-view.template.html\",\n styleUrls: [\"infinite-scroll-data-view.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterInfiniteScrollDataViewComponent implements OnInit {\n @ContentChild(NiceFilterDataDirective, { read: TemplateRef })\n public content: TemplateRef<any>;\n\n public data$ = this.query.selectAll();\n\n constructor(private query: NiceFilterViewQuery, private service: NiceFilterViewService) {}\n\n public ngOnInit(): void {\n this.service.setMode(\"accumulated\");\n }\n\n public async loadNextPage(): Promise<void> {\n const { filterParameters, filterResult } = this.query.getValue();\n\n if (filterResult && filterResult.values.length >= filterResult.total) {\n return;\n }\n\n this.service.setParameters({\n ...filterParameters,\n start: filterParameters.start + filterParameters.length\n });\n this.service.filter();\n }\n}\n","<ng-container *ngIf=\"content\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: data$ | async }\"></ng-container>\n</ng-container>\n","import { Component, Inject, Input, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { Subject, tap } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from \"rxjs/operators\";\nimport { NiceBaseIconOptions } from \"../../../base-list/models/icons.model\";\nimport { FILTER_VIEW_ICONS } from \"../../nice-filter-view.constant\";\nimport { NiceFilterViewQuery } from \"../../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../../store/nice-filter-view.service\";\n\n@Component({\n selector: \"nice-filter-search\",\n templateUrl: \"search.template.html\",\n styleUrls: [\"search.style.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class NiceFilterSearchComponent implements OnInit, OnDestroy {\n @Input()\n public appearance: \"default\" | \"outlined\" | \"legacy\" | \"custom\" = \"default\";\n\n public searchQuery$ = this.query.selectFilterParameters().pipe(map(f => f.search));\n\n private unsubscribeAll$ = new Subject<void>();\n private searchText$ = new Subject<string>();\n\n constructor(\n @Inject(FILTER_VIEW_ICONS) public icons: NiceBaseIconOptions,\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService\n ) {}\n\n public ngOnInit() {\n this.searchText$\n .pipe(\n takeUntil(this.unsubscribeAll$),\n debounceTime(300),\n distinctUntilChanged(),\n tap((search: string) => {\n const { mode } = this.query.getValue();\n if (mode === \"accumulated\") {\n this.service.resetPaging();\n }\n\n const { filterParameters } = this.query.getValue();\n this.service.setParameters({\n ...filterParameters,\n start: 0,\n search\n });\n this.service.filter();\n })\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n public onUpdateSearch(search: string): void {\n this.searchText$.next(search);\n }\n}\n","<div\n class=\"search-wrapper mx-md-0\"\n [class.nice-search-default]=\"appearance === 'default'\"\n [class.nice-search-outlined]=\"appearance === 'outlined'\"\n [class.nice-search-legacy]=\"appearance === 'legacy'\"\n [class.nice-search-custom]=\"appearance === 'custom'\"\n>\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon [svgIcon]=\"icons.search.svgIcon\">{{ icons.search.matIcon }}</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n\n <ng-content select=\"[niceFilterSearchButtons]\"></ng-content>\n </div>\n</div>\n","import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { combineLatest, distinct, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { FilterParametersModel } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\nimport { QueryParamsUtils } from \"../../../utils/query-params.utils\";\nimport { NiceFilterViewQuery } from \"../store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"../store/nice-filter-view.service\";\n\n@Directive({ selector: \"nice-filter-view[niceFilterQueryParams]\" })\nexport class NiceFilterQueryParamsDirective implements OnInit, OnDestroy {\n @Input()\n public replaceUrlOnNavigation: boolean;\n\n @Output()\n public init = new EventEmitter();\n\n private unsubscribeAll$ = new Subject<void>();\n private _initialized = false;\n\n public get initialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n private query: NiceFilterViewQuery,\n private service: NiceFilterViewService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n public ngOnInit(): void {\n this.query.selectFilterParameters().pipe(takeUntil(this.unsubscribeAll$)).subscribe((parameters) => {\n this.updateQueryParams(parameters);\n });\n\n this.loadQueryParams();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n private updateQueryParams(parameters: FilterParametersModel): void {\n if (!this.route) {\n return;\n }\n\n const params = { ...parameters };\n const { mode } = this.query.getValue();\n if (mode === \"accumulated\") {\n delete params.start;\n delete params.length;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: QueryParamsUtils.filterParametersToParamsMap(params),\n queryParamsHandling: \"merge\",\n replaceUrl: this.replaceUrlOnNavigation\n });\n }\n\n private loadQueryParams(): void {\n combineLatest([\n this.route.queryParams.pipe(map((params) => params.start), distinct()),\n this.route.queryParams.pipe(map((params) => params.length), distinct()),\n this.route.queryParams.pipe(map((params) => params.order), distinct()),\n this.route.queryParams.pipe(map((params) => params.search), distinct()),\n this.route.queryParams.pipe(map((params) => params.rules), distinct()),\n ]).pipe(\n takeUntil(this.unsubscribeAll$),\n map(() => {\n const params = this.route.snapshot.queryParams;\n return {\n params: QueryParamsUtils.extractFilterParameters(params)\n };\n })\n ).subscribe(({ params }) => {\n if (!QueryParamsUtils.hasFilterParameters(params) || Object.keys(params).length === 0) {\n params = { ...this.query.getValue().filterParameters };\n }\n const { filterParameters, filterResult } = this.query.getValue();\n if (\n FilterUtils.filterChangeNeedsRefresh(filterParameters, params) ||\n !filterResult\n ) {\n this.service.setParameters({\n ...params,\n fallbackOrder: filterParameters.fallbackOrder\n });\n }\n\n if (!this._initialized) {\n this._initialized = true;\n this.init.emit();\n }\n });\n }\n}\n","import { Directive, inject, OnDestroy, OnInit } from \"@angular/core\";\nimport { Observable, Subject, take } from \"rxjs\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\n\nexport type AfterQueryParamLoadedCallback = () => void;\n\n@Directive()\nexport abstract class NiceNestedFilterView<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit, OnDestroy {\n private readonly _afterQueryParamHooks: Set<AfterQueryParamLoadedCallback> = new Set();\n\n protected unsubscribeAll$ = new Subject<void>();\n\n protected filterViewService: NiceFilterViewService<Filter> = inject(NiceFilterViewService);\n protected filterViewQuery: NiceFilterViewQuery = inject(NiceFilterViewQuery);\n protected queryParams: NiceFilterQueryParamsDirective | null = inject(NiceFilterQueryParamsDirective, { optional: true });\n\n public filterViewLoading$: Observable<boolean>;\n public filterViewCount$: Observable<number>;\n\n public ngOnInit(): void {\n this.filterViewLoading$ = this.filterViewQuery.selectLoading();\n this.filterViewCount$ = this.filterViewQuery.selectCount();\n\n if (!this.queryParams || this.queryParams?.initialized) {\n this.onInit();\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.onInit());\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n\n protected afterInit(fn: AfterQueryParamLoadedCallback): void {\n if (!this.queryParams || this.queryParams?.initialized) {\n fn.bind(this)();\n return;\n }\n\n this._afterQueryParamHooks.add(fn);\n }\n\n private onInit(): void {\n for (const hook of this._afterQueryParamHooks) {\n hook.bind(this)();\n }\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatPaginator } from \"@angular/material/paginator\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNestedFilterView } from \"../nice-nested-filter-view\";\n\n@Directive({ selector: \"mat-paginator[niceFilterPagination]\" })\nexport class NiceFilterMatPaginatorPaginationDirective extends NiceNestedFilterView implements OnInit {\n public defaultPageSizeOptions = [10, 25, 50, 100];\n\n constructor(private paginator: MatPaginator) {\n super();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n if (!this.paginator.pageSizeOptions.length) {\n this.paginator.pageSizeOptions = this.defaultPageSizeOptions;\n }\n\n this.filterViewQuery.selectFilterResult().pipe(takeUntil(this.unsubscribeAll$)).subscribe((res) => {\n if (!res) {\n return;\n }\n\n const { page, total } = res;\n this.paginator.pageIndex = page.number;\n this.paginator.pageSize = page.size;\n this.paginator.length = total;\n });\n\n this.paginator.page.pipe(takeUntil(this.unsubscribeAll$)).subscribe((page) => {\n this.filterViewService.patchParameters({\n start: page.pageIndex * page.pageSize,\n length: page.pageSize\n });\n this.filterViewService.filter();\n });\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatSort } from \"@angular/material/sort\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceNestedFilterView } from \"../nice-nested-filter-view\";\n\n@Directive({ selector: \"mat-table[matSort][niceFilterSorting]\" })\nexport class NiceFilterMatSortSortingDirective extends NiceNestedFilterView implements OnInit {\n constructor(private sort: MatSort) {\n super();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n this.filterViewQuery.selectFilterParameters().pipe(takeUntil(this.unsubscribeAll$)).subscribe((res) => {\n if (!res) {\n return;\n }\n\n const { order } = res;\n if (!order) {\n return;\n }\n\n this.sort.direction = order.direction;\n this.sort.active = order.column;\n });\n\n this.sort.sortChange.pipe(takeUntil(this.unsubscribeAll$)).subscribe((sort) => {\n const { orderColumns } = this.filterViewQuery.getValue();\n const column = orderColumns?.[sort.active];\n\n if (!sort.direction) {\n this.filterViewService.patchParameters({\n order: null\n });\n } else {\n this.filterViewService.patchParameters({\n order: {\n column: column?.column ?? sort.active,\n direction: sort.direction as \"asc\" | \"desc\",\n nullLast: column?.nullLast\n }\n });\n }\n this.filterViewService.filter();\n });\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { MatTable } from \"@angular/material/table\";\nimport { NiceFilterViewQuery } from \"../store/nice-filter-view.query\";\n\n@Directive({ selector: \"mat-table[niceFilterDataView]\" })\nexport class NiceFilterMatTableViewDirective implements OnInit {\n constructor(private query: NiceFilterViewQuery, private table: MatTable<any>) {}\n\n public ngOnInit(): void {\n this.table.dataSource = this.query.selectAll();\n }\n}\n","import { Injectable, QueryList } from \"@angular/core\";\nimport { NiceSelectableListOptions } from \"../model/selectable-list-options.model\";\nimport { NiceSelectableListCheckboxDirective } from \"../selectable-list-checkbox.directive\";\n\n@Injectable({ providedIn: \"any\" })\nexport class NiceSelectableListContentService {\n private _options: NiceSelectableListOptions;\n private _state: string | null = null;\n private _checkboxes: QueryList<NiceSelectableListCheckboxDirective> = new QueryList();\n\n private defaultOptions: NiceSelectableListOptions = { idKey: \"id\", preloadWindow: 2 };\n\n public get options(): NiceSelectableListOptions {\n return this._options ?? this.defaultOptions;\n }\n\n public get state(): string | null {\n return this._state;\n }\n\n public get checkboxes(): QueryList<NiceSelectableListCheckboxDirective> {\n return this._checkboxes;\n }\n\n public setOptions(options: NiceSelectableListOptions): void {\n this._options = {\n ...this.defaultOptions,\n ...options\n };\n }\n\n public setState(state: string): void {\n this._state = state;\n }\n\n public setCheckboxes(checkboxes: QueryList<NiceSelectableListCheckboxDirective>): void {\n this._checkboxes = checkboxes;\n }\n}\n","import { Directive, DoCheck, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { EntityActions } from \"@datorama/akita\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListStateQuery } from \"./store/selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\nimport { NiceSelectableListState } from \"./store/selectable-list.state\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListCheckbox]\"\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListCheckboxDirective implements OnInit, OnDestroy, DoCheck {\n @Input()\n public selectableEntity?: any;\n\n @Input()\n public selectPage?: boolean;\n\n private selectableListStateService!: NiceSelectableListStateService<any>;\n private selectableListStateQuery!: NiceSelectableListStateQuery<NiceSelectableListState<any>>;\n\n private unsubscribeAll$ = new Subject<void>();\n\n private initialized = false;\n\n private get currentId(): any {\n if (!this.selectableEntity || !this.selectableListStateService) {\n return null;\n }\n\n return this.selectableEntity[this.selectableListStateService.idKey];\n }\n\n constructor(\n public readonly checkbox: MatCheckbox,\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public ngOnInit(): void {\n this.selectableListStateService = this.selectableListService.withState(this.service.state);\n this.selectableListStateQuery = this.selectableListService.query(this.service.state);\n\n if (this.selectableEntity) {\n this.handleSelectableEntity();\n }\n\n if (this.selectPage) {\n this.handleSelectPage();\n }\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n this.initialized = false;\n }\n\n public ngDoCheck(): void {\n if (this.selectPage && !this.initialized) {\n this.updateCheckboxState();\n }\n }\n\n private handleSelectableEntity(): void {\n if (this.checkbox.checked) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n }\n\n if (!this.checkbox.checked && this.selectableListStateQuery.getEntity(this.currentId)) {\n this.checkbox.checked = true;\n }\n\n this.checkbox.change.pipe(takeUntil(this.unsubscribeAll$)).subscribe((value) => {\n if (value.checked && !this.selectableListStateQuery.getEntity(this.currentId)) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n }\n\n if (!value.checked && this.selectableListStateQuery.getEntity(this.currentId)) {\n this.selectableListStateService.unselectEntity(this.selectableEntity);\n }\n });\n\n this.selectableListStateQuery.selectEntityAction([\n EntityActions.Add,\n EntityActions.Remove,\n EntityActions.Set\n ]).pipe(takeUntil(this.unsubscribeAll$)).subscribe(({ ids, type }) => {\n const shouldTakeAction = ids.includes(this.currentId);\n if (!shouldTakeAction) {\n if (type === EntityActions.Set) {\n this.propageCheckedValue(this.checkbox, false);\n }\n return;\n }\n\n if (!this.checkbox.checked && (type === EntityActions.Add || type === EntityActions.Set)) {\n this.propageCheckedValue(this.checkbox, true);\n }\n\n if (this.checkbox.checked && type === EntityActions.Remove) {\n this.propageCheckedValue(this.checkbox, false);\n }\n });\n\n this.selectableListStateQuery.selectAllSelected().pipe(takeUntil(this.unsubscribeAll$)).subscribe((allSelected) => {\n const selectAllBehaviour = this.selectableListStateService.selectAllBehaviour;\n if (allSelected) {\n this.selectableListStateService.selectEntity(this.selectableEntity);\n if (selectAllBehaviour === \"lock\") {\n this.checkbox.disabled = true;\n }\n } else {\n this.selectableListStateService.unselectEntity(this.selectableEntity);\n this.checkbox.disabled = false;\n }\n });\n }\n\n private handleSelectPage(): void {\n this.selectableListStateQuery.selectCount().subscribe(() => this.updateCheckboxState());\n\n this.checkbox.change.pipe(takeUntil(this.unsubscribeAll$)).subscribe((value) => {\n for (const checkbox of this.service.checkboxes) {\n if (checkbox.selectPage) {\n continue;\n }\n\n checkbox.checkbox.checked = value.checked;\n checkbox.checkbox.change.emit({ checked: value.checked, source: checkbox.checkbox });\n }\n });\n\n this.selectableListStateQuery.selectAllSelected().pipe(takeUntil(this.unsubscribeAll$)).subscribe((allSelected) => {\n const selectAllBehaviour = this.selectableListStateService.selectAllBehaviour;\n if (allSelected) {\n if (selectAllBehaviour === \"lock\") {\n this.checkbox.disabled = true;\n }\n } else {\n this.checkbox.disabled = false;\n }\n });\n }\n\n private updateCheckboxState(): void {\n const count = this.selectableListStateQuery.getCount();\n const checkboxes = this.service.checkboxes.filter((checkbox) => !checkbox.selectPage);\n if (!checkboxes.length) {\n if (!count) {\n this.checkbox.indeterminate = false;\n this.checkbox.checked = false;\n return;\n }\n\n this.checkbox.indeterminate = true;\n this.checkbox.checked = false;\n return;\n }\n\n this.initialized = true;\n if (!count) {\n this.checkbox.indeterminate = false;\n this.checkbox.checked = false;\n return;\n }\n if (count !== checkboxes.length) {\n this.checkbox.indeterminate = true;\n this.checkbox.checked = false;\n return;\n }\n if (count === checkboxes.length) {\n this.checkbox.checked = true;\n this.checkbox.indeterminate = false;\n }\n }\n\n private propageCheckedValue(checkbox: MatCheckbox, checked: boolean): void {\n checkbox.checked = checked;\n checkbox.change.emit({ checked, source: checkbox});\n }\n}\n","import { AfterContentInit, ContentChildren, Directive, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { EntityActions } from \"@datorama/akita\";\nimport { combineLatest, distinct, Subject } from \"rxjs\";\nimport { map, takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListOptions } from \"./model/selectable-list-options.model\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListCheckboxDirective } from \"./selectable-list-checkbox.directive\";\nimport { NiceSelectableListStateQuery } from \"./store/selectable-list-state.query\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [NiceSelectableListContentService]\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListDirective implements OnInit, OnDestroy, OnChanges, AfterContentInit {\n @Input()\n public state: string;\n\n @Input()\n public options: NiceSelectableListOptions;\n\n @ContentChildren(NiceSelectableListCheckboxDirective, { descendants: true })\n public readonly checkboxes: QueryList<NiceSelectableListCheckboxDirective>;\n\n private unsubscribeAll$ = new Subject<void>();\n private unsubscribeQuerySub$ = new Subject<void>();\n\n private stateService!: NiceSelectableListStateService<any>;\n private stateQuery!: NiceSelectableListStateQuery<any>;\n\n constructor(\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService,\n private route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n if (this.options?.disableQueryParams) {\n return;\n }\n\n combineLatest([\n this.route.queryParams.pipe(map((params) => params.selection), distinct()),\n this.route.queryParams.pipe(map((params) => params.selected), distinct())\n ]).pipe(takeUntil(this.unsubscribeAll$)).subscribe(([selection, selected]: [string | string[], string]) => {\n if (!selection) {\n this.stateService.setQueryParams();\n return;\n }\n\n const newSelection = typeof selection === \"string\" ? [+selection] : selection.map((s) => +s);\n const newSelected = selected ? +selected : null;\n\n const { ids, active } = this.stateQuery.getValue();\n if (!ids.length || !ids.every((id) => newSelection.includes(id))) {\n this.stateService.setEntities(newSelection, newSelected);\n return;\n }\n\n if (newSelected && active !== newSelected) {\n this.stateService.setActive(newSelected);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n this.unsubscribeQuerySub$.next();\n this.unsubscribeQuerySub$.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"options\" in changes) {\n this.service.setOptions(this.options);\n this.stateService?.setOptions(this.options);\n }\n\n if (\"state\" in changes) {\n this.service.setState(this.state);\n this.stateService = this.selectableListService.withState<any>(this.state, this.options);\n this.stateQuery = this.selectableListService.query(this.state);\n this.listenOnStateChanges();\n }\n }\n\n public ngAfterContentInit(): void {\n this.service.setCheckboxes(this.checkboxes);\n }\n\n private listenOnStateChanges(): void {\n this.unsubscribeQuerySub$.next();\n this.stateQuery.selectEntityAction([\n EntityActions.Add,\n EntityActions.Remove,\n EntityActions.Set\n ]).pipe(takeUntil(this.unsubscribeQuerySub$)).subscribe(() => {\n this.stateService.setQueryParams();\n });\n\n this.stateQuery.selectActiveId().pipe(takeUntil(this.unsubscribeQuerySub$)).subscribe(() => this.stateService.setQueryParams());\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\nimport { NiceFilterViewStore } from \"./store/nice-filter-view.store\";\n\n@Component({\n selector: \"nice-filter-view\",\n templateUrl: \"nice-filter-view.template.html\",\n styleUrls: [\"nice-filter-view.style.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n NiceFilterViewQuery,\n NiceFilterViewService,\n NiceFilterViewStore\n ]\n})\nexport class NiceFilterViewComponent implements OnChanges {\n @Input()\n public queryParams: QueryParams = {};\n\n constructor(private service: NiceFilterViewService) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\"queryParams\" in changes) {\n this.service.setQueryParams(this.queryParams);\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { Observable, take } from \"rxjs\";\nimport { QueryParams } from \"../../api/filter.api\";\nimport { NiceSelectableListDirective } from \"../../directive/selectable-list/selectable-list.directive\";\nimport { QueryModel, QueryRuleModel, RuleModel } from \"../../models/query.model\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceAdvancedFiltersComponent } from \"./components/advanced-filters/advanced-filters.component\";\nimport { NiceAdvancedFiltersButtonComponent } from \"./components/advanced-filters/button/advanced-filters-button.component\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\nimport { NiceFilterViewComponent } from \"./nice-filter-view.component\";\nimport { AfterQueryParamLoadedCallback } from \"./nice-nested-filter-view\";\nimport { NiceFilterViewQuery } from \"./store/nice-filter-view.query\";\nimport { NiceFilterViewService } from \"./store/nice-filter-view.service\";\n\nexport interface NiceBaseFilterViewInitOptions {\n mode?: \"paginated\" | \"accumulated\";\n loadConfig?: boolean;\n configQueryParams?: QueryParams;\n}\n\n@Component({\n template: ``\n})\nexport abstract class NiceBaseFilterViewComponent<Filter extends NiceFilterService<any> = NiceFilterService<any>> implements OnInit {\n @ViewChild(NiceFilterViewComponent, { read: NiceFilterViewService, static: true })\n protected filterViewService: NiceFilterViewService<Filter>;\n\n @ViewChild(NiceFilterViewComponent, { read: NiceFilterViewQuery, static: true })\n protected filterViewQuery: NiceFilterViewQuery;\n\n @ViewChild(NiceFilterQueryParamsDirective, { static: true })\n protected queryParams: NiceFilterQueryParamsDirective;\n\n @ViewChild(NiceAdvancedFiltersButtonComponent, { static: true })\n protected advancedFiltersButton: NiceAdvancedFiltersButtonComponent;\n\n @ViewChild(NiceAdvancedFiltersComponent, { static: true })\n private advancedFilters: NiceAdvancedFiltersComponent;\n\n @ViewChild(NiceSelectableListDirective, { static: true })\n private selectableListDirective: NiceSelectableListDirective;\n\n private readonly _afterQueryParamHooks: Set<AfterQueryParamLoadedCallback> = new Set();\n\n public filterViewLoading$: Observable<boolean>;\n public filterViewCount$: Observable<number>;\n\n public ngOnInit(autoLoad = true, { mode, loadConfig, configQueryParams }: NiceBaseFilterViewInitOptions = {}): void {\n if (mode) {\n this.filterViewService.setMode(mode);\n }\n\n this.autoLoad(autoLoad);\n this.loadConfig(loadConfig, configQueryParams);\n\n this.filterViewLoading$ = this.filterViewQuery.selectLoading();\n this.filterViewCount$ = this.filterViewQuery.selectCount();\n\n if (this.selectableListDirective) {\n this.filterViewService.updateSubState(\"selectable\", { stateName: this.selectableListDirective.state });\n }\n\n if (!this.queryParams || this.queryParams?.initialized) {\n this.onInit();\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.onInit());\n }\n\n /**\n * Call the filter endpoint with the current filter parameters.\n */\n public loadData(): void {\n this.filterViewService.filter();\n }\n\n /**\n * Disable the filter view. This will stop calling any api routes.\n */\n public disable(): void {\n this.filterViewService.disable();\n }\n\n /**\n * Enable the filter view. This will resume calling any api routes.\n */\n public enable(): void {\n this.filterViewService.enable();\n }\n\n /**\n * Update the loading state\n */\n public setLoading(loading: boolean): void {\n this.filterViewService.setLoading(loading);\n }\n\n /**\n * Set a set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public setBaseRules(rule: (QueryRuleModel | QueryModel)[], reload = true): void {\n this.filterViewService.setBaseRules(rule, reload);\n }\n\n /**\n * Add a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public addBaseRule(rule: QueryRuleModel, reload = true): void {\n this.filterViewService.addBaseRule(rule, reload);\n }\n\n /**\n * Add a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public upsertBaseRule(rule: QueryRuleModel, reload = true): void {\n this.filterViewService.upsertBaseRules(rule, reload);\n }\n\n /**\n * Remove a rule to the set of rules that won't be saved in the current filterParameters config.\n * NOTE: These rules will be injected in each filter request.\n */\n public removeBaseRule(id: string, reload = true): void {\n this.filterViewService.removeBaseRules(id, reload);\n }\n\n /**\n * Reset all rules with a new set of rules.\n */\n public setRules(rules: QueryModel | QueryModel[], reload = true): void {\n this.filterViewService.setRules(rules);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n /**\n * Add or update a rule.\n * NOTE: This will only check for rules in the first element of the rules array in the current filterParameters.\n */\n public upsertRule(id: string, newRule: RuleModel, reload = true): void {\n this.filterViewService.upsertRule(id, newRule);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n /**\n * Remove a rule.\n * NOTE: This will only check for rules in the first element of the rules array in the current filterParameters.\n */\n public removeRule(id: string, reload = true): void {\n this.filterViewService.removeRule(id);\n if (reload) {\n this.filterViewService.filter();\n }\n }\n\n protected afterInit(fn: AfterQueryParamLoadedCallback): void {\n if (!this.queryParams || this.queryParams?.initialized) {\n fn.bind(this)();\n return;\n }\n\n this._afterQueryParamHooks.add(fn);\n }\n\n private autoLoad(autoLoad: boolean): void {\n const { autoLoad: defaultAutoLoad } = this.filterViewQuery.getValue();\n if (!this.queryParams) {\n if (autoLoad && defaultAutoLoad) {\n this.filterViewService.filter();\n } else {\n this.filterViewService.setAutoLoad(autoLoad);\n }\n return;\n }\n\n if (!autoLoad && defaultAutoLoad) {\n this.filterViewService.setAutoLoad(autoLoad);\n return;\n }\n\n this.queryParams.init.pipe(take(1)).subscribe(() => this.loadData());\n }\n\n private loadConfig(loadConfig?: boolean, configQueryParams?: QueryParams): void {\n if (loadConfig === true) {\n this.filterViewService.loadConfig(configQueryParams);\n return;\n }\n\n if (loadConfig === false) {\n return;\n }\n\n if (this.advancedFiltersButton || this.advancedFilters) {\n this.filterViewService.loadConfig(configQueryParams);\n }\n }\n\n private onInit(): void {\n for (const hook of this._afterQueryParamHooks) {\n hook.bind(this)();\n }\n }\n}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule, Provider, Type } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatBottomSheetModule } from \"@angular/material/bottom-sheet\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { StoreConfigOptions } from \"@datorama/akita/src/lib/storeConfig\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NiceExportBottomSheetModule } from \"@recursyve/nice-ui-kit.v2\";\nimport { ExportSettings } from \"../base-list/models/export.model\";\nimport { defaultIcons, NiceBaseIconOptions } from \"../base-list/models/icons.model\";\nimport { NiceFilterService } from \"../base-list/providers/base-filter.service\";\nimport { NiceFilterDataDirective } from \"./components/common/data.directive\";\nimport { NiceFilterCustomDataViewComponent } from \"./components/custom-data-view/custom-data-view.component\";\nimport { NiceFilterExportButtonsComponent } from \"./components/export-buttons/export-buttons.component\";\nimport { NiceFilterExportDirective } from \"./components/export-buttons/export.directive\";\nimport { NiceFilterInfiniteScrollDataViewComponent } from \"./components/infinite-scroll-data-view/infinite-scroll-data-view.component\";\nimport { NiceFilterSearchComponent } from \"./components/search/search.component\";\nimport { NiceFilterMatPaginatorPaginationDirective } from \"./directives/mat-paginator\";\nimport { NiceFilterMatSortSortingDirective } from \"./directives/mat-sort\";\nimport { NiceFilterMatTableViewDirective } from \"./directives/mat-tables\";\nimport { NiceFilterQueryParamsDirective } from \"./directives/query-params.directive\";\n\nimport { NiceFilterViewComponent } from \"./nice-filter-view.component\";\nimport { EXPORTS_SETTINGS, FILTER_VIEW_ICONS, FILTER_VIEW_STATE, FILTER_VIEW_STORE } from \"./nice-filter-view.constant\";\nimport { NiceFilterViewState } from \"./store/nice-filter-view.store\";\n\nexport interface NiceFilterViewOptions<T> {\n filterService: Type<NiceFilterService<T>>;\n exports?: ExportSettings;\n state?: Partial<NiceFilterViewState>;\n store?: StoreConfigOptions;\n}\n\nexport interface NiceFilterViewGlobalOptions {\n icons?: NiceBaseIconOptions;\n}\n\n@NgModule({\n imports: [\n TranslateModule,\n MatIconModule,\n FormsModule,\n AsyncPipe,\n NgIf,\n NgTemplateOutlet,\n MatTooltipModule,\n MatButtonModule,\n MatBottomSheetModule,\n\n NiceExportBottomSheetModule\n ],\n declarations: [\n NiceFilterViewComponent,\n NiceFilterCustomDataViewComponent,\n NiceFilterExportButtonsComponent,\n NiceFilterInfiniteScrollDataViewComponent,\n NiceFilterSearchComponent,\n\n NiceFilterDataDirective,\n NiceFilterExportDirective,\n NiceFilterMatTableViewDirective,\n NiceFilterMatSortSortingDirective,\n NiceFilterMatPaginatorPaginationDirective,\n NiceFilterQueryParamsDirective\n ],\n providers: [],\n exports: [\n NiceFilterViewComponent,\n NiceFilterCustomDataViewComponent,\n NiceFilterExportButtonsComponent,\n NiceFilterInfiniteScrollDataViewComponent,\n NiceFilterSearchComponent,\n\n NiceFilterDataDirective,\n NiceFilterExportDirective,\n NiceFilterMatTableViewDirective,\n NiceFilterMatSortSortingDirective,\n NiceFilterMatPaginatorPaginationDirective,\n NiceFilterQueryParamsDirective\n ],\n})\nexport class NiceFilterViewModule {\n public static forRoot(options?: NiceFilterViewGlobalOptions): ModuleWithProviders<NiceFilterViewModule> {\n return {\n ngModule: NiceFilterViewModule,\n providers: [\n {\n provide: FILTER_VIEW_ICONS,\n useValue: {\n ...defaultIcons,\n ...(options?.icons ?? {})\n }\n }\n ].filter(x => !!x)\n };\n }\n\n public static providerFactory<T>(options: NiceFilterViewOptions<T>): Provider[] {\n return [\n {\n provide: NiceFilterService,\n useClass: options.filterService\n },\n {\n provide: EXPORTS_SETTINGS,\n useValue: options.exports ?? {\n pdf: true,\n xlsx: true,\n csv: true\n }\n },\n {\n provide: FILTER_VIEW_STATE,\n useValue: options.state ?? {}\n },\n {\n provide: FILTER_VIEW_STORE,\n useValue: options.store ?? { name: \"nice-filter-view\", resettable: true }\n }\n ].filter(x => !!x);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NiceSelectableListLoadAllEntitiesOptions } from \"../model/load-all-entities-options.model\";\n\n@Injectable()\nexport abstract class NicePreloadSelectedEntitiesProvider<T, ID = number> {\n public abstract state: string;\n public abstract reloadEntity(entity: T): Promise<T>;\n public abstract reloadEntities(entities: T[]): Promise<T[]>;\n public abstract loadEntityById(id: ID): Promise<T>;\n public abstract loadEntitiesById(ids: ID[]): Promise<T[]>;\n public abstract loadAllEntities(options?: NiceSelectableListLoadAllEntitiesOptions): Promise<ID[]>;\n}\n","import { Directive, HostListener, Input, OnInit, Optional } from \"@angular/core\";\nimport { QueryEntity } from \"@datorama/akita\";\nimport { NiceFilterViewQuery } from \"../../components/nice-filter-view/store/nice-filter-view.query\";\nimport { FilterUtils } from \"../../utils/filter.utils\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListStateService } from \"./store/selectable-list-state.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\nimport { NiceSelectableListState } from \"./store/selectable-list.state\";\n\n@Directive({\n selector: \"button[niceSelectableListSelectAll]\"\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class NiceSelectableListSelectAllDirective implements OnInit {\n @Input()\n public action: \"select\" | \"unselect\" = \"select\";\n\n private selectableListStateService!: NiceSelectableListStateService<any>;\n private selectableListStateQuery!: QueryEntity<NiceSelectableListState<any>>;\n\n constructor(\n @Optional()\n private niceFilterViewQuery: NiceFilterViewQuery | null,\n private service: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public ngOnInit(): void {\n this.selectableListStateService = this.selectableListService.withState(this.service.state);\n this.selectableListStateQuery = this.selectableListService.query(this.service.state);\n }\n\n @HostListener(\"click\")\n public onClick(): void {\n if (this.action === \"select\") {\n const filterParameters = this.niceFilterViewQuery?.getParameters() ?? {};\n const query = filterParameters ? FilterUtils.parametersToRequest(filterParameters) : null;\n this.selectableListStateService.selectAll({ query });\n } else {\n this.selectableListStateService.unselectAll();\n }\n }\n}\n","import { Directive, EmbeddedViewRef, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { distinctUntilChanged, map, takeUntil } from \"rxjs/operators\";\nimport { NiceSelectableListContentService } from \"./providers/selectable-list-content.service\";\nimport { NiceSelectableListService } from \"./store/selectable-list.service\";\n\nclass NiceSelectableListIsEmptyDirectiveContext {\n $implicit: boolean;\n isEmpty: boolean;\n}\n\n// tslint:disable-next-line:directive-selector\n@Directive({ selector: \"[niceSelectableListIsEmpty]\" })\nexport class NiceSelectableListIsEmptyDirective implements OnInit, OnDestroy {\n private context = new NiceSelectableListIsEmptyDirectiveContext();\n private embeddedViewRef: EmbeddedViewRef<any> | null = null;\n\n private unsubscribeAll$ = new Subject<void>();\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private contentService: NiceSelectableListContentService,\n private selectableListService: NiceSelectableListService\n ) {}\n\n public static ngTemplateContextGuard(\n directive: NiceSelectableListIsEmptyDirective,\n ctx: any\n ): ctx is NiceSelectableListIsEmptyDirectiveContext {\n return true;\n }\n\n public ngOnInit(): void {\n const state = this.contentService.state;\n const query = this.selectableListService.query(state);\n\n this.context.$implicit = this.context.isEmpty = (query.getCount() === 0);\n\n if (!this.embeddedViewRef) {\n this.viewContainerRef.clear();\n this.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);\n }\n\n query.selectCount().pipe(\n takeUntil(this.unsubscribeAll$),\n map((count) => count === 0),\n distinctUntilChanged()\n ).subscribe((isEmpty) => {\n this.context.$implicit = this.context.isEmpty = isEmpty;\n\n this.embeddedViewRef.context = this.context;\n this.embeddedViewRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n}\n","import { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\nimport { NicePreloadSelectedEntitiesProvider } from \"./providers/preload-selected-entities.provider\";\nimport { NiceSelectableListCheckboxDirective } from \"./selectable-list-checkbox.directive\";\nimport { NiceSelectableListSelectAllDirective } from \"./selectable-list-select-all.directive\";\nimport { NiceSelectableListIsEmptyDirective } from \"./selectable-list-state.directive\";\nimport { NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER } from \"./selectable-list.constant\";\nimport { NiceSelectableListDirective } from \"./selectable-list.directive\";\n\n@NgModule({\n imports: [],\n declarations: [NiceSelectableListDirective, NiceSelectableListCheckboxDirective, NiceSelectableListSelectAllDirective, NiceSelectableListIsEmptyDirective],\n exports: [NiceSelectableListDirective, NiceSelectableListCheckboxDirective, NiceSelectableListSelectAllDirective, NiceSelectableListIsEmptyDirective]\n})\nexport class NiceSelectableListModule {\n public static register(\n ...providers: Type<NicePreloadSelectedEntitiesProvider<any, any>>[]\n ): ModuleWithProviders<NiceSelectableListModule> {\n return {\n ngModule: NiceSelectableListModule,\n providers: providers.map(x => ({\n provide: NICE_PRELOAD_SELECTED_ENTITIES_PROVIDER,\n useClass: x,\n multi: true\n }))\n };\n }\n}\n","import { TableColumns } from \"../components/base-list/models/columns.model\";\n\nexport class StringUtils {}\n\ndeclare global {\n interface String {\n toTableColumn(sortable?: boolean, nullLast?: boolean): TableColumns;\n toTableColumn({ sortable, nullLast }: { sortable?: boolean, nullLast?: boolean }): TableColumns;\n }\n}\n\n// tslint:disable-next-line:max-line-length\nString.prototype.toTableColumn = function(sortableOrOptions: boolean | { sortable?: boolean, nullLast?: boolean }, nullLast?: boolean): TableColumns {\n const options = typeof sortableOrOptions === \"object\" ? sortableOrOptions : { sortable: sortableOrOptions, nullLast };\n return new TableColumns(this.toString(), options.sortable, options.nullLast);\n};\n","/*\n * Public API Surface of nice-data-filter-kit\n */\n\nexport * from \"./lib/api/public-api\";\nexport * from \"./lib/components/public-api\";\nexport * from \"./lib/directive/public-api\";\nexport * from \"./lib/models/public-api\";\nexport * from \"./lib/utils/public-api\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NiceSavedReportsApi","EXPORTS_SETTINGS","i1.NiceBaseListStore","Array","i1.NiceFilterGroupService","i1","i2","i4","i6","i7.FilterGroupIconPipe","FilterComponent","i1.NiceFilterService","i3","i5","i7","i8.QueryBuilderTriggerDirective","i9.SelectFilterComponent","i10.TextFilterComponent","i11.NumberFilterComponent","i12.RadioFilterComponent","i13.DateFilterComponent","i14","i6.QueryBuilderTriggerDirective","i7.RuleComponent","i8","i1.NiceBaseListQuery","i2.NiceBaseListService","i9","i16.NiceQueryBuilderComponent","i17.QueryBuilderTriggerDirective","i19","defaultIcons","initialValue","i1.NiceMultiStateListStore","i3.NiceMultiStateFilterService","i1.NiceMultiStateListQuery","i5.NiceMultiStateListService","i1.NiceFilterViewStore","i1.NiceFilterViewQuery","i8.NiceFilterGroupIconPipe","i2.NiceFilterViewService","i6.AdvancedFiltersTriggerDirective","i9.NiceAdvancedDateFilterComponent","i10.NiceAdvancedNumberFilterComponent","i11.NiceAdvancedOptionsFilterComponent","i12.NiceAdvancedRadioFilterComponent","i13.NiceAdvancedSelectFilterComponent","i14.NiceAdvancedTextFilterComponent","i15.AdvancedFiltersTriggerDirective","i16","i2.NiceFilterViewQuery","i3.NiceFilterViewService","i9.NiceAdvancedRuleComponent","i10.AdvancedFiltersTriggerDirective","i11","i2.NiceSelectableListService","i1.NiceFilterViewService","i2.NiceSelectableListContentService","i3.NiceSelectableListService","i1.NiceSelectableListContentService"],"mappings":"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"}
|