@@ -203,7 +203,7 @@ const EmptyView = styled.div`
203
203
const PaginationLayout = styled . div `
204
204
display: flex;
205
205
justify-content: center;
206
- margin-top: 40px ;
206
+ margin-top: -20px ;
207
207
margin-bottom: 20px;
208
208
`
209
209
@@ -308,13 +308,39 @@ export interface HomeLayoutProps {
308
308
localMarketplaceApps ?: Array < ApplicationMeta > ;
309
309
globalMarketplaceApps ?: Array < ApplicationMeta > ;
310
310
mode : HomeLayoutMode ;
311
+ setCurrentPage ?: any ;
312
+ setPageSize ?: any ;
313
+ currentPage ?: number ;
314
+ pageSize ?: number ;
315
+ total ?: number ;
316
+ setSearchValues ?: any ;
317
+ typeFilter ?: number ;
318
+ setTypeFilter ?: any ;
311
319
}
312
320
313
321
export function HomeLayout ( props : HomeLayoutProps ) {
322
+ const { breadcrumb = [ ] ,
323
+ elements = [ ] ,
324
+ localMarketplaceApps = [ ] ,
325
+ globalMarketplaceApps = [ ] ,
326
+ mode ,
327
+ setCurrentPage,
328
+ setPageSize,
329
+ pageSize,
330
+ currentPage,
331
+ setSearchValues,
332
+ total,
333
+ typeFilter,
334
+ setTypeFilter,
335
+ } = props ;
336
+ console . log ( "elements" , elements , total ) ;
337
+ const handlePageChange = ( page : number ) => {
338
+ setCurrentPage ( page ) ;
339
+ } ;
314
340
315
- const { breadcrumb = [ ] , elements = [ ] , localMarketplaceApps = [ ] , globalMarketplaceApps = [ ] , mode } = props ;
316
-
317
- console . log ( "folder" , elements ) ;
341
+ const handlePageSizeChange = ( current : number , size : number ) => {
342
+ setPageSize ( size ) ;
343
+ } ;
318
344
319
345
const categoryOptions = [
320
346
{ label : < FilterMenuItem > { trans ( "home.allCategories" ) } </ FilterMenuItem > , value : 'All' } ,
@@ -331,10 +357,9 @@ export function HomeLayout(props: HomeLayoutProps) {
331
357
const user = useSelector ( getUser ) ;
332
358
const isFetching = useSelector ( isFetchingFolderElements ) ;
333
359
const isSelfHost = window . location . host !== 'app.lowcoder.cloud' ;
334
- const [ typeFilter , setTypeFilter ] = useState < HomeResKey > ( "All" ) ;
335
360
const [ categoryFilter , setCategoryFilter ] = useState < ApplicationCategoriesEnum | "All" > ( "All" ) ;
336
361
const [ searchValue , setSearchValue ] = useState ( "" ) ;
337
- const [ visibility , setVisibility ] = useState ( true ) ;
362
+ const [ visibility , setVisibility ] = useState ( mode !== "marketplace" ) ;
338
363
const [ layout , setLayout ] = useState < HomeLayoutType > (
339
364
checkIsMobile ( window . innerWidth ) ? "card" : getHomeLayout ( )
340
365
) ;
@@ -352,7 +377,15 @@ export function HomeLayout(props: HomeLayoutProps) {
352
377
return null ;
353
378
}
354
379
355
- var displayElements = elements ;
380
+ var displayElements = elements . sort ( ( a , b ) => {
381
+ if ( a . folder && ! b . folder ) {
382
+ return - 1 ; // a is a folder and should come first
383
+ } else if ( ! a . folder && b . folder ) {
384
+ return 1 ; // b is a folder and should come first
385
+ } else {
386
+ return 0 ; // both are folders or both are not, keep original order
387
+ }
388
+ } ) ;
356
389
357
390
if ( mode === "marketplace" && isSelfHost ) {
358
391
const markedLocalApps = localMarketplaceApps . map ( app => ( { ...app , isLocalMarketplace : true } ) ) ;
@@ -364,27 +397,7 @@ export function HomeLayout(props: HomeLayoutProps) {
364
397
const markedLocalApps = localMarketplaceApps . map ( app => ( { ...app , isLocalMarketplace : true } ) ) ;
365
398
displayElements = [ ...markedLocalApps ] ;
366
399
}
367
-
368
400
const resList : HomeRes [ ] = displayElements
369
- . filter ( ( e ) =>
370
- searchValue
371
- ? e . name ?. toLocaleLowerCase ( ) . includes ( searchValue ?. toLocaleLowerCase ( ) ) ||
372
- e . createBy ?. toLocaleLowerCase ( ) . includes ( searchValue ?. toLocaleLowerCase ( ) )
373
- : true
374
- )
375
- . filter ( ( e ) => {
376
- if ( HomeResTypeEnum [ typeFilter ] . valueOf ( ) === HomeResTypeEnum . All ) {
377
- return true ;
378
- }
379
- if ( e . folder ) {
380
- return HomeResTypeEnum [ typeFilter ] === HomeResTypeEnum . Folder ;
381
- } else {
382
- if ( typeFilter === "Navigation" ) {
383
- return NavigationTypes . map ( ( t ) => t . valueOf ( ) ) . includes ( e . applicationType ) ;
384
- }
385
- return HomeResTypeEnum [ typeFilter ] . valueOf ( ) === e . applicationType ;
386
- }
387
- } )
388
401
. filter ( ( e ) => {
389
402
// If "All" is selected, do not filter out any elements based on category
390
403
if ( categoryFilter === 'All' || ! categoryFilter ) {
@@ -425,7 +438,6 @@ export function HomeLayout(props: HomeLayoutProps) {
425
438
}
426
439
) ;
427
440
428
- console . log ( resList ) ;
429
441
430
442
const getFilterMenuItem = ( type : HomeResTypeEnum ) => {
431
443
const Icon = HomeResInfo [ type ] . icon ;
@@ -474,7 +486,7 @@ export function HomeLayout(props: HomeLayoutProps) {
474
486
475
487
{ showNewUserGuide ( user ) && < HomepageTourV2 /> }
476
488
477
- < HomeView >
489
+ < HomeView >
478
490
< StyleHomeCover >
479
491
< h1 style = { { color : "#ffffff" , marginTop : "12px" } } >
480
492
{ mode === "marketplace" && trans ( "home.appMarketplace" ) }
@@ -491,8 +503,11 @@ export function HomeLayout(props: HomeLayoutProps) {
491
503
{ mode !== "folders" && mode !== "module" && (
492
504
< FilterDropdown
493
505
variant = "borderless"
494
- value = { typeFilter }
495
- onChange = { ( value : any ) => setTypeFilter ( value as HomeResKey ) }
506
+ value = { HomeResTypeEnum [ typeFilter || 0 ] }
507
+ onChange = { ( value : any ) => {
508
+ console . log ( HomeResTypeEnum [ value ] )
509
+ setTypeFilter ( HomeResTypeEnum [ value ] ) }
510
+ }
496
511
options = { [
497
512
getFilterMenuItem ( HomeResTypeEnum . All ) ,
498
513
getFilterMenuItem ( HomeResTypeEnum . Application ) ,
@@ -519,6 +534,7 @@ export function HomeLayout(props: HomeLayoutProps) {
519
534
placeholder = { trans ( "search" ) }
520
535
value = { searchValue }
521
536
onChange = { ( e ) => setSearchValue ( e . target . value ) }
537
+ onEnterPress = { ( value ) => setSearchValues ( value ) }
522
538
style = { { width : "192px" , height : "32px" , margin : "0" } }
523
539
/>
524
540
{ mode !== "trash" && mode !== "marketplace" && user . orgDev && (
@@ -615,15 +631,21 @@ export function HomeLayout(props: HomeLayoutProps) {
615
631
</ >
616
632
) }
617
633
</ ContentWrapper >
618
- { visibility ? < div >
619
- < Divider />
634
+ { visibility && resList . length ? < div >
620
635
< PaginationLayout >
621
- < Pagination total = { 50 } showSizeChanger />
636
+ < Pagination
637
+ current = { currentPage }
638
+ pageSize = { pageSize }
639
+ onChange = { handlePageChange }
640
+ onShowSizeChange = { handlePageSizeChange }
641
+ total = { total }
642
+ showSizeChanger
643
+ />
622
644
</ PaginationLayout >
623
645
</ div > : null }
624
646
</ Card >
625
647
626
- </ HomeView >
648
+ </ HomeView >
627
649
628
650
</ Wrapper >
629
651
) ;
0 commit comments