|  |  |  | @ -14,7 +14,12 @@ import { PropCallback } from '../models/props'; | 
			
		
	
		
			
				
					|  |  |  |  | import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util'; | 
			
		
	
		
			
				
					|  |  |  |  | import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util'; | 
			
		
	
		
			
				
					|  |  |  |  | import { createExtraPropertyValueResolver } from './props.util'; | 
			
		
	
		
			
				
					|  |  |  |  | import { createTypeaheadOptions, getTypeaheadType } from './typeahead.util'; | 
			
		
	
		
			
				
					|  |  |  |  | import { | 
			
		
	
		
			
				
					|  |  |  |  |   createTypeaheadDisplayNameGenerator, | 
			
		
	
		
			
				
					|  |  |  |  |   createTypeaheadOptions, | 
			
		
	
		
			
				
					|  |  |  |  |   getTypeaheadType, | 
			
		
	
		
			
				
					|  |  |  |  |   hasTypeaheadTextSuffix, | 
			
		
	
		
			
				
					|  |  |  |  | } from './typeahead.util'; | 
			
		
	
		
			
				
					|  |  |  |  | import { getValidatorsFromProperty } from './validation.util'; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function selectObjectExtensions( | 
			
		
	
	
		
			
				
					|  |  |  | @ -59,7 +64,7 @@ export function getObjectExtensionEntitiesFromStore( | 
			
		
	
		
			
				
					|  |  |  |  |         .entities; | 
			
		
	
		
			
				
					|  |  |  |  |     }), | 
			
		
	
		
			
				
					|  |  |  |  |     map(entities => (isUndefined(entities) ? {} : entities)), | 
			
		
	
		
			
				
					|  |  |  |  |     filter<Entities>(Boolean), | 
			
		
	
		
			
				
					|  |  |  |  |     filter<ObjectExtensions.EntityExtensions>(Boolean), | 
			
		
	
		
			
				
					|  |  |  |  |     take(1), | 
			
		
	
		
			
				
					|  |  |  |  |   ); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -75,7 +80,7 @@ export function mapEntitiesToContributors<T = any>( | 
			
		
	
		
			
				
					|  |  |  |  |           const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |           return Object.keys(entities).reduce( | 
			
		
	
		
			
				
					|  |  |  |  |             (acc, key: keyof Entities) => { | 
			
		
	
		
			
				
					|  |  |  |  |             (acc, key: keyof ObjectExtensions.EntityExtensions) => { | 
			
		
	
		
			
				
					|  |  |  |  |               acc.prop[key] = []; | 
			
		
	
		
			
				
					|  |  |  |  |               acc.createForm[key] = []; | 
			
		
	
		
			
				
					|  |  |  |  |               acc.editForm[key] = []; | 
			
		
	
	
		
			
				
					|  |  |  | @ -108,23 +113,30 @@ export function mapEntitiesToContributors<T = any>( | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | function createPropertiesToContributorsMapper<T = any>( | 
			
		
	
		
			
				
					|  |  |  |  |   generateDisplayName: DisplayNameGeneratorFn, | 
			
		
	
		
			
				
					|  |  |  |  |   generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn, | 
			
		
	
		
			
				
					|  |  |  |  |   resource: string, | 
			
		
	
		
			
				
					|  |  |  |  |   enums: Record<string, ObjectExtensions.ExtensionEnumDto>, | 
			
		
	
		
			
				
					|  |  |  |  | ) { | 
			
		
	
		
			
				
					|  |  |  |  |   return ( | 
			
		
	
		
			
				
					|  |  |  |  |     properties: Record<string, ObjectExtensions.ExtensionPropertyDto>, | 
			
		
	
		
			
				
					|  |  |  |  |     properties: ObjectExtensions.EntityExtensionProperties, | 
			
		
	
		
			
				
					|  |  |  |  |     contributors: ObjectExtensions.PropContributors<T>, | 
			
		
	
		
			
				
					|  |  |  |  |     key: string, | 
			
		
	
		
			
				
					|  |  |  |  |   ) => { | 
			
		
	
		
			
				
					|  |  |  |  |     const isExtra = true; | 
			
		
	
		
			
				
					|  |  |  |  |     const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator( | 
			
		
	
		
			
				
					|  |  |  |  |       generateDisplayName, | 
			
		
	
		
			
				
					|  |  |  |  |       properties, | 
			
		
	
		
			
				
					|  |  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     Object.keys(properties).forEach((name: string) => { | 
			
		
	
		
			
				
					|  |  |  |  |       const property = properties[name]; | 
			
		
	
		
			
				
					|  |  |  |  |       const propName = name; | 
			
		
	
		
			
				
					|  |  |  |  |       const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto); | 
			
		
	
		
			
				
					|  |  |  |  |       const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property); | 
			
		
	
		
			
				
					|  |  |  |  |       const displayName = generateDisplayName(property.displayName, { name, resource }); | 
			
		
	
		
			
				
					|  |  |  |  |       const generateDN = hasTypeaheadTextSuffix(name) | 
			
		
	
		
			
				
					|  |  |  |  |         ? generateTypeaheadDisplayName | 
			
		
	
		
			
				
					|  |  |  |  |         : generateDisplayName; | 
			
		
	
		
			
				
					|  |  |  |  |       const displayName = generateDN(property.displayName, { name, resource }); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       if (property.ui.onTable.isVisible) { | 
			
		
	
		
			
				
					|  |  |  |  |         const sortable = Boolean(property.ui.onTable.isSortable); | 
			
		
	
	
		
			
				
					|  |  |  | @ -186,6 +198,3 @@ function getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): e | 
			
		
	
		
			
				
					|  |  |  |  | function isUndefined(obj: any): obj is undefined { | 
			
		
	
		
			
				
					|  |  |  |  |   return typeof obj === 'undefined'; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | type DisplayNameGeneratorFn = ReturnType<typeof createDisplayNameLocalizationPipeKeyGenerator>; | 
			
		
	
		
			
				
					|  |  |  |  | type Entities = Record<string, ObjectExtensions.EntityExtensionDto>; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |