diff --git a/src/components/portal/portal-ticket-form.tsx b/src/components/portal/portal-ticket-form.tsx index a958cf7..d4f597f 100644 --- a/src/components/portal/portal-ticket-form.tsx +++ b/src/components/portal/portal-ticket-form.tsx @@ -1,6 +1,6 @@ "use client" -import { useCallback, useMemo, useState } from "react" +import { useMemo, useState } from "react" import { useRouter } from "next/navigation" import { useMutation } from "convex/react" import { toast } from "sonner" @@ -45,20 +45,9 @@ export function PortalTicketForm() { const [subcategoryId, setSubcategoryId] = useState(null) const [attachments, setAttachments] = useState>([]) const [isSubmitting, setIsSubmitting] = useState(false) - const [hasSubcategoryOptions, setHasSubcategoryOptions] = useState(false) - const isFormValid = useMemo(() => { - return Boolean( - subject.trim() && - description.trim() && - categoryId && - (hasSubcategoryOptions ? subcategoryId : true) - ) - }, [subject, description, categoryId, subcategoryId, hasSubcategoryOptions]) - - const handleSecondaryOptionsChange = useCallback((hasOptions: boolean) => { - setHasSubcategoryOptions((prev) => (prev === hasOptions ? prev : hasOptions)) - }, []) + return Boolean(subject.trim() && description.trim() && categoryId && subcategoryId) + }, [subject, description, categoryId, subcategoryId]) async function handleSubmit(event: React.FormEvent) { event.preventDefault() @@ -86,7 +75,7 @@ export function PortalTicketForm() { queueId: undefined, requesterId: viewerId, categoryId: categoryId as Id<"ticketCategories">, - subcategoryId: subcategoryId ? (subcategoryId as Id<"ticketSubcategories">) : undefined, + subcategoryId: subcategoryId as Id<"ticketSubcategories">, }) if (plainDescription.length > 0) { @@ -169,10 +158,9 @@ export function PortalTicketForm() { subcategoryId={subcategoryId} onCategoryChange={setCategoryId} onSubcategoryChange={setSubcategoryId} - onSecondaryOptionsChange={handleSecondaryOptionsChange} layout="stacked" categoryLabel="Categoria *" - subcategoryLabel={hasSubcategoryOptions ? "Subcategoria *" : "Subcategoria (opcional)"} + subcategoryLabel="Subcategoria *" secondaryEmptyLabel="Selecione uma categoria" />
diff --git a/src/components/tickets/category-select.tsx b/src/components/tickets/category-select.tsx index 7701f0f..14fa4a8 100644 --- a/src/components/tickets/category-select.tsx +++ b/src/components/tickets/category-select.tsx @@ -18,8 +18,7 @@ interface CategorySelectProps { categoryId: string | null subcategoryId: string | null onCategoryChange: (categoryId: string) => void - onSubcategoryChange: (subcategoryId: string | null) => void - onSecondaryOptionsChange?: (hasSecondary: boolean) => void + onSubcategoryChange: (subcategoryId: string) => void autoSelectFirst?: boolean disabled?: boolean categoryLabel?: string @@ -40,7 +39,6 @@ export function CategorySelectFields({ subcategoryId, onCategoryChange, onSubcategoryChange, - onSecondaryOptionsChange, autoSelectFirst = true, disabled = false, categoryLabel = "Primária", @@ -80,16 +78,6 @@ export function CategorySelectFields({ } }, [categoryId, secondaryOptions, subcategoryId, onSubcategoryChange]) - useEffect(() => { - onSecondaryOptionsChange?.(secondaryOptions.length > 0) - }, [secondaryOptions, onSecondaryOptionsChange]) - - useEffect(() => { - if (secondaryOptions.length === 0 && subcategoryId) { - onSubcategoryChange(null) - } - }, [secondaryOptions, subcategoryId, onSubcategoryChange]) - const containerClass = layout === "stacked" ? "flex flex-col gap-3" : "grid gap-3 sm:grid-cols-2" return ( diff --git a/src/components/tickets/new-ticket-dialog.tsx b/src/components/tickets/new-ticket-dialog.tsx index 45dd97e..2831853 100644 --- a/src/components/tickets/new-ticket-dialog.tsx +++ b/src/components/tickets/new-ticket-dialog.tsx @@ -112,7 +112,7 @@ export function NewTicketDialog() { } } - const handleSubcategoryChange = (value: string | null) => { + const handleSubcategoryChange = (value: string) => { const previous = form.getValues("subcategoryId") ?? "" const next = value ?? "" form.setValue("subcategoryId", next, {