Pular para o conteúdo principal

Actions

Passe actions e um único actionExecutor:

  • scope: 'global' aparece na barra de ferramentas e recebe {sourceId}.
  • Uma ação normal com scope: 'record' aparece no menu de ações da linha e recebe {sourceId, record}. Com presentation: 'checkbox', ela aparece diretamente na linha.
  • scope: 'selection' aparece na barra de ferramentas somente quando selectable está ativo e há linhas selecionadas.
const actions: DyonaAction[] = [
{id: 'refresh', label: 'Atualizar saldos', scope: 'global'},
{id: 'view-entry', label: 'Ver lançamento', scope: 'record'},
{id: 'change-status', label: 'Alterar status selecionado', scope: 'selection'},
];

Uma ação de seleção recebe context.selection:

{sourceId: 'current-account-invoices', selection: {
ids: ['FAC-00481', 'FAC-00482'], records: [{id: 'FAC-00481', status: 'pending'}],
}}

ids inclui todos os IDs selecionados, inclusive de páginas remotas não carregadas. records inclui apenas registros selecionados disponíveis na memória temporária do Grid, portanto não precisa corresponder um a um a ids.

Enquanto uma ação é executada, as ações do Grid ficam bloqueadas e a ação direta ativa mostra um indicador de carregamento. onActionResult(result, action, record?) recebe resultados completos; onActionError(error, action, record?) recebe erros do executor ou de execução.

Ações record diretas com checkbox​

Use presentation: 'checkbox' quando uma ação record representa um estado que deve permanecer visível em cada linha:

const actions: DyonaAction[] = [
{
id: 'toggle-reviewed',
label: 'Revisado',
scope: 'record',
presentation: 'checkbox',
checkedField: 'reviewed',
checkedValue: 'S',
uncheckedValue: 'N',
},
];

O checkbox fica marcado quando Object.is(record[checkedField], checkedValue). checkedValue e uncheckedValue são opcionais e seus defaults são true e false, respectivamente. Valores personalizados como S / N são suportados.

O executor recebe o registro original e o próximo estado solicitado por context.parameters:

const actionExecutor: DyonaActionExecutor = async ({context}) => {
const field = context.parameters?.field;
const value = context.parameters?.value;
const checked = context.parameters?.checked;

if (!context.record || field !== 'reviewed' || typeof checked !== 'boolean') {
return {success: false};
}

return {
success: true,
data: {rowPatch: {reviewed: value}},
};
};

Esta apresentação é independente da seleção de linhas: não requer selectable e não cria um checkbox de cabeçalho. Durante a execução, usa o feedback existente de ação em andamento. Ações record sem presentation: 'checkbox' permanecem em MoreVert; ações checkbox não são duplicadas ali.

Testar ações checkbox diretas no Lab

Testar ao vivo no Lab