@@ -289,6 +289,36 @@ describe('Column Pinning UI #grid', () => {
289289 ) . toBe ( true ) ;
290290 } ) ;
291291 } ) ;
292+
293+ it ( 'Checks order of columns after unpinning if there are hidden columns' , ( ) => {
294+ // Columns are ordered like this: ID, ProductName, Downloads, Released, ReleaseDate
295+ expect ( grid . getColumnByName ( 'Downloads' ) . index ) . toBe ( 2 ) ;
296+ expect ( grid . getColumnByName ( 'Released' ) . index ) . toBe ( 3 ) ;
297+
298+ grid . getColumnByName ( 'ID' ) . hidden = true ;
299+ grid . getColumnByName ( 'Downloads' ) . pin ( ) ;
300+ grid . getColumnByName ( 'Released' ) . pin ( ) ;
301+ fix . detectChanges ( ) ;
302+
303+ // unpinnedColumns contains only visible cols
304+ expect ( grid . unpinnedColumns . length ) . toBe ( 2 ) ;
305+ // _unpinnedColumns contains all unpinned cols (including hidden)
306+ expect ( ( grid as any ) . _unpinnedColumns . length ) . toBe ( 3 ) ;
307+
308+ grid . getColumnByName ( 'Released' ) . unpin ( ) ;
309+ fix . detectChanges ( ) ;
310+
311+ expect ( grid . unpinnedColumns . length ) . toBe ( 3 ) ;
312+ expect ( ( grid as any ) . _unpinnedColumns . length ) . toBe ( 4 ) ;
313+ // Downloads is still pinned; ID is not part of unpinnedColumns
314+ expect ( grid . getColumnByName ( 'Released' ) . field ) . toEqual ( ( grid as any ) . unpinnedColumns [ 1 ] . field ) ;
315+ expect ( grid . getColumnByName ( 'Released' ) . field ) . toEqual ( ( grid as any ) . _unpinnedColumns [ 2 ] . field ) ;
316+
317+ grid . getColumnByName ( 'Downloads' ) . unpin ( ) ;
318+ fix . detectChanges ( ) ;
319+ expect ( grid . getColumnByName ( 'Downloads' ) . field ) . toEqual ( ( grid as any ) . unpinnedColumns [ 1 ] . field ) ;
320+ expect ( grid . getColumnByName ( 'Downloads' ) . field ) . toEqual ( ( grid as any ) . _unpinnedColumns [ 2 ] . field ) ;
321+ } ) ;
292322 } ) ;
293323
294324 describe ( 'Pinning with Column Groups' , ( ) => {
0 commit comments