antd-solid 0.0.34 → 0.0.36

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 class="relative overflow-auto"><div>`),
15
+ _tmpl$2 = /*#__PURE__*/template(`<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 + _contentSize.height);
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 + _contentSize.width);
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,52 +442,65 @@ 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]', 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
+ };
441
452
  },
442
453
  onClick: e => {
443
454
  e.stopPropagation();
444
455
  },
445
456
  get children() {
446
457
  return [(() => {
447
- var _el$ = _tmpl$();
448
- spread(_el$, mergeProps$1(() => props.contentHTMLAttributes, {
458
+ var _el$ = _tmpl$(),
459
+ _el$2 = _el$.firstChild;
460
+ use(setPopupRef, _el$2);
461
+ spread(_el$2, mergeProps$1(() => props.contentHTMLAttributes, {
449
462
  get ["class"]() {
450
463
  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
464
  }
452
465
  }), false, true);
453
- insert(_el$, createComponent(TooltipContext.Provider, {
466
+ insert(_el$2, createComponent(TooltipContext.Provider, {
454
467
  value: context,
455
468
  get children() {
456
469
  return unwrapContent(props.content, () => setOpen(false));
457
470
  }
458
471
  }));
472
+ effect(_p$ => {
473
+ var _v$ = typeof maxWidth() === 'number' ? `${maxWidth()}px` : undefined,
474
+ _v$2 = typeof maxHeight() === 'number' ? `${maxHeight()}px` : undefined;
475
+ _v$ !== _p$.e && ((_p$.e = _v$) != null ? _el$.style.setProperty("max-width", _v$) : _el$.style.removeProperty("max-width"));
476
+ _v$2 !== _p$.t && ((_p$.t = _v$2) != null ? _el$.style.setProperty("max-height", _v$2) : _el$.style.removeProperty("max-height"));
477
+ return _p$;
478
+ }, {
479
+ e: undefined,
480
+ t: undefined
481
+ });
459
482
  return _el$;
460
483
  })(), createComponent(Show, {
461
484
  get when() {
462
485
  return props.arrow;
463
486
  },
464
487
  get children() {
465
- var _el$2 = _tmpl$();
488
+ var _el$3 = _tmpl$2();
466
489
  effect(_p$ => {
467
- var _v$ = cs('w-8px h-8px absolute border-transparent [box-shadow:var(--ant-box-shadow)]'),
468
- _v$2 = {
490
+ var _v$3 = cs('w-8px h-8px absolute border-transparent [box-shadow:var(--ant-box-shadow)]'),
491
+ _v$4 = {
469
492
  'clip-path': 'polygon(-100% -100%, 200% -100%, 200% 200%)',
470
493
  'background-color': props.plain ? 'var(--ant-color-bg-container-tertiary)' : 'var(--ant-color-bg-spotlight)',
471
494
  ...ARROW_STYLE_DICT[mergePlacement(reversedMainPlacement(), reversedMinorPlacement())]
472
495
  };
473
- _v$ !== _p$.e && className(_el$2, _p$.e = _v$);
474
- _p$.t = style(_el$2, _v$2, _p$.t);
496
+ _v$3 !== _p$.e && className(_el$3, _p$.e = _v$3);
497
+ _p$.t = style(_el$3, _v$4, _p$.t);
475
498
  return _p$;
476
499
  }, {
477
500
  e: undefined,
478
501
  t: undefined
479
502
  });
480
- return _el$2;
503
+ return _el$3;
481
504
  }
482
505
  })];
483
506
  }
@@ -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.36",
4
4
  "description": "",
5
5
  "main": "dist/index.esm.js",
6
6
  "module": "es/index.js",