fix: layout change

(cherry picked from commit 0ad65be961ff70f069be78979004820d827a96d0)
This commit is contained in:
Shariq Ansari 2025-06-20 17:20:12 +05:30 committed by Mergify
parent c8d165593a
commit e267445a80
6 changed files with 129 additions and 98 deletions

View File

@ -1,21 +1,30 @@
<template> <template>
<div> <div>
<!-- header --> <!-- header -->
<div class="flex items-center justify-between text-ink-gray-9"> <div class="flex justify-between">
<h2 class="flex gap-2 text-xl font-semibold leading-none h-5"> <div class="flex flex-col gap-1 w-9/12">
{{ __('Email Accounts') }} <h2 class="flex gap-2 text-xl font-semibold leading-none h-5">
</h2> {{ __('Email accounts') }}
<Button </h2>
:label="__('Add Account')" <p class="text-p-base text-ink-gray-6">
theme="gray" {{
variant="solid" __(
@click="emit('update:step', 'email-add')" 'Manage your email accounts to send and receive emails directly from CRM. You can add multiple accounts and set one as default for incoming and outgoing emails.',
> )
<template #prefix> }}
<LucidePlus class="w-4 h-4" /> </p>
</template> </div>
</Button> <div class="flex item-center space-x-2 w-3/12 justify-end">
<Button
:label="__('Add Account')"
theme="gray"
variant="solid"
icon-left="plus"
@click="emit('update:step', 'email-add')"
/>
</div>
</div> </div>
<!-- list accounts --> <!-- list accounts -->
<div <div
v-if="!emailAccounts.loading && Boolean(emailAccounts.data?.length)" v-if="!emailAccounts.loading && Boolean(emailAccounts.data?.length)"

View File

@ -1,14 +1,29 @@
<template> <template>
<div class="flex h-full flex-col gap-8 p-8 text-ink-gray-9"> <div class="flex h-full flex-col gap-6 p-8 text-ink-gray-9">
<h2 class="flex gap-2 text-xl font-semibold leading-none h-5"> <div class="flex justify-between">
{{ __('General') }} <div class="flex flex-col gap-1 w-9/12">
<Badge <h2 class="flex gap-2 text-xl font-semibold leading-none h-5">
v-if="settings.isDirty" {{ __('General') }}
:label="__('Not Saved')" <Badge
variant="subtle" v-if="settings.isDirty"
theme="orange" :label="__('Not Saved')"
/> variant="subtle"
</h2> theme="orange"
/>
</h2>
<p class="text-p-base text-ink-gray-6">
{{ __('Configure general settings for your CRM') }}
</p>
</div>
<div class="flex item-center space-x-2 w-3/12 justify-end">
<Button
variant="solid"
:label="__('Update')"
:disabled="!settings.isDirty"
@click="updateSettings"
/>
</div>
</div>
<div v-if="settings.doc" class="flex-1 flex flex-col gap-8 overflow-y-auto"> <div v-if="settings.doc" class="flex-1 flex flex-col gap-8 overflow-y-auto">
<div class="flex w-full"> <div class="flex w-full">
@ -16,7 +31,7 @@
type="text" type="text"
class="w-1/2" class="w-1/2"
v-model="settings.doc.brand_name" v-model="settings.doc.brand_name"
:label="__('Brand Name')" :label="__('Brand name')"
/> />
</div> </div>
@ -107,15 +122,7 @@
</div> </div>
</div> </div>
<div class="flex justify-between flex-row-reverse"> <ErrorMessage :message="settings.save.error" />
<Button
variant="solid"
:label="__('Update')"
:disabled="!settings.isDirty"
@click="updateSettings"
/>
<ErrorMessage :message="settings.save.error" />
</div>
</div> </div>
</template> </template>
<script setup> <script setup>

View File

@ -1,8 +1,28 @@
<template> <template>
<div class="flex h-full flex-col gap-8 p-8 text-ink-gray-9"> <div class="flex h-full flex-col gap-6 p-8 text-ink-gray-9">
<h2 class="flex gap-2 text-xl font-semibold leading-none h-5"> <div class="flex justify-between">
{{ __('Send Invites To') }} <div class="flex flex-col gap-1 w-9/12">
</h2> <h2 class="flex gap-2 text-xl font-semibold leading-none h-5">
{{ __('Send invites to') }}
</h2>
<p class="text-p-base text-ink-gray-6">
{{
__(
'Invite users to access CRM. Specify their roles to control access and permissions',
)
}}
</p>
</div>
<div class="flex item-center space-x-2 w-3/12 justify-end">
<Button
:label="__('Send Invites')"
variant="solid"
:disabled="!invitees.length"
@click="inviteByEmail.submit()"
:loading="inviteByEmail.loading"
/>
</div>
</div>
<div class="flex-1 flex flex-col gap-8 overflow-y-auto"> <div class="flex-1 flex flex-col gap-8 overflow-y-auto">
<div> <div>
<label class="block text-xs text-ink-gray-5 mb-1.5"> <label class="block text-xs text-ink-gray-5 mb-1.5">
@ -79,16 +99,7 @@
</div> </div>
</template> </template>
</div> </div>
<div class="flex justify-between items-center gap-2"> <ErrorMessage :message="error" />
<div><ErrorMessage v-if="error" :message="error" /></div>
<Button
:label="__('Send Invites')"
variant="solid"
:disabled="!invitees.length"
@click="inviteByEmail.submit()"
:loading="inviteByEmail.loading"
/>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>

View File

@ -1,16 +1,28 @@
<template> <template>
<div class="flex h-full flex-col gap-8"> <div class="flex h-full flex-col gap-6">
<h2 <div class="flex justify-between">
class="flex gap-2 text-xl font-semibold leading-none h-5 text-ink-gray-9" <div class="flex flex-col gap-1 w-9/12">
> <h2
<div>{{ title || __(doctype) }}</div> class="flex gap-2 text-xl font-semibold leading-none h-5 text-ink-gray-9"
<Badge >
v-if="data.isDirty" {{ title || __(doctype) }}
:label="__('Not Saved')" <Badge
variant="subtle" v-if="data.isDirty"
theme="orange" :label="__('Not Saved')"
/> variant="subtle"
</h2> theme="orange"
/>
</h2>
</div>
<div class="flex item-center space-x-2 w-3/12 justify-end">
<Button
:loading="data.save.loading"
:label="__('Update')"
variant="solid"
@click="data.save.submit()"
/>
</div>
</div>
<div v-if="!data.get.loading" class="flex-1 overflow-y-auto"> <div v-if="!data.get.loading" class="flex-1 overflow-y-auto">
<FieldLayout <FieldLayout
v-if="data?.doc && tabs" v-if="data?.doc && tabs"
@ -22,17 +34,7 @@
<div v-else class="flex flex-1 items-center justify-center"> <div v-else class="flex flex-1 items-center justify-center">
<Spinner class="size-8" /> <Spinner class="size-8" />
</div> </div>
<div class="flex justify-between gap-2"> <ErrorMessage :message="data.save.error" />
<div>
<ErrorMessage class="mt-2" :message="data.save.error" />
</div>
<Button
:loading="data.save.loading"
:label="__('Update')"
variant="solid"
@click="data.save.submit()"
/>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>

View File

@ -1,16 +1,31 @@
<template> <template>
<div class="flex h-full flex-col gap-8 p-8"> <div class="flex h-full flex-col gap-6 p-8">
<h2 <div class="flex justify-between">
class="flex gap-2 text-xl font-semibold leading-none h-5 text-ink-gray-9" <div class="flex flex-col gap-1 w-9/12">
> <h2
<div>{{ __('Telephony Settings') }}</div> class="flex gap-2 text-xl font-semibold leading-none h-5 text-ink-gray-9"
<Badge >
v-if="twilio.isDirty || exotel.isDirty || mediumChanged" {{ __('Telephony settings') }}
:label="__('Not Saved')" <Badge
variant="subtle" v-if="twilio.isDirty || exotel.isDirty || mediumChanged"
theme="orange" :label="__('Not Saved')"
/> variant="subtle"
</h2> theme="orange"
/>
</h2>
<p class="text-p-base text-ink-gray-6">
{{ __('Configure telephony settings for your CRM') }}
</p>
</div>
<div class="flex item-center space-x-2 w-3/12 justify-end">
<Button
:loading="twilio.save.loading || exotel.save.loading"
:label="__('Update')"
variant="solid"
@click="update"
/>
</div>
</div>
<div <div
v-if="!twilio.get.loading || !exotel.get.loading" v-if="!twilio.get.loading || !exotel.get.loading"
class="flex-1 flex flex-col gap-8 overflow-y-auto" class="flex-1 flex flex-col gap-8 overflow-y-auto"
@ -58,20 +73,7 @@
<div v-else class="flex flex-1 items-center justify-center"> <div v-else class="flex flex-1 items-center justify-center">
<Spinner class="size-8" /> <Spinner class="size-8" />
</div> </div>
<div class="flex justify-between gap-2"> <ErrorMessage :message="twilio.save.error || exotel.save.error || error" />
<div>
<ErrorMessage
class="mt-2"
:message="twilio.save.error || exotel.save.error || error"
/>
</div>
<Button
:loading="twilio.save.loading || exotel.save.loading"
:label="__('Update')"
variant="solid"
@click="update"
/>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>

View File

@ -9,7 +9,7 @@
<p class="text-p-base text-ink-gray-6"> <p class="text-p-base text-ink-gray-6">
{{ {{
__( __(
'Manage users who can access CRM. Assign roles to control their access. Add/Remove existing users or invite new ones.', 'Manage CRM users by adding or inviting them, and assign roles to control their access and permissions',
) )
}} }}
</p> </p>