src/command-menu-items/open-dashboard.command-menu-item.ts
Campos de configuração
| Campo | Obrigatório | Descrição |
|---|---|---|
universalIdentifier | Sim | ID exclusivo e estável para o comando |
label | Sim | Rótulo completo exibido no menu de comandos (Cmd+K) |
frontComponentUniversalIdentifier | Sim | O universalIdentifier do componente de front-end que este comando abre |
shortLabel | Não | Rótulo mais curto exibido no botão fixado de ação rápida |
icon | Não | Nome do ícone exibido ao lado do rótulo (por exemplo, 'IconBolt', 'IconSend') |
isPinned | Não | Quando true, mostra o comando como um botão de ação rápida no canto superior direito da página |
availabilityType | Não | Controla onde o comando aparece: 'GLOBAL' (sempre disponível), 'RECORD_SELECTION' (apenas quando registros estão selecionados) ou 'FALLBACK' (exibido quando nenhum outro comando corresponde) |
availabilityObjectUniversalIdentifier | Não | Restringe o comando a páginas de um tipo específico de objeto (por exemplo, somente em registros de Company) |
conditionalAvailabilityExpression | Não | Uma expressão booleana que controla dinamicamente a visibilidade (veja abaixo) |
Comandos sem interface
Um item do menu de comandos emparelhado com um componente de front-end sem interface é a forma idiomática de disponibilizar uma ação de um clique — executar código, navegar ou confirmar e executar. A página de Front Components aborda os SDK Command components (Command, CommandLink, CommandModal, CommandOpenSidePanelPage) que lidam com o padrão de ação e desmontagem.
Um fluxo típico:
src/front-components/run-action.tsx
src/command-menu-items/run-action.command-menu-item.ts
Expressões de disponibilidade condicional
O campoconditionalAvailabilityExpression permite controlar quando um comando é visível com base no contexto da página atual. Importe variáveis tipadas e operadores de twenty-sdk para construir expressões:
src/command-menu-items/bulk-update.command-menu-item.ts
RECORD_SELECTION já implica uma seleção não vazia — use numberOfSelectedRecords apenas para contagens específicas (por exemplo, >= 2).Variáveis de contexto
Elas representam o estado atual da página:| Variável | Tipo | Descrição |
|---|---|---|
pageType | string | Tipo de página atual (por exemplo, 'RecordIndexPage', 'RecordShowPage') |
isInSidePanel | boolean | Se o componente é renderizado em um painel lateral |
numberOfSelectedRecords | number | Número de registros atualmente selecionados |
isSelectAll | boolean | Se “selecionar tudo” está ativo |
selectedRecords | array | Os objetos de registro selecionados |
favoriteRecordIds | array | IDs dos registros marcados como favoritos |
objectPermissions | object | Permissões para o tipo de objeto atual |
targetObjectReadPermissions | object | Permissões de leitura para o objeto alvo |
targetObjectWritePermissions | object | Permissões de escrita para o objeto alvo |
featureFlags | object | Flags de recurso ativas |
objectMetadataItem | object | Metadados do tipo de objeto atual |
hasAnySoftDeleteFilterOnView | boolean | Se a visualização atual tem um filtro de soft-delete |
Operadores
Combine variáveis em expressões booleanas:| Operador | Descrição |
|---|---|
isDefined(value) | true se o valor não for null/undefined |
isNonEmptyString(value) | true se o valor for uma string não vazia |
includes(array, value) | true se o array contiver o valor |
includesEvery(array, prop, value) | true se a propriedade de cada item incluir o valor |
every(array, prop) | true se a propriedade for truthy em cada item |
everyDefined(array, prop) | true se a propriedade estiver definida em cada item |
everyEquals(array, prop, value) | true se a propriedade for igual ao valor em cada item |
some(array, prop) | true se a propriedade for truthy em pelo menos um item |
someDefined(array, prop) | true se a propriedade estiver definida em pelo menos um item |
someEquals(array, prop, value) | true se a propriedade for igual ao valor em pelo menos um item |
someNonEmptyString(array, prop) | true se a propriedade for uma string não vazia em pelo menos um item |
none(array, prop) | true se a propriedade for falsy em cada item |
noneDefined(array, prop) | true se a propriedade for undefined em cada item |
noneEquals(array, prop, value) | true se a propriedade não for igual ao valor em nenhum item |