Skip to content

Commit 12af347

Browse files
author
Guillaume Chau
committed
New release
1 parent 28287e0 commit 12af347

File tree

6 files changed

+67
-278
lines changed

6 files changed

+67
-278
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,9 @@ Vue.component('v-popover', VPopover)
116116

117117
## Browser
118118

119-
Include [popper.js](https://popper.js.org/) with [v-tooltip](/dist/v-tooltip.min.js) in the page.
119+
Include [v-tooltip](/dist/v-tooltip.min.js) in the page.
120120

121121
```html
122-
<script src="https://unpkg.com/popper.js"></script>
123122
<script src="https://unpkg.com/v-tooltip"></script>
124123
```
125124

@@ -229,6 +228,7 @@ Or a reactive property:
229228
- `template` - HTML template of the tooltip.
230229
- `arrowSelector` - CSS selector to get the arrow element in the tooltip template.
231230
- `innerSelector` - CSS selector to get the inner content element in the tooltip template.
231+
- `autoHide` - Boolean: automatically close the tooltip on mouseover.
232232
- `popperOptions` - Other Popper.js options.
233233

234234
You can change the default values in the [Global options](#global-options).

dist/v-tooltip.esm.js

Lines changed: 31 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**!
22
* @fileOverview Kickass library to create and place poppers near their reference elements.
3-
* @version 1.12.6
3+
* @version 1.12.9
44
* @license
55
* Copyright (c) 2016 Federico Zivolo and contributors
66
*
@@ -22,7 +22,7 @@
2222
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2323
* SOFTWARE.
2424
*/
25-
var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
25+
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
2626
var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
2727
var timeoutDuration = 0;
2828
for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
@@ -39,7 +39,7 @@ function microtaskDebounce(fn) {
3939
return;
4040
}
4141
called = true;
42-
Promise.resolve().then(function () {
42+
window.Promise.resolve().then(function () {
4343
called = false;
4444
fn();
4545
});
@@ -96,7 +96,7 @@ function getStyleComputedProperty(element, property) {
9696
return [];
9797
}
9898
// NOTE: 1 DOM access here
99-
var css = window.getComputedStyle(element, null);
99+
var css = getComputedStyle(element, null);
100100
return property ? css[property] : css;
101101
}
102102

@@ -124,7 +124,7 @@ function getParentNode(element) {
124124
function getScrollParent(element) {
125125
// Return body, `getScroll` will take care to get the correct `scrollTop` from it
126126
if (!element) {
127-
return window.document.body;
127+
return document.body;
128128
}
129129

130130
switch (element.nodeName) {
@@ -166,7 +166,7 @@ function getOffsetParent(element) {
166166
return element.ownerDocument.documentElement;
167167
}
168168

169-
return window.document.documentElement;
169+
return document.documentElement;
170170
}
171171

172172
// .offsetParent will return the closest TD or TABLE in case
@@ -213,7 +213,7 @@ function getRoot(node) {
213213
function findCommonOffsetParent(element1, element2) {
214214
// This check is needed to avoid errors in case one of the elements isn't defined for any reason
215215
if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
216-
return window.document.documentElement;
216+
return document.documentElement;
217217
}
218218

219219
// Here we make sure to give as "start" the element that comes first in the DOM
@@ -305,7 +305,7 @@ function getBordersSize(styles, axis) {
305305
var sideA = axis === 'x' ? 'Left' : 'Top';
306306
var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
307307

308-
return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0];
308+
return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);
309309
}
310310

311311
/**
@@ -328,9 +328,9 @@ function getSize(axis, body, html, computedStyle) {
328328
}
329329

330330
function getWindowSizes() {
331-
var body = window.document.body;
332-
var html = window.document.documentElement;
333-
var computedStyle = isIE10$1() && window.getComputedStyle(html);
331+
var body = document.body;
332+
var html = document.documentElement;
333+
var computedStyle = isIE10$1() && getComputedStyle(html);
334334

335335
return {
336336
height: getSize('Height', body, html, computedStyle),
@@ -473,8 +473,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) {
473473
var scrollParent = getScrollParent(children);
474474

475475
var styles = getStyleComputedProperty(parent);
476-
var borderTopWidth = +styles.borderTopWidth.split('px')[0];
477-
var borderLeftWidth = +styles.borderLeftWidth.split('px')[0];
476+
var borderTopWidth = parseFloat(styles.borderTopWidth, 10);
477+
var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);
478478

479479
var offsets = getClientRect({
480480
top: childrenRect.top - parentRect.top - borderTopWidth,
@@ -490,8 +490,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) {
490490
// differently when margins are applied to it. The margins are included in
491491
// the box of the documentElement, in the other cases not.
492492
if (!isIE10 && isHTML) {
493-
var marginTop = +styles.marginTop.split('px')[0];
494-
var marginLeft = +styles.marginLeft.split('px')[0];
493+
var marginTop = parseFloat(styles.marginTop, 10);
494+
var marginLeft = parseFloat(styles.marginLeft, 10);
495495

496496
offsets.top -= borderTopWidth - marginTop;
497497
offsets.bottom -= borderTopWidth - marginTop;
@@ -570,7 +570,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) {
570570
// Handle other cases based on DOM element used as boundaries
571571
var boundariesNode = void 0;
572572
if (boundariesElement === 'scrollParent') {
573-
boundariesNode = getScrollParent(getParentNode(popper));
573+
boundariesNode = getScrollParent(getParentNode(reference));
574574
if (boundariesNode.nodeName === 'BODY') {
575575
boundariesNode = popper.ownerDocument.documentElement;
576576
}
@@ -696,7 +696,7 @@ function getReferenceOffsets(state, popper, reference) {
696696
* @returns {Object} object containing width and height properties
697697
*/
698698
function getOuterSizes(element) {
699-
var styles = window.getComputedStyle(element);
699+
var styles = getComputedStyle(element);
700700
var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
701701
var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
702702
var result = {
@@ -913,7 +913,7 @@ function getSupportedPropertyName(property) {
913913
for (var i = 0; i < prefixes.length - 1; i++) {
914914
var prefix = prefixes[i];
915915
var toCheck = prefix ? '' + prefix + upperProp : property;
916-
if (typeof window.document.body.style[toCheck] !== 'undefined') {
916+
if (typeof document.body.style[toCheck] !== 'undefined') {
917917
return toCheck;
918918
}
919919
}
@@ -1032,7 +1032,7 @@ function removeEventListeners(reference, state) {
10321032
*/
10331033
function disableEventListeners() {
10341034
if (this.state.eventsEnabled) {
1035-
window.cancelAnimationFrame(this.scheduleUpdate);
1035+
cancelAnimationFrame(this.scheduleUpdate);
10361036
this.state = removeEventListeners(this.reference, this.state);
10371037
}
10381038
}
@@ -1272,6 +1272,8 @@ function isModifierRequired(modifiers, requestingName, requestedName) {
12721272
* @returns {Object} The data object, properly modified
12731273
*/
12741274
function arrow(data, options) {
1275+
var _data$offsets$arrow;
1276+
12751277
// arrow depends on keepTogether in order to work
12761278
if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
12771279
return data;
@@ -1323,22 +1325,23 @@ function arrow(data, options) {
13231325
if (reference[side] + arrowElementSize > popper[opSide]) {
13241326
data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
13251327
}
1328+
data.offsets.popper = getClientRect(data.offsets.popper);
13261329

13271330
// compute center of the popper
13281331
var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
13291332

13301333
// Compute the sideValue using the updated popper offsets
13311334
// take popper margin in account because we don't have this info available
1332-
var popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', '');
1333-
var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide;
1335+
var css = getStyleComputedProperty(data.instance.popper);
1336+
var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);
1337+
var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);
1338+
var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
13341339

13351340
// prevent arrowElement from being placed not contiguously to its popper
13361341
sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
13371342

13381343
data.arrowElement = arrowElement;
1339-
data.offsets.arrow = {};
1340-
data.offsets.arrow[side] = Math.round(sideValue);
1341-
data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node
1344+
data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
13421345

13431346
return data;
13441347
}
@@ -2516,118 +2519,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
25162519

25172520

25182521

2519-
var asyncGenerator = function () {
2520-
function AwaitValue(value) {
2521-
this.value = value;
2522-
}
2523-
2524-
function AsyncGenerator(gen) {
2525-
var front, back;
2526-
2527-
function send(key, arg) {
2528-
return new Promise(function (resolve, reject) {
2529-
var request = {
2530-
key: key,
2531-
arg: arg,
2532-
resolve: resolve,
2533-
reject: reject,
2534-
next: null
2535-
};
2536-
2537-
if (back) {
2538-
back = back.next = request;
2539-
} else {
2540-
front = back = request;
2541-
resume(key, arg);
2542-
}
2543-
});
2544-
}
2545-
2546-
function resume(key, arg) {
2547-
try {
2548-
var result = gen[key](arg);
2549-
var value = result.value;
2550-
2551-
if (value instanceof AwaitValue) {
2552-
Promise.resolve(value.value).then(function (arg) {
2553-
resume("next", arg);
2554-
}, function (arg) {
2555-
resume("throw", arg);
2556-
});
2557-
} else {
2558-
settle(result.done ? "return" : "normal", result.value);
2559-
}
2560-
} catch (err) {
2561-
settle("throw", err);
2562-
}
2563-
}
2564-
2565-
function settle(type, value) {
2566-
switch (type) {
2567-
case "return":
2568-
front.resolve({
2569-
value: value,
2570-
done: true
2571-
});
2572-
break;
2573-
2574-
case "throw":
2575-
front.reject(value);
2576-
break;
2577-
2578-
default:
2579-
front.resolve({
2580-
value: value,
2581-
done: false
2582-
});
2583-
break;
2584-
}
25852522

2586-
front = front.next;
2587-
2588-
if (front) {
2589-
resume(front.key, front.arg);
2590-
} else {
2591-
back = null;
2592-
}
2593-
}
2594-
2595-
this._invoke = send;
2596-
2597-
if (typeof gen.return !== "function") {
2598-
this.return = undefined;
2599-
}
2600-
}
2601-
2602-
if (typeof Symbol === "function" && Symbol.asyncIterator) {
2603-
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
2604-
return this;
2605-
};
2606-
}
2607-
2608-
AsyncGenerator.prototype.next = function (arg) {
2609-
return this._invoke("next", arg);
2610-
};
2611-
2612-
AsyncGenerator.prototype.throw = function (arg) {
2613-
return this._invoke("throw", arg);
2614-
};
2615-
2616-
AsyncGenerator.prototype.return = function (arg) {
2617-
return this._invoke("return", arg);
2618-
};
2619-
2620-
return {
2621-
wrap: function (fn) {
2622-
return function () {
2623-
return new AsyncGenerator(fn.apply(this, arguments));
2624-
};
2625-
},
2626-
await: function (value) {
2627-
return new AwaitValue(value);
2628-
}
2629-
};
2630-
}();
26312523

26322524

26332525

@@ -2904,7 +2796,7 @@ var Tooltip = function () {
29042796
allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;
29052797
}
29062798

2907-
if (directive.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {
2799+
if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {
29082800
tooltipNode.addEventListener('mouseenter', this.hide);
29092801
tooltipNode.addEventListener('click', this.hide);
29102802
}
@@ -3380,6 +3272,7 @@ function getOptions(options) {
33803272
offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,
33813273
container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,
33823274
boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,
3275+
autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,
33833276
popperOptions: _extends$1({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)
33843277
};
33853278

@@ -3915,7 +3808,8 @@ var Popover = { render: function render() {
39153808
},
39163809
hide: function hide() {
39173810
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3918-
event = _ref2.event;
3811+
event = _ref2.event,
3812+
_ref2$skipDelay = _ref2.skipDelay;
39193813

39203814
this.$_scheduleHide(event);
39213815

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)