feat: add account ability.

This commit is contained in:
elforjani13
2021-11-23 21:42:16 +02:00
parent 6ec86d3cf7
commit 7393d68b7a
3 changed files with 85 additions and 62 deletions

View File

@@ -15,6 +15,7 @@ import { FormattedMessage as T } from 'components';
import { import {
AdvancedFilterPopover, AdvancedFilterPopover,
If, If,
Can,
DashboardActionViewsList, DashboardActionViewsList,
DashboardFilterButton, DashboardFilterButton,
DashboardRowsHeightButton, DashboardRowsHeightButton,
@@ -30,6 +31,8 @@ import withAlertActions from 'containers/Alert/withAlertActions';
import withAccountsTableActions from './withAccountsTableActions'; import withAccountsTableActions from './withAccountsTableActions';
import withSettings from '../Settings/withSettings'; import withSettings from '../Settings/withSettings';
import withSettingsActions from '../Settings/withSettingsActions'; import withSettingsActions from '../Settings/withSettingsActions';
import { Account_Abilities, AbilitySubject } from '../../common/abilityOption';
import { compose } from 'utils'; import { compose } from 'utils';
/** /**
@@ -116,13 +119,14 @@ function AccountsActionsBar({
onChange={handleTabChange} onChange={handleTabChange}
/> />
<NavbarDivider /> <NavbarDivider />
<Can I={Account_Abilities.Create} a={AbilitySubject.Account}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon="plus" />} icon={<Icon icon="plus" />}
text={<T id={'new_account'} />} text={<T id={'new_account'} />}
onClick={onClickNewAccount} onClick={onClickNewAccount}
/> />
</Can>
<AdvancedFilterPopover <AdvancedFilterPopover
advancedFilterProps={{ advancedFilterProps={{
conditions: accountsFilterConditions, conditions: accountsFilterConditions,
@@ -183,11 +187,13 @@ function AccountsActionsBar({
onChange={handleTableRowSizeChange} onChange={handleTableRowSizeChange}
/> />
<NavbarDivider /> <NavbarDivider />
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<Switch <Switch
labelElement={<T id={'inactive'} />} labelElement={<T id={'inactive'} />}
defaultChecked={accountsInactiveMode} defaultChecked={accountsInactiveMode}
onChange={handleInactiveSwitchChange} onChange={handleInactiveSwitchChange}
/> />
</Can>
</NavbarGroup> </NavbarGroup>
<NavbarGroup align={Alignment.RIGHT}> <NavbarGroup align={Alignment.RIGHT}>
<Button <Button

View File

@@ -8,9 +8,10 @@ import {
MenuDivider, MenuDivider,
Intent, Intent,
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import { Icon, Money, If } from 'components'; import { Can, Icon, Money, If } from 'components';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { safeCallback } from 'utils'; import { safeCallback } from 'utils';
import { AbilitySubject, Account_Abilities } from '../../common/abilityOption';
/** /**
* Accounts table actions menu. * Accounts table actions menu.
@@ -34,18 +35,22 @@ export function ActionsMenu({
text={intl.get('view_details')} text={intl.get('view_details')}
onClick={safeCallback(onViewDetails, original)} onClick={safeCallback(onViewDetails, original)}
/> />
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<MenuDivider /> <MenuDivider />
<MenuItem <MenuItem
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
text={intl.get('edit_account')} text={intl.get('edit_account')}
onClick={safeCallback(onEdit, original)} onClick={safeCallback(onEdit, original)}
/> />
<MenuItem <MenuItem
icon={<Icon icon="plus" />} icon={<Icon icon="plus" />}
text={intl.get('new_child_account')} text={intl.get('new_child_account')}
onClick={safeCallback(onNewChild, original)} onClick={safeCallback(onNewChild, original)}
/> />
<MenuDivider /> <MenuDivider />
</Can>
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<If condition={original.active}> <If condition={original.active}>
<MenuItem <MenuItem
text={intl.get('inactivate_account')} text={intl.get('inactivate_account')}
@@ -60,12 +65,15 @@ export function ActionsMenu({
onClick={safeCallback(onActivate, original)} onClick={safeCallback(onActivate, original)}
/> />
</If> </If>
</Can>
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<MenuItem <MenuItem
text={intl.get('delete_account')} text={intl.get('delete_account')}
icon={<Icon icon="trash-16" iconSize={16} />} icon={<Icon icon="trash-16" iconSize={16} />}
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)} onClick={safeCallback(onDelete, original)}
/> />
</Can>
</Menu> </Menu>
); );
} }

View File

@@ -7,13 +7,17 @@ import {
Intent, Intent,
NavbarDivider, NavbarDivider,
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import { FormattedMessage as T } from 'components'; import { Can, FormattedMessage as T } from 'components';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import withDialogActions from 'containers/Dialog/withDialogActions'; import withDialogActions from 'containers/Dialog/withDialogActions';
import withAlertsActions from 'containers/Alert/withAlertActions'; import withAlertsActions from 'containers/Alert/withAlertActions';
import { safeCallback } from 'utils'; import { safeCallback } from 'utils';
import {
Account_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { compose } from 'utils'; import { compose } from 'utils';
import { useAccountDrawerContext } from './AccountDrawerProvider'; import { useAccountDrawerContext } from './AccountDrawerProvider';
@@ -53,12 +57,14 @@ function AccountDrawerActionBar({
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<Can I={Account_Abilities.Edit} a={AbilitySubject.Account}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
text={<T id={'edit_account'} />} text={<T id={'edit_account'} />}
onClick={safeCallback(onEditAccount)} onClick={safeCallback(onEditAccount)}
/> />
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon="plus" />} icon={<Icon icon="plus" />}
@@ -66,6 +72,8 @@ function AccountDrawerActionBar({
onClick={safeCallback(onNewChildAccount)} onClick={safeCallback(onNewChildAccount)}
/> />
<NavbarDivider /> <NavbarDivider />
</Can>
<Can I={Account_Abilities.Delete} a={AbilitySubject.Account}>
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
icon={<Icon icon={'trash-16'} iconSize={16} />} icon={<Icon icon={'trash-16'} iconSize={16} />}
@@ -73,6 +81,7 @@ function AccountDrawerActionBar({
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDeleteAccount)} onClick={safeCallback(onDeleteAccount)}
/> />
</Can>
</NavbarGroup> </NavbarGroup>
</DashboardActionsBar> </DashboardActionsBar>
); );