11import React , { useState } from 'react' ;
2- import { View } from 'react-native' ;
32import type { OnyxEntry } from 'react-native-onyx' ;
4- import HeaderWithBackButton from '@components/HeaderWithBackButton' ;
53import MenuItem from '@components/MenuItem' ;
64import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription' ;
5+ import ScrollView from '@components/ScrollView' ;
76import type { SearchQueryJSON } from '@components/Search/types' ;
87import { useMemoizedLazyExpensifyIcons } from '@hooks/useLazyAsset' ;
98import useLocalize from '@hooks/useLocalize' ;
@@ -37,7 +36,7 @@ type DisplayPopupProps = {
3736function DisplayPopup ( { queryJSON, searchResults, closeOverlay, onSort} : DisplayPopupProps ) {
3837 const { translate} = useLocalize ( ) ;
3938 const styles = useThemeStyles ( ) ;
40- const { shouldUseNarrowLayout , isLargeScreenWidth} = useResponsiveLayout ( ) ;
39+ const { isLargeScreenWidth} = useResponsiveLayout ( ) ;
4140 const expensifyIcons = useMemoizedLazyExpensifyIcons ( [ 'Columns' ] ) ;
4241 const [ searchAdvancedFilters = getEmptyObject < SearchAdvancedFiltersForm > ( ) ] = useOnyx ( ONYXKEYS . FORMS . SEARCH_ADVANCED_FILTERS_FORM ) ;
4342 const [ selectedDisplayFilter , setSelectedDisplayFilter ] = useState <
@@ -72,7 +71,7 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP
7271 const viewValue = searchAdvancedFilters [ CONST . SEARCH . SYNTAX_ROOT_KEYS . VIEW ] ;
7372
7473 return (
75- < View style = { [ ! shouldUseNarrowLayout && styles . pv4 ] } >
74+ < ScrollView contentContainerStyle = { [ styles . pv4 ] } >
7675 < MenuItemWithTopDescription
7776 shouldShowRightIcon
7877 description = { translate ( 'search.display.sortBy' ) }
@@ -127,7 +126,7 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP
127126 sentryLabel = { CONST . SENTRY_LABEL . SEARCH . COLUMNS_BUTTON }
128127 />
129128 ) }
130- </ View >
129+ </ ScrollView >
131130 ) ;
132131 }
133132
@@ -162,46 +161,35 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP
162161 setSelectedDisplayFilter ( null ) ;
163162 } ;
164163
165- const subtitle = {
166- [ CONST . SEARCH . SYNTAX_ROOT_KEYS . SORT_BY ] : translate ( 'search.display.sortBy' ) ,
167- [ CONST . SEARCH . SYNTAX_ROOT_KEYS . SORT_ORDER ] : translate ( 'search.display.sortOrder' ) ,
168- [ CONST . SEARCH . SYNTAX_ROOT_KEYS . GROUP_BY ] : translate ( 'search.display.groupBy' ) ,
169- [ CONST . SEARCH . SYNTAX_FILTER_KEYS . GROUP_CURRENCY ] : translate ( 'common.groupCurrency' ) ,
170- [ CONST . SEARCH . SYNTAX_ROOT_KEYS . VIEW ] : translate ( 'search.view.label' ) ,
171- [ CONST . SEARCH . SYNTAX_ROOT_KEYS . LIMIT ] : translate ( 'search.display.limitResults' ) ,
172- } ;
173-
174- let subPopup : React . JSX . Element | null = null ;
175-
176164 switch ( selectedDisplayFilter ) {
177165 case CONST . SEARCH . SYNTAX_ROOT_KEYS . SORT_BY :
178- subPopup = (
166+ return (
179167 < SortByPopup
180168 searchResults = { searchResults }
181169 queryJSON = { queryJSON }
182170 groupBy = { groupBy }
183171 onSort = { onSort }
184172 onSortOrderPress = { ( ) => setSelectedDisplayFilter ( CONST . SEARCH . SYNTAX_ROOT_KEYS . SORT_ORDER ) }
173+ onBackButtonPress = { goBack }
185174 closeOverlay = { closeOverlay }
186175 />
187176 ) ;
188- break ;
189177 case CONST . SEARCH . SYNTAX_ROOT_KEYS . SORT_ORDER :
190- subPopup = (
178+ return (
191179 < SortOrderPopup
192180 queryJSON = { queryJSON }
193181 onSort = { onSort }
182+ onBackButtonPress = { goBack }
194183 closeOverlay = { closeOverlay }
195184 />
196185 ) ;
197- break ;
198186 case CONST . SEARCH . SYNTAX_ROOT_KEYS . GROUP_BY :
199- subPopup = (
187+ return (
200188 < GroupByPopup
201- style = { styles . p0 }
202189 sections = { groupBySections }
203190 value = { groupBy }
204191 closeOverlay = { closeOverlay }
192+ onBackButtonPress = { goBack }
205193 onChange = { ( item ) => {
206194 const newValue = item ?. value ;
207195 if ( ! newValue ) {
@@ -212,52 +200,39 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP
212200 } }
213201 />
214202 ) ;
215- break ;
216203 case CONST . SEARCH . SYNTAX_FILTER_KEYS . GROUP_CURRENCY :
217- subPopup = (
204+ return (
218205 < GroupCurrencyPopup
219206 onChange = { ( item ) => updateFilterForm ( { groupCurrency : item ?. value } ) }
207+ onBackButtonPress = { goBack }
220208 closeOverlay = { closeOverlay }
221209 />
222210 ) ;
223- break ;
224211 case CONST . SEARCH . SYNTAX_ROOT_KEYS . VIEW :
225- subPopup = (
212+ return (
226213 < SingleSelectPopup
227- style = { styles . p0 }
228214 items = { viewOptions }
229215 value = { view }
216+ label = { translate ( 'search.view.label' ) }
217+ onBackButtonPress = { goBack }
230218 closeOverlay = { closeOverlay }
231219 onChange = { ( item ) => updateFilterForm ( { view : item ?. value ?? CONST . SEARCH . VIEW . TABLE } ) }
232220 />
233221 ) ;
234- break ;
235222 case CONST . SEARCH . SYNTAX_ROOT_KEYS . LIMIT :
236- subPopup = (
223+ return (
237224 < TextInputPopup
238- style = { styles . pv0 }
239225 placeholder = { translate ( 'search.filters.limit' ) }
240226 defaultValue = { limitValue }
227+ label = { translate ( 'search.display.limitResults' ) }
228+ onBackButtonPress = { goBack }
241229 closeOverlay = { closeOverlay }
242230 onChange = { ( value ) => updateFilterForm ( { limit : value } ) }
243231 />
244232 ) ;
245- break ;
246233 default :
247- break ;
234+ return null ;
248235 }
249-
250- return (
251- < View style = { [ ! shouldUseNarrowLayout && styles . pv4 ] } >
252- < HeaderWithBackButton
253- shouldDisplayHelpButton = { false }
254- style = { [ styles . h10 , styles . pv1 , styles . mb2 ] }
255- subtitle = { subtitle [ selectedDisplayFilter ] }
256- onBackButtonPress = { goBack }
257- />
258- { subPopup }
259- </ View >
260- ) ;
261236}
262237
263238export default DisplayPopup ;
0 commit comments