@nutui/nutui-react 2.6.21 → 2.6.22

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/dist/esm/Range.js CHANGED
@@ -1,4 +1,4 @@
1
- import React__default, { useState, useRef, useEffect, useCallback } from "react";
1
+ import React__default, { useState, useRef, useEffect, useMemo } from "react";
2
2
  import classNames from "classnames";
3
3
  import { u as useTouch } from "./use-touch.js";
4
4
  import { g as getRect } from "./use-client-rect.js";
@@ -8,7 +8,7 @@ import { a as useRtl } from "./configprovider2.js";
8
8
  const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { range: false, min: 0, max: 100, step: 1, vertical: false, marks: {} });
9
9
  const Range = (props) => {
10
10
  const rtl = useRtl();
11
- const { className, range, disabled, button, vertical, marks, onChange, onStart, onEnd, minDescription, maxDescription, currentDescription, min, max, step, value, defaultValue } = Object.assign(Object.assign({}, defaultProps), props);
11
+ const { className, range, disabled, button, vertical, marks, minDescription, maxDescription, currentDescription, min, max, step, value, defaultValue, onChange, onStart, onEnd } = Object.assign(Object.assign({}, defaultProps), props);
12
12
  const classPrefix = "nut-range";
13
13
  const [buttonIndex, setButtonIndex] = useState(0);
14
14
  const [dragStatus, setDragStatus] = useState("start");
@@ -25,7 +25,7 @@ const Range = (props) => {
25
25
  finalValue: 0,
26
26
  onChange: handleChange
27
27
  });
28
- const [exactValue, setEaxctValue] = useState(() => value || defaultValue || 0);
28
+ const [exactValue, setExactValue] = useState(() => value || defaultValue || 0);
29
29
  const marksRef = useRef({});
