Skip to content
Shamar

Custom actions

static resourceActions(actions: ActionBuilder) {
actions.row('escalate', 'Escalate').color('accent').icon('arrow-up')
actions.header('export', 'Export CSV')
return actions
}
static override async handleAction(name, ctx) {
if (name === 'escalate') {
// mutate record, flash message
return { redirect: ctx.backUrl }
}
}

Playground: Tickets — Escalate / Mark resolved (with bell notifications), Export CSV, and Test notification header action; API keys — revoke/reactivate.

Return { notification: true } (or { notification: { title, body } }) from handleAction to push to the signed-in user’s topbar bell.

Pages use headerActions() and handleAction() with the same action builder API.