From d77fcb7c89b16ee5aa445626828c43f56d60b55e Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Tue, 30 Aug 2022 19:18:19 +0200 Subject: [PATCH] feat: add project ability. --- src/constants/abilityOption.tsx | 12 ++- src/constants/features.tsx | 1 + src/constants/sidebarMenu.tsx | 9 +++ .../ProjectsLanding/ProjectsActionsBar.tsx | 16 ++-- .../ProjectsLanding/ProjectsEmptyStatus.tsx | 25 ++++--- .../containers/ProjectsLanding/components.tsx | 73 +++++++++++-------- 6 files changed, 86 insertions(+), 50 deletions(-) diff --git a/src/constants/abilityOption.tsx b/src/constants/abilityOption.tsx index 7f586f047..586e5bd36 100644 --- a/src/constants/abilityOption.tsx +++ b/src/constants/abilityOption.tsx @@ -19,6 +19,7 @@ export const AbilitySubject = { SubscriptionBilling: 'SubscriptionBilling', CreditNote: 'CreditNote', VendorCredit: 'VendorCredit', + Project:'Project' }; export const ItemAction = { @@ -73,7 +74,7 @@ export const CreditNoteAction = { Create: 'Create', Edit: 'Edit', Delete: 'Delete', - Refund: 'Refund' + Refund: 'Refund', }; export const VendorCreditAction = { @@ -81,7 +82,7 @@ export const VendorCreditAction = { Create: 'Create', Edit: 'Edit', Delete: 'Delete', - Refund: 'Refund' + Refund: 'Refund', }; export const BillAction = { View: 'View', @@ -141,6 +142,13 @@ export const CashflowAction = { Delete: 'Delete', }; +export const ProjectAction = { + View: 'View', + Create: 'Create', + Edit: 'Edit', + Delete: 'Delete', +}; + export const ReportsAction = { ALL: 'all', READ_BALANCE_SHEET: 'read-balance-sheet', diff --git a/src/constants/features.tsx b/src/constants/features.tsx index a042429eb..5392025c2 100644 --- a/src/constants/features.tsx +++ b/src/constants/features.tsx @@ -4,4 +4,5 @@ export const Features = { Warehouses: 'warehouses', Branches: 'branches', ManualJournal: 'manualJournal', + Projects:'Projects' } \ No newline at end of file diff --git a/src/constants/sidebarMenu.tsx b/src/constants/sidebarMenu.tsx index 60a618110..686e4d3f9 100644 --- a/src/constants/sidebarMenu.tsx +++ b/src/constants/sidebarMenu.tsx @@ -23,6 +23,7 @@ import { ManualJournalAction, ExpenseAction, CashflowAction, + ProjectAction, PreferencesAbility, SubscriptionBillingAbility, } from '@/constants/abilityOption'; @@ -554,6 +555,10 @@ export const SidebarMenu = [ text: 'Projects', href: '/projects', type: ISidebarMenuItemType.Link, + permission: { + subject: AbilitySubject.Project, + ability: ProjectAction.View, + }, }, ], }, @@ -565,6 +570,10 @@ export const SidebarMenu = [ text: , type: ISidebarMenuItemType.Dialog, dialogName: 'project-form', + permission: { + subject: AbilitySubject.Project, + ability: ProjectAction.Create, + }, }, { text: , diff --git a/src/containers/Projects/containers/ProjectsLanding/ProjectsActionsBar.tsx b/src/containers/Projects/containers/ProjectsLanding/ProjectsActionsBar.tsx index c768cdaa2..2e6ae493c 100644 --- a/src/containers/Projects/containers/ProjectsLanding/ProjectsActionsBar.tsx +++ b/src/containers/Projects/containers/ProjectsLanding/ProjectsActionsBar.tsx @@ -8,6 +8,7 @@ import { } from '@blueprintjs/core'; import { Icon, + Can, AdvancedFilterPopover, DashboardActionViewsList, DashboardFilterButton, @@ -15,6 +16,7 @@ import { FormattedMessage as T, DashboardActionsBar, } from '@/components'; +import { ProjectAction, AbilitySubject } from '@/constants/abilityOption'; import withProjects from './withProjects'; import withProjectsActions from './withProjectsActions'; @@ -75,12 +77,14 @@ function ProjectsActionsBar({ onChange={handleTabChange} /> - - + + + + } /> diff --git a/src/containers/Projects/containers/ProjectsLanding/components.tsx b/src/containers/Projects/containers/ProjectsLanding/components.tsx index 0eb8e1929..1d0b49ccc 100644 --- a/src/containers/Projects/containers/ProjectsLanding/components.tsx +++ b/src/containers/Projects/containers/ProjectsLanding/components.tsx @@ -13,10 +13,12 @@ import { import { Icon, FormatDate, + Can, Choose, If, FormattedMessage as T, } from '@/components'; +import { ProjectAction, AbilitySubject } from '@/constants/abilityOption'; import { safeCallback, firstLettersArgs, calculateStatus } from '@/utils'; /** @@ -81,37 +83,46 @@ export const ActionsMenu = ({ text={intl.get('view_details')} onClick={safeCallback(onViewDetails, original)} /> - - } - text={intl.get('projects.action.edit_project')} - onClick={safeCallback(onEdit, original)} - /> - } - text={intl.get('projects.action.new_task')} - onClick={safeCallback(onNewTask, original)} - /> - - }> - - - - - - - - - - } - intent={Intent.DANGER} - onClick={safeCallback(onDelete, original)} - /> + + + } + text={intl.get('projects.action.edit_project')} + onClick={safeCallback(onEdit, original)} + /> + + + } + text={intl.get('projects.action.new_task')} + onClick={safeCallback(onNewTask, original)} + /> + + + }> + + + + + + + + + + + } + intent={Intent.DANGER} + onClick={safeCallback(onDelete, original)} + /> + );