@@ -11,17 +11,22 @@ import { createElement, ReactElement, ReactNode, useCallback, useMemo } from "re
1111import { GalleryPreviewProps } from "../typings/GalleryProps" ;
1212import { Gallery as GalleryComponent } from "./components/Gallery" ;
1313import { useItemEventsController } from "./features/item-interaction/ItemEventsController" ;
14- import { useGridPositions } from "./features/useGridPositions " ;
14+ import { useGridPositionsPreview } from "./features/useGridPositionsPreview " ;
1515import { useItemPreviewHelper } from "./helpers/ItemPreviewHelper" ;
1616import { useItemSelectHelper } from "./helpers/useItemSelectHelper" ;
1717import "./ui/GalleryPreview.scss" ;
1818
19- const numberOfItems = 3 ;
20-
2119const SortAPI = getGlobalSortContext ( ) ;
2220
2321function Preview ( props : GalleryPreviewProps ) : ReactElement {
2422 const { emptyPlaceholder } = props ;
23+ const { numberOfColumns, numberOfRows, containerRef, numberOfItems } = useGridPositionsPreview ( {
24+ phoneItems : props . phoneItems ?? 1 ,
25+ tabletItems : props . tabletItems ?? 1 ,
26+ desktopItems : props . desktopItems ?? 1 ,
27+ totalItems : props . pageSize ?? 3
28+ } ) ;
29+
2530 const items : ObjectItem [ ] = Array . from ( { length : numberOfItems } ) . map ( ( _ , index ) => ( {
2631 id : String ( index ) as GUID
2732 } ) ) ;
@@ -66,48 +71,49 @@ function Preview(props: GalleryPreviewProps): ReactElement {
6671 ) ;
6772
6873 return (
69- < GalleryComponent
70- className = { props . class }
71- desktopItems = { props . content . widgetCount > 0 ? numberOfItems : props . desktopItems ! }
72- emptyPlaceholderRenderer = { useCallback (
73- ( renderWrapper : ( children : ReactNode ) => ReactElement ) => (
74- < emptyPlaceholder . renderer caption = "Empty list message: Place widgets here" >
75- { renderWrapper ( null ) }
76- </ emptyPlaceholder . renderer >
77- ) ,
78- [ emptyPlaceholder ]
79- ) }
80- header = {
81- < SortAPI . Provider value = { sortAPI } >
82- < props . filtersPlaceholder . renderer caption = "Place widgets like filter widget(s) and action button(s) here" >
83- < div />
84- </ props . filtersPlaceholder . renderer >
85- </ SortAPI . Provider >
86- }
87- showHeader
88- hasMoreItems = { false }
89- items = { items }
90- itemHelper = { useItemPreviewHelper ( {
91- contentValue : props . content ,
92- hasOnClick : props . onClick !== null
93- } ) }
94- numberOfItems = { props . pageSize ?? numberOfItems }
95- page = { 0 }
96- pageSize = { props . pageSize ?? numberOfItems }
97- paging = { props . pagination === "buttons" }
98- paginationPosition = { props . pagingPosition }
99- paginationType = { props . pagination }
100- showPagingButtons = { props . showPagingButtons }
101- showEmptyStatePreview = { props . showEmptyPlaceholder === "custom" }
102- phoneItems = { props . phoneItems ! }
103- tabletItems = { props . tabletItems ! }
104- selectHelper = { selectHelper }
105- itemEventsController = { itemEventsController }
106- focusController = { focusController }
107- getPosition = { getPositionCallback }
108- showRefreshIndicator = { false }
109- preview
110- />
74+ < div ref = { containerRef } >
75+ < GalleryComponent
76+ className = { props . class }
77+ desktopItems = { props . desktopItems ! }
78+ emptyPlaceholderRenderer = { useCallback (
79+ ( renderWrapper : ( children : ReactNode ) => ReactElement ) => (
80+ < emptyPlaceholder . renderer caption = "Empty list message: Place widgets here" >
81+ { renderWrapper ( null ) }
82+ </ emptyPlaceholder . renderer >
83+ ) ,
84+ [ emptyPlaceholder ]
85+ ) }
86+ header = {
87+ < SortAPI . Provider value = { sortAPI } >
88+ < props . filtersPlaceholder . renderer caption = "Place widgets like filter widget(s) and action button(s) here" >
89+ < div />
90+ </ props . filtersPlaceholder . renderer >
91+ </ SortAPI . Provider >
92+ }
93+ showHeader
94+ hasMoreItems = { false }
95+ items = { items }
96+ itemHelper = { useItemPreviewHelper ( {
97+ contentValue : props . content ,
98+ hasOnClick : props . onClick !== null
99+ } ) }
100+ numberOfItems = { props . pageSize ! }
101+ page = { 0 }
102+ pageSize = { props . pageSize ! }
103+ paging = { props . pagination === "buttons" }
104+ paginationPosition = { props . pagingPosition }
105+ paginationType = { props . pagination }
106+ showPagingButtons = { props . showPagingButtons }
107+ showEmptyStatePreview = { props . showEmptyPlaceholder === "custom" }
108+ phoneItems = { props . phoneItems ! }
109+ tabletItems = { props . tabletItems ! }
110+ selectHelper = { selectHelper }
111+ itemEventsController = { itemEventsController }
112+ focusController = { focusController }
113+ getPosition = { getPositionCallback }
114+ preview
115+ />
116+ </ div >
111117 ) ;
112118}
113119
0 commit comments