@@ -12,7 +12,6 @@ import { AutoSizer, List } from 'react-virtualized'
1212import Popover from './base/Popover'
1313import Input from './base/forms/Input'
1414import Icon from './Icon'
15- import classNames from 'classnames'
1615import { IonIcon } from '@ionic/react'
1716import { chevronDown , chevronUp } from 'ionicons/icons'
1817import Button from './base/forms/Button'
@@ -197,6 +196,58 @@ const PanelSearch = <T,>(props: PanelSearchProps<T>): ReactElement => {
197196 search = search . replace ( / ^ " + | " + $ / g, '' )
198197 }
199198
199+ const renderListContent = ( ) : ReactNode => {
200+ if ( isLoading && ( ! filteredItems || ! items ) ) {
201+ return (
202+ < div className = 'text-center' >
203+ < Loader />
204+ </ div >
205+ )
206+ }
207+ if ( filteredItems && filteredItems . length ) {
208+ return (
209+ < div
210+ className = { props . listClassName }
211+ style = { isLoading ? { opacity : 0.5 } : undefined }
212+ >
213+ { renderContainer ( filteredItems ) }
214+ </ div >
215+ )
216+ }
217+ if ( renderNoResults && ! search ) {
218+ return < > { renderNoResults } </ >
219+ }
220+ return (
221+ < Row className = 'list-item' >
222+ { ! isLoading && (
223+ < >
224+ { props . noResultsText ? (
225+ props . noResultsText ( search ) || (
226+ < div className = 'table-column' >
227+ No results{ ' ' }
228+ { search && (
229+ < span >
230+ for < strong > { ` "${ search } "` } </ strong >
231+ </ span >
232+ ) }
233+ </ div >
234+ )
235+ ) : (
236+ < div className = 'table-column' >
237+ No results{ ' ' }
238+ { search && (
239+ < span >
240+ for < strong > { ` "${ search } "` } </ strong >
241+ </ span >
242+ ) }
243+ </ div >
244+ ) }
245+ </ >
246+ ) }
247+ </ Row >
248+ )
249+ }
250+
200251 if (
201252 ! search &&
202253 ( ! filteredItems || filteredItems . length === 0 ) &&
@@ -304,50 +355,9 @@ const PanelSearch = <T,>(props: PanelSearchProps<T>): ReactElement => {
304355 }
305356 >
306357 { props . searchPanel }
307- < div
308- id = { props . id }
309- className = { classNames ( 'search-list' , props . listClassName ) }
310- >
358+ < div id = { props . id } className = 'search-list' >
311359 { props . header }
312- { isLoading && ( ! filteredItems || ! items ) ? (
313- < div className = 'text-center' >
314- < Loader />
315- </ div >
316- ) : filteredItems && filteredItems . length ? (
317- < div style = { isLoading ? { opacity : 0.5 } : undefined } >
318- { renderContainer ( filteredItems ) }
319- </ div >
320- ) : renderNoResults && ! search ? (
321- renderNoResults
322- ) : (
323- < Row className = 'list-item' >
324- { ! isLoading && (
325- < >
326- { props . noResultsText ? (
327- props . noResultsText ( search ) || (
328- < div className = 'table-column' >
329- No results{ ' ' }
330- { search && (
331- < span >
332- for < strong > { ` "${ search } "` } </ strong >
333- </ span >
334- ) }
335- </ div >
336- )
337- ) : (
338- < div className = 'table-column' >
339- No results{ ' ' }
340- { search && (
341- < span >
342- for < strong > { ` "${ search } "` } </ strong >
343- </ span >
344- ) }
345- </ div >
346- ) }
347- </ >
348- ) }
349- </ Row >
350- ) }
360+ { renderListContent ( ) }
351361 { paging && (
352362 < Paging
353363 paging = { paging }
0 commit comments