shineout 3.9.10-beta.2 → 3.9.10-beta.4

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.10-beta.2'
525
+ version: '3.9.10-beta.4'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12402,7 +12402,7 @@ var handleStyle = function handleStyle(style) {
12402
12402
  };
12403
12403
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12404
12404
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12405
- /* harmony default export */ var version = ('3.9.10-beta.2');
12405
+ /* harmony default export */ var version = ('3.9.10-beta.4');
12406
12406
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12407
12407
 
12408
12408
 
@@ -28748,7 +28748,7 @@ var textarea_input = objectSpread2_default()(objectSpread2_default()(objectSprea
28748
28748
  padding: 4,
28749
28749
  color: src.textareaClearColor,
28750
28750
  opacity: 0,
28751
- '$wrapperWithClear:hover &': {
28751
+ '$wrapperWithClear:hover &, $wrapperWithClear$wrapperFocus &': {
28752
28752
  opacity: 1
28753
28753
  },
28754
28754
  '$wrapperSmall &': {
@@ -28788,7 +28788,14 @@ var textarea_input = objectSpread2_default()(objectSpread2_default()(objectSprea
28788
28788
  '&&$wrapperLarge > $textarea': {
28789
28789
  paddingRight: "calc(".concat(src.textareaLargePaddingX, " + ").concat(src.textareaLargeClearSize, " + 12px)")
28790
28790
  }
28791
- }
28791
+ },
28792
+ wrapperShowClear: {
28793
+ '& $clear': {
28794
+ display: 'block',
28795
+ opacity: 1
28796
+ }
28797
+ },
28798
+ wrapperHasValue: {}
28792
28799
  });
28793
28800
  /* harmony default export */ var src_textarea_textarea = (textarea_input);
28794
28801
  ;// CONCATENATED MODULE: ../shineout-style/src/textarea/index.ts
@@ -51871,7 +51878,7 @@ var useTextarea = function useTextarea(props) {
51871
51878
 
51872
51879
 
51873
51880
 
51874
- var simple_textarea_excluded = ["jssStyle", "className", "style", "status", "size", "prefix", "suffix", "underline", "autosize", "border", "resize", "onEnterPress", "onStatusChange", "renderTextarea", "limit", "clearable"];
51881
+ var simple_textarea_excluded = ["jssStyle", "className", "style", "status", "size", "prefix", "suffix", "underline", "autosize", "border", "resize", "onEnterPress", "onStatusChange", "renderTextarea", "limit", "clearable", "showClear"];
51875
51882
 
51876
51883
 
51877
51884
 
@@ -51900,6 +51907,7 @@ var Textarea = function Textarea(props) {
51900
51907
  renderTextarea = props.renderTextarea,
51901
51908
  limit = props.limit,
51902
51909
  clearable = props.clearable,
51910
+ showClear = props.showClear,
51903
51911
  rest = objectWithoutProperties_default()(props, simple_textarea_excluded);
51904
51912
  var config = useConfig();
51905
51913
  var textareaClasses = jssStyle === null || jssStyle === void 0 || (_jssStyle$textarea = jssStyle.textarea) === null || _jssStyle$textarea === void 0 ? void 0 : _jssStyle$textarea.call(jssStyle);
@@ -51910,7 +51918,8 @@ var Textarea = function Textarea(props) {
51910
51918
  disabled = _useTextarea.disabled;
51911
51919
  var _useContext = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useContext)(FormFieldContext),
51912
51920
  fieldId = _useContext.fieldId;
51913
- var rootClass = classnames_default()(className, textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.rootClass, textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapper, !!focused && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperFocus), !!disabled && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperDisabled), status === 'error' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperError), size === 'small' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperSmall), size === 'large' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperLarge), !!underline && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperUnderline), !border && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperNoBorder));
51921
+ var showClearFromProp = showClear && !disabled;
51922
+ var rootClass = classnames_default()(className, textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.rootClass, textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapper, !!focused && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperFocus), !!disabled && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperDisabled), status === 'error' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperError), size === 'small' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperSmall), size === 'large' && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperLarge), !!underline && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperUnderline), !border && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperNoBorder), showClearFromProp && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperShowClear));
51914
51923
  var keyHandler = useKeyEvent({
51915
51924
  onEnterPress: function onEnterPress(e) {
51916
51925
  _onEnterPress === null || _onEnterPress === void 0 || _onEnterPress(e.target.value || '', e);
@@ -51948,7 +51957,7 @@ var Textarea = function Textarea(props) {
51948
51957
  });
51949
51958
  }
51950
51959
  var clearEl = null;
51951
- if (clearable && props.value && !disabled) {
51960
+ if ((showClearFromProp || clearable) && props.value && !disabled) {
51952
51961
  clearEl = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
51953
51962
  className: textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.clear,
51954
51963
  onClick: function onClick() {
@@ -52240,7 +52249,7 @@ var textarea_Textarea = function Textarea(props0) {
52240
52249
  rows: 4,
52241
52250
  jssStyle: jssStyle
52242
52251
  }, forwardProps), formatProps), {}, {
52243
- className: classnames_default()(innerTitleProps.innerTitle && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperInnerTitle), props.clearable && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperWithClear), resetProps.className),
52252
+ className: classnames_default()(innerTitleProps.innerTitle && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperInnerTitle), (props.clearable || props.showClear) && (textareaClasses === null || textareaClasses === void 0 ? void 0 : textareaClasses.wrapperWithClear), resetProps.className),
52244
52253
  renderTextarea: renderTextarea,
