shineout 3.9.5 → 3.9.6-beta.2

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.5'
525
+ version: '3.9.6-beta.2'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12401,7 +12401,7 @@ var handleStyle = function handleStyle(style) {
12401
12401
  };
12402
12402
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12403
12403
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12404
- /* harmony default export */ var version = ('3.9.5');
12404
+ /* harmony default export */ var version = ('3.9.6-beta.2');
12405
12405
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12406
12406
 
12407
12407
 
@@ -31270,6 +31270,32 @@ var getDataAttribute = function getDataAttribute(attrs) {
31270
31270
  var getDataAttributeName = function getDataAttributeName(name) {
31271
31271
  return "data-soui-".concat(name);
31272
31272
  };
31273
+ /**
31274
+ * Extract specific types of props from the props object
31275
+ * @param props - The props object to extract from
31276
+ * @param type - The type of props to extract ('mouse' for mouse events, 'data-attr' for data-* attributes)
31277
+ * @returns An object containing only the extracted props
31278
+ */
31279
+ var extractProps = function extractProps(props, type) {
31280
+ var result = {};
31281
+ if (type === 'mouse') {
31282
+ // Only extract onMouseEnter and onMouseLeave for Tooltip support
31283
+ if (props.onMouseEnter && typeof props.onMouseEnter === 'function') {
31284
+ result.onMouseEnter = props.onMouseEnter;
31285
+ }
31286
+ if (props.onMouseLeave && typeof props.onMouseLeave === 'function') {
31287
+ result.onMouseLeave = props.onMouseLeave;
31288
+ }
31289
+ } else if (type === 'data-attr') {
31290
+ // Extract all data-* attributes
31291
+ Object.keys(props).forEach(function (key) {
31292
+ if (key.startsWith('data-')) {
31293
+ result[key] = props[key];
31294
+ }
31295
+ });
31296
+ }
31297
+ return result;
31298
+ };
31273
31299
  ;// CONCATENATED MODULE: ../hooks/src/common/use-position-style/get-position-style.ts
31274
31300
 
31275
31301
  var ReverseDir = {
@@ -37051,6 +37077,7 @@ var Checkbox = function Checkbox(props) {
37051
37077
  size = props.size,
37052
37078
  theme = props.theme,
37053
37079
  rest = objectWithoutProperties_default()(props, simple_checkbox_excluded);
37080
+ var mouseEvents = extractProps(rest, 'mouse');
37054
37081
  var _useContext = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useContext)(FormFieldContext),
37055
37082
  fieldId = _useContext.fieldId;
37056
37083
  var checkboxStyle = jssStyle === null || jssStyle === void 0 || (_jssStyle$checkbox = jssStyle.checkbox) === null || _jssStyle$checkbox === void 0 ? void 0 : _jssStyle$checkbox.call(jssStyle);
@@ -37066,9 +37093,9 @@ var Checkbox = function Checkbox(props) {
37066
37093
  var rootClass = classnames_default()(className, checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.rootClass, checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapper, size === 'small' && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapperSmall), size === 'large' && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapperLarge), !!disabled && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapperDisabled), !!checked && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapperChecked), props.checked === 'indeterminate' && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.wrapperIndeterminate));
37067
37094
  var indicatorClass = classnames_default()(checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.indicatorWrapper, theme === 'dark' && (checkboxStyle === null || checkboxStyle === void 0 ? void 0 : checkboxStyle.darkIndicatorWrapper));
37068
37095
  var inputProps = getInputProps();
