@recursyve/nice-data-filter-kit 13.1.5 → 13.1.6
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/esm2020/lib/api/filter.api.mjs +3 -3
- package/esm2020/lib/components/base-list/base-list.component.mjs +8 -5
- package/esm2020/lib/components/base-list/providers/base-filter.service.mjs +3 -3
- package/esm2020/lib/components/base-list/store/base-list.service.mjs +3 -3
- package/esm2020/lib/components/multi-state-list/multi-state-list.component.mjs +3 -3
- package/fesm2015/recursyve-nice-data-filter-kit.mjs +15 -12
- package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +1 -1
- package/fesm2020/recursyve-nice-data-filter-kit.mjs +15 -12
- package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +1 -1
- package/lib/api/filter.api.d.ts +4 -1
- package/lib/components/base-list/base-list.component.d.ts +4 -2
- package/lib/components/base-list/providers/base-filter.service.d.ts +3 -3
- package/lib/components/base-list/store/base-list.service.d.ts +2 -1
- 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-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.form.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/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/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/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/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/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/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/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 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 { Observable } from \"rxjs\";\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 class NiceFilterApi<T> {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {}\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel> {\n return this.http.post<FilterResultModel>(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(): Observable<FilterConfigurationModel[]> {\n return this.http.get<FilterConfigurationModel[]>(this.url(\"filter/config\"));\n }\n\n public searchFilterValue(id: string, value: string): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.http.get<SelectFilterValue[]>(this.url(`filter/config/value?id=${id}&value=${value}`));\n }\n\n public searchFilterResourceValue(id: string, resourceId: number): Observable<SelectFilterValue> {\n return this.http.get<SelectFilterValue>(this.url(`filter/config/id?id=${id}&resourceId=${resourceId}`));\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 { 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, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTable]\" })\nexport class NiceBaseListTableDirective {\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 { 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\";\n\n@NgModule({\n declarations: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective\n ],\n exports: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective\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 };\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 { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceFilterApi, NiceHttpOptions } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel, SelectFilterValue } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\n\nexport interface INiceFilterService<T> {\n getFilterConfig(): Observable<FilterConfigurationModel[]>;\n\n filter(params: FilterParametersModel): 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(protected api?: NiceFilterApi<T>) {}\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(): Observable<FilterConfigurationModel[]> {\n return this.api?.getFilterConfig();\n }\n\n public searchFilterValue(filterConfig: FilterConfigurationModel, value: string): Observable<SelectFilterValue[]> {\n return this.api?.searchFilterValue(filterConfig.id, value);\n }\n\n public searchFilterResourceValue(\n filterConfig: FilterConfigurationModel,\n resourceId: number\n ): Observable<SelectFilterValue> {\n return this.api?.searchFilterResourceValue(filterConfig.id, resourceId);\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\");\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 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;\n length?: number;\n order?: OrderModel | null; // This is the primary order (used for the mat table)\n fallbackOrder?: OrderModel | OrderModel[]; // These orders are fallback; well be placed after order\n search?: string;\n rules?: QueryModel[];\n draw?: number;\n data?: object;\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;\n direction?: \"asc\" | \"desc\";\n nullLast?: boolean;\n}\n\nexport interface FilterQueryModel {\n page?: FilterPageMode;\n search?: FilterSearchModel;\n query?: QueryModel;\n order?: OrderModel | OrderModel[];\n data?: object | undefined;\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}\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 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 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 { 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 { 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();\n protected loadingData = false;\n\n constructor(\n protected store: NiceBaseListStore,\n @Inject(NiceFilterService)\n protected filterService: Filter,\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(): Promise<void> {\n this.store.setFilterConfigLoading(true);\n try {\n const filterConfig = await firstValueFrom(this.filterService.getFilterConfig());\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 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) {\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 { 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 { 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, 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, 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, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\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","<mat-form-field class=\"flex-auto\">\n <input matInput [matDatepicker]=\"picker\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","export abstract class NiceFilterGroupService<T> {\n public abstract getFilterGroupIconClass(group: T): string;\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceFilterGroupService } from \"../providers/filter-group.service\";\n\n@Pipe({\n name: \"filterGroupIcon\"\n})\nexport class FilterGroupIconPipe implements PipeTransform {\n constructor(private service: NiceFilterGroupService<any>) {}\n\n public transform(value: string): string {\n return this.service.getFilterGroupIconClass(value);\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>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\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, EventEmitter, Input, OnInit, 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 { 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(private formGroupName: FormGroupName) {}\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 class=\"config-name-icon\">arrow_drop_down</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=\"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>delete</mat-icon>\n </button>\n </div>\n\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, forwardRef, Input, 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 { 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(public formGroup: GeneratedFormGroup<QueryBuilderForm>) {\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>add</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 class=\"ml-8\">refresh</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 { 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\";\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, { read: TemplateRef })\n public table: TemplateRef<any>;\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 @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: any = {};\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\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();\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)\"\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; else showData\">\n <ng-container *ngTemplateOutlet=\"emptyState\"></ng-container>\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: true\"></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; 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; 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; 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 { Platform } from \"@angular/cdk/platform\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MAT_DATE_LOCALE, NativeDateAdapter } from \"@angular/material/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Injectable()\nexport class NiceCustomDateAdapter extends NativeDateAdapter {\n constructor(private translateService: TranslateService, @Inject(MAT_DATE_LOCALE) locale: any, platform: Platform) {\n super(locale, platform);\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 { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { 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 { NgxMaskModule } from \"ngx-mask\";\nimport { NiceCustomDateAdapter } from \"../../utils/date.adapter\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { FilterGroupIconPipe } from \"./pipes/filter-group-icon.pipe\";\nimport { QueryBuilderTriggerDirective } from \"./query-builder-trigger.directive\";\nimport { NiceQueryBuilderComponent } from \"./query-builder.component\";\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\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 NgxMaskModule\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","export type NiceBaseListIcons = { matIcon: string; svgIcon?: 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,\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 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 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 { NiceFilterApi } 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]: NiceFilterApi<any> }) {\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 { 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 store: NiceMultiStateListStore,\n activatedRoute: ActivatedRoute,\n router: Router,\n appRef: ApplicationRef,\n private multiFilterService: NiceMultiStateFilterService\n ) {\n super(store, multiFilterService, 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, 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 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 ...(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","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/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":["Array"],"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-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.form.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/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/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/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/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/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/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/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 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 { Observable } from \"rxjs\";\nimport {\n FilterConfigurationModel,\n FilterQueryModel,\n FilterResultModel,\n SelectFilterValue\n} 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 class NiceFilterApi<T> {\n constructor(private filterApiUrl: string, private path: string, protected http: HttpClient) {\n }\n\n public filter(queryModel: FilterQueryModel, option: NiceHttpOptions = {}): Observable<FilterResultModel> {\n return this.http.post<FilterResultModel>(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): Observable<SelectFilterValue[]> {\n if (value === undefined) {\n value = \"\";\n }\n\n return this.http.get<SelectFilterValue[]>(this.url(`filter/config/value?id=${id}&value=${value}`));\n }\n\n public searchFilterResourceValue(id: string, resourceId: number): Observable<SelectFilterValue> {\n return this.http.get<SelectFilterValue>(this.url(`filter/config/id?id=${id}&resourceId=${resourceId}`));\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 { 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, TemplateRef } from \"@angular/core\";\n\n@Directive({ selector: \"[niceListTable]\" })\nexport class NiceBaseListTableDirective {\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 { 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\";\n\n@NgModule({\n declarations: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective\n ],\n exports: [\n NiceBaseListButtonsDirective,\n NiceBaseListTitleDirective,\n NiceBaseListTableDirective,\n NiceBaseListCardsDirective,\n NiceBaseListCustomContentDirective,\n NiceBaseListEmptyStateDirective,\n NiceBaseListFiltersDirective\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 };\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 { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { NiceFilterApi, NiceHttpOptions } from \"../../../api/filter.api\";\nimport { FilterConfigurationModel, FilterParametersModel, FilterResultModel, SelectFilterValue } from \"../../../models/filter.model\";\nimport { FilterUtils } from \"../../../utils/filter.utils\";\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(protected api?: NiceFilterApi<T>) {}\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(filterConfig: FilterConfigurationModel, value: string): Observable<SelectFilterValue[]> {\n return this.api?.searchFilterValue(filterConfig.id, value);\n }\n\n public searchFilterResourceValue(\n filterConfig: FilterConfigurationModel,\n resourceId: number\n ): Observable<SelectFilterValue> {\n return this.api?.searchFilterResourceValue(filterConfig.id, resourceId);\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\");\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 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;\n length?: number;\n order?: OrderModel | null; // This is the primary order (used for the mat table)\n fallbackOrder?: OrderModel | OrderModel[]; // These orders are fallback; well be placed after order\n search?: string;\n rules?: QueryModel[];\n draw?: number;\n data?: object;\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;\n direction?: \"asc\" | \"desc\";\n nullLast?: boolean;\n}\n\nexport interface FilterQueryModel {\n page?: FilterPageMode;\n search?: FilterSearchModel;\n query?: QueryModel;\n order?: OrderModel | OrderModel[];\n data?: object | undefined;\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}\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 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 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 { 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();\n protected loadingData = false;\n\n constructor(\n protected store: NiceBaseListStore,\n @Inject(NiceFilterService)\n protected filterService: Filter,\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 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) {\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 { 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 { 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, 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, 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, ViewEncapsulation } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\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","<mat-form-field class=\"flex-auto\">\n <input matInput [matDatepicker]=\"picker\" [ngModel]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n","export abstract class NiceFilterGroupService<T> {\n public abstract getFilterGroupIconClass(group: T): string;\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceFilterGroupService } from \"../providers/filter-group.service\";\n\n@Pipe({\n name: \"filterGroupIcon\"\n})\nexport class FilterGroupIconPipe implements PipeTransform {\n constructor(private service: NiceFilterGroupService<any>) {}\n\n public transform(value: string): string {\n return this.service.getFilterGroupIconClass(value);\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>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\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, EventEmitter, Input, OnInit, 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 { 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(private formGroupName: FormGroupName) {}\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 class=\"config-name-icon\">arrow_drop_down</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=\"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>delete</mat-icon>\n </button>\n </div>\n\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, forwardRef, Input, 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 { 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(public formGroup: GeneratedFormGroup<QueryBuilderForm>) {\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>add</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 class=\"ml-8\">refresh</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\";\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, { read: TemplateRef })\n public table: TemplateRef<any>;\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 @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\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; else showData\">\n <ng-container *ngTemplateOutlet=\"emptyState\"></ng-container>\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: true\"></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; 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; 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; 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 { Platform } from \"@angular/cdk/platform\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MAT_DATE_LOCALE, NativeDateAdapter } from \"@angular/material/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Injectable()\nexport class NiceCustomDateAdapter extends NativeDateAdapter {\n constructor(private translateService: TranslateService, @Inject(MAT_DATE_LOCALE) locale: any, platform: Platform) {\n super(locale, platform);\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 { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { 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 { NgxMaskModule } from \"ngx-mask\";\nimport { NiceCustomDateAdapter } from \"../../utils/date.adapter\";\nimport { FilterSelectionComponent } from \"./filter-selection/filter-selection.component\";\nimport { FilterGroupIconPipe } from \"./pipes/filter-group-icon.pipe\";\nimport { QueryBuilderTriggerDirective } from \"./query-builder-trigger.directive\";\nimport { NiceQueryBuilderComponent } from \"./query-builder.component\";\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\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 NgxMaskModule\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","export type NiceBaseListIcons = { matIcon: string; svgIcon?: 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,\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 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 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 { NiceFilterApi } 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]: NiceFilterApi<any> }) {\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 { 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 store: NiceMultiStateListStore,\n activatedRoute: ActivatedRoute,\n router: Router,\n appRef: ApplicationRef,\n private multiFilterService: NiceMultiStateFilterService\n ) {\n super(store, multiFilterService, 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, 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 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 ...(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","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/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":["Array"],"mappings":"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"}
|