From b371f33a0e1ecdcf0aae91f6a4e60008d4c85400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Mon, 5 Jan 2026 16:46:23 -0300 Subject: [PATCH] normalize title --- .../_.$orgid.enrollments.add/course-picker.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx index e280577..425966c 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx @@ -48,6 +48,13 @@ interface CoursePickerProps extends Omit< error?: any } +const normalize = (value: string) => + value + .toLowerCase() + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .replace(/[^a-z0-9]/g, '') + export const CoursePicker = forwardRef( ({ value, onChange, options, error, ...props }, ref) => { const { hits } = use(options) @@ -55,8 +62,13 @@ export const CoursePicker = forwardRef( const [open, { set }] = useToggle() const [sort, { toggle }] = useToggle('a-z', 'z-a') const fuse = useMemo(() => { - return new Fuse(hits, { - keys: ['name'], + const hits_ = hits.map((item) => ({ + ...item, + _name: normalize(item.name) + })) + + return new Fuse(hits_, { + keys: ['_name'], threshold: 0.3, includeMatches: true }) @@ -65,7 +77,7 @@ export const CoursePicker = forwardRef( const filtered = useMemo(() => { const results = !search ? hits - : fuse.search(search).map(({ item }) => item) + : fuse.search(normalize(search)).map(({ item }) => item) return results.sort((a, b) => { const comparison = a.name.localeCompare(b.name)