feat: improve custom fields admin and date filters

This commit is contained in:
Esdras Renan 2025-11-15 01:51:55 -03:00
parent 11a4b903c4
commit b721348e19
14 changed files with 491 additions and 205 deletions

View file

@ -216,16 +216,20 @@ export function NewTicketDialog({
) as TicketFormDefinition[] | undefined
const forms = useMemo<TicketFormDefinition[]>(() => {
const base: TicketFormDefinition = {
const fallback: TicketFormDefinition = {
key: "default",
label: "Chamado",
description: "Formulário básico para abertura de chamados gerais.",
fields: [],
}
if (Array.isArray(formsRemote) && formsRemote.length > 0) {
return [base, ...formsRemote]
if (!formsRemote || formsRemote.length === 0) {
return [fallback]
}
return [base]
const hasDefault = formsRemote.some((form) => form.key === fallback.key)
if (hasDefault) {
return formsRemote
}
return [fallback, ...formsRemote]
}, [formsRemote])
const [selectedFormKey, setSelectedFormKey] = useState<string>("default")
@ -531,7 +535,7 @@ export function NewTicketDialog({
}
let customFieldsPayload: Array<{ fieldId: Id<"ticketFields">; value: unknown }> = []
if (selectedFormKey !== "default" && selectedForm?.fields?.length) {
if (selectedForm?.fields?.length) {
const normalized = normalizeCustomFieldInputs(selectedForm.fields, customFieldValues)
if (!normalized.ok) {
toast.error(normalized.message, { id: "new-ticket" })
@ -1036,7 +1040,7 @@ export function NewTicketDialog({
</div>
</div>
{selectedFormKey !== "default" && selectedForm.fields.length > 0 ? (
{selectedForm.fields.length > 0 ? (
<div className="grid gap-4 rounded-xl border border-slate-200 bg-white px-4 py-4 sm:grid-cols-2 lg:col-span-2">
<p className="text-sm font-semibold text-neutral-800 sm:col-span-2">Informações adicionais</p>
{selectedForm.fields.map((field) => {