@mediusinc/mng-commons 7.4.0 → 8.0.0-rc.2

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.
Files changed (48) hide show
  1. package/README.md +74 -62
  2. package/fesm2022/mediusinc-mng-commons-core.mjs +159 -302
  3. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  4. package/fesm2022/mediusinc-mng-commons-filter.mjs +3 -9
  5. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  6. package/fesm2022/mediusinc-mng-commons-form-api.mjs +4 -4
  7. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  8. package/fesm2022/mediusinc-mng-commons-form.mjs +285 -203
  9. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  10. package/fesm2022/mediusinc-mng-commons-model.mjs +2 -5
  11. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  12. package/fesm2022/mediusinc-mng-commons-table-api.mjs +1 -0
  13. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  14. package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-BS5xvoDR.mjs → mediusinc-mng-commons-table-column-toggle.component-BHIzrUZz.mjs} +14 -12
  15. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-BHIzrUZz.mjs.map +1 -0
  16. package/fesm2022/{mediusinc-mng-commons-table-mediusinc-mng-commons-table-BfEYZG7s.mjs → mediusinc-mng-commons-table-mediusinc-mng-commons-table-BPgwJRZk.mjs} +558 -522
  17. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BPgwJRZk.mjs.map +1 -0
  18. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
  19. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +10 -75
  20. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  21. package/fesm2022/mediusinc-mng-commons-tableview.mjs +460 -326
  22. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  23. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  24. package/i18n/en.json +1 -1
  25. package/i18n/sl.json +2 -2
  26. package/package.json +11 -24
  27. package/types/mediusinc-mng-commons-core.d.ts +55 -115
  28. package/types/mediusinc-mng-commons-filter.d.ts +4 -8
  29. package/types/mediusinc-mng-commons-form-api.d.ts +7 -7
  30. package/types/mediusinc-mng-commons-form.d.ts +11 -11
  31. package/types/mediusinc-mng-commons-table-api.d.ts +2 -2
  32. package/types/mediusinc-mng-commons-table.d.ts +21 -25
  33. package/types/mediusinc-mng-commons-tableview-api.d.ts +9 -51
  34. package/types/mediusinc-mng-commons-tableview.d.ts +9 -15
  35. package/fesm2022/mediusinc-mng-commons-model-class.mjs +0 -97
  36. package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +0 -1
  37. package/fesm2022/mediusinc-mng-commons-table-api-class.mjs +0 -204
  38. package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +0 -1
  39. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-BS5xvoDR.mjs.map +0 -1
  40. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BfEYZG7s.mjs.map +0 -1
  41. package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs +0 -374
  42. package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +0 -1
  43. package/model/class/README.md +0 -8
  44. package/table/api/class/README.md +0 -10
  45. package/tableview/api/class/README.md +0 -13
  46. package/types/mediusinc-mng-commons-model-class.d.ts +0 -25
  47. package/types/mediusinc-mng-commons-table-api-class.d.ts +0 -77
  48. package/types/mediusinc-mng-commons-tableview-api-class.d.ts +0 -141
@@ -1,204 +0,0 @@
1
- import { TypeRegistry, CommonsInternalError } from '@mediusinc/mng-commons/core';
2
- import { ColumnTypeEnum, ColumnDisplayTypeEnum, TableDataProviderInst, TableDescriptorInst } from '@mediusinc/mng-commons/table/api';
3
- import { findClassTitleAttribute, ModelClassDescriptor, modelClass } from '@mediusinc/mng-commons/model/class';
4
- import { enumModelGeneric } from '@mediusinc/mng-commons/model';
5
-
6
- /**
7
- * converts string type to column type enum, default is string
8
- * @param attributeType
9
- */
10
- function getColumnTypeFromClassAttributeDefType(attributeType) {
11
- const typeRegistry = TypeRegistry.get();
12
- if (typeRegistry.findEnum(attributeType)) {
13
- attributeType = 'enum';
14
- }
15
- else if (typeRegistry.findType(attributeType)) {
16
- attributeType = 'class';
17
- }
18
- switch (attributeType.toLowerCase()) {
19
- case 'number':
20
- case 'currency':
21
- return ColumnTypeEnum.Number;
22
- case 'boolean':
23
- return ColumnTypeEnum.Boolean;
24
- case 'date':
25
- return ColumnTypeEnum.Date;
26
- case 'enum':
27
- return ColumnTypeEnum.Enum;
28
- case 'custom':
29
- return ColumnTypeEnum.Custom;
30
- case 'class':
31
- return ColumnTypeEnum.String;
32
- case 'string':
33
- default:
34
- return ColumnTypeEnum.String;
35
- }
36
- }
37
- function getColumnDisplayTypeFromColumnType(columnType, attributeType) {
38
- switch (columnType) {
39
- case ColumnTypeEnum.Number:
40
- return attributeType === 'currency' ? ColumnDisplayTypeEnum.Currency : ColumnDisplayTypeEnum.Number;
41
- case ColumnTypeEnum.Boolean:
42
- return ColumnDisplayTypeEnum.Boolean;
43
- case ColumnTypeEnum.Date:
44
- return ColumnDisplayTypeEnum.Date;
45
- case ColumnTypeEnum.Enum:
46
- return ColumnDisplayTypeEnum.Enum;
47
- case ColumnTypeEnum.Custom:
48
- return ColumnDisplayTypeEnum.Component;
49
- case ColumnTypeEnum.String:
50
- default:
51
- return ColumnDisplayTypeEnum.String;
52
- }
53
- }
54
- function expandClassAttributeDefWithTableDef(attributes) {
55
- if (!attributes) {
56
- throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', { name: 'TableviewUtilsError' });
57
- }
58
- const typeRegistry = TypeRegistry.get();
59
- const tableClassAttributeDef = [];
60
- for (const attribute of attributes) {
61
- const enumType = typeRegistry.findEnum(attribute.type);
62
- const columnType = enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type);
63
- tableClassAttributeDef.push({
64
- name: attribute.name,
65
- baseName: attribute.baseName,
66
- type: attribute.type,
67
- subtype: attribute.subtype,
68
- columnType: enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type),
69
- columnDisplayType: getColumnDisplayTypeFromColumnType(columnType, attribute.type),
70
- enumType: typeRegistry.findEnum(attribute.type),
71
- classType: typeRegistry.findType(attribute.type)
72
- });
73
- }
74
- return tableClassAttributeDef;
75
- }
76
- /**
77
- * returns attributes from class type and extends to typed def with column and field enum type
78
- * @param type class type
79
- */
80
- function getTableClassAttributeDef(type) {
81
- return expandClassAttributeDefWithTableDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));
82
- }
83
-
84
- function tableDataProviderFromClass(type, serviceType) {
85
- return new TableDataProviderInst(serviceType);
86
- }
87
-
88
- /**
89
- * generates column based on attributes
90
- * @param desc Table descriptor
91
- * @param attribute attribute map
92
- * @param column if provided, replaced by new, otherwise new is created
93
- * @param args additional parameters
94
- */
95
- function upsertTableColumnFromAttributeDef(desc, attribute, column, ...args) {
96
- if (column == null) {
97
- column = desc.addColumnUnsafe(attribute.name);
98
- }
99
- if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0 && attribute.enumType) {
100
- args = [enumModelGeneric(attribute.enumType)];
101
- }
102
- column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);
103
- if (attribute.classType) {
104
- const titleProperty = findClassTitleAttribute(attribute.classType) ?? undefined;
105
- if (titleProperty) {
106
- column.withGetter(value => value?.[titleProperty]);
107
- }
108
- }
109
- else {
110
- desc.addFilterFromColumnDescriptorUnsafe(column, false);
111
- desc.withSortUnsafe(column.property);
112
- }
113
- return column;
114
- }
115
- /**
116
- * defines modified type of column
117
- * DO NOT USE with enum (use withCustomEnumType)
118
- * @param descriptor table descriptor
119
- * @param property column name
120
- * @param columnType modified type
121
- * @param args additional attributes
122
- * @param columnDisplayType
123
- */
124
- function modifyTableClassAttributeColumnType(descriptor, property, columnType, columnDisplayType, ...args) {
125
- return modifyTableClassAttributeColumnTypeUnsafe(descriptor, property, columnType, columnDisplayType, ...args);
126
- }
127
- function modifyTableClassAttributeColumnTypeUnsafe(descriptor, property, columnType, columnDisplayType, ...args) {
128
- if (!(descriptor.model instanceof ModelClassDescriptor)) {
129
- throw new CommonsInternalError(`withColumnModifiedType cannot be executed for property ${property}: Model descriptor is not of type 'ModelClassDescriptor' is not defined.`);
130
- }
131
- const attributeDef = getTableClassAttributeDef(descriptor.model.classType).find(attr => attr.name === property);
132
- if (attributeDef != null) {
133
- attributeDef.columnType = columnType ?? attributeDef.columnType;
134
- attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;
135
- return upsertTableColumnFromAttributeDef(descriptor, attributeDef, descriptor.columns.find(col => col.property === attributeDef.name), ...args);
136
- }
137
- return null;
138
- }
139
- /**
140
- * defines custom enum type for column
141
- * @param descriptor table descriptor
142
- * @param property column name
143
- * @param enumDesc Enum descriptor.
144
- */
145
- function modifyTableClassAttributeColumnEnum(descriptor, property, enumDesc) {
146
- return tableDescriptorModifyEnumColumnUnsafe(descriptor, property, enumDesc);
147
- }
148
- function tableDescriptorModifyEnumColumnUnsafe(descriptor, property, enumDesc) {
149
- if (!(descriptor.model instanceof ModelClassDescriptor)) {
150
- throw new CommonsInternalError(`withColumnModifiedEnum cannot be executed for property ${property}: Model descriptor is not of type 'ModelClassDescriptor' is not defined.`);
151
- }
152
- const attributeDef = getTableClassAttributeDef(descriptor.model.classType).find(attr => attr.name === property);
153
- if (attributeDef != null) {
154
- attributeDef.columnType = ColumnTypeEnum.Enum;
155
- upsertTableColumnFromAttributeDef(descriptor, attributeDef, descriptor.columns.find(col => col.property === property), enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attributeDef.type)));
156
- }
157
- return null;
158
- }
159
- /**
160
- * modifies column with class and lookup provider
161
- * @param descriptor table descriptor
162
- * @param property column name
163
- * @param lookupProvider lookupProvider for class
164
- * @param optionsLabelProperty
165
- * @param filterProperty
166
- */
167
- function modifyTableColumnFilterLookup(descriptor, property, lookupProvider, optionsLabelProperty, filterProperty) {
168
- return modifyTableColumnFilterLookupUnsafe(descriptor, property, lookupProvider, optionsLabelProperty, filterProperty);
169
- }
170
- function modifyTableColumnFilterLookupUnsafe(descriptor, property, lookupProvider, optionsLabelProperty, filterProperty) {
171
- const column = descriptor.columns.find(col => col.property === property);
172
- if (column) {
173
- const filter = descriptor.addFilterLookupUnsafe(column.property, lookupProvider, filterProperty);
174
- if (optionsLabelProperty) {
175
- filter.withOptionsLabelPropertyUnsafe(optionsLabelProperty);
176
- }
177
- return filter;
178
- }
179
- return null;
180
- }
181
-
182
- function tableDescriptorFromClass(type, opts) {
183
- return new TableDescriptorInst(modelClass(type, opts));
184
- }
185
- /**
186
- * generates descriptor based on type attribute definition
187
- * @param type class type
188
- * @param attributes
189
- * @param opts
190
- */
191
- function tableDescriptorFromClassAttrsDef(type, attributes, opts) {
192
- const descriptor = new TableDescriptorInst(modelClass(type, opts), true);
193
- (attributes ?? getTableClassAttributeDef(type))
194
- .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))
195
- .forEach(attr => upsertTableColumnFromAttributeDef(descriptor, attr));
196
- return descriptor;
197
- }
198
-
199
- /**
200
- * Generated bundle index. Do not edit.
201
- */
202
-
203
- export { expandClassAttributeDefWithTableDef, getColumnDisplayTypeFromColumnType, getColumnTypeFromClassAttributeDefType, getTableClassAttributeDef, modifyTableClassAttributeColumnEnum, modifyTableClassAttributeColumnType, modifyTableClassAttributeColumnTypeUnsafe, modifyTableColumnFilterLookup, modifyTableColumnFilterLookupUnsafe, tableDataProviderFromClass, tableDescriptorFromClass, tableDescriptorFromClassAttrsDef, tableDescriptorModifyEnumColumnUnsafe, upsertTableColumnFromAttributeDef };
204
- //# sourceMappingURL=mediusinc-mng-commons-table-api-class.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediusinc-mng-commons-table-api-class.mjs","sources":["../../table/api/class/src/class-table-attribute-converter.ts","../../table/api/class/src/class-table-data-provider.factory.ts","../../table/api/class/src/class-table-descriptor-helpers.ts","../../table/api/class/src/class-table-descriptor.factory.ts","../../table/api/class/src/mediusinc-mng-commons-table-api-class.ts"],"sourcesContent":["import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '@mediusinc/mng-commons/table/api';\n\nimport {TableClassAttributeDef} from './class-table-attribute.model';\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 {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {TableDataProviderInst} from '@mediusinc/mng-commons/table/api';\n\nexport function tableDataProviderFromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n): TableDataProviderInst<Model, undefined, Sorts, Filters, 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, 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, ServiceClass>(serviceType as ServiceClass);\n}\n","import {CommonsInternalError, EnumType, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {FilterLookupDescriptor} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, enumModelGeneric} from '@mediusinc/mng-commons/model';\nimport {ModelClassDescriptor, findClassTitleAttribute} from '@mediusinc/mng-commons/model/class';\nimport {ColumnDescriptor, ColumnDisplayTypeEnum, ColumnTypeEnum, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {getTableClassAttributeDef} from './class-table-attribute-converter';\nimport {TableClassAttributeDef} from './class-table-attribute.model';\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 instanceof ModelClassDescriptor)) {\n throw new CommonsInternalError(\n `withColumnModifiedType cannot be executed for property ${property}: Model descriptor is not of type 'ModelClassDescriptor' is not defined.`\n );\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.classType).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 instanceof ModelClassDescriptor)) {\n throw new CommonsInternalError(\n `withColumnModifiedEnum cannot be executed for property ${property}: Model descriptor is not of type 'ModelClassDescriptor' is not defined.`\n );\n }\n\n const attributeDef = getTableClassAttributeDef(descriptor.model.classType).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 {modelClass} from '@mediusinc/mng-commons/model/class';\nimport {TableDescriptorCreateOptsType, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {getTableClassAttributeDef} from './class-table-attribute-converter';\nimport {TableClassAttributeDef} from './class-table-attribute.model';\nimport {upsertTableColumnFromAttributeDef} from './class-table-descriptor-helpers';\n\nexport function tableDescriptorFromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n opts?: TableDescriptorCreateOptsType<TableModel, Sorts, Filters>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(modelClass<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, Sorts, Filters>\n): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(modelClass(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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediusinc-mng-commons-table-column-toggle.component-BS5xvoDR.mjs","sources":["../../table/src/components/column-toggle/column-toggle.component.ts","../../table/src/components/column-toggle/column-toggle.component.html"],"sourcesContent":["import {NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {MultiSelect} from 'primeng/multiselect';\nimport {Tooltip} from 'primeng/tooltip';\n\nimport {I18nPropertyPipe} from '@mediusinc/mng-commons/core';\n\nimport {ColumnWithPreferences} from '../../models/column-preferences.model';\nimport {TableMetadataService} from '../../services/table-metadata.service';\nimport {TablePreferencesService} from '../../services/table-preferences.service';\n\n@Component({\n selector: 'mng-table-column-toggle',\n templateUrl: './column-toggle.component.html',\n imports: [I18nPropertyPipe, NgClass, MultiSelect, FormsModule, TranslatePipe, Tooltip, Button],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableColumnToggleComponent {\n protected readonly metadata = inject(TableMetadataService);\n protected readonly prefs = inject(TablePreferencesService);\n\n // data source inputs\n public readonly columns = input.required<ColumnWithPreferences[]>();\n\n protected anyColumnVisible = computed(() => this.columns().length > 0);\n}\n","<p-multiSelect\n #columnToggleMultiselect\n styleClass=\"p-button-primary mng-table-columns-multiselect\"\n appendTo=\"body\"\n dataKey=\"id\"\n tooltipPosition=\"left\"\n placeholder=\"\"\n dropdownIcon=\"pi pi-sliders-h\"\n [filter]=\"false\"\n [options]=\"prefs.columnsWithPrefs()\"\n [ngModel]=\"columns()\"\n [pTooltip]=\"'mngTable.adjustTable' | translate\"\n [displaySelectedLabel]=\"false\"\n (onChange)=\"prefs.onColumnToggle($event)\">\n <ng-template #filter>\n <div class=\"flex w-full justify-between items-center\">\n <div class=\"p-checkbox\">\n <div class=\"p-hidden-accessible\">\n <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"columnToggleMultiselect.allSelected\" (keydown.space)=\"columnToggleMultiselect.onToggleAll($event)\" />\n </div>\n <div\n class=\"p-checkbox-box cursor-pointer\"\n role=\"checkbox\"\n [attr.aria-checked]=\"columnToggleMultiselect.allSelected\"\n [class.p-select-option-selected]=\"anyColumnVisible()\"\n (click)=\"prefs.onColumnToggleAll()\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': anyColumnVisible()}\"></span>\n </div>\n </div>\n <p-button\n icon=\"pi pi-replay\"\n severity=\"secondary\"\n text=\"true\"\n tooltipPosition=\"left\"\n [pTooltip]=\"'mngTable.resetLayout' | translate\"\n (click)=\"prefs.clearLayoutPreferences()\"></p-button>\n </div>\n </ng-template>\n <ng-template #item let-item>\n {{\n (item.descriptor.title && !item.descriptor.titleUseModelBase\n ? item.descriptor.title\n : (item.descriptor.title ?? item.descriptor.property | mngI18nProperty: metadata.descriptor().model)\n ) | translate\n }}\n </ng-template>\n</p-multiSelect>\n"],"names":[],"mappings":"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"}