antd-solid 0.0.34 → 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.
@@ -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(hide, () => compact([...Object.values(subPopupElements()), contentRef(), _children]));
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
- _contentRef.style.setProperty('--translate-x', `${translateX}px`);
395
- _contentRef.style.setProperty('--translate-y', `${translateY}px`);
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-[var(--ant-color-text)] leading-[var(--ant-line-height)]', open() ? 'block' : 'hidden');
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
- transform: 'translate(var(--translate-x), var(--translate-y))'
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
- return [(() => {
447
- var _el$ = _tmpl$();
448
- spread(_el$, mergeProps$1(() => props.contentHTMLAttributes, {
449
- get ["class"]() {
450
- 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)]');
451
- }
452
- }), false, true);
453
- insert(_el$, createComponent(TooltipContext.Provider, {
454
- value: context,
455
- get children() {
456
- return unwrapContent(props.content, () => setOpen(false));
457
- }
458
- }));
459
- return _el$;
460
- })(), createComponent(Show, {
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$2 = _tmpl$();
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$2, _p$.e = _v$);
474
- _p$.t = style(_el$2, _v$2, _p$.t);
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$2;
493
+ return _el$3;
481
494
  }
482
- })];
495
+ }), null);
496
+ return _el$;
483
497
  }
484
498
  });
485
499
  }
@@ -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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antd-solid",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "description": "",
5
5
  "main": "dist/index.esm.js",
6
6
  "module": "es/index.js",