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}. Compresentation: 'checkbox', ela aparece diretamente na linha. scope: 'selection'aparece na barra de ferramentas somente quandoselectableestá 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.