Skip to main content

ComponentDefinition

@lowcode/dsl


Interface: ComponentDefinition

Defined in: components/types.ts:167

Описание одного типа компонента в DSL.

Эти данные не зависят от React, HTML или ui-kit, и могут использоваться в компиляторе, редакторе и runtime.

Properties

canHaveChildren?

optional canHaveChildren: boolean

Defined in: components/types.ts:196

Разрешено ли компоненту иметь дочерние ноды.

Если false, то любые children в ComponentNode считаются ошибкой и должны либо игнорироваться, либо подсвечиваться валидатором / редактором.

Если не указано, по умолчанию считаем, что дети разрешены.


category?

optional category: string

Defined in: components/types.ts:185

Опциональная категория компонента (группа в палитре).

Например: "layout", "basic", "forms".


contentProp?

optional contentProp: string

Defined in: components/types.ts:226

Optional name of the prop that represents the primary "content" of this component (for example, "text" for Text, "label" for Button).

Code generators may use this information to map that prop into React children instead of passing it as a regular prop. This field is purely semantic and does not affect DSL validation.


displayName?

optional displayName: string

Defined in: components/types.ts:178

Опциональное человекочитаемое имя компонента для палитры, инспектора и документации.


events?

optional events: Record<string, ComponentEventDefinition>

Defined in: components/types.ts:216

Описание всех поддерживаемых событий компонента.

Ключи — технические имена событий (onClick, onChange и т.п.), значения — метаданные для редактора и документации.

Если поле не указано или пустое, считаем, что компонент "не умеет" событий в терминах DSL.


props

props: Record<string, ComponentPropDefinition>

Defined in: components/types.ts:205

Описание всех поддерживаемых пропов компонента.

Ключи объекта должны совпадать с полем name каждого пропа, однако в реальном ComponentNode могут встречаться и "лишние" пропы — редактор/валидатор сам решает, как с ними работать.


type

type: string

Defined in: components/types.ts:172

Тип компонента, совпадающий с ComponentNode.type (например, "Button", "Text").