19 lines
532 B
TypeScript
19 lines
532 B
TypeScript
export interface TableAction {
|
|
key: string
|
|
label: string
|
|
disabled?: boolean
|
|
loading?: boolean
|
|
run: () => unknown
|
|
}
|
|
|
|
// Callers supply only permitted actions; disabled actions retain their place.
|
|
export function splitTableActions(actions: readonly TableAction[]) {
|
|
return actions.length > 3
|
|
? { visible: actions.slice(0, 2), overflow: actions.slice(2) }
|
|
: { visible: actions, overflow: [] }
|
|
}
|
|
|
|
export function runTableAction(action: TableAction) {
|
|
if (!action.disabled && !action.loading) return action.run()
|
|
}
|