Refactor AnnuncioActions and Interactions components for improved layout and structure
This commit is contained in:
parent
b4bb786ebc
commit
fa46fd2925
2 changed files with 68 additions and 53 deletions
|
|
@ -5,7 +5,6 @@ import {
|
||||||
ChevronsUpDown,
|
ChevronsUpDown,
|
||||||
CircleCheck,
|
CircleCheck,
|
||||||
ClipboardPaste,
|
ClipboardPaste,
|
||||||
Cog,
|
|
||||||
ExternalLink,
|
ExternalLink,
|
||||||
FolderKanban,
|
FolderKanban,
|
||||||
Pen,
|
Pen,
|
||||||
|
|
@ -90,7 +89,7 @@ export const AnnuncioActions = () => {
|
||||||
|
|
||||||
if ((!isAdmin && data.open_contatti_at == null) || isAdmin) {
|
if ((!isAdmin && data.open_contatti_at == null) || isAdmin) {
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full flex-wrap justify-start gap-3 sm:justify-end">
|
<div className="flex w-full max-w-fit flex-wrap justify-start gap-3 sm:justify-end">
|
||||||
{isAdmin && data.user_confirmed_at != null && <AdminLavoraConferma />}
|
{isAdmin && data.user_confirmed_at != null && <AdminLavoraConferma />}
|
||||||
{isAdmin && data.accettato_conferma_at != null && (
|
{isAdmin && data.accettato_conferma_at != null && (
|
||||||
<>
|
<>
|
||||||
|
|
@ -102,13 +101,14 @@ export const AnnuncioActions = () => {
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
<Button className="flex items-center gap-2">
|
<Button className="flex items-center gap-2">
|
||||||
<FolderKanban /> Apri in gestionale
|
<FolderKanban className="size-5" /> Gestionale
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{isAdmin && (
|
{isAdmin && (
|
||||||
|
<>
|
||||||
<Link
|
<Link
|
||||||
href={`/area-riservata/admin/edit-annuncio/${annuncioId}`}
|
href={`/area-riservata/admin/edit-annuncio/${annuncioId}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
@ -119,10 +119,9 @@ export const AnnuncioActions = () => {
|
||||||
className="flex w-full items-center gap-2"
|
className="flex w-full items-center gap-2"
|
||||||
size="sm"
|
size="sm"
|
||||||
>
|
>
|
||||||
<Cog className="size-6" /> Modifica
|
<Wrench className="size-6" />
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
|
||||||
|
|
||||||
<Confirm
|
<Confirm
|
||||||
title="Elimina annuncio"
|
title="Elimina annuncio"
|
||||||
|
|
@ -136,14 +135,15 @@ export const AnnuncioActions = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
aria-label="Delete Annuncio"
|
aria-label="Delete Annuncio"
|
||||||
variant="secondary"
|
variant="destructive"
|
||||||
className="flex items-center gap-2"
|
className="flex items-center gap-2"
|
||||||
size="sm"
|
size="sm"
|
||||||
>
|
>
|
||||||
<Trash2 className="size-6" />
|
<Trash2 className="size-6" />
|
||||||
Elimina
|
|
||||||
</Button>
|
</Button>
|
||||||
</Confirm>
|
</Confirm>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -152,8 +152,8 @@ export const AnnuncioActions = () => {
|
||||||
|
|
||||||
const ContrattoImportSchema = z.object({
|
const ContrattoImportSchema = z.object({
|
||||||
gestionale_id: z.number().nullable(),
|
gestionale_id: z.number().nullable(),
|
||||||
contratto_decorrenza: z.date().nullable(),
|
contratto_decorrenza: z.string().nullable(),
|
||||||
contratto_scadenza: z.date().nullable(),
|
contratto_scadenza: z.string().nullable(),
|
||||||
contratto_tipo: z
|
contratto_tipo: z
|
||||||
.enum([
|
.enum([
|
||||||
"Transitorio",
|
"Transitorio",
|
||||||
|
|
@ -167,7 +167,14 @@ const ContrattoImportSchema = z.object({
|
||||||
.nullable(),
|
.nullable(),
|
||||||
});
|
});
|
||||||
|
|
||||||
type ContrattoImportObj = z.infer<typeof ContrattoImportSchema>;
|
interface ContrattoImportObj
|
||||||
|
extends Omit<
|
||||||
|
z.infer<typeof ContrattoImportSchema>,
|
||||||
|
"contratto_decorrenza" | "contratto_scadenza"
|
||||||
|
> {
|
||||||
|
contratto_decorrenza: Date | null;
|
||||||
|
contratto_scadenza: Date | null;
|
||||||
|
}
|
||||||
|
|
||||||
const parseContrattoImport = (ingest: string) => {
|
const parseContrattoImport = (ingest: string) => {
|
||||||
let parsedJson: unknown;
|
let parsedJson: unknown;
|
||||||
|
|
@ -181,7 +188,15 @@ const parseContrattoImport = (ingest: string) => {
|
||||||
}
|
}
|
||||||
const parsed = ContrattoImportSchema.safeParse(parsedJson);
|
const parsed = ContrattoImportSchema.safeParse(parsedJson);
|
||||||
if (parsed.success) {
|
if (parsed.success) {
|
||||||
return parsed.data;
|
return {
|
||||||
|
...parsed.data,
|
||||||
|
contratto_decorrenza: parsed.data.contratto_decorrenza
|
||||||
|
? new Date(parsed.data.contratto_decorrenza)
|
||||||
|
: null,
|
||||||
|
contratto_scadenza: parsed.data.contratto_scadenza
|
||||||
|
? new Date(parsed.data.contratto_scadenza)
|
||||||
|
: null,
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
console.error("Invalid format:", parsed.error);
|
console.error("Invalid format:", parsed.error);
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
@ -431,19 +446,19 @@ const AdminContratto = () => {
|
||||||
<Credenza open={open} onOpenChange={setOpen}>
|
<Credenza open={open} onOpenChange={setOpen}>
|
||||||
<CredenzaTrigger asChild>
|
<CredenzaTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
variant="secondary"
|
variant={data.doc_contratto_added ? "success" : "secondary"}
|
||||||
className="flex w-fit items-center gap-2"
|
className="flex w-fit items-center gap-2"
|
||||||
aria-label="Open Contratto Section"
|
aria-label="Open Contratto Section"
|
||||||
>
|
>
|
||||||
{data.doc_contratto_added ? (
|
{data.doc_contratto_added ? (
|
||||||
<CircleCheck className="size-7" />
|
<CircleCheck className="size-6" />
|
||||||
) : (
|
) : (
|
||||||
<Wrench className="size-7" />
|
<Wrench className="size-6" />
|
||||||
)}
|
)}
|
||||||
Sezione Contratto
|
Contratto
|
||||||
</Button>
|
</Button>
|
||||||
</CredenzaTrigger>
|
</CredenzaTrigger>
|
||||||
<CredenzaContent className="max-h-[90vh] max-w-4xl px-3">
|
<CredenzaContent className="max-h-[90vh] max-w-4xl px-3 sm:max-w-5xl">
|
||||||
<CredenzaHeader>
|
<CredenzaHeader>
|
||||||
<CredenzaTitle>Sezione Contratto</CredenzaTitle>
|
<CredenzaTitle>Sezione Contratto</CredenzaTitle>
|
||||||
<CredenzaDescription className="sr-only">
|
<CredenzaDescription className="sr-only">
|
||||||
|
|
@ -535,7 +550,7 @@ const ContrattoSection = ({
|
||||||
setSelectedDoc(null);
|
setSelectedDoc(null);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Trash2 /> Reset
|
<Trash2 className="size-6" /> Reset
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
@ -626,7 +641,7 @@ const RicevutaSection = ({
|
||||||
setSelectedDoc(null);
|
setSelectedDoc(null);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Trash2 /> Reset
|
<Trash2 className="size-6" /> Reset
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
@ -691,16 +706,16 @@ const AdminLavoraConferma = () => {
|
||||||
<Credenza open={open} onOpenChange={setOpen}>
|
<Credenza open={open} onOpenChange={setOpen}>
|
||||||
<CredenzaTrigger asChild>
|
<CredenzaTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
variant="secondary"
|
variant={data.hasConfermaAdmin ? "success" : "secondary"}
|
||||||
className="flex w-fit items-center gap-2"
|
className="flex w-fit items-center gap-2"
|
||||||
aria-label="Open Lavora Conferma Section"
|
aria-label="Open Lavora Conferma Section"
|
||||||
>
|
>
|
||||||
{data.hasConfermaAdmin ? (
|
{data.hasConfermaAdmin ? (
|
||||||
<CircleCheck className="size-7" />
|
<CircleCheck className="size-6" />
|
||||||
) : (
|
) : (
|
||||||
<Wrench className="size-7" />
|
<Wrench className="size-6" />
|
||||||
)}
|
)}
|
||||||
Lavora conferma
|
Conferma
|
||||||
</Button>
|
</Button>
|
||||||
</CredenzaTrigger>
|
</CredenzaTrigger>
|
||||||
<CredenzaContent className="max-h-[90vh] w-full px-3 sm:max-w-4xl">
|
<CredenzaContent className="max-h-[90vh] w-full px-3 sm:max-w-4xl">
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ export const Interactions = () => {
|
||||||
const { data, annuncioId } = useServizioAnnuncio();
|
const { data, annuncioId } = useServizioAnnuncio();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<div className="flex flex-wrap gap-3">
|
||||||
<ContattiProprietarioModal />
|
<ContattiProprietarioModal />
|
||||||
{data.open_contatti_at !== null && data.user_confirmed_at == null && (
|
{data.open_contatti_at !== null && data.user_confirmed_at == null && (
|
||||||
<AnnuncioConfirm />
|
<AnnuncioConfirm />
|
||||||
|
|
@ -195,7 +195,7 @@ export const Interactions = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue