diff --git a/packages/location-select/src/location-select.js b/packages/location-select/src/location-select.js index b0ba579eaa209a2e3544ddf6c23ef39ffcc4293d..44b49571e2bd577f75e7845140aac4f96592a19b 100644 --- a/packages/location-select/src/location-select.js +++ b/packages/location-select/src/location-select.js @@ -81,15 +81,11 @@ export class LocationSelect extends ScopedElementsMixin(LitElement) { this.updateComplete.then(()=>{ that.$select = that.$('#' + that.selectId); - // close the selector on blur of the web component - $(that).blur(() => { - // the 500ms delay is a workaround to actually get an item selected when clicking on it, - // because the blur gets also fired when clicking in the selector - setTimeout(() => { - if (this.select2IsInitialized()) { - that.$select.select2('close'); - } - }, 500); + // Close the popup when clicking outside of select2 + document.addEventListener('click', (ev) => { + if (!ev.composedPath().includes(this)) { + this._closeSelect2(); + } }); // try an init when user-interface is loaded @@ -97,6 +93,14 @@ export class LocationSelect extends ScopedElementsMixin(LitElement) { }); } + _closeSelect2() { + const $select = this.$('#' + this.selectId); + console.assert($select.length, "select2 missing"); + if (this.select2IsInitialized($select)) { + $select.select2('close'); + } + } + initJSONLD(ignorePreset = false) { const that = this;