Skip to content

Commit 5c51a23

Browse files
committed
Version bump
1 parent f1c52bf commit 5c51a23

File tree

4 files changed

+256
-87
lines changed

4 files changed

+256
-87
lines changed

dist/v-tooltip.esm.js

Lines changed: 127 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3486,6 +3486,76 @@ var directive = {
34863486
}
34873487
};
34883488

3489+
function addListeners(el) {
3490+
el.addEventListener('click', onClick);
3491+
el.addEventListener('touchstart', onTouchStart, supportsPassive ? {
3492+
passive: true
3493+
} : false);
3494+
}
3495+
3496+
function removeListeners(el) {
3497+
el.removeEventListener('click', onClick);
3498+
el.removeEventListener('touchstart', onTouchStart);
3499+
el.removeEventListener('touchend', onTouchEnd);
3500+
el.removeEventListener('touchcancel', onTouchCancel);
3501+
}
3502+
3503+
function onClick(event) {
3504+
var el = event.currentTarget;
3505+
event.closePopover = !el.$_vclosepopover_touch;
3506+
}
3507+
3508+
function onTouchStart(event) {
3509+
if (event.changedTouches.length === 1) {
3510+
var el = event.currentTarget;
3511+
el.$_vclosepopover_touch = true;
3512+
var touch = event.changedTouches[0];
3513+
el.$_vclosepopover_touchPoint = touch;
3514+
el.addEventListener('touchend', onTouchEnd);
3515+
el.addEventListener('touchcancel', onTouchCancel);
3516+
}
3517+
}
3518+
3519+
function onTouchEnd(event) {
3520+
var el = event.currentTarget;
3521+
el.$_vclosepopover_touch = false;
3522+
if (event.changedTouches.length === 1) {
3523+
var touch = event.changedTouches[0];
3524+
var firstTouch = el.$_vclosepopover_touchPoint;
3525+
event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;
3526+
}
3527+
}
3528+
3529+
function onTouchCancel(event) {
3530+
var el = event.currentTarget;
3531+
el.$_vclosepopover_touch = false;
3532+
}
3533+
3534+
var vclosepopover = {
3535+
bind: function bind(el, _ref) {
3536+
var value = _ref.value;
3537+
3538+
if (typeof value === 'undefined' || value) {
3539+
addListeners(el);
3540+
}
3541+
},
3542+
update: function update(el, _ref2) {
3543+
var value = _ref2.value,
3544+
oldValue = _ref2.oldValue;
3545+
3546+
if (value !== oldValue) {
3547+
if (typeof value === 'undefined' || value) {
3548+
addListeners(el);
3549+
} else {
3550+
removeListeners(el);
3551+
}
3552+
}
3553+
},
3554+
unbind: function unbind(el) {
3555+
removeListeners(el);
3556+
}
3557+
};
3558+
34893559
function getInternetExplorerVersion() {
34903560
var ua = window.navigator.userAgent;
34913561

@@ -3613,6 +3683,8 @@ if (typeof window !== 'undefined' && typeof navigator !== 'undefined') {
36133683
isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
36143684
}
36153685

3686+
var openPopovers = [];
3687+
36163688
var Popover = { render: function render() {
36173689
var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: "v-popover", class: _vm.cssClass }, [_c('span', { ref: "trigger", staticClass: "trigger", staticStyle: { "display": "inline-block" }, attrs: { "aria-describedby": _vm.popoverId } }, [_vm._t("default")], 2), _vm._v(" "), _c('div', { ref: "popover", class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass], style: {
36183690
display: _vm.isOpen ? '' : 'none'
@@ -3853,9 +3925,8 @@ var Popover = { render: function render() {
38533925
dispose: function dispose() {
38543926
this.$_isDisposed = true;
38553927
this.$_removeEventListeners();
3856-
this.$_removeGlobalEvents();
3928+
this.hide({ skipDelay: true });
38573929
if (this.popperInstance) {
3858-
this.hide();
38593930
this.popperInstance.destroy();
38603931

38613932
// destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element
@@ -3891,7 +3962,6 @@ var Popover = { render: function render() {
38913962
this.isOpen = true;
38923963
this.popperInstance.enableEventListeners();
38933964
this.popperInstance.update();
3894-
this.$_addGlobalEvents();
38953965
}
38963966

38973967
if (!this.$_mounted) {
@@ -3940,7 +4010,6 @@ var Popover = { render: function render() {
39404010
requestAnimationFrame(function () {
39414011
if (!_this3.$_isDisposed) {
39424012
_this3.isOpen = true;
3943-
_this3.$_addGlobalEvents();
39444013
} else {
39454014
_this3.dispose();
39464015
}
@@ -3950,6 +4019,8 @@ var Popover = { render: function render() {
39504019
}
39514020
});
39524021
}
4022+
4023+
openPopovers.push(this);
39534024
},
39544025
$_hide: function $_hide() {
39554026
var _this4 = this;
@@ -3959,9 +4030,15 @@ var Popover = { render: function render() {
39594030
return;
39604031
}
39614032

4033+
var index = openPopovers.indexOf(this);
4034+
if (index !== -1) {
4035+
openPopovers.splice(index, 1);
4036+
}
4037+
39624038
this.isOpen = false;
3963-
this.popperInstance.disableEventListeners();
3964-
this.$_removeGlobalEvents();
4039+
if (this.popperInstance) {
4040+
this.popperInstance.disableEventListeners();
4041+
}
39654042

39664043
clearTimeout(this.$_disposeTimer);
39674044
var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;
@@ -4134,24 +4211,6 @@ var Popover = { render: function render() {
41344211
});
41354212
this.$_events = [];
41364213
},
4137-
$_addGlobalEvents: function $_addGlobalEvents() {
4138-
if (this.autoHide) {
4139-
if (isIOS) {
4140-
document.addEventListener('touchstart', this.$_handleWindowTouchstart, supportsPassive ? {
4141-
passive: true
4142-
} : false);
4143-
} else {
4144-
window.addEventListener('click', this.$_handleWindowClick);
4145-
}
4146-
}
4147-
},
4148-
$_removeGlobalEvents: function $_removeGlobalEvents() {
4149-
if (isIOS) {
4150-
document.removeEventListener('touchstart', this.$_handleWindowTouchstart);
4151-
} else {
4152-
window.removeEventListener('click', this.$_handleWindowClick);
4153-
}
4154-
},
41554214
$_updatePopper: function $_updatePopper(cb) {
41564215
if (this.isOpen && this.popperInstance) {
41574216
cb();
@@ -4168,34 +4227,30 @@ var Popover = { render: function render() {
41684227
}
41694228
}
41704229
},
4171-
$_handleWindowClick: function $_handleWindowClick(event) {
4230+
$_handleGlobalClose: function $_handleGlobalClose(event) {
4231+
var _this8 = this;
4232+
41724233
var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
41734234

41744235
var popoverNode = this.$refs.popover;
41754236

4176-
if (event.closePopover || !popoverNode.contains(event.target)) {
4177-
this.$_scheduleHide({ event: event });
4178-
this.$emit('auto-hide');
4237+
if (event.closePopover || this.autoHide && !popoverNode.contains(event.target)) {
4238+
this.hide({ event: event });
4239+
4240+
if (event.closePopover) {
4241+
this.$emit('close-directive');
4242+
} else {
4243+
this.$emit('auto-hide');
4244+
}
41794245

41804246
if (touch) {
41814247
this.$_preventOpen = true;
4182-
document.addEventListener('touchend', this.$_handleWindowTouchend, supportsPassive ? {
4183-
passive: true
4184-
} : false);
4248+
setTimeout(function () {
4249+
_this8.$_preventOpen = false;
4250+
}, 300);
41854251
}
41864252
}
41874253
},
4188-
$_handleWindowTouchstart: function $_handleWindowTouchstart(event) {
4189-
this.$_handleWindowClick(event, true);
4190-
},
4191-
$_handleWindowTouchend: function $_handleWindowTouchend(event) {
4192-
var _this8 = this;
4193-
4194-
document.removeEventListener('touchend', this.$_handleWindowTouchend);
4195-
setTimeout(function () {
4196-
_this8.$_preventOpen = false;
4197-
}, 300);
4198-
},
41994254
$_handleResize: function $_handleResize() {
42004255
if (this.isOpen && this.popperInstance) {
42014256
this.popperInstance.update();
@@ -4205,6 +4260,32 @@ var Popover = { render: function render() {
42054260
}
42064261
};
42074262

4263+
if (typeof document !== 'undefined' && typeof window !== 'undefined') {
4264+
if (isIOS) {
4265+
document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {
4266+
passive: true
4267+
} : false);
4268+
} else {
4269+
window.addEventListener('click', handleGlobalClick);
4270+
}
4271+
}
4272+
4273+
function handleGlobalClick(event) {
4274+
handleGlobalClose(event);
4275+
}
4276+
4277+
function handleGlobalTouchend(event) {
4278+
handleGlobalClose(event, true);
4279+
}
4280+
4281+
function handleGlobalClose(event) {
4282+
var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4283+
4284+
for (var i = 0; i < openPopovers.length; i++) {
4285+
openPopovers[i].$_handleGlobalClose(event, touch);
4286+
}
4287+
}
4288+
42084289
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
42094290

42104291

@@ -6434,13 +6515,16 @@ function install(Vue) {
64346515
var finalOptions = {};
64356516
lodash_merge(finalOptions, defaultOptions, options);
64366517

6518+
plugin.options = finalOptions;
64376519
directive.options = finalOptions;
64386520

64396521
Vue.directive('tooltip', directive);
6522+
Vue.directive('close-popover', vclosepopover);
64406523
Vue.component('v-popover', Popover);
64416524
}
64426525

64436526
var VTooltip = directive;
6527+
var VClosePopover = vclosepopover;
64446528
var VPopover = Popover;
64456529

64466530
var plugin = {
@@ -6466,5 +6550,5 @@ if (GlobalVue) {
64666550
GlobalVue.use(plugin);
64676551
}
64686552

6469-
export { install, VTooltip, VPopover };
6553+
export { install, VTooltip, VClosePopover, VPopover };
64706554
export default plugin;

dist/v-tooltip.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)