37069
- return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({
37096
+ return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({
37070
37097
  id: fieldId
37071
- }, getRootProps({
37098
+ }, mouseEvents), getRootProps({
37072
37099
  className: rootClass,
37073
37100
  style: style,
37074
37101
  needStopPropagation: props.needStopPropagation
@@ -58227,6 +58254,7 @@ var Radio = function Radio(props) {
58227
58254
  size = props.size,
58228
58255
  theme = props.theme,
58229
58256
  rest = objectWithoutProperties_default()(props, simple_radio_excluded);
58257
+ var mouseEvents = extractProps(rest, 'mouse');
58230
58258
  var _useContext = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useContext)(FormFieldContext),
58231
58259
  fieldId = _useContext.fieldId;
58232
58260
  var radioClasses = jssStyle === null || jssStyle === void 0 || (_jssStyle$radio = jssStyle.radio) === null || _jssStyle$radio === void 0 ? void 0 : _jssStyle$radio.call(jssStyle);
@@ -58239,11 +58267,11 @@ var Radio = function Radio(props) {
58239
58267
  var rootClass = classnames_default()([radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.rootClass, radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.wrapper, className, !!disabled && (radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.wrapperDisabled), !!checked && (radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.wrapperChecked), size === 'small' && (radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.wrapperSmall), size === 'large' && (radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.wrapperLarge)]);
58240
58268
  var indicatorClass = classnames_default()(radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.indicatorWrapper, theme === 'dark' && (radioClasses === null || radioClasses === void 0 ? void 0 : radioClasses.darkIndicatorWrapper));
58241
58269
  var inputProps = getInputProps();
58242
- var rootProps = getRootProps({
58270
+ var rootProps = objectSpread2_default()(objectSpread2_default()({}, mouseEvents), getRootProps({
58243
58271
  className: rootClass,
58244
58272
  style: style,
58245
58273
  needStopPropagation: true
58246
- });
58274
+ }));
58247
58275
  var indicatorProps = getIndicatorProps();
58248
58276
  var indicator = /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
58249
58277
  children: [/*#__PURE__*/(0,jsx_runtime.jsx)("input", objectSpread2_default()(objectSpread2_default()({}, inputProps), {}, {
@@ -60897,6 +60925,21 @@ var MenuItem = function MenuItem(props) {
60897
60925
  }),
60898
60926
  shouldHideChildren = _useCollapseAnimation.shouldHide,
60899
60927
  shouldKeepOpen = _useCollapseAnimation.shouldKeepOpen;
60928
+
60929
+ // 合并自定义属性:优先级 getItemProps > dataItem 中的 data-* 属性
60930
+ var customAttributes = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
60931
+ var _props$getItemProps;
60932
+ // 1. 从 dataItem 中提取 data-* 和 aria-* 属性(方案2)
60933
+ var dataAttrs = extractProps(props.dataItem, 'data-attr');
60934
+
60935
+ // 2. 通过 getItemProps 函数生成自定义属性(方案1,优先级更高)
60936
+ var fnAttrs = ((_props$getItemProps = props.getItemProps) === null || _props$getItemProps === void 0 ? void 0 : _props$getItemProps.call(props, props.dataItem, {
60937
+ level: props.level,
60938
+ hasChildren: expandAble,
60939
+ index: props.index
60940
+ })) || {};
60941
+ return objectSpread2_default()(objectSpread2_default()({}, dataAttrs), fnAttrs);
60942
+ }, [props.dataItem, props.getItemProps, props.level, props.index, expandAble]);
60900
60943
  var renderChildren = function renderChildren() {
60901
60944
  var _items;
60902
60945
  var items = children;
@@ -61015,7 +61058,7 @@ var MenuItem = function MenuItem(props) {
61015
61058
  }));
61016
61059
  }
61017
61060
  if (props.frontCaret) {
61018
- return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
61061
+ return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()({}, expandAble ? customAttributes : undefined), {}, {
61019
61062
  className: classnames_default()(classes === null || classes === void 0 ? void 0 : classes.itemContent, classes === null || classes === void 0 ? void 0 : classes.itemContentFront),
61020
61063
  onClick: handleItemClick,
61021
61064
  children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
@@ -61030,9 +61073,9 @@ var MenuItem = function MenuItem(props) {
61030
61073
  children: frontCaretType === 'hollow' ? icons_config.menu.CollapseArrow : icons_config.menu.FrontSolidArrowDown
61031
61074
  })
61032
61075
  }), title]
61033
- });
61076
+ }));
61034
61077
  } else {
61035
- return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
61078
+ return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()({}, expandAble ? customAttributes : undefined), {}, {
61036
61079
  className: classnames_default()(classes === null || classes === void 0 ? void 0 : classes.itemContent, classes === null || classes === void 0 ? void 0 : classes.itemContentBack),
61037
61080
  onClick: handleItemClick,
61038
61081
  children: [title, expandAble && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
@@ -61047,17 +61090,17 @@ var MenuItem = function MenuItem(props) {
61047
61090
  children: icons_config.menu.CollapseArrow
61048
61091
  })
61049
61092
  })]
