@@ -13,6 +13,7 @@ interface Props {
1313export 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 "{ searchQuery } "
100+ </ div >
101+ ) }
78102
79103 { databases . length < 5 && addDatabaseButton }
80104
0 commit comments