accept string and date in toLocalDate() util

This commit is contained in:
2025-11-10 16:09:53 +01:00
parent b03ae2b3de
commit 67a0ef2180
7 changed files with 220 additions and 15 deletions
+14 -5
View File
@@ -18,6 +18,7 @@ import Fuse from 'fuse.js';
import { getInitials } from '@/composables/useInitials';
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '@/components/ui/card'
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
import { TooltipArrow } from 'reka-ui'
import CustomerDialog from '@/components/CustomerDialog.vue'
import { toast } from 'vue-sonner'
import { SocialIcon } from '@/components/ui/social-icon'
@@ -39,7 +40,7 @@ const detailDialogOpen = ref(false)
onMounted(async () => {
try {
const response = await api.get('/customers');
customersData.value = (response.data as Customer[]).toSorted((a, b) => a.companyName.localeCompare(b.companyName));;
customersData.value = (response.data as Customer[]).toSorted((a, b) => (a.companyName ?? '').localeCompare(b.companyName ?? ''));
searchField.value = document.getElementById('search')
searchField.value.focus()
@@ -169,8 +170,8 @@ const call = (number: string, event: Event) => {
<div class="columns-xs gap-6">
<Card v-for="customer in filteredCustomers" :key="customer.id"
class="relative mb-6 break-inside-avoid hover:bg-accent active:shadow-none overflow-clip"
@click="showDetail(customer)">
class="relative mb-6 break-inside-avoid hover:border-slate-300 dark:hover:border-neutral-600 overflow-clip"
@click="" @dblclick="showDetail(customer)">
<CardHeader v-if="customer.logo" class="z-0">
<img :src="'storage/uploads/' + customer.logo" alt="Logo {{ customer.companyName }}"
@@ -234,7 +235,7 @@ const call = (number: string, event: Event) => {
<Tooltip v-for="contact in customer.contacts">
<TooltipTrigger>
<Avatar class="-mr-2 size-14 shadow">
<Avatar class="size-14 shadow -mr-2">
<AvatarImage v-if="contact.avatar" :src="'/storage/uploads/' + contact.avatar"
loading="lazy" />
<AvatarFallback
@@ -243,7 +244,7 @@ const call = (number: string, event: Event) => {
</AvatarFallback>
</Avatar>
</TooltipTrigger>
<TooltipContent class="p-4">
<TooltipContent class="p-4 -mr-2" :side-offset="-1">
<p class="font-bold">
<span v-if="contact.academicTitle">{{ contact.academicTitle }}</span>
<span>{{ contact.firstName + ' ' + contact.lastName }}</span>
@@ -272,6 +273,8 @@ const call = (number: string, event: Event) => {
<SocialIcon :variant="account.platform" />
</Button>
</ButtonGroup>
<TooltipArrow :height="8" :width="16"
class="fill-popover drop-shadow-(--shadow-arrow) stroke-[0.5px] stroke-border -mt-[1px]" />
</TooltipContent>
</Tooltip>
@@ -305,4 +308,10 @@ const call = (number: string, event: Event) => {
[data-slot=dialog-overlay] {
backdrop-filter: blur(var(--blur-sm));
}
/* hover:not(:has(*:hover)) */
[data-slot="card"]:hover:has(a:hover),
[data-slot="card"]:hover:has(button:hover) {
background-color: var(--card);
}
</style>