@stenajs-webui/tooltip 18.0.3 → 18.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/CHANGELOG.md +15 -0
- package/dist/components/popover/Popover.d.ts +2 -0
- package/dist/components/tooltip/Tooltip.d.ts +6 -3
- package/dist/index.es.js +123 -84
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# v18.1.0 (Mon Feb 27 2023)
|
|
2
|
+
|
|
3
|
+
#### 🚀 Enhancement
|
|
4
|
+
|
|
5
|
+
- Rewrite tooltip using TippyComponent instead of Popover [#537](https://github.com/StenaIT/stenajs-webui/pull/537) (david.zetterdahl@stenaline.com [@LordDz](https://github.com/LordDz) [@mattias800](https://github.com/mattias800))
|
|
6
|
+
|
|
7
|
+
#### Authors: 4
|
|
8
|
+
|
|
9
|
+
- David ([@LordDz](https://github.com/LordDz))
|
|
10
|
+
- David Zetterdahl (david.zetterdahl@stenaline.com)
|
|
11
|
+
- Mattias Andersson ([@mattias800](https://github.com/mattias800))
|
|
12
|
+
- Zetterdahl David (david.zetterdahl@stenaline.com)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
1
16
|
# v17.7.0 (Fri Jul 01 2022)
|
|
2
17
|
|
|
3
18
|
#### 🚀 Enhancement
|
|
@@ -3,11 +3,13 @@ import * as React from "react";
|
|
|
3
3
|
import "./Tippy.module.css";
|
|
4
4
|
import { TippyCallbackRef } from "../../hooks/UseTippyInstance";
|
|
5
5
|
export declare type PopoverVariant = "standard" | "info" | "warning" | "error" | "outlined";
|
|
6
|
+
export declare type PopoverTheme = "light" | "dark";
|
|
6
7
|
export interface PopoverProps extends Partial<Omit<TippyComponentProps, "theme" | "render">> {
|
|
7
8
|
tippyRef?: TippyCallbackRef<HTMLDivElement>;
|
|
8
9
|
disablePadding?: boolean;
|
|
9
10
|
lazy?: boolean;
|
|
10
11
|
variant?: PopoverVariant;
|
|
12
|
+
theme?: PopoverTheme;
|
|
11
13
|
}
|
|
12
14
|
export declare const tippyStyles: {
|
|
13
15
|
noPadding: string;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { PopoverProps
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { PopoverProps } from "../popover/Popover";
|
|
3
|
+
declare type TooltipVariant = "info" | "warning" | "error";
|
|
4
|
+
export interface TooltipProps extends Omit<PopoverProps, "theme" | "render"> {
|
|
5
5
|
label: string;
|
|
6
|
+
variant?: TooltipVariant;
|
|
7
|
+
children: JSX.Element;
|
|
6
8
|
}
|
|
7
9
|
export declare const Tooltip: React.FC<TooltipProps>;
|
|
10
|
+
export {};
|
package/dist/index.es.js
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
(function(){"use strict";try{var
|
|
2
|
-
import { Column as
|
|
3
|
-
import { FlatButton as
|
|
4
|
-
import { jsxs as c, jsx as n } from "react/jsx-runtime";
|
|
5
|
-
import
|
|
6
|
-
import { useState as
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
(function(){"use strict";try{var r=document.createElement("style");r.appendChild(document.createTextNode('._noPadding_183x1_1 .tippy-content{padding:0}.tippy-box[data-theme~=light]{box-shadow:var(--swui-shadow-popover)}.tippy-box[data-theme~=outlined]{border:1px solid var(--lhds-color-blue-500)}.tippy-box[data-theme~=info]{background-color:var(--lhds-color-blue-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=info] .tippy-arrow{color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=warning]{background-color:var(--lhds-color-orange-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=warning] .tippy-arrow{color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=error]{background-color:var(--lhds-color-red-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=error] .tippy-arrow{color:var(--lhds-color-red-50)}.tippy-box[data-theme~=info][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=warning][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=error][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-red-50)}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:visibility,opacity,-webkit-transform;transition-property:transform,visibility,opacity;transition-property:transform,visibility,opacity,-webkit-transform}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;-webkit-transform-origin:center top;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;-webkit-transform-origin:center bottom;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;-webkit-transform-origin:center left;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;-webkit-transform-origin:center right;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=dark]{color:var(--lhds-color-ui-50);box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark]>.tippy-backdrop{background-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark]>.tippy-svg-arrow{fill:var(--lhds-color-ui-800)}._tooltip_1gh65_1{display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;align-items:center;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2)}._tooltip_1gh65_1._withIcon_1gh65_8{padding:calc(var(--swui-metrics-spacing) * .5);padding-right:calc(var(--swui-metrics-indent) * 2)}._iconWrapper_1gh65_14{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);height:16px;align-items:flex-start}._iconWrapper_1gh65_14 svg{color:var(--current-icon-color)}._iconWrapper_1gh65_14._info_1gh65_35{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_1gh65_14._warning_1gh65_41{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_1gh65_14._error_1gh65_47{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}')),document.head.appendChild(r)}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
+
import { Column as W, Text as f, Space as a, Row as u, Box as j } from "@stenajs-webui/core";
|
|
3
|
+
import { FlatButton as _, PrimaryButton as k, Spinner as B, Icon as N, stenaInfoCircle as R, stenaExclamationCircle as $, stenaExclamationTriangle as b } from "@stenajs-webui/elements";
|
|
4
|
+
import { jsxs as c, jsx as n, Fragment as A } from "react/jsx-runtime";
|
|
5
|
+
import E from "@tippyjs/react";
|
|
6
|
+
import { useState as F, useMemo as M, useRef as H } from "react";
|
|
7
|
+
import g from "classnames";
|
|
8
|
+
import { cssColor as L } from "@stenajs-webui/theme";
|
|
9
|
+
const cn = ({
|
|
10
|
+
text: o = "Are you sure?",
|
|
11
|
+
yesLabel: t = "Yes",
|
|
10
12
|
noLabel: e = "No",
|
|
11
13
|
onNo: i,
|
|
12
|
-
onYes:
|
|
14
|
+
onYes: l,
|
|
13
15
|
loading: r
|
|
14
|
-
}) => /* @__PURE__ */ c(
|
|
16
|
+
}) => /* @__PURE__ */ c(W, {
|
|
15
17
|
position: "relative",
|
|
16
18
|
children: [/* @__PURE__ */ c("div", {
|
|
17
19
|
style: {
|
|
18
20
|
opacity: r ? 0 : 1
|
|
19
21
|
},
|
|
20
|
-
children: [/* @__PURE__ */ n(
|
|
21
|
-
children:
|
|
22
|
-
}), /* @__PURE__ */ n(
|
|
22
|
+
children: [/* @__PURE__ */ n(f, {
|
|
23
|
+
children: o
|
|
24
|
+
}), /* @__PURE__ */ n(a, {}), /* @__PURE__ */ c(u, {
|
|
23
25
|
justifyContent: "flex-end",
|
|
24
26
|
alignItems: "center",
|
|
25
|
-
children: [/* @__PURE__ */ n(
|
|
27
|
+
children: [/* @__PURE__ */ n(_, {
|
|
26
28
|
label: e,
|
|
27
29
|
onClick: i
|
|
28
|
-
}), /* @__PURE__ */ n(
|
|
29
|
-
label:
|
|
30
|
-
onClick:
|
|
30
|
+
}), /* @__PURE__ */ n(a, {}), /* @__PURE__ */ n(k, {
|
|
31
|
+
label: t,
|
|
32
|
+
onClick: l
|
|
31
33
|
})]
|
|
32
34
|
})]
|
|
33
35
|
}), r && /* @__PURE__ */ n(u, {
|
|
@@ -38,17 +40,17 @@ const Y = ({
|
|
|
38
40
|
width: "100%",
|
|
39
41
|
height: "100%",
|
|
40
42
|
position: "absolute",
|
|
41
|
-
children: /* @__PURE__ */ n(
|
|
43
|
+
children: /* @__PURE__ */ n(B, {
|
|
42
44
|
size: "small"
|
|
43
45
|
})
|
|
44
46
|
})]
|
|
45
|
-
}),
|
|
46
|
-
noPadding:
|
|
47
|
+
}), Y = "_noPadding_183x1_1", q = {
|
|
48
|
+
noPadding: Y
|
|
47
49
|
};
|
|
48
|
-
const
|
|
49
|
-
const [
|
|
50
|
+
const D = (o = []) => {
|
|
51
|
+
const [t, e] = F(!1);
|
|
50
52
|
return {
|
|
51
|
-
plugins: [
|
|
53
|
+
plugins: [M(
|
|
52
54
|
() => ({
|
|
53
55
|
fn: () => ({
|
|
54
56
|
onShow: () => e(!0),
|
|
@@ -56,96 +58,133 @@ const A = (t = []) => {
|
|
|
56
58
|
})
|
|
57
59
|
}),
|
|
58
60
|
[e]
|
|
59
|
-
), ...
|
|
60
|
-
mounted:
|
|
61
|
+
), ...o],
|
|
62
|
+
mounted: t
|
|
61
63
|
};
|
|
62
|
-
},
|
|
63
|
-
noPadding:
|
|
64
|
-
},
|
|
64
|
+
}, G = {
|
|
65
|
+
noPadding: q.noPadding
|
|
66
|
+
}, h = {
|
|
65
67
|
standard: "light",
|
|
66
68
|
info: "info",
|
|
67
69
|
warning: "warning",
|
|
68
70
|
error: "error",
|
|
69
71
|
outlined: "outlined"
|
|
70
|
-
},
|
|
71
|
-
visible:
|
|
72
|
-
trigger:
|
|
72
|
+
}, y = ({
|
|
73
|
+
visible: o,
|
|
74
|
+
trigger: t = "mouseenter",
|
|
73
75
|
children: e,
|
|
74
76
|
tippyRef: i,
|
|
75
|
-
delay:
|
|
77
|
+
delay: l = 0,
|
|
76
78
|
variant: r = "standard",
|
|
77
|
-
disablePadding:
|
|
78
|
-
content:
|
|
79
|
-
maxWidth:
|
|
80
|
-
plugins:
|
|
81
|
-
lazy:
|
|
82
|
-
arrow:
|
|
83
|
-
|
|
79
|
+
disablePadding: d,
|
|
80
|
+
content: w,
|
|
81
|
+
maxWidth: x = "500px",
|
|
82
|
+
plugins: P,
|
|
83
|
+
lazy: v,
|
|
84
|
+
arrow: I = !0,
|
|
85
|
+
theme: T = "light",
|
|
86
|
+
...C
|
|
84
87
|
}) => {
|
|
88
|
+
var p;
|
|
85
89
|
const {
|
|
86
|
-
plugins:
|
|
87
|
-
mounted:
|
|
88
|
-
} =
|
|
89
|
-
return /* @__PURE__ */ n(
|
|
90
|
+
plugins: z,
|
|
91
|
+
mounted: S
|
|
92
|
+
} = D(P);
|
|
93
|
+
return /* @__PURE__ */ n(E, {
|
|
90
94
|
interactive: !0,
|
|
91
|
-
className:
|
|
92
|
-
trigger:
|
|
93
|
-
visible:
|
|
94
|
-
theme:
|
|
95
|
-
delay:
|
|
96
|
-
maxWidth:
|
|
97
|
-
arrow:
|
|
98
|
-
content: (!
|
|
99
|
-
spacing: !
|
|
100
|
-
indent: !
|
|
101
|
-
children:
|
|
95
|
+
className: G.noPadding,
|
|
96
|
+
trigger: o !== void 0 ? void 0 : t,
|
|
97
|
+
visible: o,
|
|
98
|
+
theme: `${T} ${(p = h[r]) != null ? p : h.standard}`,
|
|
99
|
+
delay: l,
|
|
100
|
+
maxWidth: x,
|
|
101
|
+
arrow: I,
|
|
102
|
+
content: (!v || S) && /* @__PURE__ */ n(j, {
|
|
103
|
+
spacing: !d && 1,
|
|
104
|
+
indent: !d && 1,
|
|
105
|
+
children: w
|
|
102
106
|
}),
|
|
103
|
-
plugins:
|
|
104
|
-
...
|
|
107
|
+
plugins: z,
|
|
108
|
+
...C,
|
|
105
109
|
children: /* @__PURE__ */ n("div", {
|
|
106
110
|
ref: i,
|
|
107
111
|
children: e
|
|
108
112
|
})
|
|
109
113
|
});
|
|
110
|
-
},
|
|
111
|
-
children:
|
|
112
|
-
onShow:
|
|
114
|
+
}, ln = ({
|
|
115
|
+
children: o,
|
|
116
|
+
onShow: t,
|
|
113
117
|
onHide: e,
|
|
114
118
|
...i
|
|
115
|
-
}) => /* @__PURE__ */ n(
|
|
116
|
-
content:
|
|
119
|
+
}) => /* @__PURE__ */ n(y, {
|
|
120
|
+
content: o,
|
|
117
121
|
trigger: "click",
|
|
118
122
|
zIndex: 1e3,
|
|
119
|
-
onShow:
|
|
123
|
+
onShow: t,
|
|
120
124
|
onHide: e,
|
|
121
|
-
children: /* @__PURE__ */ n(
|
|
125
|
+
children: /* @__PURE__ */ n(_, {
|
|
122
126
|
...i
|
|
123
127
|
})
|
|
124
|
-
}),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
128
|
+
}), J = "_tooltip_1gh65_1", K = "_withIcon_1gh65_8", O = "_iconWrapper_1gh65_14", Q = "_info_1gh65_35", U = "_warning_1gh65_41", V = "_error_1gh65_47", s = {
|
|
129
|
+
tooltip: J,
|
|
130
|
+
withIcon: K,
|
|
131
|
+
iconWrapper: O,
|
|
132
|
+
info: Q,
|
|
133
|
+
warning: U,
|
|
134
|
+
error: V
|
|
135
|
+
}, X = {
|
|
136
|
+
info: R,
|
|
137
|
+
warning: $,
|
|
138
|
+
error: b
|
|
139
|
+
}, m = ({
|
|
140
|
+
label: o
|
|
141
|
+
}) => /* @__PURE__ */ n(f, {
|
|
142
|
+
color: L("--lhds-color-ui-50"),
|
|
143
|
+
size: "small",
|
|
144
|
+
variant: "bold",
|
|
145
|
+
children: o
|
|
146
|
+
}), an = ({
|
|
147
|
+
label: o,
|
|
148
|
+
variant: t,
|
|
149
|
+
children: e,
|
|
150
|
+
...i
|
|
151
|
+
}) => /* @__PURE__ */ n(y, {
|
|
152
|
+
theme: "dark",
|
|
153
|
+
...i,
|
|
154
|
+
disablePadding: !0,
|
|
155
|
+
content: /* @__PURE__ */ n("div", {
|
|
156
|
+
className: g(s.tooltip, t ? s.withIcon : null),
|
|
157
|
+
children: t ? /* @__PURE__ */ c(A, {
|
|
158
|
+
children: [/* @__PURE__ */ n("div", {
|
|
159
|
+
className: g(s.iconWrapper, s[t]),
|
|
160
|
+
children: /* @__PURE__ */ n(N, {
|
|
161
|
+
icon: X[t],
|
|
162
|
+
size: 16
|
|
163
|
+
})
|
|
164
|
+
}), /* @__PURE__ */ n(a, {}), /* @__PURE__ */ n(m, {
|
|
165
|
+
label: o
|
|
166
|
+
})]
|
|
167
|
+
}) : /* @__PURE__ */ n(m, {
|
|
168
|
+
label: o
|
|
169
|
+
})
|
|
170
|
+
}),
|
|
171
|
+
children: e
|
|
172
|
+
}), dn = () => {
|
|
173
|
+
const o = H();
|
|
135
174
|
return [
|
|
136
|
-
(
|
|
175
|
+
(t) => {
|
|
137
176
|
var e;
|
|
138
|
-
|
|
177
|
+
o.current = (e = t == null ? void 0 : t._tippy) != null ? e : void 0;
|
|
139
178
|
},
|
|
140
|
-
|
|
179
|
+
o
|
|
141
180
|
];
|
|
142
181
|
};
|
|
143
182
|
export {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
183
|
+
cn as ActionPrompt,
|
|
184
|
+
ln as ButtonWithPopover,
|
|
185
|
+
y as Popover,
|
|
186
|
+
an as Tooltip,
|
|
187
|
+
G as tippyStyles,
|
|
188
|
+
dn as useTippyInstance
|
|
150
189
|
};
|
|
151
190
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/hooks/UseLazyPopover.ts","../src/components/popover/Popover.tsx","../src/components/button-with-popover/ButtonWithPopover.tsx","../src/components/tooltip/Tooltip.tsx","../src/hooks/UseTippyInstance.ts"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { Plugin } from \"tippy.js\";\n\nexport const useLazyPopover = (plugins: Plugin<unknown>[] = []) => {\n const [mounted, setMounted] = useState(false);\n\n const lazyPlugin = useMemo(\n () => ({\n fn: () => ({\n onShow: () => setMounted(true),\n onHidden: () => setMounted(false),\n }),\n }),\n [setMounted]\n );\n\n return {\n plugins: [lazyPlugin, ...plugins],\n mounted,\n };\n};\n","import TippyComponent, {\n TippyProps as TippyComponentProps,\n} from \"@tippyjs/react\";\nimport * as React from \"react\";\nimport styles from \"./Popover.module.css\";\nimport \"./Tippy.module.css\";\nimport { TippyCallbackRef } from \"../../hooks/UseTippyInstance\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { useLazyPopover } from \"../../hooks/UseLazyPopover\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport interface PopoverProps\n extends Partial<Omit<TippyComponentProps, \"theme\" | \"render\">> {\n tippyRef?: TippyCallbackRef<HTMLDivElement>;\n disablePadding?: boolean;\n lazy?: boolean;\n variant?: PopoverVariant;\n}\n\nexport const tippyStyles = {\n noPadding: styles.noPadding,\n};\n\nconst variantToTheme: Record<PopoverVariant, string> = {\n standard: \"light\",\n info: \"info\",\n warning: \"warning\",\n error: \"error\",\n outlined: \"outlined\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n visible,\n trigger = \"mouseenter\",\n children,\n tippyRef,\n delay = 0,\n variant = \"standard\",\n disablePadding,\n content,\n maxWidth = \"500px\",\n plugins: propsPlugins,\n lazy,\n arrow = true,\n ...tippyProps\n}) => {\n const { plugins, mounted } = useLazyPopover(propsPlugins);\n\n return (\n <TippyComponent\n interactive\n className={tippyStyles.noPadding}\n trigger={visible !== undefined ? undefined : trigger}\n visible={visible}\n theme={\"light \" + variantToTheme[variant] ?? variantToTheme.standard}\n delay={delay}\n maxWidth={maxWidth}\n arrow={arrow}\n content={\n (!lazy || mounted) && (\n <Box spacing={!disablePadding && 1} indent={!disablePadding && 1}>\n {content}\n </Box>\n )\n }\n plugins={plugins}\n {...tippyProps}\n >\n <div ref={tippyRef}>{children}</div>\n </TippyComponent>\n );\n};\n","import { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\n\nexport interface ButtonWithPopoverProps extends FlatButtonProps {\n children?: PopoverProps[\"children\"];\n visible?: boolean;\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport const ButtonWithPopover: React.FC<ButtonWithPopoverProps> = ({\n children,\n onShow,\n onHide,\n ...buttonProps\n}) => {\n return (\n <Popover\n content={children}\n trigger={\"click\"}\n zIndex={1000}\n onShow={onShow}\n onHide={onHide}\n >\n <FlatButton {...buttonProps} />\n </Popover>\n );\n};\n","import { Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps, PopoverVariant } from \"../popover/Popover\";\n\nexport interface TooltipProps extends Partial<Omit<PopoverProps, \"content\">> {\n variant?: PopoverVariant;\n label: string;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ label, ...popoverProps }) => {\n return (\n <Popover {...popoverProps} content={<Text size={\"small\"}>{label}</Text>} />\n );\n};\n","import { Instance } from \"tippy.js\";\nimport { MutableRefObject, useRef } from \"react\";\n\nexport type TippyInstance = Instance;\n\nexport type TippyElement<TElement extends HTMLElement> = TElement & {\n _tippy: TippyInstance;\n};\n\nexport type TippyCallbackRef<TElement extends HTMLElement> = (\n element: TippyElement<TElement> | null\n) => void;\n\nexport const useTippyInstance = <TElement extends HTMLElement>(): [\n TippyCallbackRef<TElement>,\n MutableRefObject<TippyInstance | undefined>\n] => {\n const tippyRef = useRef<TippyInstance>();\n\n return [\n (element: TippyElement<TElement> | null) => {\n tippyRef.current = element?._tippy ?? undefined;\n },\n tippyRef,\n ];\n};\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","Column","_jsxs","opacity","_jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","useLazyPopover","plugins","mounted","setMounted","useState","useMemo","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","propsPlugins","lazy","arrow","tippyProps","TippyComponent","undefined","Box","ButtonWithPopover","onShow","onHide","buttonProps","Tooltip","label","popoverProps","useTippyInstance","useRef","element","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/hooks/UseLazyPopover.ts","../src/components/popover/Popover.tsx","../src/components/button-with-popover/ButtonWithPopover.tsx","../src/components/tooltip/Tooltip.tsx","../src/hooks/UseTippyInstance.ts"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { Plugin } from \"tippy.js\";\n\nexport const useLazyPopover = (plugins: Plugin<unknown>[] = []) => {\n const [mounted, setMounted] = useState(false);\n\n const lazyPlugin = useMemo(\n () => ({\n fn: () => ({\n onShow: () => setMounted(true),\n onHidden: () => setMounted(false),\n }),\n }),\n [setMounted]\n );\n\n return {\n plugins: [lazyPlugin, ...plugins],\n mounted,\n };\n};\n","import TippyComponent, {\n TippyProps as TippyComponentProps,\n} from \"@tippyjs/react\";\nimport * as React from \"react\";\nimport styles from \"./Popover.module.css\";\nimport \"./Tippy.module.css\";\nimport { TippyCallbackRef } from \"../../hooks/UseTippyInstance\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { useLazyPopover } from \"../../hooks/UseLazyPopover\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\n\nexport interface PopoverProps\n extends Partial<Omit<TippyComponentProps, \"theme\" | \"render\">> {\n tippyRef?: TippyCallbackRef<HTMLDivElement>;\n disablePadding?: boolean;\n lazy?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n}\n\nexport const tippyStyles = {\n noPadding: styles.noPadding,\n};\n\nconst variantToTheme: Record<PopoverVariant, string> = {\n standard: \"light\",\n info: \"info\",\n warning: \"warning\",\n error: \"error\",\n outlined: \"outlined\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n visible,\n trigger = \"mouseenter\",\n children,\n tippyRef,\n delay = 0,\n variant = \"standard\",\n disablePadding,\n content,\n maxWidth = \"500px\",\n plugins: propsPlugins,\n lazy,\n arrow = true,\n theme = \"light\",\n ...tippyProps\n}) => {\n const { plugins, mounted } = useLazyPopover(propsPlugins);\n\n return (\n <TippyComponent\n interactive\n className={tippyStyles.noPadding}\n trigger={visible !== undefined ? undefined : trigger}\n visible={visible}\n theme={`${theme} ${variantToTheme[variant] ?? variantToTheme.standard}`}\n delay={delay}\n maxWidth={maxWidth}\n arrow={arrow}\n content={\n (!lazy || mounted) && (\n <Box spacing={!disablePadding && 1} indent={!disablePadding && 1}>\n {content}\n </Box>\n )\n }\n plugins={plugins}\n {...tippyProps}\n >\n <div ref={tippyRef}>{children}</div>\n </TippyComponent>\n );\n};\n","import { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\n\nexport interface ButtonWithPopoverProps extends FlatButtonProps {\n children?: PopoverProps[\"children\"];\n visible?: boolean;\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport const ButtonWithPopover: React.FC<ButtonWithPopoverProps> = ({\n children,\n onShow,\n onHide,\n ...buttonProps\n}) => {\n return (\n <Popover\n content={children}\n trigger={\"click\"}\n zIndex={1000}\n onShow={onShow}\n onHide={onHide}\n >\n <FlatButton {...buttonProps} />\n </Popover>\n );\n};\n","import { Text, Space } from \"@stenajs-webui/core\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./Tooltip.module.css\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nexport interface TooltipProps extends Omit<PopoverProps, \"theme\" | \"render\"> {\n label: string;\n variant?: TooltipVariant;\n children: JSX.Element;\n}\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant=\"bold\">\n {label}\n </Text>\n);\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n label,\n variant,\n children,\n ...popoverProps\n}) => (\n <Popover\n theme=\"dark\"\n {...popoverProps}\n disablePadding\n content={\n <div className={cx(styles.tooltip, variant ? styles.withIcon : null)}>\n {variant ? (\n <>\n <div className={cx(styles.iconWrapper, styles[variant])}>\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n </div>\n }\n >\n {children}\n </Popover>\n);\n","import { Instance } from \"tippy.js\";\nimport { MutableRefObject, useRef } from \"react\";\n\nexport type TippyInstance = Instance;\n\nexport type TippyElement<TElement extends HTMLElement> = TElement & {\n _tippy: TippyInstance;\n};\n\nexport type TippyCallbackRef<TElement extends HTMLElement> = (\n element: TippyElement<TElement> | null\n) => void;\n\nexport const useTippyInstance = <TElement extends HTMLElement>(): [\n TippyCallbackRef<TElement>,\n MutableRefObject<TippyInstance | undefined>\n] => {\n const tippyRef = useRef<TippyInstance>();\n\n return [\n (element: TippyElement<TElement> | null) => {\n tippyRef.current = element?._tippy ?? undefined;\n },\n tippyRef,\n ];\n};\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","Column","_jsxs","opacity","_jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","useLazyPopover","plugins","mounted","setMounted","useState","useMemo","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","propsPlugins","lazy","arrow","theme","tippyProps","TippyComponent","undefined","Box","ButtonWithPopover","onShow","onHide","buttonProps","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","TooltipText","label","cssColor","Tooltip","popoverProps","cx","tooltip","withIcon","_Fragment","iconWrapper","Icon","useTippyInstance","useRef","element","_a"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(){"use strict";try{var
|
|
2
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("@stenajs-webui/core"),
|
|
1
|
+
(function(){"use strict";try{var r=document.createElement("style");r.appendChild(document.createTextNode('._noPadding_183x1_1 .tippy-content{padding:0}.tippy-box[data-theme~=light]{box-shadow:var(--swui-shadow-popover)}.tippy-box[data-theme~=outlined]{border:1px solid var(--lhds-color-blue-500)}.tippy-box[data-theme~=info]{background-color:var(--lhds-color-blue-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=info] .tippy-arrow{color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=warning]{background-color:var(--lhds-color-orange-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=warning] .tippy-arrow{color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=error]{background-color:var(--lhds-color-red-50);color:var(--swui-text-primary-color)}.tippy-box[data-theme~=error] .tippy-arrow{color:var(--lhds-color-red-50)}.tippy-box[data-theme~=info][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=info][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-blue-50)}.tippy-box[data-theme~=warning][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=warning][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-orange-50)}.tippy-box[data-theme~=error][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-red-50)}.tippy-box[data-theme~=error][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-red-50)}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:visibility,opacity,-webkit-transform;transition-property:transform,visibility,opacity;transition-property:transform,visibility,opacity,-webkit-transform}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;-webkit-transform-origin:center top;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;-webkit-transform-origin:center bottom;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;-webkit-transform-origin:center left;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;-webkit-transform-origin:center right;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=dark]{color:var(--lhds-color-ui-50);box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark]>.tippy-backdrop{background-color:var(--lhds-color-ui-800)}.tippy-box[data-theme~=dark]>.tippy-svg-arrow{fill:var(--lhds-color-ui-800)}._tooltip_1gh65_1{display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;align-items:center;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2)}._tooltip_1gh65_1._withIcon_1gh65_8{padding:calc(var(--swui-metrics-spacing) * .5);padding-right:calc(var(--swui-metrics-indent) * 2)}._iconWrapper_1gh65_14{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);height:16px;align-items:flex-start}._iconWrapper_1gh65_14 svg{color:var(--current-icon-color)}._iconWrapper_1gh65_14._info_1gh65_35{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_1gh65_14._warning_1gh65_41{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_1gh65_14._error_1gh65_47{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}')),document.head.appendChild(r)}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("@stenajs-webui/core"),r=require("@stenajs-webui/elements"),t=require("react/jsx-runtime"),b=require("@tippyjs/react"),u=require("react"),q=require("classnames"),z=require("@stenajs-webui/theme"),_=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},B=_(b),g=_(q),W=({text:e="Are you sure?",yesLabel:n="Yes",noLabel:o="No",onNo:i,onYes:l,loading:c})=>t.jsxs(s.Column,{position:"relative",children:[t.jsxs("div",{style:{opacity:c?0:1},children:[t.jsx(s.Text,{children:e}),t.jsx(s.Space,{}),t.jsxs(s.Row,{justifyContent:"flex-end",alignItems:"center",children:[t.jsx(r.FlatButton,{label:o,onClick:i}),t.jsx(s.Space,{}),t.jsx(r.PrimaryButton,{label:n,onClick:l})]})]}),c&&t.jsx(s.Row,{justifyContent:"center",alignItems:"center",left:0,top:0,width:"100%",height:"100%",position:"absolute",children:t.jsx(r.Spinner,{size:"small"})})]}),R="_noPadding_183x1_1",k={noPadding:R};const M=(e=[])=>{const[n,o]=u.useState(!1);return{plugins:[u.useMemo(()=>({fn:()=>({onShow:()=>o(!0),onHidden:()=>o(!1)})}),[o]),...e],mounted:n}},m={noPadding:k.noPadding},h={standard:"light",info:"info",warning:"warning",error:"error",outlined:"outlined"},d=({visible:e,trigger:n="mouseenter",children:o,tippyRef:i,delay:l=0,variant:c="standard",disablePadding:p,content:f,maxWidth:y="500px",plugins:w,lazy:P,arrow:v=!0,theme:T="light",...I})=>{var x;const{plugins:C,mounted:S}=M(w);return t.jsx(B.default,{interactive:!0,className:m.noPadding,trigger:e!==void 0?void 0:n,visible:e,theme:`${T} ${(x=h[c])!=null?x:h.standard}`,delay:l,maxWidth:y,arrow:v,content:(!P||S)&&t.jsx(s.Box,{spacing:!p&&1,indent:!p&&1,children:f}),plugins:C,...I,children:t.jsx("div",{ref:i,children:o})})},N=({children:e,onShow:n,onHide:o,...i})=>t.jsx(d,{content:e,trigger:"click",zIndex:1e3,onShow:n,onHide:o,children:t.jsx(r.FlatButton,{...i})}),A="_tooltip_1gh65_1",F="_withIcon_1gh65_8",$="_iconWrapper_1gh65_14",E="_info_1gh65_35",L="_warning_1gh65_41",D="_error_1gh65_47",a={tooltip:A,withIcon:F,iconWrapper:$,info:E,warning:L,error:D},H={info:r.stenaInfoCircle,warning:r.stenaExclamationCircle,error:r.stenaExclamationTriangle},j=({label:e})=>t.jsx(s.Text,{color:z.cssColor("--lhds-color-ui-50"),size:"small",variant:"bold",children:e}),O=({label:e,variant:n,children:o,...i})=>t.jsx(d,{theme:"dark",...i,disablePadding:!0,content:t.jsx("div",{className:g.default(a.tooltip,n?a.withIcon:null),children:n?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:g.default(a.iconWrapper,a[n]),children:t.jsx(r.Icon,{icon:H[n],size:16})}),t.jsx(s.Space,{}),t.jsx(j,{label:e})]}):t.jsx(j,{label:e})}),children:o}),Y=()=>{const e=u.useRef();return[n=>{var o;e.current=(o=n==null?void 0:n._tippy)!=null?o:void 0},e]};exports.ActionPrompt=W;exports.ButtonWithPopover=N;exports.Popover=d;exports.Tooltip=O;exports.tippyStyles=m;exports.useTippyInstance=Y;
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/hooks/UseLazyPopover.ts","../src/components/popover/Popover.tsx","../src/components/button-with-popover/ButtonWithPopover.tsx","../src/components/tooltip/Tooltip.tsx","../src/hooks/UseTippyInstance.ts"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { Plugin } from \"tippy.js\";\n\nexport const useLazyPopover = (plugins: Plugin<unknown>[] = []) => {\n const [mounted, setMounted] = useState(false);\n\n const lazyPlugin = useMemo(\n () => ({\n fn: () => ({\n onShow: () => setMounted(true),\n onHidden: () => setMounted(false),\n }),\n }),\n [setMounted]\n );\n\n return {\n plugins: [lazyPlugin, ...plugins],\n mounted,\n };\n};\n","import TippyComponent, {\n TippyProps as TippyComponentProps,\n} from \"@tippyjs/react\";\nimport * as React from \"react\";\nimport styles from \"./Popover.module.css\";\nimport \"./Tippy.module.css\";\nimport { TippyCallbackRef } from \"../../hooks/UseTippyInstance\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { useLazyPopover } from \"../../hooks/UseLazyPopover\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport interface PopoverProps\n extends Partial<Omit<TippyComponentProps, \"theme\" | \"render\">> {\n tippyRef?: TippyCallbackRef<HTMLDivElement>;\n disablePadding?: boolean;\n lazy?: boolean;\n variant?: PopoverVariant;\n}\n\nexport const tippyStyles = {\n noPadding: styles.noPadding,\n};\n\nconst variantToTheme: Record<PopoverVariant, string> = {\n standard: \"light\",\n info: \"info\",\n warning: \"warning\",\n error: \"error\",\n outlined: \"outlined\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n visible,\n trigger = \"mouseenter\",\n children,\n tippyRef,\n delay = 0,\n variant = \"standard\",\n disablePadding,\n content,\n maxWidth = \"500px\",\n plugins: propsPlugins,\n lazy,\n arrow = true,\n ...tippyProps\n}) => {\n const { plugins, mounted } = useLazyPopover(propsPlugins);\n\n return (\n <TippyComponent\n interactive\n className={tippyStyles.noPadding}\n trigger={visible !== undefined ? undefined : trigger}\n visible={visible}\n theme={\"light \" + variantToTheme[variant] ?? variantToTheme.standard}\n delay={delay}\n maxWidth={maxWidth}\n arrow={arrow}\n content={\n (!lazy || mounted) && (\n <Box spacing={!disablePadding && 1} indent={!disablePadding && 1}>\n {content}\n </Box>\n )\n }\n plugins={plugins}\n {...tippyProps}\n >\n <div ref={tippyRef}>{children}</div>\n </TippyComponent>\n );\n};\n","import { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\n\nexport interface ButtonWithPopoverProps extends FlatButtonProps {\n children?: PopoverProps[\"children\"];\n visible?: boolean;\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport const ButtonWithPopover: React.FC<ButtonWithPopoverProps> = ({\n children,\n onShow,\n onHide,\n ...buttonProps\n}) => {\n return (\n <Popover\n content={children}\n trigger={\"click\"}\n zIndex={1000}\n onShow={onShow}\n onHide={onHide}\n >\n <FlatButton {...buttonProps} />\n </Popover>\n );\n};\n","import { Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps, PopoverVariant } from \"../popover/Popover\";\n\nexport interface TooltipProps extends Partial<Omit<PopoverProps, \"content\">> {\n variant?: PopoverVariant;\n label: string;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ label, ...popoverProps }) => {\n return (\n <Popover {...popoverProps} content={<Text size={\"small\"}>{label}</Text>} />\n );\n};\n","import { Instance } from \"tippy.js\";\nimport { MutableRefObject, useRef } from \"react\";\n\nexport type TippyInstance = Instance;\n\nexport type TippyElement<TElement extends HTMLElement> = TElement & {\n _tippy: TippyInstance;\n};\n\nexport type TippyCallbackRef<TElement extends HTMLElement> = (\n element: TippyElement<TElement> | null\n) => void;\n\nexport const useTippyInstance = <TElement extends HTMLElement>(): [\n TippyCallbackRef<TElement>,\n MutableRefObject<TippyInstance | undefined>\n] => {\n const tippyRef = useRef<TippyInstance>();\n\n return [\n (element: TippyElement<TElement> | null) => {\n tippyRef.current = element?._tippy ?? undefined;\n },\n tippyRef,\n ];\n};\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","Column","_jsxs","opacity","_jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","useLazyPopover","plugins","mounted","setMounted","useState","useMemo","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","propsPlugins","lazy","arrow","tippyProps","TippyComponent","undefined","Box","ButtonWithPopover","onShow","onHide","buttonProps","Tooltip","label","popoverProps","useTippyInstance","useRef","element","_a"],"mappings":"qUAaaA,EAA4C,CAAC,CACxDC,KAAAA,EAAO,gBACPC,SAAAA,EAAW,MACXC,QAAAA,EAAU,KACVC,KAAAA,EACAC,MAAAA,EACAC,QAAAA,CANwD,WASrDC,EAAAA,OAAD,CAAQ,SAAU,WAAlB,SACE,CAAAC,EAAA,KAAA,MAAA,CAAK,MAAO,CAAEC,QAASH,EAAU,EAAI,CAAzB,EAAZ,SAAA,CACEI,EAAA,IAACC,OAAD,CAAA,SAAOV,CAAAA,CAAP,EACCS,EAAA,IAAAE,EAAA,MAFH,CAAA,CAAA,SAGGC,EAAAA,IAAD,CAAK,eAAgB,WAAY,WAAY,SAA7C,SAAA,CACEH,EAAA,IAACI,aAAD,CAAY,MAAOX,EAAS,QAASC,CAAAA,CAArC,EACCM,EAAA,IAAAE,EAAA,MAFH,CAAA,CAAA,QAGGG,EAAAA,cAAD,CAAe,MAAOb,EAAU,QAASG,CAAAA,CAH3C,CAAA,CAAA,CAHF,CAAA,CAAA,CAAA,EASCC,GACCI,EAAA,IAACG,MAAD,CACE,eAAgB,SAChB,WAAY,SACZ,KAAM,EACN,IAAK,EACL,MAAO,OACP,OAAQ,OACR,SAAU,WAPZ,eASGG,UAAD,CAAS,KAAM,OAAA,CAAf,CAAA,CApBN,CAAA,CAAA,CADF,yCClBK,MAAMC,EAAiB,CAACC,EAA6B,KAAO,CACjE,KAAM,CAACC,EAASC,CAAU,EAAIC,WAAS,EAAK,EAYrC,MAAA,CACL,QAAS,CAXQC,EAAA,QACjB,KAAO,CACL,GAAI,KAAO,CACT,OAAQ,IAAMF,EAAW,EAAI,EAC7B,SAAU,IAAMA,EAAW,EAAK,CAAA,EAClC,GAEF,CAACA,CAAU,CAAA,EAIW,GAAGF,CAAO,EAChC,QAAAC,CAAA,CAEJ,ECKaI,EAAc,CACzBC,UAAWC,EAAOD,SADO,EAIrBE,EAAiD,CACrDC,SAAU,QACVC,KAAM,OACNC,QAAS,UACTC,MAAO,QACPC,SAAU,UAL2C,EAQ1CC,EAAkC,CAAC,CAC9CC,QAAAA,EACAC,QAAAA,EAAU,aACVC,SAAAA,EACAC,SAAAA,EACAC,MAAAA,EAAQ,EACRC,QAAAA,EAAU,WACVC,eAAAA,EACAC,QAAAA,EACAC,SAAAA,EAAW,QACXvB,QAASwB,EACTC,KAAAA,EACAC,MAAAA,EAAQ,MACLC,CAb2C,IAc1C,CACE,KAAA,CAAE3B,QAAAA,EAASC,QAAAA,CAAAA,EAAYF,EAAeyB,CAAD,EAE3C,aACGI,EAAAA,QAAD,CACE,YADF,GAEE,UAAWvB,EAAYC,UACvB,QAASS,IAAYc,OAAYA,OAAYb,EAC7C,QAAAD,EACA,MAAO,SAAWP,EAAeY,GACjC,MAAAD,EACA,SAAAI,EACA,MAAAG,EACA,SACG,CAACD,GAAQxB,UACP6B,EAAAA,IAAD,CAAK,QAAS,CAACT,GAAkB,EAAG,OAAQ,CAACA,GAAkB,EAA/D,SACGC,CAAAA,CAZT,EAgBE,QAAAtB,EAhBF,GAiBM2B,EAjBN,eAmBE,MAAA,CAAK,IAAKT,EAAV,SAAAD,CAAA,CAAA,CAAA,CApBJ,CAuBD,EClEYc,EAAsD,CAAC,CAClEd,SAAAA,EACAe,OAAAA,EACAC,OAAAA,KACGC,CAJ+D,UAO/DpB,EAAD,CACE,QAASG,EACT,QAAS,QACT,OAAQ,IACR,OAAAe,EACA,OAAAC,EALF,eAOGrC,aAAesC,CAAAA,GAAAA,CAAAA,CAAhB,CAAA,CARJ,ECRWC,EAAkC,CAAC,CAAEC,MAAAA,KAAUC,CAAZ,UAE3CvB,EAAD,CAAA,GAAauB,EAAc,cAAU5C,OAAD,CAAM,KAAM,QAAZ,SAAsB2C,CAAAA,CAAtB,CAAA,CADtC,ECGWE,EAAmB,IAG3B,CACH,MAAMpB,EAAWqB,EAAAA,SAEV,MAAA,CACJC,GAA2C,OACjCtB,EAAA,SAAUuB,EAAAD,GAAA,YAAAA,EAAS,SAAT,KAAAC,EAAmB,MACxC,EACAvB,CAAA,CAEJ"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/hooks/UseLazyPopover.ts","../src/components/popover/Popover.tsx","../src/components/button-with-popover/ButtonWithPopover.tsx","../src/components/tooltip/Tooltip.tsx","../src/hooks/UseTippyInstance.ts"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { Plugin } from \"tippy.js\";\n\nexport const useLazyPopover = (plugins: Plugin<unknown>[] = []) => {\n const [mounted, setMounted] = useState(false);\n\n const lazyPlugin = useMemo(\n () => ({\n fn: () => ({\n onShow: () => setMounted(true),\n onHidden: () => setMounted(false),\n }),\n }),\n [setMounted]\n );\n\n return {\n plugins: [lazyPlugin, ...plugins],\n mounted,\n };\n};\n","import TippyComponent, {\n TippyProps as TippyComponentProps,\n} from \"@tippyjs/react\";\nimport * as React from \"react\";\nimport styles from \"./Popover.module.css\";\nimport \"./Tippy.module.css\";\nimport { TippyCallbackRef } from \"../../hooks/UseTippyInstance\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { useLazyPopover } from \"../../hooks/UseLazyPopover\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\n\nexport interface PopoverProps\n extends Partial<Omit<TippyComponentProps, \"theme\" | \"render\">> {\n tippyRef?: TippyCallbackRef<HTMLDivElement>;\n disablePadding?: boolean;\n lazy?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n}\n\nexport const tippyStyles = {\n noPadding: styles.noPadding,\n};\n\nconst variantToTheme: Record<PopoverVariant, string> = {\n standard: \"light\",\n info: \"info\",\n warning: \"warning\",\n error: \"error\",\n outlined: \"outlined\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n visible,\n trigger = \"mouseenter\",\n children,\n tippyRef,\n delay = 0,\n variant = \"standard\",\n disablePadding,\n content,\n maxWidth = \"500px\",\n plugins: propsPlugins,\n lazy,\n arrow = true,\n theme = \"light\",\n ...tippyProps\n}) => {\n const { plugins, mounted } = useLazyPopover(propsPlugins);\n\n return (\n <TippyComponent\n interactive\n className={tippyStyles.noPadding}\n trigger={visible !== undefined ? undefined : trigger}\n visible={visible}\n theme={`${theme} ${variantToTheme[variant] ?? variantToTheme.standard}`}\n delay={delay}\n maxWidth={maxWidth}\n arrow={arrow}\n content={\n (!lazy || mounted) && (\n <Box spacing={!disablePadding && 1} indent={!disablePadding && 1}>\n {content}\n </Box>\n )\n }\n plugins={plugins}\n {...tippyProps}\n >\n <div ref={tippyRef}>{children}</div>\n </TippyComponent>\n );\n};\n","import { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\n\nexport interface ButtonWithPopoverProps extends FlatButtonProps {\n children?: PopoverProps[\"children\"];\n visible?: boolean;\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport const ButtonWithPopover: React.FC<ButtonWithPopoverProps> = ({\n children,\n onShow,\n onHide,\n ...buttonProps\n}) => {\n return (\n <Popover\n content={children}\n trigger={\"click\"}\n zIndex={1000}\n onShow={onShow}\n onHide={onHide}\n >\n <FlatButton {...buttonProps} />\n </Popover>\n );\n};\n","import { Text, Space } from \"@stenajs-webui/core\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./Tooltip.module.css\";\nimport { Popover, PopoverProps } from \"../popover/Popover\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nexport interface TooltipProps extends Omit<PopoverProps, \"theme\" | \"render\"> {\n label: string;\n variant?: TooltipVariant;\n children: JSX.Element;\n}\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant=\"bold\">\n {label}\n </Text>\n);\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n label,\n variant,\n children,\n ...popoverProps\n}) => (\n <Popover\n theme=\"dark\"\n {...popoverProps}\n disablePadding\n content={\n <div className={cx(styles.tooltip, variant ? styles.withIcon : null)}>\n {variant ? (\n <>\n <div className={cx(styles.iconWrapper, styles[variant])}>\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n </div>\n }\n >\n {children}\n </Popover>\n);\n","import { Instance } from \"tippy.js\";\nimport { MutableRefObject, useRef } from \"react\";\n\nexport type TippyInstance = Instance;\n\nexport type TippyElement<TElement extends HTMLElement> = TElement & {\n _tippy: TippyInstance;\n};\n\nexport type TippyCallbackRef<TElement extends HTMLElement> = (\n element: TippyElement<TElement> | null\n) => void;\n\nexport const useTippyInstance = <TElement extends HTMLElement>(): [\n TippyCallbackRef<TElement>,\n MutableRefObject<TippyInstance | undefined>\n] => {\n const tippyRef = useRef<TippyInstance>();\n\n return [\n (element: TippyElement<TElement> | null) => {\n tippyRef.current = element?._tippy ?? undefined;\n },\n tippyRef,\n ];\n};\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","Column","_jsxs","opacity","_jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","useLazyPopover","plugins","mounted","setMounted","useState","useMemo","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","propsPlugins","lazy","arrow","theme","tippyProps","TippyComponent","undefined","Box","ButtonWithPopover","onShow","onHide","buttonProps","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","TooltipText","label","cssColor","Tooltip","popoverProps","cx","tooltip","withIcon","_Fragment","iconWrapper","Icon","useTippyInstance","useRef","element","_a"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/tooltip",
|
|
3
|
-
"version": "18.0
|
|
3
|
+
"version": "18.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "mattias800",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
"deploy": "gh-pages -d example/build"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@stenajs-webui/core": "18.0
|
|
30
|
-
"@stenajs-webui/elements": "18.0
|
|
29
|
+
"@stenajs-webui/core": "18.1.0",
|
|
30
|
+
"@stenajs-webui/elements": "18.1.0",
|
|
31
|
+
"@stenajs-webui/theme": "18.1.0",
|
|
31
32
|
"@tippyjs/react": "^4.1.0",
|
|
33
|
+
"classnames": "^2.3.1",
|
|
32
34
|
"tippy.js": "^6.2.6"
|
|
33
35
|
},
|
|
34
36
|
"peerDependencies": {
|
|
@@ -53,5 +55,5 @@
|
|
|
53
55
|
"files": [
|
|
54
56
|
"dist"
|
|
55
57
|
],
|
|
56
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "7655e89d917f2e42dbe9bf31b0515d045987213a"
|
|
57
59
|
}
|