@sheinx/base 3.9.10-beta.3 → 3.9.10-beta.5

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 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["button.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO3D,QAAA,MAAM,MAAM;YAAW,WAAW;;CA6HjC,CAAC;AAIF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["button.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO3D,QAAA,MAAM,MAAM;YAAW,WAAW;;CAmHjC,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -79,15 +79,6 @@ var Button = function Button(props) {
79
79
  var htmlType = rootProps.htmlType,
80
80
  onRef = rootProps.onRef,
81
81
  buttonProps = _objectWithoutProperties(rootProps, _excluded2);
82
- var getSpinSize = function getSpinSize() {
83
- if (size === 'small') {
84
- return 10;
85
- }
86
- if (size === 'large') {
87
- return 14;
88
- }
89
- return 12;
90
- };
91
82
  var childrenEl = (_React$Children$map = _react.default.Children.map(getSpaceChildren(children, space), function (item, index) {
92
83
  // 仅隐藏前置的icon
93
84
  if (loading && index === 0 && /*#__PURE__*/(0, _react.isValidElement)(item) && item.type.isShineoutIcon) return null;
@@ -104,7 +95,7 @@ var Button = function Button(props) {
104
95
  var loadingEl = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
105
96
  className: buttonStyle.spin,
106
97
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_spin.default, {
107
- size: getSpinSize(),
98
+ size: '1em',
108
99
  jssStyle: jssStyle,
109
100
  name: "ring",
110
101
  ignoreConfig: true
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["item.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,QAAQ,UAAW,mBAAmB,aAAa,CAAC,4CAiSzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["item.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,QAAQ,UAAW,mBAAmB,aAAa,CAAC,4CA4SzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
package/cjs/menu/item.js CHANGED
@@ -84,6 +84,12 @@ var MenuItem = function MenuItem(props) {
84
84
  handleMouseEnter = _useMenuItem.handleMouseEnter,
85
85
  handleMouseLeave = _useMenuItem.handleMouseLeave;
86
86
 
87
+ // inline 模式懒渲染:跟踪子菜单是否曾被展开过
88
+ var hasBeenOpened = (0, _react.useRef)(isOpen);
89
+ if (isOpen) {
90
+ hasBeenOpened.current = true;
91
+ }
92
+
87
93
  // 为 inline 模式添加折叠动画(仅当 inlineAnimate 为 true 时启用)
88
94
  var _useCollapseAnimation = (0, _hooks.useCollapseAnimation)(childrenRef, {
89
95
  isOpen: isOpen,
@@ -119,6 +125,11 @@ var MenuItem = function MenuItem(props) {
119
125
  return null;
120
126
  }
121
127
  }
128
+
129
+ // inline 模式懒渲染:未曾展开过的子菜单不渲染 DOM
130
+ if (!shoudPop && !isOpen && !hasBeenOpened.current) {
131
+ return null;
132
+ }
122
133
  var content = function content(close) {
123
134
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
124
135
  ref: childrenRef,
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["menu.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,QAAA,MAAM,IAAI,kHA4IT,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["menu.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,QAAA,MAAM,IAAI,kHAmKT,CAAC;AAEF,eAAe,IAAI,CAAC"}
package/cjs/menu/menu.js CHANGED
@@ -16,6 +16,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
16
16
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
17
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18
18
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
20
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
22
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
19
23
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
20
24
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
25
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -52,10 +56,33 @@ var Menu = function Menu(props) {
52
56
  _useState2 = _slicedToArray(_useState, 2),
53
57
  hasOpen = _useState2[0],
54
58
  setHasOpen = _useState2[1];
59
+
60
+ // 当使用 active 函数且 openKeys 非受控时,自动展开激活项的父级菜单
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ var mergedDefaultOpenKeys = (0, _react.useMemo)(function () {
63
+ if (props.openKeys !== undefined || !props.active) return props.defaultOpenKeys;
64
+ var parentKeys = [];
65
+ var walk = function walk(items, ancestors) {
66
+ items.forEach(function (item, index) {
67
+ var _item$children;
68
+ var key = _hooks.util.getKey(props.keygen, item, index);
69
+ if (props.active(item)) {
70
+ parentKeys.push.apply(parentKeys, _toConsumableArray(ancestors));
71
+ }
72
+ if ((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {
73
+ walk(item.children, [].concat(_toConsumableArray(ancestors), [key]));
74
+ }
75
+ });
76
+ };
77
+ walk(data, []);
78
+ if (!parentKeys.length) return props.defaultOpenKeys;
79
+ var merged = new Set([].concat(_toConsumableArray(props.defaultOpenKeys || []), parentKeys));
80
+ return Array.from(merged);
81
+ }, []);
55
82
  var _useMenu = (0, _hooks.useMenu)({
56
83
  data: data,
57
84
  active: props.active,
58
- defaultOpenKeys: props.defaultOpenKeys,
85
+ defaultOpenKeys: mergedDefaultOpenKeys,
59
86
  openKeys: props.openKeys,
60
87
  onOpenChange: props.onOpenChange
61
88
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"spins.d.ts","sourceRoot":"","sources":["spins.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;AAmOtE,wBAcE"}
1
+ {"version":3,"file":"spins.d.ts","sourceRoot":"","sources":["spins.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;AAkOtE,wBAcE"}
package/cjs/spin/spins.js CHANGED
@@ -210,8 +210,7 @@ var Ring = function Ring(props) {
210
210
  borderWidth: value / 10 + unit,
211
211
  borderLeftColor: color,
212
212
  borderRightColor: color,
213
- borderBottomColor: color,
214
- fontSize: value / 10 + unit
213
+ borderBottomColor: color
215
214
  });
216
215
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.default, _objectSpread(_objectSpread({}, props), {}, {
217
216
  count: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["button.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO3D,QAAA,MAAM,MAAM;YAAW,WAAW;;CA6HjC,CAAC;AAIF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["button.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAO3D,QAAA,MAAM,MAAM;YAAW,WAAW;;CAmHjC,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -72,15 +72,6 @@ var Button = function Button(props) {
72
72
  var htmlType = rootProps.htmlType,
73
73
  onRef = rootProps.onRef,
74
74
  buttonProps = _objectWithoutProperties(rootProps, _excluded2);
75
- var getSpinSize = function getSpinSize() {
76
- if (size === 'small') {
77
- return 10;
78
- }
79
- if (size === 'large') {
80
- return 14;
81
- }
82
- return 12;
83
- };
84
75
  var childrenEl = (_React$Children$map = React.Children.map(getSpaceChildren(children, space), function (item, index) {
85
76
  // 仅隐藏前置的icon
86
77
  if (loading && index === 0 && /*#__PURE__*/isValidElement(item) && item.type.isShineoutIcon) return null;
@@ -97,7 +88,7 @@ var Button = function Button(props) {
97
88
  var loadingEl = /*#__PURE__*/_jsx("div", {
98
89
  className: buttonStyle.spin,
99
90
  children: /*#__PURE__*/_jsx(Spin, {
100
- size: getSpinSize(),
91
+ size: '1em',
101
92
  jssStyle: jssStyle,
102
93
  name: "ring",
103
94
  ignoreConfig: true
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["item.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,QAAQ,UAAW,mBAAmB,aAAa,CAAC,4CAiSzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["item.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,QAAQ,UAAW,mBAAmB,aAAa,CAAC,4CA4SzD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
package/esm/menu/item.js CHANGED
@@ -78,6 +78,12 @@ var MenuItem = function MenuItem(props) {
78
78
  handleMouseEnter = _useMenuItem.handleMouseEnter,
79
79
  handleMouseLeave = _useMenuItem.handleMouseLeave;
80
80
 
81
+ // inline 模式懒渲染:跟踪子菜单是否曾被展开过
82
+ var hasBeenOpened = useRef(isOpen);
83
+ if (isOpen) {
84
+ hasBeenOpened.current = true;
85
+ }
86
+
81
87
  // 为 inline 模式添加折叠动画(仅当 inlineAnimate 为 true 时启用)
82
88
  var _useCollapseAnimation = useCollapseAnimation(childrenRef, {
83
89
  isOpen: isOpen,
@@ -113,6 +119,11 @@ var MenuItem = function MenuItem(props) {
113
119
  return null;
114
120
  }
115
121
  }
122
+
123
+ // inline 模式懒渲染:未曾展开过的子菜单不渲染 DOM
124
+ if (!shoudPop && !isOpen && !hasBeenOpened.current) {
125
+ return null;
126
+ }
116
127
  var content = function content(close) {
117
128
  return /*#__PURE__*/_jsx("ul", {
118
129
  ref: childrenRef,
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["menu.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,QAAA,MAAM,IAAI,kHA4IT,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["menu.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,QAAA,MAAM,IAAI,kHAmKT,CAAC;AAEF,eAAe,IAAI,CAAC"}
package/esm/menu/menu.js CHANGED
@@ -4,13 +4,17 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7
11
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
12
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
13
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
14
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
15
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
- import { useEffect, useRef, useState } from 'react';
17
+ import { useEffect, useMemo, useRef, useState } from 'react';
14
18
  import { useMenu, util, useRender } from '@sheinx/hooks';
15
19
  import Item from "./item";
16
20
  import classNames from 'classnames';
@@ -47,10 +51,33 @@ var Menu = function Menu(props) {
47
51
  _useState2 = _slicedToArray(_useState, 2),
48
52
  hasOpen = _useState2[0],
49
53
  setHasOpen = _useState2[1];
54
+
55
+ // 当使用 active 函数且 openKeys 非受控时,自动展开激活项的父级菜单
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ var mergedDefaultOpenKeys = useMemo(function () {
58
+ if (props.openKeys !== undefined || !props.active) return props.defaultOpenKeys;
59
+ var parentKeys = [];
60
+ var walk = function walk(items, ancestors) {
61
+ items.forEach(function (item, index) {
62
+ var _item$children;
63
+ var key = util.getKey(props.keygen, item, index);
64
+ if (props.active(item)) {
65
+ parentKeys.push.apply(parentKeys, _toConsumableArray(ancestors));
66
+ }
67
+ if ((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {
68
+ walk(item.children, [].concat(_toConsumableArray(ancestors), [key]));
69
+ }
70
+ });
71
+ };
72
+ walk(data, []);
73
+ if (!parentKeys.length) return props.defaultOpenKeys;
74
+ var merged = new Set([].concat(_toConsumableArray(props.defaultOpenKeys || []), parentKeys));
75
+ return Array.from(merged);
76
+ }, []);
50
77
  var _useMenu = useMenu({
51
78
  data: data,
52
79
  active: props.active,
53
- defaultOpenKeys: props.defaultOpenKeys,
80
+ defaultOpenKeys: mergedDefaultOpenKeys,
54
81
  openKeys: props.openKeys,
55
82
  onOpenChange: props.onOpenChange
56
83
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"spins.d.ts","sourceRoot":"","sources":["spins.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;AAmOtE,wBAcE"}
1
+ {"version":3,"file":"spins.d.ts","sourceRoot":"","sources":["spins.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;;;;;;;;;;;;AAkOtE,wBAcE"}
package/esm/spin/spins.js CHANGED
@@ -203,8 +203,7 @@ var Ring = function Ring(props) {
203
203
  borderWidth: value / 10 + unit,
204
204
  borderLeftColor: color,
205
205
  borderRightColor: color,
206
- borderBottomColor: color,
207
- fontSize: value / 10 + unit
206
+ borderBottomColor: color
208
207
  });
209
208
  return /*#__PURE__*/_jsx(BaseSpin, _objectSpread(_objectSpread({}, props), {}, {
210
209
  count: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/base",
3
- "version": "3.9.10-beta.3",
3
+ "version": "3.9.10-beta.5",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -10,7 +10,7 @@
10
10
  "module": "./esm/index.js",
11
11
  "typings": "./cjs/index.d.ts",
12
12
  "dependencies": {
13
- "@sheinx/hooks": "3.9.10-beta.3",
13
+ "@sheinx/hooks": "3.9.10-beta.5",
14
14
  "immer": "^10.0.0",
15
15
  "classnames": "^2.0.0",
16
16
  "@shined/reactive": "^0.3.3"