Files
marketplaces/docs/platform/05-widget-system.md
sdarbinyan 10251f2fc6
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs
2026-07-05 04:23:47 +04:00

58 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 05. Widget System
## Назначение
Widget System предоставляет переиспользуемые UI-блоки для сборки страниц из конфигурации без дублирования логики и без tenant-specific кода.
## Поведение системы
- Widget Engine выбирает компонент по widget.type и version.
- Виджет получает входные props и resolved data.
- В случае отсутствия регистрации используется fallback unknown-widget.
## Обязательные свойства JSON
- widget.id
- widget.type
- widget.version
## Опциональные свойства JSON
- widget.props
- widget.dataSource
- widget.featureFlag
- widget.visible
- widget.events
## Строгие правила
- Виджеты не вызывают API напрямую.
- Виджеты не управляют page-level margin/padding/layout.
- Виджет может управлять только внутренней разметкой и презентацией.
- Любой новый widget.type должен быть зарегистрирован в реестре.
## Пример JSON виджета
```json
{
"id": "widget-categories-main",
"type": "categories",
"version": "1.0.0",
"props": {
"title": "Категории",
"emptyMessage": "Категории скоро появятся"
},
"dataSource": {
"name": "categories",
"params": {
"rootOnly": true,
"limit": 12
}
}
}
```
## Ответственность Frontend
- Разрешать тип виджета через registry/manifest.
- Передавать только подготовленные данные в компонент виджета.
- Блокировать прямые API-вызовы из слоя UI-виджета.
## Ответственность Backend
- Поставлять данные в форматах, ожидаемых data resolvers.
- Обеспечивать консистентность ID и ссылок между сущностями.
- Не внедрять frontend-специфичные инструкции в props виджетов.