DynamicCatalogRendererComponent
Renders the value(s) of a dynamic catalog field (schema field carrying a catalog reference).
Those fields store the technical entry name, so the label has to be resolved from the catalog entry’s localizations — the same resolution yuv-dynamic-catalog does for the form element. The entries are fetched and cached by CatalogLabelService (once per catalog, not once per renderer instance — a summary or tile list mounts many rows of the same catalog). Values without a matching entry fall back to the technical value.
Component Metadata
Section titled “Component Metadata”Selector: yuv-dynamic-catalog-renderer
Standalone: No
Inputs
Section titled “Inputs”Type: Record<string, unknown> | U
objectTypeId
Section titled “objectTypeId”Type: string | undefined
Default Value: undefined
ID of the object type (or secondary object type) the property is rendered for, when known. Some schema attributes — most notably the dynamic catalog a property is bound to — may be overridden per type, and can only be resolved with that context.
propertyName
Section titled “propertyName”Type: string
Required: Yes
Type: T | null
Required: Yes
Properties
Section titled “Properties”Type: unknown
Default Value: computed<string>(() => \{ const value = this.value(); if (value === null || value === undefined) return ''; // Catalog fields may be multi-select, in which case the value is an array of technical values. const values = Array.isArray(value) ? value : [value]; const catalogName = this.#catalogName(); // Not catalog backed after all — nothing to resolve against. if (!catalogName) return values.join(', '); // Don't flash the technical value while the entries are on their way. if (this.#catalogLabels.isLoading(catalogName)) return ''; return values.map((val) => this.#catalogLabels.getLabel(catalogName, val) ?? val).join(', '); \})