zero-tooltip 1.0.8 → 1.1.0
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/README.md +19 -13
- package/dist/composables/useHideOnResize.d.ts +4 -0
- package/dist/composables/useHideOnScroll.d.ts +3 -0
- package/dist/index.d.ts +11 -36
- package/dist/style.css +1 -0
- package/dist/tooltip.d.ts +4 -0
- package/dist/types/tooltipConfig.d.ts +19 -0
- package/dist/types/tooltipLocalConfig.d.ts +6 -0
- package/dist/types/tooltipPosition.d.ts +2 -0
- package/dist/types/tooltipPositions.d.ts +8 -0
- package/dist/zero-tooltip.js +119 -113
- package/dist/zero-tooltip.umd.cjs +1 -1
- package/package.json +4 -6
- package/src/composables/useHideOnResize.ts +36 -36
- package/src/composables/useHideOnScroll.ts +49 -49
- package/src/index.ts +20 -13
- package/{dist/styles.css → src/style.css} +1 -1
- package/src/tooltip.ts +540 -533
- package/src/types/tooltipConfig.ts +21 -20
- package/src/types/tooltipLocalConfig.ts +7 -7
- package/src/types/tooltipPosition.ts +4 -4
- package/src/types/tooltipPositions.ts +10 -10
package/README.md
CHANGED
|
@@ -10,23 +10,26 @@ The component is designed to enhance user interactions by providing informative
|
|
|
10
10
|
```bash
|
|
11
11
|
# npm
|
|
12
12
|
npm install zero-tooltip
|
|
13
|
+
|
|
13
14
|
# yarn
|
|
14
15
|
yarn add zero-tooltip
|
|
16
|
+
|
|
17
|
+
# pnpm
|
|
18
|
+
pnpm install zero-tooltip
|
|
15
19
|
```
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
Register plugin in `main.ts`:
|
|
18
22
|
```ts
|
|
19
23
|
import ZeroTooltip from 'zero-tooltip'
|
|
20
|
-
|
|
21
|
-
import '../node_modules/zero-tooltip/dist/styles.css'
|
|
22
|
-
// register directive
|
|
24
|
+
|
|
23
25
|
const app = createApp(App)
|
|
24
|
-
|
|
26
|
+
|
|
27
|
+
app.use(ZeroTooltip())
|
|
25
28
|
```
|
|
26
29
|
|
|
27
30
|
## Usage
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
Tooltip can be used with directive `v-tooltip` added on elements.
|
|
30
33
|
The given value is displayed as tooltip's text:
|
|
31
34
|
|
|
32
35
|
```html
|
|
@@ -43,21 +46,22 @@ Default position for tooltip is above/on top of the element that is being hovere
|
|
|
43
46
|
<button v-tooltip:right="'Submits this form'">Submit</button>
|
|
44
47
|
```
|
|
45
48
|
|
|
46
|
-
Acceptable arguments are: `left` | `top` | `right` | `bottom`.
|
|
49
|
+
Acceptable arguments are: `left` | `top` | `right` | `bottom`. This will override tooltip default position that was set during plugin registering process.
|
|
47
50
|
|
|
48
|
-
You can also define default position globally when registering
|
|
51
|
+
You can also define default position globally when registering plugin:
|
|
49
52
|
|
|
50
53
|
```ts
|
|
51
|
-
app.
|
|
54
|
+
app.use(ZeroTooltip({
|
|
52
55
|
defaultPosition: 'right'
|
|
53
56
|
}))
|
|
54
57
|
```
|
|
55
58
|
|
|
56
|
-
Tooltip component is fully customizable by giving config object when
|
|
59
|
+
Tooltip component is fully customizable by giving config object as options when registering tooltip plugin:
|
|
57
60
|
```ts
|
|
58
61
|
import ZeroTooltipConfig from 'zero-tooltip'
|
|
59
62
|
|
|
60
63
|
const tooltipConfig: ZeroTooltipConfig = {
|
|
64
|
+
appendTo: ... ,
|
|
61
65
|
defaultPosition: ... ,
|
|
62
66
|
positions: ... ,
|
|
63
67
|
offsetFromSource: ... ,
|
|
@@ -73,7 +77,7 @@ const tooltipConfig: ZeroTooltipConfig = {
|
|
|
73
77
|
zIndex: ...
|
|
74
78
|
}
|
|
75
79
|
|
|
76
|
-
app.
|
|
80
|
+
app.use(ZeroTooltip(tooltipConfig))
|
|
77
81
|
```
|
|
78
82
|
|
|
79
83
|
All above settings are optional.
|
|
@@ -88,7 +92,8 @@ Tooltip can be customizable also for each usage (locally) using same config as f
|
|
|
88
92
|
import ZeroTooltipLocalConfig from 'zero-tooltip'
|
|
89
93
|
|
|
90
94
|
const tooltipConfig: ZeroTooltipLocalConfig = reactive({
|
|
91
|
-
content: 'This is tooltip'
|
|
95
|
+
content: 'This is tooltip',
|
|
96
|
+
appendTo: ... ,
|
|
92
97
|
defaultPosition: ... ,
|
|
93
98
|
positions: ... ,
|
|
94
99
|
offsetFromSource: ... ,
|
|
@@ -110,7 +115,8 @@ const tooltipConfig: ZeroTooltipLocalConfig = reactive({
|
|
|
110
115
|
## ZeroTooltipConfig
|
|
111
116
|
| Property | <div style="width:260px">Default value</div> | Type | Details |
|
|
112
117
|
|---|---|---|---|
|
|
113
|
-
|
|
|
118
|
+
| appendTo | *body* | string | A valid CSS query selector to specify where Tooltip gets appended. |
|
|
119
|
+
| defaultPosition | *top* | TooltipPosition | Position of tooltip component relative to element that is being hovered. |
|
|
114
120
|
| positions | *{ <br>   left: ['left', 'right', 'top', 'bottom'], <br>   top: ['top', 'bottom', 'right', 'left'], <br>   right: ['right', 'left', 'top', 'bottom'], <br>   bottom: ['bottom', 'top', 'right', 'left'], <br> }* | TooltipPositions | Ordered list of fallback positions in case tooltip does not have enough space in default position. If none of given positions will have enough space for tooltip, then it will not be rendered. |
|
|
115
121
|
| offsetFromSource | *10* | number | Tooltip offset in `px` from element that's being hovered *(arrow size is not added to this value)* |
|
|
116
122
|
| offsetFromViewport | *20* | number | Minimal allowed tooltip offset in `px` from viewport sides |
|
package/dist/index.d.ts
CHANGED
|
@@ -1,36 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
maxWidth?: number;
|
|
13
|
-
tooltipBorderWidth?: number;
|
|
14
|
-
tooltipClasses?: string;
|
|
15
|
-
textClasses?: string;
|
|
16
|
-
arrowSize?: number;
|
|
17
|
-
arrowClasses?: string;
|
|
18
|
-
arrowMinOffsetFromTooltipCorner?: number;
|
|
19
|
-
zIndex?: number;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export declare type ZeroTooltipLocalConfig = {
|
|
23
|
-
content: string;
|
|
24
|
-
show?: boolean;
|
|
25
|
-
} & ZeroTooltipConfig;
|
|
26
|
-
|
|
27
|
-
export declare type ZeroTooltipPosition = 'left' | 'top' | 'right' | 'bottom';
|
|
28
|
-
|
|
29
|
-
export declare type ZeroTooltipPositions = {
|
|
30
|
-
left: [ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition];
|
|
31
|
-
top: [ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition];
|
|
32
|
-
right: [ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition];
|
|
33
|
-
bottom: [ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition, ZeroTooltipPosition];
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export { }
|
|
1
|
+
import './style.css';
|
|
2
|
+
import { App } from 'vue';
|
|
3
|
+
import TooltipConfig from "./types/tooltipConfig";
|
|
4
|
+
import TooltipLocalConfig from "./types/tooltipLocalConfig";
|
|
5
|
+
import TooltipPosition from "./types/tooltipPosition";
|
|
6
|
+
import TooltipPositions from "./types/tooltipPositions";
|
|
7
|
+
declare const _default: {
|
|
8
|
+
install: (app: App, options?: TooltipConfig) => void;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
11
|
+
export type { TooltipConfig as ZeroTooltipConfig, TooltipPosition as ZeroTooltipPosition, TooltipPositions as ZeroTooltipPositions, TooltipLocalConfig as ZeroTooltipLocalConfig };
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.zt-fixed{position:fixed}.zt-absolute{position:absolute}.zt-right-0{right:0}.zt-top-0{top:0}.zt-z-\[2\]{z-index:2}.zt-box-border{box-sizing:border-box}.zt-inline-block{display:inline-block}.zt-h-\[2000px\]{height:2000px}.zt-h-\[500px\]{height:500px}.zt-w-\[400px\]{width:400px}.zt-w-fit{width:-moz-fit-content;width:fit-content}.zt-w-full{width:100%}.zt-whitespace-pre-wrap{white-space:pre-wrap}.zt-break-words{overflow-wrap:break-word}.zt-rounded-md{border-radius:.375rem}.zt-border-solid{border-style:solid}.zt-border-\[\#495057\]{--tw-border-opacity:1;border-color:rgb(73 80 87/var(--tw-border-opacity))}.\!zt-border-x-transparent{border-left-color:#0000!important;border-right-color:#0000!important}.\!zt-border-y-transparent{border-top-color:#0000!important}.\!zt-border-b-transparent,.\!zt-border-y-transparent{border-bottom-color:#0000!important}.\!zt-border-l-transparent{border-left-color:#0000!important}.\!zt-border-r-transparent{border-right-color:#0000!important}.\!zt-border-t-transparent{border-top-color:#0000!important}.zt-bg-\[\#495057\]{--tw-bg-opacity:1;background-color:rgb(73 80 87/var(--tw-bg-opacity))}.zt-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.zt-bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.zt-px-2{padding-left:.5rem;padding-right:.5rem}.zt-px-2\.5{padding-left:.625rem;padding-right:.625rem}.zt-py-1{padding-top:.25rem;padding-bottom:.25rem}.zt-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.zt-text-sm{font-size:.875rem;line-height:1.25rem}.zt-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.zt-opacity-0{opacity:0}.zt-shadow-\[0_2px_12px_0_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 2px 12px 0 #0000001a;--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import TooltipPosition from "./tooltipPosition";
|
|
2
|
+
import TooltipPositions from "./tooltipPositions";
|
|
3
|
+
type TooltipConfig = {
|
|
4
|
+
appendTo?: string;
|
|
5
|
+
defaultPosition?: TooltipPosition;
|
|
6
|
+
positions?: Partial<TooltipPositions>;
|
|
7
|
+
offsetFromSource?: number;
|
|
8
|
+
offsetFromViewport?: number;
|
|
9
|
+
minWidth?: number;
|
|
10
|
+
maxWidth?: number;
|
|
11
|
+
tooltipBorderWidth?: number;
|
|
12
|
+
tooltipClasses?: string;
|
|
13
|
+
textClasses?: string;
|
|
14
|
+
arrowSize?: number;
|
|
15
|
+
arrowClasses?: string;
|
|
16
|
+
arrowMinOffsetFromTooltipCorner?: number;
|
|
17
|
+
zIndex?: number;
|
|
18
|
+
};
|
|
19
|
+
export default TooltipConfig;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import TooltipPosition from "./tooltipPosition";
|
|
2
|
+
type TooltipPositions = {
|
|
3
|
+
left: [TooltipPosition, TooltipPosition, TooltipPosition, TooltipPosition];
|
|
4
|
+
top: [TooltipPosition, TooltipPosition, TooltipPosition, TooltipPosition];
|
|
5
|
+
right: [TooltipPosition, TooltipPosition, TooltipPosition, TooltipPosition];
|
|
6
|
+
bottom: [TooltipPosition, TooltipPosition, TooltipPosition, TooltipPosition];
|
|
7
|
+
};
|
|
8
|
+
export default TooltipPositions;
|
package/dist/zero-tooltip.js
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { isReactive as
|
|
1
|
+
import { isReactive as st, watch as dt } from "vue";
|
|
2
2
|
let M;
|
|
3
|
-
const
|
|
4
|
-
function
|
|
3
|
+
const it = new Uint8Array(16);
|
|
4
|
+
function pt() {
|
|
5
5
|
if (!M && (M = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !M))
|
|
6
6
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
7
|
-
return M(
|
|
7
|
+
return M(it);
|
|
8
8
|
}
|
|
9
|
-
const
|
|
9
|
+
const u = [];
|
|
10
10
|
for (let e = 0; e < 256; ++e)
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
return
|
|
11
|
+
u.push((e + 256).toString(16).slice(1));
|
|
12
|
+
function ot(e, t = 0) {
|
|
13
|
+
return u[e[t + 0]] + u[e[t + 1]] + u[e[t + 2]] + u[e[t + 3]] + "-" + u[e[t + 4]] + u[e[t + 5]] + "-" + u[e[t + 6]] + u[e[t + 7]] + "-" + u[e[t + 8]] + u[e[t + 9]] + "-" + u[e[t + 10]] + u[e[t + 11]] + u[e[t + 12]] + u[e[t + 13]] + u[e[t + 14]] + u[e[t + 15]];
|
|
14
14
|
}
|
|
15
|
-
const
|
|
16
|
-
randomUUID:
|
|
15
|
+
const ht = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), R = {
|
|
16
|
+
randomUUID: ht
|
|
17
17
|
};
|
|
18
|
-
function
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
18
|
+
function ut(e, t, r) {
|
|
19
|
+
if (R.randomUUID && !t && !e)
|
|
20
|
+
return R.randomUUID();
|
|
21
21
|
e = e || {};
|
|
22
|
-
const s = e.random || (e.rng ||
|
|
22
|
+
const s = e.random || (e.rng || pt)();
|
|
23
23
|
if (s[6] = s[6] & 15 | 64, s[8] = s[8] & 63 | 128, t) {
|
|
24
24
|
r = r || 0;
|
|
25
25
|
for (let d = 0; d < 16; ++d)
|
|
26
26
|
t[r + d] = s[d];
|
|
27
27
|
return t;
|
|
28
28
|
}
|
|
29
|
-
return
|
|
29
|
+
return ot(s);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function wt() {
|
|
32
32
|
let e = [];
|
|
33
33
|
const t = (d, i) => {
|
|
34
34
|
if (r(d), e.length > 0)
|
|
35
|
-
for (const
|
|
36
|
-
|
|
35
|
+
for (const p of e)
|
|
36
|
+
p.addEventListener("scroll", i);
|
|
37
37
|
window.addEventListener("scroll", () => {
|
|
38
38
|
i(), s(i);
|
|
39
39
|
});
|
|
@@ -41,8 +41,8 @@ function ht() {
|
|
|
41
41
|
let i = d;
|
|
42
42
|
for (; i !== null && i.tagName !== "HTML"; ) {
|
|
43
43
|
if (i.scrollHeight !== i.clientHeight) {
|
|
44
|
-
const
|
|
45
|
-
(
|
|
44
|
+
const p = window.getComputedStyle(i);
|
|
45
|
+
(p.overflow === "auto" || p.overflow === "scroll") && e.push(i);
|
|
46
46
|
}
|
|
47
47
|
i = i.parentElement;
|
|
48
48
|
}
|
|
@@ -56,15 +56,15 @@ function ht() {
|
|
|
56
56
|
};
|
|
57
57
|
return { handleHideOnScroll: t };
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function mt() {
|
|
60
60
|
let e = null, t = null;
|
|
61
61
|
return { handleHideOnResize: (d, i) => {
|
|
62
|
-
e = new ResizeObserver((
|
|
63
|
-
const
|
|
62
|
+
e = new ResizeObserver((p) => {
|
|
63
|
+
const o = p[0].target;
|
|
64
64
|
if (t === null)
|
|
65
65
|
t = d.getBoundingClientRect();
|
|
66
66
|
else {
|
|
67
|
-
const h =
|
|
67
|
+
const h = o.getBoundingClientRect();
|
|
68
68
|
(h.left !== t.left || h.top !== t.top || h.width !== t.width || h.height !== t.height) && i();
|
|
69
69
|
}
|
|
70
70
|
}), e.observe(d);
|
|
@@ -72,167 +72,168 @@ function wt() {
|
|
|
72
72
|
e !== null && e.disconnect(), e = null, t = null;
|
|
73
73
|
} };
|
|
74
74
|
}
|
|
75
|
-
const { handleHideOnScroll:
|
|
75
|
+
const { handleHideOnScroll: nt } = wt(), { handleHideOnResize: ct, resetResizeReferences: Ot } = mt(), S = "zero-tooltip__container", N = "zero-tooltip__text", rt = "zero-tooltip__arrow", c = {
|
|
76
76
|
left: ["left", "right", "top", "bottom"],
|
|
77
77
|
top: ["top", "bottom", "right", "left"],
|
|
78
78
|
right: ["right", "left", "top", "bottom"],
|
|
79
79
|
bottom: ["bottom", "top", "right", "left"]
|
|
80
|
-
},
|
|
80
|
+
}, Z = "body", f = "top", G = 10, J = 20, K = 100, Q = 250, X = 0, Y = "zt-fixed zt-opacity-0 zt-inline-block zt-w-fit zt-py-1.5 zt-px-2.5 zt-rounded-md zt-bg-[#495057] zt-shadow-[0_2px_12px_0_rgba(0,0,0,0.1)] zt-box-border", E = "zt-text-sm zt-text-white zt-whitespace-pre-wrap zt-break-words", l = 5, xt = "zt-absolute zt-border-solid zt-border-[#495057]", b = 6, C = 1, g = !0, n = {}, Ft = (e) => ({
|
|
81
81
|
created: (t, r, s) => {
|
|
82
|
-
const d =
|
|
83
|
-
s.el.$_tooltip = { uuid: d },
|
|
84
|
-
n[d] &&
|
|
82
|
+
const d = ut();
|
|
83
|
+
s.el.$_tooltip = { uuid: d }, B(r.value, e, r.arg, t, d), typeof r.value != "string" && st(r.value) && dt(r.value, (i) => {
|
|
84
|
+
n[d] && L(n[d]), B(i, e, r.arg, t, d);
|
|
85
85
|
});
|
|
86
86
|
},
|
|
87
87
|
updated: (t, r, s) => {
|
|
88
88
|
const d = s.el.$_tooltip.uuid;
|
|
89
|
-
n[d] &&
|
|
89
|
+
n[d] && L(n[d]), B(r.value, e, r.arg, t, d);
|
|
90
90
|
},
|
|
91
91
|
beforeUnmount: (t, r, s) => {
|
|
92
92
|
const d = s.el.$_tooltip.uuid;
|
|
93
|
-
n[d] &&
|
|
93
|
+
n[d] && L(n[d]);
|
|
94
94
|
}
|
|
95
95
|
});
|
|
96
|
-
function
|
|
97
|
-
let i =
|
|
98
|
-
const
|
|
99
|
-
n[d] =
|
|
96
|
+
function B(e, t, r, s, d) {
|
|
97
|
+
let i = Tt(e, t, r);
|
|
98
|
+
const p = vt(s, i, d);
|
|
99
|
+
n[d] = p, s.matches(":hover") && s.dispatchEvent(new Event("mouseenter"));
|
|
100
100
|
}
|
|
101
|
-
function
|
|
102
|
-
var a,
|
|
103
|
-
let s, d, i,
|
|
104
|
-
return
|
|
105
|
-
left: ((a = e.positions) == null ? void 0 : a.left) ?? ((
|
|
106
|
-
top: ((
|
|
107
|
-
right: ((
|
|
108
|
-
bottom: ((
|
|
109
|
-
}, o = e.offsetFromSource ?? (t == null ? void 0 : t.offsetFromSource) ??
|
|
110
|
-
left: ((
|
|
111
|
-
top: ((
|
|
112
|
-
right: ((
|
|
113
|
-
bottom: ((
|
|
114
|
-
}), o === void 0 && (o = (t == null ? void 0 : t.offsetFromSource) ??
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
101
|
+
function Tt(e, t, r) {
|
|
102
|
+
var a, H, $, A, _, I, U, k, D, P, q, j;
|
|
103
|
+
let s, d, i, p, o, h, w, m, x, O, F, T, W, v, z, y;
|
|
104
|
+
return d = Wt(e), typeof e != "string" && (s = e.appendTo ?? (t == null ? void 0 : t.appendTo) ?? Z, i = r ?? e.defaultPosition ?? (t == null ? void 0 : t.defaultPosition) ?? f, p = {
|
|
105
|
+
left: ((a = e.positions) == null ? void 0 : a.left) ?? ((H = t == null ? void 0 : t.positions) == null ? void 0 : H.left) ?? c.left,
|
|
106
|
+
top: (($ = e.positions) == null ? void 0 : $.top) ?? ((A = t == null ? void 0 : t.positions) == null ? void 0 : A.top) ?? c.top,
|
|
107
|
+
right: ((_ = e.positions) == null ? void 0 : _.right) ?? ((I = t == null ? void 0 : t.positions) == null ? void 0 : I.right) ?? c.right,
|
|
108
|
+
bottom: ((U = e.positions) == null ? void 0 : U.bottom) ?? ((k = t == null ? void 0 : t.positions) == null ? void 0 : k.bottom) ?? c.bottom
|
|
109
|
+
}, o = e.offsetFromSource ?? (t == null ? void 0 : t.offsetFromSource) ?? G, h = e.offsetFromViewport ?? (t == null ? void 0 : t.offsetFromViewport) ?? J, w = e.minWidth ?? (t == null ? void 0 : t.minWidth) ?? K, m = e.maxWidth ?? (t == null ? void 0 : t.maxWidth) ?? Q, x = e.tooltipBorderWidth ?? (t == null ? void 0 : t.tooltipBorderWidth) ?? X, O = S + " " + Y + " " + (e.tooltipClasses ?? (t == null ? void 0 : t.tooltipClasses) ?? ""), F = N + " " + E + " " + (e.textClasses ?? (t == null ? void 0 : t.textClasses) ?? ""), T = e.arrowSize ?? (t == null ? void 0 : t.arrowSize) ?? l, W = e.arrowClasses ?? (t == null ? void 0 : t.arrowClasses) ?? "", v = e.arrowMinOffsetFromTooltipCorner ?? (t == null ? void 0 : t.arrowMinOffsetFromTooltipCorner) ?? b, z = e.zIndex ?? (t == null ? void 0 : t.zIndex) ?? C, y = e.show ?? g), s === void 0 && (s = (t == null ? void 0 : t.appendTo) ?? Z), i === void 0 && (i = r ?? (t == null ? void 0 : t.defaultPosition) ?? f), p === void 0 && (p = {
|
|
110
|
+
left: ((D = t == null ? void 0 : t.positions) == null ? void 0 : D.left) ?? c.left,
|
|
111
|
+
top: ((P = t == null ? void 0 : t.positions) == null ? void 0 : P.top) ?? c.top,
|
|
112
|
+
right: ((q = t == null ? void 0 : t.positions) == null ? void 0 : q.right) ?? c.right,
|
|
113
|
+
bottom: ((j = t == null ? void 0 : t.positions) == null ? void 0 : j.bottom) ?? c.bottom
|
|
114
|
+
}), o === void 0 && (o = (t == null ? void 0 : t.offsetFromSource) ?? G), h === void 0 && (h = (t == null ? void 0 : t.offsetFromViewport) ?? J), w === void 0 && (w = (t == null ? void 0 : t.minWidth) ?? K), m === void 0 && (m = (t == null ? void 0 : t.maxWidth) ?? Q), x === void 0 && (x = (t == null ? void 0 : t.tooltipBorderWidth) ?? X), O === void 0 && (O = S + " " + Y + " " + ((t == null ? void 0 : t.tooltipClasses) ?? "")), F === void 0 && (F = N + " " + E + " " + ((t == null ? void 0 : t.textClasses) ?? "")), T === void 0 && (T = (t == null ? void 0 : t.arrowSize) ?? l), W === void 0 && (W = (t == null ? void 0 : t.arrowClasses) ?? ""), v === void 0 && (v = (t == null ? void 0 : t.arrowMinOffsetFromTooltipCorner) ?? b), z === void 0 && (z = (t == null ? void 0 : t.zIndex) ?? C), y === void 0 && (y = g), {
|
|
115
|
+
appendTo: s,
|
|
116
|
+
tooltipText: d,
|
|
117
|
+
tooltipPosition: i,
|
|
118
|
+
tooltipPositions: p,
|
|
118
119
|
tooltipOffsetFromSource: o,
|
|
119
|
-
tooltipOffsetFromViewport:
|
|
120
|
-
tooltipMinWidth:
|
|
121
|
-
tooltipMaxWidth:
|
|
122
|
-
tooltipBorderWidth:
|
|
123
|
-
tooltipClasses:
|
|
124
|
-
textClasses:
|
|
125
|
-
arrowSize:
|
|
126
|
-
arrowClasses:
|
|
127
|
-
arrowMinOffsetFromTooltipCorner:
|
|
120
|
+
tooltipOffsetFromViewport: h,
|
|
121
|
+
tooltipMinWidth: w,
|
|
122
|
+
tooltipMaxWidth: m,
|
|
123
|
+
tooltipBorderWidth: x,
|
|
124
|
+
tooltipClasses: O,
|
|
125
|
+
textClasses: F,
|
|
126
|
+
arrowSize: T,
|
|
127
|
+
arrowClasses: W,
|
|
128
|
+
arrowMinOffsetFromTooltipCorner: v,
|
|
128
129
|
zIndex: z,
|
|
129
|
-
shouldShow:
|
|
130
|
+
shouldShow: y
|
|
130
131
|
};
|
|
131
132
|
}
|
|
132
|
-
function
|
|
133
|
+
function Wt(e) {
|
|
133
134
|
const t = typeof e == "string" ? e : e.content;
|
|
134
135
|
if (!t)
|
|
135
136
|
throw new Error("Please enter valid tooltip value");
|
|
136
137
|
return t;
|
|
137
138
|
}
|
|
138
|
-
function
|
|
139
|
-
let s = e, d =
|
|
139
|
+
function vt(e, t, r) {
|
|
140
|
+
let s = e, d = zt(t.textClasses, t.tooltipText), i = yt(t.tooltipClasses, t.tooltipBorderWidth);
|
|
140
141
|
i.append(d), i.dataset.uuid = r;
|
|
141
|
-
const
|
|
142
|
-
return s.addEventListener("mouseenter", () =>
|
|
142
|
+
const p = new AbortController(), o = new AbortController();
|
|
143
|
+
return s.addEventListener("mouseenter", () => Mt(s, t, i, r), { signal: p.signal }), s.addEventListener("mouseleave", () => St(r), { signal: o.signal }), {
|
|
143
144
|
anchorElement: s,
|
|
144
145
|
tooltipConfig: t,
|
|
145
146
|
tooltipElement: i,
|
|
146
|
-
mouseEnterEventController:
|
|
147
|
-
mouseLeaveEventController:
|
|
147
|
+
mouseEnterEventController: p,
|
|
148
|
+
mouseLeaveEventController: o
|
|
148
149
|
};
|
|
149
150
|
}
|
|
150
|
-
function
|
|
151
|
+
function zt(e, t) {
|
|
151
152
|
let r = document.createElement("p");
|
|
152
153
|
return r.classList.add(...e.trim().split(" ")), r.innerHTML = t, r;
|
|
153
154
|
}
|
|
154
|
-
function
|
|
155
|
+
function yt(e, t) {
|
|
155
156
|
let r = document.createElement("div");
|
|
156
157
|
return r.classList.add(...e.trim().split(" ")), r.style.borderWidth = `${t}px`, r;
|
|
157
158
|
}
|
|
158
|
-
function
|
|
159
|
+
function Mt(e, t, r, s) {
|
|
159
160
|
if (!t.shouldShow)
|
|
160
161
|
return;
|
|
161
|
-
const d = e.getBoundingClientRect(), i = document.querySelector(
|
|
162
|
+
const d = e.getBoundingClientRect(), i = document.querySelector(t.appendTo);
|
|
162
163
|
i == null || i.appendChild(r);
|
|
163
|
-
let
|
|
164
|
-
for (let h = 0; h < 4 && (
|
|
164
|
+
let p = !1, o = t.tooltipPosition;
|
|
165
|
+
for (let h = 0; h < 4 && (o = t.tooltipPositions[t.tooltipPosition][h], o === "left" ? p = Vt(d, t, r) : o === "top" ? p = Lt(d, t, r) : o === "right" ? p = Bt(d, t, r) : o === "bottom" && (p = at(d, t, r)), !p); h++)
|
|
165
166
|
;
|
|
166
|
-
|
|
167
|
+
p && (Ht(d, o, t, r), r.style.opacity = "1", r.style.zIndex = t.zIndex.toString(), nt(e, () => V(s)), ct(e, () => V(s)));
|
|
167
168
|
}
|
|
168
|
-
function
|
|
169
|
-
|
|
169
|
+
function St(e) {
|
|
170
|
+
V(e);
|
|
170
171
|
}
|
|
171
|
-
function
|
|
172
|
+
function Vt(e, t, r) {
|
|
172
173
|
const s = Math.min(e.left - t.tooltipOffsetFromSource - t.tooltipOffsetFromViewport, t.tooltipMaxWidth), d = e.top >= t.tooltipOffsetFromViewport, i = window.innerHeight - e.bottom >= t.tooltipOffsetFromViewport;
|
|
173
174
|
if (s < t.tooltipMinWidth || !d || !i)
|
|
174
175
|
return !1;
|
|
175
176
|
r.style.maxWidth = `${s}px`;
|
|
176
|
-
const
|
|
177
|
-
let
|
|
178
|
-
|
|
179
|
-
const h = e.left - t.tooltipOffsetFromSource -
|
|
180
|
-
return e.bottom <
|
|
177
|
+
const p = r.getBoundingClientRect();
|
|
178
|
+
let o = e.top + e.height / 2 - p.height / 2;
|
|
179
|
+
o < t.tooltipOffsetFromViewport ? o = t.tooltipOffsetFromViewport : o + p.height > window.innerHeight - t.tooltipOffsetFromViewport && (o = window.innerHeight - t.tooltipOffsetFromViewport - p.height);
|
|
180
|
+
const h = e.left - t.tooltipOffsetFromSource - p.width;
|
|
181
|
+
return e.bottom < o + t.arrowMinOffsetFromTooltipCorner * 2 || e.top > o + p.height - t.arrowMinOffsetFromTooltipCorner * 2 ? !1 : (r.style.top = `${o}px`, r.style.left = `${h}px`, !0);
|
|
181
182
|
}
|
|
182
|
-
function
|
|
183
|
+
function Bt(e, t, r) {
|
|
183
184
|
const s = Math.min(window.innerWidth - (e.right + t.tooltipOffsetFromSource) - t.tooltipOffsetFromViewport, t.tooltipMaxWidth), d = e.top >= t.tooltipOffsetFromViewport, i = window.innerHeight - e.bottom >= t.tooltipOffsetFromViewport;
|
|
184
185
|
if (s < t.tooltipMinWidth || !d || !i)
|
|
185
186
|
return !1;
|
|
186
187
|
r.style.maxWidth = `${s}px`;
|
|
187
|
-
const
|
|
188
|
-
let
|
|
189
|
-
|
|
188
|
+
const p = r.getBoundingClientRect();
|
|
189
|
+
let o = e.top + e.height / 2 - p.height / 2;
|
|
190
|
+
o < t.tooltipOffsetFromViewport ? o = t.tooltipOffsetFromViewport : o + p.height > window.innerHeight - t.tooltipOffsetFromViewport && (o = window.innerHeight - t.tooltipOffsetFromViewport - p.height);
|
|
190
191
|
const h = e.right + t.tooltipOffsetFromSource;
|
|
191
|
-
return e.bottom <
|
|
192
|
+
return e.bottom < o + t.arrowMinOffsetFromTooltipCorner * 2 || e.top > o + p.height - t.arrowMinOffsetFromTooltipCorner * 2 ? !1 : (r.style.top = `${o}px`, r.style.left = `${h}px`, !0);
|
|
192
193
|
}
|
|
193
|
-
function
|
|
194
|
+
function Lt(e, t, r) {
|
|
194
195
|
const s = Math.min(window.innerWidth - t.tooltipOffsetFromViewport * 2, t.tooltipMaxWidth);
|
|
195
196
|
r.style.maxWidth = `${s}px`;
|
|
196
197
|
const d = r.getBoundingClientRect();
|
|
197
198
|
let i = e.top - t.tooltipOffsetFromSource - d.height;
|
|
198
199
|
if (i < t.tooltipOffsetFromViewport)
|
|
199
200
|
return !1;
|
|
200
|
-
let
|
|
201
|
-
return
|
|
201
|
+
let p = e.left + e.width / 2 - d.width / 2;
|
|
202
|
+
return p < t.tooltipOffsetFromViewport ? p = t.tooltipOffsetFromViewport : p + d.width > window.innerWidth - t.tooltipOffsetFromViewport && (p = window.innerWidth - t.tooltipOffsetFromViewport - d.width), e.left > p + d.width - t.arrowMinOffsetFromTooltipCorner * 2 || e.right < p + t.arrowMinOffsetFromTooltipCorner * 2 ? !1 : (r.style.top = `${i}px`, r.style.left = `${p}px`, !0);
|
|
202
203
|
}
|
|
203
|
-
function
|
|
204
|
+
function at(e, t, r) {
|
|
204
205
|
const s = Math.min(window.innerWidth - t.tooltipOffsetFromViewport * 2, t.tooltipMaxWidth);
|
|
205
206
|
r.style.maxWidth = `${s}px`;
|
|
206
207
|
const d = r.getBoundingClientRect();
|
|
207
208
|
let i = e.bottom + t.tooltipOffsetFromSource;
|
|
208
209
|
if (i + d.height > window.innerHeight - t.tooltipOffsetFromViewport)
|
|
209
210
|
return !1;
|
|
210
|
-
let
|
|
211
|
-
return
|
|
211
|
+
let p = e.left + e.width / 2 - d.width / 2;
|
|
212
|
+
return p < t.tooltipOffsetFromViewport ? p = t.tooltipOffsetFromViewport : p + d.width > window.innerWidth - t.tooltipOffsetFromViewport && (p = window.innerWidth - t.tooltipOffsetFromViewport - d.width), e.left > p + d.width - t.arrowMinOffsetFromTooltipCorner * 2 || e.right < p + t.arrowMinOffsetFromTooltipCorner * 2 ? !1 : (r.style.top = `${i}px`, r.style.left = `${p}px`, !0);
|
|
212
213
|
}
|
|
213
|
-
function
|
|
214
|
+
function Ht(e, t, r, s) {
|
|
214
215
|
var O;
|
|
215
|
-
const d = document.createElement("div"), i = s.getBoundingClientRect(),
|
|
216
|
-
let h = 0,
|
|
216
|
+
const d = document.createElement("div"), i = s.getBoundingClientRect(), p = Math.sin(45 * (180 / Math.PI)) * r.arrowSize, o = 1;
|
|
217
|
+
let h = 0, w = 0, m = "";
|
|
217
218
|
switch (t) {
|
|
218
219
|
case "left":
|
|
219
|
-
m = "!zt-border-y-transparent !zt-border-r-transparent", h = e.top - i.top + e.height / 2 -
|
|
220
|
+
m = "!zt-border-y-transparent !zt-border-r-transparent", h = e.top - i.top + e.height / 2 - p - r.tooltipBorderWidth, w = i.width - r.tooltipBorderWidth - o;
|
|
220
221
|
break;
|
|
221
222
|
case "top":
|
|
222
|
-
m = "!zt-border-x-transparent !zt-border-b-transparent", h = i.height - r.tooltipBorderWidth -
|
|
223
|
+
m = "!zt-border-x-transparent !zt-border-b-transparent", h = i.height - r.tooltipBorderWidth - o, w = e.left - i.left + e.width / 2 - p - r.tooltipBorderWidth;
|
|
223
224
|
break;
|
|
224
225
|
case "right":
|
|
225
|
-
m = "!zt-border-y-transparent !zt-border-l-transparent", h = e.top - i.top + e.height / 2 -
|
|
226
|
+
m = "!zt-border-y-transparent !zt-border-l-transparent", h = e.top - i.top + e.height / 2 - p - r.tooltipBorderWidth, w = -r.arrowSize * 2 - r.tooltipBorderWidth + o;
|
|
226
227
|
break;
|
|
227
228
|
case "bottom":
|
|
228
|
-
m = "!zt-border-x-transparent !zt-border-t-transparent", h = -r.arrowSize * 2 - r.tooltipBorderWidth +
|
|
229
|
+
m = "!zt-border-x-transparent !zt-border-t-transparent", h = -r.arrowSize * 2 - r.tooltipBorderWidth + o, w = e.left - i.left + e.width / 2 - p - r.tooltipBorderWidth;
|
|
229
230
|
break;
|
|
230
231
|
}
|
|
231
|
-
t === "left" || t === "right" ?
|
|
232
|
-
const x =
|
|
233
|
-
d.classList.add(...x.trim().split(" ")), d.style.top = `${h}px`, d.style.left = `${
|
|
232
|
+
t === "left" || t === "right" ? tt(t, i, h, r) || (h = et(t, i, h, r)) : tt(t, i, w, r) || (w = et(t, i, w, r));
|
|
233
|
+
const x = rt + " " + xt + " " + m + " " + r.arrowClasses;
|
|
234
|
+
d.classList.add(...x.trim().split(" ")), d.style.top = `${h}px`, d.style.left = `${w}px`, d.style.borderWidth = `${r.arrowSize}px`, (O = document.querySelector(`.${S}`)) == null || O.appendChild(d);
|
|
234
235
|
}
|
|
235
|
-
function
|
|
236
|
+
function tt(e, t, r, s) {
|
|
236
237
|
switch (e) {
|
|
237
238
|
case "left":
|
|
238
239
|
case "right":
|
|
@@ -242,7 +243,7 @@ function C(e, t, r, s) {
|
|
|
242
243
|
return r > s.arrowMinOffsetFromTooltipCorner - s.tooltipBorderWidth && r < t.width + s.tooltipBorderWidth - s.arrowMinOffsetFromTooltipCorner - s.arrowSize * 2;
|
|
243
244
|
}
|
|
244
245
|
}
|
|
245
|
-
function
|
|
246
|
+
function et(e, t, r, s) {
|
|
246
247
|
switch (e) {
|
|
247
248
|
case "left":
|
|
248
249
|
case "right":
|
|
@@ -252,15 +253,20 @@ function g(e, t, r, s) {
|
|
|
252
253
|
return r < s.arrowMinOffsetFromTooltipCorner - s.tooltipBorderWidth ? s.arrowMinOffsetFromTooltipCorner - s.tooltipBorderWidth : t.width - s.tooltipBorderWidth - s.arrowMinOffsetFromTooltipCorner - s.arrowSize * 2;
|
|
253
254
|
}
|
|
254
255
|
}
|
|
255
|
-
function
|
|
256
|
+
function V(e) {
|
|
256
257
|
var s, d;
|
|
257
|
-
const t = document.querySelector(`.${
|
|
258
|
-
r && t && t instanceof HTMLElement && t === r && (
|
|
258
|
+
const t = document.querySelector(`.${S}`), r = (s = n[e]) == null ? void 0 : s.tooltipElement;
|
|
259
|
+
r && t && t instanceof HTMLElement && t === r && (Ot(), (d = t.querySelector(`.${rt}`)) == null || d.remove(), t.style.left = "0", t.style.top = "0", t.remove());
|
|
259
260
|
}
|
|
260
|
-
function
|
|
261
|
+
function L(e) {
|
|
261
262
|
const t = e.tooltipElement.dataset.uuid;
|
|
262
|
-
t && (
|
|
263
|
+
t && (V(t), delete n[t]), e.mouseEnterEventController.abort(), e.mouseLeaveEventController.abort();
|
|
263
264
|
}
|
|
265
|
+
const At = {
|
|
266
|
+
install: (e, t = {}) => {
|
|
267
|
+
e.directive("tooltip", Ft(t));
|
|
268
|
+
}
|
|
269
|
+
};
|
|
264
270
|
export {
|
|
265
|
-
|
|
271
|
+
At as default
|
|
266
272
|
};
|