@nutui/nutui-react 2.3.12-beta.0 → 2.3.12
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 +18 -0
- package/dist/esm/ActionSheet.js +30 -76
- package/dist/esm/Address.js +80 -171
- package/dist/esm/Animate.js +21 -49
- package/dist/esm/AnimatingNumbers.js +47 -120
- package/dist/esm/Audio.js +88 -159
- package/dist/esm/Avatar.js +44 -91
- package/dist/esm/AvatarCropper.js +149 -268
- package/dist/esm/AvatarGroup.js +13 -44
- package/dist/esm/BackTop.js +34 -75
- package/dist/esm/Barrage.js +49 -83
- package/dist/esm/Calendar.js +27 -119
- package/dist/esm/CalendarCard.js +180 -291
- package/dist/esm/CalendarItem.js +253 -314
- package/dist/esm/Card.js +38 -72
- package/dist/esm/Cell.js +27 -62
- package/dist/esm/CellGroup.js +16 -45
- package/dist/esm/CheckboxGroup.js +49 -85
- package/dist/esm/CircleProgress.js +42 -93
- package/dist/esm/Col.js +17 -48
- package/dist/esm/Collapse.js +18 -49
- package/dist/esm/ConfigProvider.js +3 -2
- package/dist/esm/CountDown.js +62 -101
- package/dist/esm/DatePicker.js +87 -127
- package/dist/esm/Dialog.js +116 -196
- package/dist/esm/Divider.js +16 -36
- package/dist/esm/Drag.js +32 -76
- package/dist/esm/Elevator.js +93 -133
- package/dist/esm/Ellipsis.js +71 -92
- package/dist/esm/Empty.js +31 -70
- package/dist/esm/FixedNav.js +32 -81
- package/dist/esm/Form.js +28 -61
- package/dist/esm/Grid.js +27 -51
- package/dist/esm/Image.js +47 -102
- package/dist/esm/ImagePreview.js +82 -135
- package/dist/esm/InfiniteLoading.js +77 -159
- package/dist/esm/Input.js +57 -125
- package/dist/esm/InputNumber.js +66 -96
- package/dist/esm/Layout.js +4 -28
- package/dist/esm/Loading.js +13 -40
- package/dist/esm/Menu.js +51 -105
- package/dist/esm/NavBar.js +46 -85
- package/dist/esm/NoticeBar.js +153 -226
- package/dist/esm/Notify.js +87 -178
- package/dist/esm/NumberKeyboard.js +84 -150
- package/dist/esm/Pagination.js +58 -97
- package/dist/esm/Picker.js +215 -276
- package/dist/esm/Popover.js +111 -159
- package/dist/esm/Price.js +23 -60
- package/dist/esm/Progress.js +47 -77
- package/dist/esm/PullToRefresh.js +94 -201
- package/dist/esm/RadioGroup.js +23 -53
- package/dist/esm/Range.js +113 -177
- package/dist/esm/Rate.js +48 -95
- package/dist/esm/Row.js +19 -43
- package/dist/esm/SearchBar.js +52 -119
- package/dist/esm/ShortPassword.js +58 -106
- package/dist/esm/SideNavBar.js +34 -59
- package/dist/esm/SideNavBarItem.js +7 -36
- package/dist/esm/Signature.js +49 -84
- package/dist/esm/Skeleton.js +31 -68
- package/dist/esm/Space.js +7 -34
- package/dist/esm/Step.js +35 -64
- package/dist/esm/Steps.js +16 -40
- package/dist/esm/Sticky.js +64 -108
- package/dist/esm/SubSideNavBar.js +42 -71
- package/dist/esm/Swipe.js +79 -143
- package/dist/esm/Swiper.js +136 -183
- package/dist/esm/SwiperItem.js +13 -38
- package/dist/esm/Switch.js +20 -53
- package/dist/esm/TabPane.js +6 -30
- package/dist/esm/Tabbar.js +29 -59
- package/dist/esm/Table.js +92 -141
- package/dist/esm/Tag.js +30 -74
- package/dist/esm/TextArea.js +37 -82
- package/dist/esm/TimeDetail.js +20 -58
- package/dist/esm/TimeSelect.js +57 -95
- package/dist/esm/Toast.js +110 -197
- package/dist/esm/Tour.js +88 -132
- package/dist/esm/TrendArrow.js +32 -74
- package/dist/esm/Uploader.js +226 -346
- package/dist/esm/UserContext.js +1 -1
- package/dist/esm/Video.js +34 -67
- package/dist/esm/VirtualList.js +127 -160
- package/dist/esm/WaterMark.js +24 -68
- package/dist/esm/badge2.js +23 -53
- package/dist/esm/button2.js +30 -63
- package/dist/esm/can-use-dom.js +1 -1
- package/dist/esm/cascader2.js +307 -536
- package/dist/esm/checkbox2.js +59 -96
- package/dist/esm/collapseitem2.js +48 -86
- package/dist/esm/configprovider2.js +43 -1003
- package/dist/esm/context.js +1 -1
- package/dist/esm/context2.js +1 -1
- package/dist/esm/context3.js +1 -1
- package/dist/esm/context4.js +1 -1
- package/dist/esm/context5.js +8 -8
- package/dist/esm/date.js +88 -66
- package/dist/esm/formitem2.js +236 -1510
- package/dist/esm/get-scroll-parent.js +8 -10
- package/dist/esm/griditem2.js +34 -52
- package/dist/esm/index.js +5 -12
- package/dist/esm/indicator2.js +13 -42
- package/dist/esm/menuitem2.js +81 -124
- package/dist/esm/overlay2.js +39 -78
- package/dist/esm/pad-zero.js +3 -4
- package/dist/esm/popup2.js +79 -124
- package/dist/esm/px-check.js +2 -2
- package/dist/esm/radio2.js +48 -79
- package/dist/esm/raf.js +5 -3
- package/dist/esm/render.js +17 -54
- package/dist/esm/safearea2.js +3 -5
- package/dist/esm/supports-passive.js +3 -3
- package/dist/esm/tabbaritem2.js +42 -58
- package/dist/esm/tabs2.js +82 -120
- package/dist/esm/tslib.es6.js +47 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo1.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo2.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo3.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo4.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo5.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo6.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo7.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo8.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo9.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo1.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo10.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo2.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo3.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo4.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo5.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo6.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo7.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo8.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo9.d.ts +3 -0
- package/dist/esm/types/src/packages/configprovider/configprovider.d.ts +1 -0
- package/dist/esm/types/src/packages/configprovider/configprovider.taro.d.ts +1 -0
- package/dist/esm/types/src/packages/configprovider/index.d.ts +2 -2
- package/dist/esm/types/src/packages/configprovider/index.taro.d.ts +2 -2
- package/dist/esm/types/src/packages/inputnumber/inputnumber.taro.d.ts +2 -0
- package/dist/esm/typings.js +1 -1
- package/dist/esm/use-click-away.js +9 -13
- package/dist/esm/use-client-rect.js +4 -4
- package/dist/esm/use-props-value.js +10 -15
- package/dist/esm/use-refs.js +5 -7
- package/dist/esm/use-touch.js +16 -20
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +1 -1
- package/dist/locales/id-ID.js +1 -1
- package/dist/locales/tr-TR.js +1 -1
- package/dist/locales/zh-CN.js +1 -1
- package/dist/locales/zh-TW.js +1 -1
- package/dist/locales/zh-UG.js +1 -1
- package/dist/nutui.react.es.js +242 -284
- package/dist/nutui.react.umd.js +239 -281
- package/dist/style.mjs +1 -1
- package/dist/styles/variables-jmapp.scss +4 -0
- package/dist/types/packages/button/demos/h5/demo1.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo2.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo3.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo4.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo5.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo6.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo7.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo8.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo9.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo1.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo10.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo2.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo3.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo4.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo5.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo6.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo7.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo8.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo9.d.ts +3 -0
- package/dist/types/packages/configprovider/configprovider.d.ts +1 -0
- package/dist/types/packages/configprovider/configprovider.taro.d.ts +1 -0
- package/dist/types/packages/configprovider/index.d.ts +2 -2
- package/dist/types/packages/configprovider/index.taro.d.ts +2 -2
- package/dist/types/packages/empty/empty.d.ts +15 -3
- package/dist/types/packages/inputnumber/inputnumber.taro.d.ts +2 -0
- package/dist/types/packages/rate/rate.d.ts +1 -1
- package/package.json +5 -1
package/dist/esm/Range.js
CHANGED
|
@@ -1,123 +1,91 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) {
|
|
4
|
-
var t = Object.keys(e);
|
|
5
|
-
if (Object.getOwnPropertySymbols) {
|
|
6
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
7
|
-
r && (o = o.filter(function(r2) {
|
|
8
|
-
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
9
|
-
})), t.push.apply(t, o);
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
}
|
|
13
|
-
function _objectSpread(e) {
|
|
14
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
15
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
16
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
17
|
-
_defineProperty(e, r2, t[r2]);
|
|
18
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
19
|
-
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return e;
|
|
23
|
-
}
|
|
24
1
|
import React__default, { useState, useRef, useEffect, useCallback } from "react";
|
|
25
2
|
import classNames from "classnames";
|
|
26
3
|
import { u as useTouch } from "./use-touch.js";
|
|
27
4
|
import { g as getRect } from "./use-client-rect.js";
|
|
28
5
|
import { C as ComponentDefaults } from "./typings.js";
|
|
29
6
|
import { u as usePropsValue } from "./use-props-value.js";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
step
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var touch = useTouch();
|
|
44
|
-
var root = useRef(null);
|
|
45
|
-
var _useState5 = useState([]), _useState6 = _slicedToArray(_useState5, 2), marksList = _useState6[0], setMarksList = _useState6[1];
|
|
46
|
-
var _useState7 = useState(0), _useState8 = _slicedToArray(_useState7, 2), startValue = _useState8[0], setStartValue = _useState8[1];
|
|
47
|
-
var handleChange = function handleChange2(value2) {
|
|
7
|
+
import { a as useRtl } from "./configprovider2.js";
|
|
8
|
+
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { range: false, min: 0, max: 100, step: 1, vertical: false, marks: {} });
|
|
9
|
+
const Range = (props) => {
|
|
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);
|
|
12
|
+
const classPrefix = "nut-range";
|
|
13
|
+
const [buttonIndex, setButtonIndex] = useState(0);
|
|
14
|
+
const [dragStatus, setDragStatus] = useState("start");
|
|
15
|
+
const touch = useTouch();
|
|
16
|
+
const root = useRef(null);
|
|
17
|
+
const [marksList, setMarksList] = useState([]);
|
|
18
|
+
const [startValue, setStartValue] = useState(0);
|
|
19
|
+
const handleChange = (value2) => {
|
|
48
20
|
onChange && onChange(value2);
|
|
49
21
|
};
|
|
50
|
-
|
|
22
|
+
const [current, setCurrent] = usePropsValue({
|
|
51
23
|
value,
|
|
52
24
|
defaultValue,
|
|
53
25
|
finalValue: 0,
|
|
54
26
|
onChange: handleChange
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var marksRef = useRef({});
|
|
60
|
-
useEffect(function() {
|
|
27
|
+
});
|
|
28
|
+
const [exactValue, setEaxctValue] = useState(() => value || defaultValue || 0);
|
|
29
|
+
const marksRef = useRef({});
|
|
30
|
+
useEffect(() => {
|
|
61
31
|
if (marks) {
|
|
62
32
|
if (Array.isArray(marks)) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return point.value >= min && point.value <= max;
|
|
67
|
-
});
|
|
68
|
-
setMarksList(list.map(function(mark) {
|
|
69
|
-
return mark.value;
|
|
70
|
-
}));
|
|
71
|
-
list.forEach(function(mark) {
|
|
33
|
+
const list = marks.sort((a, b) => a.value - b.value).filter((point) => point.value >= min && point.value <= max);
|
|
34
|
+
setMarksList(list.map((mark) => mark.value));
|
|
35
|
+
list.forEach((mark) => {
|
|
72
36
|
marksRef.current[mark.value] = mark.label !== void 0 ? mark.label : mark.value;
|
|
73
37
|
});
|
|
74
38
|
} else {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}).filter(function(point) {
|
|
79
|
-
return point >= min && point <= max;
|
|
80
|
-
});
|
|
81
|
-
setMarksList(_list);
|
|
39
|
+
const marksKeys = Object.keys(marks);
|
|
40
|
+
const list = marksKeys.map(parseFloat).sort((a, b) => a - b).filter((point) => point >= min && point <= max);
|
|
41
|
+
setMarksList(list);
|
|
82
42
|
}
|
|
83
43
|
}
|
|
84
44
|
}, [marks]);
|
|
85
|
-
|
|
45
|
+
const scope = () => {
|
|
86
46
|
return max - min;
|
|
87
47
|
};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
48
|
+
const classes = classNames(classPrefix, {
|
|
49
|
+
[`${classPrefix}-disabled`]: disabled,
|
|
50
|
+
[`${classPrefix}-vertical`]: vertical
|
|
51
|
+
});
|
|
52
|
+
const containerClasses = classNames(`${classPrefix}-container`, {
|
|
53
|
+
[`${classPrefix}-container-vertical`]: vertical
|
|
54
|
+
}, className);
|
|
55
|
+
const markClassName = useCallback((mark) => {
|
|
56
|
+
const classPrefix2 = "nut-range-mark";
|
|
57
|
+
let lowerBound = min;
|
|
58
|
+
let upperBound = max;
|
|
94
59
|
if (range && Array.isArray(current)) {
|
|
95
60
|
lowerBound = current[0];
|
|
96
61
|
upperBound = current[1];
|
|
97
62
|
} else {
|
|
98
63
|
upperBound = current;
|
|
99
64
|
}
|
|
100
|
-
|
|
101
|
-
return [
|
|
65
|
+
const isActive = mark <= upperBound && mark >= lowerBound;
|
|
66
|
+
return [
|
|
67
|
+
`${classPrefix2}-text`,
|
|
68
|
+
`${isActive ? `${classPrefix2}-text-active` : ""}`
|
|
69
|
+
].join(" ");
|
|
102
70
|
}, [range, current, min, max]);
|
|
103
|
-
|
|
71
|
+
const isRange = (val) => {
|
|
104
72
|
return !!range && Array.isArray(val);
|
|
105
73
|
};
|
|
106
|
-
|
|
107
|
-
|
|
74
|
+
const calcMainAxis = () => {
|
|
75
|
+
const modelVal = current;
|
|
108
76
|
if (isRange(modelVal)) {
|
|
109
|
-
return
|
|
77
|
+
return `${(modelVal[1] - modelVal[0]) * 100 / scope()}%`;
|
|
110
78
|
}
|
|
111
|
-
return
|
|
79
|
+
return `${(modelVal - min) * 100 / scope()}%`;
|
|
112
80
|
};
|
|
113
|
-
|
|
114
|
-
|
|
81
|
+
const calcOffset = () => {
|
|
82
|
+
const modelVal = current;
|
|
115
83
|
if (isRange(modelVal)) {
|
|
116
|
-
return
|
|
84
|
+
return `${(modelVal[0] - min) * 100 / scope()}%`;
|
|
117
85
|
}
|
|
118
|
-
return
|
|
86
|
+
return `0%`;
|
|
119
87
|
};
|
|
120
|
-
|
|
88
|
+
const barStyle = () => {
|
|
121
89
|
if (vertical) {
|
|
122
90
|
return {
|
|
123
91
|
height: calcMainAxis(),
|
|
@@ -125,43 +93,45 @@ var Range = function Range2(props) {
|
|
|
125
93
|
transition: dragStatus ? "none" : void 0
|
|
126
94
|
};
|
|
127
95
|
}
|
|
96
|
+
const dir = rtl ? "right" : "left";
|
|
128
97
|
return {
|
|
129
98
|
width: calcMainAxis(),
|
|
130
|
-
|
|
99
|
+
[dir]: calcOffset(),
|
|
131
100
|
transition: dragStatus ? "none" : void 0
|
|
132
101
|
};
|
|
133
102
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
103
|
+
const marksStyle = (mark) => {
|
|
104
|
+
const dir = rtl ? "right" : "left";
|
|
105
|
+
let style = {
|
|
106
|
+
[dir]: `${(mark - min) / scope() * 100}%`
|
|
137
107
|
};
|
|
138
108
|
if (vertical) {
|
|
139
109
|
style = {
|
|
140
|
-
top:
|
|
110
|
+
top: `${(mark - min) / scope() * 100}%`
|
|
141
111
|
};
|
|
142
112
|
}
|
|
143
113
|
return style;
|
|
144
114
|
};
|
|
145
|
-
|
|
115
|
+
const tickClass = (mark) => {
|
|
146
116
|
if (range && Array.isArray(current)) {
|
|
147
117
|
return mark <= current[1] && mark >= current[0];
|
|
148
118
|
}
|
|
149
119
|
return mark <= current;
|
|
150
120
|
};
|
|
151
|
-
|
|
121
|
+
const format = (value2) => {
|
|
152
122
|
value2 = Math.max(+min, Math.min(value2, +max));
|
|
153
123
|
return Math.round(value2 / +step) * +step;
|
|
154
124
|
};
|
|
155
|
-
|
|
125
|
+
const isSameValue = (newValue, oldValue) => {
|
|
156
126
|
return JSON.stringify(newValue) === JSON.stringify(oldValue);
|
|
157
127
|
};
|
|
158
|
-
|
|
128
|
+
const handleOverlap = (value2) => {
|
|
159
129
|
if (value2[0] > value2[1]) {
|
|
160
130
|
return value2.slice(0).reverse();
|
|
161
131
|
}
|
|
162
132
|
return value2;
|
|
163
133
|
};
|
|
164
|
-
|
|
134
|
+
const updateValue = (value2, end) => {
|
|
165
135
|
if (isRange(value2)) {
|
|
166
136
|
value2 = handleOverlap(value2).map(format);
|
|
167
137
|
} else {
|
|
@@ -172,23 +142,23 @@ var Range = function Range2(props) {
|
|
|
172
142
|
}
|
|
173
143
|
end && onEnd && onEnd(value2);
|
|
174
144
|
};
|
|
175
|
-
|
|
145
|
+
const click = (event) => {
|
|
176
146
|
if (disabled || !root.current) {
|
|
177
147
|
return;
|
|
178
148
|
}
|
|
179
149
|
setDragStatus("");
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
150
|
+
const rect = getRect(root.current);
|
|
151
|
+
let delta = event.clientX - rect.left;
|
|
152
|
+
let total = rect.width;
|
|
183
153
|
if (vertical) {
|
|
184
154
|
delta = event.clientY - rect.top;
|
|
185
155
|
total = rect.height;
|
|
186
156
|
}
|
|
187
|
-
|
|
157
|
+
const value2 = min + delta / total * scope();
|
|
188
158
|
setEaxctValue(current);
|
|
189
159
|
if (isRange(current)) {
|
|
190
|
-
|
|
191
|
-
|
|
160
|
+
const [left, right] = current;
|
|
161
|
+
const middle = (left + right) / 2;
|
|
192
162
|
if (value2 <= middle) {
|
|
193
163
|
updateValue([value2, right], true);
|
|
194
164
|
} else {
|
|
@@ -198,7 +168,7 @@ var Range = function Range2(props) {
|
|
|
198
168
|
updateValue(value2, true);
|
|
199
169
|
}
|
|
200
170
|
};
|
|
201
|
-
|
|
171
|
+
const onTouchStart = (event) => {
|
|
202
172
|
if (disabled) {
|
|
203
173
|
return;
|
|
204
174
|
}
|
|
@@ -211,7 +181,7 @@ var Range = function Range2(props) {
|
|
|
211
181
|
}
|
|
212
182
|
setDragStatus("start");
|
|
213
183
|
};
|
|
214
|
-
|
|
184
|
+
const onTouchMove = (event) => {
|
|
215
185
|
event.stopPropagation();
|
|
216
186
|
if (disabled || !root.current) {
|
|
217
187
|
return;
|
|
@@ -221,16 +191,17 @@ var Range = function Range2(props) {
|
|
|
221
191
|
}
|
|
222
192
|
touch.move(event);
|
|
223
193
|
setDragStatus("draging");
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
194
|
+
const rect = getRect(root.current);
|
|
195
|
+
let delta = touch.deltaX.current;
|
|
196
|
+
let total = rect.width;
|
|
197
|
+
let diff = delta / total * scope();
|
|
198
|
+
diff = rtl ? -diff : diff;
|
|
228
199
|
if (vertical) {
|
|
229
200
|
delta = touch.deltaY.current;
|
|
230
201
|
total = rect.height;
|
|
231
202
|
diff = delta / total * scope();
|
|
232
203
|
}
|
|
233
|
-
|
|
204
|
+
let newValue;
|
|
234
205
|
if (isRange(startValue)) {
|
|
235
206
|
newValue = exactValue.slice();
|
|
236
207
|
newValue[buttonIndex] = startValue[buttonIndex] + diff;
|
|
@@ -240,7 +211,7 @@ var Range = function Range2(props) {
|
|
|
240
211
|
setEaxctValue(newValue);
|
|
241
212
|
updateValue(newValue);
|
|
242
213
|
};
|
|
243
|
-
|
|
214
|
+
const onTouchEnd = () => {
|
|
244
215
|
if (disabled) {
|
|
245
216
|
return;
|
|
246
217
|
}
|
|
@@ -249,78 +220,43 @@ var Range = function Range2(props) {
|
|
|
249
220
|
}
|
|
250
221
|
setDragStatus("");
|
|
251
222
|
};
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
223
|
+
const curValue = (idx) => {
|
|
224
|
+
const modelVal = current;
|
|
225
|
+
const value2 = typeof idx === "number" ? modelVal[idx] : modelVal;
|
|
255
226
|
return value2;
|
|
256
227
|
};
|
|
257
|
-
|
|
258
|
-
return React__default.createElement(React__default.Fragment, null, button || React__default.createElement("div", {
|
|
259
|
-
className: "nut-range-button"
|
|
260
|
-
}, currentDescription !== null && React__default.createElement("div", {
|
|
261
|
-
className: "number"
|
|
262
|
-
}, currentDescription ? currentDescription(curValue(index)) : curValue(index))));
|
|
228
|
+
const renderButton = (index) => {
|
|
229
|
+
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))));
|
|
263
230
|
};
|
|
264
|
-
return React__default.createElement(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
className: "min"
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
onTouchStart: function onTouchStart(e) {
|
|
294
|
-
if (typeof index === "number") {
|
|
295
|
-
setButtonIndex(index);
|
|
296
|
-
}
|
|
297
|
-
_onTouchStart(e);
|
|
298
|
-
},
|
|
299
|
-
onTouchMove: function onTouchMove(e) {
|
|
300
|
-
return _onTouchMove(e);
|
|
301
|
-
},
|
|
302
|
-
onTouchEnd,
|
|
303
|
-
onTouchCancel: onTouchEnd,
|
|
304
|
-
onClick: function onClick(e) {
|
|
305
|
-
return e.stopPropagation();
|
|
306
|
-
}
|
|
307
|
-
}, renderButton(index));
|
|
308
|
-
}) : React__default.createElement("div", {
|
|
309
|
-
className: "nut-range-button-wrapper",
|
|
310
|
-
onTouchStart: function onTouchStart(e) {
|
|
311
|
-
return _onTouchStart(e);
|
|
312
|
-
},
|
|
313
|
-
onTouchMove: function onTouchMove(e) {
|
|
314
|
-
return _onTouchMove(e);
|
|
315
|
-
},
|
|
316
|
-
onTouchEnd,
|
|
317
|
-
onTouchCancel: onTouchEnd,
|
|
318
|
-
onClick: function onClick(e) {
|
|
319
|
-
return e.stopPropagation();
|
|
320
|
-
}
|
|
321
|
-
}, renderButton()))), maxDescription !== null && React__default.createElement("div", {
|
|
322
|
-
className: "max"
|
|
323
|
-
}, maxDescription || max));
|
|
231
|
+
return React__default.createElement(
|
|
232
|
+
"div",
|
|
233
|
+
{ className: containerClasses },
|
|
234
|
+
minDescription !== null && React__default.createElement("div", { className: "min" }, minDescription || min),
|
|
235
|
+
React__default.createElement(
|
|
236
|
+
"div",
|
|
237
|
+
{ 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()))
|
|
257
|
+
),
|
|
258
|
+
maxDescription !== null && React__default.createElement("div", { className: "max" }, maxDescription || max)
|
|
259
|
+
);
|
|
324
260
|
};
|
|
325
261
|
Range.defaultProps = defaultProps;
|
|
326
262
|
Range.displayName = "NutRange";
|
package/dist/esm/Rate.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) {
|
|
4
|
-
var t = Object.keys(e);
|
|
5
|
-
if (Object.getOwnPropertySymbols) {
|
|
6
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
7
|
-
r && (o = o.filter(function(r2) {
|
|
8
|
-
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
9
|
-
})), t.push.apply(t, o);
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
}
|
|
13
|
-
function _objectSpread(e) {
|
|
14
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
15
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
16
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
17
|
-
_defineProperty(e, r2, t[r2]);
|
|
18
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
19
|
-
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return e;
|
|
23
|
-
}
|
|
24
1
|
import React__default, { useState, useRef, useEffect } from "react";
|
|
25
2
|
import classNames from "classnames";
|
|
26
3
|
import { StarFill } from "@nutui/icons-react";
|
|
@@ -28,63 +5,54 @@ import { C as ComponentDefaults } from "./typings.js";
|
|
|
28
5
|
import { u as usePropsValue } from "./use-props-value.js";
|
|
29
6
|
import { g as getRect } from "./use-client-rect.js";
|
|
30
7
|
import { u as useRefs } from "./use-refs.js";
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
min
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
touchable: false
|
|
40
|
-
});
|
|
41
|
-
var Rate = function Rate2(props) {
|
|
42
|
-
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, style = _defaultProps$props.style, count = _defaultProps$props.count, value = _defaultProps$props.value, defaultValue = _defaultProps$props.defaultValue, min = _defaultProps$props.min, checkedIcon = _defaultProps$props.checkedIcon, uncheckedIcon = _defaultProps$props.uncheckedIcon, disabled = _defaultProps$props.disabled, readOnly = _defaultProps$props.readOnly, allowHalf = _defaultProps$props.allowHalf, touchable = _defaultProps$props.touchable, onChange = _defaultProps$props.onChange, onTouchEnd = _defaultProps$props.onTouchEnd;
|
|
43
|
-
var classPrefix = "nut-rate";
|
|
44
|
-
var _useState = useState([1, 2, 3, 4, 5]), _useState2 = _slicedToArray(_useState, 2), countArray = _useState2[0], setCountArray = _useState2[1];
|
|
45
|
-
var _useRefs = useRefs(), _useRefs2 = _slicedToArray(_useRefs, 2), refs = _useRefs2[0], setRefs = _useRefs2[1];
|
|
46
|
-
var rateRects = useRef([]);
|
|
47
|
-
var _usePropsValue = usePropsValue({
|
|
8
|
+
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { count: 5, min: 0, checkedIcon: null, uncheckedIcon: null, disabled: false, readOnly: false, allowHalf: false, touchable: false });
|
|
9
|
+
const Rate = (props) => {
|
|
10
|
+
const { className, style, count, value, defaultValue, min, checkedIcon, uncheckedIcon, disabled, readOnly, allowHalf, touchable, onChange, onTouchEnd } = Object.assign(Object.assign({}, defaultProps), props);
|
|
11
|
+
const classPrefix = "nut-rate";
|
|
12
|
+
const [countArray, setCountArray] = useState([1, 2, 3, 4, 5]);
|
|
13
|
+
const [refs, setRefs] = useRefs();
|
|
14
|
+
const rateRects = useRef([]);
|
|
15
|
+
const [score, setScore] = usePropsValue({
|
|
48
16
|
value,
|
|
49
17
|
defaultValue: Math.max(defaultValue || 0, min),
|
|
50
18
|
finalValue: 0,
|
|
51
19
|
onChange
|
|
52
|
-
})
|
|
53
|
-
useEffect(
|
|
54
|
-
|
|
55
|
-
for (
|
|
20
|
+
});
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const tmp = [];
|
|
23
|
+
for (let i = 1; i <= Number(count); i++) {
|
|
56
24
|
tmp.push(i);
|
|
57
25
|
}
|
|
58
26
|
setCountArray(tmp);
|
|
59
27
|
}, [count]);
|
|
60
|
-
|
|
28
|
+
const renderIcon = (n) => {
|
|
61
29
|
return n <= score ? checkedIcon || React__default.createElement(StarFill, null) : uncheckedIcon || (checkedIcon ? React__default.cloneElement(checkedIcon, {
|
|
62
30
|
color: void 0
|
|
63
31
|
}) : React__default.createElement(StarFill, null));
|
|
64
32
|
};
|
|
65
|
-
|
|
33
|
+
const onClick = (e, index) => {
|
|
66
34
|
e.preventDefault();
|
|
67
35
|
e.stopPropagation();
|
|
68
36
|
if (disabled || readOnly)
|
|
69
37
|
return;
|
|
70
|
-
|
|
38
|
+
let value2 = 0;
|
|
71
39
|
if (!(index === 1 && score === index)) {
|
|
72
40
|
value2 = index;
|
|
73
41
|
}
|
|
74
42
|
value2 = Math.max(value2, min);
|
|
75
43
|
setScore(value2);
|
|
76
44
|
};
|
|
77
|
-
|
|
45
|
+
const onHalfClick = (event, n) => {
|
|
78
46
|
event.preventDefault();
|
|
79
47
|
event.stopPropagation();
|
|
80
|
-
|
|
48
|
+
const value2 = Math.max(min, n - 0.5);
|
|
81
49
|
setScore(value2);
|
|
82
50
|
};
|
|
83
|
-
|
|
84
|
-
var
|
|
85
|
-
if ((
|
|
86
|
-
for (
|
|
87
|
-
|
|
51
|
+
const getScoreByPosition = (x) => {
|
|
52
|
+
var _a;
|
|
53
|
+
if ((_a = rateRects.current) === null || _a === void 0 ? void 0 : _a.length) {
|
|
54
|
+
for (let index = rateRects.current.length - 1; index >= 0; index--) {
|
|
55
|
+
const item = rateRects.current[index];
|
|
88
56
|
if (item && x > item.left) {
|
|
89
57
|
return allowHalf ? index + (x > item.left + item.width / 2 ? 1 : 0.5) : index + 1;
|
|
90
58
|
}
|
|
@@ -92,15 +60,15 @@ var Rate = function Rate2(props) {
|
|
|
92
60
|
return 0;
|
|
93
61
|
}
|
|
94
62
|
};
|
|
95
|
-
|
|
96
|
-
for (
|
|
97
|
-
|
|
63
|
+
const updateRects = () => {
|
|
64
|
+
for (let index = 0; index < refs.length; index++) {
|
|
65
|
+
const item = refs[index];
|
|
98
66
|
if (item) {
|
|
99
67
|
rateRects.current[index] = getRect(item);
|
|
100
68
|
}
|
|
101
69
|
}
|
|
102
70
|
};
|
|
103
|
-
|
|
71
|
+
const handleTouchStart = (e) => {
|
|
104
72
|
if (!touchable || readOnly || disabled) {
|
|
105
73
|
return;
|
|
106
74
|
}
|
|
@@ -110,7 +78,7 @@ var Rate = function Rate2(props) {
|
|
|
110
78
|
e.stopPropagation();
|
|
111
79
|
updateRects();
|
|
112
80
|
};
|
|
113
|
-
|
|
81
|
+
const handleTouchMove = (e) => {
|
|
114
82
|
if (!touchable || readOnly || disabled) {
|
|
115
83
|
return;
|
|
116
84
|
}
|
|
@@ -118,12 +86,12 @@ var Rate = function Rate2(props) {
|
|
|
118
86
|
e.preventDefault();
|
|
119
87
|
}
|
|
120
88
|
e.stopPropagation();
|
|
121
|
-
|
|
89
|
+
const val = getScoreByPosition(e.touches[0].clientX);
|
|
122
90
|
if (val !== void 0) {
|
|
123
91
|
setScore(Math.max(min, val));
|
|
124
92
|
}
|
|
125
93
|
};
|
|
126
|
-
|
|
94
|
+
const handleTouchEnd = (e) => {
|
|
127
95
|
if (!touchable || readOnly || disabled) {
|
|
128
96
|
return;
|
|
129
97
|
}
|
|
@@ -131,27 +99,23 @@ var Rate = function Rate2(props) {
|
|
|
131
99
|
e.preventDefault();
|
|
132
100
|
}
|
|
133
101
|
e.stopPropagation();
|
|
134
|
-
|
|
102
|
+
const val = getScoreByPosition(e.changedTouches[0].clientX);
|
|
135
103
|
if (val !== void 0) {
|
|
136
104
|
setScore(Math.max(min, val));
|
|
137
105
|
onTouchEnd && onTouchEnd(e, Math.max(min, val));
|
|
138
106
|
}
|
|
139
107
|
};
|
|
140
|
-
|
|
141
|
-
useEffect(
|
|
142
|
-
|
|
108
|
+
const rateRef = useRef(null);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
const element = rateRef.current;
|
|
143
111
|
if (element) {
|
|
144
112
|
element.addEventListener("touchstart", handleTouchStart, {
|
|
145
113
|
passive: false
|
|
146
114
|
});
|
|
147
|
-
element.addEventListener("touchmove", handleTouchMove, {
|
|
148
|
-
|
|
149
|
-
});
|
|
150
|
-
element.addEventListener("touchend", handleTouchEnd, {
|
|
151
|
-
passive: false
|
|
152
|
-
});
|
|
115
|
+
element.addEventListener("touchmove", handleTouchMove, { passive: false });
|
|
116
|
+
element.addEventListener("touchend", handleTouchEnd, { passive: false });
|
|
153
117
|
}
|
|
154
|
-
return
|
|
118
|
+
return () => {
|
|
155
119
|
if (element) {
|
|
156
120
|
element.removeEventListener("touchstart", handleTouchStart);
|
|
157
121
|
element.removeEventListener("touchmove", handleTouchMove);
|
|
@@ -159,29 +123,18 @@ var Rate = function Rate2(props) {
|
|
|
159
123
|
}
|
|
160
124
|
};
|
|
161
125
|
}, []);
|
|
162
|
-
return React__default.createElement("div", {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
onClick: function onClick(event) {
|
|
175
|
-
return _onClick(event, n);
|
|
176
|
-
}
|
|
177
|
-
}, React__default.createElement("div", {
|
|
178
|
-
className: classNames("".concat(classPrefix, "-item-icon"), _defineProperty({}, "".concat(classPrefix, "-item-icon-disabled"), disabled || n > score))
|
|
179
|
-
}, renderIcon(n)), allowHalf && score > n - 1 && React__default.createElement("div", {
|
|
180
|
-
className: classNames("".concat(classPrefix, "-item-half"), "".concat(classPrefix, "-item-icon"), "".concat(classPrefix, "-item-icon-half")),
|
|
181
|
-
onClick: function onClick(event) {
|
|
182
|
-
return onHalfClick(event, n);
|
|
183
|
-
}
|
|
184
|
-
}, renderIcon(n)));
|
|
126
|
+
return React__default.createElement("div", { className: classNames(classPrefix, {
|
|
127
|
+
disabled,
|
|
128
|
+
readonly: readOnly
|
|
129
|
+
}, className), ref: rateRef, style }, countArray.map((n, index) => {
|
|
130
|
+
return React__default.createElement(
|
|
131
|
+
"div",
|
|
132
|
+
{ className: `${classPrefix}-item`, key: n, ref: setRefs(index), onClick: (event) => onClick(event, n) },
|
|
133
|
+
React__default.createElement("div", { className: classNames(`${classPrefix}-item-icon`, {
|
|
134
|
+
[`${classPrefix}-item-icon-disabled`]: disabled || n > score
|
|
135
|
+
}) }, renderIcon(n)),
|
|
136
|
+
allowHalf && score > n - 1 && React__default.createElement("div", { className: classNames(`${classPrefix}-item-half`, `${classPrefix}-item-icon`, `${classPrefix}-item-icon-half`), onClick: (event) => onHalfClick(event, n) }, renderIcon(n))
|
|
137
|
+
);
|
|
185
138
|
}));
|
|
186
139
|
};
|
|
187
140
|
Rate.defaultProps = defaultProps;
|