30
30
  useEffect(() => {
31
31
  if (marks) {
@@ -41,10 +41,7 @@ const Range = (props) => {
41
41
  setMarksList(list);
42
42
  }
43
43
  }
44
- }, [marks]);
45
- const scope = () => {
46
- return max - min;
47
- };
44
+ }, [marks, max, min]);
48
45
  const classes = classNames(classPrefix, {
49
46
  [`${classPrefix}-disabled`]: disabled,
50
47
  [`${classPrefix}-vertical`]: vertical
@@ -52,7 +49,7 @@ const Range = (props) => {
52
49
  const containerClasses = classNames(`${classPrefix}-container`, {
53
50
  [`${classPrefix}-container-vertical`]: vertical
54
51
  }, className);
55
- const markClassName = useCallback((mark) => {
52
+ const markClassName = (mark) => {
56
53
  const classPrefix2 = "nut-range-mark";
57
54
  let lowerBound = min;
58
55
  let upperBound = max;
@@ -67,23 +64,23 @@ const Range = (props) => {
67
64
  `${classPrefix2}-text`,
68
65
  `${isActive ? `${classPrefix2}-text-active` : ""}`
69
66
  ].join(" ");
70
- }, [range, current, min, max]);
67
+ };
71
68
  const isRange = (val) => {
72
69
  return !!range && Array.isArray(val);
73
70
  };
71
+ const scope = useMemo(() => {
72
+ if (max < min || max === min) {
73
+ console.log("max 的值需要大于 min的值");
74
+ }
75
+ return max - min;
76
+ }, [max, min]);
74
77
  const calcMainAxis = () => {
75
78
  const modelVal = current;
76
- if (isRange(modelVal)) {
77
- return `${(modelVal[1] - modelVal[0]) * 100 / scope()}%`;
78
- }
79
- return `${(modelVal - min) * 100 / scope()}%`;
79
+ return isRange(modelVal) ? `${(modelVal[1] - modelVal[0]) * 100 / scope}%` : `${(modelVal - min) * 100 / scope}%`;
80
80
  };
81
81
  const calcOffset = () => {
82
82
  const modelVal = current;
83
- if (isRange(modelVal)) {
84
- return `${(modelVal[0] - min) * 100 / scope()}%`;
85
- }
86
- return `0%`;
83
+ return isRange(modelVal) ? `${(modelVal[0] - min) * 100 / scope}%` : `0%`;
87
84
  };
88
85
  const barStyle = () => {
89
86
  if (vertical) {
@@ -103,11 +100,11 @@ const Range = (props) => {
103
100
  const marksStyle = (mark) => {
104
101
  const dir = rtl ? "right" : "left";
105
102
  let style = {
106
- [dir]: `${(mark - min) / scope() * 100}%`
103
+ [dir]: `${(mark - min) / scope * 100}%`
107
104
  };
108
105
  if (vertical) {
109
106
  style = {
110
- top: `${(mark - min) / scope() * 100}%`
107
+ top: `${(mark - min) / scope * 100}%`
111
108
  };
112
109
  }
113
110
  return style;
@@ -154,8 +151,8 @@ const Range = (props) => {
154
151
  delta = event.clientY - rect.top;
155
152
  total = rect.height;
156
153
  }
157
- const value2 = min + delta / total * scope();
158
- setEaxctValue(current);
154
+ const value2 = min + delta / total * scope;
155
+ setExactValue(current);
159
156
  if (isRange(current)) {
160
157
  const [left, right] = current;
161
158
  const middle = (left + right) / 2;
@@ -173,7 +170,7 @@ const Range = (props) => {
173
170
  return;
174
171
  }
175
172
  touch.start(event);
176
- setEaxctValue(current);
173
+ setExactValue(current);
177
174
  if (isRange(current)) {
178
175
  setStartValue(current.map(format));
179
176
  } else {
@@ -194,12 +191,12 @@ const Range = (props) => {
194
191
  const rect = getRect(root.current);
195
192
  let delta = touch.deltaX.current;
196
193
  let total = rect.width;
197
- let diff = delta / total * scope();
194
+ let diff = delta / total * scope;
198
195
  diff = rtl ? -diff : diff;
199
196
  if (vertical) {
200
197
  delta = touch.deltaY.current;
201
198
  total = rect.height;
202
- diff = delta / total * scope();
199
+ diff = delta / total * scope;
203
200
  }
204
201
  let newValue;
205
202
  if (isRange(startValue)) {
@@ -208,7 +205,7 @@ const Range = (props) => {
208
205
  } else {
209
206
  newValue = startValue + diff;
210
207
  }
211
- setEaxctValue(newValue);
208
+ setExactValue(newValue);
212
209
  updateValue(newValue);
213
210
  };
214
211
  const onTouchEnd = () => {
@@ -228,6 +225,31 @@ const Range = (props) => {
228
225
  const renderButton = (index) => {
229
226
  return React__default.createElement(React__default.Fragment, null, button || React__default.createElement("div", { className: "nut-range-button" }, currentDescription !== null && React__default.createElement("div", { className: "number" }, currentDescription ? currentDescription(curValue(index)) : curValue(index))));
230
227
  };
228
+ const renderRangeButton = () => {
229
+ return [0, 1].map((item, index) => {
230
+ const cls = `${index === 0 ? "nut-range-button-wrapper-left" : ""}
231
+ ${index === 1 ? "nut-range-button-wrapper-right" : ""}`;
232
+ return React__default.createElement("div", { key: index, className: cls, onTouchStart: (e) => {
233
+ setButtonIndex(index);
234
+ onTouchStart(e);
235
+ }, onTouchMove, onTouchEnd, onTouchCancel: onTouchEnd, onClick: (e) => e.stopPropagation() }, renderButton(index));
236
+ });
237
+ };
238
+ const renderSingleButton = () => {
239
+ return React__default.createElement("div", { className: "nut-range-button-wrapper", onTouchStart, onTouchMove, onTouchEnd, onTouchCancel: onTouchEnd, onClick: (e) => e.stopPropagation() }, renderButton());
240
+ };
241
+ const renderMark = () => {
242
+ return React__default.createElement(React__default.Fragment, null, marksList.length > 0 && React__default.createElement("div", { className: "nut-range-mark" }, marksList.map((mark) => {
243
+ return React__default.createElement(
244
+ "span",
245
+ { key: mark, className: markClassName(mark), style: marksStyle(mark) },
246
+ Array.isArray(marks) ? marksRef.current[mark] : marks[mark],
247
+ React__default.createElement("span", { className: classNames("nut-range-tick", {
248
+ active: tickClass(mark)
249
+ }) })
250
+ );
251
+ })));
252
+ };
231
253
  return React__default.createElement(
232
254
  "div",
233
255
  { className: containerClasses },
@@ -235,25 +257,8 @@ const Range = (props) => {
235
257
  React__default.createElement(
236
258
  "div",
237
259
  { ref: root, className: classes, onClick: (e) => click(e) },
238
- marksList.length > 0 && React__default.createElement("div", { className: "nut-range-mark" }, marksList.map((mark) => {
239
- return React__default.createElement(
240
- "span",
241
- { key: mark, className: markClassName(mark), style: marksStyle(mark) },
242
- Array.isArray(marks) ? marksRef.current[mark] : marks[mark],
243
- React__default.createElement("span", { className: classNames("nut-range-tick", {
244
- active: tickClass(mark)
245
- }) })
246
- );
247
- })),
248
- React__default.createElement("div", { className: "nut-range-bar", style: barStyle() }, range ? [0, 1].map((item, index) => {
249
- return React__default.createElement("div", { key: index, className: `${index === 0 ? "nut-range-button-wrapper-left" : ""}
250
- ${index === 1 ? "nut-range-button-wrapper-right" : ""}`, onTouchStart: (e) => {
251
- if (typeof index === "number") {
252
- setButtonIndex(index);
253
- }
254
- onTouchStart(e);
255
- }, onTouchMove: (e) => onTouchMove(e), onTouchEnd, onTouchCancel: onTouchEnd, onClick: (e) => e.stopPropagation() }, renderButton(index));
256
- }) : React__default.createElement("div", { className: "nut-range-button-wrapper", onTouchStart: (e) => onTouchStart(e), onTouchMove: (e) => onTouchMove(e), onTouchEnd, onTouchCancel: onTouchEnd, onClick: (e) => e.stopPropagation() }, renderButton()))
260
+ renderMark(),
261
+ React__default.createElement("div", { className: "nut-range-bar", style: barStyle() }, range ? renderRangeButton() : renderSingleButton())
257
262
  ),
258
263
  maxDescription !== null && React__default.createElement("div", { className: "max" }, maxDescription || max)
259
264
  );
@@ -10,7 +10,7 @@ const Button = React__default.forwardRef((props, ref) => {
10
10
  const _a = Object.assign(Object.assign({}, defaultProps), props), { color, shape, fill, loading, disabled, type, size, block, icon, rightIcon, children, className, style, nativeType, onClick } = _a, rest = __rest(_a, ["color", "shape", "fill", "loading", "disabled", "type", "size", "block", "icon", "rightIcon", "children", "className", "style", "nativeType", "onClick"]);
11
11
  const getStyle = useCallback(() => {
12
12
  const style2 = {};
13
- if (props.color) {
13
+ if (color) {
14
14
  if (props.fill === "outline" || props.fill === "dashed") {
15
15
  style2.color = color;
16
16
  if (!(color === null || color === void 0 ? void 0 : color.includes("gradient"))) {
@@ -23,7 +23,7 @@ const Button = React__default.forwardRef((props, ref) => {
23
23
  }
24
24
  }
25
25
  return style2;
26
- }, [color]);
26
+ }, [color, props.fill]);
27
27
  const handleClick = (e) => {
28
28
  if (!loading && !disabled && onClick) {
29
29
  onClick(e);
@@ -1,4 +1,4 @@
1
- import React__default, { forwardRef, useState, useEffect, useImperativeHandle, useMemo, useRef } from "react";
1
+ import React__default, { forwardRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, useRef } from "react";
2
2
  import classNames from "classnames";
3
3
  import { CSSTransition } from "react-transition-group";
4
4
  import { Check } from "@nutui/icons-react";
@@ -23,9 +23,21 @@ const MenuItem = forwardRef((props, ref) => {
23
23
  useEffect(() => {
24
24
  setShowPopup(show);
25
25
  }, [show]);
26
+ const getParentOffset = useCallback(() => {
27
+ setTimeout(() => {
28
+ const p = parent.menuRef.current;
29
+ if (p) {
30
+ const rect = p.getBoundingClientRect();
31
+ setPosition({
32
+ height: rect.height,
33
+ top: rect.top
34
+ });
35
+ }
36
+ });
37
+ }, [parent.menuRef]);
26
38
  useEffect(() => {
27
39
  getParentOffset();
28
- }, [showPopup]);
40
+ }, [showPopup, getParentOffset]);
29
41
  useImperativeHandle(ref, () => ({
30
42
  toggle: (s) => {
31
43
  const from = "REF";
@@ -60,18 +72,6 @@ const MenuItem = forwardRef((props, ref) => {
60
72
  const scrollParent = useMemo(() => {
61
73
  return getScrollParent(parent.menuRef, window);
62
74
  }, [parent.menuRef]);
63
- const getParentOffset = () => {
64
- setTimeout(() => {
65
- const p = parent.menuRef.current;
66
- if (p) {
67
- const rect = p.getBoundingClientRect();
68
- setPosition({
69
- height: rect.height,
70
- top: rect.top
71
- });
72
- }
73
- });
74
- };
75
75
  useEffect(() => {
76
76
  if (!parent.lockScroll) {
77
77
  scrollParent === null || scrollParent === void 0 ? void 0 : scrollParent.addEventListener("scroll", getParentOffset, false);
@@ -79,7 +79,7 @@ const MenuItem = forwardRef((props, ref) => {
79
79
  scrollParent === null || scrollParent === void 0 ? void 0 : scrollParent.removeEventListener("scroll", getParentOffset, false);
80
80
  };
81
81
  }
82
- }, []);
82
+ }, [parent.lockScroll, scrollParent, getParentOffset]);
83
83
  const getPosition = () => {
84
84
  return direction === "down" ? {
85
85
  top: `${position.top + position.height}px`,
@@ -87,7 +87,8 @@ const Overlay = (props) => {
87
87
  setInnerVisible(false);
88
88
  }
89
89
  }, [visible]);
90
- useLockScroll(nodeRef, !!lockScroll && innerVisible);
90
+ const shouldLockScroll = !innerVisible ? false : lockScroll;
91
+ useLockScroll(nodeRef, shouldLockScroll);
91
92
  const classes = classNames(classPrefix, className);
92
93
  const styles = Object.assign({}, style);
93
94
  const handleClick = (e) => {
@@ -18,7 +18,8 @@ const Popup = (props) => {
18
18
  const [innerVisible, setInnerVisible] = useState(visible);
19
19
  const [showChildren, setShowChildren] = useState(true);
20
20
  const [transitionName, setTransitionName] = useState("");
21
- useLockScroll(nodeRef, innerVisible && lockScroll);
21
+ const shouldLockScroll = !innerVisible ? false : lockScroll;
22
+ useLockScroll(nodeRef, shouldLockScroll);
22
23
  const classPrefix = "nut-popup";
23
24
  const baseStyle = {
24
25
  zIndex: index
@@ -38,17 +38,6 @@ const Radio = (props) => {
38
38
  }
39
39
  };
40
40
  }
41
- const renderLabel = () => {
42
- return React__default.createElement("div", { className: classNames(`${classPrefix}-label`, {
43
- [`${classPrefix}-label-disabled`]: disabled
44
- }) }, children);
45
- };
46
- const renderButton = () => {
47
- return React__default.createElement("div", { className: classNames(`${classPrefix}-button`, {
48
- [`${classPrefix}-button-active`]: checkedStatement,
49
- [`${classPrefix}-button-disabled`]: disabled
50
- }) }, children);
51
- };
52
41
  const color = () => {
53
42
  return {
54
43
  [`${classPrefix}-icon-disabled`]: disabled,
@@ -66,14 +55,27 @@ const Radio = (props) => {
66
55
  }
67
56
  return React__default.isValidElement(icon2) ? React__default.cloneElement(icon2, Object.assign(Object.assign({}, icon2.props), { className: classNames(color()) })) : React__default.createElement(CheckNormal, { className: classNames(color()) });
68
57
  };
69
- const renderByShape = (shape2) => {
70
- return shape2 === "button" ? renderButton() : React__default.createElement(
58
+ const renderLabel = () => {
59
+ const labelcls = classNames(`${classPrefix}-label`, {
60
+ [`${classPrefix}-label-disabled`]: disabled
61
+ });
62
+ return React__default.createElement(
71
63
  React__default.Fragment,
72
64
  null,
73
65
  renderIcon(),
74
- renderLabel()
66
+ React__default.createElement("div", { className: labelcls }, children)
75
67
  );
76
68
  };
69
+ const renderButton = () => {
70
+ const buttoncls = classNames(`${classPrefix}-button`, {
71
+ [`${classPrefix}-button-active`]: checkedStatement,
72
+ [`${classPrefix}-button-disabled`]: disabled
73
+ });
74
+ return React__default.createElement("div", { className: buttoncls }, children);
75
+ };
76
+ const renderByShape = (shape2) => {
77
+ return shape2 === "button" ? renderButton() : renderLabel();
78
+ };
77
79
  const renderRadioItem = () => {
78
80
  return renderByShape(context && context.shape ? context.shape : shape);
79
81
  };
@@ -82,9 +84,10 @@ const Radio = (props) => {
82
84
  return;
83
85
  setCheckedStatement(!checkedStatement);
84
86
  };
85
- return React__default.createElement("div", Object.assign({ className: classNames(classPrefix, {
87
+ const cls = classNames(classPrefix, {
86
88
  [`${classPrefix}-reverse`]: labelPosition === "left"
87
- }, className), style, onClick: handleClick }, rest), renderRadioItem());
89
+ }, className);
90
+ return React__default.createElement("div", Object.assign({ className: cls, style, onClick: handleClick }, rest), renderRadioItem());
88
91
  };
89
92
  Radio.displayName = "NutRadio";
90
93
  Radio.Group = RadioGroup__default;
package/dist/esm/raf.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const inBrowser = typeof window !== "undefined";
2
2
  function requestAniFrame() {
3
- if (typeof window !== "undefined") {
3
+ if (inBrowser) {
4
4
  const _window = window;
5
5
  return _window.requestAnimationFrame || _window.webkitRequestAnimationFrame || function(callback) {
6
6
  _window.setTimeout(callback, 1e3 / 60);
@@ -10,8 +10,17 @@ function requestAniFrame() {
10
10
  setTimeout(callback, 1e3 / 60);
11
11
  };
12
12
  }
13
+ function cancelRaf(id) {
14
+ if (inBrowser) {
15
+ const _window = window;
16
+ (_window.cancelAnimationFrame || _window.webkitCancelAnimationFrame)(id);
17
+ } else {
18
+ clearTimeout(id);
19
+ }
20
+ }
13
21
  const requestAniFrame$1 = requestAniFrame();
14
22
  export {
23
+ cancelRaf as c,
15
24
  inBrowser as i,
16
25
  requestAniFrame$1 as r
17
26
  };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react v2.6.21 Fri Sep 27 2024 14:10:08 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react v2.6.22 Sat Oct 12 2024 14:59:23 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */