src/command-menu-items/open-dashboard.command-menu-item.ts
Поля конфигурации
| Поле | Обязательно | Описание |
|---|---|---|
universalIdentifier | Да | Стабильный уникальный идентификатор для команды |
label | Да | Полная метка, отображаемая в меню команд (Cmd+K) |
frontComponentUniversalIdentifier | Да | universalIdentifier фронтенд-компонента, который открывается этой командой |
shortLabel | Нет | Короткая метка, отображаемая на закреплённой кнопке быстрого действия |
icon | Нет | Имя значка, отображаемое рядом с меткой (например, 'IconBolt', 'IconSend') |
isPinned | Нет | При значении true показывает команду как кнопку быстрого действия в правом верхнем углу страницы |
availabilityType | Нет | Определяет, где отображается команда: 'GLOBAL' (доступна всегда), 'RECORD_SELECTION' (только при выборе записей) или 'FALLBACK' (показывается, когда другие команды не подходят) |
availabilityObjectUniversalIdentifier | Нет | Ограничивает команду страницами определённого типа объектов (например, только для записей Company) |
conditionalAvailabilityExpression | Нет | Логическое выражение, которое динамически управляет видимостью (см. ниже) |
Команды без интерфейса
Элемент командного меню в паре с фронтенд-компонентом без интерфейса — идиоматичный способ предоставить действие в один клик: выполнить код, перейти или подтвердить и выполнить. Страница Front Components описывает SDK Command components (Command, CommandLink, CommandModal, CommandOpenSidePanelPage), которые реализуют шаблон «действие и размонтирование».
Типичный сценарий:
src/front-components/run-action.tsx
src/command-menu-items/run-action.command-menu-item.ts
Выражения условной доступности
ПолеconditionalAvailabilityExpression позволяет управлять видимостью команды в зависимости от текущего контекста страницы. Импортируйте типизированные переменные и операторы из twenty-sdk, чтобы составлять выражения:
src/command-menu-items/bulk-update.command-menu-item.ts
RECORD_SELECTION уже подразумевает, что есть выбранные записи — используйте numberOfSelectedRecords только для конкретных количеств (например, >= 2).Переменные контекста
Они представляют текущее состояние страницы:| Переменная | Тип | Описание |
|---|---|---|
pageType | string | Текущий тип страницы (например, 'RecordIndexPage', 'RecordShowPage') |
isInSidePanel | boolean | Указывает, рендерится ли компонент в боковой панели |
numberOfSelectedRecords | number | Количество выбранных в данный момент записей |
isSelectAll | boolean | Активен ли режим “выбрать все” |
selectedRecords | array | Объекты выбранных записей |
favoriteRecordIds | array | ID избранных записей |
objectPermissions | object | Разрешения для текущего типа объекта |
targetObjectReadPermissions | object | Права на чтение для целевого объекта |
targetObjectWritePermissions | object | Права на запись для целевого объекта |
featureFlags | object | Активные флаги функций |
objectMetadataItem | object | Метаданные текущего типа объекта |
hasAnySoftDeleteFilterOnView | boolean | Есть ли у текущего представления фильтр мягкого удаления |
Операторы
Комбинируйте переменные в логические выражения:| Оператор | Описание |
|---|---|
isDefined(value) | true, если значение не null/undefined |
isNonEmptyString(value) | true, если значение — непустая строка |
includes(array, value) | true, если массив содержит значение |
includesEvery(array, prop, value) | true, если свойство каждого элемента включает значение |
every(array, prop) | true, если свойство истинно для каждого элемента |
everyDefined(array, prop) | true, если свойство определено у каждого элемента |
everyEquals(array, prop, value) | true, если свойство равно значению у каждого элемента |
some(array, prop) | true, если свойство истинно хотя бы у одного элемента |
someDefined(array, prop) | true, если свойство определено хотя бы у одного элемента |
someEquals(array, prop, value) | true, если свойство равно значению хотя бы у одного элемента |
someNonEmptyString(array, prop) | true, если свойство является непустой строкой хотя бы у одного элемента |
none(array, prop) | true, если свойство ложно для каждого элемента |
noneDefined(array, prop) | true, если свойство не определено ни у одного элемента |
noneEquals(array, prop, value) | true, если свойство не равно значению ни у одного элемента |