Skip to content

MenuItem

MenuItem связывает пункт ColumnMenu или CellMenu с прямой Action identity либо с Action port текущего Component SFC.

vue
<MenuItem
  id="sort-ascending"
  action="table.sort.setColumnAsc"
  label="По возрастанию"
  icon="arrow-up"
/>

Короткая форма содержит только identity. Если Action допускает отсутствие input, provider использует своё default behavior:

vue
<MenuItem
  action="built-in-console-log"
  label="Debug"
/>

Основной синтаксис отделяет Action identity от вычисляемого input:

vue
<MenuItem
  action="order.open-details"
  :label="t('orders:menu.open', 'Открыть')"
  v-if="$row.data.status !== 'archived'"
  :disabled="!$row.data.canOpen"
  :input="{ id: $row.id, field: $column.key, value: $cell.value }"
/>

Прямая строка является внешней Action dependency и не требует объявления в definePorts. Если Action объявлен как definePorts.require/provides, ссылка на его key задаётся expression binding:

vue
<MenuItem :action="openDetails" label="Открыть" :input="{ id: rowId }" />

Прежняя строковая ссылка на существующий port key остаётся совместимой, но для нового Source рекомендуется явный expression binding.

Старый статический input в object binding остаётся совместимым:

vue
<MenuItem
  :action="{
    identity: 'built-in-console-log',
    input: {
      message: 'Контекстное меню работает',
    },
  }"
  label="Debug"
/>

Action contract использует термин input, поэтому payload не поддерживается. Пользовательские поля нельзя располагать рядом с identity: форма { identity, message } является compiler error. На текущем этапе input должен быть static object literal. Dynamic input записывается отдельным :input.

АтрибутТипНазначение
actionliteral string / port expression / static objectПрямая Action identity, Action port key либо legacy { identity, input? }.
inputsafe SFC expressionInput, вычисляемый в текущем menu context.
labelliteral / safe SFC expressionОбязательная подпись, включая t(key, fallback).
idliteral stringStable item id; default равен action.
iconliteral stringОпциональная renderer-neutral icon identity.
v-ifsafe SFC expressionПолностью скрывает пункт, если условие ложно.
disabledboolean / safe SFC expressionОставляет пункт видимым, но запрещает выполнение.

id и icon остаются literals. Атрибут command удалён и является compiler error.