@vue-interface/tooltip 1.0.0-beta.2 → 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -0
- package/dist/src/Popper.d.ts +54 -0
- package/dist/src/Tooltip.vue.d.ts +54 -0
- package/dist/src/TooltipPlugin.d.ts +11 -0
- package/dist/tooltip.mjs +185 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/tooltip.umd.js +2 -5
- package/dist/tooltip.umd.js.map +1 -0
- package/package.json +5 -12
- package/src/{Popper.js → Popper.ts} +16 -15
- package/src/Tooltip.vue +19 -11
- package/src/TooltipPlugin.ts +70 -23
- package/tailwindcss/index.js +8 -8
- package/dist/Tooltip.vue.d.ts +0 -4
- package/dist/TooltipPlugin.d.ts +0 -9
- package/dist/tooltip.es.js +0 -1137
- /package/dist/{tooltip.css → style.css} +0 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{
|
|
2
|
+
offset: ArrayConstructor;
|
|
3
|
+
popper: ObjectConstructor;
|
|
4
|
+
show: BooleanConstructor;
|
|
5
|
+
target: {
|
|
6
|
+
type: {
|
|
7
|
+
new (): HTMLElement;
|
|
8
|
+
prototype: HTMLElement;
|
|
9
|
+
};
|
|
10
|
+
required: true;
|
|
11
|
+
};
|
|
12
|
+
title: StringConstructor;
|
|
13
|
+
placement: StringConstructor;
|
|
14
|
+
top: BooleanConstructor;
|
|
15
|
+
bottom: BooleanConstructor;
|
|
16
|
+
left: BooleanConstructor;
|
|
17
|
+
right: BooleanConstructor;
|
|
18
|
+
}, unknown, {
|
|
19
|
+
currentShow: boolean;
|
|
20
|
+
popperInstance: null;
|
|
21
|
+
}, {
|
|
22
|
+
computedPlacement(): any;
|
|
23
|
+
tooltipClasses(): {
|
|
24
|
+
[x: string]: any;
|
|
25
|
+
show: any;
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
open(): void;
|
|
29
|
+
close(): void;
|
|
30
|
+
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
31
|
+
offset: ArrayConstructor;
|
|
32
|
+
popper: ObjectConstructor;
|
|
33
|
+
show: BooleanConstructor;
|
|
34
|
+
target: {
|
|
35
|
+
type: {
|
|
36
|
+
new (): HTMLElement;
|
|
37
|
+
prototype: HTMLElement;
|
|
38
|
+
};
|
|
39
|
+
required: true;
|
|
40
|
+
};
|
|
41
|
+
title: StringConstructor;
|
|
42
|
+
placement: StringConstructor;
|
|
43
|
+
top: BooleanConstructor;
|
|
44
|
+
bottom: BooleanConstructor;
|
|
45
|
+
left: BooleanConstructor;
|
|
46
|
+
right: BooleanConstructor;
|
|
47
|
+
}>>, {
|
|
48
|
+
show: boolean;
|
|
49
|
+
top: boolean;
|
|
50
|
+
bottom: boolean;
|
|
51
|
+
left: boolean;
|
|
52
|
+
right: boolean;
|
|
53
|
+
}>;
|
|
54
|
+
export default _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
declare const _sfc_main: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").DefineComponent<{
|
|
2
|
+
offset: ArrayConstructor;
|
|
3
|
+
popper: ObjectConstructor;
|
|
4
|
+
show: BooleanConstructor;
|
|
5
|
+
target: {
|
|
6
|
+
type: {
|
|
7
|
+
new (): HTMLElement;
|
|
8
|
+
prototype: HTMLElement;
|
|
9
|
+
};
|
|
10
|
+
required: true;
|
|
11
|
+
};
|
|
12
|
+
title: StringConstructor;
|
|
13
|
+
placement: StringConstructor;
|
|
14
|
+
top: BooleanConstructor;
|
|
15
|
+
bottom: BooleanConstructor;
|
|
16
|
+
left: BooleanConstructor;
|
|
17
|
+
right: BooleanConstructor;
|
|
18
|
+
}, unknown, {
|
|
19
|
+
currentShow: boolean;
|
|
20
|
+
popperInstance: null;
|
|
21
|
+
}, {
|
|
22
|
+
computedPlacement(): any;
|
|
23
|
+
tooltipClasses(): {
|
|
24
|
+
[x: string]: any;
|
|
25
|
+
show: any;
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
open(): void;
|
|
29
|
+
close(): void;
|
|
30
|
+
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
31
|
+
offset: ArrayConstructor;
|
|
32
|
+
popper: ObjectConstructor;
|
|
33
|
+
show: BooleanConstructor;
|
|
34
|
+
target: {
|
|
35
|
+
type: {
|
|
36
|
+
new (): HTMLElement;
|
|
37
|
+
prototype: HTMLElement;
|
|
38
|
+
};
|
|
39
|
+
required: true;
|
|
40
|
+
};
|
|
41
|
+
title: StringConstructor;
|
|
42
|
+
placement: StringConstructor;
|
|
43
|
+
top: BooleanConstructor;
|
|
44
|
+
bottom: BooleanConstructor;
|
|
45
|
+
left: BooleanConstructor;
|
|
46
|
+
right: BooleanConstructor;
|
|
47
|
+
}>>, {
|
|
48
|
+
show: boolean;
|
|
49
|
+
top: boolean;
|
|
50
|
+
bottom: boolean;
|
|
51
|
+
left: boolean;
|
|
52
|
+
right: boolean;
|
|
53
|
+
}>, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
54
|
+
export default _sfc_main;
|
package/dist/tooltip.mjs
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { defineComponent as $, openBlock as S, createElementBlock as y, normalizeClass as N, createElementVNode as _, renderSlot as O, createTextVNode as L, toDisplayString as j, h as B, render as C } from "vue";
|
|
2
|
+
import { createPopper as P } from "@popperjs/core";
|
|
3
|
+
const I = $({
|
|
4
|
+
props: {
|
|
5
|
+
offset: Array,
|
|
6
|
+
popper: Object,
|
|
7
|
+
show: Boolean,
|
|
8
|
+
target: {
|
|
9
|
+
type: HTMLElement,
|
|
10
|
+
required: !0
|
|
11
|
+
},
|
|
12
|
+
title: String,
|
|
13
|
+
placement: String,
|
|
14
|
+
top: Boolean,
|
|
15
|
+
bottom: Boolean,
|
|
16
|
+
left: Boolean,
|
|
17
|
+
right: Boolean
|
|
18
|
+
},
|
|
19
|
+
data() {
|
|
20
|
+
return {
|
|
21
|
+
currentShow: !1,
|
|
22
|
+
popperInstance: null
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
computed: {
|
|
26
|
+
computedPlacement() {
|
|
27
|
+
return this.placement ? this.placement : this.bottom ? "bottom" : this.left ? "left" : this.right ? "right" : "top";
|
|
28
|
+
},
|
|
29
|
+
tooltipClasses() {
|
|
30
|
+
return {
|
|
31
|
+
show: this.currentShow,
|
|
32
|
+
[`bs-tooltip-${this.computedPlacement}`]: !0
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
mounted() {
|
|
37
|
+
this.popperInstance = P(this.target, this.$el, Object.assign({
|
|
38
|
+
placement: this.computedPlacement,
|
|
39
|
+
modifiers: [
|
|
40
|
+
{
|
|
41
|
+
name: "offset",
|
|
42
|
+
options: {
|
|
43
|
+
offset: [0, 6]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "arrow",
|
|
48
|
+
options: {
|
|
49
|
+
element: this.$refs.arrow
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}, this.popper)), this.$nextTick(() => {
|
|
54
|
+
this.currentShow = this.show;
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
beforeUnmount() {
|
|
58
|
+
this.popperInstance && this.popperInstance.destroy();
|
|
59
|
+
},
|
|
60
|
+
methods: {
|
|
61
|
+
open() {
|
|
62
|
+
this.currentShow = !0;
|
|
63
|
+
},
|
|
64
|
+
close() {
|
|
65
|
+
this.currentShow = !1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}), R = $({
|
|
69
|
+
mixins: [
|
|
70
|
+
I
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
const k = (s, m) => {
|
|
74
|
+
const p = s.__vccOpts || s;
|
|
75
|
+
for (const [a, n] of m)
|
|
76
|
+
p[a] = n;
|
|
77
|
+
return p;
|
|
78
|
+
}, F = {
|
|
79
|
+
ref: "arrow",
|
|
80
|
+
class: "tooltip-arrow"
|
|
81
|
+
}, M = {
|
|
82
|
+
ref: "inner",
|
|
83
|
+
class: "tooltip-inner"
|
|
84
|
+
};
|
|
85
|
+
function H(s, m, p, a, n, f) {
|
|
86
|
+
return S(), y("div", {
|
|
87
|
+
class: N(["tooltip", s.tooltipClasses]),
|
|
88
|
+
role: "tooltip"
|
|
89
|
+
}, [
|
|
90
|
+
_("div", F, null, 512),
|
|
91
|
+
_("div", M, [
|
|
92
|
+
O(s.$slots, "default", {}, () => [
|
|
93
|
+
L(j(s.title), 1)
|
|
94
|
+
])
|
|
95
|
+
], 512)
|
|
96
|
+
], 2);
|
|
97
|
+
}
|
|
98
|
+
const U = /* @__PURE__ */ k(R, [["render", H]]);
|
|
99
|
+
function W(s, m = {}) {
|
|
100
|
+
const p = /* @__PURE__ */ new Map(), a = Object.assign({
|
|
101
|
+
delay: void 0,
|
|
102
|
+
prefix: "data-tooltip",
|
|
103
|
+
triggers: {
|
|
104
|
+
open: ["mouseover:350"],
|
|
105
|
+
close: ["mouseout:100"]
|
|
106
|
+
}
|
|
107
|
+
}, m), n = a.prefix.replace(/[-]+$/, ""), f = new RegExp(`^${n}-`);
|
|
108
|
+
function w(e) {
|
|
109
|
+
return Array.from(e.attributes).map((t) => [t.name, t.value]).filter(([t]) => t === "title" || t.match(f)).map(([t, o]) => [t.replace(new RegExp(f), ""), o]).reduce((t, o) => Object.assign(t, { [o[0]]: o[1] }), {});
|
|
110
|
+
}
|
|
111
|
+
function T(e, t = {}, o) {
|
|
112
|
+
const i = document.createElement("template"), r = B(U, Object.assign({
|
|
113
|
+
target: e,
|
|
114
|
+
show: !0
|
|
115
|
+
}, t));
|
|
116
|
+
C(r, i);
|
|
117
|
+
const [l] = [...i.children];
|
|
118
|
+
return document.body.append(l), () => {
|
|
119
|
+
var u;
|
|
120
|
+
p.delete(o), (u = r.component) == null || u.ctx.close(), setTimeout(() => l.remove(), 150);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function h(e, t = {}) {
|
|
124
|
+
var b, v;
|
|
125
|
+
const o = Object.assign({
|
|
126
|
+
title: e.getAttribute(n)
|
|
127
|
+
}, t, w(e));
|
|
128
|
+
if (!o.title || e.hasAttribute(`${n}-id`))
|
|
129
|
+
return;
|
|
130
|
+
const i = Math.random().toString(36).slice(2, 7);
|
|
131
|
+
let r, l;
|
|
132
|
+
e.setAttribute(`${n}-id`, i), e.removeAttribute("title");
|
|
133
|
+
function u(c = 0) {
|
|
134
|
+
clearTimeout(l), r || (l = setTimeout(() => {
|
|
135
|
+
document.contains(e) && (r = T(e, o, i), p.set(i, r));
|
|
136
|
+
}, c));
|
|
137
|
+
}
|
|
138
|
+
function d(c = 0) {
|
|
139
|
+
clearTimeout(l), r && (l = setTimeout(() => {
|
|
140
|
+
r && r(), r = null;
|
|
141
|
+
}, c));
|
|
142
|
+
}
|
|
143
|
+
function g(c, E) {
|
|
144
|
+
const [x, A] = c.split(":");
|
|
145
|
+
e.addEventListener(x, () => E(Number(A || 0)));
|
|
146
|
+
}
|
|
147
|
+
(((b = e.getAttribute(`${n}-trigger-open`)) == null ? void 0 : b.split(",")) || a.triggers.open).map((c) => g(c, u)), (((v = e.getAttribute(`${n}-trigger-close`)) == null ? void 0 : v.split(",")) || a.triggers.close).map((c) => g(c, d));
|
|
148
|
+
}
|
|
149
|
+
s.mixin({
|
|
150
|
+
mounted() {
|
|
151
|
+
let e = this.$el;
|
|
152
|
+
this.$el instanceof Text && (e = this.$el.parentNode), e instanceof HTMLElement && h(e);
|
|
153
|
+
const t = document.createTreeWalker(
|
|
154
|
+
e,
|
|
155
|
+
NodeFilter.SHOW_ALL,
|
|
156
|
+
(i) => i instanceof Element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT
|
|
157
|
+
);
|
|
158
|
+
for (; t.nextNode(); )
|
|
159
|
+
t.currentNode instanceof Element && h(t.currentNode);
|
|
160
|
+
new MutationObserver((i) => {
|
|
161
|
+
for (const { removedNodes: r } of i)
|
|
162
|
+
for (const l of r)
|
|
163
|
+
for (const u of l.querySelectorAll(`[${n}-id]`)) {
|
|
164
|
+
const d = p.get(
|
|
165
|
+
u.getAttribute(`${n}-id`)
|
|
166
|
+
);
|
|
167
|
+
d && d();
|
|
168
|
+
}
|
|
169
|
+
}).observe(e, { childList: !0 });
|
|
170
|
+
}
|
|
171
|
+
}), s.directive("tooltip", {
|
|
172
|
+
created(e, t) {
|
|
173
|
+
h(e, Object.assign({}, t.modifiers, t.value));
|
|
174
|
+
},
|
|
175
|
+
beforeUnmount(e) {
|
|
176
|
+
const t = e.getAttribute(`${n}-id`), o = p.get(t);
|
|
177
|
+
console.log("beforeUnmount"), o && o();
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
export {
|
|
182
|
+
U as Tooltip,
|
|
183
|
+
W as TooltipPlugin
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=tooltip.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.mjs","sources":["../src/Popper.ts","../src/Tooltip.vue","../src/TooltipPlugin.ts"],"sourcesContent":["import { createPopper } from '@popperjs/core';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\n props: {\n offset: Array,\n\n popper: Object,\n\n show: Boolean,\n\n target: {\n type: HTMLElement,\n required: true\n },\n\n title: String,\n\n placement: String,\n\n top: Boolean,\n\n bottom: Boolean,\n\n left: Boolean,\n\n right: Boolean,\n },\n \n data() {\n return {\n currentShow: false,\n popperInstance: null\n };\n },\n\n computed: {\n computedPlacement() {\n if(this.placement) {\n return this.placement;\n }\n\n if(this.bottom) {\n return 'bottom';\n }\n\n if(this.left) {\n return 'left';\n }\n\n if(this.right) {\n return 'right';\n }\n\n return 'top';\n },\n tooltipClasses() {\n return {\n show: this.currentShow,\n [`bs-tooltip-${this.computedPlacement}`]: true\n };\n }\n },\n\n mounted() {\n this.popperInstance = createPopper(this.target, this.$el, Object.assign({\n placement: this.computedPlacement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6]\n },\n },\n {\n name: 'arrow',\n options: {\n element: this.$refs.arrow,\n },\n },\n ],\n }, this.popper));\n\n this.$nextTick(() => {\n this.currentShow = this.show;\n });\n },\n\n beforeUnmount() {\n this.popperInstance && this.popperInstance.destroy();\n },\n\n methods: {\n\n open() {\n this.currentShow = true;\n },\n\n close() {\n this.currentShow = false;\n }\n\n }\n\n});","<script lang=\"ts\">\n// @ts-ignore\nimport { defineComponent } from 'vue';\nimport Popper from './Popper';\n\nexport default defineComponent({\n mixins: [\n Popper\n ]\n});\n</script>\n\n<template>\n <div\n class=\"tooltip\"\n :class=\"tooltipClasses\"\n role=\"tooltip\">\n <div\n ref=\"arrow\"\n class=\"tooltip-arrow\" />\n <div\n ref=\"inner\"\n class=\"tooltip-inner\">\n <slot>{{ title }}</slot>\n </div>\n </div>\n</template>\n\n<style>\n.tooltip:not(.show) {\n z-index: -1;\n}\n</style>","import type { App } from 'vue';\nimport { h, render } from 'vue';\nimport Tooltip from './Tooltip.vue';\n\ntype TooltipPluginOptions = {\n delay?: number,\n prefix: string,\n triggers: {\n open: string[],\n close: string[],\n }\n}\n\nexport default function (app: App, opts: Partial<TooltipPluginOptions> = {}) {\n const tooltips: Map<string,Function> = new Map;\n\n const options: TooltipPluginOptions = Object.assign({\n delay: undefined,\n prefix: 'data-tooltip',\n triggers: {\n open: ['mouseover:350'],\n close: ['mouseout:100'],\n }\n }, opts);\n\n const prefix = options.prefix.replace(/[-]+$/, '');\n const prefixRegExp = new RegExp(`^${prefix}\\-`);\n\n function getAttributes(el: Element): Record<string,any> {\n return Array.from(el.attributes)\n .map(a => [a.name, a.value])\n .filter(([key]) => key === 'title' || key.match(prefixRegExp))\n .map(([key, value]) => [key.replace(new RegExp(prefixRegExp), ''), value])\n .reduce((carry, attr) => Object.assign(carry, { [attr[0]]: attr[1] }), {});\n }\n\n function createTooltip(target: Element, props: Record<string,any> = {}, hash: string): Function {\n const container = document.createElement('template');\n \n const vnode = h(Tooltip, Object.assign({\n target,\n show: true\n }, props));\n \n render(vnode, container);\n \n const [el] = [...container.children];\n \n document.body.append(el);\n \n return () => {\n tooltips.delete(hash);\n\n // @ts-ignore\n vnode.component?.ctx.close();\n \n // @todo: Make the animation rate (150) dynamic. Should get value \n // from the CSS transition duration.\n setTimeout(() => el.remove(), 150);\n };\n }\n\n function init(target: Element, props = {}) {\n const properties: Record<string,any> = Object.assign({\n title: target.getAttribute(prefix)\n }, props, getAttributes(target));\n\n // If the properties don't have a title, ignore this target.\n if(!properties.title || target.hasAttribute(`${prefix}-id`)) {\n return;\n }\n\n // Create a unique \"hash\" to show the node has been initialized.\n // This prevents double initializing on the same element.\n const hash = Math.random().toString(36).slice(2, 7);\n \n // Create the instance vars.\n let tooltip: Function|null, timer: number;\n\n //target.setAttribute(prefix, properties.title);\n target.setAttribute(`${prefix}-id`, hash);\n target.removeAttribute('title');\n\n function open(delay = 0) {\n clearTimeout(timer);\n\n if(!tooltip) {\n timer = setTimeout(() => {\n // Do a check before creating the tooltip to ensure the dom\n // element still exists. Its possible for the element to\n // be removed after the timeout delay runs.\n if(document.contains(target)) {\n tooltip = createTooltip(target, properties, hash);\n tooltips.set(hash, tooltip);\n }\n }, delay);\n }\n }\n\n function close(delay = 0) {\n clearTimeout(timer);\n\n if(tooltip) {\n timer = setTimeout(() => {\n tooltip && tooltip();\n tooltip = null;\n }, delay);\n } \n }\n\n function addEventListener(trigger: string, fn: Function) {\n const [ event, delayString ] = trigger.split(':');\n\n target.addEventListener(event, () => fn(Number(delayString || 0)));\n }\n\n (target.getAttribute(`${prefix}-trigger-open`)?.split(',') || options.triggers.open).map(trigger => addEventListener(trigger, open));\n (target.getAttribute(`${prefix}-trigger-close`)?.split(',') || options.triggers.close).map(trigger => addEventListener(trigger, close));\n }\n \n app.mixin({\n mounted() {\n let el = this.$el;\n\n if(this.$el instanceof Text) {\n el = this.$el.parentNode;\n }\n\n if(el instanceof HTMLElement) {\n init(el);\n }\n\n // Create the tree walker.\n const walker = document.createTreeWalker(\n el,\n NodeFilter.SHOW_ALL,\n (node: Node) => {\n if(!(node instanceof Element)) {\n return NodeFilter.FILTER_REJECT;\n }\n \n return NodeFilter.FILTER_ACCEPT;\n }\n );\n\n // Step through and alert all child nodes\n while(walker.nextNode()) {\n if(walker.currentNode instanceof Element) {\n init(<Element> walker.currentNode);\n }\n }\n\n const observer = new MutationObserver((changes) => {\n for(const { removedNodes } of changes) {\n for(const node of removedNodes) {\n for(const el of (node as Element).querySelectorAll(`[${prefix}-id]`)) {\n const tooltip = tooltips.get(\n el.getAttribute(`${prefix}-id`) as string\n );\n\n tooltip && tooltip();\n }\n } \n }\n });\n\n observer.observe(el, { childList: true });\n }\n });\n\n app.directive('tooltip', {\n created(target, binding) {\n init(target, Object.assign({}, binding.modifiers, binding.value));\n },\n beforeUnmount(target) {\n const id = target.getAttribute(`${prefix}-id`);\n const tooltip = tooltips.get(id);\n\n console.log('beforeUnmount');\n\n tooltip && tooltip();\n }\n });\n}"],"names":["Popper","defineComponent","createPopper","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","TooltipPlugin","app","opts","tooltips","options","prefix","prefixRegExp","getAttributes","el","a","key","value","carry","attr","createTooltip","target","props","hash","container","vnode","h","Tooltip","render","_a","init","properties","tooltip","timer","open","delay","close","addEventListener","trigger","fn","event","delayString","_b","walker","node","changes","removedNodes","binding","id"],"mappings":"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"}
|
package/dist/tooltip.umd.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
(function(
|
|
2
|
-
|
|
3
|
-
`,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",`
|
|
4
|
-
|
|
5
|
-
`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "))}var p={placement:V(e.placement),variation:ne(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Ye(Object.assign({},p,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:f,roundOffsets:a})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ye(Object.assign({},p,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Mt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Lt,data:{}};var ge={passive:!0};function Vt(t){var e=t.state,r=t.instance,n=t.options,o=n.scroll,s=o===void 0?!0:o,f=n.resize,i=f===void 0?!0:f,a=M(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(p){p.addEventListener("scroll",r.update,ge)}),i&&a.addEventListener("resize",r.update,ge),function(){s&&c.forEach(function(p){p.removeEventListener("scroll",r.update,ge)}),i&&a.removeEventListener("resize",r.update,ge)}}const It={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Vt,data:{}};var Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function ye(t){return t.replace(/left|right|bottom|top/g,function(e){return Wt[e]})}var qt={start:"end",end:"start"};function ze(t){return t.replace(/start|end/g,function(e){return qt[e]})}function Re(t){var e=M(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function je(t){return re(_(t)).left+Re(t).scrollLeft}function Ht(t,e){var r=M(t),n=_(t),o=r.visualViewport,s=n.clientWidth,f=n.clientHeight,i=0,a=0;if(o){s=o.width,f=o.height;var c=We();(c||!c&&e==="fixed")&&(i=o.offsetLeft,a=o.offsetTop)}return{width:s,height:f,x:i+je(t),y:a}}function _t(t){var e,r=_(t),n=Re(t),o=(e=t.ownerDocument)==null?void 0:e.body,s=z(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),f=z(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),i=-n.scrollLeft+je(t),a=-n.scrollTop;return I(o||r).direction==="rtl"&&(i+=z(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:f,x:i,y:a}}function $e(t){var e=I(t),r=e.overflow,n=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function Ue(t){return["html","body","#document"].indexOf(q(t))>=0?t.ownerDocument.body:B(t)&&$e(t)?t:Ue(me(t))}function ce(t,e){var r;e===void 0&&(e=[]);var n=Ue(t),o=n===((r=t.ownerDocument)==null?void 0:r.body),s=M(n),f=o?[s].concat(s.visualViewport||[],$e(n)?n:[]):n,i=e.concat(f);return o?i:i.concat(ce(me(f)))}function Ne(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Ft(t,e){var r=re(t,!1,e==="fixed");return r.top=r.top+t.clientTop,r.left=r.left+t.clientLeft,r.bottom=r.top+t.clientHeight,r.right=r.left+t.clientWidth,r.width=t.clientWidth,r.height=t.clientHeight,r.x=r.left,r.y=r.top,r}function Ge(t,e,r){return e===Me?Ne(Ht(t,r)):Y(e)?Ft(e,r):Ne(_t(_(t)))}function Xt(t){var e=ce(me(t)),r=["absolute","fixed"].indexOf(I(t).position)>=0,n=r&&B(t)?pe(t):t;return Y(n)?e.filter(function(o){return Y(o)&&qe(o,n)&&q(o)!=="body"}):[]}function Yt(t,e,r,n){var o=e==="clippingParents"?Xt(t):[].concat(e),s=[].concat(o,[r]),f=s[0],i=s.reduce(function(a,c){var p=Ge(t,c,n);return a.top=z(p.top,a.top),a.right=he(p.right,a.right),a.bottom=he(p.bottom,a.bottom),a.left=z(p.left,a.left),a},Ge(t,f,n));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function Je(t){var e=t.reference,r=t.element,n=t.placement,o=n?V(n):null,s=n?ne(n):null,f=e.x+e.width/2-r.width/2,i=e.y+e.height/2-r.height/2,a;switch(o){case $:a={x:f,y:e.y-r.height};break;case k:a={x:f,y:e.y+e.height};break;case L:a={x:e.x+e.width,y:i};break;case N:a={x:e.x-r.width,y:i};break;default:a={x:e.x,y:e.y}}var c=o?De(o):null;if(c!=null){var p=c==="y"?"height":"width";switch(s){case ee:a[c]=a[c]-(e[p]/2-r[p]/2);break;case ie:a[c]=a[c]+(e[p]/2-r[p]/2);break}}return a}function le(t,e){e===void 0&&(e={});var r=e,n=r.placement,o=n===void 0?t.placement:n,s=r.strategy,f=s===void 0?t.strategy:s,i=r.boundary,a=i===void 0?dt:i,c=r.rootBoundary,p=c===void 0?Me:c,u=r.elementContext,v=u===void 0?se:u,d=r.altBoundary,x=d===void 0?!1:d,h=r.padding,l=h===void 0?0:h,b=Fe(typeof l!="number"?l:Xe(l,ae)),A=v===se?vt:se,O=t.rects.popper,m=t.elements[x?A:v],y=Yt(Y(m)?m:m.contextElement||_(t.elements.popper),a,p,f),g=re(t.elements.reference),E=Je({reference:g,element:O,strategy:"absolute",placement:o}),P=Ne(Object.assign({},O,E)),S=v===se?P:g,T={top:y.top-S.top+b.top,bottom:S.bottom-y.bottom+b.bottom,left:y.left-S.left+b.left,right:S.right-y.right+b.right},w=t.modifiersData.offset;if(v===se&&w){var D=w[o];Object.keys(T).forEach(function(R){var G=[L,k].indexOf(R)>=0?1:-1,J=[$,k].indexOf(R)>=0?"y":"x";T[R]+=D[J]*G})}return T}function zt(t,e){e===void 0&&(e={});var r=e,n=r.placement,o=r.boundary,s=r.rootBoundary,f=r.padding,i=r.flipVariations,a=r.allowedAutoPlacements,c=a===void 0?Ie:a,p=ne(n),u=p?i?Ve:Ve.filter(function(x){return ne(x)===p}):ae,v=u.filter(function(x){return c.indexOf(x)>=0});v.length===0&&(v=u,process.env.NODE_ENV!=="production"&&console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var d=v.reduce(function(x,h){return x[h]=le(t,{placement:h,boundary:o,rootBoundary:s,padding:f})[V(h)],x},{});return Object.keys(d).sort(function(x,h){return d[x]-d[h]})}function Ut(t){if(V(t)===ve)return[];var e=ye(t);return[ze(t),e,ze(e)]}function Gt(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,f=r.altAxis,i=f===void 0?!0:f,a=r.fallbackPlacements,c=r.padding,p=r.boundary,u=r.rootBoundary,v=r.altBoundary,d=r.flipVariations,x=d===void 0?!0:d,h=r.allowedAutoPlacements,l=e.options.placement,b=V(l),A=b===l,O=a||(A||!x?[ye(l)]:Ut(l)),m=[l].concat(O).reduce(function(oe,X){return oe.concat(V(X)===ve?zt(e,{placement:X,boundary:p,rootBoundary:u,padding:c,flipVariations:x,allowedAutoPlacements:h}):X)},[]),y=e.rects.reference,g=e.rects.popper,E=new Map,P=!0,S=m[0],T=0;T<m.length;T++){var w=m[T],D=V(w),R=ne(w)===ee,G=[$,k].indexOf(D)>=0,J=G?"width":"height",C=le(e,{placement:w,boundary:p,rootBoundary:u,altBoundary:v,padding:c}),W=G?R?L:N:R?k:$;y[J]>g[J]&&(W=ye(W));var be=ye(W),K=[];if(s&&K.push(C[D]<=0),i&&K.push(C[W]<=0,C[be]<=0),K.every(function(oe){return oe})){S=w,P=!1;break}E.set(w,K)}if(P)for(var we=x?3:1,Be=function(X){var de=m.find(function(Oe){var Q=E.get(Oe);if(Q)return Q.slice(0,X).every(function(Ce){return Ce})});if(de)return S=de,"break"},ue=we;ue>0;ue--){var xe=Be(ue);if(xe==="break")break}e.placement!==S&&(e.modifiersData[n]._skip=!0,e.placement=S,e.reset=!0)}}const Jt={name:"flip",enabled:!0,phase:"main",fn:Gt,requiresIfExists:["offset"],data:{_skip:!1}};function Ke(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function Qe(t){return[$,L,k,N].some(function(e){return t[e]>=0})}function Kt(t){var e=t.state,r=t.name,n=e.rects.reference,o=e.rects.popper,s=e.modifiersData.preventOverflow,f=le(e,{elementContext:"reference"}),i=le(e,{altBoundary:!0}),a=Ke(f,n),c=Ke(i,o,s),p=Qe(a),u=Qe(c);e.modifiersData[r]={referenceClippingOffsets:a,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}const Qt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Kt};function Zt(t,e,r){var n=V(t),o=[N,$].indexOf(n)>=0?-1:1,s=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,f=s[0],i=s[1];return f=f||0,i=(i||0)*o,[N,L].indexOf(n)>=0?{x:i,y:f}:{x:f,y:i}}function er(t){var e=t.state,r=t.options,n=t.name,o=r.offset,s=o===void 0?[0,0]:o,f=Ie.reduce(function(p,u){return p[u]=Zt(u,e.rects,s),p},{}),i=f[e.placement],a=i.x,c=i.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=a,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=f}const tr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:er};function rr(t){var e=t.state,r=t.name;e.modifiersData[r]=Je({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const nr={name:"popperOffsets",enabled:!0,phase:"read",fn:rr,data:{}};function or(t){return t==="x"?"y":"x"}function ar(t){var e=t.state,r=t.options,n=t.name,o=r.mainAxis,s=o===void 0?!0:o,f=r.altAxis,i=f===void 0?!1:f,a=r.boundary,c=r.rootBoundary,p=r.altBoundary,u=r.padding,v=r.tether,d=v===void 0?!0:v,x=r.tetherOffset,h=x===void 0?0:x,l=le(e,{boundary:a,rootBoundary:c,padding:u,altBoundary:p}),b=V(e.placement),A=ne(e.placement),O=!A,m=De(b),y=or(m),g=e.modifiersData.popperOffsets,E=e.rects.reference,P=e.rects.popper,S=typeof h=="function"?h(Object.assign({},e.rects,{placement:e.placement})):h,T=typeof S=="number"?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),w=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,D={x:0,y:0};if(!!g){if(s){var R,G=m==="y"?$:N,J=m==="y"?k:L,C=m==="y"?"height":"width",W=g[m],be=W+l[G],K=W-l[J],we=d?-P[C]/2:0,Be=A===ee?E[C]:P[C],ue=A===ee?-P[C]:-E[C],xe=e.elements.arrow,oe=d&&xe?Te(xe):{width:0,height:0},X=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:_e(),de=X[G],Oe=X[J],Q=fe(0,E[C],oe[C]),Ce=O?E[C]/2-we-Q-de-T.mainAxis:Be-Q-de-T.mainAxis,Dr=O?-E[C]/2+we+Q+Oe+T.mainAxis:ue+Q+Oe+T.mainAxis,ke=e.elements.arrow&&pe(e.elements.arrow),Rr=ke?m==="y"?ke.clientTop||0:ke.clientLeft||0:0,ot=(R=w==null?void 0:w[m])!=null?R:0,jr=W+Ce-ot-Rr,$r=W+Dr-ot,at=fe(d?he(be,jr):be,W,d?z(K,$r):K);g[m]=at,D[m]=at-W}if(i){var it,Nr=m==="x"?$:N,Br=m==="x"?k:L,Z=g[y],Ee=y==="y"?"height":"width",st=Z+l[Nr],pt=Z-l[Br],Le=[$,N].indexOf(b)!==-1,ft=(it=w==null?void 0:w[y])!=null?it:0,ct=Le?st:Z-E[Ee]-P[Ee]-ft+T.altAxis,lt=Le?Z+E[Ee]+P[Ee]-ft-T.altAxis:pt,ut=d&&Le?Rt(ct,Z,lt):fe(d?ct:st,Z,d?lt:pt);g[y]=ut,D[y]=ut-Z}e.modifiersData[n]=D}}const ir={name:"preventOverflow",enabled:!0,phase:"main",fn:ar,requiresIfExists:["offset"]};function sr(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function pr(t){return t===M(t)||!B(t)?Re(t):sr(t)}function fr(t){var e=t.getBoundingClientRect(),r=te(e.width)/t.offsetWidth||1,n=te(e.height)/t.offsetHeight||1;return r!==1||n!==1}function cr(t,e,r){r===void 0&&(r=!1);var n=B(e),o=B(e)&&fr(e),s=_(e),f=re(t,o,r),i={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(n||!n&&!r)&&((q(e)!=="body"||$e(s))&&(i=pr(e)),B(e)?(a=re(e,!0),a.x+=e.clientLeft,a.y+=e.clientTop):s&&(a.x=je(s))),{x:f.left+i.scrollLeft-a.x,y:f.top+i.scrollTop-a.y,width:f.width,height:f.height}}function lr(t){var e=new Map,r=new Set,n=[];t.forEach(function(s){e.set(s.name,s)});function o(s){r.add(s.name);var f=[].concat(s.requires||[],s.requiresIfExists||[]);f.forEach(function(i){if(!r.has(i)){var a=e.get(i);a&&o(a)}}),n.push(s)}return t.forEach(function(s){r.has(s.name)||o(s)}),n}function ur(t){var e=lr(t);return Ae.reduce(function(r,n){return r.concat(e.filter(function(o){return o.phase===n}))},[])}function dr(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function F(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return[].concat(r).reduce(function(o,s){return o.replace(/%s/,s)},t)}var U='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s',vr='Popper: modifier "%s" requires "%s", but "%s" modifier is not available',Ze=["name","enabled","phase","fn","effect","requires","options"];function hr(t){t.forEach(function(e){[].concat(Object.keys(e),Ze).filter(function(r,n,o){return o.indexOf(r)===n}).forEach(function(r){switch(r){case"name":typeof e.name!="string"&&console.error(F(U,String(e.name),'"name"','"string"','"'+String(e.name)+'"'));break;case"enabled":typeof e.enabled!="boolean"&&console.error(F(U,e.name,'"enabled"','"boolean"','"'+String(e.enabled)+'"'));break;case"phase":Ae.indexOf(e.phase)<0&&console.error(F(U,e.name,'"phase"',"either "+Ae.join(", "),'"'+String(e.phase)+'"'));break;case"fn":typeof e.fn!="function"&&console.error(F(U,e.name,'"fn"','"function"','"'+String(e.fn)+'"'));break;case"effect":e.effect!=null&&typeof e.effect!="function"&&console.error(F(U,e.name,'"effect"','"function"','"'+String(e.fn)+'"'));break;case"requires":e.requires!=null&&!Array.isArray(e.requires)&&console.error(F(U,e.name,'"requires"','"array"','"'+String(e.requires)+'"'));break;case"requiresIfExists":Array.isArray(e.requiresIfExists)||console.error(F(U,e.name,'"requiresIfExists"','"array"','"'+String(e.requiresIfExists)+'"'));break;case"options":case"data":break;default:console.error('PopperJS: an invalid property has been provided to the "'+e.name+'" modifier, valid properties are '+Ze.map(function(n){return'"'+n+'"'}).join(", ")+'; but "'+r+'" was provided.')}e.requires&&e.requires.forEach(function(n){t.find(function(o){return o.name===n})==null&&console.error(F(vr,String(e.name),n,n))})})})}function mr(t,e){var r=new Set;return t.filter(function(n){var o=e(n);if(!r.has(o))return r.add(o),!0})}function gr(t){var e=t.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var et="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",yr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",tt={placement:"bottom",modifiers:[],strategy:"absolute"};function rt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function br(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,o=e.defaultOptions,s=o===void 0?tt:o;return function(i,a,c){c===void 0&&(c=s);var p={placement:"bottom",orderedModifiers:[],options:Object.assign({},tt,s),modifiersData:{},elements:{reference:i,popper:a},attributes:{},styles:{}},u=[],v=!1,d={state:p,setOptions:function(b){var A=typeof b=="function"?b(p.options):b;h(),p.options=Object.assign({},s,p.options,A),p.scrollParents={reference:Y(i)?ce(i):i.contextElement?ce(i.contextElement):[],popper:ce(a)};var O=ur(gr([].concat(n,p.options.modifiers)));if(p.orderedModifiers=O.filter(function(w){return w.enabled}),process.env.NODE_ENV!=="production"){var m=mr([].concat(O,p.options.modifiers),function(w){var D=w.name;return D});if(hr(m),V(p.options.placement)===ve){var y=p.orderedModifiers.find(function(w){var D=w.name;return D==="flip"});y||console.error(['Popper: "auto" placements require the "flip" modifier be',"present and enabled to work."].join(" "))}var g=I(a),E=g.marginTop,P=g.marginRight,S=g.marginBottom,T=g.marginLeft;[E,P,S,T].some(function(w){return parseFloat(w)})&&console.warn(['Popper: CSS "margin" styles cannot be used to apply padding',"between the popper and its reference element or boundary.","To replicate margin, use the `offset` modifier, as well as","the `padding` option in the `preventOverflow` and `flip`","modifiers."].join(" "))}return x(),d.update()},forceUpdate:function(){if(!v){var b=p.elements,A=b.reference,O=b.popper;if(!rt(A,O)){process.env.NODE_ENV!=="production"&&console.error(et);return}p.rects={reference:cr(A,pe(O),p.options.strategy==="fixed"),popper:Te(O)},p.reset=!1,p.placement=p.options.placement,p.orderedModifiers.forEach(function(w){return p.modifiersData[w.name]=Object.assign({},w.data)});for(var m=0,y=0;y<p.orderedModifiers.length;y++){if(process.env.NODE_ENV!=="production"&&(m+=1,m>100)){console.error(yr);break}if(p.reset===!0){p.reset=!1,y=-1;continue}var g=p.orderedModifiers[y],E=g.fn,P=g.options,S=P===void 0?{}:P,T=g.name;typeof E=="function"&&(p=E({state:p,options:S,name:T,instance:d})||p)}}},update:dr(function(){return new Promise(function(l){d.forceUpdate(),l(p)})}),destroy:function(){h(),v=!0}};if(!rt(i,a))return process.env.NODE_ENV!=="production"&&console.error(et),d;d.setOptions(c).then(function(l){!v&&c.onFirstUpdate&&c.onFirstUpdate(l)});function x(){p.orderedModifiers.forEach(function(l){var b=l.name,A=l.options,O=A===void 0?{}:A,m=l.effect;if(typeof m=="function"){var y=m({state:p,name:b,instance:d,options:O}),g=function(){};u.push(y||g)}})}function h(){u.forEach(function(l){return l()}),u=[]}return d}}var wr=[It,nr,Mt,St,tr,Jt,ir,Bt,Qt],xr=br({defaultModifiers:wr});const Or={mixins:[{props:{offset:Array,popper:Object,show:Boolean,target:{type:HTMLElement,required:!0},title:String,placement:String,top:Boolean,bottom:Boolean,left:Boolean,right:Boolean},data(){return{currentShow:!1,popperInstance:null}},methods:{open(){this.currentShow=!0},close(){this.currentShow=!1}},computed:{computedPlacement(){return this.placement?this.placement:this.bottom?"bottom":this.left?"left":this.right?"right":"top"},tooltipClasses(){return{show:this.currentShow,[`bs-tooltip-${this.computedPlacement}`]:!0}}},mounted(){this.popperInstance=xr(this.target,this.$el,Object.assign({placement:this.computedPlacement,modifiers:[{name:"offset",options:{offset:[0,6]}},{name:"arrow",options:{element:this.$refs.arrow}}]},this.popper)),this.$nextTick(()=>{this.currentShow=this.show})},beforeDestroy(){this.popperInstance&&this.popperInstance.destroy()}}]},kr="",Er=(t,e)=>{const r=t.__vccOpts||t;for(const[n,o]of e)r[n]=o;return r},Ar={ref:"arrow",class:"tooltip-arrow"},Pr={ref:"inner",class:"tooltip-inner"};function Sr(t,e,r,n,o,s){return j.openBlock(),j.createElementBlock("div",{class:j.normalizeClass(["tooltip",t.tooltipClasses]),role:"tooltip"},[j.createElementVNode("div",Ar,null,512),j.createElementVNode("div",Pr,[j.renderSlot(t.$slots,"default",{},()=>[j.createTextVNode(j.toDisplayString(t.title),1)])],512)],2)}const nt=Er(Or,[["render",Sr]]);function Tr(t,e={delay:void 0,prefix:"data-tooltip",triggers:{open:["mouseover:750","focus"],close:["mouseout:1000","blur"]}}){const r=e.prefix.replace(/[-]+$/,""),n=new RegExp(`^${r}-`);function o(i){return Array.from(i.attributes).map(a=>[a.name,a.value]).filter(([a])=>a==="title"||a.match(n)).map(([a,c])=>[a.replace(new RegExp(n),""),c]).reduce((a,c)=>Object.assign(a,{[c[0]]:c[1]}),{})}function s(i,a={}){const c=document.createElement("template"),p=j.h(nt,Object.assign({target:i,show:!0},a));j.render(p,c);const[u]=[...c.children];return document.body.append(u),()=>{var v;(v=p.component)==null||v.ctx.close(),setTimeout(()=>u.remove(),150)}}function f(i,a={}){const c=Object.assign({title:i.getAttribute(r)},a,o(i));if(!c.title||i.hasAttribute(`${r}-id`))return;const p=Math.random().toString(36).slice(2,7);let u,v;i.setAttribute(`${r}-id`,p),i.removeAttribute("title");function d(l=0){clearTimeout(v),u||(v=setTimeout(()=>{u=s(i,c)},l))}function x(l=0){clearTimeout(v),u&&(v=setTimeout(()=>{u&&u(),u=null},l))}function h(l,b){const[A,O]=l.split(":");i.addEventListener(A,()=>b(Number(O||0)))}e.triggers.open.map(l=>h(l,d)),e.triggers.close.map(l=>h(l,x))}t.mixin({mounted(){let i=this.$el;this.$el instanceof Text&&(i=this.$el.parentNode),i instanceof HTMLElement&&f(i);const a=document.createTreeWalker(i,NodeFilter.SHOW_ALL,c=>c instanceof Element?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);for(;a.nextNode();)a.currentNode instanceof Element&&f(a.currentNode)}}),t.directive("tooltip",(i,a)=>f(i,Object.assign({},a.modifiers,a.value)))}H.Tooltip=nt,H.TooltipPlugin=Tr,Object.defineProperties(H,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue"),require("@popperjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","@popperjs/core"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l.Tooltip={},l.Vue,l.PopperjsCore))})(this,function(l,o,E){"use strict";const v=o.defineComponent({props:{offset:Array,popper:Object,show:Boolean,target:{type:HTMLElement,required:!0},title:String,placement:String,top:Boolean,bottom:Boolean,left:Boolean,right:Boolean},data(){return{currentShow:!1,popperInstance:null}},computed:{computedPlacement(){return this.placement?this.placement:this.bottom?"bottom":this.left?"left":this.right?"right":"top"},tooltipClasses(){return{show:this.currentShow,[`bs-tooltip-${this.computedPlacement}`]:!0}}},mounted(){this.popperInstance=E.createPopper(this.target,this.$el,Object.assign({placement:this.computedPlacement,modifiers:[{name:"offset",options:{offset:[0,6]}},{name:"arrow",options:{element:this.$refs.arrow}}]},this.popper)),this.$nextTick(()=>{this.currentShow=this.show})},beforeUnmount(){this.popperInstance&&this.popperInstance.destroy()},methods:{open(){this.currentShow=!0},close(){this.currentShow=!1}}}),x=o.defineComponent({mixins:[v]}),M="",S=(c,m)=>{const a=c.__vccOpts||c;for(const[d,i]of m)a[d]=i;return a},y={ref:"arrow",class:"tooltip-arrow"},A={ref:"inner",class:"tooltip-inner"};function j(c,m,a,d,i,g){return o.openBlock(),o.createElementBlock("div",{class:o.normalizeClass(["tooltip",c.tooltipClasses]),role:"tooltip"},[o.createElementVNode("div",y,null,512),o.createElementVNode("div",A,[o.renderSlot(c.$slots,"default",{},()=>[o.createTextVNode(o.toDisplayString(c.title),1)])],512)],2)}const T=S(x,[["render",j]]);function N(c,m={}){const a=new Map,d=Object.assign({delay:void 0,prefix:"data-tooltip",triggers:{open:["mouseover:350"],close:["mouseout:100"]}},m),i=d.prefix.replace(/[-]+$/,""),g=new RegExp(`^${i}-`);function O(e){return Array.from(e.attributes).map(t=>[t.name,t.value]).filter(([t])=>t==="title"||t.match(g)).map(([t,n])=>[t.replace(new RegExp(g),""),n]).reduce((t,n)=>Object.assign(t,{[n[0]]:n[1]}),{})}function P(e,t={},n){const s=document.createElement("template"),r=o.h(T,Object.assign({target:e,show:!0},t));o.render(r,s);const[p]=[...s.children];return document.body.append(p),()=>{var f;a.delete(n),(f=r.component)==null||f.ctx.close(),setTimeout(()=>p.remove(),150)}}function b(e,t={}){var $,w;const n=Object.assign({title:e.getAttribute(i)},t,O(e));if(!n.title||e.hasAttribute(`${i}-id`))return;const s=Math.random().toString(36).slice(2,7);let r,p;e.setAttribute(`${i}-id`,s),e.removeAttribute("title");function f(u=0){clearTimeout(p),r||(p=setTimeout(()=>{document.contains(e)&&(r=P(e,n,s),a.set(s,r))},u))}function h(u=0){clearTimeout(p),r&&(p=setTimeout(()=>{r&&r(),r=null},u))}function _(u,C){const[L,B]=u.split(":");e.addEventListener(L,()=>C(Number(B||0)))}((($=e.getAttribute(`${i}-trigger-open`))==null?void 0:$.split(","))||d.triggers.open).map(u=>_(u,f)),(((w=e.getAttribute(`${i}-trigger-close`))==null?void 0:w.split(","))||d.triggers.close).map(u=>_(u,h))}c.mixin({mounted(){let e=this.$el;this.$el instanceof Text&&(e=this.$el.parentNode),e instanceof HTMLElement&&b(e);const t=document.createTreeWalker(e,NodeFilter.SHOW_ALL,s=>s instanceof Element?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);for(;t.nextNode();)t.currentNode instanceof Element&&b(t.currentNode);new MutationObserver(s=>{for(const{removedNodes:r}of s)for(const p of r)for(const f of p.querySelectorAll(`[${i}-id]`)){const h=a.get(f.getAttribute(`${i}-id`));h&&h()}}).observe(e,{childList:!0})}}),c.directive("tooltip",{created(e,t){b(e,Object.assign({},t.modifiers,t.value))},beforeUnmount(e){const t=e.getAttribute(`${i}-id`),n=a.get(t);console.log("beforeUnmount"),n&&n()}})}l.Tooltip=T,l.TooltipPlugin=N,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
2
|
+
//# sourceMappingURL=tooltip.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.umd.js","sources":["../src/Popper.ts","../src/Tooltip.vue","../src/TooltipPlugin.ts"],"sourcesContent":["import { createPopper } from '@popperjs/core';\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n\n props: {\n offset: Array,\n\n popper: Object,\n\n show: Boolean,\n\n target: {\n type: HTMLElement,\n required: true\n },\n\n title: String,\n\n placement: String,\n\n top: Boolean,\n\n bottom: Boolean,\n\n left: Boolean,\n\n right: Boolean,\n },\n \n data() {\n return {\n currentShow: false,\n popperInstance: null\n };\n },\n\n computed: {\n computedPlacement() {\n if(this.placement) {\n return this.placement;\n }\n\n if(this.bottom) {\n return 'bottom';\n }\n\n if(this.left) {\n return 'left';\n }\n\n if(this.right) {\n return 'right';\n }\n\n return 'top';\n },\n tooltipClasses() {\n return {\n show: this.currentShow,\n [`bs-tooltip-${this.computedPlacement}`]: true\n };\n }\n },\n\n mounted() {\n this.popperInstance = createPopper(this.target, this.$el, Object.assign({\n placement: this.computedPlacement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6]\n },\n },\n {\n name: 'arrow',\n options: {\n element: this.$refs.arrow,\n },\n },\n ],\n }, this.popper));\n\n this.$nextTick(() => {\n this.currentShow = this.show;\n });\n },\n\n beforeUnmount() {\n this.popperInstance && this.popperInstance.destroy();\n },\n\n methods: {\n\n open() {\n this.currentShow = true;\n },\n\n close() {\n this.currentShow = false;\n }\n\n }\n\n});","<script lang=\"ts\">\n// @ts-ignore\nimport { defineComponent } from 'vue';\nimport Popper from './Popper';\n\nexport default defineComponent({\n mixins: [\n Popper\n ]\n});\n</script>\n\n<template>\n <div\n class=\"tooltip\"\n :class=\"tooltipClasses\"\n role=\"tooltip\">\n <div\n ref=\"arrow\"\n class=\"tooltip-arrow\" />\n <div\n ref=\"inner\"\n class=\"tooltip-inner\">\n <slot>{{ title }}</slot>\n </div>\n </div>\n</template>\n\n<style>\n.tooltip:not(.show) {\n z-index: -1;\n}\n</style>","import type { App } from 'vue';\nimport { h, render } from 'vue';\nimport Tooltip from './Tooltip.vue';\n\ntype TooltipPluginOptions = {\n delay?: number,\n prefix: string,\n triggers: {\n open: string[],\n close: string[],\n }\n}\n\nexport default function (app: App, opts: Partial<TooltipPluginOptions> = {}) {\n const tooltips: Map<string,Function> = new Map;\n\n const options: TooltipPluginOptions = Object.assign({\n delay: undefined,\n prefix: 'data-tooltip',\n triggers: {\n open: ['mouseover:350'],\n close: ['mouseout:100'],\n }\n }, opts);\n\n const prefix = options.prefix.replace(/[-]+$/, '');\n const prefixRegExp = new RegExp(`^${prefix}\\-`);\n\n function getAttributes(el: Element): Record<string,any> {\n return Array.from(el.attributes)\n .map(a => [a.name, a.value])\n .filter(([key]) => key === 'title' || key.match(prefixRegExp))\n .map(([key, value]) => [key.replace(new RegExp(prefixRegExp), ''), value])\n .reduce((carry, attr) => Object.assign(carry, { [attr[0]]: attr[1] }), {});\n }\n\n function createTooltip(target: Element, props: Record<string,any> = {}, hash: string): Function {\n const container = document.createElement('template');\n \n const vnode = h(Tooltip, Object.assign({\n target,\n show: true\n }, props));\n \n render(vnode, container);\n \n const [el] = [...container.children];\n \n document.body.append(el);\n \n return () => {\n tooltips.delete(hash);\n\n // @ts-ignore\n vnode.component?.ctx.close();\n \n // @todo: Make the animation rate (150) dynamic. Should get value \n // from the CSS transition duration.\n setTimeout(() => el.remove(), 150);\n };\n }\n\n function init(target: Element, props = {}) {\n const properties: Record<string,any> = Object.assign({\n title: target.getAttribute(prefix)\n }, props, getAttributes(target));\n\n // If the properties don't have a title, ignore this target.\n if(!properties.title || target.hasAttribute(`${prefix}-id`)) {\n return;\n }\n\n // Create a unique \"hash\" to show the node has been initialized.\n // This prevents double initializing on the same element.\n const hash = Math.random().toString(36).slice(2, 7);\n \n // Create the instance vars.\n let tooltip: Function|null, timer: number;\n\n //target.setAttribute(prefix, properties.title);\n target.setAttribute(`${prefix}-id`, hash);\n target.removeAttribute('title');\n\n function open(delay = 0) {\n clearTimeout(timer);\n\n if(!tooltip) {\n timer = setTimeout(() => {\n // Do a check before creating the tooltip to ensure the dom\n // element still exists. Its possible for the element to\n // be removed after the timeout delay runs.\n if(document.contains(target)) {\n tooltip = createTooltip(target, properties, hash);\n tooltips.set(hash, tooltip);\n }\n }, delay);\n }\n }\n\n function close(delay = 0) {\n clearTimeout(timer);\n\n if(tooltip) {\n timer = setTimeout(() => {\n tooltip && tooltip();\n tooltip = null;\n }, delay);\n } \n }\n\n function addEventListener(trigger: string, fn: Function) {\n const [ event, delayString ] = trigger.split(':');\n\n target.addEventListener(event, () => fn(Number(delayString || 0)));\n }\n\n (target.getAttribute(`${prefix}-trigger-open`)?.split(',') || options.triggers.open).map(trigger => addEventListener(trigger, open));\n (target.getAttribute(`${prefix}-trigger-close`)?.split(',') || options.triggers.close).map(trigger => addEventListener(trigger, close));\n }\n \n app.mixin({\n mounted() {\n let el = this.$el;\n\n if(this.$el instanceof Text) {\n el = this.$el.parentNode;\n }\n\n if(el instanceof HTMLElement) {\n init(el);\n }\n\n // Create the tree walker.\n const walker = document.createTreeWalker(\n el,\n NodeFilter.SHOW_ALL,\n (node: Node) => {\n if(!(node instanceof Element)) {\n return NodeFilter.FILTER_REJECT;\n }\n \n return NodeFilter.FILTER_ACCEPT;\n }\n );\n\n // Step through and alert all child nodes\n while(walker.nextNode()) {\n if(walker.currentNode instanceof Element) {\n init(<Element> walker.currentNode);\n }\n }\n\n const observer = new MutationObserver((changes) => {\n for(const { removedNodes } of changes) {\n for(const node of removedNodes) {\n for(const el of (node as Element).querySelectorAll(`[${prefix}-id]`)) {\n const tooltip = tooltips.get(\n el.getAttribute(`${prefix}-id`) as string\n );\n\n tooltip && tooltip();\n }\n } \n }\n });\n\n observer.observe(el, { childList: true });\n }\n });\n\n app.directive('tooltip', {\n created(target, binding) {\n init(target, Object.assign({}, binding.modifiers, binding.value));\n },\n beforeUnmount(target) {\n const id = target.getAttribute(`${prefix}-id`);\n const tooltip = tooltips.get(id);\n\n console.log('beforeUnmount');\n\n tooltip && tooltip();\n }\n });\n}"],"names":["Popper","defineComponent","createPopper","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","TooltipPlugin","app","opts","tooltips","options","prefix","prefixRegExp","getAttributes","el","a","key","value","carry","attr","createTooltip","target","props","hash","container","vnode","h","Tooltip","render","_a","init","properties","tooltip","timer","open","delay","close","addEventListener","trigger","fn","event","delayString","_b","walker","node","changes","removedNodes","binding","id"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-interface/tooltip",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.4",
|
|
4
4
|
"description": "A Vue tooltip component.",
|
|
5
5
|
"files": [
|
|
6
6
|
"index.ts",
|
|
@@ -23,12 +23,7 @@
|
|
|
23
23
|
"scripts": {
|
|
24
24
|
"dev": "vite",
|
|
25
25
|
"build": "vite build",
|
|
26
|
-
"preview": "vite preview"
|
|
27
|
-
"pre-release": "npm run build; git add . -A; git commit -m 'pre-release commit'",
|
|
28
|
-
"release-patch": "npm run pre-release && npm version patch -m \"%s\" && npm run release;",
|
|
29
|
-
"release-minor": "npm run pre-release && npm version minor -m \"%s\" && npm run release;",
|
|
30
|
-
"release-major": "npm run pre-release && npm version major -m \"%s\" && npm run release;",
|
|
31
|
-
"release": "git add . -A; git commit; git push --tags origin; npm publish;"
|
|
26
|
+
"preview": "vite preview"
|
|
32
27
|
},
|
|
33
28
|
"repository": {
|
|
34
29
|
"type": "git",
|
|
@@ -46,7 +41,7 @@
|
|
|
46
41
|
"bugs": {
|
|
47
42
|
"url": "https://github.com/vue-interface/tooltip/issues"
|
|
48
43
|
},
|
|
49
|
-
"homepage": "https://github.com/vue-interface/tooltip
|
|
44
|
+
"homepage": "https://github.com/vue-interface/tooltip",
|
|
50
45
|
"dependencies": {
|
|
51
46
|
"@popperjs/core": "^2.4.4"
|
|
52
47
|
},
|
|
@@ -54,17 +49,15 @@
|
|
|
54
49
|
"vue": "^3.0.0"
|
|
55
50
|
},
|
|
56
51
|
"devDependencies": {
|
|
57
|
-
"@rollup/plugin-babel": "^6.0.0",
|
|
58
52
|
"@vitejs/plugin-vue": "^3.0.1",
|
|
53
|
+
"@vue-interface/eslint-config": "^1.0.0-beta.0",
|
|
59
54
|
"autoprefixer": "^10.4.2",
|
|
60
|
-
"babel-eslint": "^10.1.0",
|
|
61
|
-
"babel-preset-vue": "^2.0.2",
|
|
62
55
|
"change-case": "^4.1.2",
|
|
63
56
|
"eslint": "^8.27.0",
|
|
64
|
-
"eslint-plugin-vue": "^9.7.0",
|
|
65
57
|
"pascalcase": "^2.0.0",
|
|
66
58
|
"postcss": "^8.4.6",
|
|
67
59
|
"tailwindcss": "^3.0.18",
|
|
60
|
+
"typescript": "^5.0.2",
|
|
68
61
|
"vite": "^3.0.0",
|
|
69
62
|
"vite-plugin-dts": "^1.7.1",
|
|
70
63
|
"vue": "^3.2.37"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createPopper } from '@popperjs/core';
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
2
3
|
|
|
3
|
-
export default {
|
|
4
|
+
export default defineComponent({
|
|
4
5
|
|
|
5
6
|
props: {
|
|
6
7
|
offset: Array,
|
|
@@ -34,18 +35,6 @@ export default {
|
|
|
34
35
|
};
|
|
35
36
|
},
|
|
36
37
|
|
|
37
|
-
methods: {
|
|
38
|
-
|
|
39
|
-
open() {
|
|
40
|
-
this.currentShow = true;
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
close() {
|
|
44
|
-
this.currentShow = false;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
|
|
49
38
|
computed: {
|
|
50
39
|
computedPlacement() {
|
|
51
40
|
if(this.placement) {
|
|
@@ -98,8 +87,20 @@ export default {
|
|
|
98
87
|
});
|
|
99
88
|
},
|
|
100
89
|
|
|
101
|
-
|
|
90
|
+
beforeUnmount() {
|
|
102
91
|
this.popperInstance && this.popperInstance.destroy();
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
methods: {
|
|
95
|
+
|
|
96
|
+
open() {
|
|
97
|
+
this.currentShow = true;
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
close() {
|
|
101
|
+
this.currentShow = false;
|
|
102
|
+
}
|
|
103
|
+
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
};
|
|
106
|
+
});
|
package/src/Tooltip.vue
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="tooltip" :class="tooltipClasses" role="tooltip">
|
|
3
|
-
<div ref="arrow" class="tooltip-arrow" />
|
|
4
|
-
<div ref="inner" class="tooltip-inner">
|
|
5
|
-
<slot>{{ title }}</slot>
|
|
6
|
-
</div>
|
|
7
|
-
</div>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
1
|
<script lang="ts">
|
|
11
2
|
// @ts-ignore
|
|
3
|
+
import { defineComponent } from 'vue';
|
|
12
4
|
import Popper from './Popper';
|
|
13
5
|
|
|
14
|
-
export default {
|
|
6
|
+
export default defineComponent({
|
|
15
7
|
mixins: [
|
|
16
8
|
Popper
|
|
17
9
|
]
|
|
18
|
-
};
|
|
10
|
+
});
|
|
19
11
|
</script>
|
|
20
12
|
|
|
13
|
+
<template>
|
|
14
|
+
<div
|
|
15
|
+
class="tooltip"
|
|
16
|
+
:class="tooltipClasses"
|
|
17
|
+
role="tooltip">
|
|
18
|
+
<div
|
|
19
|
+
ref="arrow"
|
|
20
|
+
class="tooltip-arrow" />
|
|
21
|
+
<div
|
|
22
|
+
ref="inner"
|
|
23
|
+
class="tooltip-inner">
|
|
24
|
+
<slot>{{ title }}</slot>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
21
29
|
<style>
|
|
22
30
|
.tooltip:not(.show) {
|
|
23
31
|
z-index: -1;
|