@@ -371,6 +371,53 @@ describe('gridstack engine', function() {
371371 } ) ;
372372 } ) ;
373373
374+ describe ( 'test columnChanged and save' , function ( ) {
375+ beforeAll ( function ( ) {
376+ } ) ;
377+ it ( 'wont\'t break layouts with 12 columns' , function ( ) {
378+ engine = new GridStackEngine ( { column : 12 } ) ;
379+ // Add two side-by-side components 6+6 = 12 columns
380+ engine . addNode ( { x : 0 , y : 0 , w : 6 , h : 1 , id : "left" } ) ;
381+ engine . addNode ( { x : 6 , y : 0 , w : 6 , h : 1 , id : "right" } ) ;
382+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
383+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 6 , h : 1 } ) ) ;
384+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 6 , y : 0 , w : 6 , h : 1 } ) ) ;
385+ // Resize to 1 column
386+ engine . column = 1 ;
387+ engine . columnChanged ( 12 , 1 ) ;
388+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
389+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 1 , h : 1 } ) ) ;
390+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 1 , h : 1 } ) ) ;
391+ // Resize back to 12 column
392+ engine . column = 12 ;
393+ engine . columnChanged ( 1 , 12 ) ;
394+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
395+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 6 , h : 1 } ) ) ;
396+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 6 , y : 0 , w : 6 , h : 1 } ) ) ;
397+ } ) ;
398+ it ( 'wont\'t break layouts with more than 12 columns' , function ( ) {
399+ engine = new GridStackEngine ( { column : 24 } ) ;
400+ // Add two side-by-side components 12+12 = 24 columns
401+ engine . addNode ( { x : 0 , y : 0 , w : 12 , h : 1 , id : "left" } ) ;
402+ engine . addNode ( { x : 12 , y : 0 , w : 12 , h : 1 , id : "right" } ) ;
403+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
404+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 12 , h : 1 } ) ) ;
405+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 12 , y : 0 , w : 12 , h : 1 } ) ) ;
406+ // Resize to 1 column
407+ engine . column = 1 ;
408+ engine . columnChanged ( 24 , 1 ) ;
409+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
410+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 1 , h : 1 } ) ) ;
411+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 1 , w : 1 , h : 1 } ) ) ;
412+ // Resize back to 24 column
413+ engine . column = 24 ;
414+ engine . columnChanged ( 1 , 24 ) ;
415+ engine . save ( ) . forEach ( node => engine . nodeBoundFix ( findNode ( engine , node . id ! ) ! ) ) ;
416+ expect ( findNode ( engine , "left" ) ) . toEqual ( jasmine . objectContaining ( { x : 0 , y : 0 , w : 12 , h : 1 } ) ) ;
417+ expect ( findNode ( engine , "right" ) ) . toEqual ( jasmine . objectContaining ( { x : 12 , y : 0 , w : 12 , h : 1 } ) ) ;
418+ } ) ;
419+ } ) ;
420+
374421 describe ( 'test compact' , function ( ) {
375422 beforeAll ( function ( ) {
376423 engine = new GridStackEngine ( ) ;
0 commit comments