@@ -84,12 +84,15 @@ export const Dashboard = ({
8484 "<link>" ,
8585 ) ;
8686
87+ const [ search , setSearch ] = useState ( "" ) ;
8788 const combobox = useCombobox ( {
8889 onDropdownClose : ( ) => {
8990 combobox . resetSelectedOption ( ) ;
91+ setSearch ( "" ) ;
9092 } ,
9193 onDropdownOpen : ( ) => {
9294 combobox . updateSelectedOptionIndex ( "active" ) ;
95+ combobox . focusSearchInput ( ) ;
9396 } ,
9497 } ) ;
9598
@@ -167,39 +170,32 @@ export const Dashboard = ({
167170 : t ( "dashboard.projectsFilter" ) }
168171 </ Input . Placeholder >
169172 ) }
170- < Combobox . EventsTarget >
171- < PillsInput . Field
172- type = "hidden"
173- onBlur = { ( ) => {
174- combobox . closeDropdown ( ) ;
175- } }
176- onKeyDown = { ( event ) => {
177- if ( event . key === "Backspace" ) {
178- event . preventDefault ( ) ;
179- setSelectedProjects ( ( projects ) =>
180- projects . slice ( 0 , projects . length - 1 ) ,
181- ) ;
182- }
183- } }
184- />
185- </ Combobox . EventsTarget >
186173 </ Pill . Group >
187174 </ PillsInput >
188175 </ Combobox . DropdownTarget >
189176 < Combobox . Dropdown >
177+ < Combobox . Search
178+ value = { search }
179+ onChange = { ( event ) => {
180+ setSearch ( event . currentTarget . value ) ;
181+ } }
182+ placeholder = "Search"
183+ />
190184 < Combobox . Options >
191- { unfilteredProjectNames . map ( ( projectName ) => (
192- < Combobox . Option
193- value = { projectName }
194- key = { projectName }
195- active = { selectedProjects . includes ( projectName ) }
196- >
197- { selectedProjects . includes ( projectName ) && (
198- < CheckIcon size = { 12 } style = { { marginInlineEnd : 6 } } />
199- ) }
200- < span > { projectName } </ span >
201- </ Combobox . Option >
202- ) ) }
185+ { unfilteredProjectNames
186+ . filter ( ( p ) => p . toLowerCase ( ) . includes ( search . toLowerCase ( ) ) )
187+ . map ( ( projectName ) => (
188+ < Combobox . Option
189+ value = { projectName }
190+ key = { projectName }
191+ active = { selectedProjects . includes ( projectName ) }
192+ >
193+ { selectedProjects . includes ( projectName ) && (
194+ < CheckIcon size = { 12 } style = { { marginInlineEnd : 6 } } />
195+ ) }
196+ < span > { projectName } </ span >
197+ </ Combobox . Option >
198+ ) ) }
203199 </ Combobox . Options >
204200 </ Combobox . Dropdown >
205201 </ Combobox >
0 commit comments