@@ -16,6 +16,7 @@ const gridStub = {
1616 applyHtmlCode : ( elm , val ) => elm . innerHTML = val || '' ,
1717 getColumnIndex : vi . fn ( ) ,
1818 getColumns : vi . fn ( ) ,
19+ getGridPosition : vi . fn ( ) ,
1920 getOptions : vi . fn ( ) ,
2021 getSelectedRows : vi . fn ( ) ,
2122 getUID : ( ) => gridUid ,
@@ -362,6 +363,26 @@ describe('ColumnPickerControl', () => {
362363 expect ( control . menuElement ?. classList . contains ( 'slick-dark-mode' ) ) . toBeTruthy ( ) ;
363364 } ) ;
364365
366+ it ( 'should reposition menu to the left when no available space on the right' , ( ) => {
367+ vi . spyOn ( gridStub , 'getGridPosition' ) . mockReturnValue ( { left : 50 , top : 0 , right : 0 , bottom : 200 , height : 22 , width : 300 , visible : true } ) ;
368+ vi . spyOn ( gridStub , 'getColumnIndex' ) . mockReturnValue ( undefined as any ) . mockReturnValue ( 1 ) ;
369+
370+ control . init ( ) ;
371+
372+ const groupElm = createDomElement ( 'div' , { className : 'slick-column-name' } ) ;
373+ gridStub . onPreHeaderContextMenu . notify ( { node : groupElm , grid : gridStub } , { ...new SlickEventData ( ) , preventDefault : vi . fn ( ) , target : groupElm , pageX : 305 } as any , gridStub ) ;
374+ vi . spyOn ( control , 'createPickerMenu' ) . mockImplementation ( ( ) => {
375+ if ( control . menuElement ) {
376+ Object . defineProperty ( control . menuElement , 'clientWidth' , { writable : true , value : 122 } ) ;
377+ return control . menuElement ;
378+ }
379+ return document . createElement ( 'div' ) ;
380+ } ) ;
381+ gridStub . onPreHeaderContextMenu . notify ( { node : groupElm , grid : gridStub } , { ...new SlickEventData ( ) , preventDefault : vi . fn ( ) , target : groupElm , pageX : 305 } as any , gridStub ) ;
382+ Object . defineProperty ( control . menuElement , 'clientWidth' , { writable : true , value : 122 } ) ;
383+ expect ( control . menuElement ?. style . left ) . toBe ( '183px' ) ;
384+ } ) ;
385+
365386 describe ( 'onColumnsReordered event' , ( ) => {
366387 it ( 'should reorder some columns' , ( ) => {
367388 const columnsUnorderedMock : Column [ ] = [
0 commit comments