@@ -459,8 +459,13 @@ class AppLayout extends ElementMixin(ThemableMixin(ControllerMixin(PolymerElemen
459459
460460 this . _navbarSizeObserver = new ResizeObserver ( ( ) => {
461461 requestAnimationFrame ( ( ) => {
462- this . _blockAnimationUntilAfterNextRender ( ) ;
463- this . _updateOffsetSize ( ) ;
462+ // Prevent updating offset size multiple times
463+ // during the drawer open / close transition.
464+ if ( this . __isDrawerAnimating ) {
465+ this . __updateOffsetSizePending = true ;
466+ } else {
467+ this . _updateOffsetSize ( ) ;
468+ }
464469 } ) ;
465470 } ) ;
466471 this . _navbarSizeObserver . observe ( this . $ . navbarTop ) ;
@@ -474,6 +479,24 @@ class AppLayout extends ElementMixin(ThemableMixin(ControllerMixin(PolymerElemen
474479 super . ready ( ) ;
475480 this . addController ( this . __focusTrapController ) ;
476481 this . __setAriaExpanded ( ) ;
482+
483+ this . $ . drawer . addEventListener ( 'transitionstart' , ( ) => {
484+ this . __isDrawerAnimating = true ;
485+ } ) ;
486+
487+ this . $ . drawer . addEventListener ( 'transitionend' , ( ) => {
488+ // Update offset size after drawer animation.
489+ if ( this . __updateOffsetSizePending ) {
490+ this . __updateOffsetSizePending = false ;
491+ this . _updateOffsetSize ( ) ;
492+ }
493+
494+ // Delay resetting the flag until animation frame
495+ // to avoid updating offset size again on resize.
496+ requestAnimationFrame ( ( ) => {
497+ this . __isDrawerAnimating = false ;
498+ } ) ;
499+ } ) ;
477500 }
478501
479502 /** @protected */
0 commit comments