61050
- });
61093
+ }));
61051
61094
  }
61052
61095
  };
61053
- return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
61096
+ return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", objectSpread2_default()(objectSpread2_default()({}, expandAble ? undefined : customAttributes), {}, {
61054
61097
  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)),
61055
61098
  onMouseEnter: handleMouseEnter,
61056
61099
  onMouseLeave: handleMouseLeave,
61057
61100
  dir: config.direction,
61058
61101
  ref: liRef,
61059
61102
  children: [renderItem(), renderChildren()]
61060
- });
61103
+ }));
61061
61104
  };
61062
61105
  /* harmony default export */ var menu_item = (MenuItem);
61063
61106
  ;// CONCATENATED MODULE: ../base/src/menu/menu.tsx
@@ -61194,7 +61237,8 @@ var Menu = function Menu(props) {
61194
61237
  theme: theme,
61195
61238
  renderIcon: props.renderIcon,
61196
61239
  collapse: collapse,
61197
- isEdgeItem: false
61240
+ isEdgeItem: false,
61241
+ getItemProps: props.getItemProps
61198
61242
  }, key);
61199
61243
  })
61200
61244
  })
@@ -64206,6 +64250,8 @@ StickyComp.displayName = 'ShineoutSticky';
64206
64250
 
64207
64251
 
64208
64252
 
64253
+ var switch_excluded = ["jssStyle", "content", "size", "loading", "className", "style"];
64254
+
64209
64255
 
64210
64256
 
64211
64257
 
@@ -64222,7 +64268,9 @@ var Switch = function Switch(props0) {
64222
64268
  size = props.size,
64223
64269
  loading = props.loading,
64224
64270
  className = props.className,
64225
- style = props.style;
64271
+ style = props.style,
64272
+ rest = objectWithoutProperties_default()(props, switch_excluded);
64273
+ var mouseEvents = extractProps(rest, 'mouse');
64226
64274
  var config = useConfig();
64227
64275
  var _useContext = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useContext)(FormFieldContext),
64228
64276
  fieldId = _useContext.fieldId;
@@ -64258,10 +64306,10 @@ var Switch = function Switch(props0) {
64258
64306
  checkedContent = _ref2[0],
64259
64307
  unCheckedContent = _ref2[1];
64260
64308
  var rootClassName = classnames_default()(className, switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.rootClass, switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.wrapper, !!checked && (switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.wrapperChecked), disabled && (switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.wrapperDisabled), size === 'small' && (switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.wrapperSmall), size === 'large' && (switchClasses === null || switchClasses === void 0 ? void 0 : switchClasses.wrapperLarge));
64261
- var rootProps = getRootProps({
64309
+ var rootProps = objectSpread2_default()(objectSpread2_default()({}, mouseEvents), getRootProps({
64262
64310
  className: rootClassName,
64263
64311
  style: style
64264
- });
64312
+ }));
64265
64313
  var inputProps = getInputProps();
64266
64314
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("button", objectSpread2_default()(objectSpread2_default()({
64267
64315
  type: 'button',
@@ -74770,7 +74818,7 @@ var upload_interface = __webpack_require__(8821);
74770
74818
 
74771
74819
 
74772
74820
  /* harmony default export */ var src_0 = ({
74773
- version: '3.9.5'
74821
+ version: '3.9.6-beta.2'
74774
74822
  });
74775
74823
  }();
74776
74824
  /******/ return __webpack_exports__;