shineout 3.9.2-beta.1 → 3.9.2-beta.3

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/cjs/index.js CHANGED
@@ -522,5 +522,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
522
522
  // 此文件由脚本自动生成,请勿直接修改。
523
523
  // This file was generated automatically by a script. Please do not modify it directly.
524
524
  var _default = exports.default = {
525
- version: '3.9.2-beta.1'
525
+ version: '3.9.2-beta.3'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12400,7 +12400,7 @@ var handleStyle = function handleStyle(style) {
12400
12400
  };
12401
12401
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12402
12402
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12403
- /* harmony default export */ var version = ('3.9.2-beta.1');
12403
+ /* harmony default export */ var version = ('3.9.2-beta.3');
12404
12404
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12405
12405
 
12406
12406
 
@@ -21325,17 +21325,21 @@ var menuStyle = {
21325
21325
  flexDirection: 'row'
21326
21326
  },
21327
21327
  wrapperHasOpen: {},
21328
+ wrapperInlineAnimate: {},
21328
21329
  children: {
21329
21330
  padding: '0',
21330
21331
  margin: '0',
21331
- display: 'none',
21332
21332
  minWidth: '100%',
21333
21333
  whiteSpace: 'nowrap',
21334
- '$itemOpen > &, $childrenShow&': {
21334
+ '$childrenShow&': {
21335
21335
  display: 'block'
21336
+ },
21337
+ '$childrenHidden&': {
21338
+ display: 'none'
21336
21339
  }
21337
21340
  },
21338
21341
  childrenShow: {},
21342
+ childrenHidden: {},
21339
21343
  childrenUp: {},
21340
21344
  item: {
21341
21345
  listStyle: 'none',
@@ -21344,6 +21348,7 @@ var menuStyle = {
21344
21348
  itemActive: {},
21345
21349
  itemDisabled: {},
21346
21350
  itemOpen: {},
21351
+ itemClosing: {},
21347
21352
  itemInPath: {},
21348
21353
  itemHasChildren: {},
21349
21354
  childrenHasExpand: {},
@@ -21629,8 +21634,14 @@ var menuStyle = {
21629
21634
  alignItems: 'center',
21630
21635
  display: 'flex',
21631
21636
  minHeight: "calc(".concat(src.lineHeightDynamic, " + ").concat(src.menuTitlePaddingY, "*2)"),
21637
+ '$wrapperInlineAnimate$wrapper:not($wrapperVertical) &': {
21638
+ transition: 'transform 240ms cubic-bezier(.2,0,0,1)'
21639
+ },
21632
21640
  '$wrapper:not($wrapperVertical) $itemOpen > $itemContent &': {
21633
21641
  transform: 'rotate(180deg)'
21642
+ },
21643
+ '$wrapper:not($wrapperVertical) $itemClosing > $itemContent &': {
21644
+ transform: 'rotate(0deg)'
21634
21645
  }
21635
21646
  }
21636
21647
  },
@@ -30747,9 +30758,10 @@ var usePopup = function usePopup(props) {
30747
30758
  var changeOpen = function changeOpen(openIn, delay) {
30748
30759
  if (context.triggerTimer) clearTimeout(context.triggerTimer);
30749
30760
  context.triggerTimer = setTimeout(function () {
30750
- var _props$onCollapse;
30751
- if (open === openIn) return;
30752
- (_props$onCollapse = props.onCollapse) === null || _props$onCollapse === void 0 || _props$onCollapse.call(props, openIn);
30761
+ if (open !== openIn) {
30762
+ var _props$onCollapse;
30763
+ (_props$onCollapse = props.onCollapse) === null || _props$onCollapse === void 0 || _props$onCollapse.call(props, openIn);
30764
+ }
30753
30765
  if (props.open === undefined) {
30754
30766
  setOpenState(openIn);
30755
30767
  }
@@ -50672,7 +50684,7 @@ var method = function method(type, jssStyle) {
50672
50684
  });
50673
50685
  if (!root) return;
50674
50686
  var destroyModal = function destroyModal() {
50675
- innerClose();
50687
+ if (innerClose) innerClose();
50676
50688
  setTimeout(function () {
50677
50689
  destroy(root);
50678
50690
  }, 300);
@@ -60510,16 +60522,18 @@ var useMenuItem = function useMenuItem(props) {
60510
60522
  /* harmony default export */ var use_menu_item = (useMenuItem);
60511
60523
  ;// CONCATENATED MODULE: ../hooks/src/common/use-collapse-animation/use-collapse-animation.ts
60512
60524
 
60525
+
60513
60526
  /**
60514
60527
  * 为元素添加折叠/展开动画的 Hook
60515
60528
  *
60516
60529
  * @example
60517
60530
  * ```tsx
60518
60531
  * const ref = useRef<HTMLDivElement>(null);
60519
- * useCollapseAnimation(ref, { isOpen: true });
60532
+ * const { shouldHide, shouldKeepOpen } = useCollapseAnimation(ref, { isOpen: true });
60520
60533
  *
60521
- * return <div ref={ref}>Content</div>;
60534
+ * return <div ref={ref} className={shouldHide ? 'hide' : ''}>Content</div>;
60522
60535
  * ```
60536
+ * @returns 动画状态对象
60523
60537
  */
60524
60538
  function useCollapseAnimation(elementRef, options) {
60525
60539
  var isOpen = options.isOpen,
@@ -60528,8 +60542,17 @@ function useCollapseAnimation(elementRef, options) {
60528
60542
  _options$disabled = options.disabled,
60529
60543
  disabled = _options$disabled === void 0 ? false : _options$disabled,
60530
60544
  _options$timingFuncti = options.timingFunction,
60531
- timingFunction = _options$timingFuncti === void 0 ? 'cubic-bezier(.2,0,0,1)' : _options$timingFuncti;
60545
+ timingFunction = _options$timingFuncti === void 0 ? 'cubic-bezier(.2,0,0,1)' : _options$timingFuncti,
60546
+ parentOpenClassName = options.parentOpenClassName;
60532
60547
  var isFirstRenderRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(true);
60548
+ var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(!isOpen),
60549
+ _useState2 = slicedToArray_default()(_useState, 2),
60550
+ shouldHide = _useState2[0],
60551
+ setShouldHide = _useState2[1];
60552
+ var _useState3 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
60553
+ _useState4 = slicedToArray_default()(_useState3, 2),
60554
+ isAnimating = _useState4[0],
60555
+ setIsAnimating = _useState4[1];
60533
60556
 
60534
60557
  // 当 disabled 状态变化时,重置首次渲染标记
60535
60558
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
@@ -60537,6 +60560,8 @@ function useCollapseAnimation(elementRef, options) {
60537
60560
  isFirstRenderRef.current = true;
60538
60561
  }
60539
60562
  }, [disabled]);
60563
+
60564
+ // 使用 useLayoutEffect 确保动画状态在 DOM 更新前同步设置
60540
60565
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
60541
60566
  if (!elementRef.current) return;
60542
60567
  var el = elementRef.current;
@@ -60551,9 +60576,6 @@ function useCollapseAnimation(elementRef, options) {
60551
60576
  }
60552
60577
  var timer = null;
60553
60578
 
60554
- // 设置 display: block,让元素始终可见,由高度控制折叠
60555
- el.style.display = 'block';
60556
-
60557
60579
  // 首次渲染时,直接设置初始状态,不做动画
60558
60580
  if (isFirstRenderRef.current) {
60559
60581
  isFirstRenderRef.current = false;
@@ -60564,9 +60586,13 @@ function useCollapseAnimation(elementRef, options) {
60564
60586
  return;
60565
60587
  }
60566
60588
  if (isOpen) {
60567
- // 展开动画
60589
+ // 展开动画 - 先显示元素
60590
+ setShouldHide(false);
60591
+ setIsAnimating(true);
60592
+ el.style.display = 'block';
60568
60593
  el.style.height = '0px';
60569
60594
  el.style.overflow = 'hidden';
60595
+ el.style.opacity = '0';
60570
60596
 
60571
60597
  // 强制重绘
60572
60598
  void el.offsetHeight;
@@ -60576,8 +60602,9 @@ function useCollapseAnimation(elementRef, options) {
60576
60602
 
60577
60603
  // 启动动画
60578
60604
  requestAnimationFrame(function () {
60579
- el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction);
60605
+ el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction, ", opacity ").concat(duration, "ms ").concat(timingFunction);
60580
60606
  el.style.height = "".concat(scrollHeight, "px");
60607
+ el.style.opacity = '1';
60581
60608
 
60582
60609
  // 动画结束后恢复 auto
60583
60610
  timer = setTimeout(function () {
@@ -60585,20 +60612,45 @@ function useCollapseAnimation(elementRef, options) {
60585
60612
  el.style.height = '';
60586
60613
  el.style.overflow = '';
60587
60614
  el.style.transition = '';
60615
+ el.style.opacity = '';
60616
+ setIsAnimating(false);
60588
60617
  }
60589
60618
  }, duration);
60590
60619
  });
60591
60620
  } else {
60592
60621
  // 收起动画
60622
+ setIsAnimating(true);
60623
+
60624
+ // 临时添加父元素的 open class,确保用户依赖此 class 的布局样式在获取高度时生效
60625
+ var parentElement = el.parentElement;
60626
+ var needTempClass = parentOpenClassName && parentElement;
60627
+ if (needTempClass) {
60628
+ parentElement.classList.add(parentOpenClassName);
60629
+ }
60630
+
60631
+ // 强制重绘,确保临时 class 生效
60632
+ void el.offsetHeight;
60593
60633
  var _scrollHeight = el.scrollHeight;
60594
60634
  el.style.height = "".concat(_scrollHeight, "px");
60595
60635
  el.style.overflow = 'hidden';
60636
+ el.style.opacity = '1';
60596
60637
 
60597
60638
  // 强制重绘
60598
60639
  void el.offsetHeight;
60599
60640
  requestAnimationFrame(function () {
60600
- el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction);
60641
+ el.style.transition = "height ".concat(duration, "ms ").concat(timingFunction, ", opacity ").concat(duration, "ms ").concat(timingFunction);
60601
60642
  el.style.height = '0px';
60643
+ el.style.opacity = '0';
60644
+
60645
+ // 动画结束后隐藏元素
60646
+ timer = setTimeout(function () {
60647
+ // 移除临时 class
60648
+ if (needTempClass) {
60649
+ parentElement.classList.remove(parentOpenClassName);
60650
+ }
60651
+ setShouldHide(true);
60652
+ setIsAnimating(false);
60653
+ }, duration);
60602
60654
  });
60603
60655
  }
60604
60656
 
@@ -60609,6 +60661,16 @@ function useCollapseAnimation(elementRef, options) {
60609
60661
  }
60610
60662
  };
60611
60663
  }, [isOpen, disabled, duration, timingFunction]);
60664
+ if (disabled) {
60665
+ return {
60666
+ shouldHide: !isOpen,
60667
+ shouldKeepOpen: false
60668
+ };
60669
+ }
60670
+ return {
60671
+ shouldHide: shouldHide,
60672
+ shouldKeepOpen: isAnimating && !isOpen
60673
+ };
60612
60674
  }
60613
60675
  ;// CONCATENATED MODULE: ../base/src/menu/item.tsx
60614
60676
 
@@ -60682,10 +60744,13 @@ var MenuItem = function MenuItem(props) {
60682
60744
  handleMouseLeave = _useMenuItem.handleMouseLeave;
60683
60745
 
60684
60746
  // 为 inline 模式添加折叠动画(仅当 inlineAnimate 为 true 时启用)
60685
- useCollapseAnimation(childrenRef, {
60686
- isOpen: isOpen,
60687
- disabled: !props.inlineAnimate || shoudPop || !children.length
60688
- });
60747
+ var _useCollapseAnimation = useCollapseAnimation(childrenRef, {
60748
+ isOpen: isOpen,
60749
+ disabled: !props.inlineAnimate || shoudPop || !children.length,
60750
+ parentOpenClassName: classes === null || classes === void 0 ? void 0 : classes.itemOpen
60751
+ }),
60752
+ shouldHideChildren = _useCollapseAnimation.shouldHide,
60753
+ shouldKeepOpen = _useCollapseAnimation.shouldKeepOpen;
60689
60754
  var renderChildren = function renderChildren() {
60690
60755
  var _items;
60691
60756
  var items = children;
@@ -60700,8 +60765,8 @@ var MenuItem = function MenuItem(props) {
60700
60765
  }
60701
60766
  var content = function content(close) {
60702
60767
  return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
60703
- ref: !shoudPop && props.inlineAnimate ? childrenRef : undefined,
60704
- className: classnames_default()(shoudPop && (classes === null || classes === void 0 ? void 0 : classes.childrenShow), classes === null || classes === void 0 ? void 0 : classes.children, isUp && (classes === null || classes === void 0 ? void 0 : classes.childrenUp), hasExpandAbleChildren && (classes === null || classes === void 0 ? void 0 : classes.childrenHasExpand))
60768
+ ref: childrenRef,
60769
+ className: classnames_default()(shoudPop && (classes === null || classes === void 0 ? void 0 : classes.childrenShow), classes === null || classes === void 0 ? void 0 : classes.children, isUp && (classes === null || classes === void 0 ? void 0 : classes.childrenUp), hasExpandAbleChildren && (classes === null || classes === void 0 ? void 0 : classes.childrenHasExpand), shouldHideChildren && (classes === null || classes === void 0 ? void 0 : classes.childrenHidden))
60705
60770
  // 子菜单点击弹出
60706
60771
  ,
60707
60772
  onClick: close,
@@ -60838,7 +60903,7 @@ var MenuItem = function MenuItem(props) {
60838
60903
  }
60839
60904
  };
60840
60905
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
60841
- className: classnames_default()(classes === null || classes === void 0 ? void 0 : classes.item, isDisabled && (classes === null || classes === void 0 ? void 0 : classes.itemDisabled), isInPath && (classes === null || classes === void 0 ? void 0 : classes.itemInPath), (isOpen || popOpen) && (classes === null || classes === void 0 ? void 0 : classes.itemOpen), isChecked && (classes === null || classes === void 0 ? void 0 : classes.itemActive), expandAble && (classes === null || classes === void 0 ? void 0 : classes.itemHasChildren)),
60906
+ className: classnames_default()(classes === null || classes === void 0 ? void 0 : classes.item, isDisabled && (classes === null || classes === void 0 ? void 0 : classes.itemDisabled), isInPath && (classes === null || classes === void 0 ? void 0 : classes.itemInPath), (isOpen || popOpen || shouldKeepOpen) && (classes === null || classes === void 0 ? void 0 : classes.itemOpen), shouldKeepOpen && (classes === null || classes === void 0 ? void 0 : classes.itemClosing), isChecked && (classes === null || classes === void 0 ? void 0 : classes.itemActive), expandAble && (classes === null || classes === void 0 ? void 0 : classes.itemHasChildren)),
60842
60907
  onMouseEnter: handleMouseEnter,
60843
60908
  onMouseLeave: handleMouseLeave,
60844
60909
  dir: config.direction,
@@ -60927,7 +60992,7 @@ var Menu = function Menu(props) {
60927
60992
  }
60928
60993
  }, [data, openKeys]);
60929
60994
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()({
60930
- className: classnames_default()(props.className, classes === null || classes === void 0 ? void 0 : classes.rootClass, classes === null || classes === void 0 ? void 0 : classes.wrapper, mode === 'inline' && (classes === null || classes === void 0 ? void 0 : classes.wrapperInline), (mode === 'vertical' || mode === 'vertical-auto') && (classes === null || classes === void 0 ? void 0 : classes.wrapperVertical), mode === 'horizontal' && (classes === null || classes === void 0 ? void 0 : classes.wrapperHorizontal), hasOpen && (classes === null || classes === void 0 ? void 0 : classes.wrapperHasOpen), theme === 'dark' ? classes === null || classes === void 0 ? void 0 : classes.wrapperDark : classes === null || classes === void 0 ? void 0 : classes.wrapperLight, collapse && (classes === null || classes === void 0 ? void 0 : classes.wrapperCollapse), context.inTransition && (classes === null || classes === void 0 ? void 0 : classes.wrapperInTransition))
60995
+ className: classnames_default()(props.className, classes === null || classes === void 0 ? void 0 : classes.rootClass, classes === null || classes === void 0 ? void 0 : classes.wrapper, mode === 'inline' && (classes === null || classes === void 0 ? void 0 : classes.wrapperInline), (mode === 'vertical' || mode === 'vertical-auto') && (classes === null || classes === void 0 ? void 0 : classes.wrapperVertical), mode === 'horizontal' && (classes === null || classes === void 0 ? void 0 : classes.wrapperHorizontal), hasOpen && (classes === null || classes === void 0 ? void 0 : classes.wrapperHasOpen), theme === 'dark' ? classes === null || classes === void 0 ? void 0 : classes.wrapperDark : classes === null || classes === void 0 ? void 0 : classes.wrapperLight, collapse && (classes === null || classes === void 0 ? void 0 : classes.wrapperCollapse), context.inTransition && (classes === null || classes === void 0 ? void 0 : classes.wrapperInTransition), props.inlineAnimate && (classes === null || classes === void 0 ? void 0 : classes.wrapperInlineAnimate))
60931
60996
  }, getDataAttribute({
60932
60997
  theme: theme,
60933
60998
  mode: isVertical ? 'vertical' : mode
@@ -74461,7 +74526,7 @@ var upload_interface = __webpack_require__(8821);
74461
74526
 
74462
74527
 
74463
74528
  /* harmony default export */ var src_0 = ({
74464
- version: '3.9.2-beta.1'
74529
+ version: '3.9.2-beta.3'
74465
74530
  });
74466
74531
  }();
74467
74532
  /******/ return __webpack_exports__;