@proyecto-viviana/solidaria-components 0.3.1 → 0.3.2
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/Button.d.ts.map +1 -1
- package/dist/ComboBox.d.ts +4 -1
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/Menu.d.ts.map +1 -1
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/Popover.d.ts.map +1 -1
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TextField.d.ts +1 -0
- package/dist/TextField.d.ts.map +1 -1
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/index.js +254 -33
- package/dist/index.js.map +1 -1
- package/dist/index.jsx +254 -33
- package/dist/index.jsx.map +1 -1
- package/package.json +1 -1
- package/src/Button.tsx +69 -22
- package/src/ComboBox.tsx +77 -9
- package/src/DatePicker.tsx +60 -5
- package/src/Menu.tsx +49 -6
- package/src/NumberField.tsx +22 -2
- package/src/Popover.tsx +9 -1
- package/src/TagGroup.tsx +1 -0
- package/src/TextField.tsx +32 -7
- package/src/Tooltip.tsx +52 -7
package/src/Tooltip.tsx
CHANGED
|
@@ -226,6 +226,40 @@ const TriggerWrapper: ParentComponent<{
|
|
|
226
226
|
}> = (props) => {
|
|
227
227
|
const child = () => props.children as JSX.Element;
|
|
228
228
|
const [triggerElement, setTriggerElement] = createSignal<HTMLElement | null>(null);
|
|
229
|
+
const [wrapperElement, setWrapperElement] = createSignal<HTMLSpanElement | null>(null);
|
|
230
|
+
const getWrapperEventProps = () => {
|
|
231
|
+
const triggerProps = props.triggerProps as Record<string, unknown>;
|
|
232
|
+
const wrapperProps: Record<string, unknown> = {};
|
|
233
|
+
const eventPropNames = [
|
|
234
|
+
"onFocus",
|
|
235
|
+
"onBlur",
|
|
236
|
+
"onPointerEnter",
|
|
237
|
+
"onPointerLeave",
|
|
238
|
+
"onPointerOver",
|
|
239
|
+
"onPointerOut",
|
|
240
|
+
"onMouseEnter",
|
|
241
|
+
"onMouseLeave",
|
|
242
|
+
"onTouchStart",
|
|
243
|
+
"onPointerDown",
|
|
244
|
+
"onKeyDown",
|
|
245
|
+
];
|
|
246
|
+
|
|
247
|
+
for (const propName of eventPropNames) {
|
|
248
|
+
const handler = triggerProps[propName];
|
|
249
|
+
if (typeof handler === "function") {
|
|
250
|
+
wrapperProps[propName] = handler;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (!wrapperProps.onPointerEnter && typeof triggerProps.onMouseEnter === "function") {
|
|
255
|
+
wrapperProps.onPointerEnter = triggerProps.onMouseEnter;
|
|
256
|
+
}
|
|
257
|
+
if (!wrapperProps.onPointerLeave && typeof triggerProps.onMouseLeave === "function") {
|
|
258
|
+
wrapperProps.onPointerLeave = triggerProps.onMouseLeave;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return wrapperProps as JSX.HTMLAttributes<HTMLSpanElement>;
|
|
262
|
+
};
|
|
229
263
|
|
|
230
264
|
createEffect(() => {
|
|
231
265
|
const element = triggerElement();
|
|
@@ -241,7 +275,9 @@ const TriggerWrapper: ParentComponent<{
|
|
|
241
275
|
element.removeAttribute("aria-describedby");
|
|
242
276
|
}
|
|
243
277
|
|
|
244
|
-
const
|
|
278
|
+
const wrapper = wrapperElement();
|
|
279
|
+
const targets = Array.from(new Set([element, wrapper].filter(Boolean))) as HTMLElement[];
|
|
280
|
+
const listeners: Array<[HTMLElement, string, EventListener]> = [];
|
|
245
281
|
const eventProps = [
|
|
246
282
|
["onFocus", "focus"],
|
|
247
283
|
["onBlur", "blur"],
|
|
@@ -257,17 +293,24 @@ const TriggerWrapper: ParentComponent<{
|
|
|
257
293
|
] as const;
|
|
258
294
|
|
|
259
295
|
for (const [propName, eventName] of eventProps) {
|
|
260
|
-
|
|
296
|
+
let handler = triggerProps[propName];
|
|
297
|
+
if (!handler && propName === "onPointerEnter") {
|
|
298
|
+
handler = triggerProps.onMouseEnter;
|
|
299
|
+
} else if (!handler && propName === "onPointerLeave") {
|
|
300
|
+
handler = triggerProps.onMouseLeave;
|
|
301
|
+
}
|
|
261
302
|
if (typeof handler === "function") {
|
|
262
303
|
const listener = handler as EventListener;
|
|
263
|
-
|
|
264
|
-
|
|
304
|
+
for (const target of targets) {
|
|
305
|
+
target.addEventListener(eventName, listener);
|
|
306
|
+
listeners.push([target, eventName, listener]);
|
|
307
|
+
}
|
|
265
308
|
}
|
|
266
309
|
}
|
|
267
310
|
|
|
268
311
|
onCleanup(() => {
|
|
269
|
-
for (const [eventName, listener] of listeners) {
|
|
270
|
-
|
|
312
|
+
for (const [target, eventName, listener] of listeners) {
|
|
313
|
+
target.removeEventListener(eventName, listener);
|
|
271
314
|
}
|
|
272
315
|
if (describedBy && element.getAttribute("aria-describedby") === describedBy) {
|
|
273
316
|
element.removeAttribute("aria-describedby");
|
|
@@ -279,6 +322,8 @@ const TriggerWrapper: ParentComponent<{
|
|
|
279
322
|
// However, display:contents makes getBoundingClientRect return zeros,
|
|
280
323
|
// so we pass a ref callback that finds the first actual element child.
|
|
281
324
|
const handleRef = (span: HTMLSpanElement) => {
|
|
325
|
+
setWrapperElement(span);
|
|
326
|
+
|
|
282
327
|
const findElementChild = (el: Element): HTMLElement | null => {
|
|
283
328
|
for (const child of el.children) {
|
|
284
329
|
if (child instanceof HTMLElement) {
|
|
@@ -329,7 +374,7 @@ const TriggerWrapper: ParentComponent<{
|
|
|
329
374
|
};
|
|
330
375
|
|
|
331
376
|
return (
|
|
332
|
-
<span ref={handleRef} style={{ display: "contents" }}>
|
|
377
|
+
<span {...getWrapperEventProps()} ref={handleRef} style={{ display: "contents" }}>
|
|
333
378
|
{child()}
|
|
334
379
|
</span>
|
|
335
380
|
);
|