feat: item & inventory.

This commit is contained in:
elforjani13
2021-11-23 16:51:40 +02:00
parent afee2e90e0
commit e5d02043ad
11 changed files with 177 additions and 106 deletions

View File

@@ -14,6 +14,7 @@ import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import Icon from 'components/Icon';
import {
If,
Can,
DashboardActionViewsList,
AdvancedFilterPopover,
DashboardFilterButton,
@@ -30,8 +31,7 @@ import withSettings from '../Settings/withSettings';
import { compose } from 'utils';
import withSettingsActions from '../Settings/withSettingsActions';
import { Can, AbilityContext } from '../../components/Abilities';
import { ItemAbility, AbilitySubject } from '../../common/abilityOption';
/**
* Items actions bar.
@@ -60,8 +60,6 @@ function ItemsActionsBar({
// Items refresh action.
const { refresh } = useRefreshItems();
const { ability } = React.useContext(AbilityContext);
// History context.
const history = useHistory();
@@ -106,14 +104,14 @@ function ItemsActionsBar({
/>
<NavbarDivider />
{/* <Can I="create" a="Item" ability={ability}> */}
<Can I={ItemAbility.Create} a={AbilitySubject.Item}>
<Button
className={Classes.MINIMAL}
icon={<Icon icon="plus" />}
text={<T id={'new_item'} />}
onClick={onClickNewItem}
/>
{/* </Can> */}
</Can>
<AdvancedFilterPopover
advancedFilterProps={{
conditions: itemsFilterRoles,
@@ -155,11 +153,13 @@ function ItemsActionsBar({
onChange={handleTableRowSizeChange}
/>
<NavbarDivider />
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={itemsInactiveMode}
onChange={handleInactiveSwitchChange}
/>
<Can I={ItemAbility.View} a={AbilitySubject.Item}>
<Switch
labelElement={<T id={'inactive'} />}
defaultChecked={itemsInactiveMode}
onChange={handleInactiveSwitchChange}
/>
</Can>
</NavbarGroup>
<NavbarGroup align={Alignment.RIGHT}>

View File

@@ -12,8 +12,13 @@ import {
import intl from 'react-intl-universal';
import { isNumber } from 'lodash';
import { FormattedMessage as T, Icon, Money, If } from 'components';
import { FormattedMessage as T, Icon, Money, If, Can } from 'components';
import { isBlank, safeCallback } from 'utils';
import {
ItemAbility,
InventoryAdjustment,
AbilitySubject,
} from '../../common/abilityOption';
/**
* Publish accessor
@@ -91,43 +96,58 @@ export function ItemsActionMenuList({
onClick={safeCallback(onViewDetails, original)}
/>
<MenuDivider />
<MenuItem
icon={<Icon icon="pen-18" />}
text={intl.get('edit_item')}
onClick={safeCallback(onEditItem, original)}
/>
<MenuItem
icon={<Icon icon="duplicate-16" />}
text={intl.get('duplicate')}
onClick={safeCallback(onDuplicate, original)}
/>
<If condition={original.active}>
<Can I={ItemAbility.Edit} a={AbilitySubject.Item}>
<MenuItem
text={intl.get('inactivate_item')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivateItem, original)}
icon={<Icon icon="pen-18" />}
text={intl.get('edit_item')}
onClick={safeCallback(onEditItem, original)}
/>
</Can>
<Can I={ItemAbility.Create} a={AbilitySubject.Item}>
<MenuItem
icon={<Icon icon="duplicate-16" />}
text={intl.get('duplicate')}
onClick={safeCallback(onDuplicate, original)}
/>
</Can>
<If condition={original.active}>
<Can I={ItemAbility.View} a={AbilitySubject.Item}>
<MenuItem
text={intl.get('inactivate_item')}
icon={<Icon icon="pause-16" iconSize={16} />}
onClick={safeCallback(onInactivateItem, original)}
/>
</Can>
</If>
<If condition={!original.active}>
<MenuItem
text={intl.get('activate_item')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivateItem, original)}
/>
<Can I={ItemAbility.View} a={AbilitySubject.Item}>
<MenuItem
text={intl.get('activate_item')}
icon={<Icon icon="play-16" iconSize={16} />}
onClick={safeCallback(onActivateItem, original)}
/>
</Can>
</If>
<If condition={original.type === 'inventory'}>
<MenuItem
text={intl.get('make_adjustment')}
icon={<Icon icon={'swap-vert'} iconSize={16} />}
onClick={safeCallback(onMakeAdjustment, original)}
/>
<Can
I={InventoryAdjustment.Create}
a={AbilitySubject.InventoryAdjustment}
>
<MenuItem
text={intl.get('make_adjustment')}
icon={<Icon icon={'swap-vert'} iconSize={16} />}
onClick={safeCallback(onMakeAdjustment, original)}
/>
</Can>
</If>
<MenuItem
text={intl.get('delete_item')}
icon={<Icon icon="trash-16" iconSize={16} />}
onClick={safeCallback(onDeleteItem, original)}
intent={Intent.DANGER}
/>
<Can I={ItemAbility.Delete} a={AbilitySubject.Item}>
<MenuItem
text={intl.get('delete_item')}
icon={<Icon icon="trash-16" iconSize={16} />}
onClick={safeCallback(onDeleteItem, original)}
intent={Intent.DANGER}
/>
</Can>
</Menu>
);
}