@nutui/nutui-react 3.0.10-beta.0 → 3.0.10

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/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # v3.0.10
2
+ `2025-04-25`
3
+
4
+
5
+ * 🏡 chore: 更新壳工程分支 (#3200)
6
+ * 🏡 chore: release: v3.0.10-beta.0
7
+ * 🏡 chore: update publich path
8
+ * 📖 docs: jmapp 不判断环境,直接打开 (#3193)
9
+ * :sparkles: feat(switch): loading 态受控 (#3149)
10
+ * :sparkles: feat(uploader): add listUploadRender prop for custom list mode upload… (#3198)
11
+ * :sparkles: feat(video): 兼容taro Component属性 (#3185)
12
+ * :sparkles: feat(radio): 支持自定义icon的classname (#3196)
13
+ * :bug: fix(tabs): 修复滚动计算问题,优化定位逻辑 (#3183)
14
+ * :bug: fix: 删掉无用console (#3197)
15
+ * :bug: fix: 兼容选中值为0的情况 (#3192)
16
+
17
+
1
18
  # v3.0.9
2
19
 
3
20
  `2025-04-18`
@@ -86,13 +86,13 @@ var Radio = function Radio(props) {
86
86
  }
87
87
  if (checkedStatement) {
88
88
  return /*#__PURE__*/ _react.default.isValidElement(activeIcon) ? /*#__PURE__*/ _react.default.cloneElement(activeIcon, (0, _object_spread_props._)((0, _object_spread._)({}, activeIcon.props), {
89
- className: (0, _classnames.default)(color())
89
+ className: (0, _classnames.default)(activeIcon.props.className, color())
90
90
  })) : /*#__PURE__*/ _react.default.createElement(_iconsreact.CheckChecked, {
91
91
  className: (0, _classnames.default)(color())
92
92
  });
93
93
  }
94
94
  return /*#__PURE__*/ _react.default.isValidElement(icon) ? /*#__PURE__*/ _react.default.cloneElement(icon, (0, _object_spread_props._)((0, _object_spread._)({}, icon.props), {
95
- className: (0, _classnames.default)(color())
95
+ className: (0, _classnames.default)(icon.props.className, color())
96
96
  })) : /*#__PURE__*/ _react.default.createElement(_iconsreact.CheckNormal, {
97
97
  className: (0, _classnames.default)(color())
98
98
  });
@@ -27,10 +27,12 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
27
27
  disabled: false,
28
28
  activeText: '',
29
29
  inactiveText: '',
30
- loadingIcon: /*#__PURE__*/ _react.default.createElement(_iconsreact.Loading1, null)
30
+ loadingIcon: /*#__PURE__*/ _react.default.createElement(_iconsreact.Loading1, null),
31
+ loading: undefined,
32
+ onLoadingChange: function onLoadingChange(loading) {}
31
33
  });
32
34
  var Switch = function Switch(props) {
33
- var _ref = (0, _object_spread._)({}, defaultProps, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, rest = (0, _object_without_properties._)(_ref, [
35
+ var _ref = (0, _object_spread._)({}, defaultProps, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, propLoading = _ref.loading, onLoadingChange = _ref.onLoadingChange, rest = (0, _object_without_properties._)(_ref, [
34
36
  "checked",
35
37
  "defaultChecked",
36
38
  "disabled",
@@ -39,7 +41,9 @@ var Switch = function Switch(props) {
39
41
  "loadingIcon",
40
42
  "className",
41
43
  "style",
42
- "onChange"
44
+ "onChange",
45
+ "loading",
46
+ "onLoadingChange"
43
47
  ]);
44
48
  var classPrefix = 'nut-switch';
45
49
  var rtl = (0, _configprovider.useRtl)();
@@ -47,12 +51,20 @@ var Switch = function Switch(props) {
47
51
  value: checked,
48
52
  defaultValue: defaultChecked
49
53
  }), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
54
+ var _useState = (0, _sliced_to_array._)((0, _react.useState)(false), 2), internalLoading = _useState[0], setInternalLoading = _useState[1];
55
+ var loading = propLoading !== undefined ? propLoading : internalLoading;
56
+ var setLoading = function setLoading(val) {
57
+ if (propLoading !== undefined) {
58
+ onLoadingChange(val);
59
+ } else {
60
+ setInternalLoading(val);
61
+ }
62
+ };
50
63
  (0, _react.useEffect)(function() {
51
- changing && setChanging(false);
64
+ loading && setLoading(false);
52
65
  }, [
53
66
  value
54
67
  ]);
55
- var _useState = (0, _sliced_to_array._)((0, _react.useState)(false), 2), changing = _useState[0], setChanging = _useState[1];
56
68
  var classes = function classes() {
57
69
  var _obj;
58
70
  return (0, _classnames.default)([
@@ -67,14 +79,14 @@ var Switch = function Switch(props) {
67
79
  return (0, _ts_generator._)(this, function(_state) {
68
80
  switch(_state.label){
69
81
  case 0:
70
- if (disabled || changing) return [
82
+ if (disabled || loading) return [
71
83
  2
72
84
  ];
73
85
  if (!onChange) return [
74
86
  3,
75
87
  4
76
88
  ];
77
- setChanging(true);
89
+ loadingIcon && setLoading(true);
78
90
  _state.label = 1;
79
91
  case 1:
80
92
  _state.trys.push([
@@ -95,7 +107,7 @@ var Switch = function Switch(props) {
95
107
  ];
96
108
  case 3:
97
109
  e = _state.sent();
98
- setChanging(false);
110
+ setLoading(false);
99
111
  return [
100
112
  3,
101
113
  4
@@ -127,7 +139,7 @@ var Switch = function Switch(props) {
127
139
  ],
128
140
  (_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix, "-button-open-rtl"), rtl && value), (0, _define_property._)(_obj, "".concat(classPrefix, "-button-close-rtl"), rtl && !value), _obj)
129
141
  ])
130
- }, changing && loadingIcon ? /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, loadingIcon) : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !value && !activeText && /*#__PURE__*/ _react.default.createElement("div", {
142
+ }, loading && loadingIcon ? /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, loadingIcon) : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !value && !activeText && /*#__PURE__*/ _react.default.createElement("div", {
131
143
  className: "".concat(classPrefix, "-close-line")
132
144
  }))), activeText && /*#__PURE__*/ _react.default.createElement("div", {
133
145
  className: (0, _classnames.default)("".concat(classPrefix, "-label"), (_obj1 = {}, (0, _define_property._)(_obj1, "".concat(classPrefix, "-label-open"), value), (0, _define_property._)(_obj1, "".concat(classPrefix, "-label-close"), !value), (0, _define_property._)(_obj1, "".concat(classPrefix, "-label-open-rtl"), rtl && value), (0, _define_property._)(_obj1, "".concat(classPrefix, "-label-close-rtl"), rtl && !value), (0, _define_property._)(_obj1, "".concat(classPrefix, "-label-close-disabled"), disabled && !value), _obj1))
@@ -56,7 +56,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
56
56
  var InternalUploader = function InternalUploader(props, ref) {
57
57
  var locale = (0, _configprovider.useConfig)().locale;
58
58
  var fileListRef = (0, _react.useRef)([]);
59
- var _mergeProps = (0, _mergeprops.mergeProps)(defaultProps, props), children = _mergeProps.children, uploadIcon = _mergeProps.uploadIcon, deleteIcon = _mergeProps.deleteIcon, uploadLabel = _mergeProps.uploadLabel, name = _mergeProps.name, accept = _mergeProps.accept, defaultValue = _mergeProps.defaultValue, value = _mergeProps.value, previewType = _mergeProps.previewType, fit = _mergeProps.fit, disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, restProps = (0, _object_without_properties._)(_mergeProps, [
59
+ var _mergeProps = (0, _mergeprops.mergeProps)(defaultProps, props), children = _mergeProps.children, uploadIcon = _mergeProps.uploadIcon, deleteIcon = _mergeProps.deleteIcon, uploadLabel = _mergeProps.uploadLabel, name = _mergeProps.name, accept = _mergeProps.accept, defaultValue = _mergeProps.defaultValue, value = _mergeProps.value, previewType = _mergeProps.previewType, fit = _mergeProps.fit, disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, listUploadRender = _mergeProps.listUploadRender, restProps = (0, _object_without_properties._)(_mergeProps, [
60
60
  "children",
61
61
  "uploadIcon",
62
62
  "deleteIcon",
@@ -86,7 +86,8 @@ var InternalUploader = function InternalUploader(props, ref) {
86
86
  "onOverCount",
87
87
  "beforeUpload",
88
88
  "beforeDelete",
89
- "onUploadQueueChange"
89
+ "onUploadQueueChange",
90
+ "listUploadRender"
90
91
  ]);
91
92
  var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
92
93
  value: value,
@@ -377,9 +378,10 @@ var InternalUploader = function InternalUploader(props, ref) {
377
378
  }));
378
379
  };
379
380
  var renderListUploader = function renderListUploader() {
380
- return previewType === 'list' && /*#__PURE__*/ _react.default.createElement("div", {
381
+ if (previewType !== 'list') return null;
382
+ return /*#__PURE__*/ _react.default.createElement("div", {
381
383
  className: "nut-uploader-slot"
382
- }, /*#__PURE__*/ _react.default.createElement(_button.default, {
384
+ }, listUploadRender || /*#__PURE__*/ _react.default.createElement(_button.default, {
383
385
  size: "small",
384
386
  type: "primary"
385
387
  }, locale.uploader.list), Number(maxCount) > fileList.length && /*#__PURE__*/ _react.default.createElement("input", {
@@ -7,5 +7,7 @@ export interface BaseSwitch extends BaseProps {
7
7
  activeText: ReactNode;
8
8
  inactiveText: ReactNode;
9
9
  loadingIcon: ReactNode;
10
+ loading: boolean | undefined;
11
+ onLoadingChange: (loading: boolean) => void;
10
12
  onChange: (val: boolean) => void;
11
13
  }
@@ -28,6 +28,7 @@ export interface BaseUploader extends BaseProps {
28
28
  uploadIcon?: React.ReactNode;
29
29
  deleteIcon?: React.ReactNode;
30
30
  uploadLabel?: React.ReactNode;
31
+ listUploadRender?: React.ReactNode;
31
32
  name: string;
32
33
  accept: string;
33
34
  disabled: boolean;
@@ -38,7 +38,7 @@ var getRect = function getRect(elementRef) {
38
38
  };
39
39
  }
40
40
  if (element && element.getBoundingClientRect) {
41
- console.log(element, element.getBoundingClientRect());
41
+ // console.log(element, element.getBoundingClientRect())
42
42
  return element.getBoundingClientRect();
43
43
  }
44
44
  return {
@@ -19,6 +19,6 @@ if (_canusedom.canUseDom) {
19
19
  });
20
20
  window.addEventListener('test-passive-supported', null, opts);
21
21
  } catch (e) {
22
- console.log(e);
22
+ console.log('supported passive error', e);
23
23
  }
24
24
  }
@@ -74,13 +74,13 @@ export var Radio = function(props) {
74
74
  }
75
75
  if (checkedStatement) {
76
76
  return /*#__PURE__*/ React.isValidElement(activeIcon) ? /*#__PURE__*/ React.cloneElement(activeIcon, _object_spread_props(_object_spread({}, activeIcon.props), {
77
- className: classNames(color())
77
+ className: classNames(activeIcon.props.className, color())
78
78
  })) : /*#__PURE__*/ React.createElement(CheckChecked, {
79
79
  className: classNames(color())
80
80
  });
81
81
  }
82
82
  return /*#__PURE__*/ React.isValidElement(icon) ? /*#__PURE__*/ React.cloneElement(icon, _object_spread_props(_object_spread({}, icon.props), {
83
- className: classNames(color())
83
+ className: classNames(icon.props.className, color())
84
84
  })) : /*#__PURE__*/ React.createElement(CheckNormal, {
85
85
  className: classNames(color())
86
86
  });
@@ -15,10 +15,12 @@ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
15
15
  disabled: false,
16
16
  activeText: '',
17
17
  inactiveText: '',
18
- loadingIcon: /*#__PURE__*/ React.createElement(Loading1, null)
18
+ loadingIcon: /*#__PURE__*/ React.createElement(Loading1, null),
19
+ loading: undefined,
20
+ onLoadingChange: function(loading) {}
19
21
  });
20
22
  export var Switch = function(props) {
21
- var _ref = _object_spread({}, defaultProps, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, rest = _object_without_properties(_ref, [
23
+ var _ref = _object_spread({}, defaultProps, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, propLoading = _ref.loading, onLoadingChange = _ref.onLoadingChange, rest = _object_without_properties(_ref, [
22
24
  "checked",
23
25
  "defaultChecked",
24
26
  "disabled",
@@ -27,7 +29,9 @@ export var Switch = function(props) {
27
29
  "loadingIcon",
28
30
  "className",
29
31
  "style",
30
- "onChange"
32
+ "onChange",
33
+ "loading",
34
+ "onLoadingChange"
31
35
  ]);
32
36
  var classPrefix = 'nut-switch';
33
37
  var rtl = useRtl();
@@ -35,12 +39,20 @@ export var Switch = function(props) {
35
39
  value: checked,
36
40
  defaultValue: defaultChecked
37
41
  }), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
42
+ var _useState = _sliced_to_array(useState(false), 2), internalLoading = _useState[0], setInternalLoading = _useState[1];
43
+ var loading = propLoading !== undefined ? propLoading : internalLoading;
44
+ var setLoading = function(val) {
45
+ if (propLoading !== undefined) {
46
+ onLoadingChange(val);
47
+ } else {
48
+ setInternalLoading(val);
49
+ }
50
+ };
38
51
  useEffect(function() {
39
- changing && setChanging(false);
52
+ loading && setLoading(false);
40
53
  }, [
41
54
  value
42
55
  ]);
43
- var _useState = _sliced_to_array(useState(false), 2), changing = _useState[0], setChanging = _useState[1];
44
56
  var classes = function() {
45
57
  var _obj;
46
58
  return classNames([
@@ -55,14 +67,14 @@ export var Switch = function(props) {
55
67
  return _ts_generator(this, function(_state) {
56
68
  switch(_state.label){
57
69
  case 0:
58
- if (disabled || changing) return [
70
+ if (disabled || loading) return [
59
71
  2
60
72
  ];
61
73
  if (!onChange) return [
62
74
  3,
63
75
  4
64
76
  ];
65
- setChanging(true);
77
+ loadingIcon && setLoading(true);
66
78
  _state.label = 1;
67
79
  case 1:
68
80
  _state.trys.push([
@@ -83,7 +95,7 @@ export var Switch = function(props) {
83
95
  ];
84
96
  case 3:
85
97
  e = _state.sent();
86
- setChanging(false);
98
+ setLoading(false);
87
99
  return [
88
100
  3,
89
101
  4
@@ -115,7 +127,7 @@ export var Switch = function(props) {
115
127
  ],
116
128
  (_obj = {}, _define_property(_obj, "".concat(classPrefix, "-button-open-rtl"), rtl && value), _define_property(_obj, "".concat(classPrefix, "-button-close-rtl"), rtl && !value), _obj)
117
129
  ])
118
- }, changing && loadingIcon ? /*#__PURE__*/ React.createElement(React.Fragment, null, loadingIcon) : /*#__PURE__*/ React.createElement(React.Fragment, null, !value && !activeText && /*#__PURE__*/ React.createElement("div", {
130
+ }, loading && loadingIcon ? /*#__PURE__*/ React.createElement(React.Fragment, null, loadingIcon) : /*#__PURE__*/ React.createElement(React.Fragment, null, !value && !activeText && /*#__PURE__*/ React.createElement("div", {
119
131
  className: "".concat(classPrefix, "-close-line")
120
132
  }))), activeText && /*#__PURE__*/ React.createElement("div", {
121
133
  className: classNames("".concat(classPrefix, "-label"), (_obj1 = {}, _define_property(_obj1, "".concat(classPrefix, "-label-open"), value), _define_property(_obj1, "".concat(classPrefix, "-label-close"), !value), _define_property(_obj1, "".concat(classPrefix, "-label-open-rtl"), rtl && value), _define_property(_obj1, "".concat(classPrefix, "-label-close-rtl"), rtl && !value), _define_property(_obj1, "".concat(classPrefix, "-label-close-disabled"), disabled && !value), _obj1))
@@ -44,7 +44,7 @@ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
44
44
  var InternalUploader = function(props, ref) {
45
45
  var locale = useConfig().locale;
46
46
  var fileListRef = useRef([]);
47
- var _mergeProps = mergeProps(defaultProps, props), children = _mergeProps.children, uploadIcon = _mergeProps.uploadIcon, deleteIcon = _mergeProps.deleteIcon, uploadLabel = _mergeProps.uploadLabel, name = _mergeProps.name, accept = _mergeProps.accept, defaultValue = _mergeProps.defaultValue, value = _mergeProps.value, previewType = _mergeProps.previewType, fit = _mergeProps.fit, disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, restProps = _object_without_properties(_mergeProps, [
47
+ var _mergeProps = mergeProps(defaultProps, props), children = _mergeProps.children, uploadIcon = _mergeProps.uploadIcon, deleteIcon = _mergeProps.deleteIcon, uploadLabel = _mergeProps.uploadLabel, name = _mergeProps.name, accept = _mergeProps.accept, defaultValue = _mergeProps.defaultValue, value = _mergeProps.value, previewType = _mergeProps.previewType, fit = _mergeProps.fit, disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, listUploadRender = _mergeProps.listUploadRender, restProps = _object_without_properties(_mergeProps, [
48
48
  "children",
49
49
  "uploadIcon",
50
50
  "deleteIcon",
@@ -74,7 +74,8 @@ var InternalUploader = function(props, ref) {
74
74
  "onOverCount",
75
75
  "beforeUpload",
76
76
  "beforeDelete",
77
- "onUploadQueueChange"
77
+ "onUploadQueueChange",
78
+ "listUploadRender"
78
79
  ]);
79
80
  var _usePropsValue = _sliced_to_array(usePropsValue({
80
81
  value: value,
@@ -365,9 +366,10 @@ var InternalUploader = function(props, ref) {
365
366
  }));
366
367
  };
367
368
  var renderListUploader = function() {
368
- return previewType === 'list' && /*#__PURE__*/ React.createElement("div", {
369
+ if (previewType !== 'list') return null;
370
+ return /*#__PURE__*/ React.createElement("div", {
369
371
  className: "nut-uploader-slot"
370
- }, /*#__PURE__*/ React.createElement(Button, {
372
+ }, listUploadRender || /*#__PURE__*/ React.createElement(Button, {
371
373
  size: "small",
372
374
  type: "primary"
373
375
  }, locale.uploader.list), Number(maxCount) > fileList.length && /*#__PURE__*/ React.createElement("input", {
@@ -22,10 +22,18 @@ export interface BaseSwitch extends BaseProps {
22
22
  */
23
23
  inactiveText: ReactNode
24
24
  /**
25
- * 受控 loading 态图标
25
+ * 控制加载状态的图标,传入空值时禁用 loading
26
26
  */
27
27
  loadingIcon: ReactNode
28
28
  /**
29
+ * loading 态,受控
30
+ */
31
+ loading: boolean | undefined
32
+ /**
33
+ * 切换 loading 态时触发
34
+ */
35
+ onLoadingChange: (loading: boolean) => void
36
+ /**
29
37
  * 切换开关时触发
30
38
  */
31
39
  onChange: (val: boolean) => void
@@ -59,6 +59,10 @@ export interface BaseUploader extends BaseProps {
59
59
  */
60
60
  uploadLabel?: React.ReactNode
61
61
  /**
62
+ * 自定义列表模式的上传区域
63
+ */
64
+ listUploadRender?: React.ReactNode
65
+ /**
62
66
  * input 标签 name 的名称,发到后台的文件参数名
63
67
  */
64
68
  name: string
@@ -25,7 +25,7 @@ export function isWindow(val) {
25
25
  };
26
26
  }
27
27
  if (element && element.getBoundingClientRect) {
28
- console.log(element, element.getBoundingClientRect());
28
+ // console.log(element, element.getBoundingClientRect())
29
29
  return element.getBoundingClientRect();
30
30
  }
31
31
  return {
@@ -9,6 +9,6 @@ if (canUseDom) {
9
9
  });
10
10
  window.addEventListener('test-passive-supported', null, opts);
11
11
  } catch (e) {
12
- console.log(e);
12
+ console.log('supported passive error', e);
13
13
  }
14
14
  }
@@ -2195,7 +2195,6 @@ Check the top-level render call using <` + t + ">.");
2195
2195
  };
2196
2196
  }
2197
2197
  if (element && element.getBoundingClientRect) {
2198
- console.log(element, element.getBoundingClientRect());
2199
2198
  return element.getBoundingClientRect();
2200
2199
  }
2201
2200
  return {
@@ -2674,7 +2673,7 @@ Check the top-level render call using <` + t + ">.");
2674
2673
  });
2675
2674
  window.addEventListener("test-passive-supported", null, opts);
2676
2675
  } catch (e2) {
2677
- console.log(e2);
2676
+ console.log("supported passive error", e2);
2678
2677
  }
2679
2678
  }
2680
2679
  function toArray$1(value2) {
@@ -17547,13 +17546,13 @@ Please add \`${key2}Action\` when creating your handler.`);
17547
17546
  }
17548
17547
  if (checkedStatement) {
17549
17548
  return /* @__PURE__ */ React.isValidElement(activeIcon) ? /* @__PURE__ */ React.cloneElement(activeIcon, _object_spread_props(_object_spread({}, activeIcon.props), {
17550
- className: classNames(color())
17549
+ className: classNames(activeIcon.props.className, color())
17551
17550
  })) : /* @__PURE__ */ React.createElement(c$2, {
17552
17551
  className: classNames(color())
17553
17552
  });
17554
17553
  }
17555
17554
  return /* @__PURE__ */ React.isValidElement(icon) ? /* @__PURE__ */ React.cloneElement(icon, _object_spread_props(_object_spread({}, icon.props), {
17556
- className: classNames(color())
17555
+ className: classNames(icon.props.className, color())
17557
17556
  })) : /* @__PURE__ */ React.createElement(n$8, {
17558
17557
  className: classNames(color())
17559
17558
  });
@@ -18747,10 +18746,13 @@ Please add \`${key2}Action\` when creating your handler.`);
18747
18746
  disabled: false,
18748
18747
  activeText: "",
18749
18748
  inactiveText: "",
18750
- loadingIcon: /* @__PURE__ */ React.createElement(d$3, null)
18749
+ loadingIcon: /* @__PURE__ */ React.createElement(d$3, null),
18750
+ loading: void 0,
18751
+ onLoadingChange: function(loading) {
18752
+ }
18751
18753
  });
18752
18754
  var Switch = function(props) {
18753
- var _ref = _object_spread({}, defaultProps$M, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, rest = _object_without_properties(_ref, [
18755
+ var _ref = _object_spread({}, defaultProps$M, props), checked = _ref.checked, defaultChecked = _ref.defaultChecked, disabled = _ref.disabled, activeText = _ref.activeText, inactiveText = _ref.inactiveText, loadingIcon = _ref.loadingIcon, className = _ref.className, style = _ref.style, onChange = _ref.onChange, propLoading = _ref.loading, onLoadingChange = _ref.onLoadingChange, rest = _object_without_properties(_ref, [
18754
18756
  "checked",
18755
18757
  "defaultChecked",
18756
18758
  "disabled",
@@ -18759,7 +18761,9 @@ Please add \`${key2}Action\` when creating your handler.`);
18759
18761
  "loadingIcon",
18760
18762
  "className",
18761
18763
  "style",
18762
- "onChange"
18764
+ "onChange",
18765
+ "loading",
18766
+ "onLoadingChange"
18763
18767
  ]);
18764
18768
  var classPrefix2 = "nut-switch";
18765
18769
  var rtl = useRtl();
@@ -18767,12 +18771,20 @@ Please add \`${key2}Action\` when creating your handler.`);
18767
18771
  value: checked,
18768
18772
  defaultValue: defaultChecked
18769
18773
  }), 2), value2 = _usePropsValue[0], setValue = _usePropsValue[1];
18774
+ var _useState = _sliced_to_array(React.useState(false), 2), internalLoading = _useState[0], setInternalLoading = _useState[1];
18775
+ var loading = propLoading !== void 0 ? propLoading : internalLoading;
18776
+ var setLoading = function(val2) {
18777
+ if (propLoading !== void 0) {
18778
+ onLoadingChange(val2);
18779
+ } else {
18780
+ setInternalLoading(val2);
18781
+ }
18782
+ };
18770
18783
  React.useEffect(function() {
18771
- changing && setChanging(false);
18784
+ loading && setLoading(false);
18772
18785
  }, [
18773
18786
  value2
18774
18787
  ]);
18775
- var _useState = _sliced_to_array(React.useState(false), 2), changing = _useState[0], setChanging = _useState[1];
18776
18788
  var classes = function() {
18777
18789
  var _obj2;
18778
18790
  return classNames([
@@ -18786,14 +18798,14 @@ Please add \`${key2}Action\` when creating your handler.`);
18786
18798
  return __generator(this, function(_state) {
18787
18799
  switch (_state.label) {
18788
18800
  case 0:
18789
- if (disabled || changing) return [
18801
+ if (disabled || loading) return [
18790
18802
  2
18791
18803
  ];
18792
18804
  if (!onChange) return [
18793
18805
  3,
18794
18806
  4
18795
18807
  ];
18796
- setChanging(true);
18808
+ loadingIcon && setLoading(true);
18797
18809
  _state.label = 1;
18798
18810
  case 1:
18799
18811
  _state.trys.push([
@@ -18814,7 +18826,7 @@ Please add \`${key2}Action\` when creating your handler.`);
18814
18826
  ];
18815
18827
  case 3:
18816
18828
  _state.sent();
18817
- setChanging(false);
18829
+ setLoading(false);
18818
18830
  return [
18819
18831
  3,
18820
18832
  4
@@ -18846,7 +18858,7 @@ Please add \`${key2}Action\` when creating your handler.`);
18846
18858
  ],
18847
18859
  (_obj = {}, _define_property(_obj, "".concat(classPrefix2, "-button-open-rtl"), rtl && value2), _define_property(_obj, "".concat(classPrefix2, "-button-close-rtl"), rtl && !value2), _obj)
18848
18860
  ])
18849
- }, changing && loadingIcon ? /* @__PURE__ */ React.createElement(React.Fragment, null, loadingIcon) : /* @__PURE__ */ React.createElement(React.Fragment, null, !value2 && !activeText && /* @__PURE__ */ React.createElement("div", {
18861
+ }, loading && loadingIcon ? /* @__PURE__ */ React.createElement(React.Fragment, null, loadingIcon) : /* @__PURE__ */ React.createElement(React.Fragment, null, !value2 && !activeText && /* @__PURE__ */ React.createElement("div", {
18850
18862
  className: "".concat(classPrefix2, "-close-line")
18851
18863
  }))), activeText && /* @__PURE__ */ React.createElement("div", {
18852
18864
  className: classNames("".concat(classPrefix2, "-label"), (_obj1 = {}, _define_property(_obj1, "".concat(classPrefix2, "-label-open"), value2), _define_property(_obj1, "".concat(classPrefix2, "-label-close"), !value2), _define_property(_obj1, "".concat(classPrefix2, "-label-open-rtl"), rtl && value2), _define_property(_obj1, "".concat(classPrefix2, "-label-close-rtl"), rtl && !value2), _define_property(_obj1, "".concat(classPrefix2, "-label-close-disabled"), disabled && !value2), _obj1))
@@ -19184,7 +19196,7 @@ Please add \`${key2}Action\` when creating your handler.`);
19184
19196
  var fileListRef = React.useRef([]);
19185
19197
  var _mergeProps = mergeProps(defaultProps$J, props), children = _mergeProps.children, uploadIcon = _mergeProps.uploadIcon, deleteIcon = _mergeProps.deleteIcon, uploadLabel = _mergeProps.uploadLabel, name2 = _mergeProps.name, accept = _mergeProps.accept, defaultValue = _mergeProps.defaultValue, value2 = _mergeProps.value, previewType = _mergeProps.previewType;
19186
19198
  _mergeProps.fit;
19187
- var disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, restProps = _object_without_properties(_mergeProps, [
19199
+ var disabled = _mergeProps.disabled, multiple = _mergeProps.multiple, previewUrl = _mergeProps.previewUrl, preview = _mergeProps.preview, deletable = _mergeProps.deletable, maxCount = _mergeProps.maxCount, capture = _mergeProps.capture, maxFileSize = _mergeProps.maxFileSize, className = _mergeProps.className, autoUpload = _mergeProps.autoUpload, clearInput = _mergeProps.clearInput, upload = _mergeProps.upload, onDelete = _mergeProps.onDelete, onChange = _mergeProps.onChange, onFileItemClick = _mergeProps.onFileItemClick, onOversize = _mergeProps.onOversize, onOverCount = _mergeProps.onOverCount, beforeUpload = _mergeProps.beforeUpload, beforeDelete = _mergeProps.beforeDelete, onUploadQueueChange = _mergeProps.onUploadQueueChange, listUploadRender = _mergeProps.listUploadRender, restProps = _object_without_properties(_mergeProps, [
19188
19200
  "children",
19189
19201
  "uploadIcon",
19190
19202
  "deleteIcon",
@@ -19214,7 +19226,8 @@ Please add \`${key2}Action\` when creating your handler.`);
19214
19226
  "onOverCount",
19215
19227
  "beforeUpload",
19216
19228
  "beforeDelete",
19217
- "onUploadQueueChange"
19229
+ "onUploadQueueChange",
19230
+ "listUploadRender"
19218
19231
  ]);
19219
19232
  var _usePropsValue = _sliced_to_array(usePropsValue({
19220
19233
  value: value2,
@@ -19505,9 +19518,10 @@ Please add \`${key2}Action\` when creating your handler.`);
19505
19518
  }));
19506
19519
  };
19507
19520
  var renderListUploader = function() {
19508
- return previewType === "list" && /* @__PURE__ */ React.createElement("div", {
19521
+ if (previewType !== "list") return null;
19522
+ return /* @__PURE__ */ React.createElement("div", {
19509
19523
  className: "nut-uploader-slot"
19510
- }, /* @__PURE__ */ React.createElement(Button, {
19524
+ }, listUploadRender || /* @__PURE__ */ React.createElement(Button, {
19511
19525
  size: "small",
19512
19526
  type: "primary"
19513
19527
  }, locale.uploader.list), Number(maxCount) > fileList.length && /* @__PURE__ */ React.createElement("input", {