From f728b23d3acb3f18cd581b905d1ea0b59a8cf21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Thu, 11 Dec 2025 12:14:17 -0300 Subject: [PATCH] add error --- .../async-combobox.tsx | 19 ++++-- .../routes/_.$orgid.enrollments.add/data.ts | 30 ++++---- .../routes/_.$orgid.enrollments.add/route.tsx | 68 +++++++++++++++---- package-lock.json | 12 ++++ packages/ui/package.json | 1 + 5 files changed, 97 insertions(+), 33 deletions(-) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/async-combobox.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/async-combobox.tsx index 732173f..42505a8 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/async-combobox.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/async-combobox.tsx @@ -1,8 +1,7 @@ import { useRequest, useToggle } from 'ahooks' -import { debounce } from 'lodash' import { CheckIcon, UserIcon } from 'lucide-react' -import { initials, cn } from '@repo/ui/lib/utils' import { formatCPF } from '@brazilian-utils/brazilian-utils' + import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar' import { Abbr } from '@repo/ui/components/abbr' import { @@ -10,7 +9,7 @@ import { InputGroupAddon, InputGroupInput } from '@repo/ui/components/ui/input-group' - +import { initials, cn } from '@repo/ui/lib/utils' import { Popover, PopoverContent, @@ -31,19 +30,25 @@ interface AsyncComboboxProps { title: string onChange: (props: any) => void onSearch: (search: string) => Promise + error?: any } export function AsyncCombobox({ title, value, onSearch, - onChange + onChange, + error }: AsyncComboboxProps) { const [open, { set }] = useToggle() const { data = [], loading, runAsync - } = useRequest(onSearch, { manual: true, defaultParams: [''] }) + } = useRequest(onSearch, { + manual: true, + debounceWait: 300, + defaultParams: [''] + }) return ( @@ -55,6 +60,7 @@ export function AsyncCombobox({ placeholder={title} className="cursor-pointer" autoComplete="off" + aria-invalid={!!error} /> @@ -73,11 +79,12 @@ export function AsyncCombobox({ Nenhum resultado encontrado. + {data.map(({ id, name, email, cpf }) => ( ( - + render={({ + field: { name, value, onChange }, + fieldState + }) => ( +
+ + ( +

+ {message} +

+ )} + /> +
)} /> ( - + render={({ + field: { name, value, onChange }, + fieldState + }) => ( +
+ + ( +

+ {message} +

+ )} + /> +
)} /> @@ -296,9 +327,15 @@ interface FacetedFilterProps { value?: Course options: Promise<{ hits: any[] }> onChange?: (value: any) => void + error?: any } -function FacetedFilter({ value, onChange, options }: FacetedFilterProps) { +function FacetedFilter({ + value, + onChange, + options, + error +}: FacetedFilterProps) { const [search, setSearch] = useState('') const [open, { set }] = useToggle() const { hits } = use(options) @@ -326,6 +363,7 @@ function FacetedFilter({ value, onChange, options }: FacetedFilterProps) { readOnly placeholder="Curso" value={value?.name || ''} + aria-invalid={!!error} /> diff --git a/package-lock.json b/package-lock.json index da8e381..ebf7e03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1913,6 +1913,17 @@ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "license": "MIT" }, + "node_modules/@hookform/error-message": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hookform/error-message/-/error-message-2.0.1.tgz", + "integrity": "sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0", + "react-hook-form": "^7.0.0" + } + }, "node_modules/@hookform/resolvers": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", @@ -7326,6 +7337,7 @@ "version": "0.0.0", "dependencies": { "@brazilian-utils/brazilian-utils": "^1.1.0", + "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^5.2.2", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-avatar": "^1.1.11", diff --git a/packages/ui/package.json b/packages/ui/package.json index da33c15..e37b956 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@brazilian-utils/brazilian-utils": "^1.1.0", + "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^5.2.2", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-avatar": "^1.1.11",