@pathscale/ui 1.1.68 → 1.1.70
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/components/tooltip/Tooltip.css +16 -24
- package/dist/components/tooltip/Tooltip.d.ts +4 -1
- package/dist/components/tooltip/Tooltip.js +105 -38
- package/dist/hooks/form/useFieldNew.js +2 -2
- package/dist/purge-manifest.json +2443 -2440
- package/dist/styles/icons/generated-icons.css +1 -63
- package/package.json +1 -1
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Root
|
|
4
4
|
* -----------------------------------------------------------------------------------------------*/
|
|
5
5
|
.tooltip {
|
|
6
|
-
position: relative;
|
|
7
6
|
display: inline-flex;
|
|
8
7
|
}
|
|
9
8
|
|
|
@@ -27,7 +26,7 @@
|
|
|
27
26
|
* Content
|
|
28
27
|
* -----------------------------------------------------------------------------------------------*/
|
|
29
28
|
.tooltip__content {
|
|
30
|
-
position:
|
|
29
|
+
position: fixed;
|
|
31
30
|
z-index: 9999;
|
|
32
31
|
max-width: 20rem;
|
|
33
32
|
border-radius: var(--radius-field, 0.5rem);
|
|
@@ -41,15 +40,12 @@
|
|
|
41
40
|
pointer-events: none;
|
|
42
41
|
background-color: var(--color-neutral);
|
|
43
42
|
color: var(--color-neutral-content);
|
|
44
|
-
box-shadow:
|
|
45
|
-
|
|
46
|
-
0 2px 4px -2px oklch(0% 0 0 / 0.1);
|
|
43
|
+
box-shadow: 0 4px 6px -1px oklch(0% 0 0 / 0.1), 0 2px 4px -2px
|
|
44
|
+
oklch(0% 0 0 / 0.1);
|
|
47
45
|
|
|
48
46
|
opacity: 0;
|
|
49
47
|
overflow: visible;
|
|
50
|
-
transition:
|
|
51
|
-
opacity 150ms ease,
|
|
52
|
-
transform 150ms ease;
|
|
48
|
+
transition: opacity 150ms ease, transform 150ms ease;
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
/* Visible state */
|
|
@@ -60,46 +56,42 @@
|
|
|
60
56
|
|
|
61
57
|
/* ----- Placement: top (default) ----- */
|
|
62
58
|
.tooltip__content[data-placement="top"] {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
transform: translateX(-50%) translateY(0.25rem);
|
|
59
|
+
transform: translateY(0.25rem);
|
|
60
|
+
transform-origin: bottom;
|
|
66
61
|
}
|
|
67
62
|
|
|
68
63
|
.tooltip__content[data-placement="top"][data-open="true"] {
|
|
69
|
-
transform:
|
|
64
|
+
transform: translateY(0);
|
|
70
65
|
}
|
|
71
66
|
|
|
72
67
|
/* ----- Placement: bottom ----- */
|
|
73
68
|
.tooltip__content[data-placement="bottom"] {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
transform: translateX(-50%) translateY(-0.25rem);
|
|
69
|
+
transform: translateY(-0.25rem);
|
|
70
|
+
transform-origin: top;
|
|
77
71
|
}
|
|
78
72
|
|
|
79
73
|
.tooltip__content[data-placement="bottom"][data-open="true"] {
|
|
80
|
-
transform:
|
|
74
|
+
transform: translateY(0);
|
|
81
75
|
}
|
|
82
76
|
|
|
83
77
|
/* ----- Placement: left ----- */
|
|
84
78
|
.tooltip__content[data-placement="left"] {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
transform: translateX(0.25rem) translateY(-50%);
|
|
79
|
+
transform: translateX(0.25rem);
|
|
80
|
+
transform-origin: right;
|
|
88
81
|
}
|
|
89
82
|
|
|
90
83
|
.tooltip__content[data-placement="left"][data-open="true"] {
|
|
91
|
-
transform: translateX(0)
|
|
84
|
+
transform: translateX(0);
|
|
92
85
|
}
|
|
93
86
|
|
|
94
87
|
/* ----- Placement: right ----- */
|
|
95
88
|
.tooltip__content[data-placement="right"] {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
transform: translateX(-0.25rem) translateY(-50%);
|
|
89
|
+
transform: translateX(-0.25rem);
|
|
90
|
+
transform-origin: left;
|
|
99
91
|
}
|
|
100
92
|
|
|
101
93
|
.tooltip__content[data-placement="right"][data-open="true"] {
|
|
102
|
-
transform: translateX(0)
|
|
94
|
+
transform: translateX(0);
|
|
103
95
|
}
|
|
104
96
|
|
|
105
97
|
/* ----- Reduced motion ----- */
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import "./Tooltip.css";
|
|
2
2
|
import { type Component, type JSX, type ParentComponent } from "solid-js";
|
|
3
|
+
import { type OverlayPlacement } from "../_shared/overlayPosition";
|
|
3
4
|
import type { IComponentBaseProps } from "../types";
|
|
4
|
-
export type TooltipPlacement =
|
|
5
|
+
export type TooltipPlacement = OverlayPlacement;
|
|
5
6
|
export type TooltipRootProps = IComponentBaseProps & {
|
|
6
7
|
children: JSX.Element;
|
|
7
8
|
placement?: TooltipPlacement;
|
|
9
|
+
autoFlip?: boolean;
|
|
10
|
+
sideOffset?: number;
|
|
8
11
|
showArrow?: boolean;
|
|
9
12
|
delay?: number;
|
|
10
13
|
closeDelay?: number;
|
|
@@ -2,6 +2,7 @@ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web
|
|
|
2
2
|
import "./Tooltip.css";
|
|
3
3
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
4
|
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__shared_overlayPosition_js_ab299723__ from "../_shared/overlayPosition.js";
|
|
5
6
|
import * as __WEBPACK_EXTERNAL_MODULE__Tooltip_classes_js_59536676__ from "./Tooltip.classes.js";
|
|
6
7
|
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<span>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg aria-hidden=true data-slot=tooltip-arrow-svg height=12 viewBox="0 0 12 12"width=12 xmlns=http://www.w3.org/2000/svg><path d="M0 0C5.48483 8 6.5 8 12 0Z"fill=currentColor>');
|
|
7
8
|
const TooltipContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
@@ -14,6 +15,8 @@ const TooltipRoot = (props)=>{
|
|
|
14
15
|
const [local, _others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
15
16
|
"children",
|
|
16
17
|
"placement",
|
|
18
|
+
"autoFlip",
|
|
19
|
+
"sideOffset",
|
|
17
20
|
"showArrow",
|
|
18
21
|
"delay",
|
|
19
22
|
"closeDelay",
|
|
@@ -27,19 +30,46 @@ const TooltipRoot = (props)=>{
|
|
|
27
30
|
]);
|
|
28
31
|
const [internalOpen, setInternalOpen] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(Boolean(local.defaultOpen));
|
|
29
32
|
const [triggerRef, setTriggerRef] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
33
|
+
const [contentRef, setContentRef] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
34
|
+
const [resolvedPlacement, setResolvedPlacement] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(local.placement ?? "top");
|
|
35
|
+
let delayTimer;
|
|
36
|
+
let closeTimer;
|
|
30
37
|
const isControlled = ()=>void 0 !== local.isOpen;
|
|
31
38
|
const isOpen = ()=>isControlled() ? Boolean(local.isOpen) : internalOpen();
|
|
32
39
|
const setIsOpen = (v)=>{
|
|
33
40
|
if (!isControlled()) setInternalOpen(v);
|
|
34
41
|
local.onOpenChange?.(v);
|
|
35
42
|
};
|
|
43
|
+
const openTooltip = ()=>{
|
|
44
|
+
clearTimeout(closeTimer);
|
|
45
|
+
clearTimeout(delayTimer);
|
|
46
|
+
delayTimer = setTimeout(()=>setIsOpen(true), local.delay ?? 0);
|
|
47
|
+
};
|
|
48
|
+
const closeTooltip = ()=>{
|
|
49
|
+
clearTimeout(delayTimer);
|
|
50
|
+
clearTimeout(closeTimer);
|
|
51
|
+
closeTimer = setTimeout(()=>setIsOpen(false), local.closeDelay ?? 100);
|
|
52
|
+
};
|
|
53
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
54
|
+
clearTimeout(delayTimer);
|
|
55
|
+
clearTimeout(closeTimer);
|
|
56
|
+
});
|
|
36
57
|
const ctx = {
|
|
37
58
|
isOpen,
|
|
38
59
|
setIsOpen,
|
|
39
|
-
|
|
60
|
+
openTooltip,
|
|
61
|
+
closeTooltip,
|
|
62
|
+
preferredPlacement: ()=>local.placement ?? "top",
|
|
63
|
+
placement: ()=>resolvedPlacement(),
|
|
64
|
+
setPlacement: setResolvedPlacement,
|
|
65
|
+
autoFlip: ()=>local.autoFlip ?? true,
|
|
66
|
+
sideOffset: ()=>local.sideOffset ?? 12,
|
|
40
67
|
showArrow: ()=>Boolean(local.showArrow),
|
|
41
68
|
triggerRef,
|
|
42
|
-
setTriggerRef
|
|
69
|
+
setTriggerRef,
|
|
70
|
+
contentRef,
|
|
71
|
+
setContentRef,
|
|
72
|
+
dataTheme: ()=>local.dataTheme
|
|
43
73
|
};
|
|
44
74
|
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(TooltipContext.Provider, {
|
|
45
75
|
value: ctx,
|
|
@@ -74,24 +104,16 @@ const TooltipTrigger = (props)=>{
|
|
|
74
104
|
"onFocusOut"
|
|
75
105
|
]);
|
|
76
106
|
const ctx = useTooltipContext();
|
|
77
|
-
let delayTimer;
|
|
78
|
-
let closeTimer;
|
|
79
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
80
|
-
clearTimeout(delayTimer);
|
|
81
|
-
clearTimeout(closeTimer);
|
|
82
|
-
});
|
|
83
107
|
const handleMouseEnter = (e)=>{
|
|
84
|
-
|
|
85
|
-
ctx.setIsOpen(true);
|
|
108
|
+
ctx.openTooltip();
|
|
86
109
|
if ("function" == typeof local.onMouseEnter) local.onMouseEnter(e);
|
|
87
110
|
};
|
|
88
111
|
const handleMouseLeave = (e)=>{
|
|
89
|
-
|
|
112
|
+
ctx.closeTooltip();
|
|
90
113
|
if ("function" == typeof local.onMouseLeave) local.onMouseLeave(e);
|
|
91
114
|
};
|
|
92
115
|
const handleFocusIn = (e)=>{
|
|
93
|
-
|
|
94
|
-
ctx.setIsOpen(true);
|
|
116
|
+
ctx.openTooltip();
|
|
95
117
|
if ("function" == typeof local.onFocusIn) local.onFocusIn(e);
|
|
96
118
|
};
|
|
97
119
|
const handleFocusOut = (e)=>{
|
|
@@ -126,33 +148,78 @@ const TooltipContent = (props)=>{
|
|
|
126
148
|
"class",
|
|
127
149
|
"className",
|
|
128
150
|
"dataTheme",
|
|
129
|
-
"style"
|
|
151
|
+
"style",
|
|
152
|
+
"onMouseEnter",
|
|
153
|
+
"onMouseLeave"
|
|
130
154
|
]);
|
|
131
155
|
const ctx = useTooltipContext();
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
+
const overlayPosition = (0, __WEBPACK_EXTERNAL_MODULE__shared_overlayPosition_js_ab299723__.createOverlayPosition)({
|
|
157
|
+
open: ctx.isOpen,
|
|
158
|
+
triggerRef: ctx.triggerRef,
|
|
159
|
+
overlayRef: ctx.contentRef,
|
|
160
|
+
placement: ctx.preferredPlacement,
|
|
161
|
+
offset: ctx.sideOffset,
|
|
162
|
+
autoFlip: ctx.autoFlip,
|
|
163
|
+
align: ()=>"center"
|
|
164
|
+
});
|
|
165
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
166
|
+
ctx.setPlacement(overlayPosition.placement());
|
|
167
|
+
});
|
|
168
|
+
const style = ()=>{
|
|
169
|
+
const overlayStyle = overlayPosition.style();
|
|
170
|
+
if ("string" == typeof local.style) return [
|
|
171
|
+
local.style,
|
|
172
|
+
Object.entries(overlayStyle).map(([key, value])=>`${key}: ${String(value)}`).join("; ")
|
|
173
|
+
].filter(Boolean).join("; ");
|
|
174
|
+
return {
|
|
175
|
+
...local.style ?? {},
|
|
176
|
+
...overlayStyle
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
const handleMouseEnter = (event)=>{
|
|
180
|
+
ctx.openTooltip();
|
|
181
|
+
if ("function" == typeof local.onMouseEnter) local.onMouseEnter(event);
|
|
182
|
+
};
|
|
183
|
+
const handleMouseLeave = (event)=>{
|
|
184
|
+
ctx.closeTooltip();
|
|
185
|
+
if ("function" == typeof local.onMouseLeave) local.onMouseLeave(event);
|
|
186
|
+
};
|
|
187
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
188
|
+
get when () {
|
|
189
|
+
return ctx.isOpen();
|
|
190
|
+
},
|
|
191
|
+
get children () {
|
|
192
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.Portal, {
|
|
193
|
+
get children () {
|
|
194
|
+
var _el$3 = _tmpl$2();
|
|
195
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)((el)=>ctx.setContentRef(el), _el$3);
|
|
196
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$3, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
197
|
+
role: "tooltip"
|
|
198
|
+
}, ()=>({
|
|
199
|
+
class: (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Tooltip_classes_js_59536676__.CLASSES.slot.content, local.class, local.className)
|
|
200
|
+
}), {
|
|
201
|
+
"data-slot": "tooltip-content",
|
|
202
|
+
get ["data-placement"] () {
|
|
203
|
+
return ctx.placement();
|
|
204
|
+
},
|
|
205
|
+
get ["data-open"] () {
|
|
206
|
+
return ctx.isOpen() ? "true" : "false";
|
|
207
|
+
},
|
|
208
|
+
get ["data-theme"] () {
|
|
209
|
+
return local.dataTheme ?? ctx.dataTheme();
|
|
210
|
+
},
|
|
211
|
+
get style () {
|
|
212
|
+
return style();
|
|
213
|
+
},
|
|
214
|
+
onMouseEnter: handleMouseEnter,
|
|
215
|
+
onMouseLeave: handleMouseLeave
|
|
216
|
+
}), false, true);
|
|
217
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.children);
|
|
218
|
+
return _el$3;
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
});
|
|
156
223
|
};
|
|
157
224
|
const TooltipArrow = (props)=>{
|
|
158
225
|
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
@@ -4,8 +4,8 @@ import * as __WEBPACK_EXTERNAL_MODULE__getFirstFieldError_js_285cebb2__ from "./
|
|
|
4
4
|
const useField = (name)=>{
|
|
5
5
|
const form = (0, __WEBPACK_EXTERNAL_MODULE__FormContext_js_47b39222__.useFormContext)();
|
|
6
6
|
const tsForm = form._tsForm;
|
|
7
|
-
const value =
|
|
8
|
-
const meta =
|
|
7
|
+
const value = tsForm.useStore((state)=>state.values[name]);
|
|
8
|
+
const meta = tsForm.useStore((state)=>state.fieldMeta[name]);
|
|
9
9
|
const touched = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>Boolean(meta()?.isTouched));
|
|
10
10
|
const error = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
11
11
|
const m = meta();
|