fix(companies): corrige modal de edicao de empresas
All checks were successful
All checks were successful
- Corrige erro NaN nos campos numericos (reopenWindowDays, contractedHoursPerMonth) usando z.preprocess para converter NaN para null - Ajusta espacamento nos AccordionContent para melhor legibilidade - Define tamanho consistente nos botoes Cancelar/Salvar (size="sm") - Accordions agora iniciam fechados por padrao 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a5bab2cc33
commit
d38d5d39eb
2 changed files with 20 additions and 17 deletions
|
|
@ -1102,12 +1102,13 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
<div className="flex flex-wrap items-center gap-2 md:justify-end">
|
||||
<Button type="button" variant="outline" onClick={close} disabled={isSubmitting}>
|
||||
<Button type="button" variant="outline" size="sm" onClick={close} disabled={isSubmitting}>
|
||||
Cancelar
|
||||
</Button>
|
||||
<Button
|
||||
type="submit"
|
||||
form="company-form"
|
||||
size="sm"
|
||||
disabled={isSubmitting}
|
||||
onClick={async (e) => {
|
||||
const valid = await form.trigger()
|
||||
|
|
@ -1274,10 +1275,10 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<Accordion type="multiple" defaultValue={["communication", "contacts", "contracts"]} className="space-y-2">
|
||||
<Accordion type="multiple" defaultValue={[]} className="space-y-2">
|
||||
<AccordionItem value="communication" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Canais e comunicação</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="grid gap-x-4 gap-y-3 md:grid-cols-2">
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="supportEmail">E-mail de suporte</Label>
|
||||
|
|
@ -1434,7 +1435,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="contacts" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Contatos estratégicos</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
|
|
@ -1589,7 +1590,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="locations" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Localizações e unidades</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<p className="text-sm text-muted-foreground">Registre filiais, data centers ou unidades críticas.</p>
|
||||
|
|
@ -1712,7 +1713,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="businessHours" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Horários de atendimento</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="grid gap-x-4 gap-y-3 md:grid-cols-2">
|
||||
<div className="space-y-2">
|
||||
<Label>Modo</Label>
|
||||
|
|
@ -1744,7 +1745,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="requestTypes" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Tipos de solicitação</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<CompanyRequestTypesControls tenantId={tenantId} companyId={editor?.mode === "edit" ? editor.company.id : null} />
|
||||
<CompanyExportTemplateSelector tenantId={tenantId} companyId={editor?.mode === "edit" ? editor.company.id : null} />
|
||||
</AccordionContent>
|
||||
|
|
@ -1753,7 +1754,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
{editor?.mode === "edit" ? (
|
||||
<AccordionItem value="machines" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Dispositivos vinculadas</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="rounded-lg border border-border/60 bg-background p-3">
|
||||
<AdminDevicesOverview tenantId={tenantId} initialCompanyFilterSlug={editor.company.slug} />
|
||||
</div>
|
||||
|
|
@ -1763,7 +1764,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="contracts" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Contratos e escopo</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
|
|
@ -1935,7 +1936,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="sla" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">SLA e horários de atendimento</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="grid gap-x-4 gap-y-3 md:grid-cols-2">
|
||||
<div className="space-y-2">
|
||||
<Label>Calendário</Label>
|
||||
|
|
@ -2029,7 +2030,7 @@ export function CompanySheet({ tenantId, editor, onClose, onCreated, onUpdated }
|
|||
|
||||
<AccordionItem value="metadata" className="rounded-lg border border-border/60 bg-muted/20 px-4">
|
||||
<AccordionTrigger className="py-3 font-semibold">Metadados e observações</AccordionTrigger>
|
||||
<AccordionContent className="pb-5">
|
||||
<AccordionContent className="space-y-4 pb-5 pt-2">
|
||||
<div className="grid gap-4 md:grid-cols-2">
|
||||
<Controller
|
||||
name="tags"
|
||||
|
|
|
|||
|
|
@ -347,11 +347,10 @@ export const companyFormSchema = z.object({
|
|||
.nullable()
|
||||
.optional(),
|
||||
address: z.string().trim().nullable().optional(),
|
||||
contractedHoursPerMonth: z
|
||||
.number()
|
||||
.min(0)
|
||||
.nullable()
|
||||
.optional(),
|
||||
contractedHoursPerMonth: z.preprocess(
|
||||
(val) => (val === "" || Number.isNaN(val) ? null : val),
|
||||
z.number().min(0).nullable().optional()
|
||||
),
|
||||
businessHours: businessHoursSchema.nullish(),
|
||||
communicationChannels: communicationChannelsSchema.default({
|
||||
supportEmails: [],
|
||||
|
|
@ -384,7 +383,10 @@ export const companyFormSchema = z.object({
|
|||
customFields: z.array(customFieldSchema).default([]),
|
||||
notes: z.string().trim().nullable().optional(),
|
||||
isAvulso: z.boolean().default(false),
|
||||
reopenWindowDays: z.number().int().min(1).max(90).nullable().optional(),
|
||||
reopenWindowDays: z.preprocess(
|
||||
(val) => (val === "" || Number.isNaN(val) ? null : val),
|
||||
z.number().int().min(1).max(90).nullable().optional()
|
||||
),
|
||||
})
|
||||
|
||||
export type CompanyFormValues = z.infer<typeof companyFormSchema>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue