File tree Expand file tree Collapse file tree 1 file changed +13
-11
lines changed Expand file tree Collapse file tree 1 file changed +13
-11
lines changed Original file line number Diff line number Diff line change @@ -508,21 +508,23 @@ export abstract class ViewBase<
508
508
private addHeaderNode ( node : ViewNode , promise : ViewNode [ ] | Promise < ViewNode [ ] > ) : ViewNode [ ] | Promise < ViewNode [ ] > {
509
509
if ( ! this . grouped || node !== this . root ) return promise ;
510
510
511
- if ( ! isPromise ( promise ) ) {
512
- if ( promise . length && ! ( promise [ 0 ] instanceof GroupedHeaderNode ) ) {
513
- promise . unshift ( new GroupedHeaderNode ( this as unknown as View , node ) ) ;
511
+ const ensureGroupedHeaderNode = ( children : ViewNode [ ] ) : ViewNode [ ] => {
512
+ if ( ! children . length ) return children ;
513
+ if ( children [ 0 ] instanceof GroupedHeaderNode ) return children . length === 1 ? [ ] : children ;
514
+
515
+ const index = children . findIndex ( n => n instanceof GroupedHeaderNode ) ;
516
+ if ( index === - 1 ) {
517
+ children . unshift ( new GroupedHeaderNode ( this as unknown as View , node ) ) ;
518
+ } else if ( index > 0 ) {
519
+ children . unshift ( children . splice ( index , 1 ) [ 0 ] ) ;
514
520
}
515
521
516
- return promise ;
517
- }
522
+ return children ;
523
+ } ;
518
524
519
- return promise . then ( c => {
520
- if ( c . length && ! ( c [ 0 ] instanceof GroupedHeaderNode ) ) {
521
- c . unshift ( new GroupedHeaderNode ( this as unknown as View , node ) ) ;
522
- }
525
+ if ( ! isPromise ( promise ) ) return ensureGroupedHeaderNode ( promise ) ;
523
526
524
- return c ;
525
- } ) ;
527
+ return promise . then ( c => ensureGroupedHeaderNode ( c ) ) ;
526
528
}
527
529
528
530
getChildren ( node ?: ViewNode ) : ViewNode [ ] | Promise < ViewNode [ ] > {
You can’t perform that action at this time.
0 commit comments