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); -
+