Skip to content

UI-слоты (app.uiSlots)

Реестр app.uiSlots — точки встраивания Vue-компонентов в заранее определённые regions экранов хоста.

Регистрация

ts
import { getExtensionRegistry, type ExtensionUiSlotItem } from '@artiroute/extension-sdk/extension';

getExtensionRegistry<ExtensionUiSlotItem>('app.uiSlots').register(
  'layout.sidebar.footer__my-ext', // key — уникален глобально
  {
    region: 'layout.sidebar.footer',
    order: 100,
    component: MyFooterWidget,
  },
  100
);

В manifest:

js
{ registryId: 'app.uiSlots', keys: ['layout.sidebar.footer__my-ext'] }

registry-test генерирует keys через regionRegistryKey(region) — рекомендуется тот же паттерн: {region}__{extensionSlug}.

Монтирование в хосте

Хост использует:

vue
<ExtensionSlotHost region="layout.sidebar.footer" />

Компонент хоста фильтрует entries реестра app.uiSlots по полю region.

Каталог regions

Layout

RegionФайл хоста
layout.sidebar.beforeAppSidebar.vue
layout.sidebar.afterAppSidebar.vue
layout.sidebar.footerAppSidebar.vue
layout.topbar.actionsAppTopbar.vue
layout.topbar.title-suffixAppTopbar.vue
layout.main.beforeMainLayout.vue
layout.main.afterMainLayout.vue
layout.overlayMainLayout.vue
app.rootApp.vue

Dashboard

RegionФайл хоста
dashboard.toolbarDashboardScreen.vue
dashboard.widget.header-afterDashboardWidgetRenderer.vue
dashboard.emptyDashboardScreen.vue

Projects

RegionФайл хоста
project.header.actionsProjectDetailHeader.vue
project.tabs.afterProjectWorkspaceScreen.vue
project.workspace.toolbarProjectWorkspaceScreen.vue
project.widget.header-afterWidgetRenderer.vue
project.settings.drawerProjectSettingsDrawer.vue
projects.list.toolbarProjectsListScreen.vue

Artifact editor

RegionФайл хоста
artifact-editor.toolbarArtifactEditorScreen.vue
artifact-editor.sidebarArtifactEditorScreen.vue
artifact-editor.editor-overlayArtifactEditorScreen.vue
artifact-editor.generation.panelArtifactEditorScreen.vue

Entity lists / forms

RegionФайл хоста
entity-list.toolbar.extralist screens
entity-form.toolbarform screens
entity-form.footerform screens
template-editor.sidebarTemplateEditorScreen.vue
preset-editor.sidebarPresetEditorScreen.vue
preset-editor.node-inspectorPresetEditorScreen.vue

Settings / auth

RegionФайл хоста
settings.profile.afterSettingsProfilePanel.vue
settings.appearance.afterSettingsAppearancePanel.vue
login.form.afterLoginScreen.vue

Рекомендации

  • Используйте лёгкие компоненты в слотах — они рендерятся на каждом соответствующем экране
  • Не дублируйте функциональность core UI — слоты для дополнений
  • Для smoke-test всех regions см. registry-test

Payload: ExtensionUiSlotItem

ПолеОписание
regionСтрока region (см. таблицы выше)
componentVue component
orderПорядок при нескольких компонентах в одном region
propsСтатические props (опционально)
resolveProps(ctx) => props для динамического контекста (опционально)

AI workspace для командных материалов и знаний