@@ -61,7 +61,7 @@ export class IronListAdapter {
6161 }
6262
6363 scrollToIndex ( index ) {
64- if ( typeof index !== 'number' || isNaN ( index ) || ! this . scrollTarget . offsetHeight ) {
64+ if ( typeof index !== 'number' || isNaN ( index ) || this . size === 0 || ! this . scrollTarget . offsetHeight ) {
6565 return ;
6666 }
6767 index = this . _clamp ( index , 0 , this . size - 1 ) ;
@@ -110,7 +110,9 @@ export class IronListAdapter {
110110
111111 __updateElement ( el , index ) {
112112 // Clean up temporary min height
113- el . style . minHeight = '' ;
113+ if ( el . style . minHeight ) {
114+ el . style . minHeight = '' ;
115+ }
114116
115117 this . updateElement ( el , index ) ;
116118
@@ -133,21 +135,30 @@ export class IronListAdapter {
133135 return ;
134136 }
135137
136- let fvi = this . firstVisibleIndex + this . _vidxOffset ;
137-
138- const fviOffsetBefore = this . __getIndexScrollOffset ( fvi ) ;
138+ // Record the scroll position before changing the size
139+ let fvi ; // first visible index
140+ let fviOffsetBefore ; // scroll offset of the first visible index
141+ if ( size > 0 ) {
142+ fvi = this . firstVisibleIndex + this . _vidxOffset ;
143+ fviOffsetBefore = this . __getIndexScrollOffset ( fvi ) ;
144+ }
139145
146+ // Change the size
140147 this . __size = size ;
141148 this . _itemsChanged ( {
142149 path : 'items'
143150 } ) ;
151+ flush ( ) ;
144152
145- fvi = Math . min ( fvi , size - 1 ) ;
146- this . scrollToIndex ( fvi ) ;
153+ // Try to restore the scroll position if the new size is larger than 0
154+ if ( size > 0 ) {
155+ fvi = Math . min ( fvi , size - 1 ) ;
156+ this . scrollToIndex ( fvi ) ;
147157
148- const fviOffsetAfter = this . __getIndexScrollOffset ( fvi ) ;
149- if ( fviOffsetBefore !== undefined && fviOffsetAfter !== undefined ) {
150- this . _scrollTop += fviOffsetBefore - fviOffsetAfter ;
158+ const fviOffsetAfter = this . __getIndexScrollOffset ( fvi ) ;
159+ if ( fviOffsetBefore !== undefined && fviOffsetAfter !== undefined ) {
160+ this . _scrollTop += fviOffsetBefore - fviOffsetAfter ;
161+ }
151162 }
152163
153164 if ( ! this . elementsContainer . children . length ) {
0 commit comments