From 522f7d2bd2fe4f9fb461a8d6cb7861914b363393 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Tue, 4 Nov 2025 16:08:24 +0100 Subject: [PATCH] move currency and cancreateproject permission to props to decouple TimeEntryCreateModal from web --- resources/js/Components/TimeTracker.vue | 2 ++ resources/js/Pages/Calendar.vue | 4 ++++ resources/js/packages/ui/package-lock.json | 4 ++-- resources/js/packages/ui/package.json | 2 +- .../js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue | 4 ++++ .../js/packages/ui/src/TimeEntry/TimeEntryCreateModal.vue | 8 ++++---- 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/resources/js/Components/TimeTracker.vue b/resources/js/Components/TimeTracker.vue index 8acd7573..23cc15d8 100644 --- a/resources/js/Components/TimeTracker.vue +++ b/resources/js/Components/TimeTracker.vue @@ -168,6 +168,8 @@ const { tags } = storeToRefs(useTagsStore()); :create-client="createClient" :create-tag="createTag" :create-time-entry="createTimeEntry" + :currency="getOrganizationCurrencyString()" + :can-create-project="canCreateProjects()" :projects :tasks :tags diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 4944b49d..3df088cc 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -21,6 +21,8 @@ import { useClientsStore } from '@/utils/useClients'; import { storeToRefs } from 'pinia'; import { useTasksStore } from '@/utils/useTasks'; import { getUserTimezone } from '@/packages/ui/src/utils/settings'; +import { getOrganizationCurrencyString } from '@/utils/money'; +import { canCreateProjects } from '@/utils/permissions'; const calendarStart = ref(undefined); const calendarEnd = ref(undefined); @@ -129,6 +131,8 @@ function onRefresh() { :tags="tags" :loading="timeEntriesLoading" :enable-estimated-time="isAllowedToPerformPremiumAction()" + :currency="getOrganizationCurrencyString()" + :can-create-project="canCreateProjects()" :create-time-entry="createTimeEntry" :update-time-entry="updateTimeEntry" :delete-time-entry="deleteTimeEntry" diff --git a/resources/js/packages/ui/package-lock.json b/resources/js/packages/ui/package-lock.json index aa7c7258..c5f686df 100644 --- a/resources/js/packages/ui/package-lock.json +++ b/resources/js/packages/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@solidtime/ui", - "version": "0.0.11", + "version": "0.0.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@solidtime/ui", - "version": "0.0.11", + "version": "0.0.12", "license": "AGPL-3.0", "devDependencies": { "@types/node": "^22.4.1", diff --git a/resources/js/packages/ui/package.json b/resources/js/packages/ui/package.json index 245814af..a23d3096 100644 --- a/resources/js/packages/ui/package.json +++ b/resources/js/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@solidtime/ui", - "version": "0.0.11", + "version": "0.0.12", "description": "Package containing the solidtime ui components", "main": "./dist/solidtime-ui-lib.umd.cjs", "module": "./dist/solidtime-ui-lib.js", diff --git a/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue b/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue index 422b6490..d1c158dd 100644 --- a/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue +++ b/resources/js/packages/ui/src/FullCalendar/TimeEntryCalendar.vue @@ -41,6 +41,8 @@ const props = defineProps<{ // Permissions / feature flags enableEstimatedTime: boolean; + currency: string; + canCreateProject: boolean; createTimeEntry: ( entry: Omit @@ -295,6 +297,8 @@ watch(showEditTimeEntryModal, (value) => { :create-client="createClient" :create-project="createProject" :create-tag="createTag" + :currency="currency" + :can-create-project="canCreateProject" :tags="tags as any" :projects="projects" :tasks="tasks" diff --git a/resources/js/packages/ui/src/TimeEntry/TimeEntryCreateModal.vue b/resources/js/packages/ui/src/TimeEntry/TimeEntryCreateModal.vue index 708a64c2..54bfdd84 100644 --- a/resources/js/packages/ui/src/TimeEntry/TimeEntryCreateModal.vue +++ b/resources/js/packages/ui/src/TimeEntry/TimeEntryCreateModal.vue @@ -15,8 +15,6 @@ import type { Client, CreateTimeEntryBody, } from '@/packages/api/src'; -import { getOrganizationCurrencyString } from '@/utils/money'; -import { canCreateProjects } from '@/utils/permissions'; import TagDropdown from '@/packages/ui/src/Tag/TagDropdown.vue'; import { Badge } from '@/packages/ui/src'; import BillableIcon from '@/packages/ui/src/Icons/BillableIcon.vue'; @@ -43,6 +41,8 @@ const props = defineProps<{ clients: Client[]; start?: string; end?: string; + currency: string; + canCreateProject: boolean; }>(); const description = ref(null); @@ -167,8 +167,8 @@ type BillableOption = { :clients :create-project :create-client - :can-create-project="canCreateProjects()" - :currency="getOrganizationCurrencyString()" + :can-create-project + :currency size="xlarge" class="bg-input-background" :projects="projects"