feat: Context menu on data-table.

This commit is contained in:
Ahmed Bouhuolia
2020-06-21 19:23:12 +02:00
parent 15bcd55979
commit 53cc8ba057
9 changed files with 337 additions and 223 deletions

View File

@@ -98,29 +98,34 @@ function ExpenseDataTable({
const actionMenuList = useCallback(
(expense) => (
<Menu>
<MenuItem text={<T id={'view_details'} />} />
<MenuItem
text={formatMessage({ id: 'view_details' })} />
<MenuDivider />
<If condition={expenses.published}>
<MenuItem
text={<T id={'publish_expense'} />}
text={formatMessage({ id: 'publish_expense' })}
onClick={handlePublishExpense(expense)}
/>
</If>
<MenuItem
text={<T id={'edit_expense'} />}
text={formatMessage({ id: 'edit_expense' })}
onClick={handleEditExpense(expense)}
/>
<MenuItem
text={<T id={'delete_expense'} />}
text={formatMessage({ id: 'delete_expense' })}
intent={Intent.DANGER}
onClick={handleDeleteExpense(expense)}
/>
</Menu>
),
[handleEditExpense, handleDeleteExpense, handlePublishExpense],
[handleEditExpense, handleDeleteExpense, handlePublishExpense, formatMessage],
);
const onRowContextMenu = useCallback((cell) => {
return actionMenuList(cell.row.original);
}, [actionMenuList]);
const expenseAccountAccessor = (expense) => {
if (expense.categories.length === 1) {
return expense.categories[0].expense_account.name;
@@ -253,6 +258,7 @@ function ExpenseDataTable({
sticky={true}
loading={expensesLoading && !initialMount}
onSelectedRowsChange={handleSelectedRowsChange}
rowContextMenu={onRowContextMenu}
/>
</LoadingIndicator>
</div>