@@ -60,8 +60,12 @@ export interface GridLayoutProps {
6060 onActiveWidgetsChange ?: ( widgetTypes : string [ ] ) => void ;
6161 /** Widget type currently being dragged from drawer */
6262 droppingWidgetType ?: string ;
63- /** Resize configuration options */
63+ /** Resize configuration overrides */
6464 resizeWidgetConfig ?: Partial < ResizeConfig > ;
65+ /** Custom breakpoints for responsive layout (container width thresholds in px) */
66+ customBreakpoints ?: Record < Variants , number > ;
67+ /** Custom column counts per breakpoint variant */
68+ customColumns ?: Record < Variants , number > ;
6569}
6670
6771const LayoutEmptyState = ( {
@@ -107,7 +111,10 @@ const GridLayout = ({
107111 onActiveWidgetsChange,
108112 droppingWidgetType,
109113 resizeWidgetConfig,
114+ customBreakpoints,
115+ customColumns,
110116} : GridLayoutProps ) => {
117+ const activeColumns = customColumns ?? columns ;
111118 const [ isDragging , setIsDragging ] = useState ( false ) ;
112119 const [ isInitialRender , setIsInitialRender ] = useState ( true ) ;
113120 const [ layoutVariant , setLayoutVariant ] = useState < Variants > ( 'xl' ) ;
@@ -172,8 +179,8 @@ const GridLayout = ({
172179 ...layoutItem ,
173180 ...widget . defaults ,
174181 // make sure the configuration is valid for all layout sizes
175- w : size === layoutVariant ? layoutItem . w : Math . min ( widget . defaults . w , columns [ size as Variants ] ) ,
176- x : size === layoutVariant ? layoutItem . x : Math . min ( layoutItem . x , columns [ size as Variants ] ) ,
182+ w : size === layoutVariant ? layoutItem . w : Math . min ( widget . defaults . w , activeColumns [ size as Variants ] ) ,
183+ x : size === layoutVariant ? layoutItem . x : Math . min ( layoutItem . x , activeColumns [ size as Variants ] ) ,
177184 widgetType : data ,
178185 i : getWidgetIdentifier ( data ) ,
179186 title : 'New title' ,
@@ -226,7 +233,7 @@ const GridLayout = ({
226233 // Update layout variant when container width changes
227234 useEffect ( ( ) => {
228235 if ( mounted && layoutWidth > 0 ) {
229- const variant : Variants = getGridDimensions ( layoutWidth ) ;
236+ const variant : Variants = getGridDimensions ( layoutWidth , customBreakpoints ) ;
230237 setLayoutVariant ( variant ) ;
231238 }
232239 } , [ layoutWidth , mounted ] ) ;
@@ -247,7 +254,7 @@ const GridLayout = ({
247254 width = { effectiveWidth }
248255 droppingItem = { droppingItemTemplate }
249256 gridConfig = { {
250- cols : columns [ layoutVariant ] ,
257+ cols : activeColumns [ layoutVariant ] ,
251258 rowHeight : 56 ,
252259 } }
253260 dragConfig = { {
@@ -283,7 +290,7 @@ const GridLayout = ({
283290 widgetType = { widgetType }
284291 widgetConfig = { {
285292 ...layoutItem ,
286- colWidth : effectiveWidth / columns [ layoutVariant ] ,
293+ colWidth : effectiveWidth / activeColumns [ layoutVariant ] ,
287294 config,
288295 maxH : layoutItem . maxH ?? widget . defaults . maxH ,
289296 minH : layoutItem . minH ?? widget . defaults . minH ,
0 commit comments