@@ -70,6 +70,7 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
7070 private handleRootMouseDown ?: RootMouseDownHandler ;
7171 private scrollableAncestors : Element [ ] = [ ] ;
7272 private mutationObserver : MutationObserver | undefined ;
73+ private rootElement : HTMLElement | undefined ;
7374 @tracked private _contentWormhole ?: Element ;
7475 @tracked animationClass = this . transitioningInClass ;
7576
@@ -186,16 +187,18 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
186187 ) ;
187188
188189 // We need to register closing event on shadow dom element, otherwise all clicks inside a shadow dom are not closing the dropdown
189- let rootElement ;
190+ // In additional store the rootElement for outside clicks (ensure that we do removeEventListener on correct element)
190191 if (
191192 this . _contentWormhole &&
192193 this . _contentWormhole . getRootNode ( ) instanceof ShadowRoot
193194 ) {
194- rootElement = this . _contentWormhole . getRootNode ( ) as HTMLElement ;
195+ this . rootElement = this . _contentWormhole . getRootNode ( ) as HTMLElement ;
196+ } else {
197+ this . rootElement = undefined ;
195198 }
196199
197- if ( rootElement ) {
198- rootElement . addEventListener (
200+ if ( this . rootElement ) {
201+ this . rootElement . addEventListener (
199202 this . args . rootEventType || 'click' ,
200203 this . handleRootMouseDown ,
201204 true ,
@@ -216,13 +219,13 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
216219 ) ;
217220 document . addEventListener ( 'touchend' , this . handleRootMouseDown , true ) ;
218221
219- if ( rootElement ) {
220- rootElement . addEventListener (
222+ if ( this . rootElement ) {
223+ this . rootElement . addEventListener (
221224 'touchstart' ,
222225 this . touchStartHandlerBound ,
223226 true ,
224227 ) ;
225- rootElement . addEventListener (
228+ this . rootElement . addEventListener (
226229 'touchend' ,
227230 this . handleRootMouseDown ,
228231 true ,
@@ -247,16 +250,8 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
247250 true ,
248251 ) ;
249252
250- let rootElement ;
251- if (
252- this . _contentWormhole &&
253- this . _contentWormhole . getRootNode ( ) instanceof ShadowRoot
254- ) {
255- rootElement = this . _contentWormhole . getRootNode ( ) as HTMLElement ;
256- }
257-
258- if ( rootElement ) {
259- rootElement . removeEventListener (
253+ if ( this . rootElement ) {
254+ this . rootElement . removeEventListener (
260255 this . args . rootEventType || 'click' ,
261256 this . handleRootMouseDown as RootMouseDownHandler ,
262257 true ,
@@ -275,13 +270,13 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
275270 true ,
276271 ) ;
277272
278- if ( rootElement ) {
279- rootElement . removeEventListener (
273+ if ( this . rootElement ) {
274+ this . rootElement . removeEventListener (
280275 'touchstart' ,
281276 this . touchStartHandlerBound ,
282277 true ,
283278 ) ;
284- rootElement . removeEventListener (
279+ this . rootElement . removeEventListener (
285280 'touchend' ,
286281 this . handleRootMouseDown as RootMouseDownHandler ,
287282 true ,
0 commit comments