@@ -2131,6 +2131,9 @@ export default {
});
}
},
+ onOverlayMouseUp(event) {
+ this.onOverlayClick(event);
+ },
createResponsiveStyle() {
if (this.numberOfMonths > 1 && this.responsiveOptions) {
if (!this.responsiveStyleElement) {
diff --git a/src/components/datatable/ColumnFilter.vue b/src/components/datatable/ColumnFilter.vue
index bf9ae8dc3..6312f6dcb 100644
--- a/src/components/datatable/ColumnFilter.vue
+++ b/src/components/datatable/ColumnFilter.vue
@@ -9,7 +9,7 @@
-
+
@@ -346,7 +346,15 @@ export default {
hide() {
this.overlayVisible = false;
},
- onContentClick() {
+ onContentClick(event) {
+ this.selfClick = true;
+
+ OverlayEventBus.emit('overlay-click', {
+ originalEvent: event,
+ target: this.overlay
+ });
+ },
+ onContentMouseDown() {
this.selfClick = true;
},
onOverlayEnter(el) {
@@ -360,7 +368,7 @@ export default {
this.bindResizeListener();
this.overlayEventListener = (e) => {
- if (this.overlay.contains(e.target)) {
+ if (!this.isOutsideClicked(e.target)) {
this.selfClick = true;
}
}
@@ -383,13 +391,16 @@ export default {
overlayRef(el) {
this.overlay = el;
},
- isTargetClicked(event) {
- return this.$refs.icon && (this.$refs.icon === event.target || this.$refs.icon.contains(event.target));
+ isOutsideClicked(target) {
+ return !this.isTargetClicked(target) && this.overlay && !(this.overlay.isSameNode(target) || this.overlay.contains(target));
+ },
+ isTargetClicked(target) {
+ return this.$refs.icon && (this.$refs.icon.isSameNode(target) || this.$refs.icon.contains(target));
},
bindOutsideClickListener() {
if (!this.outsideClickListener) {
this.outsideClickListener = (event) => {
- if (this.overlayVisible && !this.selfClick && !this.isTargetClicked(event)) {
+ if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event.target)) {
this.overlayVisible = false;
}
this.selfClick = false;