@stenajs-webui/tooltip 17.13.2 → 17.14.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/dist/index.es.js CHANGED
@@ -1,156 +1,151 @@
1
- (function(){ try {var elementStyle = document.createElement('style'); elementStyle.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}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();import { Column, Text, Space, Row, Box } from "@stenajs-webui/core";
2
- import { FlatButton, PrimaryButton, Spinner } from "@stenajs-webui/elements";
3
- import { jsxs, jsx } from "react/jsx-runtime";
4
- import TippyComponent from "@tippyjs/react";
5
- import { useState, useMemo, useRef } from "react";
6
- const ActionPrompt = ({
7
- text = "Are you sure?",
8
- yesLabel = "Yes",
9
- noLabel = "No",
10
- onNo,
11
- onYes,
12
- loading
13
- }) => {
14
- return /* @__PURE__ */ jsxs(Column, {
15
- position: "relative",
16
- children: [/* @__PURE__ */ jsxs("div", {
17
- style: {
18
- opacity: loading ? 0 : 1
19
- },
20
- children: [/* @__PURE__ */ jsx(Text, {
21
- children: text
22
- }), /* @__PURE__ */ jsx(Space, {}), /* @__PURE__ */ jsxs(Row, {
23
- justifyContent: "flex-end",
24
- alignItems: "center",
25
- children: [/* @__PURE__ */ jsx(FlatButton, {
26
- label: noLabel,
27
- onClick: onNo
28
- }), /* @__PURE__ */ jsx(Space, {}), /* @__PURE__ */ jsx(PrimaryButton, {
29
- label: yesLabel,
30
- onClick: onYes
31
- })]
32
- })]
33
- }), loading && /* @__PURE__ */ jsx(Row, {
34
- justifyContent: "center",
1
+ (function(){"use strict";try{var o=document.createElement("style");o.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}')),document.head.appendChild(o)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ import { Column as z, Text as p, Space as d, Row as u, Box as C } from "@stenajs-webui/core";
3
+ import { FlatButton as a, PrimaryButton as w, Spinner as S } from "@stenajs-webui/elements";
4
+ import { jsxs as c, jsx as n } from "react/jsx-runtime";
5
+ import _ from "@tippyjs/react";
6
+ import { useState as j, useMemo as B, useRef as I } from "react";
7
+ const Y = ({
8
+ text: t = "Are you sure?",
9
+ yesLabel: o = "Yes",
10
+ noLabel: e = "No",
11
+ onNo: i,
12
+ onYes: s,
13
+ loading: r
14
+ }) => /* @__PURE__ */ c(z, {
15
+ position: "relative",
16
+ children: [/* @__PURE__ */ c("div", {
17
+ style: {
18
+ opacity: r ? 0 : 1
19
+ },
20
+ children: [/* @__PURE__ */ n(p, {
21
+ children: t
22
+ }), /* @__PURE__ */ n(d, {}), /* @__PURE__ */ c(u, {
23
+ justifyContent: "flex-end",
35
24
  alignItems: "center",
36
- left: 0,
37
- top: 0,
38
- width: "100%",
39
- height: "100%",
40
- position: "absolute",
41
- children: /* @__PURE__ */ jsx(Spinner, {
42
- size: "small"
43
- })
25
+ children: [/* @__PURE__ */ n(a, {
26
+ label: e,
27
+ onClick: i
28
+ }), /* @__PURE__ */ n(d, {}), /* @__PURE__ */ n(w, {
29
+ label: o,
30
+ onClick: s
31
+ })]
44
32
  })]
45
- });
46
- };
47
- const noPadding = "_noPadding_183x1_1";
48
- var styles = {
49
- noPadding
50
- };
51
- var Tippy_module = {};
52
- const useLazyPopover = (plugins = []) => {
53
- const [mounted, setMounted] = useState(false);
54
- const lazyPlugin = useMemo(() => ({
55
- fn: () => ({
56
- onShow: () => setMounted(true),
57
- onHidden: () => setMounted(false)
33
+ }), r && /* @__PURE__ */ n(u, {
34
+ justifyContent: "center",
35
+ alignItems: "center",
36
+ left: 0,
37
+ top: 0,
38
+ width: "100%",
39
+ height: "100%",
40
+ position: "absolute",
41
+ children: /* @__PURE__ */ n(S, {
42
+ size: "small"
58
43
  })
59
- }), [setMounted]);
44
+ })]
45
+ }), k = "_noPadding_183x1_1", R = {
46
+ noPadding: k
47
+ };
48
+ const A = (t = []) => {
49
+ const [o, e] = j(!1);
60
50
  return {
61
- plugins: [lazyPlugin, ...plugins],
62
- mounted
51
+ plugins: [B(
52
+ () => ({
53
+ fn: () => ({
54
+ onShow: () => e(!0),
55
+ onHidden: () => e(!1)
56
+ })
57
+ }),
58
+ [e]
59
+ ), ...t],
60
+ mounted: o
63
61
  };
64
- };
65
- const tippyStyles = {
66
- noPadding: styles.noPadding
67
- };
68
- const variantToTheme = {
62
+ }, M = {
63
+ noPadding: R.noPadding
64
+ }, N = {
69
65
  standard: "light",
70
66
  info: "info",
71
67
  warning: "warning",
72
68
  error: "error",
73
69
  outlined: "outlined"
74
- };
75
- const Popover = ({
76
- visible,
77
- trigger = "mouseenter",
78
- children,
79
- tippyRef,
80
- delay = 0,
81
- variant = "standard",
82
- disablePadding,
83
- content,
84
- maxWidth = "500px",
85
- plugins: propsPlugins,
86
- lazy,
87
- arrow = true,
88
- ...tippyProps
70
+ }, m = ({
71
+ visible: t,
72
+ trigger: o = "mouseenter",
73
+ children: e,
74
+ tippyRef: i,
75
+ delay: s = 0,
76
+ variant: r = "standard",
77
+ disablePadding: l,
78
+ content: g,
79
+ maxWidth: h = "500px",
80
+ plugins: f,
81
+ lazy: y,
82
+ arrow: P = !0,
83
+ ...v
89
84
  }) => {
90
85
  const {
91
- plugins,
92
- mounted
93
- } = useLazyPopover(propsPlugins);
94
- return /* @__PURE__ */ jsx(TippyComponent, {
95
- interactive: true,
96
- className: tippyStyles.noPadding,
97
- trigger: visible !== void 0 ? void 0 : trigger,
98
- visible,
99
- theme: "light " + variantToTheme[variant],
100
- delay,
101
- maxWidth,
102
- arrow,
103
- content: (!lazy || mounted) && /* @__PURE__ */ jsx(Box, {
104
- spacing: !disablePadding && 1,
105
- indent: !disablePadding && 1,
106
- children: content
86
+ plugins: x,
87
+ mounted: T
88
+ } = A(f);
89
+ return /* @__PURE__ */ n(_, {
90
+ interactive: !0,
91
+ className: M.noPadding,
92
+ trigger: t !== void 0 ? void 0 : o,
93
+ visible: t,
94
+ theme: "light " + N[r],
95
+ delay: s,
96
+ maxWidth: h,
97
+ arrow: P,
98
+ content: (!y || T) && /* @__PURE__ */ n(C, {
99
+ spacing: !l && 1,
100
+ indent: !l && 1,
101
+ children: g
107
102
  }),
108
- plugins,
109
- ...tippyProps,
110
- children: /* @__PURE__ */ jsx("div", {
111
- ref: tippyRef,
112
- children
103
+ plugins: x,
104
+ ...v,
105
+ children: /* @__PURE__ */ n("div", {
106
+ ref: i,
107
+ children: e
113
108
  })
114
109
  });
115
- };
116
- const ButtonWithPopover = ({
117
- children,
118
- onShow,
119
- onHide,
120
- ...buttonProps
121
- }) => {
122
- return /* @__PURE__ */ jsx(Popover, {
123
- content: children,
124
- trigger: "click",
125
- zIndex: 1e3,
126
- onShow,
127
- onHide,
128
- children: /* @__PURE__ */ jsx(FlatButton, {
129
- ...buttonProps
130
- })
131
- });
132
- };
133
- const Tooltip = ({
134
- label,
135
- ...popoverProps
136
- }) => {
137
- return /* @__PURE__ */ jsx(Popover, {
138
- ...popoverProps,
139
- content: /* @__PURE__ */ jsx(Text, {
140
- size: "small",
141
- children: label
142
- })
143
- });
144
- };
145
- const useTippyInstance = () => {
146
- const tippyRef = useRef();
110
+ }, q = ({
111
+ children: t,
112
+ onShow: o,
113
+ onHide: e,
114
+ ...i
115
+ }) => /* @__PURE__ */ n(m, {
116
+ content: t,
117
+ trigger: "click",
118
+ zIndex: 1e3,
119
+ onShow: o,
120
+ onHide: e,
121
+ children: /* @__PURE__ */ n(a, {
122
+ ...i
123
+ })
124
+ }), D = ({
125
+ label: t,
126
+ ...o
127
+ }) => /* @__PURE__ */ n(m, {
128
+ ...o,
129
+ content: /* @__PURE__ */ n(p, {
130
+ size: "small",
131
+ children: t
132
+ })
133
+ }), E = () => {
134
+ const t = I();
147
135
  return [
148
- (element) => {
149
- var _a;
150
- tippyRef.current = (_a = element == null ? void 0 : element._tippy) != null ? _a : void 0;
136
+ (o) => {
137
+ var e;
138
+ t.current = (e = o == null ? void 0 : o._tippy) != null ? e : void 0;
151
139
  },
152
- tippyRef
140
+ t
153
141
  ];
154
142
  };
155
- export { ActionPrompt, ButtonWithPopover, Popover, Tooltip, tippyStyles, useTippyInstance };
143
+ export {
144
+ Y as ActionPrompt,
145
+ q as ButtonWithPopover,
146
+ m as Popover,
147
+ D as Tooltip,
148
+ M as tippyStyles,
149
+ E as useTippyInstance
150
+ };
156
151
  //# sourceMappingURL=index.es.js.map
@@ -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","_jsxs","opacity","_jsx","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","plugins","propsPlugins","lazy","arrow","tippyProps","mounted","useLazyPopover","undefined","ButtonWithPopover","onShow","onHide","buttonProps","Tooltip","label","popoverProps"],"mappings":";;;;;AAaO,MAAMA,eAA4C,CAAC;AAAA,EACxDC,OAAO;AAAA,EACPC,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,MACI;AACJ,8BACG,QAAD;AAAA,IAAQ,UAAU;AAAA,IAAlB,UACE,CAAAC,qBAAA,OAAA;AAAA,MAAK,OAAO;AAAA,QAAEC,SAASF,UAAU,IAAI;AAAA,MAAzB;AAAA,MAAZ,UAAA,CACEG,oBAAC,MAAD;AAAA,QAAA,UAAOR;AAAAA,MAAAA,CAAP,GACCQ,oBAAA,OAFH,CAAA,CAAA,wBAGG,KAAD;AAAA,QAAK,gBAAgB;AAAA,QAAY,YAAY;AAAA,QAA7C,UAAA,CACEA,oBAAC,YAAD;AAAA,UAAY,OAAON;AAAAA,UAAS,SAASC;AAAAA,QAAAA,CAArC,GACCK,oBAAA,OAFH,CAAA,CAAA,uBAGG,eAAD;AAAA,UAAe,OAAOP;AAAAA,UAAU,SAASG;AAAAA,QAAAA,CAH3C,CAAA;AAAA,MAAA,CAHF,CAAA;AAAA,IAAA,CAAA,GASCC,WACCG,oBAAC,KAAD;AAAA,MACE,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MAPZ,8BASG,SAAD;AAAA,QAAS,MAAM;AAAA,MAAA,CAAf;AAAA,IAAA,CApBN,CAAA;AAAA,EAAA,CADF;AA0BD;;;;;;AC5CM,MAAM,iBAAiB,CAAC,UAA6B,OAAO;AACjE,QAAM,CAAC,SAAS,cAAc,SAAS,KAAK;AAEtC,QAAA,aAAa,QACjB,MAAO;AAAA,IACL,IAAI,MAAO;AAAA,MACT,QAAQ,MAAM,WAAW,IAAI;AAAA,MAC7B,UAAU,MAAM,WAAW,KAAK;AAAA,IAAA;AAAA,EAClC,IAEF,CAAC,UAAU,CACb;AAEO,SAAA;AAAA,IACL,SAAS,CAAC,YAAY,GAAG,OAAO;AAAA,IAChC;AAAA,EAAA;AAEJ;ACKO,MAAMC,cAAc;AAAA,EACzBC,WAAWC,OAAOD;AADO;AAI3B,MAAME,iBAAiD;AAAA,EACrDC,UAAU;AAAA,EACVC,MAAM;AAAA,EACNC,SAAS;AAAA,EACTC,OAAO;AAAA,EACPC,UAAU;AAL2C;AAQhD,MAAMC,UAAkC,CAAC;AAAA,EAC9CC;AAAAA,EACAC,UAAU;AAAA,EACVC;AAAAA,EACAC;AAAAA,EACAC,QAAQ;AAAA,EACRC,UAAU;AAAA,EACVC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,EACXC,SAASC;AAAAA,EACTC;AAAAA,EACAC,QAAQ;AAAA,KACLC;AAAAA,MACC;AACE,QAAA;AAAA,IAAEJ;AAAAA,IAASK;AAAAA,MAAYC,eAAeL,YAAD;AAE3C,6BACG,gBAAD;AAAA,IACE,aADF;AAAA,IAEE,WAAWpB,YAAYC;AAAAA,IACvB,SAASS,YAAYgB,SAAYA,SAAYf;AAAAA,IAC7C;AAAA,IACA,OAAO,WAAWR,eAAeY;AAAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA,SACG,EAACM,QAAQG,gCACP,KAAD;AAAA,MAAK,SAAS,CAACR,kBAAkB;AAAA,MAAG,QAAQ,CAACA,kBAAkB;AAAA,MAA/D,UACGC;AAAAA,IAAAA,CAZT;AAAA,IAgBE;AAAA,IAhBF,GAiBMM;AAAAA,IAjBN,8BAmBE,OAAA;AAAA,MAAK,KAAKV;AAAAA,MAAV;AAAA,IAAA,CAAA;AAAA,EAAA,CApBJ;AAuBD;AClEM,MAAMc,oBAAsD,CAAC;AAAA,EAClEf;AAAAA,EACAgB;AAAAA,EACAC;AAAAA,KACGC;AAAAA,MACC;AACJ,6BACG,SAAD;AAAA,IACE,SAASlB;AAAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IALF,8BAOG,YAAekB;AAAAA,MAAAA,GAAAA;AAAAA,IAAAA,CAAhB;AAAA,EAAA,CARJ;AAWD;ACnBM,MAAMC,UAAkC,CAAC;AAAA,EAAEC;AAAAA,KAAUC;AAAAA,MAAmB;AAC7E,6BACG,SAAD;AAAA,IAAA,GAAaA;AAAAA,IAAc,6BAAU,MAAD;AAAA,MAAM,MAAM;AAAA,MAAZ,UAAsBD;AAAAA,IAAAA,CAAtB;AAAA,EAAA,CADtC;AAGD;ACAM,MAAM,mBAAmB,MAG3B;AACH,QAAM,WAAW;AAEV,SAAA;AAAA,IACL,CAAC,YAA2C;;AACjC,eAAA,UAAU,yCAAS,WAAT,YAAmB;AAAA,IACxC;AAAA,IACA;AAAA,EAAA;AAEJ;;"}
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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"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- (function(){ try {var elementStyle = document.createElement('style'); elementStyle.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}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var r=require("@stenajs-webui/core"),u=require("@stenajs-webui/elements"),t=require("react/jsx-runtime"),P=require("@tippyjs/react"),l=require("react");function T(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var _=T(P);const S=({text:e="Are you sure?",yesLabel:n="Yes",noLabel:o="No",onNo:i,onYes:a,loading:s})=>t.jsxs(r.Column,{position:"relative",children:[t.jsxs("div",{style:{opacity:s?0:1},children:[t.jsx(r.Text,{children:e}),t.jsx(r.Space,{}),t.jsxs(r.Row,{justifyContent:"flex-end",alignItems:"center",children:[t.jsx(u.FlatButton,{label:o,onClick:i}),t.jsx(r.Space,{}),t.jsx(u.PrimaryButton,{label:n,onClick:a})]})]}),s&&t.jsx(r.Row,{justifyContent:"center",alignItems:"center",left:0,top:0,width:"100%",height:"100%",position:"absolute",children:t.jsx(u.Spinner,{size:"small"})})]}),w="_noPadding_183x1_1";var C={noPadding:w};const b=(e=[])=>{const[n,o]=l.useState(!1);return{plugins:[l.useMemo(()=>({fn:()=>({onShow:()=>o(!0),onHidden:()=>o(!1)})}),[o]),...e],mounted:n}},d={noPadding:C.noPadding},z={standard:"light",info:"info",warning:"warning",error:"error",outlined:"outlined"},c=({visible:e,trigger:n="mouseenter",children:o,tippyRef:i,delay:a=0,variant:s="standard",disablePadding:p,content:j,maxWidth:x="500px",plugins:y,lazy:g,arrow:v=!0,...f})=>{const{plugins:h,mounted:m}=b(y);return t.jsx(_.default,{interactive:!0,className:d.noPadding,trigger:e!==void 0?void 0:n,visible:e,theme:"light "+z[s],delay:a,maxWidth:x,arrow:v,content:(!g||m)&&t.jsx(r.Box,{spacing:!p&&1,indent:!p&&1,children:j}),plugins:h,...f,children:t.jsx("div",{ref:i,children:o})})},B=({children:e,onShow:n,onHide:o,...i})=>t.jsx(c,{content:e,trigger:"click",zIndex:1e3,onShow:n,onHide:o,children:t.jsx(u.FlatButton,{...i})}),q=({label:e,...n})=>t.jsx(c,{...n,content:t.jsx(r.Text,{size:"small",children:e})}),I=()=>{const e=l.useRef();return[n=>{var o;e.current=(o=n==null?void 0:n._tippy)!=null?o:void 0},e]};exports.ActionPrompt=S;exports.ButtonWithPopover=B;exports.Popover=c;exports.Tooltip=q;exports.tippyStyles=d;exports.useTippyInstance=I;
1
+ (function(){"use strict";try{var o=document.createElement("style");o.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}')),document.head.appendChild(o)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("@stenajs-webui/core"),c=require("@stenajs-webui/elements"),e=require("react/jsx-runtime"),v=require("@tippyjs/react"),l=require("react"),T=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},_=T(v),S=({text:t="Are you sure?",yesLabel:n="Yes",noLabel:o="No",onNo:i,onYes:u,loading:r})=>e.jsxs(s.Column,{position:"relative",children:[e.jsxs("div",{style:{opacity:r?0:1},children:[e.jsx(s.Text,{children:t}),e.jsx(s.Space,{}),e.jsxs(s.Row,{justifyContent:"flex-end",alignItems:"center",children:[e.jsx(c.FlatButton,{label:o,onClick:i}),e.jsx(s.Space,{}),e.jsx(c.PrimaryButton,{label:n,onClick:u})]})]}),r&&e.jsx(s.Row,{justifyContent:"center",alignItems:"center",left:0,top:0,width:"100%",height:"100%",position:"absolute",children:e.jsx(c.Spinner,{size:"small"})})]}),w="_noPadding_183x1_1",C={noPadding:w};const b=(t=[])=>{const[n,o]=l.useState(!1);return{plugins:[l.useMemo(()=>({fn:()=>({onShow:()=>o(!0),onHidden:()=>o(!1)})}),[o]),...t],mounted:n}},d={noPadding:C.noPadding},z={standard:"light",info:"info",warning:"warning",error:"error",outlined:"outlined"},a=({visible:t,trigger:n="mouseenter",children:o,tippyRef:i,delay:u=0,variant:r="standard",disablePadding:p,content:j,maxWidth:x="500px",plugins:y,lazy:g,arrow:f=!0,...h})=>{const{plugins:m,mounted:P}=b(y);return e.jsx(_.default,{interactive:!0,className:d.noPadding,trigger:t!==void 0?void 0:n,visible:t,theme:"light "+z[r],delay:u,maxWidth:x,arrow:f,content:(!g||P)&&e.jsx(s.Box,{spacing:!p&&1,indent:!p&&1,children:j}),plugins:m,...h,children:e.jsx("div",{ref:i,children:o})})},B=({children:t,onShow:n,onHide:o,...i})=>e.jsx(a,{content:t,trigger:"click",zIndex:1e3,onShow:n,onHide:o,children:e.jsx(c.FlatButton,{...i})}),q=({label:t,...n})=>e.jsx(a,{...n,content:e.jsx(s.Text,{size:"small",children:t})}),I=()=>{const t=l.useRef();return[n=>{var o;t.current=(o=n==null?void 0:n._tippy)!=null?o:void 0},t]};exports.ActionPrompt=S;exports.ButtonWithPopover=B;exports.Popover=a;exports.Tooltip=q;exports.tippyStyles=d;exports.useTippyInstance=I;
2
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","useState","useMemo","tippyStyles","noPadding","styles","variantToTheme","standard","info","warning","error","outlined","Popover","visible","trigger","children","tippyRef","delay","variant","disablePadding","content","maxWidth","plugins","propsPlugins","lazy","arrow","tippyProps","mounted","useLazyPopover","TippyComponent","undefined","Box","ButtonWithPopover","onShow","onHide","buttonProps","Tooltip","label","popoverProps","useRef"],"mappings":"uVAaO,KAAMA,GAA4C,CAAC,CACxDC,OAAO,gBACPC,WAAW,MACXC,UAAU,KACVC,OACAC,QACAC,oBAGGC,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,6CClBK,KAAM,GAAiB,CAAC,EAA6B,KAAO,CACjE,KAAM,CAAC,EAAS,GAAcC,EAAA,SAAS,EAAK,EAYrC,MAAA,CACL,QAAS,CAXQC,EAAAA,QACjB,IAAO,EACL,GAAI,IAAO,EACT,OAAQ,IAAM,EAAW,EAAI,EAC7B,SAAU,IAAM,EAAW,EAAK,CAAA,EAClC,GAEF,CAAC,CAAU,CACb,EAGwB,GAAG,CAAO,EAChC,SAAA,CAEJ,ECKaC,EAAc,CACzBC,UAAWC,EAAOD,SADO,EAIrBE,EAAiD,CACrDC,SAAU,QACVC,KAAM,OACNC,QAAS,UACTC,MAAO,QACPC,SAAU,UAL2C,EAQ1CC,EAAkC,CAAC,CAC9CC,UACAC,UAAU,aACVC,WACAC,WACAC,QAAQ,EACRC,UAAU,WACVC,iBACAC,UACAC,WAAW,QACXC,QAASC,EACTC,OACAC,QAAQ,MACLC,KACC,CACE,KAAA,CAAEJ,UAASK,WAAYC,EAAeL,CAAD,EAE3C,aACGM,EAAAA,QAAD,CACE,YADF,GAEE,UAAW1B,EAAYC,UACvB,QAASS,IAAYiB,OAAYA,OAAYhB,EAC7C,UACA,MAAO,SAAWR,EAAeY,GACjC,QACA,WACA,QACA,QACG,EAACM,GAAQG,UACPI,EAAAA,IAAD,CAAK,QAAS,CAACZ,GAAkB,EAAG,OAAQ,CAACA,GAAkB,EAA/D,SACGC,CAAAA,CAZT,EAgBE,UAhBF,GAiBMM,EAjBN,eAmBE,MAAA,CAAK,IAAKV,EAAV,UAAA,CAAA,CAAA,CApBJ,CAuBD,EClEYgB,EAAsD,CAAC,CAClEjB,WACAkB,SACAC,YACGC,WAGA,EAAD,CACE,QAASpB,EACT,QAAS,QACT,OAAQ,IACR,SACA,SALF,eAOGjB,aAAeqC,CAAAA,GAAAA,CAAAA,CAAhB,CAAA,CARJ,ECRWC,EAAkC,CAAC,CAAEC,WAAUC,WAEvD,EAAD,CAAA,GAAaA,EAAc,cAAU3C,OAAD,CAAM,KAAM,QAAZ,SAAsB0C,CAAAA,CAAtB,CAAA,CADtC,ECGW,EAAmB,IAG3B,CACH,KAAM,GAAWE,EAAAA,SAEV,MAAA,CACL,AAAC,GAA2C,OACjC,EAAA,QAAU,oBAAS,SAAT,OAAmB,MACxC,EACA,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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/tooltip",
3
- "version": "17.13.2",
3
+ "version": "17.14.0",
4
4
  "description": "",
5
5
  "author": "mattias800",
6
6
  "license": "MIT",
@@ -26,8 +26,8 @@
26
26
  "deploy": "gh-pages -d example/build"
27
27
  },
28
28
  "dependencies": {
29
- "@stenajs-webui/core": "17.13.2",
30
- "@stenajs-webui/elements": "17.13.2",
29
+ "@stenajs-webui/core": "17.14.0",
30
+ "@stenajs-webui/elements": "17.14.0",
31
31
  "@tippyjs/react": "^4.1.0",
32
32
  "tippy.js": "^6.2.6"
33
33
  },
@@ -53,5 +53,5 @@
53
53
  "files": [
54
54
  "dist"
55
55
  ],
56
- "gitHead": "2c5c9f761a9b02e0c571ac260a61989e51ab0138"
56
+ "gitHead": "bf8a859341dc1d6dd35e28e58c35ef6d5d979307"
57
57
  }