diff --git a/packages/esm-ugandaemr-app/src/app-menu/app-search-bar/app-search-bar.component.tsx b/packages/esm-ugandaemr-app/src/app-menu/app-search-bar/app-search-bar.component.tsx index cb7762d8..615e09e4 100644 --- a/packages/esm-ugandaemr-app/src/app-menu/app-search-bar/app-search-bar.component.tsx +++ b/packages/esm-ugandaemr-app/src/app-menu/app-search-bar/app-search-bar.component.tsx @@ -1,9 +1,10 @@ -import React, { useMemo, useState } from 'react'; +import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Search } from '@carbon/react'; import styles from './app-search-bar.scss'; -import { Extension, ExtensionSlot, useAssignedExtensions } from '@openmrs/esm-framework'; +import { AssignedExtension, Extension, useAssignedExtensions } from '@openmrs/esm-framework'; +import { ComponentContext } from '@openmrs/esm-framework/src/internal'; const appMenuItemSlot = 'app-menu-item-slot'; @@ -16,26 +17,47 @@ interface AppSearchBarProps { const AppSearchBar = React.forwardRef( ({ onChange, onClear, onSubmit, small }, ref) => { - const appMenuItems = useAssignedExtensions(appMenuItemSlot); const { t } = useTranslation(); - const [searchTerm, setSearchTerm] = useState(''); + const [searchTerm, setSearchTerm] = useState(""); + const menuItemExtensions = useAssignedExtensions( + appMenuItemSlot + ) as AssignedExtension[]; - const handleChange = (event: React.ChangeEvent) => { - const value = event.target.value; - setSearchTerm(value); - onChange?.(value); + const handleChange = (val: string) => { + setSearchTerm(val); + if (onChange) { + onChange(val); + } }; const handleSubmit = (evt: React.FormEvent) => { evt.preventDefault(); - onSubmit?.(searchTerm); + if (onSubmit) { + onSubmit(searchTerm); + } }; - const filteredExtensions = useMemo(() => { - return appMenuItems.filter((extension) => - (extension?.name ?? '').toLowerCase().includes(searchTerm.toLowerCase()), - ); - }, [searchTerm, appMenuItems]); + const filteredExtensions = menuItemExtensions + .filter((extension) => { + const itemName = extension?.name ?? ""; + return itemName.toLowerCase().includes(searchTerm.toLowerCase()); + }) + .map((extension) => ( + + + + )); return ( <> @@ -43,27 +65,41 @@ const AppSearchBar = React.forwardRef( handleChange(event.target.value)} onClear={onClear} - placeholder={t('searchForApp', 'Search for an application')} - size={small ? 'sm' : 'lg'} + placeholder={t("searchForApp", "Search for an application")} + size={small ? "sm" : "lg"} value={searchTerm} ref={ref} data-testid="appSearchBar" />
- - {filteredExtensions.map(() => ( - + {searchTerm + ? filteredExtensions + : menuItemExtensions.map((extension) => ( + + + ))} -
); - }, + } ); -export default AppSearchBar; +export default AppSearchBar;; +