From a6528102fe924260ae49c15af843d405ce3efe12 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Sat, 28 Sep 2024 22:56:33 +0200 Subject: [PATCH] add estimated project and tasks frontend --- .../Common/Member/MemberInviteModal.vue | 17 ++--- .../Common/Project/ProjectEditModal.vue | 27 +++++-- .../Common/Project/ProjectTable.vue | 10 ++- .../Common/Project/ProjectTableHeading.vue | 6 ++ .../Common/Project/ProjectTableRow.vue | 26 ++++++- .../Common/Task/TaskCreateModal.vue | 8 +++ .../Components/Common/Task/TaskEditModal.vue | 9 ++- .../js/Components/Common/Task/TaskTable.vue | 9 ++- .../Common/Task/TaskTableHeading.vue | 6 ++ .../Components/Common/Task/TaskTableRow.vue | 25 ++++++- .../js/Components/Common/UpgradeBadge.vue | 13 ++++ .../Components/Dashboard/ThisWeekOverview.vue | 2 +- resources/js/Layouts/AppLayout.vue | 2 +- .../packages/api/src/openapi.json.client.ts | 13 +++- .../packages/ui/src/EstimatedTimeProgress.vue | 35 +++++++++ .../packages/ui/src/EstimatedTimeSection.vue | 23 ++++++ .../packages/ui/src/Input/DurationInput.vue | 71 +++++++++++++++++++ .../ui/src/Project/ProjectCreateModal.vue | 26 +++++-- .../Project/ProjectEditBillableSection.vue | 9 ++- .../TimeTrackerProjectTaskDropdown.vue | 2 + resources/js/utils/billing.ts | 9 +++ 21 files changed, 310 insertions(+), 38 deletions(-) create mode 100644 resources/js/Components/Common/UpgradeBadge.vue create mode 100644 resources/js/packages/ui/src/EstimatedTimeProgress.vue create mode 100644 resources/js/packages/ui/src/EstimatedTimeSection.vue create mode 100644 resources/js/packages/ui/src/Input/DurationInput.vue diff --git a/resources/js/Components/Common/Member/MemberInviteModal.vue b/resources/js/Components/Common/Member/MemberInviteModal.vue index b44c865c..40e0f91a 100644 --- a/resources/js/Components/Common/Member/MemberInviteModal.vue +++ b/resources/js/Components/Common/Member/MemberInviteModal.vue @@ -2,7 +2,7 @@ import TextInput from '@/packages/ui/src/Input/TextInput.vue'; import SecondaryButton from '@/packages/ui/src/Buttons/SecondaryButton.vue'; import DialogModal from '@/packages/ui/src/DialogModal.vue'; -import { computed, ref } from 'vue'; +import { ref } from 'vue'; import PrimaryButton from '@/packages/ui/src/Buttons/PrimaryButton.vue'; import { useFocus } from '@vueuse/core'; import InputLabel from '@/packages/ui/src/Input/InputLabel.vue'; @@ -12,9 +12,8 @@ import { Link, useForm } from '@inertiajs/vue3'; import { getCurrentOrganizationId } from '@/utils/useUser'; import { filterRoles } from '@/utils/roles'; import { - hasActiveSubscription, + isAllowedToPerformPremiumAction, isBillingActivated, - isInTrial, } from '@/utils/billing'; import { CreditCardIcon, UserGroupIcon } from '@heroicons/vue/20/solid'; import { canManageBilling, canUpdateOrganization } from '@/utils/permissions'; @@ -84,14 +83,6 @@ async function submit() { const clientNameInput = ref(null); useFocus(clientNameInput, { initialValue: true }); - -const inviteMembersIsAllowed = computed(() => { - return ( - !isBillingActivated() || - (isBillingActivated() && hasActiveSubscription()) || - (isBillingActivated() && isInTrial()) - ); -});