Skip to content

Commit e673c63

Browse files
author
Jexsie
authored
(fix) Independent searching for each tab in patient list table (#683)
* fix patient list search feature experience * new updates
1 parent 2de06b3 commit e673c63

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

packages/esm-patient-list-app/src/patient-list-list/patient-list-list.component.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,14 @@ function usePatientListFilterForCurrentTab(selectedTab: number, search: string)
3838
const PatientListList: React.FC = () => {
3939
const { t } = useTranslation();
4040
const [selectedTab, setSelectedTab] = useState<number>(TabIndices.STARRED_LISTS);
41-
const [searchString, setSearchString] = useState('');
42-
const patientListFilter = usePatientListFilterForCurrentTab(selectedTab, searchString);
41+
const [searchTerms, setSearchTerms] = useState({
42+
[TabIndices.STARRED_LISTS]: '',
43+
[TabIndices.SYSTEM_LISTS]: '',
44+
[TabIndices.MY_LISTS]: '',
45+
[TabIndices.ALL_LISTS]: '',
46+
});
47+
const currentSearchTerm = searchTerms[selectedTab];
48+
const patientListFilter = usePatientListFilterForCurrentTab(selectedTab, currentSearchTerm);
4349
const { patientLists, isLoading, isValidating, error, mutate } = useAllPatientLists(patientListFilter);
4450
const { search } = useLocation();
4551
const createNewList =
@@ -81,6 +87,13 @@ const PatientListList: React.FC = () => {
8187
{ id: 4, key: 'isStarred', header: '' },
8288
];
8389

90+
const handleSearch = (searchString: string) => {
91+
setSearchTerms((prevSearchTerms) => ({
92+
...prevSearchTerms,
93+
[selectedTab]: searchString,
94+
}));
95+
};
96+
8497
return (
8598
<main className={`omrs-main-content ${styles.patientListListPage}`}>
8699
<section className={styles.patientListList}>
@@ -123,8 +136,8 @@ const PatientListList: React.FC = () => {
123136
isValidating={isValidating}
124137
headers={tableHeaders}
125138
patientLists={patientLists}
126-
searchString={searchString}
127-
setSearchString={setSearchString}
139+
searchTerm={currentSearchTerm}
140+
setSearchTerm={handleSearch}
128141
refetch={mutate}
129142
error={error}
130143
/>

packages/esm-patient-list-app/src/patient-list-list/patient-list-table.component.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ interface PatientListTableContainerProps {
4444
handleCreate?: () => void;
4545
error: Error;
4646
isValidating: boolean;
47-
searchString: string;
48-
setSearchString: (searchString) => void;
47+
searchTerm: string;
48+
setSearchTerm: (searchString: string) => void;
4949
}
5050

5151
const PatientListTableContainer: React.FC<PatientListTableContainerProps> = ({
@@ -58,8 +58,8 @@ const PatientListTableContainer: React.FC<PatientListTableContainerProps> = ({
5858
handleCreate,
5959
error,
6060
isValidating,
61-
searchString,
62-
setSearchString,
61+
searchTerm,
62+
setSearchTerm,
6363
}) => {
6464
const { t } = useTranslation();
6565
const userId = useSession()?.user.uuid;
@@ -86,7 +86,7 @@ const PatientListTableContainer: React.FC<PatientListTableContainerProps> = ({
8686
const { paginated, goTo, results, currentPage } = usePagination(sortedData, pageSize);
8787

8888
const handleSearch = (str) => {
89-
setSearchString(str);
89+
setSearchTerm(str);
9090
goTo(1);
9191
};
9292

@@ -101,9 +101,8 @@ const PatientListTableContainer: React.FC<PatientListTableContainerProps> = ({
101101
size={isDesktop(layout) ? 'sm' : 'lg'}
102102
className={styles.search}
103103
onChange={(evnt) => handleSearch(evnt.target.value)}
104-
defaultValue={searchString}
104+
value={searchTerm}
105105
placeholder={t('searchThisList', 'Search this list')}
106-
currentSearchTerm={searchString}
107106
/>
108107
</Layer>
109108
</div>

0 commit comments

Comments
 (0)