feat: add customer & vendor ability.

This commit is contained in:
elforjani13
2021-11-23 21:26:34 +02:00
parent 1cba4b5f18
commit 6ec86d3cf7
7 changed files with 214 additions and 141 deletions

View File

@@ -13,6 +13,7 @@ import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import Icon from 'components/Icon';
import {
If,
Can,
FormattedMessage as T,
DashboardActionViewsList,
DashboardFilterButton,
@@ -29,7 +30,10 @@ import withVendors from './withVendors';
import withSettingsActions from '../../Settings/withSettingsActions';
import withSettings from '../../Settings/withSettings';
import {
Vendor_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { compose } from 'utils';
/**
@@ -90,13 +94,15 @@ function VendorActionsBar({
onChange={handleTabChange}
/>
<NavbarDivider />
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus'} />}
text={<T id={'new_vendor'} />}
onClick={onClickNewVendor}
/>
<NavbarDivider />
<Can I={VendorActionsBar.Create} a={AbilitySubject.Vendor}>
<Button
className={Classes.MINIMAL}
icon={<Icon icon={'plus'} />}
text={<T id={'new_vendor'} />}
onClick={onClickNewVendor}
/>
<NavbarDivider />
</Can>
<AdvancedFilterPopover
advancedFilterProps={{
conditions: vendorsFilterConditions,

View File

@@ -10,7 +10,11 @@ import {
} from '@blueprintjs/core';
import intl from 'react-intl-universal';
import { Icon, Money, If, AvaterCell } from 'components';
import { Can, Icon, Money, If, AvaterCell } from 'components';
import {
Vendor_Abilities,
AbilitySubject,
} from '../../../common/abilityOption';
import { safeCallback, firstLettersArgs } from 'utils';
/**
@@ -34,37 +38,45 @@ export function ActionsMenu({
text={intl.get('view_details')}
onClick={safeCallback(onViewDetails, original)}
/>
<MenuDivider />
<MenuItem
icon={<Icon icon="pen-18" />}
text={intl.get('edit_vendor')}
onClick={safeCallback(onEdit, original)}
/>
<MenuItem
icon={<Icon icon="duplicate-16" />}
text={intl.get('duplicate')}
onClick={safeCallback(onDuplicate, original)}
/>
<If condition={original.active}>
<Can I={Vendor_Abilities.Edit} a={AbilitySubject.Vendor}>
<MenuDivider />
<MenuItem
text={intl.get('inactivate_item')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivate, original)}
icon={<Icon icon="pen-18" />}
text={intl.get('edit_vendor')}
onClick={safeCallback(onEdit, original)}
/>
</If>
<If condition={!original.active}>
</Can>
<Can I={Vendor_Abilities.Create} a={AbilitySubject.Customer}>
<MenuItem
text={intl.get('activate_item')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivate, original)}
icon={<Icon icon="duplicate-16" />}
text={intl.get('duplicate')}
onClick={safeCallback(onDuplicate, original)}
/>
</If>
<MenuItem
icon={<Icon icon="trash-16" iconSize={16} />}
text={intl.get('delete_vendor')}
intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)}
/>
</Can>
<Can I={Vendor_Abilities.Edit} a={AbilitySubject.Vendor}>
<If condition={original.active}>
<MenuItem
text={intl.get('inactivate_item')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivate, original)}
/>
</If>
<If condition={!original.active}>
<MenuItem
text={intl.get('activate_item')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivate, original)}
/>
</If>
</Can>
<Can I={Vendor_Abilities.Delete} a={AbilitySubject.Vendor}>
<MenuItem
icon={<Icon icon="trash-16" iconSize={16} />}
text={intl.get('delete_vendor')}
intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)}
/>
</Can>
</Menu>
);
}