From cd7573dcf1f4ad5283f565b0b1d09e78c4268a89 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Mon, 28 Oct 2024 13:37:39 +0100 Subject: [PATCH] hide create project buttons and modal depending on the permission --- .../Components/Common/TimeEntry/TimeEntryCreateModal.vue | 2 ++ resources/js/Components/TimeTracker.vue | 2 ++ resources/js/Pages/ReportingDetailed.vue | 3 +++ resources/js/Pages/Time.vue | 3 +++ .../js/packages/ui/src/TimeEntry/TimeEntryAggregateRow.vue | 3 +++ .../js/packages/ui/src/TimeEntry/TimeEntryGroupedTable.vue | 3 +++ .../packages/ui/src/TimeEntry/TimeEntryMassActionRow.vue | 2 ++ .../packages/ui/src/TimeEntry/TimeEntryMassUpdateModal.vue | 2 ++ resources/js/packages/ui/src/TimeEntry/TimeEntryRow.vue | 2 ++ .../js/packages/ui/src/TimeTracker/TimeTrackerControls.vue | 2 ++ .../ui/src/TimeTracker/TimeTrackerProjectTaskDropdown.vue | 7 +++++-- 11 files changed, 29 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/Common/TimeEntry/TimeEntryCreateModal.vue b/resources/js/Components/Common/TimeEntry/TimeEntryCreateModal.vue index 6b19b01b..dead653f 100644 --- a/resources/js/Components/Common/TimeEntry/TimeEntryCreateModal.vue +++ b/resources/js/Components/Common/TimeEntry/TimeEntryCreateModal.vue @@ -28,6 +28,7 @@ import type { import { useClientsStore } from '@/utils/useClients'; import TimePicker from '@/packages/ui/src/Input/TimePicker.vue'; import { getOrganizationCurrencyString } from '@/utils/money'; +import { canCreateProjects } from '@/utils/permissions'; const projectStore = useProjectsStore(); const { projects } = storeToRefs(projectStore); const taskStore = useTasksStore(); @@ -134,6 +135,7 @@ async function createTag(tag: string) { :clients :createProject :createClient + :canCreateProject="canCreateProjects()" :currency="getOrganizationCurrencyString()" class="mt-1" size="xlarge" diff --git a/resources/js/Components/TimeTracker.vue b/resources/js/Components/TimeTracker.vue index 9d79e357..50b58bdc 100644 --- a/resources/js/Components/TimeTracker.vue +++ b/resources/js/Components/TimeTracker.vue @@ -25,6 +25,7 @@ import TimeTrackerRunningInDifferentOrganizationOverlay from '@/packages/ui/src/ import { useClientsStore } from '@/utils/useClients'; import { getOrganizationCurrencyString } from '@/utils/money'; import { isAllowedToPerformPremiumAction } from '@/utils/billing'; +import { canCreateProjects } from '@/utils/permissions'; const page = usePage<{ auth: { @@ -113,6 +114,7 @@ const { tags } = storeToRefs(useTagsStore()); ( 'reporting-start-date', @@ -340,6 +341,7 @@ async function clearSelectionAndState() { (); const emit = defineEmits<{ selected: [TimeEntry[]]; @@ -121,6 +122,7 @@ function onSelectChange(event: Event) { :clients :createProject :createClient + :canCreateProject :projects="projects" :tasks="tasks" :showBadgeBorder="false" @@ -177,6 +179,7 @@ function onSelectChange(event: Event) { Promise; currency: string; enableEstimatedTime: boolean; + canCreateProject: boolean; }>(); const emit = defineEmits<{ @@ -156,6 +157,7 @@ watch(removeAllTags, () => { :createProject :createClient :currency="currency" + :canCreateProject class="mt-1" empty-placeholder="Select project..." allow-reset diff --git a/resources/js/packages/ui/src/TimeEntry/TimeEntryRow.vue b/resources/js/packages/ui/src/TimeEntry/TimeEntryRow.vue index 92ac5cb4..c79a7680 100644 --- a/resources/js/packages/ui/src/TimeEntry/TimeEntryRow.vue +++ b/resources/js/packages/ui/src/TimeEntry/TimeEntryRow.vue @@ -38,6 +38,7 @@ const props = defineProps<{ showMember?: boolean; showDate?: boolean; selected?: boolean; + canCreateProject: boolean; enableEstimatedTime: boolean; }>(); @@ -111,6 +112,7 @@ function onSelectChange(event: Event) { (); const emit = defineEmits<{ @@ -110,6 +111,7 @@ function updateTimeEntryDescription() { class="flex items-center w-[130px] @2xl:w-auto shrink min-w-0"> (), { showBadgeBorder: true, @@ -532,7 +533,7 @@ const showCreateProject = ref(false); -
+