@smartsoft001/crud-shell-angular 2.122.0 → 2.124.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"smartsoft001-crud-shell-angular.mjs","sources":["../../../../../../packages/crud/shell/angular/src/lib/crud.config.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.actions.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.selectors.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.facade.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.reducer.ts","../../../../../../packages/crud/shell/angular/src/lib/components/export/export.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/check/check.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date/date.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date/date.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/flag/flag.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/int/int.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/int/int.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/radio/radio.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/text/text.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/filter.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/filter.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filters/filters.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filters-config/filters-config.component.ts","../../../../../../packages/crud/shell/angular/src/lib/providers/model-possibilities/model-possibilities.provider.ts","../../../../../../packages/crud/shell/angular/src/lib/pipes/form-options/form-options.pipe.ts","../../../../../../packages/crud/shell/angular/src/lib/pipes/pipes.module.ts","../../../../../../packages/crud/shell/angular/src/lib/components/multiselect/multiselect.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/multiselect/multiselect.component.html","../../../../../../packages/crud/shell/angular/src/lib/services/list-group/list-group.service.ts","../../../../../../packages/crud/shell/angular/src/lib/components/group/group.component.ts","../../../../../../packages/crud/shell/angular/src/lib/factories/list-pagination/list-pagination.factory.ts","../../../../../../packages/crud/shell/angular/src/lib/services/crud/crud.service.ts","../../../../../../packages/crud/shell/angular/src/lib/components/components.module.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.effects.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/standard/standard.component.ts","../../../../../../packages/crud/shell/angular/src/lib/services/page/page.service.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/item.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/standard/standard.component.ts","../../../../../../packages/crud/shell/angular/src/lib/services/search/search.service.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/list.component.ts","../../../../../../packages/crud/shell/angular/src/lib/crud-full.module.ts","../../../../../../packages/crud/shell/angular/src/lib/crud.module.ts","../../../../../../packages/crud/shell/angular/src/smartsoft001-crud-shell-angular.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\n\nimport {\n IIconButtonOptions,\n ICellPipe,\n InputBaseComponent,\n ListMode,\n PaginationMode,\n} from '@smartsoft001/angular';\n\nimport { ICrudFilterQueryItem, ICrudListGroup } from './models';\n\n@Injectable()\nexport class CrudConfig<T> {\n apiUrl!: string;\n entity!: string;\n type?: any;\n reducerFactory?: () => any;\n baseQuery?: Array<ICrudFilterQueryItem>;\n}\n\n@Injectable()\nexport class CrudFullConfig<T> extends CrudConfig<T> {\n title!: string;\n details?:\n | boolean\n | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n edit?:\n | boolean\n | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n add?:\n | boolean\n | {\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n remove?: boolean;\n search?: boolean;\n export?: boolean;\n pagination?: {\n limit: number;\n };\n sort?:\n | boolean\n | {\n default?: string;\n defaultDesc?: boolean;\n };\n list?: {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n multi?: any;\n };\n mode?: ListMode;\n paginationMode?: PaginationMode;\n resetQuery?: 'beforeInit';\n groups?: Array<ICrudListGroup>;\n };\n buttons?: Array<IIconButtonOptions>;\n inputComponents?: {\n [key: string]: Type<InputBaseComponent<T>>;\n };\n}\n","import { Action } from '@ngrx/store';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudCreateManyOptions, ICrudFilter } from '../models';\n\n/*\n * Create\n */\nexport const create = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Create`,\n item,\n };\n};\n\nexport const createSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Create Success`,\n item,\n };\n};\n\nexport const createFailure = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n error: any,\n): Action & { item: T; error: any } {\n return {\n type: `[${entity}] Create Failure`,\n item,\n error,\n };\n};\n\n/*\n * Create many\n */\nexport const createMany = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many`,\n data,\n };\n};\n\nexport const createManySuccess = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many Success`,\n data,\n };\n};\n\nexport const createManyFailure = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n error: any,\n): Action & {\n data: { items: T[]; options: ICrudCreateManyOptions };\n error: any;\n} {\n return {\n type: `[${entity}] Create Many Failure`,\n data,\n error,\n };\n};\n\n/*\n * Read\n */\nexport const read = function (\n entity: string,\n filter?: ICrudFilter,\n): Action & { filter?: ICrudFilter } {\n return {\n type: `[${entity}] Read`,\n filter: filter,\n };\n};\n\nexport const readSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n filter: F,\n result: { data: T[]; totalCount: number; links: any },\n): Action & {\n result: { data: T[]; totalCount: number; links: any };\n filter: F;\n} {\n return {\n type: `[${entity}] Read Success`,\n result,\n filter,\n };\n};\n\nexport const readFailure = function <F>(\n entity: string,\n filter: F,\n error: any,\n): Action & { filter: F; error: any } {\n return {\n type: `[${entity}] Read Failure`,\n filter,\n error,\n };\n};\n\n/*\n * Clear\n */\nexport const clear = function (entity: string): Action {\n return {\n type: `[${entity}] Clear`,\n };\n};\n\n/*\n * Export\n */\nexport const exportList = function (\n entity: string,\n filter: ICrudFilter | null = null,\n format: any,\n): Action & { filter: ICrudFilter; format: any } {\n return {\n type: `[${entity}] Export`,\n filter: filter as any,\n format,\n };\n};\n\nexport const exportListSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n filter: F,\n): Action & { filter: F } {\n return {\n type: `[${entity}] Export Success`,\n filter,\n };\n};\n\nexport const exportListFailure = function <F>(\n entity: string,\n filter: F,\n error: any,\n): Action & { filter: F; error: any } {\n return {\n type: `[${entity}] Export Failure`,\n filter,\n error,\n };\n};\n\n/*\n * Select\n */\nexport const select = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Select`,\n id,\n };\n};\n\nexport const selectSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n id: string,\n item: T,\n): Action & { id: string; item: T } {\n return {\n type: `[${entity}] Select Success`,\n id,\n item,\n };\n};\n\nexport const selectFailure = function <F>(\n entity: string,\n id: string,\n error: any,\n): Action & { id: string; error: any } {\n return {\n type: `[${entity}] Select Failure`,\n id,\n error,\n };\n};\n\nexport const unselect = function (entity: string): Action {\n return {\n type: `[${entity}] Unselect`,\n };\n};\n\n/*\n * MultiSelect\n */\nexport const multiSelect = function <T extends IEntity<string>>(\n entity: string,\n items: Array<T>,\n): Action & { items: Array<T> } {\n return {\n type: `[${entity}] MultiSelect`,\n items,\n };\n};\n\n/*\n * Update\n */\nexport const update = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Update`,\n item,\n };\n};\n\nexport const updateSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Update Success`,\n item,\n };\n};\n\nexport const updateFailure = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n error: any,\n): Action & { item: T; error: any } {\n return {\n type: `[${entity}] Update Failure`,\n item,\n error,\n };\n};\n\n/*\n * Update partial\n */\nexport const updatePartial = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial`,\n item,\n };\n};\n\nexport const updatePartialSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial Success`,\n item,\n };\n};\n\nexport const updatePartialFailure = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n error: any,\n): Action & { item: Partial<T> & { id: string }; error: any } {\n return {\n type: `[${entity}] Update partial Failure`,\n item,\n error,\n };\n};\n\n/*\n * Update partial many\n */\nexport const updatePartialMany = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many`,\n items,\n };\n};\n\nexport const updatePartialManySuccess = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many Success`,\n items,\n };\n};\n\nexport const updatePartialManyFailure = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n error: any,\n): Action & { items: Partial<T> & { id: string }[]; error: any } {\n return {\n type: `[${entity}] Update partial many Failure`,\n items,\n error,\n };\n};\n\n/*\n * Delete\n */\nexport const deleteItem = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete`,\n id,\n };\n};\n\nexport const deleteSuccess = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete Success`,\n id,\n };\n};\n\nexport const deleteFailure = function <F>(\n entity: string,\n id: string,\n error: any,\n): Action & { id: string; error: any } {\n return {\n type: `[${entity}] Delete Failure`,\n id,\n error,\n };\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\n\nexport const getCrudState = (entity: string) =>\n createFeatureSelector<any>(entity);\n\nexport const getCrudSelected = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state.selected);\n\nexport const getCrudMultiSelected = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state.multiSelected);\n\nexport const getCrudList = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.list);\n\nexport const getCrudTotalCount = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.totalCount);\n\nexport const getCrudLinks = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.links);\n\nexport const getCrudLoaded = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.loaded);\n\nexport const getCrudFilter = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.filter);\n\nexport const getCrudError = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.error);\n","import { Injectable, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { select, Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\n\nimport { NgrxStoreService } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudConfig } from '../crud.config';\nimport * as CrudActions from './crud.actions';\nimport * as CrudSelectors from './crud.selectors';\nimport {\n ICrudCreateManyOptions,\n ICrudFilter,\n ICrudFilterQueryItem,\n} from '../models';\n\n@Injectable()\nexport class CrudFacade<T extends IEntity<string>> {\n readonly loaded: Signal<boolean | undefined>;\n readonly loading: Signal<boolean>;\n readonly selected: Signal<T | undefined>;\n readonly multiSelected: Signal<T[] | undefined>;\n readonly list: Signal<T[] | undefined>;\n readonly filter: Signal<ICrudFilter | undefined>;\n readonly totalCount: Signal<number | undefined>;\n readonly links: Signal<any>;\n readonly error: Signal<any>;\n\n constructor(\n private readonly store: Store<any>,\n private config: CrudConfig<T>,\n ) {\n if (NgrxStoreService.store) {\n this.store = NgrxStoreService.store;\n }\n\n // Initialize all signals in the constructor (injection context)\n this.loaded = toSignal<boolean>(\n this.store.pipe(select(CrudSelectors.getCrudLoaded(this.config.entity))),\n );\n\n this.loading = toSignal<boolean>(\n this.store.pipe(\n select(CrudSelectors.getCrudLoaded(this.config.entity)),\n map((l) => !l),\n ),\n ) as Signal<boolean>;\n\n this.selected = toSignal<T>(\n this.store.pipe(\n select(CrudSelectors.getCrudSelected(this.config.entity)),\n ),\n );\n\n this.multiSelected = toSignal<T[]>(\n this.store.pipe(\n select(CrudSelectors.getCrudMultiSelected(this.config.entity)),\n ),\n );\n\n this.list = toSignal<T[]>(\n this.store.pipe(select(CrudSelectors.getCrudList(this.config.entity))),\n );\n\n this.filter = toSignal<ICrudFilter>(\n this.store.pipe(select(CrudSelectors.getCrudFilter(this.config.entity))),\n );\n\n this.totalCount = toSignal<number>(\n this.store.pipe(\n select(CrudSelectors.getCrudTotalCount(this.config.entity)),\n ),\n );\n\n this.links = toSignal<any>(\n this.store.pipe(select(CrudSelectors.getCrudLinks(this.config.entity))),\n );\n\n this.error = toSignal<any>(\n this.store.pipe(select(CrudSelectors.getCrudError(this.config.entity))),\n );\n }\n\n create(item: T): void {\n this.store.dispatch(CrudActions.create(this.config.entity, item));\n }\n\n createMany(items: Array<T>, options: ICrudCreateManyOptions): void {\n this.store.dispatch(\n CrudActions.createMany(this.config.entity, { items, options }),\n );\n }\n\n read(filter: ICrudFilter = {}): void {\n let baseQuery: ICrudFilterQueryItem[] = [];\n if (this.config.baseQuery) {\n baseQuery = this.config.baseQuery;\n }\n\n const fullFilter = {\n ...(filter ? filter : {}),\n query: filter && filter.query ? filter.query : baseQuery,\n };\n\n this.store.dispatch(CrudActions.read(this.config.entity, fullFilter));\n }\n\n clear(): void {\n this.store.dispatch(CrudActions.clear(this.config.entity));\n }\n\n select(id: string): void {\n this.store.dispatch(CrudActions.select(this.config.entity, id));\n }\n\n unselect(): void {\n this.store.dispatch(CrudActions.unselect(this.config.entity));\n }\n\n multiSelect(items: Array<T>): void {\n this.store.dispatch(CrudActions.multiSelect(this.config.entity, items));\n }\n\n update(item: T): void {\n this.getStore().dispatch(CrudActions.update(this.config.entity, item));\n }\n\n export(filter: ICrudFilter = {}, format?: string): void {\n this.getStore().dispatch(\n CrudActions.exportList(this.config.entity, filter, format),\n );\n }\n\n updatePartial(item: Partial<T> & { id: string }): void {\n this.getStore().dispatch(\n CrudActions.updatePartial(this.config.entity, item),\n );\n }\n\n updatePartialMany(items: (Partial<T> & { id: string })[]) {\n this.getStore().dispatch(\n CrudActions.updatePartialMany(this.config.entity, items),\n );\n }\n\n delete(id: string): void {\n this.getStore().dispatch(CrudActions.deleteItem(this.config.entity, id));\n }\n\n private getStore(): Store {\n if (NgrxStoreService.store) return NgrxStoreService.store;\n\n return this.store;\n }\n}\n","import { Action } from '@ngrx/store';\n\nimport { PaginationMode } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudFilter } from '../models';\n\nexport interface State<T extends IEntity<string>> {\n selected?: T;\n multiSelected?: Array<T>;\n list?: T[];\n totalCount?: number;\n filter?: ICrudFilter;\n links?: any;\n loaded: boolean; // has the Auth list been loaded\n error?: string | null; // last none error (if any)\n}\n\nexport const initialState: State<any> = {\n loaded: false,\n};\n\nconst crudReducer = (\n state: State<any>,\n action: Action & any,\n entity: string,\n) => {\n if (!state) {\n state = { ...initialState };\n }\n\n switch (action.type) {\n case `[${entity}] Create`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Create Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Create Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Create Many`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Create Many Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Create Many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Export`:\n return {\n ...state,\n loaded: false,\n };\n\n case `[${entity}] Export Success`:\n return {\n ...state,\n loaded: true,\n };\n\n case `[${entity}] Export Failure`:\n return {\n ...state,\n loaded: true,\n };\n\n case `[${entity}] Read`:\n return {\n ...state,\n loaded: false,\n filter: action?.filter,\n error: null,\n totalCount: null,\n links: null,\n };\n\n case `[${entity}] Read Success`: {\n let list: any[] = [];\n\n if (\n action?.filter &&\n action?.filter.offset &&\n state.list &&\n action?.filter.paginationMode !== PaginationMode.singlePage\n ) {\n state.list.forEach((i) => {\n list.push(i);\n });\n\n list = [...list, ...action.result.data];\n } else {\n list = action.result.data;\n }\n\n return {\n ...state,\n loaded: true,\n list,\n totalCount: action?.result?.totalCount,\n links: action.result.links,\n error: null,\n };\n }\n\n case `[${entity}] Clear`:\n return { ...initialState };\n\n case `[${entity}] Read Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Select`:\n return {\n ...state,\n loaded: false,\n selected: null,\n error: null,\n };\n\n case `[${entity}] Select Success`:\n return {\n ...state,\n loaded: true,\n selected: action.item,\n error: null,\n };\n\n case `[${entity}] Select Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] MultiSelect`:\n return {\n ...state,\n multiSelected: [...action.items],\n };\n\n case `[${entity}] Unselect`:\n return {\n ...state,\n loaded: true,\n selected: null,\n error: null,\n };\n\n case `[${entity}] Update`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Update partial`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update partial Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update partial Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Update partial many`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update partial many Success`:\n return {\n ...state,\n multiSelected: [],\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update partial many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Delete`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Delete Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Delete Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n default:\n return state;\n }\n};\n\nexport function getReducer(entity: string) {\n return (state: any, action: Action) => {\n return crudReducer(state, action, entity);\n };\n}\n","import { Component, ElementRef, inject, OnInit } from '@angular/core';\n\nimport {\n BaseComponent,\n ButtonComponent,\n IButtonOptions,\n PopoverService,\n StyleService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state';\n\n@Component({\n selector: 'smart-crud-export',\n template: `\n <div class=\"smart:p-5\">\n <p class=\"smart:my-2.5 smart:mx-0\">\n <smart-button\n [options]=\"buttonExportCsvOptions\"\n class=\"smart:w-full smart:block\"\n >CSV</smart-button\n >\n </p>\n <p>\n <smart-button\n [options]=\"buttonExportXlsxOptions\"\n class=\"smart:w-full smart:block\"\n >XLSX</smart-button\n >\n </p>\n </div>\n `,\n imports: [ButtonComponent],\n})\nexport class ExportComponent<T extends IEntity<string>>\n extends BaseComponent\n implements OnInit\n{\n private facade = inject(CrudFacade<T>);\n private popoverService = inject(PopoverService);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n buttonExportCsvOptions: IButtonOptions = this.initButtonExportOptions('csv');\n buttonExportXlsxOptions: IButtonOptions =\n this.initButtonExportOptions('xlsx');\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n private initButtonExportOptions(format: string): IButtonOptions {\n return {\n click: () => {\n this.facade.export(\n {\n ...this.facade.filter(),\n offset: undefined,\n limit: undefined,\n },\n format,\n );\n\n const loading = this.facade.loading();\n if (loading) return;\n this.popoverService.close().then();\n },\n loading: this.facade.loading,\n };\n }\n}\n","import {\n Directive,\n inject,\n input,\n InputSignal,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Debounce } from 'lodash-decorators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { FieldType, IModelFilter } from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { ICrudFilter } from '../../../models';\n\n@Directive()\nexport class BaseComponent<T extends IEntity<string>> implements OnInit {\n protected facade = inject(CrudFacade<T>);\n protected translateService = inject(TranslateService);\n\n possibilities!: Signal<{ id: any; text: string }[]>;\n\n readonly item: InputSignal<IModelFilter | undefined> = input<IModelFilter>();\n readonly filter: InputSignal<ICrudFilter | undefined> = input<ICrudFilter>();\n\n get value(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === item.type)\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === item.type,\n );\n return query?.value;\n }\n\n set value(val: any) {\n this.refresh(val);\n }\n\n get minValue(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === '>=')\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === '>=',\n );\n return query?.value;\n }\n\n set minValue(val: any) {\n this.refresh(val, '>=');\n }\n\n get maxValue(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === '<=')\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === '<=',\n );\n return query?.value;\n }\n\n set maxValue(val: any) {\n this.refresh(val, '<=');\n }\n\n get lang(): string {\n return this.translateService.currentLang;\n }\n\n @Debounce(500)\n refresh(val: any, type: string | null = null): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item) return;\n\n if (!type) type = item.type;\n if (!filter.query) filter.query = [];\n\n filter.offset = 0;\n\n if (this.isArrayType()) {\n this.refreshForArray(val as [], type);\n return;\n }\n\n let query = filter.query!.find(\n (q) => q.key === item.key && q.type === type,\n );\n\n if (val === null || val === undefined || val === '') {\n if (query) {\n const index = filter.query!.indexOf(query);\n if (index > -1) {\n filter.query!.splice(index, 1);\n }\n }\n\n this.facade.read(filter);\n return;\n }\n\n if (!query) {\n query = {\n key: item.key,\n type: type as '=' | '!=' | '>=' | '<=' | '<' | '>',\n value: null,\n };\n\n filter.query!.push(query);\n }\n\n query.value = val;\n query.label = item.label;\n\n this.facade.read(filter);\n }\n\n clear(): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return;\n\n filter.query = filter.query?.filter((q) => q.key !== item.key);\n filter.offset = 0;\n this.facade.read(filter);\n }\n\n ngOnInit(): void {\n this.initPossibilities();\n }\n\n private initPossibilities(): void {\n const item = this.item();\n if (item?.possibilities) {\n this.possibilities = item.possibilities;\n }\n }\n\n private isArrayType(): boolean {\n const item = this.item();\n return item?.fieldType === FieldType.check;\n }\n\n private refreshForArray(vals: [], type: string): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item) return;\n if (!filter.query) filter.query = [];\n\n const queries =\n filter.query?.filter((q) => q.key === item.key && q.type === type) || [];\n\n queries.forEach((query) => {\n const index = filter.query!.indexOf(query);\n if (index > -1) {\n filter.query!.splice(index, 1);\n }\n });\n\n if (vals === null || vals === undefined || !vals.length) {\n this.facade.read(filter);\n return;\n }\n\n vals.forEach((val) => {\n const query = {\n key: item.key,\n type: type as '=' | '!=' | '>=' | '<=' | '<' | '>',\n value: val,\n };\n\n filter.query!.push(query);\n });\n\n this.facade.read(filter);\n }\n}\n","import { AfterContentInit, Component, computed, Signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-check',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item-divider class=\"text-xl font-light\">-->\n <!-- <ion-icon class=\"mr-6 text-2xl\" slot=\"start\" name=\"filter-outline\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n @if (value?.length) {\n <!-- <ion-button-->\n <!-- slot=\"end\"-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh([])\"-->\n <!-- class=\"square-button m-0 p-0 text-lg h-9 w-9\"-->\n <!-- >-->\n <!-- <ion-icon class=\"text-2xl m-0 p-0\" slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n }\n <!-- </ion-item-divider>-->\n\n @for (entry of list(); track entry) {\n <!-- <ion-item>-->\n <!--<ion-label>-->{{ entry.value.text | translate\n }}<!--</ion-label>-->\n <!-- <ion-checkbox-->\n <!-- slot=\"end\"-->\n <!-- [checked]=\"entry.isCheck\"-->\n <!-- (ionChange)=\"onCheckChange($event.detail.checked, entry)\"-->\n <!-- ></ion-checkbox>-->\n <!-- </ion-item>-->\n }\n <!-- </ion-col>-->\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe],\n styleUrls: ['./check.component.scss'],\n})\nexport class FilterCheckComponent<T extends IEntity<string>>\n extends BaseComponent<T>\n implements AfterContentInit\n{\n list!: Signal<{ value: any; isCheck: boolean }[]>;\n\n ngAfterContentInit(): void {\n this.list = computed(() => {\n const possibilities = this.possibilities();\n return possibilities.map((pos) => ({\n value: pos,\n isCheck: this.value.some((r: any) => r === pos.id),\n }));\n });\n }\n\n onCheckChange(checked: boolean, entry: { value: any; isCheck: boolean }) {\n if (checked && !this.value.some((r: any) => r === entry.value.id)) {\n this.value = [...this.value, entry.value.id];\n }\n\n if (!checked && this.value.some((r: any) => r === entry.value.id)) {\n this.value = this.value?.filter((r: any) => r !== entry.value.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport moment from 'moment';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-date',\n templateUrl: './date.component.html',\n imports: [FormsModule, TranslatePipe],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {\n id = GuidService.create();\n\n get allowAdvanced(): boolean {\n const item = this.item();\n return item?.type === '=';\n }\n\n set customValue(val) {\n const momentDate = moment(val);\n this.value =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customValue(): any {\n return this.value;\n }\n\n set customMinValue(val) {\n const momentDate = moment(val);\n this.minValue =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customMinValue(): any {\n return this.minValue;\n }\n\n set customMaxValue(val) {\n const momentDate = moment(val);\n this.maxValue =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customMaxValue(): any {\n return this.maxValue;\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-item button=\"true\" id=\"open-date-input-{{ id }}\" color=\"primary\">-->\n<!-- <ion-text>-->\n{{ customValue ? customValue : ('select' | translate) }}\n<!-- </ion-text>-->\n<!-- <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">-->\n<ng-template>\n <!-- <ion-datetime-->\n <!-- displayFormat=\"YYYY-MM-DD\"-->\n <!-- pickerFormat=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- presentation=\"date\"-->\n <!-- ></ion-datetime>-->\n</ng-template>\n<!-- </ion-popover>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n\n@if (value) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { FilterDateComponent } from '../date/date.component';\n\n@Component({\n selector: 'smart-crud-filter-date-time',\n templateUrl: './date-time.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateTimeComponent<T extends IEntity<string>>\n extends FilterDateComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n override id = GuidService.create();\n\n // @ViewChild(IonDatetime, { read: IonDatetime, static: false })\n // dateTimePicker: IonDatetime;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // if (this.dateTimePicker) {\n // this._subscriptions.add(\n // this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n // this.customValue = val.detail.value;\n // }),\n // );\n // } else {\n // console.error('dateTimePicker not found!');\n // }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n<!-- </ion-col>-->\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-item>-->\n<!-- <ion-label>-->\n{{ 'from' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-input-->\n<!-- placeholder=\"YYYY-MM-DD HH:mm:ss\"-->\n<!-- [(ngModel)]=\"customMinValue\"-->\n<!-- pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"-->\n<!-- ></ion-input>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n@if (customMinValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!-- <ion-col>-->\n<!-- <ion-item>-->\n<!-- <ion-label>-->\n{{ 'to' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-input-->\n<!-- placeholder=\"YYYY-MM-DD HH:mm:ss\"-->\n<!-- [(ngModel)]=\"customMaxValue\"-->\n<!-- pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"-->\n<!-- ></ion-input>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n@if (customMaxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n","import {\n Component,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { FilterDateComponent } from '../date/date.component';\n\n@Component({\n selector: 'smart-crud-filter-date-with-edit',\n templateUrl: './date-with-edit.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateWithEditComponent<T extends IEntity<string>>\n extends FilterDateComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n advanced: WritableSignal<boolean> = signal(false);\n override id = GuidService.create();\n\n // @ViewChild(IonDatetime, { read: IonDatetime, static: false })\n // dateTimePicker: IonDatetime;\n\n toggleAdvanced(): void {\n this.advanced.update((val) => !val);\n if (this.advanced()) {\n this.value = null;\n }\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // if (this.dateTimePicker) {\n // this._subscriptions.add(\n // this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n // this.customValue = val.detail.value;\n // }),\n // );\n // } else {\n // console.error('dateTimePicker not found!');\n // }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n\n@if (!advanced()) {\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n}\n<!-- </ion-col>-->\n\n@if (!advanced()) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button id=\"open-date-input-{{ id }}\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"calendar-outline\"></ion-icon>-->\n <!-- <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">-->\n <ng-template>\n <!-- <ion-datetime-->\n <!-- displayFormat=\"YYYY-MM-DD\"-->\n <!-- pickerFormat=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- presentation=\"date\"-->\n <!-- first-day-of-week=\"1\"-->\n <!-- locale=\"{{ lang }}\"-->\n <!-- ></ion-datetime>-->\n </ng-template>\n <!-- </ion-popover>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (allowAdvanced) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- (click)=\"toggleAdvanced()\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- [disabled]=\"minValue || maxValue\"-->\n <!-- >-->\n @if (!advanced()) {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings-outline\"></ion-icon>-->\n } @else {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings\"></ion-icon>-->\n }\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n\n@if ((advanced() || minValue || maxValue) && allowAdvanced) {\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'from' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customMinValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (customMinValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'to' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customMaxValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n\n @if (customMaxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-flag',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <div\n class=\"flag-container w-full flex flex-row flex-nowrap justify-between pr-5\"\n >\n <!-- <ion-label class=\"align-middle my-6\" position=\"static\">-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-checkbox [(ngModel)]=\"value\" slot=\"end\"></ion-checkbox>-->\n </div>\n <!-- </ion-col>-->\n @if (typeof value === 'boolean') {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .flag-container {\n ion-label {\n /*--color: var(--smart-color-dark);*/\n }\n }\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterFlagComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import {\n Component,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-int',\n templateUrl: './int.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterIntComponent<T extends IEntity<string>>\n extends BaseComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n advanced: WritableSignal<boolean> = signal<boolean>(false);\n\n get allowAdvanced(): boolean {\n return this.item()?.type === '=';\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n\n toggleAdvanced(): void {\n this.advanced.update((val) => !val);\n if (this.advanced()) this.value = null;\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n@if (!advanced()) {\n <!-- <ion-input [(ngModel)]=\"value\" type=\"number\" step=\"1\"></ion-input>-->\n}\n<!-- </ion-col>-->\n@if (allowAdvanced) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- (click)=\"toggleAdvanced()\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- [disabled]=\"minValue || maxValue\"-->\n <!-- >-->\n @if (!advanced()) {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings-outline\"></ion-icon>-->\n } @else {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings\"></ion-icon>-->\n }\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n@if ((advanced() || minValue || maxValue) && allowAdvanced) {\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'from' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"minValue\" type=\"number\" step=\"1\"></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (minValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'to' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"maxValue\" type=\"number\" step=\"1\"></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-radio',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-radio-group [(ngModel)]=\"value\">-->\n <!-- <ion-item-divider class=\"font-light text-xl\">-->\n <!-- <ion-icon class=\"mr-6 text-2xl\" slot=\"start\" name=\"filter-outline\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n @if (value || value === false) {\n <!-- <ion-button-->\n <!-- slot=\"end\"-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-0 text-lg h-9 w-9 p-0\"-->\n <!-- >-->\n <!-- <ion-icon class=\"mr-6 text-2xl m-0 p-0\" slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n }\n <!-- </ion-item-divider>-->\n\n @for (item of possibilities(); track item) {\n <!-- <ion-item>-->\n <!-- <ion-label>{{ item.text | translate }}</ion-label>-->\n <!-- <ion-radio class=\"mr-10\" [value]=\"item.id\"></ion-radio>-->\n <!-- </ion-item>-->\n }\n <!-- </ion-radio-group>-->\n <!-- </ion-col>-->\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n margin-bottom: 1.2rem;\n ion-item-divider {\n //--padding-end: 0.8rem;\n //--ion-background-color: linear-gradient(\n // 90deg,\n // transparent,\n // var(--ion-color-light)\n //);\n ion-icon {\n //--color: var(--ion-color-primary);\n }\n ion-label {\n //--padding: var(--smart-button-padding-left) / 2\n // var(--smart-button-padding-top) / 2 var(--smart-button-padding-right) /\n // 2 var(--smart-button-padding-bottom) / 2;\n }\n .square-button {\n //--padding-start: 0.2em;\n //--padding-end: 0.2em;\n }\n }\n }\n `,\n ],\n})\nexport class FilterRadioComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-text',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-label position=\"floating\">-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"value\"></ion-input>-->\n <!-- </ion-col>-->\n @if (value) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterTextComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import { Component, input } from '@angular/core';\n\nimport { FieldType, IModelFilter } from '@smartsoft001/models';\n\nimport { ICrudFilter } from '../../models';\nimport { FilterCheckComponent } from './check/check.component';\nimport { FilterDateComponent } from './date/date.component';\nimport { FilterDateTimeComponent } from './date-time/date-time.component';\nimport { FilterDateWithEditComponent } from './date-with-edit/date-with-edit.component';\nimport { FilterFlagComponent } from './flag/flag.component';\nimport { FilterIntComponent } from './int/int.component';\nimport { FilterRadioComponent } from './radio/radio.component';\nimport { FilterTextComponent } from './text/text.component';\n\n@Component({\n selector: 'smart-crud-filter',\n templateUrl: './filter.component.html',\n imports: [\n FilterTextComponent,\n FilterIntComponent,\n FilterFlagComponent,\n FilterCheckComponent,\n FilterRadioComponent,\n FilterDateTimeComponent,\n FilterDateWithEditComponent,\n FilterDateComponent,\n ],\n})\nexport class FilterComponent {\n FieldType = FieldType;\n\n item = input<IModelFilter>();\n filter = input<ICrudFilter>();\n}\n","<!--<ion-item>-->\n@switch (item()?.fieldType) {\n @case (FieldType.date) {\n <smart-crud-filter-date\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date>\n }\n @case (FieldType.dateWithEdit) {\n <smart-crud-filter-date-with-edit\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date-with-edit>\n }\n @case (FieldType.dateTime) {\n <smart-crud-filter-date-time\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date-time>\n }\n @case (FieldType.radio) {\n <smart-crud-filter-radio\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-radio>\n }\n @case (FieldType.check) {\n <smart-crud-filter-check\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-check>\n }\n @case (FieldType.flag) {\n <smart-crud-filter-flag\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-flag>\n }\n @case (FieldType.int) {\n <smart-crud-filter-int\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-int>\n }\n @default {\n <smart-crud-filter-text\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-text>\n }\n}\n<!--</ion-item>-->\n","import {\n Component,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnInit,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\n\nimport { MenuService, StyleService } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n FieldType,\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldListMetadata,\n IModelFilter,\n} from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { CrudConfig } from '../../crud.config';\nimport { ICrudFilter } from '../../models';\nimport { FilterComponent } from '../filter';\n\n/**\n * This component is only to use in crud module\n * @requires CrudModule\n * @example\n *\n * html: <smart-crud-filters></smart-crud-filters>\n *\n * use on the model:\n * @Model({\n titleKey: 'body',\n filters: [\n {\n label: 'testNegation',\n key: 'body',\n type: '!=',\n },\n {\n label: 'fromDate',\n key: 'createDate',\n type: '<=',\n fieldType: FieldType.dateWithEdit\n },\n {\n label: 'select',\n key: 'type',\n type: '=',\n fieldType: FieldType.radio,\n possibilities$: of([\n {\n id: 1, text: 'Test 1'\n },\n {\n id: 2, text: 'Test 2'\n }\n ])\n }\n ]\n})\n *\n * use on the field (list.filter property):\n * @Field({\n create: modifyMetdata,\n update: {\n ...modifyMetdata,\n multi: true\n },\n type: FieldType.longText,\n details: true,\n list: {\n order: 2,\n filter: true\n }\n })\n body: string;\n */\n@Component({\n selector: 'smart-crud-filters',\n template: `\n <!--<ion-header [hidden]=\"hideMenu()\">-->\n <!-- <ion-toolbar>-->\n <!-- <ion-buttons slot=\"end\">-->\n <!-- <ion-button (click)=\"onClose()\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-buttons>-->\n <!-- <ion-title>{{ 'filters' | translate }}</ion-title>-->\n <!-- </ion-toolbar>-->\n <!--</ion-header>-->\n <!--<ion-content style=\"height: 100vh\">-->\n <!-- <ion-list>-->\n @for (item of list(); track item) {\n <smart-crud-filter [item]=\"item\" [filter]=\"filter()\"></smart-crud-filter>\n }\n <!-- </ion-list>-->\n <div class=\"h-20\">&nbsp;</div>\n <!--</ion-content>-->\n `,\n imports: [FilterComponent],\n})\nexport class FiltersComponent<T extends IEntity<string>> implements OnInit {\n private menuService = inject(MenuService);\n private config = inject(CrudConfig<T>);\n private facade = inject(CrudFacade<T>);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n list!: WritableSignal<Array<IModelFilter>>;\n\n filter!: Signal<ICrudFilter | undefined>;\n\n /**\n * Hide menu used only from MenuService\n */\n readonly hideMenu: InputSignal<boolean> = input<boolean>(false);\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n this.list = signal([]);\n\n const modelFilters = getModelOptions(this.config.type)?.filters;\n\n this.list.set([\n ...(modelFilters\n ? modelFilters.map((item) => {\n if (!item.label) {\n item.label = 'MODEL.' + item.key;\n }\n return item;\n })\n : []),\n ...getModelFieldsWithOptions(new this.config.type())\n .filter((item) => (item.options?.list as IFieldListMetadata)?.filter)\n .map((item) => ({\n key: item.key,\n type:\n item.options.type === FieldType.text ||\n item.options.type === FieldType.longText\n ? ('~=' as const)\n : ('=' as const),\n label: 'MODEL.' + item.key,\n fieldType: item.options.type,\n })),\n ]);\n this.filter = this.facade.filter;\n }\n}\n","import {\n Component,\n computed,\n ElementRef,\n inject,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { StyleService } from '@smartsoft001/angular';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudFilterQueryItem } from '../../models';\n\n@Component({\n selector: 'smart-crud-filters-config',\n template: `\n @let query = this.query();\n @if (query && query?.length) {\n <!-- <ion-toolbar>-->\n @for (item of query; track item) {\n <!-- <ion-chip (click)=\"onRemoveQuery(item)\" color=\"medium\" outline=\"true\">-->\n <!-- <ion-icon name=\"filter-circle-outline\" color=\"primary\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ 'MODEL.' + item.key | translate }} {{ item.type }}\n {{ item.value | translate }}\n <!-- </ion-label>-->\n <!-- <ion-icon name=\"close\" color=\"danger\"></ion-icon>-->\n <!-- </ion-chip>-->\n }\n <!-- </ion-toolbar>-->\n }\n `,\n imports: [TranslatePipe],\n styles: [\n `\n :host {\n ion-label {\n font-size: var(--small-font-size);\n }\n }\n `,\n ],\n})\nexport class FiltersConfigComponent implements OnInit {\n private readonly facade = inject(CrudFacade<any>);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n query!: Signal<ICrudFilterQueryItem[]>;\n\n onRemoveQuery(item: ICrudFilterQueryItem): void {\n const filter = this.facade.filter();\n if (filter?.query) {\n const index = filter.query.indexOf(item);\n if (index > -1) {\n filter.query.splice(index, 1);\n }\n }\n this.facade.read(this.facade.filter());\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n\n this.query = computed(() => {\n const filter = this.facade.filter();\n return filter?.query?.filter((i) => !i.hidden) || [];\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated - please, use IModelPossibilitiesProvider from @smartsoft001/angular\n */\nexport abstract class ICrudModelPossibilitiesProvider {\n abstract get<T>(type: any): {\n [key: string]: Observable<{ id: any; text: string }[]>;\n };\n}\n\n/**\n * @deprecated - please, use MODEL_POSSIBILITIES_PROVIDER from @smartsoft001/angular\n */\nexport const CRUD_MODEL_POSSIBILITIES_PROVIDER =\n new InjectionToken<ICrudModelPossibilitiesProvider>(\n 'CRUD_MODEL_POSSIBILITIES_PROVIDER',\n );\n","import { inject, Pipe, PipeTransform, Type } from '@angular/core';\n\nimport { IFormOptions, InputBaseComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CRUD_MODEL_POSSIBILITIES_PROVIDER } from '../../providers/model-possibilities/model-possibilities.provider';\n\n@Pipe({\n name: 'smartFormOptions',\n})\nexport class FormOptionsPipe<T extends IEntity<string>>\n implements PipeTransform\n{\n private modelPossibilitiesProvider = inject(\n CRUD_MODEL_POSSIBILITIES_PROVIDER,\n );\n\n transform(\n item: T,\n mode: string,\n type: any,\n uniqueProvider?: (values: Record<keyof T, any>) => Promise<boolean>,\n inputComponents?: { [key: string]: Type<InputBaseComponent<any>> },\n ): IFormOptions<T> {\n if (!mode || !type) return null as any;\n\n let possibilities = {};\n\n if (type && this.modelPossibilitiesProvider) {\n possibilities = this.modelPossibilitiesProvider.get(type);\n }\n\n if (mode === 'create') {\n return {\n mode: 'create',\n possibilities,\n inputComponents,\n uniqueProvider,\n model: new type(),\n show: true,\n };\n } else {\n const model = new type();\n\n if (item) {\n Object.keys(item).forEach((key) => {\n (model as any)[key] = (item as any)[key];\n });\n }\n\n return {\n mode: mode,\n uniqueProvider,\n possibilities: possibilities,\n inputComponents,\n model: model,\n show: true,\n };\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormOptionsPipe } from './form-options/form-options.pipe';\n\n@NgModule({\n exports: [FormOptionsPipe],\n imports: [FormOptionsPipe],\n})\nexport class CrudPipesModule {}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, inject, Signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport * as _ from 'lodash';\nimport { DynamicIoDirective } from 'ng-dynamic-component';\n\nimport {\n ButtonComponent,\n FormComponent,\n IButtonOptions,\n MenuService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n getModelFieldsWithOptions,\n IFieldEditMetadata,\n} from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../+state';\nimport { CrudFullConfig } from '../../crud.config';\nimport { FormOptionsPipe } from '../../pipes';\n\n@Component({\n selector: 'smart-crud-multiselect',\n templateUrl: './multiselect.component.html',\n imports: [\n TranslatePipe,\n NgComponentOutlet,\n DynamicIoDirective,\n FormOptionsPipe,\n FormComponent,\n ButtonComponent,\n ],\n})\nexport class MultiselectComponent<T extends IEntity<string>> {\n private facade = inject(CrudFacade<T>);\n public config = inject(CrudFullConfig<T>);\n private menuService = inject(MenuService);\n\n private _list!: Array<T>;\n private _changes!: Partial<T>;\n\n item!: T;\n valid!: boolean;\n buttonOptions: IButtonOptions = {\n click: async () => {\n const result = this._list.map((item) => {\n return {\n ...this._changes,\n id: item.id,\n };\n });\n\n this.facade.updatePartialMany(result);\n await this.menuService.closeEnd();\n },\n confirm: true,\n };\n lock!: boolean;\n showForm = false;\n\n list!: Signal<T[]>;\n\n constructor() {\n this.list = computed(() => {\n const list = this.facade.multiSelected() || [];\n this.lock = true;\n const model = new this.config.type();\n\n const fieldsWithOptions = getModelFieldsWithOptions(model)?.filter(\n (f) => (f.options.update as IFieldEditMetadata)?.multi,\n );\n\n this.showForm = !!fieldsWithOptions.length;\n\n fieldsWithOptions.forEach(({ key }) => {\n const uniques = _.uniq(list.map((i) => i[key]));\n\n if (uniques.length === 1) {\n model[key] = uniques[0];\n }\n });\n\n this.item = model;\n\n return list;\n });\n }\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n onPartialChange(changes: Partial<T>, list: Array<T>) {\n this.lock = false;\n this._list = list;\n this._changes = changes;\n }\n\n onValidChange(valid: boolean) {\n this.valid = valid;\n }\n}\n","@let list = this.list();\n@if (list) {\n <!-- <ion-header>-->\n <!-- <ion-toolbar>-->\n <!-- <ion-buttons slot=\"end\">-->\n <!-- <ion-button (click)=\"onClose()\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-buttons>-->\n <!--<ion-title>-->{{ 'selected' | translate }}: {{ list?.length\n }}<!--</ion-title>-->\n <!-- </ion-toolbar>-->\n <!-- </ion-header>-->\n\n @if (config?.list?.components?.multi) {\n <div>\n <ng-template\n [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n }\n\n @if (showForm && item) {\n <div>\n <smart-form\n [options]=\"item | smartFormOptions: 'multiUpdate' : config.type\"\n (valuePartialChange)=\"onPartialChange($event, list)\"\n (validChange)=\"onValidChange($event)\"\n ></smart-form>\n\n <smart-button\n class=\"smart:float-right\"\n [disabled]=\"lock || !valid\"\n [options]=\"buttonOptions\"\n >\n {{ 'change' | translate }}\n </smart-button>\n </div>\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { debounce } from 'lodash-decorators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudListGroup } from '../../models';\n\n@Injectable()\nexport class CrudListGroupService<T extends IEntity<string>> {\n private facade = inject(CrudFacade<T>);\n\n private _destroyed: Array<ICrudListGroup> = [];\n\n change(val: boolean, item: ICrudListGroup, force = false): void {\n if (val || force) {\n item.changed = true;\n\n const filter = this.facade.filter();\n let current = filter?.query?.find(\n (q) => q.key === item.key && q.type === '=',\n );\n\n if (!current) {\n current = {\n key: item.key,\n type: '=',\n value: null,\n };\n if (filter?.query) {\n filter.query.push(current);\n }\n }\n\n current.value = item.value;\n current.hidden = true;\n\n this.facade.read({\n ...this.facade.filter(),\n offset: 0,\n });\n }\n }\n\n destroy(groups: Array<ICrudListGroup>): void {\n this._destroyed = [\n ...(this._destroyed ? this._destroyed : []),\n ...groups.filter((g) => g.changed),\n ];\n\n this.refresh();\n }\n\n @debounce(250)\n private refresh(): void {\n const list = this._destroyed;\n this._destroyed = [];\n\n const filter = this.facade.filter();\n const newQuery =\n filter?.query?.filter((q) => !list.some((i) => q.key === i.key)) || [];\n\n this.facade.read({\n ...this.facade.filter(),\n query: newQuery,\n });\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport {\n // TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n // AccordionBodyComponent,\n // AccordionComponent,\n // AccordionHeaderComponent,\n BaseComponent,\n IListOptions,\n ListComponent,\n StyleService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudListGroup } from '../../models';\nimport { CrudListGroupService } from '../../services/list-group/list-group.service';\n\n@Component({\n selector: 'smart-crud-group',\n template: `\n <!-- TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n @for (item of groups(); track item.key) {\n <smart-accordion\n [show]=\"item.show || false\"\n (showChange)=\"change($event, item)\"\n >\n <smart-accordion-header [ngClass]=\"{ 'font-bold': item.show }\">\n {{ item.text | translate }}\n </smart-accordion-header>\n <smart-accordion-body>\n @if (item.show && !item.children && listOptions()) {\n <smart-list [options]=\"listOptions()!\"></smart-list>\n }\n @if (item.children) {\n <div style=\"margin-left: 50px\">\n <smart-crud-group\n [groups]=\"item.children\"\n [listOptions]=\"listOptions()\"\n ></smart-crud-group>\n </div>\n }\n </smart-accordion-body>\n </smart-accordion>\n }\n -->\n\n <!-- TODO: remove this template after moving to @smartsoft001-pro/angular (FRA-101) -->\n @for (item of groups(); track item.key) {\n <div (click)=\"change(!item.show, item)\">\n {{ item.text | translate }}\n </div>\n @if (item.show && !item.children && listOptions()) {\n <smart-list [options]=\"listOptions()!\"></smart-list>\n }\n @if (item.children) {\n <div style=\"margin-left: 50px\">\n <smart-crud-group\n [groups]=\"item.children\"\n [listOptions]=\"listOptions()\"\n ></smart-crud-group>\n </div>\n }\n }\n `,\n imports: [\n // TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n // AccordionComponent,\n // AccordionHeaderComponent,\n // AccordionBodyComponent,\n ListComponent,\n NgClass,\n TranslatePipe,\n ],\n})\nexport class GroupComponent<T extends IEntity<string>>\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n private groupService = inject(CrudListGroupService<T>);\n\n readonly groups: InputSignal<Array<ICrudListGroup> | null> =\n input<Array<ICrudListGroup> | null>(null);\n readonly listOptions: InputSignal<IListOptions<T> | null> =\n input<IListOptions<T> | null>(null);\n\n change(val: boolean, item: ICrudListGroup, force = false): void {\n const groups = this.groups();\n if (groups) {\n groups\n .filter((i) => i.value !== item.value || i.key !== item.key)\n .forEach((i) => {\n i.show = false;\n });\n }\n\n this.groupService.change(val, item, force);\n\n item.show = val;\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n override ngOnDestroy(): void {\n const groups = this.groups();\n if (groups) {\n this.groupService.destroy(groups);\n }\n super.ngOnDestroy();\n }\n}\n","import { computed, inject, Injectable } from '@angular/core';\n\nimport { IListPaginationOptions, PaginationMode } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudFilter } from '../../models';\n\n@Injectable()\nexport class CrudListPaginationFactory<T extends IEntity<string>> {\n private readonly facade = inject(CrudFacade<T>);\n\n async create(options: {\n mode?: PaginationMode;\n limit: number;\n provider: {\n getLinks(): any;\n getFilter(): ICrudFilter;\n };\n }): Promise<IListPaginationOptions> {\n return {\n mode: options.mode,\n limit: options.limit,\n loadNextPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().next)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n if (this.facade.loaded()) {\n setTimeout(() => {\n res(\n options.provider.getLinks() && options.provider.getLinks().next,\n );\n });\n }\n\n const filter = options.provider.getFilter();\n this.facade.read({\n ...filter,\n offset: (filter.offset || 0) + (filter.limit || 0),\n });\n });\n },\n loadPrevPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().prev)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n const loaded = this.facade.loaded();\n if (loaded) {\n setTimeout(() => {\n res(\n options.provider.getLinks() && options.provider.getLinks().prev,\n );\n });\n }\n\n const filter = options.provider.getFilter();\n this.facade.read({\n ...filter,\n offset: (filter.offset || 0) - (filter.limit || 0),\n });\n });\n },\n page: computed(() => {\n const f = this.facade.filter();\n return f?.limit ? (f.offset || 0) / f.limit + 1 : 0;\n }),\n totalPages: computed(() => {\n const filter = this.facade.filter();\n const totalCount = this.facade.totalCount();\n return filter?.limit && totalCount\n ? Math.ceil(totalCount / filter.limit)\n : 0;\n }),\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudConfig } from '../../crud.config';\nimport { ICrudCreateManyOptions, ICrudFilter } from '../../models';\n\n@Injectable()\nexport class CrudService<T extends IEntity<string>> {\n protected config = inject(CrudConfig<T>);\n protected http = inject(HttpClient);\n\n protected _formatMap = {\n csv: 'text/csv',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n };\n\n create(item: T): Promise<string> {\n return firstValueFrom(\n this.http\n .post<void>(this.config.apiUrl, item, { observe: 'response' })\n .pipe(\n map((response) => {\n const location = (response.headers as any)['Location'];\n if (!location) return null;\n const array = location.split('/');\n return array[array.length - 1];\n }),\n ),\n );\n }\n\n createMany(items: Array<T>, options: ICrudCreateManyOptions): Promise<void> {\n return firstValueFrom(\n this.http.post<void>(\n this.config.apiUrl + '/bulk?mode=' + options.mode,\n items,\n ),\n );\n }\n\n getById(id: string): Promise<T> {\n return firstValueFrom(this.http.get<T>(this.config.apiUrl + '/' + id));\n }\n\n getList<T>(\n filter: ICrudFilter | null = null,\n ): Promise<{ data: T[]; totalCount: number; links: any }> {\n return firstValueFrom(\n this.http.get<{ data: T[]; totalCount: number; links: any }>(\n this.config.apiUrl + this.getQuery(filter as ICrudFilter),\n ),\n );\n }\n\n exportList(\n filter: ICrudFilter | null = null,\n format: 'csv' | 'xlsx',\n ): Promise<void> {\n if (!format) {\n format = 'csv';\n }\n\n if (format === 'xlsx') {\n return firstValueFrom(\n this.http\n .get(this.config.apiUrl + this.getQuery(filter as ICrudFilter), {\n headers: {\n 'Content-Type': this._formatMap[format],\n },\n observe: 'response',\n reportProgress: false,\n responseType: 'blob',\n })\n .pipe(\n map((res) => {\n const downloadLink = document.createElement('a');\n const blob = res.body;\n\n downloadLink.href = URL.createObjectURL(blob as Blob);\n downloadLink.download = 'data.' + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }),\n ),\n );\n }\n\n return firstValueFrom(\n this.http\n .get<string>(\n this.config.apiUrl + this.getQuery(filter as ICrudFilter),\n {\n headers: {\n 'Content-Type': this._formatMap[format],\n },\n responseType: 'text' as 'json',\n },\n )\n .pipe(\n map((res) => {\n const downloadLink = document.createElement('a');\n const blob = new Blob(['\\ufeff', res]);\n\n downloadLink.href = URL.createObjectURL(blob);\n downloadLink.download = 'data.' + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }),\n ),\n );\n }\n\n update(item: T): Promise<void> {\n return firstValueFrom(\n this.http.put<void>(this.config.apiUrl + '/' + item.id, item),\n );\n }\n\n updatePartial(item: Partial<T> & { id: string }): Promise<void> {\n return firstValueFrom(\n this.http.patch<void>(this.config.apiUrl + '/' + item.id, item),\n );\n }\n\n updatePartialMany(items: (Partial<T> & { id: string })[]): Promise<any> {\n const updatePromises = items.map((item) => {\n return this.updatePartial(item);\n });\n return Promise.all(updatePromises);\n }\n\n delete(id: string): Promise<void> {\n return firstValueFrom(\n this.http.delete<void>(this.config.apiUrl + '/' + id),\n );\n }\n\n protected getQuery(filter: ICrudFilter): string {\n let query = '';\n\n if (filter && filter.searchText) {\n query += '&$search=' + filter.searchText;\n }\n\n if (filter && filter.limit) {\n query += `&limit=${filter.limit}&offset=${\n filter.offset ? filter.offset : 0\n }`;\n }\n\n if (filter && filter.sortBy) {\n query += `&sort=${(filter.sortDesc ? '-' : '') + filter.sortBy}`;\n }\n\n if (filter && filter.query) {\n filter.query.forEach((q) => {\n if (\n q.value &&\n typeof q.value === 'string' &&\n q.value.match(/^-?\\d+$/) &&\n q.value[0] !== \"'\" &&\n q.value[0] !== '\"'\n ) {\n query += '&' + q.key + q.type + `'${q.value}'`;\n } else {\n query += '&' + q.key + q.type + q.value;\n }\n });\n }\n\n return query ? '?' + query.replace('&', '') : '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DynamicIoModule } from 'ng-dynamic-component';\n\nimport { SharedModule } from '@smartsoft001/angular';\n\nimport { ExportComponent } from './export/export.component';\nimport {\n FilterComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterFlagComponent,\n FilterRadioComponent,\n FilterTextComponent,\n FilterCheckComponent,\n FilterIntComponent,\n FilterDateTimeComponent,\n} from './filter';\nimport { CrudPipesModule } from '../pipes';\nimport { FiltersComponent } from './filters/filters.component';\nimport { FiltersConfigComponent } from './filters-config/filters-config.component';\nimport { MultiselectComponent } from './multiselect/multiselect.component';\nimport { CrudFacade } from '../+state/crud.facade';\nimport { GroupComponent } from './group/group.component';\nimport { CrudListPaginationFactory } from '../factories/list-pagination/list-pagination.factory';\nimport { CrudService } from '../services/crud/crud.service';\n\nconst COMPONENTS = [\n ExportComponent,\n FilterComponent,\n FilterTextComponent,\n FiltersConfigComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterDateTimeComponent,\n FilterRadioComponent,\n FiltersComponent,\n FilterFlagComponent,\n FilterCheckComponent,\n FilterIntComponent,\n MultiselectComponent,\n GroupComponent,\n];\n\n@NgModule({\n imports: [\n ...COMPONENTS,\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n DynamicIoModule,\n ],\n exports: [CrudPipesModule, ...COMPONENTS],\n providers: [CrudService, CrudFacade, CrudListPaginationFactory],\n})\nexport class CrudComponentsModule {}\n","import 'reflect-metadata';\n\nimport { Injectable } from '@angular/core';\nimport { Action, ActionsSubject, select, State, Store } from '@ngrx/store';\nimport { first } from 'rxjs/operators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport * as CrudActions from './crud.actions';\nimport { CrudConfig } from '../crud.config';\nimport { getCrudFilter } from './crud.selectors';\nimport { CrudService } from '../services/crud/crud.service';\n\n@Injectable()\nexport class CrudEffects<T extends IEntity<string>> {\n constructor(\n private actions$: ActionsSubject,\n private service: CrudService<T>,\n private config: CrudConfig<T>,\n private store: Store<any>,\n private state: State<any>,\n ) {}\n\n init(): void {\n const metadata = Reflect.getMetadata(this.config.entity, CrudEffects);\n\n if (metadata) return;\n\n Reflect.defineMetadata(this.config.entity, true, CrudEffects);\n\n this.actions$.subscribe((action: Action & any) => {\n switch (action.type) {\n case `[${this.config.entity}] Create`:\n this.service\n .create(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.createSuccess(this.config.entity, action.item),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.createFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Create Success`: {\n const createState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createState?.filter ? { ...createState.filter, offset: 0 } : null,\n ),\n );\n break;\n }\n\n case `[${this.config.entity}] Create Many`:\n this.service\n .createMany(action.data.items, action.data.options)\n .then(() =>\n this.store.dispatch(\n CrudActions.createManySuccess(this.config.entity, {\n items: action.data.items,\n options: action.data.options,\n }),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.createManyFailure(\n this.config.entity,\n {\n items: action.data.items,\n options: action.data.options,\n },\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Create Many Success`: {\n const createManyState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createManyState?.filter\n ? { ...createManyState.filter, offset: 0 }\n : null,\n ),\n );\n break;\n }\n\n case `[${this.config.entity}] Read`:\n this.service\n .getList(action?.filter)\n .then((result) =>\n this.store.dispatch(\n CrudActions.readSuccess(\n this.config.entity,\n action?.filter,\n result as { data: T[]; totalCount: number; links: any },\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.readFailure(\n this.config.entity,\n action?.filter,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Export`:\n this.service\n .exportList(action?.filter, action.format)\n .then(() =>\n this.store.dispatch(\n CrudActions.exportListSuccess(\n this.config.entity,\n action?.filter,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.exportListFailure(\n this.config.entity,\n action?.filter,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Select`:\n this.service\n .getById(action.id)\n .then((result) =>\n this.store.dispatch(\n CrudActions.selectSuccess(\n this.config.entity,\n action.id,\n result,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.selectFailure(this.config.entity, action.id, error),\n );\n });\n break;\n\n case `[${this.config.entity}] Update`:\n this.service\n .updatePartial(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.updateSuccess(this.config.entity, action.item),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updateFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n\n this.store.dispatch(\n CrudActions.select(this.config.entity, action.item.id),\n );\n });\n break;\n\n case `[${this.config.entity}] Update partial`:\n this.service\n .updatePartial(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.updatePartialSuccess(\n this.config.entity,\n action.item,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updatePartialFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update partial Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n\n this.store.dispatch(\n CrudActions.select(this.config.entity, action.item.id),\n );\n });\n break;\n\n case `[${this.config.entity}] Update partial many`:\n this.service\n .updatePartialMany(action.items)\n .then(() =>\n this.store.dispatch(\n CrudActions.updatePartialManySuccess(\n this.config.entity,\n action.items,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updatePartialManyFailure(\n this.config.entity,\n action.items,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update partial many Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n });\n break;\n\n case `[${this.config.entity}] Delete`:\n this.service\n .delete(action.id)\n .then(() =>\n this.store.dispatch(\n CrudActions.deleteSuccess(this.config.entity, action.id),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.deleteFailure(this.config.entity, action.id, error),\n );\n });\n break;\n\n case `[${this.config.entity}] Delete Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n });\n break;\n\n default:\n console.warn(\n `No effect for action type ${action.type} in entity ${this.config.entity}`,\n );\n break;\n }\n });\n }\n}\n","import {\n Directive,\n inject,\n input,\n output,\n Signal,\n viewChild,\n viewChildren,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n BaseComponent,\n DynamicComponentType,\n FormComponent,\n IDetailsOptions,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { CrudFullConfig } from '../../../crud.config';\n\n@Directive()\nexport abstract class CrudItemPageBaseComponent<\n T extends IEntity<string>,\n> extends BaseComponent {\n public config = inject(CrudFullConfig<T>);\n public facade = inject(CrudFacade<T>);\n\n static smartType: DynamicComponentType = 'crud-item-page';\n\n selected: Signal<T>;\n\n contentTpl = viewChild<ViewContainerRef>('contentTpl');\n\n formComponents = viewChildren(FormComponent);\n\n detailsOptions = input<IDetailsOptions<T>>();\n\n mode = input<string>();\n\n uniqueProvider = input<(values: Record<keyof T, any>) => Promise<boolean>>();\n\n onPartialChange = output<Partial<T>>();\n\n onChange = output<T>();\n\n onValidChange = output<boolean>();\n\n constructor() {\n super();\n this.selected = this.facade.selected;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { DetailsComponent, FormComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { FormOptionsPipe } from '../../../pipes';\nimport { CrudItemPageBaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-item-standard-page',\n template: `\n @if (mode() === 'details') {\n @if (detailsOptions()) {\n <smart-details [options]=\"detailsOptions()\"></smart-details>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"editTpl\"></ng-container>\n }\n\n <ng-template #editTpl>\n <smart-form\n [options]=\"\n selected()\n | smartFormOptions\n : mode()\n : config?.type\n : uniqueProvider()\n : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n </ng-template>\n\n <br /><br />\n `,\n styleUrls: ['./standard.component.scss'],\n imports: [\n DetailsComponent,\n FormComponent,\n FormOptionsPipe,\n NgTemplateOutlet,\n FormComponent,\n ],\n})\nexport class ItemStandardComponent<\n T extends IEntity<string>,\n> extends CrudItemPageBaseComponent<T> {}\n","import { inject, Injectable } from '@angular/core';\n\nimport { AuthService } from '@smartsoft001/angular';\nimport { getModelOptions } from '@smartsoft001/models';\n\nimport { CrudFullConfig } from '../../crud.config';\n\n@Injectable()\nexport class PageService<T> {\n private authService = inject(AuthService);\n private config = inject(CrudFullConfig<T>);\n\n checkPermissions(): void {\n const val: CrudFullConfig<T> = this.config;\n const modelOptions = getModelOptions(val.type);\n\n if (\n val.add &&\n modelOptions.create &&\n modelOptions.create.permissions &&\n !this.authService.expectPermissions(modelOptions.create.permissions)\n ) {\n val.add = false;\n }\n\n if (\n val.edit &&\n modelOptions.update &&\n modelOptions.update.permissions &&\n !this.authService.expectPermissions(modelOptions.update.permissions)\n ) {\n val.edit = false;\n }\n\n if (\n val.remove &&\n modelOptions.remove &&\n modelOptions.remove.permissions &&\n !this.authService.expectPermissions(modelOptions.remove.permissions)\n ) {\n val.remove = false;\n }\n }\n}\n","import { Location, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n Signal,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n CreateDynamicComponent,\n DetailsService,\n DynamicComponentLoader,\n DynamicContentDirective,\n ICellPipe,\n IDetailsOptions,\n IIconButtonOptions,\n IPageOptions,\n // PageComponent,\n StyleService,\n ToastService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { getModelOptions } from '@smartsoft001/models';\nimport { SpecificationService } from '@smartsoft001/utils';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { CrudFullConfig } from '../../crud.config';\nimport { ICrudFilter } from '../../models';\nimport { CrudItemPageBaseComponent } from './base/base.component';\nimport { ItemStandardComponent } from './standard/standard.component';\nimport { CrudService } from '../../services/crud/crud.service';\nimport { PageService } from '../../services/page/page.service';\n\n@Component({\n selector: 'smart-crud-item-page',\n imports: [/*PageComponent,*/ ItemStandardComponent, NgTemplateOutlet],\n template: `\n <!-- <smart-page [options]=\"pageOptions()\">-->\n <div #topTpl class=\"text-xl py-2.5 separator\"></div>\n @if (template() === 'default') {\n <smart-crud-item-standard-page\n [detailsOptions]=\"detailsOptions()\"\n [mode]=\"mode\"\n [uniqueProvider]=\"uniqueProvider()\"\n (onPartialChange)=\"onPartialChange($event)\"\n (onChange)=\"onChange($event)\"\n (onValidChange)=\"onValidChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-item-standard-page>\n }\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n <div #bottomTpl class=\"text-xl py-2.5 separator\"></div>\n <!-- </smart-page>-->\n `,\n})\nexport class ItemComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudItemPageBaseComponent<any>>(\n 'crud-item-page',\n )\n implements OnInit, OnDestroy\n{\n private router = inject(Router);\n private activeRoute = inject(ActivatedRoute);\n private facade = inject(CrudFacade<T>);\n private service = inject(CrudService<T>);\n private dynamicComponentLoader = inject(DynamicComponentLoader<T>);\n private translateService = inject(TranslateService);\n public config = inject(CrudFullConfig<T>);\n private location = inject(Location);\n private cd = inject(ChangeDetectorRef);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n private toastService = inject(ToastService);\n private pageService = inject(PageService<T>);\n private detailsService = inject(DetailsService);\n\n private _mode!: WritableSignal<string>;\n\n pageOptions: WritableSignal<IPageOptions> = signal({\n title: '',\n showBackButton: true,\n hideMenuButton: true,\n });\n detailsOptions!: WritableSignal<IDetailsOptions<T>>;\n id!: string;\n formValue!: T;\n formValid = false;\n item!: T;\n formPartialValue!: Partial<T>;\n uniqueProvider!: WritableSignal<\n (values: Record<keyof T, any>) => Promise<boolean>\n >;\n\n set mode(val: string) {\n this._mode = signal(val);\n this.refreshDynamicInstance();\n }\n get mode(): string {\n return this._mode();\n }\n\n selected: Signal<T>;\n\n standardComponents = viewChildren(ItemStandardComponent);\n // @ViewChild(IonContent, { static: true }) content: IonContent; //TODO: rewrite when rewriting ionic\n\n override contentTpl = viewChild<TemplateRef<any>>('contentTpl');\n\n topTpl = viewChild<ViewContainerRef>('topTpl');\n\n bottomTpl = viewChild<ViewContainerRef>('bottomTpl');\n\n override dynamicContents = viewChildren<DynamicContentDirective>(\n DynamicContentDirective,\n );\n\n subscription = new Subscription();\n\n constructor() {\n super();\n\n this.selected = this.facade.selected;\n\n effect(() => {\n this.item = this.facade.selected();\n this.initPageOptions();\n this.cd.detectChanges();\n });\n }\n\n override refreshProperties() {\n this.baseComponentRef.setInput('detailsOptions', this.detailsOptions());\n this.baseComponentRef.setInput('mode', this.mode);\n this.baseComponentRef.setInput('uniqueProvider', this.uniqueProvider());\n this.subscription.add(\n this.baseInstance.onPartialChange.subscribe((val) =>\n this.onPartialChange(val),\n ),\n );\n this.subscription.add(\n this.baseInstance.onChange.subscribe((val) => this.onChange(val)),\n );\n this.subscription.add(\n this.baseInstance.onValidChange.subscribe((val) =>\n this.onValidChange(val),\n ),\n );\n }\n\n async ngOnInit() {\n this.detailsService.init();\n this.styleService.init(this.elementRef);\n\n this.pageService.checkPermissions();\n\n if (this.router.routerState.snapshot.url.split('?')[0].endsWith('/add')) {\n this.mode = 'create';\n await this.generateComponents('add');\n } else {\n this.mode = this.config.details ? 'details' : 'update';\n\n if (this.mode === 'update') {\n await this.generateComponents('edit');\n }\n\n this.activeRoute.params\n .pipe(this.takeUntilDestroy)\n .subscribe(({ id }) => {\n this.facade.select(id);\n this.id = id;\n });\n\n this.activeRoute.queryParams\n .pipe(this.takeUntilDestroy)\n .subscribe(({ edit }) => {\n if (edit) {\n this.mode = 'update';\n this.generateComponents('edit');\n }\n });\n }\n\n this.uniqueProvider.set(async (values) => {\n const filter: ICrudFilter = {\n query: [],\n };\n\n Object.keys(values).forEach((key) => {\n filter.query!.push({\n key: key,\n value: (values as any)[key],\n type: '=',\n });\n });\n\n if (this.id) {\n filter.query!.push({\n key: 'id',\n value: this.id,\n type: '!=',\n });\n }\n const { totalCount } = await this.service.getList(filter);\n\n return !totalCount;\n });\n\n if (this.config.details) {\n const compiledComponents: {\n component: any;\n factory: ComponentFactory<any>;\n }[] = await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].top\n ? [(this.config.details as any)['components'].top]\n : []),\n ...(this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].bottom\n ? [(this.config.details as any)['components'].bottom]\n : []),\n ],\n });\n\n this.detailsOptions.set({\n type: this.config.type,\n item: this.facade.selected,\n cellPipe: this.config.details\n ? (this.config.details as { cellPipe?: ICellPipe<T> }).cellPipe\n : undefined,\n componentFactories: {\n top:\n this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].top\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any)['components'].top,\n )?.factory\n : undefined,\n bottom:\n this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].bottom\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any)['components'].bottom,\n )?.factory\n : undefined,\n },\n });\n }\n\n this.initPageOptions();\n\n this.refreshDynamicInstance();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n this.subscription.unsubscribe();\n }\n\n private async generateComponents(mode: 'add' | 'edit') {\n const compiledComponents =\n await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config[mode] &&\n (this.config[mode] as any)['components'] &&\n (this.config[mode] as any)['components'].top\n ? [(this.config[mode] as any)['components'].top]\n : []),\n ...(this.config[mode] &&\n (this.config[mode] as any)['components'] &&\n (this.config[mode] as any)['components'].bottom\n ? [(this.config[mode] as any)['components'].bottom]\n : []),\n ],\n });\n\n const topComponentFactory = compiledComponents.find(\n (cc) => cc.component === (this.config[mode] as any)['components']?.top,\n )?.factory;\n\n const bottomComponentFactory = compiledComponents.find(\n (cc) => cc.component === (this.config[mode] as any)['components']?.bottom,\n )?.factory;\n\n if (!this.topTpl()?.get(0) && topComponentFactory) {\n this.topTpl()?.createComponent(topComponentFactory);\n }\n\n if (!this.bottomTpl()?.get(0) && bottomComponentFactory) {\n this.bottomTpl()?.createComponent(bottomComponentFactory);\n }\n }\n\n onPartialChange(val: Partial<T>) {\n this.formPartialValue = val;\n }\n\n onChange(val: T) {\n this.formValue = val;\n }\n\n onValidChange(val: boolean) {\n this.formValid = val;\n }\n\n private initPageOptions(): void {\n this.pageOptions.set({\n ...this.pageOptions(),\n title: this.getTitle() || '',\n endButtons: this.getButtons(),\n });\n }\n\n private getButtons(): Array<IIconButtonOptions> | undefined {\n const options = getModelOptions(this.config.type);\n\n switch (this.mode) {\n case 'create':\n return [\n {\n icon: 'add',\n text: 'add',\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.facade.create(this.formValue);\n this.location.back();\n },\n },\n ];\n case 'update':\n return [\n ...(this.config.details\n ? [\n {\n icon: 'close',\n text: 'cancel',\n handler: () => {\n this.mode = 'details';\n this.initPageOptions();\n this.topTpl()?.clear();\n this.bottomTpl()?.clear();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : []),\n {\n icon: 'save',\n text: 'save',\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.formPartialValue.id = this.id;\n this.facade.updatePartial(this.formPartialValue as any);\n\n if (this.config.details) {\n this.mode = 'details';\n this.initPageOptions();\n } else {\n this.location.back();\n }\n },\n },\n ];\n case 'details':\n return this.config.edit &&\n (!options?.update?.enabled ||\n SpecificationService.valid(this.item, options?.update?.enabled))\n ? [\n {\n icon: 'create',\n text: 'edit',\n handler: () => {\n this.mode = 'update';\n this.generateComponents('edit');\n this.initPageOptions();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : [];\n default:\n return undefined;\n }\n }\n\n private getTitle(): string | undefined {\n const options = getModelOptions(this.config.type);\n\n const prefix =\n options.titleKey && this.item\n ? this.removeParagraph((this.item as any)[options.titleKey]) + ' - '\n : '';\n\n switch (this.mode) {\n case 'create':\n return 'add';\n case 'update':\n return prefix + this.translateService.instant('change');\n case 'details':\n return prefix + this.translateService.instant('details');\n default:\n return undefined;\n }\n }\n\n private removeParagraph(val: string): string {\n if (!val || val.indexOf('<p>') !== 0) return val;\n\n const div = document.createElement('div');\n div.innerHTML = val;\n\n const item = div.querySelectorAll('p').item(0);\n\n return item.innerHTML;\n }\n\n private checkFirstInvalid(): boolean {\n this.cd.detectChanges();\n\n const form =\n this.template() === 'default'\n ? (this.standardComponents() as any)?.[0]?.formComponents?.[0]?.form\n : this.baseInstance.formComponents()[0].form;\n\n this.cd.detectChanges();\n\n if (form.valid) return false;\n\n const invalidFields: string[] = [];\n\n this.getInvalidFields(form, invalidFields, '');\n\n this.toastService.info({\n title: this.translateService.instant('INPUT.ERRORS.requires'),\n message: invalidFields.slice(0, 3).join('<br/>'),\n });\n\n return true;\n }\n\n private getInvalidFields(\n control: AbstractControl,\n invalidFields: any[],\n baseField: string,\n key = null,\n ) {\n if (control.valid) return;\n\n const field = key\n ? baseField + ' > ' + this.translateService.instant('MODEL.' + key)\n : baseField;\n\n if (control.errors?.['customMessage']) {\n invalidFields.push(field + ` (${control.errors['customMessage']})`);\n return;\n }\n\n if (control instanceof UntypedFormControl) {\n invalidFields.push(field);\n }\n\n if (control instanceof UntypedFormGroup) {\n Object.keys(control.controls).forEach((groupKey) => {\n this.getInvalidFields(\n control.controls[groupKey],\n invalidFields,\n field,\n groupKey as any,\n );\n });\n }\n\n if (control instanceof UntypedFormArray) {\n control.controls.forEach((c, index) => {\n this.getInvalidFields(c, invalidFields, field + `(${index + 1})`);\n });\n }\n }\n}\n","import {\n Directive,\n inject,\n input,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n BaseComponent,\n DynamicComponentType,\n IListOptions,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFullConfig } from '../../../crud.config';\n\n@Directive()\nexport abstract class CrudListPageBaseComponent<\n T extends IEntity<string>,\n> extends BaseComponent {\n public config = inject(CrudFullConfig<T>);\n\n static smartType: DynamicComponentType = 'crud-list-page';\n\n contentTpl = viewChild<ViewContainerRef>('contentTpl');\n\n listOptions = input<IListOptions<T> | null>();\n}\n","import { Component, computed, inject, Signal } from '@angular/core';\n\nimport { ListComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { FiltersConfigComponent, GroupComponent } from '../../../components';\nimport { CrudFullConfig } from '../../../crud.config';\nimport { CrudListGroupService } from '../../../services/list-group/list-group.service';\nimport { CrudListPageBaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-list-standard-page',\n template: `\n <smart-crud-filters-config></smart-crud-filters-config>\n @let groups = config.list?.groups;\n @if (listOptions()) {\n <smart-list\n [hidden]=\"groups && !isSearch()\"\n [options]=\"listOptions()!\"\n ></smart-list>\n }\n @if (groups && !isSearch()) {\n <smart-crud-group\n [groups]=\"groups\"\n [listOptions]=\"listOptions() || null\"\n ></smart-crud-group>\n }\n `,\n imports: [FiltersConfigComponent, ListComponent, GroupComponent],\n providers: [CrudListGroupService],\n})\nexport class ListStandardComponent<\n T extends IEntity<string>,\n> extends CrudListPageBaseComponent<T> {\n private readonly facade = inject(CrudFacade<T>);\n public override readonly config = inject(CrudFullConfig<T>);\n\n isSearch: Signal<boolean> = computed(\n () => !!this.facade.filter()?.searchText,\n );\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ICrudFilter } from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CrudSearchService {\n private _filterSource = new BehaviorSubject<Partial<ICrudFilter>>({});\n private _enabledSource = new BehaviorSubject<boolean>(false);\n\n get filter(): Partial<ICrudFilter> {\n if (!this._enabledSource.value) return {};\n return this._filterSource.value || {};\n }\n\n get enabled(): boolean {\n return this._enabledSource.value;\n }\n\n enabled$ = this._enabledSource.asObservable();\n\n filter$: Observable<Partial<ICrudFilter>> = combineLatest([\n this._filterSource.asObservable(),\n this.enabled$,\n ]).pipe(\n map(([filter, enabled]) => {\n if (!enabled) return {};\n return filter;\n }),\n );\n\n setFilter(val: Partial<ICrudFilter>): void {\n this._filterSource.next(val);\n }\n\n setEnabled(val: boolean): void {\n this._enabledSource.next(val);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n computed,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\nimport {\n CreateDynamicComponent,\n DynamicComponentLoader,\n DynamicContentDirective,\n HardwareService,\n IIconButtonOptions,\n IListOptions,\n IPageOptions,\n ListMode,\n MenuService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldEditMetadata,\n IFieldListMetadata,\n} from '@smartsoft001/models';\nimport { SpecificationService } from '@smartsoft001/utils';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ExportComponent } from '../../components';\nimport { FiltersComponent } from '../../components';\nimport { MultiselectComponent } from '../../components';\nimport { CrudFullConfig } from '../../crud.config';\nimport { CrudListPageBaseComponent } from './base/base.component';\nimport { CrudListPaginationFactory } from '../../factories/list-pagination/list-pagination.factory';\nimport { ICrudFilter } from '../../models';\nimport { ListStandardComponent } from './standard/standard.component';\nimport { PageService } from '../../services/page/page.service';\nimport { CrudSearchService } from '../../services/search/search.service';\n\n@Component({\n selector: 'smart-crud-list-page',\n imports: [ListStandardComponent, NgTemplateOutlet],\n template: `\n @if (filter() && pageOptions()) {\n <!-- <smart-page [options]=\"pageOptions()\">-->\n <div #topTpl></div>\n\n @if (template() === 'default' && listOptions()) {\n <smart-crud-list-standard-page [listOptions]=\"listOptions()\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-list-standard-page>\n }\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n <!-- </smart-page>-->\n }\n `,\n})\nexport class ListComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudListPageBaseComponent<any>>(\n 'crud-list-page',\n )\n implements OnInit, OnDestroy\n{\n private facade = inject(CrudFacade<T>);\n private router = inject(Router);\n private dynamicComponentLoader = inject(DynamicComponentLoader<T>);\n private injector = inject(Injector);\n private cd = inject(ChangeDetectorRef);\n private menuService = inject(MenuService);\n private hardwareService = inject(HardwareService);\n private paginationFacade = inject(CrudListPaginationFactory<T>);\n private pageService = inject(PageService<T>);\n public config = inject(CrudFullConfig<T>);\n private searchService = inject(CrudSearchService);\n\n private _cleanMultiSelected$ = new Subject<void>();\n\n pageOptions = signal<IPageOptions | null>(null);\n listOptions = signal<IListOptions<T> | null>(null);\n links = this.facade.links;\n\n filter: Signal<ICrudFilter | undefined> = this.facade.filter;\n\n topTpl = viewChild<ViewContainerRef>('topTpl');\n\n override contentTpl = viewChild<TemplateRef<any>>('contentTpl');\n\n override dynamicContents = viewChildren<DynamicContentDirective>(\n DynamicContentDirective,\n );\n\n override refreshProperties(): void {\n this.baseComponentRef.setInput('listOptions', this.listOptions());\n }\n\n async ngOnInit(): Promise<void> {\n this.pageService.checkPermissions();\n\n const options = getModelOptions(this.config.type);\n\n let newFilter = null;\n\n if (this.config.list?.resetQuery === 'beforeInit') {\n newFilter = {\n query: this.config.baseQuery ? [...this.config.baseQuery] : [],\n paginationMode: this.config.list!.paginationMode,\n limit: this.config.pagination\n ? this.config.pagination.limit\n : undefined,\n offset: this.config.pagination ? 0 : undefined,\n sortBy: this.config.sort\n ? (this.config.sort as any)['default']\n : undefined,\n sortDesc: this.config.sort\n ? (this.config.sort as any)['defaultDesc']\n : undefined,\n ...this.searchService.filter,\n };\n } else if (this.filter()) {\n newFilter = this.filter();\n } else {\n newFilter = {\n paginationMode: this.config.list!.paginationMode,\n limit: this.searchService.filter?.limit\n ? this.searchService.filter.limit\n : this.config.pagination\n ? this.config.pagination.limit\n : undefined,\n offset:\n this.searchService.filter?.offset ||\n this.searchService.filter?.offset === 0\n ? this.searchService.filter.offset\n : this.config.pagination\n ? 0\n : undefined,\n sortBy: this.searchService.filter?.sortBy\n ? this.searchService.filter.sortBy\n : this.config.sort\n ? (this.config.sort as any)['default']\n : undefined,\n sortDesc: this.searchService.filter?.sortDesc\n ? this.searchService.filter.sortDesc\n : this.config.sort\n ? (this.config.sort as any)['defaultDesc']\n : undefined,\n query: this.config.baseQuery ? [...this.config.baseQuery] : [],\n ...this.searchService.filter,\n };\n }\n\n this.facade.read(newFilter);\n\n const endButtons = this.getEndButtons();\n\n this.pageOptions.set({\n title: this.config.title || '',\n search: this.config.search\n ? {\n text: computed(() => this.filter()?.searchText ?? ''),\n set: (txt) => {\n if (txt !== this.filter()?.searchText)\n this.facade.read({\n ...this.filter(),\n searchText: txt,\n offset: 0,\n });\n },\n }\n : undefined,\n endButtons: endButtons,\n });\n\n const compiledComponents =\n await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.top\n ? [this.config.details.components.top]\n : []),\n ...(this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.bottom\n ? [this.config.details.components.bottom]\n : []),\n ...(this.config.list &&\n typeof this.config.list === 'object' &&\n 'components' in this.config.list &&\n this.config.list.components?.top\n ? [this.config.list.components.top]\n : []),\n ],\n });\n\n this.listOptions.set({\n provider: {\n getData: (filter): void => {\n const global = {\n ...this.filter(),\n ...filter,\n };\n this.facade.read(global);\n },\n onChangeMultiSelected: async (list) => {\n if (list.length && !this.menuService.openedEnd) {\n await this.menuService.openEnd({\n injector: this.injector,\n component: MultiselectComponent,\n });\n } else if (!list.length && this.menuService.openedEnd) {\n await this.menuService.closeEnd();\n }\n\n this.facade.multiSelect(list);\n },\n list: computed(() => this.facade.list() || []),\n loading: this.facade.loading,\n onCleanMultiSelected$: this._cleanMultiSelected$,\n },\n cellPipe: this.config.list ? this.config.list.cellPipe : undefined,\n mode: this.config.list?.mode,\n type: this.config.type,\n details: this.config.details\n ? {\n provider: {\n getData: (id) => {\n this.facade.select(id);\n },\n clearData: () => {\n this.facade.unselect();\n },\n item: this.facade.selected,\n loading: this.facade.loading,\n },\n componentFactories: {\n top:\n this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.top\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any).components.top,\n )?.factory\n : undefined,\n bottom:\n this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.bottom\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any).components.bottom,\n )?.factory\n : undefined,\n },\n }\n : undefined,\n item:\n !!this.config.edit || this.config.details\n ? {\n options: {\n routingPrefix: '/' + this.router.routerState.snapshot.url + '/',\n edit: !!this.config.edit,\n },\n }\n : undefined,\n remove: this.config.remove\n ? {\n provider: {\n invoke: (id) => this.facade.delete(id),\n check: (item: T) => {\n return options?.remove?.enabled\n ? SpecificationService.valid(item, options?.remove?.enabled)\n : true;\n },\n },\n }\n : undefined,\n pagination: await this.paginationFacade.create({\n mode: this.config.list!.paginationMode,\n limit: this.config.pagination!.limit,\n provider: {\n getFilter: () => {\n return this.filter() || ({} as ICrudFilter);\n },\n getLinks: () => this.links(),\n },\n }),\n sort: this.config.sort,\n });\n\n this.cd.detectChanges();\n\n this.initCloseMenu();\n this.initTopComponent(compiledComponents);\n\n this.refreshDynamicInstance();\n }\n\n private initCloseMenu() {\n this.router.events.pipe(this.takeUntilDestroy).subscribe(async () => {\n await this.clear();\n });\n }\n\n private async clear() {\n await this.menuService.closeEnd();\n\n this.listOptions.update((val) => ({\n ...(val as IListOptions<T>),\n select: undefined,\n }));\n\n this.facade.multiSelect([]);\n }\n\n private getEndButtons(): Array<IIconButtonOptions> {\n const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());\n const modelOptions = getModelOptions(this.config.type);\n\n const showFilters =\n fieldsWithOptions.some(\n (x) => (x.options?.list as IFieldListMetadata)?.filter,\n ) || modelOptions?.filters?.length;\n\n const showMultiEdit =\n this.config.list?.components?.multi ||\n (this.config.edit &&\n fieldsWithOptions.some(\n (x) => (x.options?.update as IFieldEditMetadata)?.multi,\n ) &&\n !this.hardwareService.isMobile &&\n (!this.config?.list?.mode ||\n this.config?.list?.mode === ListMode.desktop));\n\n return [\n ...(showMultiEdit\n ? [\n {\n icon: 'checkbox-outline',\n text: 'multi',\n handler: () => {\n this.facade.multiSelect([]);\n this._cleanMultiSelected$.next();\n\n setTimeout(async () => {\n this.listOptions.update((val) => ({\n ...(val as IListOptions<T>),\n select: val?.select === 'multi' ? undefined : 'multi',\n }));\n if (this.menuService.openedEnd)\n await this.menuService.closeEnd();\n this.cd.detectChanges();\n });\n },\n },\n ]\n : []),\n ...(showFilters\n ? [\n {\n icon: 'filter-outline',\n text: 'filters',\n handler: async () => {\n await this.menuService.openEnd({\n injector: this.injector,\n component: FiltersComponent,\n });\n },\n },\n ]\n : []),\n ...(this.config.add\n ? [\n {\n icon: 'add',\n text: 'add',\n handler: () => {\n this.router.navigate([\n '/' + this.router.routerState.snapshot.url + '/add',\n ]);\n },\n },\n ]\n : []),\n ...(this.config.export\n ? [\n {\n text: 'export',\n icon: 'download-outline',\n type: 'popover' as const,\n component: ExportComponent,\n },\n ]\n : []),\n ...(this.config.buttons ? this.config.buttons : []),\n ];\n }\n\n private initTopComponent(\n compiledComponents: {\n component: any;\n factory: ComponentFactory<any>;\n }[],\n ) {\n const factory =\n this.config.list &&\n typeof this.config.list === 'object' &&\n 'components' in this.config.list &&\n this.config.list.components?.top\n ? compiledComponents.find(\n (cc) => cc.component === (this.config.list as any).components.top,\n )?.factory\n : null;\n\n setTimeout(() => {\n if (factory && !this.topTpl()?.get(0)) {\n this.topTpl()?.createComponent(factory);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { NgrxStoreService, SharedModule } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { getReducer, CrudFacade } from './+state';\nimport { CrudEffects } from './+state/crud.effects';\nimport { CrudComponentsModule } from './components';\nimport { CrudConfig } from './crud.config';\nimport { CrudListPaginationFactory } from './factories/list-pagination/list-pagination.factory';\nimport { ListComponent } from './pages';\nimport { ItemComponent } from './pages';\nimport { ListStandardComponent } from './pages';\nimport { ItemStandardComponent } from './pages';\nimport { CrudPipesModule } from './pipes';\nimport { CrudService } from './services/crud/crud.service';\nimport { CrudListGroupService } from './services/list-group/list-group.service';\nimport { PageService } from './services/page/page.service';\n\nexport const PAGES = [\n ItemComponent,\n ListComponent,\n ListStandardComponent,\n ItemStandardComponent,\n];\n\n@NgModule({\n imports: [\n ...PAGES,\n SharedModule,\n CrudPipesModule,\n RouterModule.forChild([\n { path: '', component: ListComponent },\n { path: 'add', component: ItemComponent },\n { path: ':id', component: ItemComponent },\n ]),\n FormsModule,\n CommonModule,\n CrudComponentsModule,\n ],\n exports: [...PAGES, CrudComponentsModule],\n providers: [\n CrudService,\n CrudListGroupService,\n PageService,\n CrudFacade,\n CrudEffects,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudFullModule<T extends IEntity<string>> {\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport {\n FILE_SERVICE_CONFIG,\n IFileServiceConfig,\n NgrxStoreService,\n SharedModule,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { getReducer } from './+state';\nimport { CrudEffects } from './+state/crud.effects';\nimport { CrudFacade } from './+state/crud.facade';\nimport { CrudComponentsModule } from './components';\nimport { CrudFullModule } from './crud-full.module';\nimport { CrudConfig, CrudFullConfig } from './crud.config';\nimport { CrudListPaginationFactory } from './factories/list-pagination/list-pagination.factory';\nimport { CrudPipesModule } from './pipes';\nimport { CrudService } from './services/crud/crud.service';\nimport { CrudListGroupService } from './services/list-group/list-group.service';\nimport { PageService } from './services/page/page.service';\n\n@NgModule({\n imports: [\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n CrudComponentsModule,\n ],\n exports: [CrudComponentsModule],\n providers: [\n CrudService,\n CrudListGroupService,\n CrudEffects,\n PageService,\n CrudFacade,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudCoreModule<T extends IEntity<string>> {\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n\n@NgModule({\n providers: [\n CrudService,\n CrudListGroupService,\n CrudEffects,\n PageService,\n CrudFacade,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudModule<T extends IEntity<string>> {\n static forFeature<T extends IEntity<string>>(\n options:\n | ICrudModuleOptionsWithRoutng<T>\n | ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<CrudModule<any>> {\n return {\n ngModule: options.routing ? CrudFullModule : CrudCoreModule,\n providers: [\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n\nexport interface ICrudModuleOptionsWithRoutng<T> {\n config: CrudFullConfig<T>;\n socket?: boolean;\n routing: true;\n}\n\nexport interface ICrudModuleOptionsWithoutRoutng<T> {\n config: CrudConfig<T>;\n socket?: boolean;\n routing: false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["select","CrudSelectors.getCrudLoaded","CrudSelectors.getCrudSelected","CrudSelectors.getCrudMultiSelected","CrudSelectors.getCrudList","CrudSelectors.getCrudFilter","CrudSelectors.getCrudTotalCount","CrudSelectors.getCrudLinks","CrudSelectors.getCrudError","CrudActions.create","CrudActions.createMany","CrudActions.read","CrudActions.clear","CrudActions.select","CrudActions.unselect","CrudActions.multiSelect","CrudActions.update","CrudActions.exportList","CrudActions.updatePartial","CrudActions.updatePartialMany","CrudActions.deleteItem","i2.CrudConfig","BaseComponent","ListComponent","CrudActions.createSuccess","CrudActions.createFailure","CrudActions.createManySuccess","CrudActions.createManyFailure","CrudActions.readSuccess","CrudActions.readFailure","CrudActions.exportListSuccess","CrudActions.exportListFailure","CrudActions.selectSuccess","CrudActions.selectFailure","CrudActions.updateSuccess","CrudActions.updateFailure","CrudActions.updatePartialSuccess","CrudActions.updatePartialFailure","CrudActions.updatePartialManySuccess","CrudActions.updatePartialManyFailure","CrudActions.deleteSuccess","CrudActions.deleteFailure","i2.CrudService","i3.CrudConfig","i1.CrudConfig","i2.CrudEffects"],"mappings":"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"}
1
+ {"version":3,"file":"smartsoft001-crud-shell-angular.mjs","sources":["../../../../../../packages/crud/shell/angular/src/lib/crud.config.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.actions.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.selectors.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.facade.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.reducer.ts","../../../../../../packages/crud/shell/angular/src/lib/components/export/export.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/check/check.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date/date.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date/date.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-time/date-time.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/date-with-edit/date-with-edit.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/flag/flag.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/int/int.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/int/int.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filter/radio/radio.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/text/text.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/filter.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filter/filter.component.html","../../../../../../packages/crud/shell/angular/src/lib/components/filters/filters.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/filters-config/filters-config.component.ts","../../../../../../packages/crud/shell/angular/src/lib/providers/model-possibilities/model-possibilities.provider.ts","../../../../../../packages/crud/shell/angular/src/lib/pipes/form-options/form-options.pipe.ts","../../../../../../packages/crud/shell/angular/src/lib/pipes/pipes.module.ts","../../../../../../packages/crud/shell/angular/src/lib/components/multiselect/multiselect.component.ts","../../../../../../packages/crud/shell/angular/src/lib/components/multiselect/multiselect.component.html","../../../../../../packages/crud/shell/angular/src/lib/services/list-group/list-group.service.ts","../../../../../../packages/crud/shell/angular/src/lib/components/group/group.component.ts","../../../../../../packages/crud/shell/angular/src/lib/factories/list-pagination/list-pagination.factory.ts","../../../../../../packages/crud/shell/angular/src/lib/services/crud/crud.service.ts","../../../../../../packages/crud/shell/angular/src/lib/components/components.module.ts","../../../../../../packages/crud/shell/angular/src/lib/+state/crud.effects.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/standard/standard.component.ts","../../../../../../packages/crud/shell/angular/src/lib/services/page/page.service.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/item/item.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/base/base.component.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/standard/standard.component.ts","../../../../../../packages/crud/shell/angular/src/lib/services/search/search.service.ts","../../../../../../packages/crud/shell/angular/src/lib/pages/list/list.component.ts","../../../../../../packages/crud/shell/angular/src/lib/crud-full.module.ts","../../../../../../packages/crud/shell/angular/src/lib/crud.module.ts","../../../../../../packages/crud/shell/angular/src/smartsoft001-crud-shell-angular.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\n\nimport {\n IIconButtonOptions,\n ICellPipe,\n InputBaseComponent,\n ListMode,\n PaginationMode,\n} from '@smartsoft001/angular';\n\nimport { ICrudFilterQueryItem, ICrudListGroup } from './models';\n\n@Injectable()\nexport class CrudConfig<T> {\n apiUrl!: string;\n entity!: string;\n type?: any;\n reducerFactory?: () => any;\n baseQuery?: Array<ICrudFilterQueryItem>;\n}\n\n@Injectable()\nexport class CrudFullConfig<T> extends CrudConfig<T> {\n title!: string;\n details?:\n | boolean\n | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n edit?:\n | boolean\n | {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n add?:\n | boolean\n | {\n components?: {\n top?: any;\n bottom?: any;\n };\n };\n remove?: boolean;\n search?: boolean;\n export?: boolean;\n pagination?: {\n limit: number;\n };\n sort?:\n | boolean\n | {\n default?: string;\n defaultDesc?: boolean;\n };\n list?: {\n cellPipe?: ICellPipe<T>;\n components?: {\n top?: any;\n multi?: any;\n };\n mode?: ListMode;\n paginationMode?: PaginationMode;\n resetQuery?: 'beforeInit';\n groups?: Array<ICrudListGroup>;\n };\n buttons?: Array<IIconButtonOptions>;\n inputComponents?: {\n [key: string]: Type<InputBaseComponent<T>>;\n };\n}\n","import { Action } from '@ngrx/store';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudCreateManyOptions, ICrudFilter } from '../models';\n\n/*\n * Create\n */\nexport const create = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Create`,\n item,\n };\n};\n\nexport const createSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Create Success`,\n item,\n };\n};\n\nexport const createFailure = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n error: any,\n): Action & { item: T; error: any } {\n return {\n type: `[${entity}] Create Failure`,\n item,\n error,\n };\n};\n\n/*\n * Create many\n */\nexport const createMany = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many`,\n data,\n };\n};\n\nexport const createManySuccess = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n): Action & { data: { items: T[]; options: ICrudCreateManyOptions } } {\n return {\n type: `[${entity}] Create Many Success`,\n data,\n };\n};\n\nexport const createManyFailure = function <T extends IEntity<string>>(\n entity: string,\n data: { items: T[]; options: ICrudCreateManyOptions },\n error: any,\n): Action & {\n data: { items: T[]; options: ICrudCreateManyOptions };\n error: any;\n} {\n return {\n type: `[${entity}] Create Many Failure`,\n data,\n error,\n };\n};\n\n/*\n * Read\n */\nexport const read = function (\n entity: string,\n filter?: ICrudFilter,\n): Action & { filter?: ICrudFilter } {\n return {\n type: `[${entity}] Read`,\n filter: filter,\n };\n};\n\nexport const readSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n filter: F,\n result: { data: T[]; totalCount: number; links: any },\n): Action & {\n result: { data: T[]; totalCount: number; links: any };\n filter: F;\n} {\n return {\n type: `[${entity}] Read Success`,\n result,\n filter,\n };\n};\n\nexport const readFailure = function <F>(\n entity: string,\n filter: F,\n error: any,\n): Action & { filter: F; error: any } {\n return {\n type: `[${entity}] Read Failure`,\n filter,\n error,\n };\n};\n\n/*\n * Clear\n */\nexport const clear = function (entity: string): Action {\n return {\n type: `[${entity}] Clear`,\n };\n};\n\n/*\n * Export\n */\nexport const exportList = function (\n entity: string,\n filter: ICrudFilter | null = null,\n format: any,\n): Action & { filter: ICrudFilter; format: any } {\n return {\n type: `[${entity}] Export`,\n filter: filter as any,\n format,\n };\n};\n\nexport const exportListSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n filter: F,\n): Action & { filter: F } {\n return {\n type: `[${entity}] Export Success`,\n filter,\n };\n};\n\nexport const exportListFailure = function <F>(\n entity: string,\n filter: F,\n error: any,\n): Action & { filter: F; error: any } {\n return {\n type: `[${entity}] Export Failure`,\n filter,\n error,\n };\n};\n\n/*\n * Select\n */\nexport const select = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Select`,\n id,\n };\n};\n\nexport const selectSuccess = function <T extends IEntity<string>, F>(\n entity: string,\n id: string,\n item: T,\n): Action & { id: string; item: T } {\n return {\n type: `[${entity}] Select Success`,\n id,\n item,\n };\n};\n\nexport const selectFailure = function <F>(\n entity: string,\n id: string,\n error: any,\n): Action & { id: string; error: any } {\n return {\n type: `[${entity}] Select Failure`,\n id,\n error,\n };\n};\n\nexport const unselect = function (entity: string): Action {\n return {\n type: `[${entity}] Unselect`,\n };\n};\n\n/*\n * MultiSelect\n */\nexport const multiSelect = function <T extends IEntity<string>>(\n entity: string,\n items: Array<T>,\n): Action & { items: Array<T> } {\n return {\n type: `[${entity}] MultiSelect`,\n items,\n };\n};\n\n/*\n * Update\n */\nexport const update = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Update`,\n item,\n };\n};\n\nexport const updateSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n): Action & { item: T } {\n return {\n type: `[${entity}] Update Success`,\n item,\n };\n};\n\nexport const updateFailure = function <T extends IEntity<string>>(\n entity: string,\n item: T,\n error: any,\n): Action & { item: T; error: any } {\n return {\n type: `[${entity}] Update Failure`,\n item,\n error,\n };\n};\n\n/*\n * Update partial\n */\nexport const updatePartial = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial`,\n item,\n };\n};\n\nexport const updatePartialSuccess = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n): Action & { item: Partial<T> & { id: string } } {\n return {\n type: `[${entity}] Update partial Success`,\n item,\n };\n};\n\nexport const updatePartialFailure = function <T extends IEntity<string>>(\n entity: string,\n item: Partial<T> & { id: string },\n error: any,\n): Action & { item: Partial<T> & { id: string }; error: any } {\n return {\n type: `[${entity}] Update partial Failure`,\n item,\n error,\n };\n};\n\n/*\n * Update partial many\n */\nexport const updatePartialMany = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many`,\n items,\n };\n};\n\nexport const updatePartialManySuccess = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n): Action & { items: Partial<T> & { id: string }[] } {\n return {\n type: `[${entity}] Update partial many Success`,\n items,\n };\n};\n\nexport const updatePartialManyFailure = function <T extends IEntity<string>>(\n entity: string,\n items: Partial<T> & { id: string }[],\n error: any,\n): Action & { items: Partial<T> & { id: string }[]; error: any } {\n return {\n type: `[${entity}] Update partial many Failure`,\n items,\n error,\n };\n};\n\n/*\n * Delete\n */\nexport const deleteItem = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete`,\n id,\n };\n};\n\nexport const deleteSuccess = function (\n entity: string,\n id: string,\n): Action & { id: string } {\n return {\n type: `[${entity}] Delete Success`,\n id,\n };\n};\n\nexport const deleteFailure = function <F>(\n entity: string,\n id: string,\n error: any,\n): Action & { id: string; error: any } {\n return {\n type: `[${entity}] Delete Failure`,\n id,\n error,\n };\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\n\nexport const getCrudState = (entity: string) =>\n createFeatureSelector<any>(entity);\n\nexport const getCrudSelected = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state.selected);\n\nexport const getCrudMultiSelected = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state.multiSelected);\n\nexport const getCrudList = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.list);\n\nexport const getCrudTotalCount = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.totalCount);\n\nexport const getCrudLinks = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.links);\n\nexport const getCrudLoaded = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.loaded);\n\nexport const getCrudFilter = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.filter);\n\nexport const getCrudError = (entity: string) =>\n createSelector(getCrudState(entity), (state) => state?.error);\n","import { Injectable, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { select, Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\n\nimport { NgrxStoreService } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudConfig } from '../crud.config';\nimport * as CrudActions from './crud.actions';\nimport * as CrudSelectors from './crud.selectors';\nimport {\n ICrudCreateManyOptions,\n ICrudFilter,\n ICrudFilterQueryItem,\n} from '../models';\n\n@Injectable()\nexport class CrudFacade<T extends IEntity<string>> {\n readonly loaded: Signal<boolean | undefined>;\n readonly loading: Signal<boolean>;\n readonly selected: Signal<T | undefined>;\n readonly multiSelected: Signal<T[] | undefined>;\n readonly list: Signal<T[] | undefined>;\n readonly filter: Signal<ICrudFilter | undefined>;\n readonly totalCount: Signal<number | undefined>;\n readonly links: Signal<any>;\n readonly error: Signal<any>;\n\n constructor(\n private readonly store: Store<any>,\n private config: CrudConfig<T>,\n ) {\n if (NgrxStoreService.store) {\n this.store = NgrxStoreService.store;\n }\n\n // Initialize all signals in the constructor (injection context)\n this.loaded = toSignal<boolean>(\n this.store.pipe(select(CrudSelectors.getCrudLoaded(this.config.entity))),\n );\n\n this.loading = toSignal<boolean>(\n this.store.pipe(\n select(CrudSelectors.getCrudLoaded(this.config.entity)),\n map((l) => !l),\n ),\n ) as Signal<boolean>;\n\n this.selected = toSignal<T>(\n this.store.pipe(\n select(CrudSelectors.getCrudSelected(this.config.entity)),\n ),\n );\n\n this.multiSelected = toSignal<T[]>(\n this.store.pipe(\n select(CrudSelectors.getCrudMultiSelected(this.config.entity)),\n ),\n );\n\n this.list = toSignal<T[]>(\n this.store.pipe(select(CrudSelectors.getCrudList(this.config.entity))),\n );\n\n this.filter = toSignal<ICrudFilter>(\n this.store.pipe(select(CrudSelectors.getCrudFilter(this.config.entity))),\n );\n\n this.totalCount = toSignal<number>(\n this.store.pipe(\n select(CrudSelectors.getCrudTotalCount(this.config.entity)),\n ),\n );\n\n this.links = toSignal<any>(\n this.store.pipe(select(CrudSelectors.getCrudLinks(this.config.entity))),\n );\n\n this.error = toSignal<any>(\n this.store.pipe(select(CrudSelectors.getCrudError(this.config.entity))),\n );\n }\n\n create(item: T): void {\n this.store.dispatch(CrudActions.create(this.config.entity, item));\n }\n\n createMany(items: Array<T>, options: ICrudCreateManyOptions): void {\n this.store.dispatch(\n CrudActions.createMany(this.config.entity, { items, options }),\n );\n }\n\n read(filter: ICrudFilter = {}): void {\n let baseQuery: ICrudFilterQueryItem[] = [];\n if (this.config.baseQuery) {\n baseQuery = this.config.baseQuery;\n }\n\n const fullFilter = {\n ...(filter ? filter : {}),\n query: filter && filter.query ? filter.query : baseQuery,\n };\n\n this.store.dispatch(CrudActions.read(this.config.entity, fullFilter));\n }\n\n clear(): void {\n this.store.dispatch(CrudActions.clear(this.config.entity));\n }\n\n select(id: string): void {\n this.store.dispatch(CrudActions.select(this.config.entity, id));\n }\n\n unselect(): void {\n this.store.dispatch(CrudActions.unselect(this.config.entity));\n }\n\n multiSelect(items: Array<T>): void {\n this.store.dispatch(CrudActions.multiSelect(this.config.entity, items));\n }\n\n update(item: T): void {\n this.getStore().dispatch(CrudActions.update(this.config.entity, item));\n }\n\n export(filter: ICrudFilter = {}, format?: string): void {\n this.getStore().dispatch(\n CrudActions.exportList(this.config.entity, filter, format),\n );\n }\n\n updatePartial(item: Partial<T> & { id: string }): void {\n this.getStore().dispatch(\n CrudActions.updatePartial(this.config.entity, item),\n );\n }\n\n updatePartialMany(items: (Partial<T> & { id: string })[]) {\n this.getStore().dispatch(\n CrudActions.updatePartialMany(this.config.entity, items),\n );\n }\n\n delete(id: string): void {\n this.getStore().dispatch(CrudActions.deleteItem(this.config.entity, id));\n }\n\n private getStore(): Store {\n if (NgrxStoreService.store) return NgrxStoreService.store;\n\n return this.store;\n }\n}\n","import { Action } from '@ngrx/store';\n\nimport { PaginationMode } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudFilter } from '../models';\n\nexport interface State<T extends IEntity<string>> {\n selected?: T;\n multiSelected?: Array<T>;\n list?: T[];\n totalCount?: number;\n filter?: ICrudFilter;\n links?: any;\n loaded: boolean; // has the Auth list been loaded\n error?: string | null; // last none error (if any)\n}\n\nexport const initialState: State<any> = {\n loaded: false,\n};\n\nconst crudReducer = (\n state: State<any>,\n action: Action & any,\n entity: string,\n) => {\n if (!state) {\n state = { ...initialState };\n }\n\n switch (action.type) {\n case `[${entity}] Create`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Create Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Create Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Create Many`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Create Many Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Create Many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Export`:\n return {\n ...state,\n loaded: false,\n };\n\n case `[${entity}] Export Success`:\n return {\n ...state,\n loaded: true,\n };\n\n case `[${entity}] Export Failure`:\n return {\n ...state,\n loaded: true,\n };\n\n case `[${entity}] Read`:\n return {\n ...state,\n loaded: false,\n filter: action?.filter,\n error: null,\n totalCount: null,\n links: null,\n };\n\n case `[${entity}] Read Success`: {\n let list: any[] = [];\n\n if (\n action?.filter &&\n action?.filter.offset &&\n state.list &&\n action?.filter.paginationMode !== PaginationMode.singlePage\n ) {\n state.list.forEach((i) => {\n list.push(i);\n });\n\n list = [...list, ...action.result.data];\n } else {\n list = action.result.data;\n }\n\n return {\n ...state,\n loaded: true,\n list,\n totalCount: action?.result?.totalCount,\n links: action.result.links,\n error: null,\n };\n }\n\n case `[${entity}] Clear`:\n return { ...initialState };\n\n case `[${entity}] Read Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Select`:\n return {\n ...state,\n loaded: false,\n selected: null,\n error: null,\n };\n\n case `[${entity}] Select Success`:\n return {\n ...state,\n loaded: true,\n selected: action.item,\n error: null,\n };\n\n case `[${entity}] Select Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] MultiSelect`:\n return {\n ...state,\n multiSelected: [...action.items],\n };\n\n case `[${entity}] Unselect`:\n return {\n ...state,\n loaded: true,\n selected: null,\n error: null,\n };\n\n case `[${entity}] Update`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Update partial`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update partial Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update partial Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Update partial many`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Update partial many Success`:\n return {\n ...state,\n multiSelected: [],\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Update partial many Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n case `[${entity}] Delete`:\n return {\n ...state,\n loaded: false,\n error: null,\n };\n\n case `[${entity}] Delete Success`:\n return {\n ...state,\n loaded: true,\n error: null,\n };\n\n case `[${entity}] Delete Failure`:\n return {\n ...state,\n loaded: true,\n error: action.error,\n };\n\n default:\n return state;\n }\n};\n\nexport function getReducer(entity: string) {\n return (state: any, action: Action) => {\n return crudReducer(state, action, entity);\n };\n}\n","import { Component, ElementRef, inject, OnInit } from '@angular/core';\n\nimport {\n BaseComponent,\n ButtonComponent,\n IButtonOptions,\n PopoverService,\n StyleService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state';\n\n@Component({\n selector: 'smart-crud-export',\n template: `\n <div class=\"smart:p-5\">\n <p class=\"smart:my-2.5 smart:mx-0\">\n <smart-button\n [options]=\"buttonExportCsvOptions\"\n class=\"smart:w-full smart:block\"\n >CSV</smart-button\n >\n </p>\n <p>\n <smart-button\n [options]=\"buttonExportXlsxOptions\"\n class=\"smart:w-full smart:block\"\n >XLSX</smart-button\n >\n </p>\n </div>\n `,\n imports: [ButtonComponent],\n})\nexport class ExportComponent<T extends IEntity<string>>\n extends BaseComponent\n implements OnInit\n{\n private facade = inject(CrudFacade<T>);\n private popoverService = inject(PopoverService);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n buttonExportCsvOptions: IButtonOptions = this.initButtonExportOptions('csv');\n buttonExportXlsxOptions: IButtonOptions =\n this.initButtonExportOptions('xlsx');\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n private initButtonExportOptions(format: string): IButtonOptions {\n return {\n click: () => {\n this.facade.export(\n {\n ...this.facade.filter(),\n offset: undefined,\n limit: undefined,\n },\n format,\n );\n\n const loading = this.facade.loading();\n if (loading) return;\n this.popoverService.close().then();\n },\n loading: this.facade.loading,\n };\n }\n}\n","import {\n Directive,\n inject,\n input,\n InputSignal,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Debounce } from 'lodash-decorators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { FieldType, IModelFilter } from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { ICrudFilter } from '../../../models';\n\n@Directive()\nexport class BaseComponent<T extends IEntity<string>> implements OnInit {\n protected facade = inject(CrudFacade<T>);\n protected translateService = inject(TranslateService);\n\n possibilities!: Signal<{ id: any; text: string }[]>;\n\n readonly item: InputSignal<IModelFilter | undefined> = input<IModelFilter>();\n readonly filter: InputSignal<ICrudFilter | undefined> = input<ICrudFilter>();\n\n get value(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === item.type)\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === item.type,\n );\n return query?.value;\n }\n\n set value(val: any) {\n this.refresh(val);\n }\n\n get minValue(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === '>=')\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === '>=',\n );\n return query?.value;\n }\n\n set minValue(val: any) {\n this.refresh(val, '>=');\n }\n\n get maxValue(): any {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return null;\n\n if (this.isArrayType()) {\n return filter.query\n .filter((q) => q.key === item.key && q.type === '<=')\n .map((q) => q.value);\n }\n\n const query = filter.query.find(\n (q) => q.key === item.key && q.type === '<=',\n );\n return query?.value;\n }\n\n set maxValue(val: any) {\n this.refresh(val, '<=');\n }\n\n get lang(): string {\n return this.translateService.currentLang;\n }\n\n @Debounce(500)\n refresh(val: any, type: string | null = null): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item) return;\n\n if (!type) type = item.type;\n if (!filter.query) filter.query = [];\n\n filter.offset = 0;\n\n if (this.isArrayType()) {\n this.refreshForArray(val as [], type);\n return;\n }\n\n let query = filter.query!.find(\n (q) => q.key === item.key && q.type === type,\n );\n\n if (val === null || val === undefined || val === '') {\n if (query) {\n const index = filter.query!.indexOf(query);\n if (index > -1) {\n filter.query!.splice(index, 1);\n }\n }\n\n this.facade.read(filter);\n return;\n }\n\n if (!query) {\n query = {\n key: item.key,\n type: type as '=' | '!=' | '>=' | '<=' | '<' | '>',\n value: null,\n };\n\n filter.query!.push(query);\n }\n\n query.value = val;\n query.label = item.label;\n\n this.facade.read(filter);\n }\n\n clear(): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item || !filter.query) return;\n\n filter.query = filter.query?.filter((q) => q.key !== item.key);\n filter.offset = 0;\n this.facade.read(filter);\n }\n\n ngOnInit(): void {\n this.initPossibilities();\n }\n\n private initPossibilities(): void {\n const item = this.item();\n if (item?.possibilities) {\n this.possibilities = item.possibilities;\n }\n }\n\n private isArrayType(): boolean {\n const item = this.item();\n return item?.fieldType === FieldType.check;\n }\n\n private refreshForArray(vals: [], type: string): void {\n const filter = this.filter();\n const item = this.item();\n if (!filter || !item) return;\n if (!filter.query) filter.query = [];\n\n const queries =\n filter.query?.filter((q) => q.key === item.key && q.type === type) || [];\n\n queries.forEach((query) => {\n const index = filter.query!.indexOf(query);\n if (index > -1) {\n filter.query!.splice(index, 1);\n }\n });\n\n if (vals === null || vals === undefined || !vals.length) {\n this.facade.read(filter);\n return;\n }\n\n vals.forEach((val) => {\n const query = {\n key: item.key,\n type: type as '=' | '!=' | '>=' | '<=' | '<' | '>',\n value: val,\n };\n\n filter.query!.push(query);\n });\n\n this.facade.read(filter);\n }\n}\n","import { AfterContentInit, Component, computed, Signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-check',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item-divider class=\"text-xl font-light\">-->\n <!-- <ion-icon class=\"mr-6 text-2xl\" slot=\"start\" name=\"filter-outline\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n @if (value?.length) {\n <!-- <ion-button-->\n <!-- slot=\"end\"-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh([])\"-->\n <!-- class=\"square-button m-0 p-0 text-lg h-9 w-9\"-->\n <!-- >-->\n <!-- <ion-icon class=\"text-2xl m-0 p-0\" slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n }\n <!-- </ion-item-divider>-->\n\n @for (entry of list(); track entry) {\n <!-- <ion-item>-->\n <!--<ion-label>-->{{ entry.value.text | translate\n }}<!--</ion-label>-->\n <!-- <ion-checkbox-->\n <!-- slot=\"end\"-->\n <!-- [checked]=\"entry.isCheck\"-->\n <!-- (ionChange)=\"onCheckChange($event.detail.checked, entry)\"-->\n <!-- ></ion-checkbox>-->\n <!-- </ion-item>-->\n }\n <!-- </ion-col>-->\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe],\n styleUrls: ['./check.component.scss'],\n})\nexport class FilterCheckComponent<T extends IEntity<string>>\n extends BaseComponent<T>\n implements AfterContentInit\n{\n list!: Signal<{ value: any; isCheck: boolean }[]>;\n\n ngAfterContentInit(): void {\n this.list = computed(() => {\n const possibilities = this.possibilities();\n return possibilities.map((pos) => ({\n value: pos,\n isCheck: this.value.some((r: any) => r === pos.id),\n }));\n });\n }\n\n onCheckChange(checked: boolean, entry: { value: any; isCheck: boolean }) {\n if (checked && !this.value.some((r: any) => r === entry.value.id)) {\n this.value = [...this.value, entry.value.id];\n }\n\n if (!checked && this.value.some((r: any) => r === entry.value.id)) {\n this.value = this.value?.filter((r: any) => r !== entry.value.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport moment from 'moment';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-date',\n templateUrl: './date.component.html',\n imports: [FormsModule, TranslatePipe],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {\n id = GuidService.create();\n\n get allowAdvanced(): boolean {\n const item = this.item();\n return item?.type === '=';\n }\n\n set customValue(val) {\n const momentDate = moment(val);\n this.value =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customValue(): any {\n return this.value;\n }\n\n set customMinValue(val) {\n const momentDate = moment(val);\n this.minValue =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customMinValue(): any {\n return this.minValue;\n }\n\n set customMaxValue(val) {\n const momentDate = moment(val);\n this.maxValue =\n (val as string)?.length >= 10 && momentDate.isValid()\n ? momentDate.format('YYYY-MM-DD')\n : val;\n }\n\n get customMaxValue(): any {\n return this.maxValue;\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-item button=\"true\" id=\"open-date-input-{{ id }}\" color=\"primary\">-->\n<!-- <ion-text>-->\n{{ customValue ? customValue : ('select' | translate) }}\n<!-- </ion-text>-->\n<!-- <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">-->\n<ng-template>\n <!-- <ion-datetime-->\n <!-- displayFormat=\"YYYY-MM-DD\"-->\n <!-- pickerFormat=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- presentation=\"date\"-->\n <!-- ></ion-datetime>-->\n</ng-template>\n<!-- </ion-popover>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n\n@if (value) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"refresh(null)\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { FilterDateComponent } from '../date/date.component';\n\n@Component({\n selector: 'smart-crud-filter-date-time',\n templateUrl: './date-time.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateTimeComponent<T extends IEntity<string>>\n extends FilterDateComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n override id = GuidService.create();\n\n // @ViewChild(IonDatetime, { read: IonDatetime, static: false })\n // dateTimePicker: IonDatetime;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // if (this.dateTimePicker) {\n // this._subscriptions.add(\n // this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n // this.customValue = val.detail.value;\n // }),\n // );\n // } else {\n // console.error('dateTimePicker not found!');\n // }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n<!-- </ion-col>-->\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-item>-->\n<!-- <ion-label>-->\n{{ 'from' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-input-->\n<!-- placeholder=\"YYYY-MM-DD HH:mm:ss\"-->\n<!-- [(ngModel)]=\"customMinValue\"-->\n<!-- pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"-->\n<!-- ></ion-input>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n@if (customMinValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!-- <ion-col>-->\n<!-- <ion-item>-->\n<!-- <ion-label>-->\n{{ 'to' | translate }}\n<!-- </ion-label>-->\n<!-- <ion-input-->\n<!-- placeholder=\"YYYY-MM-DD HH:mm:ss\"-->\n<!-- [(ngModel)]=\"customMaxValue\"-->\n<!-- pattern=\"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$\"-->\n<!-- ></ion-input>-->\n<!-- </ion-item>-->\n<!-- </ion-col>-->\n@if (customMaxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n","import {\n Component,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { GuidService } from '@smartsoft001/utils';\n\nimport { FilterDateComponent } from '../date/date.component';\n\n@Component({\n selector: 'smart-crud-filter-date-with-edit',\n templateUrl: './date-with-edit.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterDateWithEditComponent<T extends IEntity<string>>\n extends FilterDateComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n advanced: WritableSignal<boolean> = signal(false);\n override id = GuidService.create();\n\n // @ViewChild(IonDatetime, { read: IonDatetime, static: false })\n // dateTimePicker: IonDatetime;\n\n toggleAdvanced(): void {\n this.advanced.update((val) => !val);\n if (this.advanced()) {\n this.value = null;\n }\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // if (this.dateTimePicker) {\n // this._subscriptions.add(\n // this.dateTimePicker.ionChange.subscribe((val: CustomEvent) => {\n // this.customValue = val.detail.value;\n // }),\n // );\n // } else {\n // console.error('dateTimePicker not found!');\n // }\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n\n@if (!advanced()) {\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n}\n<!-- </ion-col>-->\n\n@if (!advanced()) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button id=\"open-date-input-{{ id }}\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"calendar-outline\"></ion-icon>-->\n <!-- <ion-popover trigger=\"open-date-input-{{ id }}\" show-backdrop=\"false\">-->\n <ng-template>\n <!-- <ion-datetime-->\n <!-- displayFormat=\"YYYY-MM-DD\"-->\n <!-- pickerFormat=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customValue\"-->\n <!-- presentation=\"date\"-->\n <!-- first-day-of-week=\"1\"-->\n <!-- locale=\"{{ lang }}\"-->\n <!-- ></ion-datetime>-->\n </ng-template>\n <!-- </ion-popover>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (allowAdvanced) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- (click)=\"toggleAdvanced()\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- [disabled]=\"minValue || maxValue\"-->\n <!-- >-->\n @if (!advanced()) {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings-outline\"></ion-icon>-->\n } @else {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings\"></ion-icon>-->\n }\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n\n@if ((advanced() || minValue || maxValue) && allowAdvanced) {\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'from' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customMinValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (customMinValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'to' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input-->\n <!-- placeholder=\"YYYY-MM-DD\"-->\n <!-- [(ngModel)]=\"customMaxValue\"-->\n <!-- [pattern]=\"'([12]\\\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01]))'\"-->\n <!-- ></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n\n @if (customMaxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-flag',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <div\n class=\"flag-container w-full flex flex-row flex-nowrap justify-between pr-5\"\n >\n <!-- <ion-label class=\"align-middle my-6\" position=\"static\">-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-checkbox [(ngModel)]=\"value\" slot=\"end\"></ion-checkbox>-->\n </div>\n <!-- </ion-col>-->\n @if (typeof value === 'boolean') {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .flag-container {\n ion-label {\n /*--color: var(--smart-color-dark);*/\n }\n }\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterFlagComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import {\n Component,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-int',\n templateUrl: './int.component.html',\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterIntComponent<T extends IEntity<string>>\n extends BaseComponent<T>\n implements OnInit, OnDestroy\n{\n private _subscriptions = new Subscription();\n\n advanced: WritableSignal<boolean> = signal<boolean>(false);\n\n get allowAdvanced(): boolean {\n return this.item()?.type === '=';\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n if (this._subscriptions) {\n this._subscriptions.unsubscribe();\n }\n }\n\n toggleAdvanced(): void {\n this.advanced.update((val) => !val);\n if (this.advanced()) this.value = null;\n }\n}\n","<!--<ion-row>-->\n<!-- <ion-col>-->\n<!-- <ion-label>-->\n{{ item()?.label || '' | translate }}\n<!-- </ion-label>-->\n@if (!advanced()) {\n <!-- <ion-input [(ngModel)]=\"value\" type=\"number\" step=\"1\"></ion-input>-->\n}\n<!-- </ion-col>-->\n@if (allowAdvanced) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- (click)=\"toggleAdvanced()\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- [disabled]=\"minValue || maxValue\"-->\n <!-- >-->\n @if (!advanced()) {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings-outline\"></ion-icon>-->\n } @else {\n <!-- <ion-icon slot=\"icon-only\" name=\"settings\"></ion-icon>-->\n }\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n@if (value || minValue || maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button color=\"danger\" (click)=\"clear()\" class=\"square-button m-3\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n}\n<!--</ion-row>-->\n@if ((advanced() || minValue || maxValue) && allowAdvanced) {\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'from' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"minValue\" type=\"number\" step=\"1\"></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (minValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '>=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- <ion-col>-->\n <!-- <ion-item>-->\n <!-- <ion-label>-->\n {{ 'to' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"maxValue\" type=\"number\" step=\"1\"></ion-input>-->\n <!-- </ion-item>-->\n <!-- </ion-col>-->\n @if (maxValue) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null, '<=')\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-radio',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-radio-group [(ngModel)]=\"value\">-->\n <!-- <ion-item-divider class=\"font-light text-xl\">-->\n <!-- <ion-icon class=\"mr-6 text-2xl\" slot=\"start\" name=\"filter-outline\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n @if (value || value === false) {\n <!-- <ion-button-->\n <!-- slot=\"end\"-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-0 text-lg h-9 w-9 p-0\"-->\n <!-- >-->\n <!-- <ion-icon class=\"mr-6 text-2xl m-0 p-0\" slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n }\n <!-- </ion-item-divider>-->\n\n @for (item of possibilities(); track item) {\n <!-- <ion-item>-->\n <!-- <ion-label>{{ item.text | translate }}</ion-label>-->\n <!-- <ion-radio class=\"mr-10\" [value]=\"item.id\"></ion-radio>-->\n <!-- </ion-item>-->\n }\n <!-- </ion-radio-group>-->\n <!-- </ion-col>-->\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n margin-bottom: 1.2rem;\n ion-item-divider {\n //--padding-end: 0.8rem;\n //--ion-background-color: linear-gradient(\n // 90deg,\n // transparent,\n // var(--ion-color-light)\n //);\n ion-icon {\n //--color: var(--ion-color-primary);\n }\n ion-label {\n //--padding: var(--smart-button-padding-left) / 2\n // var(--smart-button-padding-top) / 2 var(--smart-button-padding-right) /\n // 2 var(--smart-button-padding-bottom) / 2;\n }\n .square-button {\n //--padding-start: 0.2em;\n //--padding-end: 0.2em;\n }\n }\n }\n `,\n ],\n})\nexport class FilterRadioComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-filter-text',\n template: `\n <!-- <ion-row>-->\n <!-- <ion-col>-->\n <!-- <ion-label position=\"floating\">-->\n {{ item()?.label || '' | translate }}\n <!-- </ion-label>-->\n <!-- <ion-input [(ngModel)]=\"value\"></ion-input>-->\n <!-- </ion-col>-->\n @if (value) {\n <!-- <ion-col size=\"auto\">-->\n <!-- <ion-button-->\n <!-- color=\"danger\"-->\n <!-- (click)=\"refresh(null)\"-->\n <!-- class=\"square-button m-3\"-->\n <!-- >-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-col>-->\n }\n <!-- </ion-row>-->\n `,\n imports: [TranslatePipe, FormsModule],\n styles: [\n `\n :host {\n width: 100%;\n .square-button {\n height: var(--smart-button-height) !important;\n }\n }\n `,\n ],\n})\nexport class FilterTextComponent<\n T extends IEntity<string>,\n> extends BaseComponent<T> {}\n","import { Component, input } from '@angular/core';\n\nimport { FieldType, IModelFilter } from '@smartsoft001/models';\n\nimport { ICrudFilter } from '../../models';\nimport { FilterCheckComponent } from './check/check.component';\nimport { FilterDateComponent } from './date/date.component';\nimport { FilterDateTimeComponent } from './date-time/date-time.component';\nimport { FilterDateWithEditComponent } from './date-with-edit/date-with-edit.component';\nimport { FilterFlagComponent } from './flag/flag.component';\nimport { FilterIntComponent } from './int/int.component';\nimport { FilterRadioComponent } from './radio/radio.component';\nimport { FilterTextComponent } from './text/text.component';\n\n@Component({\n selector: 'smart-crud-filter',\n templateUrl: './filter.component.html',\n imports: [\n FilterTextComponent,\n FilterIntComponent,\n FilterFlagComponent,\n FilterCheckComponent,\n FilterRadioComponent,\n FilterDateTimeComponent,\n FilterDateWithEditComponent,\n FilterDateComponent,\n ],\n})\nexport class FilterComponent {\n FieldType = FieldType;\n\n item = input<IModelFilter>();\n filter = input<ICrudFilter>();\n}\n","<!--<ion-item>-->\n@switch (item()?.fieldType) {\n @case (FieldType.date) {\n <smart-crud-filter-date\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date>\n }\n @case (FieldType.dateWithEdit) {\n <smart-crud-filter-date-with-edit\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date-with-edit>\n }\n @case (FieldType.dateTime) {\n <smart-crud-filter-date-time\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-date-time>\n }\n @case (FieldType.radio) {\n <smart-crud-filter-radio\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-radio>\n }\n @case (FieldType.check) {\n <smart-crud-filter-check\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-check>\n }\n @case (FieldType.flag) {\n <smart-crud-filter-flag\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-flag>\n }\n @case (FieldType.int) {\n <smart-crud-filter-int\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-int>\n }\n @default {\n <smart-crud-filter-text\n [item]=\"item()\"\n [filter]=\"filter()\"\n ></smart-crud-filter-text>\n }\n}\n<!--</ion-item>-->\n","import {\n Component,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnInit,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\n\nimport { MenuService, StyleService } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n FieldType,\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldListMetadata,\n IModelFilter,\n} from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { CrudConfig } from '../../crud.config';\nimport { ICrudFilter } from '../../models';\nimport { FilterComponent } from '../filter';\n\n/**\n * This component is only to use in crud module\n * @requires CrudModule\n * @example\n *\n * html: <smart-crud-filters></smart-crud-filters>\n *\n * use on the model:\n * @Model({\n titleKey: 'body',\n filters: [\n {\n label: 'testNegation',\n key: 'body',\n type: '!=',\n },\n {\n label: 'fromDate',\n key: 'createDate',\n type: '<=',\n fieldType: FieldType.dateWithEdit\n },\n {\n label: 'select',\n key: 'type',\n type: '=',\n fieldType: FieldType.radio,\n possibilities$: of([\n {\n id: 1, text: 'Test 1'\n },\n {\n id: 2, text: 'Test 2'\n }\n ])\n }\n ]\n})\n *\n * use on the field (list.filter property):\n * @Field({\n create: modifyMetdata,\n update: {\n ...modifyMetdata,\n multi: true\n },\n type: FieldType.longText,\n details: true,\n list: {\n order: 2,\n filter: true\n }\n })\n body: string;\n */\n@Component({\n selector: 'smart-crud-filters',\n template: `\n <!--<ion-header [hidden]=\"hideMenu()\">-->\n <!-- <ion-toolbar>-->\n <!-- <ion-buttons slot=\"end\">-->\n <!-- <ion-button (click)=\"onClose()\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-buttons>-->\n <!-- <ion-title>{{ 'filters' | translate }}</ion-title>-->\n <!-- </ion-toolbar>-->\n <!--</ion-header>-->\n <!--<ion-content style=\"height: 100vh\">-->\n <!-- <ion-list>-->\n @for (item of list(); track item) {\n <smart-crud-filter [item]=\"item\" [filter]=\"filter()\"></smart-crud-filter>\n }\n <!-- </ion-list>-->\n <div class=\"h-20\">&nbsp;</div>\n <!--</ion-content>-->\n `,\n imports: [FilterComponent],\n})\nexport class FiltersComponent<T extends IEntity<string>> implements OnInit {\n private menuService = inject(MenuService);\n private config = inject(CrudConfig<T>);\n private facade = inject(CrudFacade<T>);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n list!: WritableSignal<Array<IModelFilter>>;\n\n filter!: Signal<ICrudFilter | undefined>;\n\n /**\n * Hide menu used only from MenuService\n */\n readonly hideMenu: InputSignal<boolean> = input<boolean>(false);\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n this.list = signal([]);\n\n const modelFilters = getModelOptions(this.config.type)?.filters;\n\n this.list.set([\n ...(modelFilters\n ? modelFilters.map((item) => {\n if (!item.label) {\n item.label = 'MODEL.' + item.key;\n }\n return item;\n })\n : []),\n ...getModelFieldsWithOptions(new this.config.type())\n .filter((item) => (item.options?.list as IFieldListMetadata)?.filter)\n .map((item) => ({\n key: item.key,\n type:\n item.options.type === FieldType.text ||\n item.options.type === FieldType.longText\n ? ('~=' as const)\n : ('=' as const),\n label: 'MODEL.' + item.key,\n fieldType: item.options.type,\n })),\n ]);\n this.filter = this.facade.filter;\n }\n}\n","import {\n Component,\n computed,\n ElementRef,\n inject,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { StyleService } from '@smartsoft001/angular';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudFilterQueryItem } from '../../models';\n\n@Component({\n selector: 'smart-crud-filters-config',\n template: `\n @let query = this.query();\n @if (query && query?.length) {\n <!-- <ion-toolbar>-->\n @for (item of query; track item) {\n <!-- <ion-chip (click)=\"onRemoveQuery(item)\" color=\"medium\" outline=\"true\">-->\n <!-- <ion-icon name=\"filter-circle-outline\" color=\"primary\"></ion-icon>-->\n <!-- <ion-label>-->\n {{ 'MODEL.' + item.key | translate }} {{ item.type }}\n {{ item.value | translate }}\n <!-- </ion-label>-->\n <!-- <ion-icon name=\"close\" color=\"danger\"></ion-icon>-->\n <!-- </ion-chip>-->\n }\n <!-- </ion-toolbar>-->\n }\n `,\n imports: [TranslatePipe],\n styles: [\n `\n :host {\n ion-label {\n font-size: var(--small-font-size);\n }\n }\n `,\n ],\n})\nexport class FiltersConfigComponent implements OnInit {\n private readonly facade = inject(CrudFacade<any>);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n\n query!: Signal<ICrudFilterQueryItem[]>;\n\n onRemoveQuery(item: ICrudFilterQueryItem): void {\n const filter = this.facade.filter();\n if (filter?.query) {\n const index = filter.query.indexOf(item);\n if (index > -1) {\n filter.query.splice(index, 1);\n }\n }\n this.facade.read(this.facade.filter());\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n\n this.query = computed(() => {\n const filter = this.facade.filter();\n return filter?.query?.filter((i) => !i.hidden) || [];\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated - please, use IModelPossibilitiesProvider from @smartsoft001/angular\n */\nexport abstract class ICrudModelPossibilitiesProvider {\n abstract get<T>(type: any): {\n [key: string]: Observable<{ id: any; text: string }[]>;\n };\n}\n\n/**\n * @deprecated - please, use MODEL_POSSIBILITIES_PROVIDER from @smartsoft001/angular\n */\nexport const CRUD_MODEL_POSSIBILITIES_PROVIDER =\n new InjectionToken<ICrudModelPossibilitiesProvider>(\n 'CRUD_MODEL_POSSIBILITIES_PROVIDER',\n );\n","import { inject, Pipe, PipeTransform, Type } from '@angular/core';\n\nimport { IFormOptions, InputBaseComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CRUD_MODEL_POSSIBILITIES_PROVIDER } from '../../providers/model-possibilities/model-possibilities.provider';\n\n@Pipe({\n name: 'smartFormOptions',\n})\nexport class FormOptionsPipe<T extends IEntity<string>>\n implements PipeTransform\n{\n private modelPossibilitiesProvider = inject(\n CRUD_MODEL_POSSIBILITIES_PROVIDER,\n );\n\n transform(\n item: T,\n mode: string,\n type: any,\n uniqueProvider?: (values: Record<keyof T, any>) => Promise<boolean>,\n inputComponents?: { [key: string]: Type<InputBaseComponent<any>> },\n ): IFormOptions<T> {\n if (!mode || !type) return null as any;\n\n let possibilities = {};\n\n if (type && this.modelPossibilitiesProvider) {\n possibilities = this.modelPossibilitiesProvider.get(type);\n }\n\n if (mode === 'create') {\n return {\n mode: 'create',\n possibilities,\n inputComponents,\n uniqueProvider,\n model: new type(),\n show: true,\n };\n } else {\n const model = new type();\n\n if (item) {\n Object.keys(item).forEach((key) => {\n (model as any)[key] = (item as any)[key];\n });\n }\n\n return {\n mode: mode,\n uniqueProvider,\n possibilities: possibilities,\n inputComponents,\n model: model,\n show: true,\n };\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormOptionsPipe } from './form-options/form-options.pipe';\n\n@NgModule({\n exports: [FormOptionsPipe],\n imports: [FormOptionsPipe],\n})\nexport class CrudPipesModule {}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed, inject, Signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport * as _ from 'lodash';\nimport { DynamicIoDirective } from 'ng-dynamic-component';\n\nimport {\n ButtonComponent,\n FormComponent,\n IButtonOptions,\n MenuService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n getModelFieldsWithOptions,\n IFieldEditMetadata,\n} from '@smartsoft001/models';\n\nimport { CrudFacade } from '../../+state';\nimport { CrudFullConfig } from '../../crud.config';\nimport { FormOptionsPipe } from '../../pipes';\n\n@Component({\n selector: 'smart-crud-multiselect',\n templateUrl: './multiselect.component.html',\n imports: [\n TranslatePipe,\n NgComponentOutlet,\n DynamicIoDirective,\n FormOptionsPipe,\n FormComponent,\n ButtonComponent,\n ],\n})\nexport class MultiselectComponent<T extends IEntity<string>> {\n private facade = inject(CrudFacade<T>);\n public config = inject(CrudFullConfig<T>);\n private menuService = inject(MenuService);\n\n private _list!: Array<T>;\n private _changes!: Partial<T>;\n\n item!: T;\n valid!: boolean;\n buttonOptions: IButtonOptions = {\n click: async () => {\n const result = this._list.map((item) => {\n return {\n ...this._changes,\n id: item.id,\n };\n });\n\n this.facade.updatePartialMany(result);\n await this.menuService.closeEnd();\n },\n confirm: true,\n };\n lock!: boolean;\n showForm = false;\n\n list!: Signal<T[]>;\n\n constructor() {\n this.list = computed(() => {\n const list = this.facade.multiSelected() || [];\n this.lock = true;\n const model = new this.config.type();\n\n const fieldsWithOptions = getModelFieldsWithOptions(model)?.filter(\n (f) => (f.options.update as IFieldEditMetadata)?.multi,\n );\n\n this.showForm = !!fieldsWithOptions.length;\n\n fieldsWithOptions.forEach(({ key }) => {\n const uniques = _.uniq(list.map((i) => i[key]));\n\n if (uniques.length === 1) {\n model[key] = uniques[0];\n }\n });\n\n this.item = model;\n\n return list;\n });\n }\n\n async onClose(): Promise<void> {\n await this.menuService.closeEnd();\n }\n\n onPartialChange(changes: Partial<T>, list: Array<T>) {\n this.lock = false;\n this._list = list;\n this._changes = changes;\n }\n\n onValidChange(valid: boolean) {\n this.valid = valid;\n }\n}\n","@let list = this.list();\n@if (list) {\n <!-- <ion-header>-->\n <!-- <ion-toolbar>-->\n <!-- <ion-buttons slot=\"end\">-->\n <!-- <ion-button (click)=\"onClose()\">-->\n <!-- <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>-->\n <!-- </ion-button>-->\n <!-- </ion-buttons>-->\n <!--<ion-title>-->{{ 'selected' | translate }}: {{ list?.length\n }}<!--</ion-title>-->\n <!-- </ion-toolbar>-->\n <!-- </ion-header>-->\n\n @if (config?.list?.components?.multi) {\n <div>\n <ng-template\n [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n }\n\n @if (showForm && item) {\n <div>\n <smart-form\n [options]=\"item | smartFormOptions: 'multiUpdate' : config.type\"\n (valuePartialChange)=\"onPartialChange($event, list)\"\n (validChange)=\"onValidChange($event)\"\n ></smart-form>\n\n <smart-button\n class=\"smart:float-right\"\n [disabled]=\"lock || !valid\"\n [options]=\"buttonOptions\"\n >\n {{ 'change' | translate }}\n </smart-button>\n </div>\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { debounce } from 'lodash-decorators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudListGroup } from '../../models';\n\n@Injectable()\nexport class CrudListGroupService<T extends IEntity<string>> {\n private facade = inject(CrudFacade<T>);\n\n private _destroyed: Array<ICrudListGroup> = [];\n\n change(val: boolean, item: ICrudListGroup, force = false): void {\n if (val || force) {\n item.changed = true;\n\n const filter = this.facade.filter();\n let current = filter?.query?.find(\n (q) => q.key === item.key && q.type === '=',\n );\n\n if (!current) {\n current = {\n key: item.key,\n type: '=',\n value: null,\n };\n if (filter?.query) {\n filter.query.push(current);\n }\n }\n\n current.value = item.value;\n current.hidden = true;\n\n this.facade.read({\n ...this.facade.filter(),\n offset: 0,\n });\n }\n }\n\n destroy(groups: Array<ICrudListGroup>): void {\n this._destroyed = [\n ...(this._destroyed ? this._destroyed : []),\n ...groups.filter((g) => g.changed),\n ];\n\n this.refresh();\n }\n\n @debounce(250)\n private refresh(): void {\n const list = this._destroyed;\n this._destroyed = [];\n\n const filter = this.facade.filter();\n const newQuery =\n filter?.query?.filter((q) => !list.some((i) => q.key === i.key)) || [];\n\n this.facade.read({\n ...this.facade.filter(),\n query: newQuery,\n });\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n InputSignal,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport {\n // TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n // AccordionBodyComponent,\n // AccordionComponent,\n // AccordionHeaderComponent,\n BaseComponent,\n IListOptions,\n ListComponent,\n StyleService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { ICrudListGroup } from '../../models';\nimport { CrudListGroupService } from '../../services/list-group/list-group.service';\n\n@Component({\n selector: 'smart-crud-group',\n template: `\n <!-- TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n @for (item of groups(); track item.key) {\n <smart-accordion\n [show]=\"item.show || false\"\n (showChange)=\"change($event, item)\"\n >\n <smart-accordion-header [ngClass]=\"{ 'font-bold': item.show }\">\n {{ item.text | translate }}\n </smart-accordion-header>\n <smart-accordion-body>\n @if (item.show && !item.children && listOptions()) {\n <smart-list [options]=\"listOptions()!\"></smart-list>\n }\n @if (item.children) {\n <div style=\"margin-left: 50px\">\n <smart-crud-group\n [groups]=\"item.children\"\n [listOptions]=\"listOptions()\"\n ></smart-crud-group>\n </div>\n }\n </smart-accordion-body>\n </smart-accordion>\n }\n -->\n\n <!-- TODO: remove this template after moving to @smartsoft001-pro/angular (FRA-101) -->\n @for (item of groups(); track item.key) {\n <div (click)=\"change(!item.show, item)\">\n {{ item.text | translate }}\n </div>\n @if (item.show && !item.children && listOptions()) {\n <smart-list [options]=\"listOptions()!\"></smart-list>\n }\n @if (item.children) {\n <div style=\"margin-left: 50px\">\n <smart-crud-group\n [groups]=\"item.children\"\n [listOptions]=\"listOptions()\"\n ></smart-crud-group>\n </div>\n }\n }\n `,\n imports: [\n // TODO: AccordionComponent moved to @smartsoft001-pro/angular (FRA-101)\n // AccordionComponent,\n // AccordionHeaderComponent,\n // AccordionBodyComponent,\n ListComponent,\n NgClass,\n TranslatePipe,\n ],\n})\nexport class GroupComponent<T extends IEntity<string>>\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n private groupService = inject(CrudListGroupService<T>);\n\n readonly groups: InputSignal<Array<ICrudListGroup> | null> =\n input<Array<ICrudListGroup> | null>(null);\n readonly listOptions: InputSignal<IListOptions<T> | null> =\n input<IListOptions<T> | null>(null);\n\n change(val: boolean, item: ICrudListGroup, force = false): void {\n const groups = this.groups();\n if (groups) {\n groups\n .filter((i) => i.value !== item.value || i.key !== item.key)\n .forEach((i) => {\n i.show = false;\n });\n }\n\n this.groupService.change(val, item, force);\n\n item.show = val;\n }\n\n ngOnInit(): void {\n this.styleService.init(this.elementRef);\n }\n\n override ngOnDestroy(): void {\n const groups = this.groups();\n if (groups) {\n this.groupService.destroy(groups);\n }\n super.ngOnDestroy();\n }\n}\n","import { computed, inject, Injectable } from '@angular/core';\n\nimport { IListPaginationOptions, PaginationMode } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ICrudFilter } from '../../models';\n\n@Injectable()\nexport class CrudListPaginationFactory<T extends IEntity<string>> {\n private readonly facade = inject(CrudFacade<T>);\n\n async create(options: {\n mode?: PaginationMode;\n limit: number;\n provider: {\n getLinks(): any;\n getFilter(): ICrudFilter;\n };\n }): Promise<IListPaginationOptions> {\n return {\n mode: options.mode,\n limit: options.limit,\n loadNextPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().next)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n if (this.facade.loaded()) {\n setTimeout(() => {\n res(\n options.provider.getLinks() && options.provider.getLinks().next,\n );\n });\n }\n\n const filter = options.provider.getFilter();\n this.facade.read({\n ...filter,\n offset: (filter.offset || 0) + (filter.limit || 0),\n });\n });\n },\n loadPrevPage: () => {\n if (!options.provider.getLinks() || !options.provider.getLinks().prev)\n return Promise.resolve(false);\n\n return new Promise((res) => {\n const loaded = this.facade.loaded();\n if (loaded) {\n setTimeout(() => {\n res(\n options.provider.getLinks() && options.provider.getLinks().prev,\n );\n });\n }\n\n const filter = options.provider.getFilter();\n this.facade.read({\n ...filter,\n offset: (filter.offset || 0) - (filter.limit || 0),\n });\n });\n },\n page: computed(() => {\n const f = this.facade.filter();\n return f?.limit ? (f.offset || 0) / f.limit + 1 : 0;\n }),\n totalPages: computed(() => {\n const filter = this.facade.filter();\n const totalCount = this.facade.totalCount();\n return filter?.limit && totalCount\n ? Math.ceil(totalCount / filter.limit)\n : 0;\n }),\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudConfig } from '../../crud.config';\nimport { ICrudCreateManyOptions, ICrudFilter } from '../../models';\n\n@Injectable()\nexport class CrudService<T extends IEntity<string>> {\n protected config = inject(CrudConfig<T>);\n protected http = inject(HttpClient);\n\n protected _formatMap = {\n csv: 'text/csv',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n };\n\n create(item: T): Promise<string> {\n return firstValueFrom(\n this.http\n .post<void>(this.config.apiUrl, item, { observe: 'response' })\n .pipe(\n map((response) => {\n const location = (response.headers as any)['Location'];\n if (!location) return null;\n const array = location.split('/');\n return array[array.length - 1];\n }),\n ),\n );\n }\n\n createMany(items: Array<T>, options: ICrudCreateManyOptions): Promise<void> {\n return firstValueFrom(\n this.http.post<void>(\n this.config.apiUrl + '/bulk?mode=' + options.mode,\n items,\n ),\n );\n }\n\n getById(id: string): Promise<T> {\n return firstValueFrom(this.http.get<T>(this.config.apiUrl + '/' + id));\n }\n\n getList<T>(\n filter: ICrudFilter | null = null,\n ): Promise<{ data: T[]; totalCount: number; links: any }> {\n return firstValueFrom(\n this.http.get<{ data: T[]; totalCount: number; links: any }>(\n this.config.apiUrl + this.getQuery(filter as ICrudFilter),\n ),\n );\n }\n\n exportList(\n filter: ICrudFilter | null = null,\n format: 'csv' | 'xlsx',\n ): Promise<void> {\n if (!format) {\n format = 'csv';\n }\n\n if (format === 'xlsx') {\n return firstValueFrom(\n this.http\n .get(this.config.apiUrl + this.getQuery(filter as ICrudFilter), {\n headers: {\n 'Content-Type': this._formatMap[format],\n },\n observe: 'response',\n reportProgress: false,\n responseType: 'blob',\n })\n .pipe(\n map((res) => {\n const downloadLink = document.createElement('a');\n const blob = res.body;\n\n downloadLink.href = URL.createObjectURL(blob as Blob);\n downloadLink.download = 'data.' + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }),\n ),\n );\n }\n\n return firstValueFrom(\n this.http\n .get<string>(\n this.config.apiUrl + this.getQuery(filter as ICrudFilter),\n {\n headers: {\n 'Content-Type': this._formatMap[format],\n },\n responseType: 'text' as 'json',\n },\n )\n .pipe(\n map((res) => {\n const downloadLink = document.createElement('a');\n const blob = new Blob(['\\ufeff', res]);\n\n downloadLink.href = URL.createObjectURL(blob);\n downloadLink.download = 'data.' + format;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n }),\n ),\n );\n }\n\n update(item: T): Promise<void> {\n return firstValueFrom(\n this.http.put<void>(this.config.apiUrl + '/' + item.id, item),\n );\n }\n\n updatePartial(item: Partial<T> & { id: string }): Promise<void> {\n return firstValueFrom(\n this.http.patch<void>(this.config.apiUrl + '/' + item.id, item),\n );\n }\n\n updatePartialMany(items: (Partial<T> & { id: string })[]): Promise<any> {\n const updatePromises = items.map((item) => {\n return this.updatePartial(item);\n });\n return Promise.all(updatePromises);\n }\n\n delete(id: string): Promise<void> {\n return firstValueFrom(\n this.http.delete<void>(this.config.apiUrl + '/' + id),\n );\n }\n\n protected getQuery(filter: ICrudFilter): string {\n let query = '';\n\n if (filter && filter.searchText) {\n query += '&$search=' + filter.searchText;\n }\n\n if (filter && filter.limit) {\n query += `&limit=${filter.limit}&offset=${\n filter.offset ? filter.offset : 0\n }`;\n }\n\n if (filter && filter.sortBy) {\n query += `&sort=${(filter.sortDesc ? '-' : '') + filter.sortBy}`;\n }\n\n if (filter && filter.query) {\n filter.query.forEach((q) => {\n if (\n q.value &&\n typeof q.value === 'string' &&\n q.value.match(/^-?\\d+$/) &&\n q.value[0] !== \"'\" &&\n q.value[0] !== '\"'\n ) {\n query += '&' + q.key + q.type + `'${q.value}'`;\n } else {\n query += '&' + q.key + q.type + q.value;\n }\n });\n }\n\n return query ? '?' + query.replace('&', '') : '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DynamicIoModule } from 'ng-dynamic-component';\n\nimport { SharedModule } from '@smartsoft001/angular';\n\nimport { ExportComponent } from './export/export.component';\nimport {\n FilterComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterFlagComponent,\n FilterRadioComponent,\n FilterTextComponent,\n FilterCheckComponent,\n FilterIntComponent,\n FilterDateTimeComponent,\n} from './filter';\nimport { CrudPipesModule } from '../pipes';\nimport { FiltersComponent } from './filters/filters.component';\nimport { FiltersConfigComponent } from './filters-config/filters-config.component';\nimport { MultiselectComponent } from './multiselect/multiselect.component';\nimport { CrudFacade } from '../+state/crud.facade';\nimport { GroupComponent } from './group/group.component';\nimport { CrudListPaginationFactory } from '../factories/list-pagination/list-pagination.factory';\nimport { CrudService } from '../services/crud/crud.service';\n\nconst COMPONENTS = [\n ExportComponent,\n FilterComponent,\n FilterTextComponent,\n FiltersConfigComponent,\n FilterDateComponent,\n FilterDateWithEditComponent,\n FilterDateTimeComponent,\n FilterRadioComponent,\n FiltersComponent,\n FilterFlagComponent,\n FilterCheckComponent,\n FilterIntComponent,\n MultiselectComponent,\n GroupComponent,\n];\n\n@NgModule({\n imports: [\n ...COMPONENTS,\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n DynamicIoModule,\n ],\n exports: [CrudPipesModule, ...COMPONENTS],\n providers: [CrudService, CrudFacade, CrudListPaginationFactory],\n})\nexport class CrudComponentsModule {}\n","import 'reflect-metadata';\n\nimport { Injectable } from '@angular/core';\nimport { Action, ActionsSubject, select, State, Store } from '@ngrx/store';\nimport { first } from 'rxjs/operators';\n\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport * as CrudActions from './crud.actions';\nimport { CrudConfig } from '../crud.config';\nimport { getCrudFilter } from './crud.selectors';\nimport { CrudService } from '../services/crud/crud.service';\n\n@Injectable()\nexport class CrudEffects<T extends IEntity<string>> {\n constructor(\n private actions$: ActionsSubject,\n private service: CrudService<T>,\n private config: CrudConfig<T>,\n private store: Store<any>,\n private state: State<any>,\n ) {}\n\n init(): void {\n const metadata = Reflect.getMetadata(this.config.entity, CrudEffects);\n\n if (metadata) return;\n\n Reflect.defineMetadata(this.config.entity, true, CrudEffects);\n\n this.actions$.subscribe((action: Action & any) => {\n switch (action.type) {\n case `[${this.config.entity}] Create`:\n this.service\n .create(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.createSuccess(this.config.entity, action.item),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.createFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Create Success`: {\n const createState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createState?.filter ? { ...createState.filter, offset: 0 } : null,\n ),\n );\n break;\n }\n\n case `[${this.config.entity}] Create Many`:\n this.service\n .createMany(action.data.items, action.data.options)\n .then(() =>\n this.store.dispatch(\n CrudActions.createManySuccess(this.config.entity, {\n items: action.data.items,\n options: action.data.options,\n }),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.createManyFailure(\n this.config.entity,\n {\n items: action.data.items,\n options: action.data.options,\n },\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Create Many Success`: {\n const createManyState = this.state.getValue()[this.config.entity];\n this.store.dispatch(\n CrudActions.read(\n this.config.entity,\n createManyState?.filter\n ? { ...createManyState.filter, offset: 0 }\n : null,\n ),\n );\n break;\n }\n\n case `[${this.config.entity}] Read`:\n this.service\n .getList(action?.filter)\n .then((result) =>\n this.store.dispatch(\n CrudActions.readSuccess(\n this.config.entity,\n action?.filter,\n result as { data: T[]; totalCount: number; links: any },\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.readFailure(\n this.config.entity,\n action?.filter,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Export`:\n this.service\n .exportList(action?.filter, action.format)\n .then(() =>\n this.store.dispatch(\n CrudActions.exportListSuccess(\n this.config.entity,\n action?.filter,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.exportListFailure(\n this.config.entity,\n action?.filter,\n error,\n ),\n );\n });\n break;\n\n case `[${this.config.entity}] Select`:\n this.service\n .getById(action.id)\n .then((result) =>\n this.store.dispatch(\n CrudActions.selectSuccess(\n this.config.entity,\n action.id,\n result,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.selectFailure(this.config.entity, action.id, error),\n );\n });\n break;\n\n case `[${this.config.entity}] Update`:\n this.service\n .updatePartial(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.updateSuccess(this.config.entity, action.item),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updateFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n\n this.store.dispatch(\n CrudActions.select(this.config.entity, action.item.id),\n );\n });\n break;\n\n case `[${this.config.entity}] Update partial`:\n this.service\n .updatePartial(action.item)\n .then(() =>\n this.store.dispatch(\n CrudActions.updatePartialSuccess(\n this.config.entity,\n action.item,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updatePartialFailure(\n this.config.entity,\n action.item,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update partial Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n\n this.store.dispatch(\n CrudActions.select(this.config.entity, action.item.id),\n );\n });\n break;\n\n case `[${this.config.entity}] Update partial many`:\n this.service\n .updatePartialMany(action.items)\n .then(() =>\n this.store.dispatch(\n CrudActions.updatePartialManySuccess(\n this.config.entity,\n action.items,\n ),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.updatePartialManyFailure(\n this.config.entity,\n action.items,\n error,\n ),\n );\n this.store.dispatch(CrudActions.read(this.config.entity));\n });\n break;\n\n case `[${this.config.entity}] Update partial many Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n });\n break;\n\n case `[${this.config.entity}] Delete`:\n this.service\n .delete(action.id)\n .then(() =>\n this.store.dispatch(\n CrudActions.deleteSuccess(this.config.entity, action.id),\n ),\n )\n .catch((error) => {\n this.store.dispatch(\n CrudActions.deleteFailure(this.config.entity, action.id, error),\n );\n });\n break;\n\n case `[${this.config.entity}] Delete Success`:\n this.store\n .pipe(select(getCrudFilter(this.config.entity)), first())\n .subscribe((filter) => {\n this.store.dispatch(\n CrudActions.read(this.config.entity, {\n ...filter,\n offset: 0,\n }),\n );\n });\n break;\n\n default:\n console.warn(\n `No effect for action type ${action.type} in entity ${this.config.entity}`,\n );\n break;\n }\n });\n }\n}\n","import {\n Directive,\n inject,\n input,\n output,\n Signal,\n viewChild,\n viewChildren,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n BaseComponent,\n DynamicComponentType,\n FormComponent,\n IDetailsOptions,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { CrudFullConfig } from '../../../crud.config';\n\n@Directive()\nexport abstract class CrudItemPageBaseComponent<\n T extends IEntity<string>,\n> extends BaseComponent {\n public config = inject(CrudFullConfig<T>);\n public facade = inject(CrudFacade<T>);\n\n static smartType: DynamicComponentType = 'crud-item-page';\n\n selected: Signal<T>;\n\n contentTpl = viewChild<ViewContainerRef>('contentTpl');\n\n formComponents = viewChildren(FormComponent);\n\n detailsOptions = input<IDetailsOptions<T>>();\n\n mode = input<string>();\n\n uniqueProvider = input<(values: Record<keyof T, any>) => Promise<boolean>>();\n\n onPartialChange = output<Partial<T>>();\n\n onChange = output<T>();\n\n onValidChange = output<boolean>();\n\n constructor() {\n super();\n this.selected = this.facade.selected;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { DetailsComponent, FormComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { FormOptionsPipe } from '../../../pipes';\nimport { CrudItemPageBaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-item-standard-page',\n template: `\n @if (mode() === 'details') {\n @if (detailsOptions()) {\n <smart-details [options]=\"detailsOptions()\"></smart-details>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"editTpl\"></ng-container>\n }\n\n <ng-template #editTpl>\n <smart-form\n [options]=\"\n selected()\n | smartFormOptions\n : mode()\n : config?.type\n : uniqueProvider()\n : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n </ng-template>\n\n <br /><br />\n `,\n styleUrls: ['./standard.component.scss'],\n imports: [\n DetailsComponent,\n FormComponent,\n FormOptionsPipe,\n NgTemplateOutlet,\n FormComponent,\n ],\n})\nexport class ItemStandardComponent<\n T extends IEntity<string>,\n> extends CrudItemPageBaseComponent<T> {}\n","import { inject, Injectable } from '@angular/core';\n\nimport { AuthService } from '@smartsoft001/angular';\nimport { getModelOptions } from '@smartsoft001/models';\n\nimport { CrudFullConfig } from '../../crud.config';\n\n@Injectable()\nexport class PageService<T> {\n private authService = inject(AuthService);\n private config = inject(CrudFullConfig<T>);\n\n checkPermissions(): void {\n const val: CrudFullConfig<T> = this.config;\n const modelOptions = getModelOptions(val.type);\n\n if (\n val.add &&\n modelOptions.create &&\n modelOptions.create.permissions &&\n !this.authService.expectPermissions(modelOptions.create.permissions)\n ) {\n val.add = false;\n }\n\n if (\n val.edit &&\n modelOptions.update &&\n modelOptions.update.permissions &&\n !this.authService.expectPermissions(modelOptions.update.permissions)\n ) {\n val.edit = false;\n }\n\n if (\n val.remove &&\n modelOptions.remove &&\n modelOptions.remove.permissions &&\n !this.authService.expectPermissions(modelOptions.remove.permissions)\n ) {\n val.remove = false;\n }\n }\n}\n","import { Location, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n Signal,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n CreateDynamicComponent,\n DetailsService,\n DynamicComponentLoader,\n DynamicContentDirective,\n ICellPipe,\n IDetailsOptions,\n IIconButtonOptions,\n IPageOptions,\n // PageComponent,\n StyleService,\n ToastService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport { getModelOptions } from '@smartsoft001/models';\nimport { SpecificationService } from '@smartsoft001/utils';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { CrudFullConfig } from '../../crud.config';\nimport { ICrudFilter } from '../../models';\nimport { CrudItemPageBaseComponent } from './base/base.component';\nimport { ItemStandardComponent } from './standard/standard.component';\nimport { CrudService } from '../../services/crud/crud.service';\nimport { PageService } from '../../services/page/page.service';\n\n@Component({\n selector: 'smart-crud-item-page',\n imports: [/*PageComponent,*/ ItemStandardComponent, NgTemplateOutlet],\n template: `\n <!-- <smart-page [options]=\"pageOptions()\">-->\n <div #topTpl class=\"text-xl py-2.5 separator\"></div>\n @if (template() === 'default') {\n <smart-crud-item-standard-page\n [detailsOptions]=\"detailsOptions()\"\n [mode]=\"mode\"\n [uniqueProvider]=\"uniqueProvider()\"\n (onPartialChange)=\"onPartialChange($event)\"\n (onChange)=\"onChange($event)\"\n (onValidChange)=\"onValidChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-item-standard-page>\n }\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n <div #bottomTpl class=\"text-xl py-2.5 separator\"></div>\n <!-- </smart-page>-->\n `,\n})\nexport class ItemComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudItemPageBaseComponent<any>>(\n 'crud-item-page',\n )\n implements OnInit, OnDestroy\n{\n private router = inject(Router);\n private activeRoute = inject(ActivatedRoute);\n private facade = inject(CrudFacade<T>);\n private service = inject(CrudService<T>);\n private dynamicComponentLoader = inject(DynamicComponentLoader<T>);\n private translateService = inject(TranslateService);\n public config = inject(CrudFullConfig<T>);\n private location = inject(Location);\n private cd = inject(ChangeDetectorRef);\n private styleService = inject(StyleService);\n private elementRef = inject(ElementRef);\n private toastService = inject(ToastService);\n private pageService = inject(PageService<T>);\n private detailsService = inject(DetailsService);\n\n private _mode!: WritableSignal<string>;\n\n pageOptions: WritableSignal<IPageOptions> = signal({\n title: '',\n showBackButton: true,\n hideMenuButton: true,\n });\n detailsOptions!: WritableSignal<IDetailsOptions<T>>;\n id!: string;\n formValue!: T;\n formValid = false;\n item!: T;\n formPartialValue!: Partial<T>;\n uniqueProvider!: WritableSignal<\n (values: Record<keyof T, any>) => Promise<boolean>\n >;\n\n set mode(val: string) {\n this._mode = signal(val);\n this.refreshDynamicInstance();\n }\n get mode(): string {\n return this._mode();\n }\n\n selected: Signal<T>;\n\n standardComponents = viewChildren(ItemStandardComponent);\n // @ViewChild(IonContent, { static: true }) content: IonContent; //TODO: rewrite when rewriting ionic\n\n override contentTpl = viewChild<TemplateRef<any>>('contentTpl');\n\n topTpl = viewChild<ViewContainerRef>('topTpl');\n\n bottomTpl = viewChild<ViewContainerRef>('bottomTpl');\n\n override dynamicContents = viewChildren<DynamicContentDirective>(\n DynamicContentDirective,\n );\n\n subscription = new Subscription();\n\n constructor() {\n super();\n\n this.selected = this.facade.selected;\n\n effect(() => {\n this.item = this.facade.selected();\n this.initPageOptions();\n this.cd.detectChanges();\n });\n }\n\n override refreshProperties() {\n this.baseComponentRef.setInput('detailsOptions', this.detailsOptions());\n this.baseComponentRef.setInput('mode', this.mode);\n this.baseComponentRef.setInput('uniqueProvider', this.uniqueProvider());\n this.subscription.add(\n this.baseInstance.onPartialChange.subscribe((val) =>\n this.onPartialChange(val),\n ),\n );\n this.subscription.add(\n this.baseInstance.onChange.subscribe((val) => this.onChange(val)),\n );\n this.subscription.add(\n this.baseInstance.onValidChange.subscribe((val) =>\n this.onValidChange(val),\n ),\n );\n }\n\n async ngOnInit() {\n this.detailsService.init();\n this.styleService.init(this.elementRef);\n\n this.pageService.checkPermissions();\n\n if (this.router.routerState.snapshot.url.split('?')[0].endsWith('/add')) {\n this.mode = 'create';\n await this.generateComponents('add');\n } else {\n this.mode = this.config.details ? 'details' : 'update';\n\n if (this.mode === 'update') {\n await this.generateComponents('edit');\n }\n\n this.activeRoute.params\n .pipe(this.takeUntilDestroy)\n .subscribe(({ id }) => {\n this.facade.select(id);\n this.id = id;\n });\n\n this.activeRoute.queryParams\n .pipe(this.takeUntilDestroy)\n .subscribe(({ edit }) => {\n if (edit) {\n this.mode = 'update';\n this.generateComponents('edit');\n }\n });\n }\n\n this.uniqueProvider.set(async (values) => {\n const filter: ICrudFilter = {\n query: [],\n };\n\n Object.keys(values).forEach((key) => {\n filter.query!.push({\n key: key,\n value: (values as any)[key],\n type: '=',\n });\n });\n\n if (this.id) {\n filter.query!.push({\n key: 'id',\n value: this.id,\n type: '!=',\n });\n }\n const { totalCount } = await this.service.getList(filter);\n\n return !totalCount;\n });\n\n if (this.config.details) {\n const compiledComponents: {\n component: any;\n factory: ComponentFactory<any>;\n }[] = await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].top\n ? [(this.config.details as any)['components'].top]\n : []),\n ...(this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].bottom\n ? [(this.config.details as any)['components'].bottom]\n : []),\n ],\n });\n\n this.detailsOptions.set({\n type: this.config.type,\n item: this.facade.selected,\n cellPipe: this.config.details\n ? (this.config.details as { cellPipe?: ICellPipe<T> }).cellPipe\n : undefined,\n componentFactories: {\n top:\n this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].top\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any)['components'].top,\n )?.factory\n : undefined,\n bottom:\n this.config.details &&\n (this.config.details as any)['components'] &&\n (this.config.details as any)['components'].bottom\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any)['components'].bottom,\n )?.factory\n : undefined,\n },\n });\n }\n\n this.initPageOptions();\n\n this.refreshDynamicInstance();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n this.subscription.unsubscribe();\n }\n\n private async generateComponents(mode: 'add' | 'edit') {\n const compiledComponents =\n await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config[mode] &&\n (this.config[mode] as any)['components'] &&\n (this.config[mode] as any)['components'].top\n ? [(this.config[mode] as any)['components'].top]\n : []),\n ...(this.config[mode] &&\n (this.config[mode] as any)['components'] &&\n (this.config[mode] as any)['components'].bottom\n ? [(this.config[mode] as any)['components'].bottom]\n : []),\n ],\n });\n\n const topComponentFactory = compiledComponents.find(\n (cc) => cc.component === (this.config[mode] as any)['components']?.top,\n )?.factory;\n\n const bottomComponentFactory = compiledComponents.find(\n (cc) => cc.component === (this.config[mode] as any)['components']?.bottom,\n )?.factory;\n\n if (!this.topTpl()?.get(0) && topComponentFactory) {\n this.topTpl()?.createComponent(topComponentFactory);\n }\n\n if (!this.bottomTpl()?.get(0) && bottomComponentFactory) {\n this.bottomTpl()?.createComponent(bottomComponentFactory);\n }\n }\n\n onPartialChange(val: Partial<T>) {\n this.formPartialValue = val;\n }\n\n onChange(val: T) {\n this.formValue = val;\n }\n\n onValidChange(val: boolean) {\n this.formValid = val;\n }\n\n private initPageOptions(): void {\n this.pageOptions.set({\n ...this.pageOptions(),\n title: this.getTitle() || '',\n endButtons: this.getButtons(),\n });\n }\n\n private getButtons(): Array<IIconButtonOptions> | undefined {\n const options = getModelOptions(this.config.type);\n\n switch (this.mode) {\n case 'create':\n return [\n {\n icon: 'add',\n text: 'add',\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.facade.create(this.formValue);\n this.location.back();\n },\n },\n ];\n case 'update':\n return [\n ...(this.config.details\n ? [\n {\n icon: 'close',\n text: 'cancel',\n handler: () => {\n this.mode = 'details';\n this.initPageOptions();\n this.topTpl()?.clear();\n this.bottomTpl()?.clear();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : []),\n {\n icon: 'save',\n text: 'save',\n handler: () => {\n if (this.checkFirstInvalid()) {\n return;\n }\n\n this.formPartialValue.id = this.id;\n this.facade.updatePartial(this.formPartialValue as any);\n\n if (this.config.details) {\n this.mode = 'details';\n this.initPageOptions();\n } else {\n this.location.back();\n }\n },\n },\n ];\n case 'details':\n return this.config.edit &&\n (!options?.update?.enabled ||\n SpecificationService.valid(this.item, options?.update?.enabled))\n ? [\n {\n icon: 'create',\n text: 'edit',\n handler: () => {\n this.mode = 'update';\n this.generateComponents('edit');\n this.initPageOptions();\n },\n disabled$: new BehaviorSubject(false),\n },\n ]\n : [];\n default:\n return undefined;\n }\n }\n\n private getTitle(): string | undefined {\n const options = getModelOptions(this.config.type);\n\n const prefix =\n options.titleKey && this.item\n ? this.removeParagraph((this.item as any)[options.titleKey]) + ' - '\n : '';\n\n switch (this.mode) {\n case 'create':\n return 'add';\n case 'update':\n return prefix + this.translateService.instant('change');\n case 'details':\n return prefix + this.translateService.instant('details');\n default:\n return undefined;\n }\n }\n\n private removeParagraph(val: string): string {\n if (!val || val.indexOf('<p>') !== 0) return val;\n\n const div = document.createElement('div');\n div.innerHTML = val;\n\n const item = div.querySelectorAll('p').item(0);\n\n return item.innerHTML;\n }\n\n private checkFirstInvalid(): boolean {\n this.cd.detectChanges();\n\n const form =\n this.template() === 'default'\n ? (this.standardComponents() as any)?.[0]?.formComponents?.[0]?.form\n : this.baseInstance.formComponents()[0].form;\n\n this.cd.detectChanges();\n\n if (form.valid) return false;\n\n const invalidFields: string[] = [];\n\n this.getInvalidFields(form, invalidFields, '');\n\n this.toastService.info({\n title: this.translateService.instant('INPUT.ERRORS.requires'),\n message: invalidFields.slice(0, 3).join('<br/>'),\n });\n\n return true;\n }\n\n private getInvalidFields(\n control: AbstractControl,\n invalidFields: any[],\n baseField: string,\n key = null,\n ) {\n if (control.valid) return;\n\n const field = key\n ? baseField + ' > ' + this.translateService.instant('MODEL.' + key)\n : baseField;\n\n if (control.errors?.['customMessage']) {\n invalidFields.push(field + ` (${control.errors['customMessage']})`);\n return;\n }\n\n if (control instanceof UntypedFormControl) {\n invalidFields.push(field);\n }\n\n if (control instanceof UntypedFormGroup) {\n Object.keys(control.controls).forEach((groupKey) => {\n this.getInvalidFields(\n control.controls[groupKey],\n invalidFields,\n field,\n groupKey as any,\n );\n });\n }\n\n if (control instanceof UntypedFormArray) {\n control.controls.forEach((c, index) => {\n this.getInvalidFields(c, invalidFields, field + `(${index + 1})`);\n });\n }\n }\n}\n","import {\n Directive,\n inject,\n input,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n BaseComponent,\n DynamicComponentType,\n IListOptions,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFullConfig } from '../../../crud.config';\n\n@Directive()\nexport abstract class CrudListPageBaseComponent<\n T extends IEntity<string>,\n> extends BaseComponent {\n public config = inject(CrudFullConfig<T>);\n\n static smartType: DynamicComponentType = 'crud-list-page';\n\n contentTpl = viewChild<ViewContainerRef>('contentTpl');\n\n listOptions = input<IListOptions<T> | null>();\n}\n","import { Component, computed, inject, Signal } from '@angular/core';\n\nimport { ListComponent } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { CrudFacade } from '../../../+state/crud.facade';\nimport { FiltersConfigComponent, GroupComponent } from '../../../components';\nimport { CrudFullConfig } from '../../../crud.config';\nimport { CrudListGroupService } from '../../../services/list-group/list-group.service';\nimport { CrudListPageBaseComponent } from '../base/base.component';\n\n@Component({\n selector: 'smart-crud-list-standard-page',\n template: `\n <smart-crud-filters-config></smart-crud-filters-config>\n @let groups = config.list?.groups;\n @if (listOptions()) {\n <smart-list\n [hidden]=\"groups && !isSearch()\"\n [options]=\"listOptions()!\"\n ></smart-list>\n }\n @if (groups && !isSearch()) {\n <smart-crud-group\n [groups]=\"groups\"\n [listOptions]=\"listOptions() || null\"\n ></smart-crud-group>\n }\n `,\n imports: [FiltersConfigComponent, ListComponent, GroupComponent],\n providers: [CrudListGroupService],\n})\nexport class ListStandardComponent<\n T extends IEntity<string>,\n> extends CrudListPageBaseComponent<T> {\n private readonly facade = inject(CrudFacade<T>);\n public override readonly config = inject(CrudFullConfig<T>);\n\n isSearch: Signal<boolean> = computed(\n () => !!this.facade.filter()?.searchText,\n );\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ICrudFilter } from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CrudSearchService {\n private _filterSource = new BehaviorSubject<Partial<ICrudFilter>>({});\n private _enabledSource = new BehaviorSubject<boolean>(false);\n\n get filter(): Partial<ICrudFilter> {\n if (!this._enabledSource.value) return {};\n return this._filterSource.value || {};\n }\n\n get enabled(): boolean {\n return this._enabledSource.value;\n }\n\n enabled$ = this._enabledSource.asObservable();\n\n filter$: Observable<Partial<ICrudFilter>> = combineLatest([\n this._filterSource.asObservable(),\n this.enabled$,\n ]).pipe(\n map(([filter, enabled]) => {\n if (!enabled) return {};\n return filter;\n }),\n );\n\n setFilter(val: Partial<ICrudFilter>): void {\n this._filterSource.next(val);\n }\n\n setEnabled(val: boolean): void {\n this._enabledSource.next(val);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n computed,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\nimport {\n CreateDynamicComponent,\n DynamicComponentLoader,\n DynamicContentDirective,\n HardwareService,\n IIconButtonOptions,\n IListOptions,\n IPageOptions,\n ListMode,\n MenuService,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\nimport {\n getModelFieldsWithOptions,\n getModelOptions,\n IFieldEditMetadata,\n IFieldListMetadata,\n} from '@smartsoft001/models';\nimport { SpecificationService } from '@smartsoft001/utils';\n\nimport { CrudFacade } from '../../+state/crud.facade';\nimport { ExportComponent } from '../../components';\nimport { FiltersComponent } from '../../components';\nimport { MultiselectComponent } from '../../components';\nimport { CrudFullConfig } from '../../crud.config';\nimport { CrudListPageBaseComponent } from './base/base.component';\nimport { CrudListPaginationFactory } from '../../factories/list-pagination/list-pagination.factory';\nimport { ICrudFilter } from '../../models';\nimport { ListStandardComponent } from './standard/standard.component';\nimport { PageService } from '../../services/page/page.service';\nimport { CrudSearchService } from '../../services/search/search.service';\n\n@Component({\n selector: 'smart-crud-list-page',\n imports: [ListStandardComponent, NgTemplateOutlet],\n template: `\n @if (filter() && pageOptions()) {\n <!-- <smart-page [options]=\"pageOptions()\">-->\n <div #topTpl></div>\n\n @if (template() === 'default' && listOptions()) {\n <smart-crud-list-standard-page [listOptions]=\"listOptions()\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </smart-crud-list-standard-page>\n }\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"dynamic-content\"></div>\n <!-- </smart-page>-->\n }\n `,\n})\nexport class ListComponent<T extends IEntity<string>>\n extends CreateDynamicComponent<CrudListPageBaseComponent<any>>(\n 'crud-list-page',\n )\n implements OnInit, OnDestroy\n{\n private facade = inject(CrudFacade<T>);\n private router = inject(Router);\n private dynamicComponentLoader = inject(DynamicComponentLoader<T>);\n private injector = inject(Injector);\n private cd = inject(ChangeDetectorRef);\n private menuService = inject(MenuService);\n private hardwareService = inject(HardwareService);\n private paginationFacade = inject(CrudListPaginationFactory<T>);\n private pageService = inject(PageService<T>);\n public config = inject(CrudFullConfig<T>);\n private searchService = inject(CrudSearchService);\n\n private _cleanMultiSelected$ = new Subject<void>();\n\n pageOptions = signal<IPageOptions | null>(null);\n listOptions = signal<IListOptions<T> | null>(null);\n links = this.facade.links;\n\n filter: Signal<ICrudFilter | undefined> = this.facade.filter;\n\n topTpl = viewChild<ViewContainerRef>('topTpl');\n\n override contentTpl = viewChild<TemplateRef<any>>('contentTpl');\n\n override dynamicContents = viewChildren<DynamicContentDirective>(\n DynamicContentDirective,\n );\n\n override refreshProperties(): void {\n this.baseComponentRef.setInput('listOptions', this.listOptions());\n }\n\n async ngOnInit(): Promise<void> {\n this.pageService.checkPermissions();\n\n const options = getModelOptions(this.config.type);\n\n let newFilter = null;\n\n if (this.config.list?.resetQuery === 'beforeInit') {\n newFilter = {\n query: this.config.baseQuery ? [...this.config.baseQuery] : [],\n paginationMode: this.config.list!.paginationMode,\n limit: this.config.pagination\n ? this.config.pagination.limit\n : undefined,\n offset: this.config.pagination ? 0 : undefined,\n sortBy: this.config.sort\n ? (this.config.sort as any)['default']\n : undefined,\n sortDesc: this.config.sort\n ? (this.config.sort as any)['defaultDesc']\n : undefined,\n ...this.searchService.filter,\n };\n } else if (this.filter()) {\n newFilter = this.filter();\n } else {\n newFilter = {\n paginationMode: this.config.list!.paginationMode,\n limit: this.searchService.filter?.limit\n ? this.searchService.filter.limit\n : this.config.pagination\n ? this.config.pagination.limit\n : undefined,\n offset:\n this.searchService.filter?.offset ||\n this.searchService.filter?.offset === 0\n ? this.searchService.filter.offset\n : this.config.pagination\n ? 0\n : undefined,\n sortBy: this.searchService.filter?.sortBy\n ? this.searchService.filter.sortBy\n : this.config.sort\n ? (this.config.sort as any)['default']\n : undefined,\n sortDesc: this.searchService.filter?.sortDesc\n ? this.searchService.filter.sortDesc\n : this.config.sort\n ? (this.config.sort as any)['defaultDesc']\n : undefined,\n query: this.config.baseQuery ? [...this.config.baseQuery] : [],\n ...this.searchService.filter,\n };\n }\n\n this.facade.read(newFilter);\n\n const endButtons = this.getEndButtons();\n\n this.pageOptions.set({\n title: this.config.title || '',\n search: this.config.search\n ? {\n text: computed(() => this.filter()?.searchText ?? ''),\n set: (txt) => {\n if (txt !== this.filter()?.searchText)\n this.facade.read({\n ...this.filter(),\n searchText: txt,\n offset: 0,\n });\n },\n }\n : undefined,\n endButtons: endButtons,\n });\n\n const compiledComponents =\n await this.dynamicComponentLoader.getComponentsWithFactories({\n components: [\n ...(this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.top\n ? [this.config.details.components.top]\n : []),\n ...(this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.bottom\n ? [this.config.details.components.bottom]\n : []),\n ...(this.config.list &&\n typeof this.config.list === 'object' &&\n 'components' in this.config.list &&\n this.config.list.components?.top\n ? [this.config.list.components.top]\n : []),\n ],\n });\n\n this.listOptions.set({\n provider: {\n getData: (filter): void => {\n const global = {\n ...this.filter(),\n ...filter,\n };\n this.facade.read(global);\n },\n onChangeMultiSelected: async (list) => {\n if (list.length && !this.menuService.openedEnd) {\n await this.menuService.openEnd({\n injector: this.injector,\n component: MultiselectComponent,\n });\n } else if (!list.length && this.menuService.openedEnd) {\n await this.menuService.closeEnd();\n }\n\n this.facade.multiSelect(list);\n },\n list: computed(() => this.facade.list() || []),\n loading: this.facade.loading,\n onCleanMultiSelected$: this._cleanMultiSelected$,\n },\n cellPipe: this.config.list ? this.config.list.cellPipe : undefined,\n mode: this.config.list?.mode,\n type: this.config.type,\n details: this.config.details\n ? {\n provider: {\n getData: (id) => {\n this.facade.select(id);\n },\n clearData: () => {\n this.facade.unselect();\n },\n item: this.facade.selected,\n loading: this.facade.loading,\n },\n componentFactories: {\n top:\n this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.top\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any).components.top,\n )?.factory\n : undefined,\n bottom:\n this.config.details &&\n typeof this.config.details === 'object' &&\n 'components' in this.config.details &&\n this.config.details.components?.bottom\n ? compiledComponents.find(\n (cc) =>\n cc.component ===\n (this.config.details as any).components.bottom,\n )?.factory\n : undefined,\n },\n }\n : undefined,\n item:\n !!this.config.edit || this.config.details\n ? {\n options: {\n routingPrefix: '/' + this.router.routerState.snapshot.url + '/',\n edit: !!this.config.edit,\n },\n }\n : undefined,\n remove: this.config.remove\n ? {\n provider: {\n invoke: (id) => this.facade.delete(id),\n check: (item: T) => {\n return options?.remove?.enabled\n ? SpecificationService.valid(item, options?.remove?.enabled)\n : true;\n },\n },\n }\n : undefined,\n pagination: await this.paginationFacade.create({\n mode: this.config.list!.paginationMode,\n limit: this.config.pagination!.limit,\n provider: {\n getFilter: () => {\n return this.filter() || ({} as ICrudFilter);\n },\n getLinks: () => this.links(),\n },\n }),\n sort: this.config.sort,\n });\n\n this.cd.detectChanges();\n\n this.initCloseMenu();\n this.initTopComponent(compiledComponents);\n\n this.refreshDynamicInstance();\n }\n\n private initCloseMenu() {\n this.router.events.pipe(this.takeUntilDestroy).subscribe(async () => {\n await this.clear();\n });\n }\n\n private async clear() {\n await this.menuService.closeEnd();\n\n this.listOptions.update((val) => ({\n ...(val as IListOptions<T>),\n select: undefined,\n }));\n\n this.facade.multiSelect([]);\n }\n\n private getEndButtons(): Array<IIconButtonOptions> {\n const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());\n const modelOptions = getModelOptions(this.config.type);\n\n const showFilters =\n fieldsWithOptions.some(\n (x) => (x.options?.list as IFieldListMetadata)?.filter,\n ) || modelOptions?.filters?.length;\n\n const showMultiEdit =\n this.config.list?.components?.multi ||\n (this.config.edit &&\n fieldsWithOptions.some(\n (x) => (x.options?.update as IFieldEditMetadata)?.multi,\n ) &&\n !this.hardwareService.isMobile &&\n (!this.config?.list?.mode ||\n this.config?.list?.mode === ListMode.desktop));\n\n return [\n ...(showMultiEdit\n ? [\n {\n icon: 'checkbox-outline',\n text: 'multi',\n handler: () => {\n this.facade.multiSelect([]);\n this._cleanMultiSelected$.next();\n\n setTimeout(async () => {\n this.listOptions.update((val) => ({\n ...(val as IListOptions<T>),\n select: val?.select === 'multi' ? undefined : 'multi',\n }));\n if (this.menuService.openedEnd)\n await this.menuService.closeEnd();\n this.cd.detectChanges();\n });\n },\n },\n ]\n : []),\n ...(showFilters\n ? [\n {\n icon: 'filter-outline',\n text: 'filters',\n handler: async () => {\n await this.menuService.openEnd({\n injector: this.injector,\n component: FiltersComponent,\n });\n },\n },\n ]\n : []),\n ...(this.config.add\n ? [\n {\n icon: 'add',\n text: 'add',\n handler: () => {\n this.router.navigate([\n '/' + this.router.routerState.snapshot.url + '/add',\n ]);\n },\n },\n ]\n : []),\n ...(this.config.export\n ? [\n {\n text: 'export',\n icon: 'download-outline',\n type: 'popover' as const,\n component: ExportComponent,\n },\n ]\n : []),\n ...(this.config.buttons ? this.config.buttons : []),\n ];\n }\n\n private initTopComponent(\n compiledComponents: {\n component: any;\n factory: ComponentFactory<any>;\n }[],\n ) {\n const factory =\n this.config.list &&\n typeof this.config.list === 'object' &&\n 'components' in this.config.list &&\n this.config.list.components?.top\n ? compiledComponents.find(\n (cc) => cc.component === (this.config.list as any).components.top,\n )?.factory\n : null;\n\n setTimeout(() => {\n if (factory && !this.topTpl()?.get(0)) {\n this.topTpl()?.createComponent(factory);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { NgrxStoreService, SharedModule } from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { getReducer, CrudFacade } from './+state';\nimport { CrudEffects } from './+state/crud.effects';\nimport { CrudComponentsModule } from './components';\nimport { CrudConfig } from './crud.config';\nimport { CrudListPaginationFactory } from './factories/list-pagination/list-pagination.factory';\nimport { ListComponent } from './pages';\nimport { ItemComponent } from './pages';\nimport { ListStandardComponent } from './pages';\nimport { ItemStandardComponent } from './pages';\nimport { CrudPipesModule } from './pipes';\nimport { CrudService } from './services/crud/crud.service';\nimport { CrudListGroupService } from './services/list-group/list-group.service';\nimport { PageService } from './services/page/page.service';\n\nexport const PAGES = [\n ItemComponent,\n ListComponent,\n ListStandardComponent,\n ItemStandardComponent,\n];\n\n@NgModule({\n imports: [\n ...PAGES,\n SharedModule,\n CrudPipesModule,\n RouterModule.forChild([\n { path: '', component: ListComponent },\n { path: 'add', component: ItemComponent },\n { path: ':id', component: ItemComponent },\n ]),\n FormsModule,\n CommonModule,\n CrudComponentsModule,\n ],\n exports: [...PAGES, CrudComponentsModule],\n providers: [\n CrudService,\n CrudListGroupService,\n PageService,\n CrudFacade,\n CrudEffects,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudFullModule<T extends IEntity<string>> {\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport {\n FILE_SERVICE_CONFIG,\n IFileServiceConfig,\n NgrxStoreService,\n SharedModule,\n} from '@smartsoft001/angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport { getReducer } from './+state';\nimport { CrudEffects } from './+state/crud.effects';\nimport { CrudFacade } from './+state/crud.facade';\nimport { CrudComponentsModule } from './components';\nimport { CrudFullModule } from './crud-full.module';\nimport { CrudConfig, CrudFullConfig } from './crud.config';\nimport { CrudListPaginationFactory } from './factories/list-pagination/list-pagination.factory';\nimport { CrudPipesModule } from './pipes';\nimport { CrudService } from './services/crud/crud.service';\nimport { CrudListGroupService } from './services/list-group/list-group.service';\nimport { PageService } from './services/page/page.service';\n\n@NgModule({\n imports: [\n SharedModule,\n CrudPipesModule,\n FormsModule,\n CommonModule,\n CrudComponentsModule,\n ],\n exports: [CrudComponentsModule],\n providers: [\n CrudService,\n CrudListGroupService,\n CrudEffects,\n PageService,\n CrudFacade,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudCoreModule<T extends IEntity<string>> {\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n\n@NgModule({\n providers: [\n CrudService,\n CrudListGroupService,\n CrudEffects,\n PageService,\n CrudFacade,\n CrudListPaginationFactory,\n ],\n})\nexport class CrudModule<T extends IEntity<string>> {\n static forFeature<T extends IEntity<string>>(\n options:\n | ICrudModuleOptionsWithRoutng<T>\n | ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<CrudModule<any>> {\n return {\n ngModule: options.routing ? CrudFullModule : CrudCoreModule,\n providers: [\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n\n constructor(config: CrudConfig<T>, effects: CrudEffects<any>) {\n NgrxStoreService.addReducer(\n config.entity,\n config.reducerFactory\n ? config.reducerFactory()\n : getReducer(config.entity),\n );\n effects.init();\n }\n}\n\nexport interface ICrudModuleOptionsWithRoutng<T> {\n config: CrudFullConfig<T>;\n socket?: boolean;\n routing: true;\n}\n\nexport interface ICrudModuleOptionsWithoutRoutng<T> {\n config: CrudConfig<T>;\n socket?: boolean;\n routing: false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["select","CrudSelectors.getCrudLoaded","CrudSelectors.getCrudSelected","CrudSelectors.getCrudMultiSelected","CrudSelectors.getCrudList","CrudSelectors.getCrudFilter","CrudSelectors.getCrudTotalCount","CrudSelectors.getCrudLinks","CrudSelectors.getCrudError","CrudActions.create","CrudActions.createMany","CrudActions.read","CrudActions.clear","CrudActions.select","CrudActions.unselect","CrudActions.multiSelect","CrudActions.update","CrudActions.exportList","CrudActions.updatePartial","CrudActions.updatePartialMany","CrudActions.deleteItem","i2.CrudConfig","BaseComponent","ListComponent","CrudActions.createSuccess","CrudActions.createFailure","CrudActions.createManySuccess","CrudActions.createManyFailure","CrudActions.readSuccess","CrudActions.readFailure","CrudActions.exportListSuccess","CrudActions.exportListFailure","CrudActions.selectSuccess","CrudActions.selectFailure","CrudActions.updateSuccess","CrudActions.updateFailure","CrudActions.updatePartialSuccess","CrudActions.updatePartialFailure","CrudActions.updatePartialManySuccess","CrudActions.updatePartialManyFailure","CrudActions.deleteSuccess","CrudActions.deleteFailure","i2.CrudService","i3.CrudConfig","i1.CrudConfig","i2.CrudEffects"],"mappings":"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"}