Skip to content

Commit 7fb59bb

Browse files
FEATURE (search): Add search for databases when there are more than 5
1 parent dc9ddae commit 7fb59bb

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

frontend/src/features/databases/ui/DatabasesComponent.tsx

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ interface Props {
1313
export const DatabasesComponent = ({ contentHeight }: Props) => {
1414
const [isLoading, setIsLoading] = useState(true);
1515
const [databases, setDatabases] = useState<Database[]>([]);
16+
const [searchQuery, setSearchQuery] = useState('');
1617

1718
const [isShowAddDatabase, setIsShowAddDatabase] = useState(false);
1819
const [selectedDatabaseId, setSelectedDatabaseId] = useState<string | undefined>(undefined);
@@ -58,23 +59,46 @@ export const DatabasesComponent = ({ contentHeight }: Props) => {
5859
</Button>
5960
);
6061

62+
const filteredDatabases = databases.filter((database) =>
63+
database.name.toLowerCase().includes(searchQuery.toLowerCase()),
64+
);
65+
6166
return (
6267
<>
6368
<div className="flex grow">
6469
<div
65-
className="mx-3 w-[250px] min-w-[250px] overflow-y-auto"
70+
className="mx-3 w-[250px] min-w-[250px] overflow-y-auto pr-2"
6671
style={{ height: contentHeight }}
6772
>
68-
{databases.length >= 5 && addDatabaseButton}
69-
70-
{databases.map((database) => (
71-
<DatabaseCardComponent
72-
key={database.id}
73-
database={database}
74-
selectedDatabaseId={selectedDatabaseId}
75-
setSelectedDatabaseId={setSelectedDatabaseId}
76-
/>
77-
))}
73+
{databases.length >= 5 && (
74+
<>
75+
{addDatabaseButton}
76+
77+
<div className="mb-2">
78+
<input
79+
placeholder="Search database"
80+
value={searchQuery}
81+
onChange={(e) => setSearchQuery(e.target.value)}
82+
className="w-full border-b border-gray-300 p-1 text-gray-500 outline-none"
83+
/>
84+
</div>
85+
</>
86+
)}
87+
88+
{filteredDatabases.length > 0
89+
? filteredDatabases.map((database) => (
90+
<DatabaseCardComponent
91+
key={database.id}
92+
database={database}
93+
selectedDatabaseId={selectedDatabaseId}
94+
setSelectedDatabaseId={setSelectedDatabaseId}
95+
/>
96+
))
97+
: searchQuery && (
98+
<div className="mb-4 text-center text-sm text-gray-500">
99+
No databases found matching &quot;{searchQuery}&quot;
100+
</div>
101+
)}
78102

79103
{databases.length < 5 && addDatabaseButton}
80104

0 commit comments

Comments
 (0)