52245
52254
  limit: limit,
52246
52255
  status: tipProps.error ? 'error' : status,
@@ -61210,7 +61219,12 @@ function useCollapseAnimation(elementRef, options) {
61210
61219
 
61211
61220
  // 使用 useLayoutEffect 确保动画状态在 DOM 更新前同步设置
61212
61221
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
61213
- if (!elementRef.current) return;
61222
+ if (!elementRef.current) {
61223
+ // 元素不在 DOM 中(如懒渲染),清除首次渲染标记,
61224
+ // 确保元素出现时状态变化被当作过渡(触发动画)而非初始化。
61225
+ isFirstRenderRef.current = false;
61226
+ return;
61227
+ }
61214
61228
  var el = elementRef.current;
61215
61229
 
61216
61230
  // 如果禁用动画,清除所有样式并返回
@@ -61395,6 +61409,12 @@ var MenuItem = function MenuItem(props) {
61395
61409
  handleMouseEnter = _useMenuItem.handleMouseEnter,
61396
61410
  handleMouseLeave = _useMenuItem.handleMouseLeave;
61397
61411
 
61412
+ // inline 模式懒渲染:跟踪子菜单是否曾被展开过
61413
+ var hasBeenOpened = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(isOpen);
61414
+ if (isOpen) {
61415
+ hasBeenOpened.current = true;
61416
+ }
61417
+
61398
61418
  // 为 inline 模式添加折叠动画(仅当 inlineAnimate 为 true 时启用)
61399
61419
  var _useCollapseAnimation = useCollapseAnimation(childrenRef, {
61400
61420
  isOpen: isOpen,
@@ -61430,6 +61450,11 @@ var MenuItem = function MenuItem(props) {
61430
61450
  return null;
61431
61451
  }
61432
61452
  }
61453
+
61454
+ // inline 模式懒渲染:未曾展开过的子菜单不渲染 DOM
61455
+ if (!shoudPop && !isOpen && !hasBeenOpened.current) {
61456
+ return null;
61457
+ }
61433
61458
  var content = function content(close) {
61434
61459
  return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
61435
61460
  ref: childrenRef,
@@ -61505,7 +61530,7 @@ var MenuItem = function MenuItem(props) {
61505
61530
  }) : null;
61506
61531
  var indent = props.mode === 'inline' && props.level ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
61507
61532
  style: {
61508
- width: props.level * inlineIndent,
61533
+ width: props.level * inlineIndent + (props.frontCaret ? 8 : 0),
61509
61534
  flexShrink: 0
61510
61535
  }
61511
61536
  }) : null;
@@ -61592,6 +61617,7 @@ var MenuItem = function MenuItem(props) {
61592
61617
 
61593
61618
 
61594
61619
 
61620
+
61595
61621
  // import Scroll from './scroll';
61596
61622
 
61597
61623
 
@@ -61625,10 +61651,33 @@ var Menu = function Menu(props) {
61625
61651
  _useState2 = slicedToArray_default()(_useState, 2),
61626
61652
  hasOpen = _useState2[0],
61627
61653
  setHasOpen = _useState2[1];
61654
+
61655
+ // 当使用 active 函数且 openKeys 非受控时,自动展开激活项的父级菜单
61656
+ // eslint-disable-next-line react-hooks/exhaustive-deps
61657
+ var mergedDefaultOpenKeys = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
61658
+ if (props.openKeys !== undefined || !props.active) return props.defaultOpenKeys;
61659
+ var parentKeys = [];
61660
+ var walk = function walk(items, ancestors) {
61661
+ items.forEach(function (item, index) {
61662
+ var _item$children;
61663
+ var key = getKey(props.keygen, item, index);
61664
+ if (props.active(item)) {
61665
+ parentKeys.push.apply(parentKeys, toConsumableArray_default()(ancestors));
61666
+ }
61667
+ if ((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {
61668
+ walk(item.children, [].concat(toConsumableArray_default()(ancestors), [key]));
61669
+ }
61670
+ });
61671
+ };
61672
+ walk(data, []);
61673
+ if (!parentKeys.length) return props.defaultOpenKeys;
61674
+ var merged = new Set([].concat(toConsumableArray_default()(props.defaultOpenKeys || []), parentKeys));
61675
+ return Array.from(merged);
61676
+ }, []);
61628
61677
  var _useMenu = use_menu({
61629
61678
  data: data,
61630
61679
  active: props.active,
61631
- defaultOpenKeys: props.defaultOpenKeys,
61680
+ defaultOpenKeys: mergedDefaultOpenKeys,
61632
61681
  openKeys: props.openKeys,
61633
61682
  onOpenChange: props.onOpenChange
61634
61683
  }),
@@ -75519,7 +75568,7 @@ var upload_interface = __webpack_require__(8821);
75519
75568
 
75520
75569
 
75521
75570
  /* harmony default export */ var src_0 = ({
75522
- version: '3.9.10-beta.2'
75571
+ version: '3.9.10-beta.4'
75523
75572
  });
75524
75573
  }();
75525
75574
  /******/ return __webpack_exports__;