diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts index b8b2687232..4920687077 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts @@ -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(Boolean), + filter(Boolean), take(1), ); } @@ -75,7 +80,7 @@ export function mapEntitiesToContributors( 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( } function createPropertiesToContributorsMapper( - generateDisplayName: DisplayNameGeneratorFn, + generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn, resource: string, enums: Record, ) { return ( - properties: Record, + properties: ObjectExtensions.EntityExtensionProperties, contributors: ObjectExtensions.PropContributors, 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; -type Entities = Record;