@mediusinc/mng-commons 5.3.0-rc.1 → 5.3.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/data-list/filter-metadata.model.d.ts +20 -0
- package/core/helpers/number.d.ts +5 -0
- package/core/helpers/type-helpers.d.ts +1 -0
- package/core/index.d.ts +2 -0
- package/core/provide.d.ts +3 -2
- package/core/services/tokens/module-config.token.d.ts +7 -6
- package/esm2022/core/data-list/data-list-params-helpers.mjs +3 -1
- package/esm2022/core/data-list/filter-metadata.model.mjs +2 -0
- package/esm2022/core/helpers/date.mjs +2 -2
- package/esm2022/core/helpers/number.mjs +19 -0
- package/esm2022/core/helpers/type-helpers.mjs +1 -1
- package/esm2022/core/index.mjs +3 -1
- package/esm2022/core/pipes/boolean.pipe.mjs +7 -1
- package/esm2022/core/provide.mjs +4 -3
- package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +2 -3
- package/esm2022/filter/descriptors/filter.descriptor.mjs +76 -31
- package/esm2022/filter/models/filter.model.mjs +6 -1
- package/esm2022/form/components/date-range/date-range.component.mjs +45 -14
- package/esm2022/form/components/dropdown/dropdown.component.mjs +77 -93
- package/esm2022/form/components/number-range/number-range.component.mjs +29 -12
- package/esm2022/table/api/descriptors/column.descriptor.mjs +2 -1
- package/esm2022/table/api/descriptors/table.descriptor.mjs +22 -21
- package/esm2022/table/api/index.mjs +2 -1
- package/esm2022/table/api/models/row-expandable-component.model.mjs +2 -0
- package/esm2022/table/api/models/table-columns.model.mjs +1 -1
- package/esm2022/table/api/models/table.model.mjs +1 -1
- package/esm2022/table/components/column-filter/column-filter.component.mjs +396 -0
- package/esm2022/table/components/column-value/column-value.component.mjs +3 -3
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +52 -0
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +197 -0
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +135 -0
- package/esm2022/table/components/table/table.component.mjs +34 -25
- package/esm2022/table/helpers/filters.mjs +297 -0
- package/esm2022/table/index.mjs +13 -2
- package/esm2022/table/models/filter.model.mjs +2 -0
- package/esm2022/table/pipes/filter-value.pipe.mjs +77 -0
- package/esm2022/table/provide.mjs +19 -0
- package/esm2022/table/services/data-list.service.mjs +1 -1
- package/esm2022/table/services/table-feature-config.token.mjs +3 -0
- package/esm2022/tableview/action/components/action/action.component.mjs +3 -3
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
- package/esm2022/tableview/action/components/table/action-table.component.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +1 -3
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -1
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +2 -0
- package/esm2022/tableview/api/index.mjs +2 -1
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +11 -13
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +9 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -3
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs +32 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +81 -32
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +149 -117
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +22 -20
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +833 -360
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +23 -14
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +27 -22
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter.descriptor.d.ts +60 -16
- package/filter/models/filter.model.d.ts +4 -0
- package/form/components/date-range/date-range.component.d.ts +9 -3
- package/form/components/dropdown/dropdown.component.d.ts +6 -7
- package/form/components/number-range/number-range.component.d.ts +8 -4
- package/i18n/en.json +32 -0
- package/i18n/sl.json +32 -0
- package/package.json +1 -1
- package/table/api/descriptors/table.descriptor.d.ts +15 -8
- package/table/api/index.d.ts +1 -0
- package/table/api/models/row-expandable-component.model.d.ts +4 -0
- package/table/api/models/table-columns.model.d.ts +3 -3
- package/table/api/models/table.model.d.ts +0 -12
- package/table/components/{column-filter-full/column-filter-full.component.d.ts → column-filter/column-filter.component.d.ts} +23 -38
- package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +20 -0
- package/table/components/filter/filter-form/filter-form.component.d.ts +53 -0
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +35 -0
- package/table/components/table/table.component.d.ts +10 -7
- package/table/helpers/filters.d.ts +31 -0
- package/table/index.d.ts +10 -1
- package/table/models/filter.model.d.ts +24 -0
- package/table/pipes/filter-value.pipe.d.ts +19 -0
- package/table/provide.d.ts +8 -0
- package/table/services/data-list.service.d.ts +3 -2
- package/table/services/table-feature-config.token.d.ts +6 -0
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +4 -4
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +13 -3
- package/tableview/api/editor/models/editor-fields.model.d.ts +4 -4
- package/tableview/api/editor/models/field-image-preview.model.d.ts +4 -0
- package/tableview/api/index.d.ts +1 -0
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -6
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +1 -0
- package/version-info.json +5 -5
- package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +0 -655
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-table-api.mjs","sources":["../../table/api/src/data-providers/table.data-provider.ts","../../table/api/src/data-providers/table-data-provider.factory.ts","../../table/api/src/models/column.model.ts","../../table/api/src/helpers/class-attribute-converter.ts","../../table/api/src/descriptors/column.descriptor.ts","../../table/api/src/descriptors/sort.descriptor.ts","../../table/api/src/models/table.model.ts","../../table/api/src/descriptors/table.descriptor.ts","../../table/api/src/helpers/table-descriptor-helpers.ts","../../table/api/src/descriptors/table-descriptor.factory.ts","../../table/api/src/index.ts","../../table/api/src/mediusinc-mng-commons-table-api.ts"],"sourcesContent":["import {Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassOptType, DataListParams, DataListResult, DataProviderInst, IDataProvider, ItemOrObservable, ServiceClassOptType, toObservable} from '@mediusinc/mng-commons/core';\n\nexport type TableDataProviderGetAllFnType<\n Model = any,\n Service = undefined,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n Return = ItemOrObservable<DataListResult<Model>>\n> = (params: DataListParams<Sorts, Filters>, service: Service, locale?: string) => Return;\nexport type TableDataProviderGetAllEagerFnType<Model = any, Service = undefined, Return = ItemOrObservable<Model[]>> = (service: Service, locale?: string) => Return;\n\nexport interface ITableDataProviderGetAll<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model> {\n getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>;\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this;\n}\n\nexport interface ITableDataProviderSupport<Sorts = any, Filters extends keyof any = any> {\n get isLazy(): boolean;\n\n get getAllReload$(): Observable<DataListParams<Sorts, Filters> | undefined>;\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void;\n}\n\nexport type ITableDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProviderSupport<Sorts, Filters> & ITableDataProviderGetAll<Model, Service, Sorts, Filters>;\n\nexport class TableDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly _getAllReloadSubject = new Subject<DataListParams<Sorts, Filters> | undefined>();\n\n protected _isLazy = true;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n protected _getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters> = () => ({data: []});\n\n get isLazy() {\n return this._isLazy;\n }\n\n get getAll() {\n return this._getAll;\n }\n\n get getAllReload$() {\n return this._getAllReloadSubject.asObservable();\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this._getAll = fn;\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this._getAll = (qp: DataListParams<Sorts, Filters>, service: Service, locale?: string) => toObservable(fn(service, locale)).pipe(map(data => ({data: data})));\n this._isLazy = false;\n return this;\n }\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void {\n this._getAllReloadSubject.next(queryParam);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {TableDataProviderInst} from './table.data-provider';\n\nexport class TableDataProvider extends TableDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined> {\n return tableDataProvider<Model, Sorts, Filters>();\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined> {\n return tableDataProviderFromClass<Model, Sorts, Filters>(type);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>> {\n return tableDataProviderFromClass<Model, Service, Sorts, Filters>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return tableDataProviderWithService<Service, Model, Sorts, Filters>(serviceType);\n }\n}\n\nexport function tableDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n>;\nexport function tableDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\nexport function tableDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type?: TypeDescriptor<Model>,\n serviceType?: ServiceClass\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass> {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function tableDataProviderWithService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function tableDataProviderFromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\nexport function tableDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\nexport function tableDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type: ClassType<Model>,\n serviceType?: ServiceClass\n) {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function tableDataProviderFromModel<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, ModelClass, undefined>;\nexport function tableDataProviderFromModel<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClassType<Service>>;\nexport function tableDataProviderFromModel<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n>(model: ModelDescriptor<Model, ModelClass>, serviceType?: ServiceClass) {\n return typeof serviceType !== 'undefined'\n ? new TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(\n model.type as ClassType<Model>,\n serviceType as ServiceClassType<Service>\n )\n : new TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n","export enum ColumnTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Custom = 'CUSTOM'\n}\n\nexport enum ColumnDisplayTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Currency = 'CURRENCY',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Component = 'COMPONENT',\n Html = 'HTML'\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nimport {ColumnDescriptor} from '../descriptors/column.descriptor';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\n\nconst dateRegex = /\\d{4}-[01]\\d-[0-3]\\d/;\nconst dateTimeRegex = /\\d{4}-[01]\\d-[0-3]\\dT([0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z?)|([0-2]\\d:[0-5]\\d:[0-5]\\d\\+[0-2]\\d:[0-5]\\d))/;\n\n/**\n * converts column to number or date on value based\n * @param column column to be transformed\n * @param value value to check if applicable\n */\nexport function columnToDateNumberOrBoolean(column: ColumnDescriptor<any, any>, value: any): ColumnDescriptor<any, any> {\n if (typeof value === 'boolean') {\n return column.asBoolean();\n } else if (!isNaN(value) && typeof value === 'number') {\n return column.asNumber();\n } else if (dateRegex.test(value)) {\n if (dateTimeRegex.test(value)) {\n return column.asDate('dd. MMM yyyy HH:mm');\n }\n return column.asDate('dd. MMM yyyy');\n } else {\n return column;\n }\n}\n\n/**\n * converts string type to column type enum, default is string\n * @param attributeType\n */\nexport function getColumnTypeFromClassAttributeDefType(attributeType: string): ColumnTypeEnum {\n const typeRegistry = TypeRegistry.get();\n if (typeRegistry.findEnum(attributeType) as EnumType) {\n attributeType = 'enum';\n } else if (typeRegistry.findType(attributeType) as ClassType<any>) {\n attributeType = 'class';\n }\n\n switch (attributeType.toLowerCase()) {\n case 'number':\n case 'currency':\n return ColumnTypeEnum.Number;\n case 'boolean':\n return ColumnTypeEnum.Boolean;\n case 'date':\n return ColumnTypeEnum.Date;\n case 'enum':\n return ColumnTypeEnum.Enum;\n case 'custom':\n return ColumnTypeEnum.Custom;\n case 'class':\n return ColumnTypeEnum.String;\n case 'string':\n default:\n return ColumnTypeEnum.String;\n }\n}\n\nexport function getColumnDisplayTypeFromColumnType(columnType: ColumnTypeEnum, attributeType: string): ColumnDisplayTypeEnum {\n switch (columnType) {\n case ColumnTypeEnum.Number:\n return attributeType === 'currency' ? ColumnDisplayTypeEnum.Currency : ColumnDisplayTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return ColumnDisplayTypeEnum.Boolean;\n case ColumnTypeEnum.Date:\n return ColumnDisplayTypeEnum.Date;\n case ColumnTypeEnum.Enum:\n return ColumnDisplayTypeEnum.Enum;\n case ColumnTypeEnum.Custom:\n return ColumnDisplayTypeEnum.Component;\n case ColumnTypeEnum.String:\n default:\n return ColumnDisplayTypeEnum.String;\n }\n}\n\nexport function expandClassAttributeDefWithTableDef(attributes?: Array<ClassAttributeDef> | null): TableClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const tableClassAttributeDef: TableClassAttributeDef[] = [];\n for (const attribute of attributes) {\n const enumType = typeRegistry.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type);\n tableClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n columnType: enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type),\n columnDisplayType: getColumnDisplayTypeFromColumnType(columnType, attribute.type),\n enumType: typeRegistry.findEnum(attribute.type) as EnumType,\n classType: typeRegistry.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getTableClassAttributeDef<T>(type: ClassType<T>): TableClassAttributeDef[] {\n return expandClassAttributeDefWithTableDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {Type} from '@angular/core';\n\nimport {GetterFn} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {columnToDateNumberOrBoolean} from '../helpers/class-attribute-converter';\nimport {IColumnValueComponent} from '../models/column-value.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\n\nexport type ColumnCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & ColumnNumberFractionOptsType &\n ColumnLocaleOptsType;\n\nexport type ColumnNumberOptsType = ColumnNumberFractionOptsType & ColumnLocaleOptsType;\n\nexport type ColumnNumberFractionOptsType = {\n minIntegerDigits?: number;\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type ColumnLocaleOptsType = {\n locale?: string;\n};\n\nexport class ColumnDescriptor<ColumnModel, TableModel, ColumnValue = ColumnModel> {\n protected readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _columnDisplayType: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n protected _title?: string;\n private _displayFormat?: string;\n private _locale?: string;\n private _template?: string;\n private _getter?: GetterFn<ColumnValue, TableModel>;\n private _isMultiline = false;\n private _hasValueAsTooltip = false;\n private _isReorderable = false;\n private _isToggleable = false;\n private _isVisible = true;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _classNameMapFn?: (className?: string, item?: TableModel) => string;\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enum?: EnumDescriptor<any>;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<ColumnValue, TableModel, ColumnModel>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n private _clipboardValueGetter?: GetterFn<ColumnValue, TableModel>;\n\n // localization\n private _isLocalized = false;\n private _localizationExistsProperty?: string;\n\n constructor(property: string) {\n this._property = property as string;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get columnDisplayType() {\n return this._columnDisplayType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get classNameMapFn() {\n return this._classNameMapFn;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enum() {\n return this._enum;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyProperty() {\n return this._currencyProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public get clipboardValueGetter() {\n return this._clipboardValueGetter;\n }\n\n public get template() {\n return this._template;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get isMultiline() {\n return this._isMultiline;\n }\n\n public get hasValueAsTooltip() {\n return this._hasValueAsTooltip;\n }\n\n public get isReorderable() {\n return this._isReorderable;\n }\n\n public get isToggleable() {\n return this._isToggleable;\n }\n\n public get isVisible() {\n return this._isVisible;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationExistsProperty() {\n return this._localizationExistsProperty;\n }\n\n /**\n * Converts column to given type with additional arguments\n * @param type column type enum\n * @param displayType column display type\n * @param args any additional arguments for column (optional)\n */\n public asType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? this.asCurrency(...args) : this.asNumber(...args);\n case ColumnTypeEnum.Boolean:\n return this.asBoolean(...args);\n case ColumnTypeEnum.Date:\n return this.asDate(...args);\n case ColumnTypeEnum.Enum:\n return this.asEnumUnsafe(args[0] as EnumDescriptor<any>);\n case ColumnTypeEnum.Custom:\n return this.asCustomComponent(args[0]);\n case ColumnTypeEnum.String:\n default:\n return this;\n }\n }\n\n public asNumber(opts?: ColumnNumberOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Number;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asCurrency(opts?: ColumnCurrencyOptsType<keyof TableModel>): this {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: ColumnCurrencyOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Currency;\n this._currencyCode = opts?.currency;\n this._currencyProperty = opts?.currencyProperty;\n this._currencyDisplay = opts?.currencyDisplay;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._columnDisplayType = ColumnDisplayTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnumUnsafe(enumDesc: EnumDescriptor<any>): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._columnDisplayType = ColumnDisplayTypeEnum.Enum;\n this._enum = enumDesc;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<ColumnValue, TableModel, ColumnModel>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._columnDisplayType = ColumnDisplayTypeEnum.Component;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public asHtml(): this {\n this._columnDisplayType = ColumnDisplayTypeEnum.Html;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n this._classNameMapFn = classNameMapFn;\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withCopyToClipboard(hasCopyToClipboard = true, clipboardValueGetter?: GetterFn<ColumnValue, TableModel>): this {\n this._hasCopyToClipboard = hasCopyToClipboard;\n\n if (clipboardValueGetter) {\n this._clipboardValueGetter = clipboardValueGetter;\n }\n\n return this;\n }\n\n public withTemplate(template: string): this {\n this._template = template;\n return this;\n }\n\n public withGetter(getter?: GetterFn<ColumnValue, TableModel>): this {\n this._getter = getter;\n return this;\n }\n\n public withMultiline(isMultiline = true): this {\n this._isMultiline = isMultiline;\n return this;\n }\n\n public withValueAsTooltip(valueAsTooltip = true): this {\n this._hasValueAsTooltip = valueAsTooltip;\n return this;\n }\n\n public withReorderable(isReorderable = true): this {\n this._isReorderable = isReorderable;\n return this;\n }\n\n public withToggleable(isToggleable = true, isVisible = true): this {\n this._isToggleable = isToggleable;\n this._isVisible = isVisible;\n return this;\n }\n\n public localized(existsProperty?: string): this {\n if (existsProperty) {\n this._localizationExistsProperty = existsProperty;\n } else {\n this._localizationExistsProperty = `${this._property}Localized`;\n }\n return this;\n }\n\n public copy(): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> {\n const descriptor = new ColumnDescriptor<ColumnModel, TableModel, ColumnValue>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(obj: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>) {\n obj._title = this._title;\n obj._columnType = this._columnType;\n obj._columnDisplayType = this._columnDisplayType;\n obj._enum = this._enum;\n obj._booleanAsIcon = this._booleanAsIcon;\n obj._booleanYes = this._booleanYes;\n obj._booleanNo = this._booleanNo;\n obj._locale = this._locale;\n obj._currencyCode = this._currencyCode;\n obj._currencyDisplay = this._currencyDisplay;\n obj._currencyProperty = this._currencyProperty;\n obj._displayFormat = this._displayFormat;\n obj._headerClassName = this._headerClassName;\n obj._className = this._className;\n obj._classNameMapFn = this._classNameMapFn;\n obj._width = this._width;\n obj._minWidth = this._minWidth;\n obj._maxWidth = this._maxWidth;\n obj._customComponentType = this._customComponentType;\n obj._hasCopyToClipboard = this._hasCopyToClipboard;\n obj._template = this._template;\n obj._getter = this._getter;\n obj._isMultiline = this._isMultiline;\n obj._hasValueAsTooltip = this._hasValueAsTooltip;\n obj._isReorderable = this._isReorderable;\n obj._isToggleable = this._isToggleable;\n obj._isVisible = this._isVisible;\n obj._isLocalized = this._isLocalized;\n obj._localizationExistsProperty = this._localizationExistsProperty;\n }\n}\n\nexport class ColumnDynamicDescriptor extends ColumnDescriptor<any, any> {\n protected override _title: string | undefined = undefined;\n private _visibility = true;\n\n // private _filterStatus;\n\n constructor(property: string) {\n super(property);\n }\n\n public get visibility() {\n return this._visibility;\n }\n\n /**\n * sets column's title and returns this column\n * @param title title to be set\n * @param override should column title if all ready set?\n */\n public override withTitle(title: string, override = false): this {\n if (this._title == null || override) {\n this._title = title;\n }\n return this;\n }\n\n /**\n * defines automatic type and returns this column\n * @param value\n */\n public withAutomaticType(value: string): this {\n columnToDateNumberOrBoolean(this, value);\n return this;\n }\n\n /**\n * sets visibility state for column and returns this column\n * @param visibility\n */\n public withVisibility(visibility: boolean): this {\n this._visibility = visibility;\n return this;\n }\n\n /**\n * creates deep copy of column dynamic descriptor\n */\n public override copy(): ColumnDynamicDescriptor {\n const descriptor = new ColumnDynamicDescriptor(this._property);\n this.copyFieldsTo(descriptor);\n descriptor._title = this._title;\n descriptor._visibility = this._visibility;\n return descriptor;\n }\n\n public toColumnDescriptor(): ColumnDescriptor<any, any> {\n const descriptor = new ColumnDescriptor(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","export class SortDescriptor<TableModel> {\n protected readonly _property: string;\n protected _showOnColumn: string;\n\n protected _defaultIsEnabled = false;\n protected _defaultIsAscending?: boolean = undefined;\n protected _defaultOrder?: number = undefined;\n\n constructor(property: string) {\n this._property = property;\n this._showOnColumn = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get showOnColumn() {\n return this._showOnColumn;\n }\n\n public get defaultIsEnabled() {\n return this._defaultIsEnabled;\n }\n\n public get defaultIsAscending() {\n return this._defaultIsAscending;\n }\n\n public get defaultOrder() {\n return this._defaultOrder;\n }\n\n public withShowOnColumn(property: keyof TableModel): this {\n return this.withShowOnColumnUnsafe(property as string);\n }\n\n public withShowOnColumnUnsafe(property: string): this {\n this._showOnColumn = property;\n return this;\n }\n\n public withDefaultSort(enabled = true, ascending?: boolean, order?: number): this {\n this._defaultIsEnabled = enabled;\n this._defaultIsAscending = ascending ?? true;\n this._defaultOrder = order;\n return this;\n }\n\n public copy(): SortDescriptor<TableModel> {\n const descriptor = new SortDescriptor<TableModel>(this._property);\n descriptor._defaultIsEnabled = this._defaultIsEnabled;\n descriptor._defaultIsAscending = this._defaultIsAscending;\n descriptor._defaultOrder = this._defaultOrder;\n return descriptor;\n }\n}\n","import {FilterDescriptor} from '@mediusinc/mng-commons/filter';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ColumnDescriptor} from '../descriptors/column.descriptor';\n\nexport enum TablePaginationModeEnum {\n Pagination,\n None\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n\n/**\n * EXCLUDE default, all columns has sort and filter on by default, developer EXCLUDES properties from sort/filter\n * INCLUDE_ONLY only selected columns have sort/filter, developers INCLUDES properties\n */\nexport enum TableDynamicColumnsModeEnum {\n EXCLUDE,\n INCLUDE_ONLY\n}\n\n/**\n * This one is internal only to prevent circular dependencies between editor and fields.\n */\nexport interface ITableDescriptorInternal<TableModel> {\n model: ModelDescriptor<TableModel>;\n\n withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this;\n\n withSortUnsafe(property: string, isDefault: boolean, ascending?: boolean): this;\n\n addFilterFromColumnDescriptorUnsafe<ColumnModel, ColumnValue>(\n column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>,\n forceSimple: boolean\n ): FilterDescriptor<any, TableModel>;\n}\n\nexport interface TableLayoutPreferences {\n columnWidths?: Record<string, number>;\n columnOrder?: string[];\n columnHidden?: string[];\n}\n","import {\n CommonsInternalError,\n DataListResult,\n EnumConstantType,\n ILookupDataProvider,\n angularDateFormatHasSeconds,\n angularDateFormatHasTime,\n flattenObjectKeys,\n fromAngularDateFormatToPrime\n} from '@mediusinc/mng-commons/core';\nimport {FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterTypeEnum} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {columnToDateNumberOrBoolean} from '../helpers/class-attribute-converter';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\nimport {IColumnsManageInterface} from '../models/table-columns.model';\nimport {ITableDescriptorInternal, TableDynamicColumnsModeEnum, TablePaginationModeEnum, TableSizeEnum} from '../models/table.model';\nimport {ColumnDescriptor, ColumnDynamicDescriptor} from './column.descriptor';\nimport {SortDescriptor} from './sort.descriptor';\n\nexport class TableDescriptorInst<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>\n implements ITableDescriptorInternal<TableModel>, IColumnsManageInterface<TableModel, Sorts, Filters>\n{\n private readonly _model: ModelDescriptor<TableModel>;\n protected readonly _autoGenerated;\n\n private _identifier?: string;\n private _trackProperty?: string;\n private _paginationMode?: TablePaginationModeEnum;\n private _rowsPerPageOptions?: number[];\n private _defaultNumRows?: number;\n protected _columns: Array<ColumnDescriptor<any, TableModel>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _loadingText?: string;\n private _loadingIcon: string | null = 'pi pi-spinner';\n\n // extra\n private _hasHover = true;\n private _hasGridlines = false;\n private _hasResizableColumns = false;\n private _columnResizeMode?: 'fit' | 'expand';\n\n // special columns\n private _selectionColumnFrozen?: boolean;\n private _actionColumnFrozen?: boolean;\n\n // styling\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _className = '';\n private _headerClassName?: string;\n private _rowClassName?: string;\n private _rowClassNameMapFn?: (className?: string, item?: TableModel) => string;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n\n // filters&sorts\n private _filters: FilterDescriptor<any, TableModel>[] = [];\n private _sorts: SortDescriptor<TableModel>[] = [];\n\n // localization\n private _isLocalized = false;\n private _localizationLocaleProperty?: string;\n\n // row expand\n private _rowExpandable = false;\n private _rowExpandableColSpan = 100;\n private _rowExpandableProperty?: string;\n\n // row reorder\n private _rowReorderable = false;\n\n public constructor(model: ModelDescriptor<TableModel>, autoGenerated = false) {\n this._model = model;\n this._trackProperty = this._model.idProperty;\n this._autoGenerated = autoGenerated;\n }\n\n public get identifier() {\n return this._identifier;\n }\n\n public get trackProperty() {\n return this._trackProperty;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions() {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows() {\n return this._defaultNumRows;\n }\n\n public get columns() {\n return this._columns;\n }\n\n public get title() {\n return this._title;\n }\n\n public get hideHeader() {\n return this._hideHeader;\n }\n\n public get loadingText() {\n return this._loadingText;\n }\n\n public get loadingIcon() {\n return this._loadingIcon;\n }\n\n public get filters() {\n return this._filters;\n }\n\n public get sorts() {\n return this._sorts;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public get hasResizableColumns() {\n return this._hasResizableColumns;\n }\n\n public get columnResizeMode() {\n return this._columnResizeMode;\n }\n\n public get rowClassName() {\n return this._rowClassName;\n }\n\n public get rowClassNameMapFn() {\n return this._rowClassNameMapFn;\n }\n\n public get selectionColumnFrozen() {\n return this._selectionColumnFrozen;\n }\n\n public get actionColumnFrozen() {\n return this._actionColumnFrozen;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get rowReorderable() {\n return this._rowReorderable;\n }\n\n public get rowExpandable() {\n return this._rowExpandable;\n }\n\n public get rowExpandableColSpan() {\n return this._rowExpandableColSpan;\n }\n\n /**\n * This table model property tells us if the specific row should be expandable or not based on row item value\n */\n public get rowExpandableProperty() {\n return this._rowExpandableProperty;\n }\n\n /**\n * Track property is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same track properties they will share the same localstorage entry.\n * Similarly, this property can also be used to differentiate two tables of the same model on the same url (so that they have separate entries in localstorage).\n * @param identifier\n */\n public withIdentifier(identifier: string): this {\n this._identifier = identifier;\n return this;\n }\n\n public withTrackProperty(property?: keyof TableModel): this {\n return this.withTrackPropertyUnsafe(property as string);\n }\n\n public withTrackPropertyUnsafe(property?: string): this {\n this._trackProperty = property;\n return this;\n }\n\n public getColumn(property: keyof TableModel) {\n return this.getColumnUnsafe(property as string);\n }\n\n public getColumnUnsafe(property: string) {\n return this._columns.find(col => col.property === property) ?? null;\n }\n\n public removeColumn(property: keyof TableModel): void {\n this.removeColumnUnsafe(property as string);\n }\n\n public removeColumnUnsafe(property: string): void {\n const columnIdx = this._columns.findIndex(c => c.property === property);\n this._columns.splice(columnIdx, 1);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>): this {\n this._columns.push(column);\n return this;\n }\n\n public addColumn<PropertyKey extends keyof TableModel>(property: PropertyKey) {\n const column = new ColumnDescriptor<NonNullable<TableModel[PropertyKey]>, TableModel, TableModel[PropertyKey]>(property as string);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum<PropertyKey extends keyof TableModel, Enum extends NonNullable<TableModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n const column = new ColumnDescriptor<Enum, TableModel, TableModel[PropertyKey]>(property as string);\n column.asEnumUnsafe(enumDesc);\n this._columns.push(column);\n return column;\n }\n\n public addColumnUnsafe<ColumnModel = unknown>(property: string): ColumnDescriptor<ColumnModel, TableModel> {\n const column = new ColumnDescriptor<ColumnModel, TableModel>(property);\n this._columns.push(column);\n return column;\n }\n\n public withColumns(...properties: (keyof TableModel)[]): this {\n properties.forEach(p => this.addColumn(p));\n return this;\n }\n\n public withColumnDescriptors(...descriptors: ColumnDescriptor<any, TableModel>[]): this {\n descriptors.forEach(d => this.withColumn(d));\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n this._defaultNumRows = rows;\n this._rowsPerPageOptions = options;\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\n return this;\n }\n\n public withLoading(text?: string, icon?: string | null): this {\n this._loadingText = text;\n this._loadingIcon = icon === undefined ? 'pi pi-spinner' : icon;\n return this;\n }\n\n /**\n * Helper method that enables/disables reorderable property on all columns currently in the descriptor.\n * @param columnsReorderable\n */\n public withCurrentColumnsReorderable(columnsReorderable = true): this {\n for (const col of this.columns) {\n col.withReorderable(columnsReorderable);\n }\n return this;\n }\n\n /**\n * Helper method that enables/disables toggleable property on all columns currently in the descriptor.\n * @param columnsToggleable\n */\n public withCurrentColumnsToggleable(columnsToggleable = true): this {\n for (const col of this.columns) {\n col.withToggleable(columnsToggleable);\n }\n return this;\n }\n\n public getSort(property: Sorts) {\n return this.getSortUnsafe(property as string);\n }\n\n public getSortUnsafe(property: string) {\n return this._sorts.find(s => s.property === property) ?? null;\n }\n\n public removeSort(property: Sorts) {\n return this.removeSortUnsafe(property as string);\n }\n\n public removeSortUnsafe(property: string) {\n const sortIdx = this._sorts.findIndex(c => c.property === property);\n this._sorts.splice(sortIdx, 1);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this.addSortUnsafe(property as string, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n const sort = new SortDescriptor<TableModel>(property);\n if (isDefault) {\n const defaultOrderMax = this._sorts\n .filter(s => s.defaultIsEnabled)\n .reduce((acc, s) => (s.defaultOrder !== undefined && s.defaultOrder > acc ? s.defaultOrder : acc), -1);\n sort.withDefaultSort(true, ascending, defaultOrderMax + 1);\n }\n this._sorts.push(sort);\n return sort;\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n return this.withSortUnsafe(property as string, isDefault, ascending);\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this.addSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n return this.withDefaultSortUnsafe(property as string, ascending, order, enabled);\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n let sort = this._sorts.find(s => s.property === property);\n if (!sort) {\n sort = new SortDescriptor(property);\n this._sorts.push(sort);\n }\n sort.withDefaultSort(enabled ?? true, ascending, order);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n return this.withSortsUnsafe(...(properties as string[]));\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this._sorts.push(new SortDescriptor(p));\n });\n return this;\n }\n\n public getFilter(property: Filters) {\n return this.getFilterUnsafe(property as string);\n }\n\n public getFilterUnsafe(property: string) {\n return this._filters.find(s => s.property === property) ?? null;\n }\n\n public removeFilter(property: Filters) {\n return this.removeFilterUnsafe(property as string);\n }\n\n public removeFilterUnsafe(property: string) {\n const filterIdx = this._filters.findIndex(c => c.property === property);\n this._filters.splice(filterIdx, 1);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableModel ? TableModel[Filters] : never>(property: Filters) {\n return this.addFilterUnsafe<FilterModel>(property as string);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n const filter = new FilterDescriptor<FilterModel, TableModel>(property);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableModel ? NonNullable<TableModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this.addFilterLookupUnsafe(property as string, provider, optionsValueProperty as string);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n const filter = new FilterLookupDescriptor<FilterModel, TableModel, Service>(property, {\n dataProvider: provider,\n optionsValueProperty: optionsValueProperty\n });\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this.addFilterLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const filter = new FilterLookupEnumDescriptor(property, enumDesc, options);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterFromColumn(property: Extract<Filters, keyof TableModel>, forceSimple = false) {\n return this.addFilterFromColumnUnsafe(property as string, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableModel>[]): this {\n return this.withFiltersFromColumnsUnsafe(...(properties as string[]));\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this.addFilterFromColumnUnsafe(p);\n });\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, forceSimple = false) {\n const column = this.getColumnUnsafe(property);\n if (!column) {\n throw new CommonsInternalError(`No column found for filter property \"${property}\"`);\n }\n return this.addFilterFromColumnDescriptorUnsafe(column, forceSimple);\n }\n\n public addFilterFromColumnDescriptorUnsafe<ColumnModel, ColumnValue>(\n column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>,\n forceSimple = false\n ): FilterDescriptor<any, TableModel> {\n let filterDescriptor = new FilterDescriptor<any, TableModel>(column.property);\n let filterType: FilterTypeEnum;\n\n switch (column.columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple && column.enum) {\n filterDescriptor = new FilterLookupEnumDescriptor(column.property, column.enum);\n filterType = FilterTypeEnum.LookupEnum;\n } else {\n filterType = FilterTypeEnum.String;\n }\n break;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n\n filterDescriptor.asFilterType(filterType);\n if (filterType === FilterTypeEnum.Number) {\n const displayFormatFractions = column.displayFormat?.split('.')?.[1]?.split('-');\n if (displayFormatFractions && displayFormatFractions.length > 2) {\n filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));\n }\n } else if (filterType === FilterTypeEnum.Date) {\n const displayFormat = column.displayFormat;\n if (displayFormat) {\n const filterDisplayFormat = fromAngularDateFormatToPrime(displayFormat);\n const hasTime = angularDateFormatHasTime(displayFormat);\n const hasSeconds = angularDateFormatHasSeconds(displayFormat);\n filterDescriptor.withDateFormat(filterDisplayFormat, hasTime, hasSeconds);\n }\n }\n\n this._filters.push(filterDescriptor);\n\n return filterDescriptor;\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableModel>): this {\n if (filter.property !== property) {\n throw new CommonsInternalError(`Filter property \"${property}\" and Filter descriptor property \"${filter.property}\" do not match.`);\n }\n return this.withFilterUnsafe<FilterModel>(filter);\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableModel>): this {\n this._filters.push(filter);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): this {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): this {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\n }\n\n /**\n * Method that enables/disabled column resize feature with columnResizeMode on all columns.\n * @param resizableColumns True if enabled\n * @param columnResizeMode 'fit' or 'expand' mode\n */\n public withColumnsResizable(resizableColumns = true, columnResizeMode: 'fit' | 'expand' = 'fit'): this {\n this._hasResizableColumns = resizableColumns;\n this._columnResizeMode = columnResizeMode;\n return this;\n }\n\n /**\n * Sets column to (un)frozen.\n * @param selectionColumnFrozen True to freeze selection column, false to unfreeze it.\n * @param actionColumnFrozen True to freeze action column, false to unfreeze it.\n */\n public withColumnFrozen(selectionColumnFrozen?: boolean, actionColumnFrozen?: boolean): this {\n this._selectionColumnFrozen = selectionColumnFrozen;\n this._actionColumnFrozen = actionColumnFrozen;\n return this;\n }\n\n public withRowClassName(rowClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._rowClassName = rowClassName;\n this._rowClassNameMapFn = classNameMapFn;\n return this;\n }\n\n public withHeaderClassName(headerClassName: string): this {\n this._headerClassName = headerClassName;\n return this;\n }\n\n public withLocalized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public withLocalizationLocaleProperty(localizationLocaleProperty: string): this {\n this._isLocalized = true;\n this._localizationLocaleProperty = localizationLocaleProperty;\n return this;\n }\n\n public withRowExpandable(property?: keyof TableModel, colSpan?: number): this {\n this._rowExpandable = true;\n if (property) {\n this._rowExpandableProperty = property as string;\n }\n if (colSpan) {\n this._rowExpandableColSpan = colSpan;\n }\n return this;\n }\n\n withRowReorderable(reordable = true) {\n this._rowReorderable = reordable;\n return this;\n }\n\n protected copyFieldsTo(obj: TableDescriptorInst<any, any, any>) {\n obj._title = this._title;\n obj._hideHeader = this._hideHeader;\n obj._trackProperty = this._trackProperty;\n obj._filters = this._filters.map(f => f.copy());\n obj._sorts = this._sorts.map(s => s.copy());\n obj._className = this._className;\n obj._size = this._size;\n obj._tableFullHeightOffset = this._tableFullHeightOffset;\n obj._rowHeight = this._rowHeight;\n obj._hasHover = this._hasHover;\n obj._hasGridlines = this._hasGridlines;\n obj._hasResizableColumns = this._hasResizableColumns;\n obj._columnResizeMode = this._columnResizeMode;\n obj._actionColumnFrozen = this._actionColumnFrozen;\n obj._selectionColumnFrozen = this._selectionColumnFrozen;\n obj._isLocalized = this._isLocalized;\n obj._localizationLocaleProperty = this._localizationLocaleProperty;\n obj._paginationMode = this._paginationMode;\n obj._rowsPerPageOptions = this._rowsPerPageOptions;\n obj._rowExpandable = this._rowExpandable;\n obj._rowExpandableColSpan = this._rowExpandableColSpan;\n obj._rowExpandableProperty = this._rowExpandableProperty;\n obj._rowReorderable = this._rowReorderable;\n }\n\n public copy(): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n return descriptor;\n }\n}\n\nexport class TableDynamicDescriptorInst extends TableDescriptorInst<any> {\n private _excludedColumns: Array<string> = [];\n private _filterColumns: Array<string> = [];\n private _sortColumns: Array<string> = [];\n private _sortColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n private _filterColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n\n protected override _columns: ColumnDynamicDescriptor[] = [];\n\n public constructor(model: ModelDescriptor<any>) {\n super(model);\n\n if (typeof model.titleProperty === 'string') {\n this.withTitle(model.titleProperty);\n }\n }\n\n public override get columns() {\n return this._columns;\n }\n\n /**\n * defines excluded columns when generating descriptor\n * @param excludedColumn names of excluded columns\n */\n public withColumnsExcluded(excludedColumn: string[]): this {\n this._excludedColumns = excludedColumn;\n return this;\n }\n\n /**\n * defines column properties on which sort is defined or not depending on sortColumnMode\n * @param sortOnColumns column names\n * @param sortColumnMode INCLUDE_ONLY (default) only given columns will have sort, EXCLUDE given columns will NOT have sort\n */\n public withColumnsSort(sortOnColumns: string[], sortColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._sortColumnMode = sortColumnMode;\n this._sortColumns = sortOnColumns;\n return this;\n }\n\n /**\n * defines column properties on which filter is defined or not depending on filterColumnMode\n * @param filterOnColumn column names\n * @param filterColumnMode INCLUDE_ONLY (default) only given columns will have filter, EXCLUDE given columns will NOT have filter\n */\n public withColumnsFilter(filterOnColumn: string[], filterColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._filterColumnMode = filterColumnMode;\n this._filterColumns = filterOnColumn;\n return this;\n }\n\n /**\n * sets given type to column with given property and returns this table\n * @param property column's property\n * @param type custom type for column\n * @param displayType custom column value display type\n * @param args addition arguments for column\n */\n public withColumnPresetType(property: string, type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property).withTitle(property);\n if (column) {\n column.asType(type, displayType, ...args);\n }\n return this;\n }\n\n /**\n * sets title to column with given property and returns this table\n * @param property column's property\n * @param title column's title\n */\n public withColumnTitle(property: string, title: string): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property);\n column.withTitle(title, true);\n return this;\n }\n\n /**\n * generates columns defined on table based on data fetched from api\n * @param data data from api\n */\n public toTableDescriptorFromData(data: DataListResult): TableDescriptorInst<any> {\n const tableDescriptor = this.toTableDescriptor();\n\n if (data.data == null || data.data.length == 0) {\n return tableDescriptor;\n }\n\n const objectModel = data.data[0];\n const entries = flattenObjectKeys(objectModel)\n .filter(([key]) => !this._excludedColumns.includes(key))\n .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets\n\n for (const [key, value] of entries) {\n const metaColumn = this._columns.find(col => col.property === key);\n let column: ColumnDescriptor<any, any>;\n if (metaColumn) {\n if (!metaColumn.visibility) {\n continue;\n }\n column = metaColumn.toColumnDescriptor();\n tableDescriptor.withColumn(column);\n } else {\n column = tableDescriptor.addColumn(key).withTitle(key);\n columnToDateNumberOrBoolean(column, value);\n }\n\n if (this.model.i18nBaseKey && !column.property.includes('rev')) {\n column.withTitle([this.model.i18nBaseKey, 'properties', column.property].join('.').replace('state.', ''));\n }\n\n const elementOfSortColumns = this._sortColumns.includes(column.property);\n if (\n (this._sortColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfSortColumns) ||\n (this._sortColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfSortColumns)\n ) {\n tableDescriptor.withSortUnsafe(column.property);\n }\n\n const elementOfFilterColumns = this._filterColumns.includes(column.property);\n if (\n this._filterColumns.length > 0 &&\n ((this._filterColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfFilterColumns) ||\n (this._filterColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfFilterColumns))\n ) {\n tableDescriptor.addFilterFromColumnDescriptorUnsafe(column, false);\n }\n }\n\n return tableDescriptor;\n }\n\n /**\n * adds ColumnDynamicDescriptor to this table\n * @param property column's property\n */\n public override addColumn(property: keyof any): ColumnDynamicDescriptor {\n const column = new ColumnDynamicDescriptor(property as string);\n this._columns.push(column);\n return column;\n }\n\n public override removeColumn(property: keyof any): this {\n const column = this.columns.find(col => col.property === property) ?? this.addColumn(property);\n column.withVisibility(false);\n return this;\n }\n\n /**\n * creates deep copy of table dynamic descriptor\n */\n public override copy(): TableDynamicDescriptorInst {\n const descriptor = new TableDynamicDescriptorInst(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n descriptor._excludedColumns = [...this._excludedColumns];\n descriptor._filterColumns = [...this._filterColumns];\n descriptor._sortColumns = [...this._sortColumns];\n descriptor._filterColumnMode = this._filterColumnMode;\n descriptor._sortColumnMode = this._sortColumnMode;\n return descriptor;\n }\n\n public toTableDescriptor(): TableDescriptorInst<any> {\n const descriptor = new TableDescriptorInst<any>(this.model);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","import {CommonsInternalError, EnumType, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {FilterLookupDescriptor} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, enumModelGeneric, findClassTitleAttribute} from '@mediusinc/mng-commons/model';\n\nimport {ColumnDescriptor} from '../descriptors/column.descriptor';\nimport {TableDescriptorInst} from '../descriptors/table.descriptor';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\nimport {getTableClassAttributeDef} from './class-attribute-converter';\n\n/**\n * generates column based on attributes\n * @param desc Table descriptor\n * @param attribute attribute map\n * @param column if provided, replaced by new, otherwise new is created\n * @param args additional parameters\n */\nexport function upsertTableColumnFromAttributeDef<ColumnModel, TableModel>(\n desc: TableDescriptorInst<TableModel, any, any>,\n attribute: TableClassAttributeDef,\n column?: ColumnDescriptor<ColumnModel, TableModel>,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel> {\n if (column == null) {\n column = desc.addColumnUnsafe(attribute.name);\n }\n\n if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0 && attribute.enumType) {\n args = [enumModelGeneric(attribute.enumType)];\n }\n\n column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);\n if (attribute.classType) {\n const titleProperty = findClassTitleAttribute(attribute.classType) ?? undefined;\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n } else {\n desc.addFilterFromColumnDescriptorUnsafe(column, false);\n desc.withSortUnsafe(column.property);\n }\n\n return column;\n}\n\n/**\n * defines modified type of column\n * DO NOT USE with enum (use withCustomEnumType)\n * @param descriptor table descriptor\n * @param property column name\n * @param columnType modified type\n * @param args additional attributes\n * @param columnDisplayType\n */\nexport function modifyTableClassAttributeColumnType<\n TableModel,\n Property extends keyof TableModel,\n ColumnModel = NonNullable<TableModel[Property]>,\n ColumnValue = TableModel[Property]\n>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: Property,\n columnType?: ColumnTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n return modifyTableClassAttributeColumnTypeUnsafe<TableModel, ColumnModel, ColumnValue>(descriptor, property as string, columnType, columnDisplayType, ...args);\n}\n\nexport function modifyTableClassAttributeColumnTypeUnsafe<TableModel, ColumnModel = any, ColumnValue = ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n columnType?: ColumnTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withColumnModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = columnType ?? attributeDef.columnType;\n attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;\n return upsertTableColumnFromAttributeDef(\n descriptor,\n attributeDef,\n descriptor.columns.find(col => col.property === attributeDef.name),\n ...args\n );\n }\n\n return null;\n}\n\n/**\n * defines custom enum type for column\n * @param descriptor table descriptor\n * @param property column name\n * @param enumDesc Enum descriptor.\n */\nexport function modifyTableClassAttributeColumnEnum<\n TableModel,\n Property extends keyof TableModel,\n Enum extends NonNullable<TableModel[Property]>,\n ColumnModel = NonNullable<TableModel[Property]>,\n ColumnValue = TableModel[Property]\n>(descriptor: TableDescriptorInst<TableModel, any, any>, property: Property, enumDesc?: EnumDescriptor<Enum>): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n return tableDescriptorModifyEnumColumnUnsafe<TableModel, Enum, ColumnModel, ColumnValue>(descriptor, property as string, enumDesc);\n}\n\nexport function tableDescriptorModifyEnumColumnUnsafe<TableModel, Enum = any, ColumnModel = any, ColumnValue = ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withColumnModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = ColumnTypeEnum.Enum;\n upsertTableColumnFromAttributeDef(\n descriptor,\n attributeDef,\n descriptor.columns.find(col => col.property === property),\n enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attributeDef.type) as EnumType)\n );\n }\n\n return null;\n}\n\n/**\n * modifies column with class and lookup provider\n * @param descriptor table descriptor\n * @param property column name\n * @param lookupProvider lookupProvider for class\n * @param optionsLabelProperty\n * @param filterProperty\n */\nexport function modifyTableColumnFilterLookup<TableModel, Property extends keyof TableModel, Service, ColumnModel = NonNullable<TableModel[Property]>>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: Property,\n lookupProvider?: ILookupDataProvider<ColumnModel, any>,\n optionsLabelProperty?: keyof ColumnModel,\n filterProperty?: keyof ColumnModel\n): FilterLookupDescriptor<ColumnModel, TableModel, Service> | null {\n return modifyTableColumnFilterLookupUnsafe<TableModel, Service, ColumnModel>(\n descriptor,\n property as string,\n lookupProvider,\n optionsLabelProperty as string,\n filterProperty as string\n );\n}\n\nexport function modifyTableColumnFilterLookupUnsafe<TableModel, Service, ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n lookupProvider?: ILookupDataProvider<ColumnModel, Service>,\n optionsLabelProperty?: string,\n filterProperty?: string\n): FilterLookupDescriptor<ColumnModel, TableModel, Service> | null {\n const column = descriptor.columns.find(col => col.property === property);\n if (column) {\n const filter = descriptor.addFilterLookupUnsafe(column.property, lookupProvider, filterProperty);\n if (optionsLabelProperty) {\n filter.withOptionsLabelPropertyUnsafe(optionsLabelProperty);\n }\n return filter;\n }\n return null;\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {getTableClassAttributeDef} from '../helpers/class-attribute-converter';\nimport {upsertTableColumnFromAttributeDef} from '../helpers/table-descriptor-helpers';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {TableDescriptorInst, TableDynamicDescriptorInst} from './table.descriptor';\n\nexport class TableDescriptor extends TableDescriptorInst<any> {\n protected constructor() {\n super(model());\n }\n\n public static create<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return tableDescriptor({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: ClassType<unknown> | string\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return tableDescriptorFromClass(type, {id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromModel<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(model: ModelDescriptor<TableModel>): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model);\n }\n\n /**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n return tableDescriptorFromClassAttrsDef(type, undefined, {id: idProperty, title: titleProperty});\n }\n\n /**\n * generates descriptor base on given attribute definition\n * @param type class type\n * @param attributes attributes from which descriptor is generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n attributes: TableClassAttributeDef[],\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n return tableDescriptorFromClassAttrsDef(type, attributes, {id: idProperty, title: titleProperty});\n }\n}\n\nexport type TableDescriptorCreateOptsType<TableModel> = ModelDescriptorCreateOpts<TableModel>;\n\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n opts: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n model: ModelDescriptor<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: TypeDescriptor<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<TableModel> | ModelDescriptor<TableModel> | TableDescriptorCreateOptsType<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>());\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>((opts as TableDescriptorCreateOptsType<TableModel> | undefined) ?? {}));\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(typeOrModelOrClassOrOpts);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>(typeOrModelOrClassOrOpts));\n }\n}\n\nexport function tableDescriptorFromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>(type as ClassType<TableModel>, opts));\n}\n\n/**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param attributes\n * @param opts\n */\nexport function tableDescriptorFromClassAttrsDef<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n attributes?: TableClassAttributeDef[],\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(model(type, opts), true);\n (attributes ?? getTableClassAttributeDef(type))\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr => upsertTableColumnFromAttributeDef(descriptor, attr));\n return descriptor;\n}\n\nexport class TableDynamicDescriptor extends TableDynamicDescriptorInst {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableDynamicDescriptorInst {\n return tableDynamicDescriptor({\n id: idProperty,\n title: titleProperty,\n i18nBase: i18nBaseKey\n });\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableDynamicDescriptorInst {\n return tableDynamicDescriptor(model);\n }\n}\n\nexport function tableDynamicDescriptor(modelOrOpts?: ModelDescriptor<any> | TableDescriptorCreateOptsType<any>): TableDynamicDescriptorInst {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableDynamicDescriptorInst(modelOrOpts)\n : new TableDynamicDescriptorInst(new ModelDescriptor<any>(undefined, modelOrOpts?.id as string, modelOrOpts?.title as string, modelOrOpts?.i18nBase as string));\n}\n","// data providers\nexport * from './data-providers/table.data-provider';\nexport * from './data-providers/table-data-provider.factory';\n\n// descriptors\nexport * from './descriptors/column.descriptor';\nexport * from './descriptors/sort.descriptor';\nexport * from './descriptors/table.descriptor';\nexport * from './descriptors/table-descriptor.factory';\n\n// helpers\nexport * from './helpers/class-attribute-converter';\nexport * from './helpers/table-descriptor-helpers';\n\n// models\nexport * from './models/class-table-attribute.model';\nexport * from './models/column.model';\nexport * from './models/column-value.model';\nexport * from './models/table.model';\nexport * from './models/table-columns.model';\nexport * from './models/table-event.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-table-api.mjs","sources":["../../table/api/src/data-providers/table.data-provider.ts","../../table/api/src/data-providers/table-data-provider.factory.ts","../../table/api/src/models/column.model.ts","../../table/api/src/helpers/class-attribute-converter.ts","../../table/api/src/descriptors/column.descriptor.ts","../../table/api/src/descriptors/sort.descriptor.ts","../../table/api/src/models/table.model.ts","../../table/api/src/descriptors/table.descriptor.ts","../../table/api/src/helpers/table-descriptor-helpers.ts","../../table/api/src/descriptors/table-descriptor.factory.ts","../../table/api/src/index.ts","../../table/api/src/mediusinc-mng-commons-table-api.ts"],"sourcesContent":["import {Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassOptType, DataListParams, DataListResult, DataProviderInst, IDataProvider, ItemOrObservable, ServiceClassOptType, toObservable} from '@mediusinc/mng-commons/core';\n\nexport type TableDataProviderGetAllFnType<\n Model = any,\n Service = undefined,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n Return = ItemOrObservable<DataListResult<Model>>\n> = (params: DataListParams<Sorts, Filters>, service: Service, locale?: string) => Return;\nexport type TableDataProviderGetAllEagerFnType<Model = any, Service = undefined, Return = ItemOrObservable<Model[]>> = (service: Service, locale?: string) => Return;\n\nexport interface ITableDataProviderGetAll<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model> {\n getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>;\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this;\n}\n\nexport interface ITableDataProviderSupport<Sorts = any, Filters extends keyof any = any> {\n get isLazy(): boolean;\n\n get getAllReload$(): Observable<DataListParams<Sorts, Filters> | undefined>;\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void;\n}\n\nexport type ITableDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProviderSupport<Sorts, Filters> & ITableDataProviderGetAll<Model, Service, Sorts, Filters>;\n\nexport class TableDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly _getAllReloadSubject = new Subject<DataListParams<Sorts, Filters> | undefined>();\n\n protected _isLazy = true;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n protected _getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters> = () => ({data: []});\n\n get isLazy() {\n return this._isLazy;\n }\n\n get getAll() {\n return this._getAll;\n }\n\n get getAllReload$() {\n return this._getAllReloadSubject.asObservable();\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this._getAll = fn;\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this._getAll = (qp: DataListParams<Sorts, Filters>, service: Service, locale?: string) => toObservable(fn(service, locale)).pipe(map(data => ({data: data})));\n this._isLazy = false;\n return this;\n }\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void {\n this._getAllReloadSubject.next(queryParam);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {TableDataProviderInst} from './table.data-provider';\n\nexport class TableDataProvider extends TableDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined> {\n return tableDataProvider<Model, Sorts, Filters>();\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined> {\n return tableDataProviderFromClass<Model, Sorts, Filters>(type);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>> {\n return tableDataProviderFromClass<Model, Service, Sorts, Filters>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return tableDataProviderWithService<Service, Model, Sorts, Filters>(serviceType);\n }\n}\n\nexport function tableDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n>;\nexport function tableDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\nexport function tableDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type?: TypeDescriptor<Model>,\n serviceType?: ServiceClass\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass> {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function tableDataProviderWithService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function tableDataProviderFromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\nexport function tableDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\nexport function tableDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type: ClassType<Model>,\n serviceType?: ServiceClass\n) {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function tableDataProviderFromModel<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, ModelClass, undefined>;\nexport function tableDataProviderFromModel<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClassType<Service>>;\nexport function tableDataProviderFromModel<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n>(model: ModelDescriptor<Model, ModelClass>, serviceType?: ServiceClass) {\n return typeof serviceType !== 'undefined'\n ? new TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(\n model.type as ClassType<Model>,\n serviceType as ServiceClassType<Service>\n )\n : new TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n","export enum ColumnTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Custom = 'CUSTOM'\n}\n\nexport enum ColumnDisplayTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Currency = 'CURRENCY',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Component = 'COMPONENT',\n Html = 'HTML'\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nimport {ColumnDescriptor} from '../descriptors/column.descriptor';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\n\nconst dateRegex = /\\d{4}-[01]\\d-[0-3]\\d/;\nconst dateTimeRegex = /\\d{4}-[01]\\d-[0-3]\\dT([0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z?)|([0-2]\\d:[0-5]\\d:[0-5]\\d\\+[0-2]\\d:[0-5]\\d))/;\n\n/**\n * converts column to number or date on value based\n * @param column column to be transformed\n * @param value value to check if applicable\n */\nexport function columnToDateNumberOrBoolean(column: ColumnDescriptor<any, any>, value: any): ColumnDescriptor<any, any> {\n if (typeof value === 'boolean') {\n return column.asBoolean();\n } else if (!isNaN(value) && typeof value === 'number') {\n return column.asNumber();\n } else if (dateRegex.test(value)) {\n if (dateTimeRegex.test(value)) {\n return column.asDate('dd. MMM yyyy HH:mm');\n }\n return column.asDate('dd. MMM yyyy');\n } else {\n return column;\n }\n}\n\n/**\n * converts string type to column type enum, default is string\n * @param attributeType\n */\nexport function getColumnTypeFromClassAttributeDefType(attributeType: string): ColumnTypeEnum {\n const typeRegistry = TypeRegistry.get();\n if (typeRegistry.findEnum(attributeType) as EnumType) {\n attributeType = 'enum';\n } else if (typeRegistry.findType(attributeType) as ClassType<any>) {\n attributeType = 'class';\n }\n\n switch (attributeType.toLowerCase()) {\n case 'number':\n case 'currency':\n return ColumnTypeEnum.Number;\n case 'boolean':\n return ColumnTypeEnum.Boolean;\n case 'date':\n return ColumnTypeEnum.Date;\n case 'enum':\n return ColumnTypeEnum.Enum;\n case 'custom':\n return ColumnTypeEnum.Custom;\n case 'class':\n return ColumnTypeEnum.String;\n case 'string':\n default:\n return ColumnTypeEnum.String;\n }\n}\n\nexport function getColumnDisplayTypeFromColumnType(columnType: ColumnTypeEnum, attributeType: string): ColumnDisplayTypeEnum {\n switch (columnType) {\n case ColumnTypeEnum.Number:\n return attributeType === 'currency' ? ColumnDisplayTypeEnum.Currency : ColumnDisplayTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return ColumnDisplayTypeEnum.Boolean;\n case ColumnTypeEnum.Date:\n return ColumnDisplayTypeEnum.Date;\n case ColumnTypeEnum.Enum:\n return ColumnDisplayTypeEnum.Enum;\n case ColumnTypeEnum.Custom:\n return ColumnDisplayTypeEnum.Component;\n case ColumnTypeEnum.String:\n default:\n return ColumnDisplayTypeEnum.String;\n }\n}\n\nexport function expandClassAttributeDefWithTableDef(attributes?: Array<ClassAttributeDef> | null): TableClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const tableClassAttributeDef: TableClassAttributeDef[] = [];\n for (const attribute of attributes) {\n const enumType = typeRegistry.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type);\n tableClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n columnType: enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type),\n columnDisplayType: getColumnDisplayTypeFromColumnType(columnType, attribute.type),\n enumType: typeRegistry.findEnum(attribute.type) as EnumType,\n classType: typeRegistry.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getTableClassAttributeDef<T>(type: ClassType<T>): TableClassAttributeDef[] {\n return expandClassAttributeDefWithTableDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {Type} from '@angular/core';\n\nimport {GetterFn} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {columnToDateNumberOrBoolean} from '../helpers/class-attribute-converter';\nimport {IColumnValueComponent} from '../models/column-value.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\n\nexport type ColumnCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & ColumnNumberFractionOptsType &\n ColumnLocaleOptsType;\n\nexport type ColumnNumberOptsType = ColumnNumberFractionOptsType & ColumnLocaleOptsType;\n\nexport type ColumnNumberFractionOptsType = {\n minIntegerDigits?: number;\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type ColumnLocaleOptsType = {\n locale?: string;\n};\n\nexport class ColumnDescriptor<ColumnModel, TableModel, ColumnValue = ColumnModel> {\n protected readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _columnDisplayType: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n protected _title?: string;\n\n // value display\n private _displayFormat?: string;\n private _locale?: string;\n private _template?: string;\n private _getter?: GetterFn<ColumnValue, TableModel>;\n private _isMultiline = false;\n private _hasValueAsTooltip = false;\n\n // column visibility\n private _isReorderable = false;\n private _isToggleable = false;\n private _isVisible = true;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _classNameMapFn?: (className?: string, item?: TableModel) => string;\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enum?: EnumDescriptor<any>;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<ColumnValue, TableModel, ColumnModel>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n private _clipboardValueGetter?: GetterFn<ColumnValue, TableModel>;\n\n // localization\n private _isLocalized = false;\n private _localizationExistsProperty?: string;\n\n constructor(property: string) {\n this._property = property as string;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get columnDisplayType() {\n return this._columnDisplayType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get classNameMapFn() {\n return this._classNameMapFn;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enum() {\n return this._enum;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyProperty() {\n return this._currencyProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public get clipboardValueGetter() {\n return this._clipboardValueGetter;\n }\n\n public get template() {\n return this._template;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get isMultiline() {\n return this._isMultiline;\n }\n\n public get hasValueAsTooltip() {\n return this._hasValueAsTooltip;\n }\n\n public get isReorderable() {\n return this._isReorderable;\n }\n\n public get isToggleable() {\n return this._isToggleable;\n }\n\n public get isVisible() {\n return this._isVisible;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationExistsProperty() {\n return this._localizationExistsProperty;\n }\n\n /**\n * Converts column to given type with additional arguments\n * @param type column type enum\n * @param displayType column display type\n * @param args any additional arguments for column (optional)\n */\n public asType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? this.asCurrency(...args) : this.asNumber(...args);\n case ColumnTypeEnum.Boolean:\n return this.asBoolean(...args);\n case ColumnTypeEnum.Date:\n return this.asDate(...args);\n case ColumnTypeEnum.Enum:\n return this.asEnumUnsafe(args[0] as EnumDescriptor<any>);\n case ColumnTypeEnum.Custom:\n return this.asCustomComponent(args[0]);\n case ColumnTypeEnum.String:\n default:\n return this;\n }\n }\n\n public asNumber(opts?: ColumnNumberOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Number;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asCurrency(opts?: ColumnCurrencyOptsType<keyof TableModel>): this {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: ColumnCurrencyOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Currency;\n this._currencyCode = opts?.currency;\n this._currencyProperty = opts?.currencyProperty;\n this._currencyDisplay = opts?.currencyDisplay;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._columnDisplayType = ColumnDisplayTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnumUnsafe(enumDesc: EnumDescriptor<any>): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._columnDisplayType = ColumnDisplayTypeEnum.Enum;\n this._enum = enumDesc;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<ColumnValue, TableModel, ColumnModel>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._columnDisplayType = ColumnDisplayTypeEnum.Component;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public asHtml(): this {\n this._columnDisplayType = ColumnDisplayTypeEnum.Html;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n this._classNameMapFn = classNameMapFn;\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withCopyToClipboard(hasCopyToClipboard = true, clipboardValueGetter?: GetterFn<ColumnValue, TableModel>): this {\n this._hasCopyToClipboard = hasCopyToClipboard;\n\n if (clipboardValueGetter) {\n this._clipboardValueGetter = clipboardValueGetter;\n }\n\n return this;\n }\n\n public withTemplate(template: string): this {\n this._template = template;\n return this;\n }\n\n public withGetter(getter?: GetterFn<ColumnValue, TableModel>): this {\n this._getter = getter;\n return this;\n }\n\n public withMultiline(isMultiline = true): this {\n this._isMultiline = isMultiline;\n return this;\n }\n\n public withValueAsTooltip(valueAsTooltip = true): this {\n this._hasValueAsTooltip = valueAsTooltip;\n return this;\n }\n\n public withReorderable(isReorderable = true): this {\n this._isReorderable = isReorderable;\n return this;\n }\n\n public withToggleable(isToggleable = true, isVisible = true): this {\n this._isToggleable = isToggleable;\n this._isVisible = isVisible;\n return this;\n }\n\n public localized(existsProperty?: string): this {\n if (existsProperty) {\n this._localizationExistsProperty = existsProperty;\n } else {\n this._localizationExistsProperty = `${this._property}Localized`;\n }\n return this;\n }\n\n public copy(): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> {\n const descriptor = new ColumnDescriptor<ColumnModel, TableModel, ColumnValue>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(obj: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>) {\n obj._title = this._title;\n obj._columnType = this._columnType;\n obj._columnDisplayType = this._columnDisplayType;\n obj._enum = this._enum;\n obj._booleanAsIcon = this._booleanAsIcon;\n obj._booleanYes = this._booleanYes;\n obj._booleanNo = this._booleanNo;\n obj._locale = this._locale;\n obj._currencyCode = this._currencyCode;\n obj._currencyDisplay = this._currencyDisplay;\n obj._currencyProperty = this._currencyProperty;\n obj._displayFormat = this._displayFormat;\n obj._headerClassName = this._headerClassName;\n obj._className = this._className;\n obj._classNameMapFn = this._classNameMapFn;\n obj._width = this._width;\n obj._minWidth = this._minWidth;\n obj._maxWidth = this._maxWidth;\n obj._customComponentType = this._customComponentType;\n obj._hasCopyToClipboard = this._hasCopyToClipboard;\n obj._template = this._template;\n obj._getter = this._getter;\n obj._isMultiline = this._isMultiline;\n obj._hasValueAsTooltip = this._hasValueAsTooltip;\n obj._isReorderable = this._isReorderable;\n obj._isToggleable = this._isToggleable;\n obj._isVisible = this._isVisible;\n obj._isLocalized = this._isLocalized;\n obj._localizationExistsProperty = this._localizationExistsProperty;\n }\n}\n\nexport class ColumnDynamicDescriptor extends ColumnDescriptor<any, any> {\n protected override _title: string | undefined = undefined;\n private _visibility = true;\n\n // private _filterStatus;\n\n constructor(property: string) {\n super(property);\n }\n\n public get visibility() {\n return this._visibility;\n }\n\n /**\n * sets column's title and returns this column\n * @param title title to be set\n * @param override should column title if all ready set?\n */\n public override withTitle(title: string, override = false): this {\n if (this._title == null || override) {\n this._title = title;\n }\n return this;\n }\n\n /**\n * defines automatic type and returns this column\n * @param value\n */\n public withAutomaticType(value: string): this {\n columnToDateNumberOrBoolean(this, value);\n return this;\n }\n\n /**\n * sets visibility state for column and returns this column\n * @param visibility\n */\n public withVisibility(visibility: boolean): this {\n this._visibility = visibility;\n return this;\n }\n\n /**\n * creates deep copy of column dynamic descriptor\n */\n public override copy(): ColumnDynamicDescriptor {\n const descriptor = new ColumnDynamicDescriptor(this._property);\n this.copyFieldsTo(descriptor);\n descriptor._title = this._title;\n descriptor._visibility = this._visibility;\n return descriptor;\n }\n\n public toColumnDescriptor(): ColumnDescriptor<any, any> {\n const descriptor = new ColumnDescriptor(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","export class SortDescriptor<TableModel> {\n protected readonly _property: string;\n protected _showOnColumn: string;\n\n protected _defaultIsEnabled = false;\n protected _defaultIsAscending?: boolean = undefined;\n protected _defaultOrder?: number = undefined;\n\n constructor(property: string) {\n this._property = property;\n this._showOnColumn = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get showOnColumn() {\n return this._showOnColumn;\n }\n\n public get defaultIsEnabled() {\n return this._defaultIsEnabled;\n }\n\n public get defaultIsAscending() {\n return this._defaultIsAscending;\n }\n\n public get defaultOrder() {\n return this._defaultOrder;\n }\n\n public withShowOnColumn(property: keyof TableModel): this {\n return this.withShowOnColumnUnsafe(property as string);\n }\n\n public withShowOnColumnUnsafe(property: string): this {\n this._showOnColumn = property;\n return this;\n }\n\n public withDefaultSort(enabled = true, ascending?: boolean, order?: number): this {\n this._defaultIsEnabled = enabled;\n this._defaultIsAscending = ascending ?? true;\n this._defaultOrder = order;\n return this;\n }\n\n public copy(): SortDescriptor<TableModel> {\n const descriptor = new SortDescriptor<TableModel>(this._property);\n descriptor._defaultIsEnabled = this._defaultIsEnabled;\n descriptor._defaultIsAscending = this._defaultIsAscending;\n descriptor._defaultOrder = this._defaultOrder;\n return descriptor;\n }\n}\n","export enum TablePaginationModeEnum {\n Pagination,\n None\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n\n/**\n * EXCLUDE default, all columns has sort and filter on by default, developer EXCLUDES properties from sort/filter\n * INCLUDE_ONLY only selected columns have sort/filter, developers INCLUDES properties\n */\nexport enum TableDynamicColumnsModeEnum {\n EXCLUDE,\n INCLUDE_ONLY\n}\n\nexport interface TableLayoutPreferences {\n columnWidths?: Record<string, number>;\n columnOrder?: string[];\n columnHidden?: string[];\n}\n","import {Type} from '@angular/core';\n\nimport {CommonsInternalError, DataListResult, EnumConstantType, ILookupDataProvider, ITableDescriptor, flattenObjectKeys} from '@mediusinc/mng-commons/core';\nimport {FilterDescriptor, FilterDisplayTypeEnum, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterTypeEnum} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {columnToDateNumberOrBoolean} from '../helpers/class-attribute-converter';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\nimport {IRowExpandableComponent} from '../models/row-expandable-component.model';\nimport {IColumnsManageInterface} from '../models/table-columns.model';\nimport {TableDynamicColumnsModeEnum, TablePaginationModeEnum, TableSizeEnum} from '../models/table.model';\nimport {ColumnDescriptor, ColumnDynamicDescriptor} from './column.descriptor';\nimport {SortDescriptor} from './sort.descriptor';\n\nexport class TableDescriptorInst<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>\n implements ITableDescriptor<TableModel, Sorts, Filters>, IColumnsManageInterface<TableModel, Sorts, Filters>\n{\n private readonly _model: ModelDescriptor<TableModel>;\n protected readonly _autoGenerated;\n\n private _identifier?: string;\n private _trackProperty?: string;\n private _paginationMode?: TablePaginationModeEnum;\n private _rowsPerPageOptions?: number[];\n private _defaultNumRows?: number;\n protected _columns: Array<ColumnDescriptor<any, TableModel>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _loadingText?: string;\n private _loadingIcon: string | null = 'pi pi-spinner';\n\n // extra\n private _hasHover = true;\n private _hasGridlines = false;\n private _hasResizableColumns = false;\n private _columnResizeMode?: 'fit' | 'expand';\n\n // special columns\n private _selectionColumnFrozen?: boolean;\n private _actionColumnFrozen?: boolean;\n\n // styling\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _className = '';\n private _headerClassName?: string;\n private _rowClassName?: string;\n private _rowClassNameMapFn?: (className?: string, item?: TableModel) => string;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n\n // filters&sorts\n private _filters: FilterDescriptor<any, TableModel>[] = [];\n private _sorts: SortDescriptor<TableModel>[] = [];\n\n // localization\n private _isLocalized = false;\n private _localizationLocaleProperty?: string;\n\n // row expand\n private _rowExpandable = false;\n private _rowExpandableColSpan = 100;\n private _rowExpandableProperty?: string;\n private _rowExpandableComponentType?: Type<IRowExpandableComponent<TableModel>>;\n\n // row reorder\n private _rowReorderable = false;\n\n public constructor(model: ModelDescriptor<TableModel>, autoGenerated = false) {\n this._model = model;\n this._trackProperty = this._model.idProperty;\n this._autoGenerated = autoGenerated;\n }\n\n public get identifier() {\n return this._identifier;\n }\n\n public get trackProperty() {\n return this._trackProperty;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions() {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows() {\n return this._defaultNumRows;\n }\n\n public get columns() {\n return this._columns;\n }\n\n public get title() {\n return this._title;\n }\n\n public get hideHeader() {\n return this._hideHeader;\n }\n\n public get loadingText() {\n return this._loadingText;\n }\n\n public get loadingIcon() {\n return this._loadingIcon;\n }\n\n public get filters() {\n return this._filters;\n }\n\n public get sorts() {\n return this._sorts;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public get hasResizableColumns() {\n return this._hasResizableColumns;\n }\n\n public get columnResizeMode() {\n return this._columnResizeMode;\n }\n\n public get rowClassName() {\n return this._rowClassName;\n }\n\n public get rowClassNameMapFn() {\n return this._rowClassNameMapFn;\n }\n\n public get selectionColumnFrozen() {\n return this._selectionColumnFrozen;\n }\n\n public get actionColumnFrozen() {\n return this._actionColumnFrozen;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get rowReorderable() {\n return this._rowReorderable;\n }\n\n public get rowExpandable() {\n return this._rowExpandable;\n }\n\n public get rowExpandableColSpan() {\n return this._rowExpandableColSpan;\n }\n\n /**\n * This table model property tells us if the specific row should be expandable or not based on row item value\n */\n public get rowExpandableProperty() {\n return this._rowExpandableProperty;\n }\n\n /**\n * This property is used to define the type of the custom component that will be used to render the expanded row.\n */\n public get rowExpandableComponentType() {\n return this._rowExpandableComponentType;\n }\n\n /**\n * Track property is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same track properties they will share the same localstorage entry.\n * Similarly, this property can also be used to differentiate two tables of the same model on the same url (so that they have separate entries in localstorage).\n * @param identifier\n */\n public withIdentifier(identifier: string): this {\n this._identifier = identifier;\n return this;\n }\n\n public withTrackProperty(property?: keyof TableModel): this {\n return this.withTrackPropertyUnsafe(property as string);\n }\n\n public withTrackPropertyUnsafe(property?: string): this {\n this._trackProperty = property;\n return this;\n }\n\n public getColumn(property: keyof TableModel) {\n return this.getColumnUnsafe(property as string);\n }\n\n public getColumnUnsafe(property: string) {\n return this._columns.find(col => col.property === property) ?? null;\n }\n\n public removeColumn(property: keyof TableModel): void {\n this.removeColumnUnsafe(property as string);\n }\n\n public removeColumnUnsafe(property: string): void {\n const columnIdx = this._columns.findIndex(c => c.property === property);\n this._columns.splice(columnIdx, 1);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>): this {\n this._columns.push(column);\n return this;\n }\n\n public addColumn<PropertyKey extends keyof TableModel>(property: PropertyKey) {\n const column = new ColumnDescriptor<NonNullable<TableModel[PropertyKey]>, TableModel, TableModel[PropertyKey]>(property as string);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum<PropertyKey extends keyof TableModel, Enum extends NonNullable<TableModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n const column = new ColumnDescriptor<Enum, TableModel, TableModel[PropertyKey]>(property as string);\n column.asEnumUnsafe(enumDesc);\n this._columns.push(column);\n return column;\n }\n\n public addColumnUnsafe<ColumnModel = unknown>(property: string): ColumnDescriptor<ColumnModel, TableModel> {\n const column = new ColumnDescriptor<ColumnModel, TableModel>(property);\n this._columns.push(column);\n return column;\n }\n\n public withColumns(...properties: (keyof TableModel)[]): this {\n properties.forEach(p => this.addColumn(p));\n return this;\n }\n\n public withColumnDescriptors(...descriptors: ColumnDescriptor<any, TableModel>[]): this {\n descriptors.forEach(d => this.withColumn(d));\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n this._defaultNumRows = rows;\n this._rowsPerPageOptions = options;\n return this;\n }\n\n public withTitle(title: string | undefined): this {\n this._title = title;\n\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\n return this;\n }\n\n public withLoading(text?: string, icon?: string | null): this {\n this._loadingText = text;\n this._loadingIcon = icon === undefined ? 'pi pi-spinner' : icon;\n return this;\n }\n\n /**\n * Helper method that enables/disables reorderable property on all columns currently in the descriptor.\n * @param columnsReorderable\n */\n public withCurrentColumnsReorderable(columnsReorderable = true): this {\n for (const col of this.columns) {\n col.withReorderable(columnsReorderable);\n }\n return this;\n }\n\n /**\n * Helper method that enables/disables toggleable property on all columns currently in the descriptor.\n * @param columnsToggleable\n */\n public withCurrentColumnsToggleable(columnsToggleable = true): this {\n for (const col of this.columns) {\n col.withToggleable(columnsToggleable);\n }\n return this;\n }\n\n public getSort(property: Sorts) {\n return this.getSortUnsafe(property as string);\n }\n\n public getSortUnsafe(property: string) {\n return this._sorts.find(s => s.property === property) ?? null;\n }\n\n public removeSort(property: Sorts) {\n return this.removeSortUnsafe(property as string);\n }\n\n public removeSortUnsafe(property: string) {\n const sortIdx = this._sorts.findIndex(c => c.property === property);\n this._sorts.splice(sortIdx, 1);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this.addSortUnsafe(property as string, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n const sort = new SortDescriptor<TableModel>(property);\n if (isDefault) {\n const defaultOrderMax = this._sorts\n .filter(s => s.defaultIsEnabled)\n .reduce((acc, s) => (s.defaultOrder !== undefined && s.defaultOrder > acc ? s.defaultOrder : acc), -1);\n sort.withDefaultSort(true, ascending, defaultOrderMax + 1);\n }\n this._sorts.push(sort);\n return sort;\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n return this.withSortUnsafe(property as string, isDefault, ascending);\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this.addSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n return this.withDefaultSortUnsafe(property as string, ascending, order, enabled);\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n let sort = this._sorts.find(s => s.property === property);\n if (!sort) {\n sort = new SortDescriptor(property);\n this._sorts.push(sort);\n }\n sort.withDefaultSort(enabled ?? true, ascending, order);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n return this.withSortsUnsafe(...(properties as string[]));\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this._sorts.push(new SortDescriptor(p));\n });\n return this;\n }\n\n public getFilter(property: Filters) {\n return this.getFilterUnsafe(property as string);\n }\n\n public getFilterUnsafe(property: string) {\n return this._filters.find(s => s.property === property) ?? null;\n }\n\n public removeFilter(property: Filters) {\n return this.removeFilterUnsafe(property as string);\n }\n\n public removeFilterUnsafe(property: string) {\n const filterIdx = this._filters.findIndex(c => c.property === property);\n this._filters.splice(filterIdx, 1);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableModel ? TableModel[Filters] : never>(property: Filters) {\n return this.addFilterUnsafe<FilterModel>(property as string);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n const filter = new FilterDescriptor<FilterModel, TableModel>(property);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableModel ? NonNullable<TableModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this.addFilterLookupUnsafe(property as string, provider, optionsValueProperty as string);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n const filter = new FilterLookupDescriptor<FilterModel, TableModel, Service>(property, {\n dataProvider: provider,\n optionsValueProperty: optionsValueProperty\n });\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this.addFilterLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const filter = new FilterLookupEnumDescriptor(property, enumDesc, options);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterFromColumn(property: Extract<Filters, keyof TableModel>, displayType?: FilterDisplayTypeEnum, forceSimple = false) {\n return this.addFilterFromColumnUnsafe(property as string, displayType, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableModel>[]): this {\n return this.withFiltersFromColumnsUnsafe(...(properties as string[]));\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this.addFilterFromColumnUnsafe(p);\n });\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, displayType?: FilterDisplayTypeEnum, forceSimple = false) {\n const column = this.getColumnUnsafe(property);\n if (!column) {\n throw new CommonsInternalError(`No column found for filter property \"${property}\"`);\n }\n const filter = this.addFilterFromColumnDescriptorUnsafe(column, forceSimple);\n if (displayType != null) filter.withDisplayType(displayType);\n return filter;\n }\n\n public addFilterFromColumnDescriptorUnsafe<ColumnModel, ColumnValue>(\n column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>,\n forceSimple = false\n ): FilterDescriptor<any, TableModel> {\n let filterDescriptor = new FilterDescriptor<any, TableModel>(column.property);\n let filterType: FilterTypeEnum;\n\n switch (column.columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple && column.enum) {\n filterDescriptor = new FilterLookupEnumDescriptor(column.property, column.enum);\n filterType = FilterTypeEnum.LookupEnum;\n } else {\n filterType = FilterTypeEnum.String;\n }\n break;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n\n filterDescriptor.asFilterType(filterType);\n if ((filterType === FilterTypeEnum.Number || filterType === FilterTypeEnum.Date) && column.displayFormat) {\n filterDescriptor.withDisplayFormat(column.displayFormat, true);\n }\n\n this._filters.push(filterDescriptor);\n\n return filterDescriptor;\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableModel>): this {\n if (filter.property !== property) {\n throw new CommonsInternalError(`Filter property \"${property}\" and Filter descriptor property \"${filter.property}\" do not match.`);\n }\n return this.withFilterUnsafe<FilterModel>(filter);\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableModel>): this {\n this._filters.push(filter);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): this {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): this {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\n }\n\n /**\n * Method that enables/disabled column resize feature with columnResizeMode on all columns.\n * @param resizableColumns True if enabled\n * @param columnResizeMode 'fit' or 'expand' mode\n */\n public withColumnsResizable(resizableColumns = true, columnResizeMode: 'fit' | 'expand' = 'fit'): this {\n this._hasResizableColumns = resizableColumns;\n this._columnResizeMode = columnResizeMode;\n return this;\n }\n\n /**\n * Sets column to (un)frozen.\n * @param selectionColumnFrozen True to freeze selection column, false to unfreeze it.\n * @param actionColumnFrozen True to freeze action column, false to unfreeze it.\n */\n public withColumnFrozen(selectionColumnFrozen?: boolean, actionColumnFrozen?: boolean): this {\n this._selectionColumnFrozen = selectionColumnFrozen;\n this._actionColumnFrozen = actionColumnFrozen;\n return this;\n }\n\n public withRowClassName(rowClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._rowClassName = rowClassName;\n this._rowClassNameMapFn = classNameMapFn;\n return this;\n }\n\n public withHeaderClassName(headerClassName: string): this {\n this._headerClassName = headerClassName;\n return this;\n }\n\n public withLocalized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public withLocalizationLocaleProperty(localizationLocaleProperty: string): this {\n this._isLocalized = true;\n this._localizationLocaleProperty = localizationLocaleProperty;\n return this;\n }\n\n public withRowExpandable(property?: keyof TableModel, colSpan?: number, componentType?: Type<IRowExpandableComponent<TableModel>>): this {\n this._rowExpandable = true;\n if (property) {\n this._rowExpandableProperty = property as string;\n }\n if (colSpan) {\n this._rowExpandableColSpan = colSpan;\n }\n if (componentType) {\n this._rowExpandableComponentType = componentType;\n }\n return this;\n }\n\n withRowReorderable(reordable = true) {\n this._rowReorderable = reordable;\n return this;\n }\n\n protected copyFieldsTo(obj: TableDescriptorInst<any, any, any>) {\n obj._title = this._title;\n obj._hideHeader = this._hideHeader;\n obj._trackProperty = this._trackProperty;\n obj._filters = this._filters.map(f => f.copy());\n obj._sorts = this._sorts.map(s => s.copy());\n obj._className = this._className;\n obj._size = this._size;\n obj._tableFullHeightOffset = this._tableFullHeightOffset;\n obj._rowHeight = this._rowHeight;\n obj._hasHover = this._hasHover;\n obj._hasGridlines = this._hasGridlines;\n obj._hasResizableColumns = this._hasResizableColumns;\n obj._columnResizeMode = this._columnResizeMode;\n obj._actionColumnFrozen = this._actionColumnFrozen;\n obj._selectionColumnFrozen = this._selectionColumnFrozen;\n obj._isLocalized = this._isLocalized;\n obj._localizationLocaleProperty = this._localizationLocaleProperty;\n obj._paginationMode = this._paginationMode;\n obj._rowsPerPageOptions = this._rowsPerPageOptions;\n obj._rowExpandable = this._rowExpandable;\n obj._rowExpandableColSpan = this._rowExpandableColSpan;\n obj._rowExpandableProperty = this._rowExpandableProperty;\n obj._rowExpandableComponentType = this._rowExpandableComponentType;\n obj._rowReorderable = this._rowReorderable;\n }\n\n public copy(): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n return descriptor;\n }\n}\n\nexport class TableDynamicDescriptorInst extends TableDescriptorInst<any> {\n private _excludedColumns: Array<string> = [];\n private _filterColumns: Array<string> = [];\n private _sortColumns: Array<string> = [];\n private _sortColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n private _filterColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n\n protected override _columns: ColumnDynamicDescriptor[] = [];\n\n public constructor(model: ModelDescriptor<any>) {\n super(model);\n\n if (typeof model.titleProperty === 'string') {\n this.withTitle(model.titleProperty);\n }\n }\n\n public override get columns() {\n return this._columns;\n }\n\n /**\n * defines excluded columns when generating descriptor\n * @param excludedColumn names of excluded columns\n */\n public withColumnsExcluded(excludedColumn: string[]): this {\n this._excludedColumns = excludedColumn;\n return this;\n }\n\n /**\n * defines column properties on which sort is defined or not depending on sortColumnMode\n * @param sortOnColumns column names\n * @param sortColumnMode INCLUDE_ONLY (default) only given columns will have sort, EXCLUDE given columns will NOT have sort\n */\n public withColumnsSort(sortOnColumns: string[], sortColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._sortColumnMode = sortColumnMode;\n this._sortColumns = sortOnColumns;\n return this;\n }\n\n /**\n * defines column properties on which filter is defined or not depending on filterColumnMode\n * @param filterOnColumn column names\n * @param filterColumnMode INCLUDE_ONLY (default) only given columns will have filter, EXCLUDE given columns will NOT have filter\n */\n public withColumnsFilter(filterOnColumn: string[], filterColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._filterColumnMode = filterColumnMode;\n this._filterColumns = filterOnColumn;\n return this;\n }\n\n /**\n * sets given type to column with given property and returns this table\n * @param property column's property\n * @param type custom type for column\n * @param displayType custom column value display type\n * @param args addition arguments for column\n */\n public withColumnPresetType(property: string, type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property).withTitle(property);\n if (column) {\n column.asType(type, displayType, ...args);\n }\n return this;\n }\n\n /**\n * sets title to column with given property and returns this table\n * @param property column's property\n * @param title column's title\n */\n public withColumnTitle(property: string, title: string): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property);\n column.withTitle(title, true);\n return this;\n }\n\n /**\n * generates columns defined on table based on data fetched from api\n * @param data data from api\n */\n public toTableDescriptorFromData(data: DataListResult): TableDescriptorInst<any> {\n const tableDescriptor = this.toTableDescriptor();\n\n if (data.data == null || data.data.length == 0) {\n return tableDescriptor;\n }\n\n const objectModel = data.data[0];\n const entries = flattenObjectKeys(objectModel)\n .filter(([key]) => !this._excludedColumns.includes(key))\n .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets\n\n for (const [key, value] of entries) {\n const metaColumn = this._columns.find(col => col.property === key);\n let column: ColumnDescriptor<any, any>;\n if (metaColumn) {\n if (!metaColumn.visibility) {\n continue;\n }\n column = metaColumn.toColumnDescriptor();\n tableDescriptor.withColumn(column);\n } else {\n column = tableDescriptor.addColumn(key).withTitle(key);\n columnToDateNumberOrBoolean(column, value);\n }\n\n if (this.model.i18nBaseKey && !column.property.includes('rev')) {\n column.withTitle([this.model.i18nBaseKey, 'properties', column.property].join('.').replace('state.', ''));\n }\n\n const elementOfSortColumns = this._sortColumns.includes(column.property);\n if (\n (this._sortColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfSortColumns) ||\n (this._sortColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfSortColumns)\n ) {\n tableDescriptor.withSortUnsafe(column.property);\n }\n\n const elementOfFilterColumns = this._filterColumns.includes(column.property);\n if (\n this._filterColumns.length > 0 &&\n ((this._filterColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfFilterColumns) ||\n (this._filterColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfFilterColumns))\n ) {\n tableDescriptor.addFilterFromColumnDescriptorUnsafe(column, false);\n }\n }\n\n return tableDescriptor;\n }\n\n /**\n * adds ColumnDynamicDescriptor to this table\n * @param property column's property\n */\n public override addColumn(property: keyof any): ColumnDynamicDescriptor {\n const column = new ColumnDynamicDescriptor(property as string);\n this._columns.push(column);\n return column;\n }\n\n public override removeColumn(property: keyof any): this {\n const column = this.columns.find(col => col.property === property) ?? this.addColumn(property);\n column.withVisibility(false);\n return this;\n }\n\n /**\n * creates deep copy of table dynamic descriptor\n */\n public override copy(): TableDynamicDescriptorInst {\n const descriptor = new TableDynamicDescriptorInst(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n descriptor._excludedColumns = [...this._excludedColumns];\n descriptor._filterColumns = [...this._filterColumns];\n descriptor._sortColumns = [...this._sortColumns];\n descriptor._filterColumnMode = this._filterColumnMode;\n descriptor._sortColumnMode = this._sortColumnMode;\n return descriptor;\n }\n\n public toTableDescriptor(): TableDescriptorInst<any> {\n const descriptor = new TableDescriptorInst<any>(this.model);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","import {CommonsInternalError, EnumType, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {FilterLookupDescriptor} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, enumModelGeneric, findClassTitleAttribute} from '@mediusinc/mng-commons/model';\n\nimport {ColumnDescriptor} from '../descriptors/column.descriptor';\nimport {TableDescriptorInst} from '../descriptors/table.descriptor';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../models/column.model';\nimport {getTableClassAttributeDef} from './class-attribute-converter';\n\n/**\n * generates column based on attributes\n * @param desc Table descriptor\n * @param attribute attribute map\n * @param column if provided, replaced by new, otherwise new is created\n * @param args additional parameters\n */\nexport function upsertTableColumnFromAttributeDef<ColumnModel, TableModel>(\n desc: TableDescriptorInst<TableModel, any, any>,\n attribute: TableClassAttributeDef,\n column?: ColumnDescriptor<ColumnModel, TableModel>,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel> {\n if (column == null) {\n column = desc.addColumnUnsafe(attribute.name);\n }\n\n if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0 && attribute.enumType) {\n args = [enumModelGeneric(attribute.enumType)];\n }\n\n column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);\n if (attribute.classType) {\n const titleProperty = findClassTitleAttribute(attribute.classType) ?? undefined;\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n } else {\n desc.addFilterFromColumnDescriptorUnsafe(column, false);\n desc.withSortUnsafe(column.property);\n }\n\n return column;\n}\n\n/**\n * defines modified type of column\n * DO NOT USE with enum (use withCustomEnumType)\n * @param descriptor table descriptor\n * @param property column name\n * @param columnType modified type\n * @param args additional attributes\n * @param columnDisplayType\n */\nexport function modifyTableClassAttributeColumnType<\n TableModel,\n Property extends keyof TableModel,\n ColumnModel = NonNullable<TableModel[Property]>,\n ColumnValue = TableModel[Property]\n>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: Property,\n columnType?: ColumnTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n return modifyTableClassAttributeColumnTypeUnsafe<TableModel, ColumnModel, ColumnValue>(descriptor, property as string, columnType, columnDisplayType, ...args);\n}\n\nexport function modifyTableClassAttributeColumnTypeUnsafe<TableModel, ColumnModel = any, ColumnValue = ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n columnType?: ColumnTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum,\n ...args: any[]\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withColumnModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = columnType ?? attributeDef.columnType;\n attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;\n return upsertTableColumnFromAttributeDef(\n descriptor,\n attributeDef,\n descriptor.columns.find(col => col.property === attributeDef.name),\n ...args\n );\n }\n\n return null;\n}\n\n/**\n * defines custom enum type for column\n * @param descriptor table descriptor\n * @param property column name\n * @param enumDesc Enum descriptor.\n */\nexport function modifyTableClassAttributeColumnEnum<\n TableModel,\n Property extends keyof TableModel,\n Enum extends NonNullable<TableModel[Property]>,\n ColumnModel = NonNullable<TableModel[Property]>,\n ColumnValue = TableModel[Property]\n>(descriptor: TableDescriptorInst<TableModel, any, any>, property: Property, enumDesc?: EnumDescriptor<Enum>): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n return tableDescriptorModifyEnumColumnUnsafe<TableModel, Enum, ColumnModel, ColumnValue>(descriptor, property as string, enumDesc);\n}\n\nexport function tableDescriptorModifyEnumColumnUnsafe<TableModel, Enum = any, ColumnModel = any, ColumnValue = ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>\n): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withColumnModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = ColumnTypeEnum.Enum;\n upsertTableColumnFromAttributeDef(\n descriptor,\n attributeDef,\n descriptor.columns.find(col => col.property === property),\n enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attributeDef.type) as EnumType)\n );\n }\n\n return null;\n}\n\n/**\n * modifies column with class and lookup provider\n * @param descriptor table descriptor\n * @param property column name\n * @param lookupProvider lookupProvider for class\n * @param optionsLabelProperty\n * @param filterProperty\n */\nexport function modifyTableColumnFilterLookup<TableModel, Property extends keyof TableModel, Service, ColumnModel = NonNullable<TableModel[Property]>>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: Property,\n lookupProvider?: ILookupDataProvider<ColumnModel, any>,\n optionsLabelProperty?: keyof ColumnModel,\n filterProperty?: keyof ColumnModel\n): FilterLookupDescriptor<ColumnModel, TableModel, Service> | null {\n return modifyTableColumnFilterLookupUnsafe<TableModel, Service, ColumnModel>(\n descriptor,\n property as string,\n lookupProvider,\n optionsLabelProperty as string,\n filterProperty as string\n );\n}\n\nexport function modifyTableColumnFilterLookupUnsafe<TableModel, Service, ColumnModel>(\n descriptor: TableDescriptorInst<TableModel, any, any>,\n property: string,\n lookupProvider?: ILookupDataProvider<ColumnModel, Service>,\n optionsLabelProperty?: string,\n filterProperty?: string\n): FilterLookupDescriptor<ColumnModel, TableModel, Service> | null {\n const column = descriptor.columns.find(col => col.property === property);\n if (column) {\n const filter = descriptor.addFilterLookupUnsafe(column.property, lookupProvider, filterProperty);\n if (optionsLabelProperty) {\n filter.withOptionsLabelPropertyUnsafe(optionsLabelProperty);\n }\n return filter;\n }\n return null;\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {getTableClassAttributeDef} from '../helpers/class-attribute-converter';\nimport {upsertTableColumnFromAttributeDef} from '../helpers/table-descriptor-helpers';\nimport {TableClassAttributeDef} from '../models/class-table-attribute.model';\nimport {TableDescriptorInst, TableDynamicDescriptorInst} from './table.descriptor';\n\nexport class TableDescriptor extends TableDescriptorInst<any> {\n protected constructor() {\n super(model());\n }\n\n public static create<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return tableDescriptor({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: ClassType<unknown> | string\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return tableDescriptorFromClass(type, {id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromModel<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(model: ModelDescriptor<TableModel>): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model);\n }\n\n /**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n return tableDescriptorFromClassAttrsDef(type, undefined, {id: idProperty, title: titleProperty});\n }\n\n /**\n * generates descriptor base on given attribute definition\n * @param type class type\n * @param attributes attributes from which descriptor is generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n attributes: TableClassAttributeDef[],\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n return tableDescriptorFromClassAttrsDef(type, attributes, {id: idProperty, title: titleProperty});\n }\n}\n\nexport type TableDescriptorCreateOptsType<TableModel> = ModelDescriptorCreateOpts<TableModel>;\n\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n opts: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n model: ModelDescriptor<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: TypeDescriptor<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters>;\nexport function tableDescriptor<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<TableModel> | ModelDescriptor<TableModel> | TableDescriptorCreateOptsType<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>());\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>((opts as TableDescriptorCreateOptsType<TableModel> | undefined) ?? {}));\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(typeOrModelOrClassOrOpts);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>(typeOrModelOrClassOrOpts));\n }\n}\n\nexport function tableDescriptorFromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model<TableModel>(type as ClassType<TableModel>, opts));\n}\n\n/**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param attributes\n * @param opts\n */\nexport function tableDescriptorFromClassAttrsDef<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n attributes?: TableClassAttributeDef[],\n opts?: TableDescriptorCreateOptsType<TableModel>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(model(type, opts), true);\n (attributes ?? getTableClassAttributeDef(type))\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr => upsertTableColumnFromAttributeDef(descriptor, attr));\n return descriptor;\n}\n\nexport class TableDynamicDescriptor extends TableDynamicDescriptorInst {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableDynamicDescriptorInst {\n return tableDynamicDescriptor({\n id: idProperty,\n title: titleProperty,\n i18nBase: i18nBaseKey\n });\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableDynamicDescriptorInst {\n return tableDynamicDescriptor(model);\n }\n}\n\nexport function tableDynamicDescriptor(modelOrOpts?: ModelDescriptor<any> | TableDescriptorCreateOptsType<any>): TableDynamicDescriptorInst {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableDynamicDescriptorInst(modelOrOpts)\n : new TableDynamicDescriptorInst(new ModelDescriptor<any>(undefined, modelOrOpts?.id as string, modelOrOpts?.title as string, modelOrOpts?.i18nBase as string));\n}\n","// data providers\nexport * from './data-providers/table.data-provider';\nexport * from './data-providers/table-data-provider.factory';\n\n// descriptors\nexport * from './descriptors/column.descriptor';\nexport * from './descriptors/sort.descriptor';\nexport * from './descriptors/table.descriptor';\nexport * from './descriptors/table-descriptor.factory';\n\n// helpers\nexport * from './helpers/class-attribute-converter';\nexport * from './helpers/table-descriptor-helpers';\n\n// models\nexport * from './models/class-table-attribute.model';\nexport * from './models/column.model';\nexport * from './models/column-value.model';\nexport * from './models/table.model';\nexport * from './models/table-columns.model';\nexport * from './models/table-event.model';\nexport * from './models/row-expandable-component.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|