antd-solid 0.0.32 → 0.0.35
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.esm.js +74 -48
- package/dist/index.umd.js +1 -1
- package/es/Tooltip/index.js +46 -32
- package/es/hooks/useClickAway.js +6 -2
- package/es/hooks/useEllipsisLoading.d.ts +1 -0
- package/es/hooks/useEllipsisLoading.js +11 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/package.json +1 -1
package/es/Tooltip/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createComponent, memo, Dynamic, Portal, spread, mergeProps as mergeProps$1, insert, effect, className, style, template } from 'solid-js/web';
|
|
1
|
+
import { createComponent, memo, Dynamic, Portal, use, spread, mergeProps as mergeProps$1, insert, effect, className, style, template } from 'solid-js/web';
|
|
2
2
|
import { isEqual, compact } from 'lodash-es';
|
|
3
3
|
import { mergeProps, createSignal, useContext, children, createMemo, createEffect, onCleanup, createRenderEffect, on, Show } from 'solid-js';
|
|
4
4
|
import cs from 'classnames';
|
|
@@ -11,7 +11,8 @@ import useHover from '../hooks/useHover.js';
|
|
|
11
11
|
import Element$1 from '../Element/index.js';
|
|
12
12
|
import TooltipContext from './context.js';
|
|
13
13
|
|
|
14
|
-
var _tmpl$ = /*#__PURE__*/template(`<div>`)
|
|
14
|
+
var _tmpl$ = /*#__PURE__*/template(`<div>`),
|
|
15
|
+
_tmpl$2 = /*#__PURE__*/template(`<div class=relative><div>`);
|
|
15
16
|
const unwrapContent = (content, close) => {
|
|
16
17
|
return typeof content === 'function' ? content(close) : content;
|
|
17
18
|
};
|
|
@@ -139,7 +140,6 @@ const getMinorPlacement = placement => {
|
|
|
139
140
|
}
|
|
140
141
|
return minorPlacement;
|
|
141
142
|
};
|
|
142
|
-
// TODO 超出范围滚动
|
|
143
143
|
const Tooltip = _props => {
|
|
144
144
|
const props = mergeProps({
|
|
145
145
|
trigger: 'hover',
|
|
@@ -234,7 +234,9 @@ const Tooltip = _props => {
|
|
|
234
234
|
_children.addEventListener('click', reverseOpen, {
|
|
235
235
|
signal: abortController.signal
|
|
236
236
|
});
|
|
237
|
-
useClickAway(
|
|
237
|
+
useClickAway(() => {
|
|
238
|
+
hide();
|
|
239
|
+
}, () => compact([...Object.values(subPopupElements()), contentRef(), _children]));
|
|
238
240
|
break;
|
|
239
241
|
case 'focus':
|
|
240
242
|
_children.addEventListener('focusin', show, {
|
|
@@ -258,6 +260,10 @@ const Tooltip = _props => {
|
|
|
258
260
|
}));
|
|
259
261
|
const [reversedMainPlacement, setReversedMainPlacement] = createSignal('top');
|
|
260
262
|
const [reversedMinorPlacement, setReversedMinorPlacement] = createSignal();
|
|
263
|
+
const [maxWidth, setMaxWidth] = createSignal();
|
|
264
|
+
const [maxHeight, setMaxHeight] = createSignal();
|
|
265
|
+
const [_translateX, setTranslateX] = createSignal(0);
|
|
266
|
+
const [_translateY, setTranslateY] = createSignal(0);
|
|
261
267
|
const contentSize = useSize(contentRef);
|
|
262
268
|
// 设置 content 显示时的 translate
|
|
263
269
|
createEffect(() => {
|
|
@@ -306,15 +312,19 @@ const Tooltip = _props => {
|
|
|
306
312
|
switch (mainPlacement) {
|
|
307
313
|
case 'top':
|
|
308
314
|
translateY = _childrenRect.top - arrowOffset() - defaultOffset - _contentSize.height;
|
|
315
|
+
setMaxHeight(translateY);
|
|
309
316
|
break;
|
|
310
317
|
case 'bottom':
|
|
311
318
|
translateY = _childrenRect.bottom + arrowOffset() + defaultOffset;
|
|
319
|
+
setMaxHeight(window.innerHeight - translateY);
|
|
312
320
|
break;
|
|
313
321
|
case 'left':
|
|
314
322
|
translateX = _childrenRect.left - arrowOffset() - defaultOffset - _contentSize.width;
|
|
323
|
+
setMaxWidth(translateX);
|
|
315
324
|
break;
|
|
316
325
|
case 'right':
|
|
317
326
|
translateX = _childrenRect.right + arrowOffset() + defaultOffset;
|
|
327
|
+
setMaxWidth(window.innerWidth - translateX);
|
|
318
328
|
break;
|
|
319
329
|
}
|
|
320
330
|
};
|
|
@@ -336,12 +346,12 @@ const Tooltip = _props => {
|
|
|
336
346
|
}
|
|
337
347
|
break;
|
|
338
348
|
case 'bottom':
|
|
339
|
-
if (translateY + _contentSize.height > window.innerHeight) {
|
|
349
|
+
if (translateY > _contentSize.height && translateY + _contentSize.height > window.innerHeight) {
|
|
340
350
|
reverseMainPlacement();
|
|
341
351
|
}
|
|
342
352
|
break;
|
|
343
353
|
case 'left':
|
|
344
|
-
if (translateX + _contentSize.width > window.innerWidth) {
|
|
354
|
+
if (translateX > _contentSize.width && translateX + _contentSize.width > window.innerWidth) {
|
|
345
355
|
reverseMainPlacement();
|
|
346
356
|
}
|
|
347
357
|
break;
|
|
@@ -391,8 +401,8 @@ const Tooltip = _props => {
|
|
|
391
401
|
} else {
|
|
392
402
|
updateTranslateByMainPlacement(mainPlacement);
|
|
393
403
|
}
|
|
394
|
-
|
|
395
|
-
|
|
404
|
+
setTranslateX(translateX);
|
|
405
|
+
setTranslateY(translateY);
|
|
396
406
|
// placement 为 top 和 bottom 时,tooltip 超出可视区域时对 content 进行偏移矫正
|
|
397
407
|
if (props.placement === 'top' || props.placement === 'bottom') {
|
|
398
408
|
let innerTranslateX = 0;
|
|
@@ -432,37 +442,40 @@ const Tooltip = _props => {
|
|
|
432
442
|
},
|
|
433
443
|
get children() {
|
|
434
444
|
return createComponent(Element$1, {
|
|
435
|
-
ref: setPopupRef,
|
|
436
445
|
get ["class"]() {
|
|
437
|
-
return cs('z-1000 fixed left-0 top-0 [font-size:var(--ant-font-size)] text-[
|
|
446
|
+
return cs('z-1000 fixed left-0 top-0 [font-size:var(--ant-font-size)] text-[--ant-color-text] leading-[--ant-line-height] overflow-auto', open() ? 'block' : 'hidden');
|
|
438
447
|
},
|
|
439
|
-
style
|
|
440
|
-
|
|
448
|
+
get style() {
|
|
449
|
+
return {
|
|
450
|
+
transform: `translate(${_translateX()}px, ${_translateY()}px)`,
|
|
451
|
+
'max-width': typeof maxWidth() === 'number' ? `${maxWidth()}px` : undefined,
|
|
452
|
+
'max-height': typeof maxHeight() === 'number' ? `${maxHeight()}px` : undefined
|
|
453
|
+
};
|
|
441
454
|
},
|
|
442
455
|
onClick: e => {
|
|
443
456
|
e.stopPropagation();
|
|
444
457
|
},
|
|
445
458
|
get children() {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
|
|
459
|
+
var _el$ = _tmpl$2(),
|
|
460
|
+
_el$2 = _el$.firstChild;
|
|
461
|
+
use(setPopupRef, _el$);
|
|
462
|
+
spread(_el$2, mergeProps$1(() => props.contentHTMLAttributes, {
|
|
463
|
+
get ["class"]() {
|
|
464
|
+
return cs(props.contentHTMLAttributes?.class, 'px-8px py-6px [box-shadow:var(--ant-box-shadow)] rounded-[var(--ant-border-radius-lg)] overflow-auto translate-x-[--inner-translate-x] translate-y-[--inner-translate-y]', props.plain ? 'text-[var(--ant-color-text)] bg-[var(--ant-color-bg-container-tertiary)]' : 'text-[var(--ant-color-text-light-solid)] bg-[var(--ant-color-bg-spotlight)]');
|
|
465
|
+
}
|
|
466
|
+
}), false, true);
|
|
467
|
+
insert(_el$2, createComponent(TooltipContext.Provider, {
|
|
468
|
+
value: context,
|
|
469
|
+
get children() {
|
|
470
|
+
return unwrapContent(props.content, () => setOpen(false));
|
|
471
|
+
}
|
|
472
|
+
}));
|
|
473
|
+
insert(_el$, createComponent(Show, {
|
|
461
474
|
get when() {
|
|
462
475
|
return props.arrow;
|
|
463
476
|
},
|
|
464
477
|
get children() {
|
|
465
|
-
var _el$
|
|
478
|
+
var _el$3 = _tmpl$();
|
|
466
479
|
effect(_p$ => {
|
|
467
480
|
var _v$ = cs('w-8px h-8px absolute border-transparent [box-shadow:var(--ant-box-shadow)]'),
|
|
468
481
|
_v$2 = {
|
|
@@ -470,16 +483,17 @@ const Tooltip = _props => {
|
|
|
470
483
|
'background-color': props.plain ? 'var(--ant-color-bg-container-tertiary)' : 'var(--ant-color-bg-spotlight)',
|
|
471
484
|
...ARROW_STYLE_DICT[mergePlacement(reversedMainPlacement(), reversedMinorPlacement())]
|
|
472
485
|
};
|
|
473
|
-
_v$ !== _p$.e && className(_el$
|
|
474
|
-
_p$.t = style(_el$
|
|
486
|
+
_v$ !== _p$.e && className(_el$3, _p$.e = _v$);
|
|
487
|
+
_p$.t = style(_el$3, _v$2, _p$.t);
|
|
475
488
|
return _p$;
|
|
476
489
|
}, {
|
|
477
490
|
e: undefined,
|
|
478
491
|
t: undefined
|
|
479
492
|
});
|
|
480
|
-
return _el$
|
|
493
|
+
return _el$3;
|
|
481
494
|
}
|
|
482
|
-
})
|
|
495
|
+
}), null);
|
|
496
|
+
return _el$;
|
|
483
497
|
}
|
|
484
498
|
});
|
|
485
499
|
}
|
package/es/hooks/useClickAway.js
CHANGED
|
@@ -9,9 +9,13 @@ function useClickAway(onClickAway, target) {
|
|
|
9
9
|
onClickAway(event);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
window.addEventListener('click', onClick
|
|
12
|
+
window.addEventListener('click', onClick, {
|
|
13
|
+
capture: true
|
|
14
|
+
});
|
|
13
15
|
onCleanup(() => {
|
|
14
|
-
window.removeEventListener('click', onClick
|
|
16
|
+
window.removeEventListener('click', onClick, {
|
|
17
|
+
capture: true
|
|
18
|
+
});
|
|
15
19
|
});
|
|
16
20
|
}
|
|
17
21
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function useEllipsisLoading(time?: number): import("solid-js").Accessor<string>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createSignal } from 'solid-js';
|
|
2
|
+
|
|
3
|
+
function useEllipsisLoading(time = 500) {
|
|
4
|
+
const [ellipsis, setEllipsis] = createSignal('');
|
|
5
|
+
setInterval(() => {
|
|
6
|
+
setEllipsis(prev => prev.length >= 3 ? '.' : prev + '.');
|
|
7
|
+
}, time);
|
|
8
|
+
return ellipsis;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { useEllipsisLoading as default };
|
package/es/index.d.ts
CHANGED
|
@@ -92,6 +92,7 @@ export { default as useFocus } from './hooks/useFocus';
|
|
|
92
92
|
export { default as useVirtualList } from './hooks/useVirtualList';
|
|
93
93
|
export { default as useCounter } from './hooks/useCounter';
|
|
94
94
|
export { default as useMouse } from './hooks/useMouse';
|
|
95
|
+
export { default as useEllipsisLoading } from './hooks/useEllipsisLoading';
|
|
95
96
|
export { setupGlobalDrag } from './utils/setupGlobalDrag';
|
|
96
97
|
export type { ComponentSize } from './types';
|
|
97
98
|
export { default as enUS } from './locale/en_US';
|
package/es/index.js
CHANGED
|
@@ -56,6 +56,7 @@ export { default as useFocus } from './hooks/useFocus.js';
|
|
|
56
56
|
export { default as useVirtualList } from './hooks/useVirtualList.js';
|
|
57
57
|
export { default as useCounter } from './hooks/useCounter.js';
|
|
58
58
|
export { default as useMouse } from './hooks/useMouse.js';
|
|
59
|
+
export { default as useEllipsisLoading } from './hooks/useEllipsisLoading.js';
|
|
59
60
|
export { setupGlobalDrag } from './utils/setupGlobalDrag.js';
|
|
60
61
|
export { default as enUS } from './locale/en_US.js';
|
|
61
62
|
export { default as zhCN } from './locale/zh_CN.js';
|