Skip to content

ObjectMetadataSectionComponent

component

Selector: yuv-object-metadata-section

Standalone: No

Type: IObjectFormElementExtension[]

Default Value: []

Type: boolean

Default Value: false, \{ alias: 'expanded' \}

Type: boolean

Type: ObjectMetadataSectionInput

Required: Yes

Type: boolean

When true, the section’s expand/collapse feature is removed: the content is always visible, cannot be collapsed, and the accordion toggle (arrow) is hidden.

Type: boolean

When true, the section header (title, icon and toggle) is not rendered while the content region is still shown. Typically combined with skipExpand to display a title-less, always-open section.

Type: FormStatusChangedEvent

Type: unknown

Default Value: signal(false)

Gate for the reveal/collapse transition. Stays false for the first render so a section that mounts already expanded (auto-expanded first section or skipExpand) appears instantly without a slide. Enabled after the initial render so that only subsequent user-driven toggles animate.

Type: unknown

Default Value: signal(false)

Type: unknown

Default Value: signal<FormStatusChangedEvent | undefined>(undefined)

Last status emitted by a custom renderer. Used to drive the host dirty/invalid classes when the default yuv-object-form (and thus objectForm()) is absent.

Type: unknown

Default Value: computed(() => this.#sotRenderers.getSotTemplate(this.section().id, this.section().situation ?? Situation.EDIT) )

A custom SOT renderer registered for this section’s SOT id, or undefined when the default schema-driven form should be used.

Type: unknown

Default Value: linkedSignal(this.expandedInput)

Type: unknown

Default Value: linkedSignal<ObjectMetadataSectionInput, ObjectFormOptions | undefined>(\{ source: this.section, computation: () => undefined \})

Type: unknown

Default Value: signal<FormStatusChangedEvent | undefined>(undefined)

Settled status of the default yuv-object-form, captured from its statusChanged output. The host classes read this signal instead of the live form.invalid/ form.dirty for two reasons:* it is only updated once the form has emitted a settled status (after the model is built and its values are patched), so the transient window where required controls are momentarily invalid never reaches the DOM (no red flash);* a signal value is stable within a change-detection cycle, so expanding a section mid-cycle no longer throws NG0100 (removing the consumer-side “defer expand by a tick” workaround).

Type: unknown

Default Value: computed(() => !!this.skipExpand() || this.expanded())

Effective expanded state. When skipExpand is set the section is always visible and cannot be collapsed, so it is treated as permanently expanded.

Type: unknown

Default Value: viewChild<ObjectFormComponent>(ObjectFormComponent)

Type: unknown

Default Value: computed(() => !!this.customTemplate() && this.#hasExpanded())

Type: unknown

Default Value: computed(() => !!this.#status()?.dirty)

Type: unknown

Default Value: computed(() => \{ const status = this.#status(); return !!status?.invalid && !!status?.dirty; \})

Reflect the invalid styling only once the form has been edited (dirty). This suppresses the load transient and follows the convention of not surfacing errors before the user interacts. A form that is genuinely invalid after user interaction still shows the red border/outline.

Type: unknown

Default Value: computed<SotRendererContext>(() => \{ const section = this.section(); const fo = this.formOptions(); return \{ sot: section.id, situation: section.situation ?? Situation.EDIT, readonly: !!this.readonly(), formModel: fo?.formModel, data: fo?.data ?? section.data ?? \{\}, setStatus: this.#setCustomStatus, command$: this.#commandSubject.asObservable() \}; \})

Capture the default form’s settled status, then re-emit it to consumers.

onFormStatusChanged(evt: FormStatusChangedEvent): void
NameTypeDescription
evtFormStatusChangedEvent
resetForm(): void
setFormPristine(): void
toggle(): void