@nutui/nutui-react 1.3.5 → 1.3.7
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 +14 -0
- package/dist/esm/ActionSheet.js +15 -25
- package/dist/esm/Address.js +151 -221
- package/dist/esm/AnimatingNumbers.js +7 -31
- package/dist/esm/Audio.js +31 -66
- package/dist/esm/Avatar.js +25 -51
- package/dist/esm/AvatarGroup.js +2 -9
- package/dist/esm/BackTop.js +29 -55
- package/dist/esm/Badge.js +9 -20
- package/dist/esm/Barrage.js +8 -20
- package/dist/esm/Button.js +22 -37
- package/dist/esm/Calendar.js +23 -37
- package/dist/esm/CalendarItem.js +86 -186
- package/dist/esm/Card.js +14 -20
- package/dist/esm/Cascader.js +77 -197
- package/dist/esm/Cell.js +20 -30
- package/dist/esm/CellGroup.js +6 -12
- package/dist/esm/Checkbox.js +27 -48
- package/dist/esm/CheckboxGroup.js +12 -30
- package/dist/esm/CircleProgress.js +11 -28
- package/dist/esm/Col.js +11 -22
- package/dist/esm/Collapse.js +11 -27
- package/dist/esm/CollapseItem.js +33 -47
- package/dist/esm/ConfigProvider.js +4 -15
- package/dist/esm/CountDown.js +37 -74
- package/dist/esm/DatePicker.js +44 -106
- package/dist/esm/Dialog.js +31 -89
- package/dist/esm/Divider.js +8 -15
- package/dist/esm/Drag.js +30 -45
- package/dist/esm/Elevator.js +37 -74
- package/dist/esm/Empty.js +11 -24
- package/dist/esm/FixedNav.js +18 -29
- package/dist/esm/Grid.js +13 -28
- package/dist/esm/GridItem.js +18 -34
- package/dist/esm/ImagePreview.js +36 -71
- package/dist/esm/Indicator.js +9 -20
- package/dist/esm/Infiniteloading.js +26 -55
- package/dist/esm/Input.js +62 -106
- package/dist/esm/InputNumber.js +25 -52
- package/dist/esm/Layout.js +0 -6
- package/dist/esm/Menu.js +27 -49
- package/dist/esm/MenuItem.js +32 -56
- package/dist/esm/NavBar.js +18 -34
- package/dist/esm/NoticeBar.js +54 -102
- package/dist/esm/Notify.js +9 -38
- package/dist/esm/NumberKeyboard.js +21 -52
- package/dist/esm/Pagination.js +38 -71
- package/dist/esm/Picker.js +91 -178
- package/dist/esm/Popover.js +32 -72
- package/dist/esm/Popup.js +40 -72
- package/dist/esm/Price.js +7 -24
- package/dist/esm/Progress.js +35 -50
- package/dist/esm/PullToRefresh.js +28 -83
- package/dist/esm/Radio.js +24 -47
- package/dist/esm/RadioGroup.js +14 -24
- package/dist/esm/Range.js +44 -116
- package/dist/esm/Rate.js +21 -39
- package/dist/esm/Row.js +7 -16
- package/dist/esm/SearchBar.js +47 -68
- package/dist/esm/ShortPassword.js +29 -56
- package/dist/esm/SideNavBar.js +9 -16
- package/dist/esm/SideNavBarItem.js +4 -11
- package/dist/esm/Signature.js +13 -43
- package/dist/esm/Skeleton.js +13 -23
- package/dist/esm/Step.js +12 -28
- package/dist/esm/Steps.js +6 -14
- package/dist/esm/Sticky.js +24 -52
- package/dist/esm/SubSideNavBar.js +7 -22
- package/dist/esm/Swipe.js +15 -54
- package/dist/esm/Swiper.js +102 -186
- package/dist/esm/SwiperItem.js +2 -12
- package/dist/esm/Switch.js +13 -27
- package/dist/esm/Tabbar.js +13 -25
- package/dist/esm/TabbarItem.js +15 -23
- package/dist/esm/Table.js +19 -39
- package/dist/esm/Tag.js +19 -36
- package/dist/esm/TextArea.js +19 -43
- package/dist/esm/TimeDetail.js +15 -28
- package/dist/esm/TimePannel.js +5 -12
- package/dist/esm/TimeSelect.js +35 -59
- package/dist/esm/Toast.js +16 -49
- package/dist/esm/Uploader.js +57 -152
- package/dist/esm/Video.js +8 -19
- package/dist/esm/VirtualList.js +84 -118
- package/dist/esm/date-710f8c7c.js +9 -33
- package/dist/esm/get-scroll-parent-3dcd3f53.js +1 -9
- package/dist/esm/icon-8dc4de10.js +11 -21
- package/dist/esm/offsetContext-0e3d04b3.js +0 -3
- package/dist/esm/overlay-ed3eb37d.js +12 -23
- package/dist/esm/render-18227751.js +0 -11
- package/dist/esm/tabpane-c957ab14.js +4 -10
- package/dist/esm/tabs-0896a61b.js +28 -56
- package/dist/esm/types/src/packages/elevator/demo.d.ts +1 -0
- package/dist/esm/types/src/packages/searchbar/searchbar.d.ts +2 -0
- package/dist/esm/useClientRect-839d18c5.js +0 -5
- package/dist/esm/useTouch-a2ea68c6.js +27 -47
- 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/zh-CN.js +1 -1
- package/dist/locales/zh-TW.js +1 -1
- package/dist/nutui.react.es.js +429 -413
- package/dist/nutui.react.umd.js +421 -405
- package/dist/packages/menu/menu.scss +4 -0
- package/dist/packages/menuitem/menuitem.scss +27 -2
- package/dist/packages/searchbar/searchbar.scss +20 -3
- package/dist/style.css +1 -1
- package/dist/style.es.js +1 -1
- package/dist/types/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/esm/Picker.js
CHANGED
|
@@ -3,164 +3,135 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
5
|
var _excluded = ["isVisible", "title", "listData", "defaultValueData", "onConfirm", "onClose", "onCloseUpdate", "onChange", "className", "style", "threeDimensional", "swipeDuration"];
|
|
6
|
-
|
|
7
6
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
-
|
|
9
7
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
|
-
|
|
11
8
|
import React__default, { useState, useRef, useEffect, useImperativeHandle } from 'react';
|
|
12
9
|
import Popup from './Popup.js';
|
|
13
10
|
import { u as useTouch } from './useTouch-a2ea68c6.js';
|
|
14
11
|
import { useConfig } from './ConfigProvider.js';
|
|
15
12
|
import { c as cn } from './bem-893ad28d.js';
|
|
16
13
|
import '@bem-react/classname';
|
|
17
|
-
|
|
18
14
|
var InternalPickerSlot = function InternalPickerSlot(props, ref) {
|
|
19
15
|
var _props$keyIndex = props.keyIndex,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
keyIndex = _props$keyIndex === void 0 ? 0 : _props$keyIndex,
|
|
17
|
+
defaultValue = props.defaultValue,
|
|
18
|
+
_props$listData = props.listData,
|
|
19
|
+
listData = _props$listData === void 0 ? [] : _props$listData,
|
|
20
|
+
_props$threeDimension = props.threeDimensional,
|
|
21
|
+
threeDimensional = _props$threeDimension === void 0 ? true : _props$threeDimension,
|
|
22
|
+
_props$swipeDuration = props.swipeDuration,
|
|
23
|
+
swipeDuration = _props$swipeDuration === void 0 ? 1000 : _props$swipeDuration,
|
|
24
|
+
chooseItem = props.chooseItem;
|
|
29
25
|
var touch = useTouch();
|
|
30
|
-
var DEFAULT_DURATION = 200;
|
|
26
|
+
var DEFAULT_DURATION = 200;
|
|
27
|
+
// 触发惯性滑动条件:
|
|
31
28
|
// 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_TIME` 且 move
|
|
32
29
|
// 距离大于 `MOMENTUM_DISTANCE` 时,执行惯性滑动
|
|
33
|
-
|
|
34
30
|
var INERTIA_TIME = 300;
|
|
35
31
|
var INERTIA_DISTANCE = 15;
|
|
36
|
-
|
|
37
32
|
var _useState = useState(1),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
currIndex = _useState2[0],
|
|
35
|
+
setCurrIndex = _useState2[1];
|
|
42
36
|
var lineSpacing = 36;
|
|
43
|
-
|
|
44
37
|
var _useState3 = useState(0),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
+
touchTime = _useState4[0],
|
|
40
|
+
setTouchTime = _useState4[1];
|
|
49
41
|
var _useState5 = useState('0deg'),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
43
|
+
touchDeg = _useState6[0],
|
|
44
|
+
setTouchDeg = _useState6[1];
|
|
54
45
|
var rotation = 20;
|
|
55
46
|
var moving = useRef(false);
|
|
56
47
|
var timer;
|
|
57
48
|
useRef(null);
|
|
58
49
|
var rollerRef = useRef(null);
|
|
59
50
|
var pickerSlotRef = useRef(null);
|
|
60
|
-
|
|
61
51
|
var _useState7 = useState(0),
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
52
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
53
|
+
startTime = _useState8[0],
|
|
54
|
+
setStartTime = _useState8[1];
|
|
66
55
|
var _useState9 = useState(0),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
56
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
57
|
+
startY = _useState10[0],
|
|
58
|
+
setStartY = _useState10[1];
|
|
71
59
|
var transformY = useRef(0);
|
|
72
|
-
|
|
73
60
|
var _useState11 = useState(0),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
61
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
62
|
+
scrollDistance = _useState12[0],
|
|
63
|
+
setScrollDistance = _useState12[1];
|
|
78
64
|
var isHidden = function isHidden(index) {
|
|
79
65
|
if (index >= currIndex + 8 || index <= currIndex - 8) {
|
|
80
66
|
return true;
|
|
81
67
|
}
|
|
82
|
-
|
|
83
68
|
return false;
|
|
84
69
|
};
|
|
85
|
-
|
|
86
70
|
var setTransform = function setTransform() {
|
|
87
71
|
var translateY = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
88
72
|
var type = arguments.length > 1 ? arguments[1] : undefined;
|
|
89
73
|
var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_DURATION;
|
|
90
74
|
var deg = arguments.length > 3 ? arguments[3] : undefined;
|
|
91
75
|
var nTime = time;
|
|
92
|
-
|
|
93
76
|
if (type !== 'end') {
|
|
94
77
|
nTime = 0;
|
|
95
78
|
}
|
|
96
|
-
|
|
97
79
|
setTouchTime(nTime);
|
|
98
80
|
setTouchDeg(deg);
|
|
99
81
|
setScrollDistance(translateY);
|
|
100
82
|
};
|
|
101
|
-
|
|
102
83
|
var setMove = function setMove(move, type, time) {
|
|
103
84
|
var updateMove = move + transformY.current;
|
|
104
|
-
|
|
105
85
|
if (type === 'end') {
|
|
106
86
|
// 限定滚动距离
|
|
107
87
|
if (updateMove > 0) {
|
|
108
88
|
updateMove = 0;
|
|
109
89
|
}
|
|
110
|
-
|
|
111
90
|
if (updateMove < -(listData.length - 1) * lineSpacing) {
|
|
112
91
|
updateMove = -(listData.length - 1) * lineSpacing;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
92
|
+
}
|
|
93
|
+
// 设置滚动距离为lineSpacing的倍数值
|
|
116
94
|
var endMove = Math.round(updateMove / lineSpacing) * lineSpacing;
|
|
117
95
|
var deg = "".concat((Math.abs(Math.round(endMove / lineSpacing)) + 1) * rotation, "deg");
|
|
118
96
|
setTransform(endMove, type, time, deg);
|
|
119
97
|
setCurrIndex(Math.abs(Math.round(endMove / lineSpacing)) + 1);
|
|
120
98
|
} else {
|
|
121
99
|
var _deg = 0;
|
|
122
|
-
var currentDeg = (-updateMove / lineSpacing + 1) * rotation;
|
|
123
|
-
|
|
100
|
+
var currentDeg = (-updateMove / lineSpacing + 1) * rotation;
|
|
101
|
+
// picker 滚动的最大角度
|
|
124
102
|
var maxDeg = (listData.length + 1) * rotation;
|
|
125
103
|
var minDeg = 0;
|
|
126
104
|
_deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);
|
|
127
|
-
|
|
128
105
|
if (minDeg < _deg && _deg < maxDeg) {
|
|
129
106
|
setTransform(updateMove, '', undefined, "".concat(_deg, "deg"));
|
|
130
107
|
setCurrIndex(Math.abs(Math.round(updateMove / lineSpacing)) + 1);
|
|
131
108
|
}
|
|
132
109
|
}
|
|
133
110
|
};
|
|
134
|
-
|
|
135
111
|
var setChooseValue = function setChooseValue(move) {
|
|
136
112
|
chooseItem && chooseItem(listData === null || listData === void 0 ? void 0 : listData[Math.round(-move / lineSpacing)], keyIndex);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
|
|
113
|
+
};
|
|
114
|
+
// 开始滚动
|
|
140
115
|
var touchStart = function touchStart(event) {
|
|
141
116
|
touch.start(event);
|
|
142
117
|
setStartY(touch.deltaY);
|
|
143
118
|
setStartTime(Date.now());
|
|
144
119
|
transformY.current = scrollDistance;
|
|
145
120
|
};
|
|
146
|
-
|
|
147
121
|
var touchMove = function touchMove(event) {
|
|
148
122
|
touch.move(event);
|
|
149
|
-
|
|
150
123
|
if (touch.isVertical) {
|
|
151
124
|
moving.current = true;
|
|
152
125
|
preventDefault(event, true);
|
|
153
126
|
}
|
|
154
|
-
|
|
155
127
|
var move = touch.deltaY - startY;
|
|
156
128
|
setMove(move);
|
|
157
129
|
};
|
|
158
|
-
|
|
159
130
|
var touchEnd = function touchEnd(event) {
|
|
160
131
|
if (!moving.current) return;
|
|
161
132
|
var move = touch.deltaY - startY;
|
|
162
|
-
var moveTime = Date.now() - startTime;
|
|
163
|
-
|
|
133
|
+
var moveTime = Date.now() - startTime;
|
|
134
|
+
// 区分是否为惯性滚动
|
|
164
135
|
if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {
|
|
165
136
|
// 惯性滚动
|
|
166
137
|
var distance = momentum(move, moveTime);
|
|
@@ -168,34 +139,29 @@ var InternalPickerSlot = function InternalPickerSlot(props, ref) {
|
|
|
168
139
|
} else {
|
|
169
140
|
setMove(move, 'end');
|
|
170
141
|
}
|
|
171
|
-
|
|
172
142
|
setTimeout(function () {
|
|
173
143
|
// moving.current = false
|
|
174
144
|
touch.reset();
|
|
175
145
|
}, 0);
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
|
|
146
|
+
};
|
|
147
|
+
// 惯性滚动 距离
|
|
179
148
|
var momentum = function momentum(distance, duration) {
|
|
180
|
-
var nDistance = distance;
|
|
181
|
-
|
|
182
|
-
var speed = Math.abs(nDistance / duration);
|
|
183
|
-
|
|
149
|
+
var nDistance = distance;
|
|
150
|
+
// 惯性滚动的速度
|
|
151
|
+
var speed = Math.abs(nDistance / duration);
|
|
152
|
+
// 惯性滚动的距离
|
|
184
153
|
nDistance = speed / 0.003 * (nDistance < 0 ? -1 : 1);
|
|
185
154
|
return nDistance;
|
|
186
155
|
};
|
|
187
|
-
|
|
188
156
|
var modifyStatus = function modifyStatus(type, val) {
|
|
189
157
|
var value = val || defaultValue;
|
|
190
158
|
var index = -1;
|
|
191
|
-
|
|
192
159
|
if (value) {
|
|
193
160
|
listData.some(function (item, idx) {
|
|
194
161
|
if (item.value === value) {
|
|
195
162
|
index = idx;
|
|
196
163
|
return true;
|
|
197
164
|
}
|
|
198
|
-
|
|
199
165
|
return false;
|
|
200
166
|
});
|
|
201
167
|
} else {
|
|
@@ -205,46 +171,39 @@ var InternalPickerSlot = function InternalPickerSlot(props, ref) {
|
|
|
205
171
|
}
|
|
206
172
|
});
|
|
207
173
|
}
|
|
208
|
-
|
|
209
174
|
setCurrIndex(index === -1 ? 1 : index + 1);
|
|
210
175
|
var move = index === -1 ? 0 : index * lineSpacing;
|
|
211
176
|
type && setChooseValue(-move);
|
|
212
177
|
setMove(-move);
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
|
|
178
|
+
};
|
|
179
|
+
// 惯性滚动结束
|
|
216
180
|
var stopMomentum = function stopMomentum() {
|
|
217
181
|
moving.current = false;
|
|
218
182
|
setTouchTime(0);
|
|
219
183
|
setChooseValue(scrollDistance);
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
|
|
184
|
+
};
|
|
185
|
+
// 阻止默认事件
|
|
223
186
|
var preventDefault = function preventDefault(event, isStopPropagation) {
|
|
224
187
|
/* istanbul ignore else */
|
|
225
188
|
if (typeof event.cancelable !== 'boolean' || event.cancelable) {
|
|
226
189
|
event.preventDefault();
|
|
227
190
|
}
|
|
228
|
-
|
|
229
191
|
if (isStopPropagation) {
|
|
230
192
|
event.stopPropagation();
|
|
231
193
|
}
|
|
232
194
|
};
|
|
233
|
-
|
|
234
195
|
var touchRollerStyle = function touchRollerStyle() {
|
|
235
196
|
return {
|
|
236
197
|
transition: "transform ".concat(touchTime, "ms cubic-bezier(0.17, 0.89, 0.45, 1)"),
|
|
237
198
|
transform: "rotate3d(1, 0, 0, ".concat(touchDeg, ")")
|
|
238
199
|
};
|
|
239
200
|
};
|
|
240
|
-
|
|
241
201
|
var touchTileStyle = function touchTileStyle() {
|
|
242
202
|
return {
|
|
243
203
|
transition: "transform ".concat(touchTime, "ms cubic-bezier(0.17, 0.89, 0.45, 1)"),
|
|
244
204
|
transform: "translate3d(0, ".concat(scrollDistance, "px, 0)")
|
|
245
205
|
};
|
|
246
206
|
};
|
|
247
|
-
|
|
248
207
|
useEffect(function () {
|
|
249
208
|
setScrollDistance(0);
|
|
250
209
|
transformY.current = 0;
|
|
@@ -289,9 +248,7 @@ var InternalPickerSlot = function InternalPickerSlot(props, ref) {
|
|
|
289
248
|
className: "nut-picker-indicator"
|
|
290
249
|
}));
|
|
291
250
|
};
|
|
292
|
-
|
|
293
251
|
var PickerSlot = React__default.forwardRef(InternalPickerSlot);
|
|
294
|
-
|
|
295
252
|
function useRefs() {
|
|
296
253
|
var refs = React__default.useRef([]);
|
|
297
254
|
var setRefs = React__default.useCallback(function (index) {
|
|
@@ -304,103 +261,84 @@ function useRefs() {
|
|
|
304
261
|
}, []);
|
|
305
262
|
return [refs.current, setRefs, reset];
|
|
306
263
|
}
|
|
307
|
-
|
|
308
264
|
var InternalPicker = function InternalPicker(props, ref) {
|
|
309
265
|
var _useConfig = useConfig(),
|
|
310
|
-
|
|
311
|
-
|
|
266
|
+
locale = _useConfig.locale;
|
|
312
267
|
var isVisible = props.isVisible,
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
268
|
+
title = props.title,
|
|
269
|
+
_props$listData2 = props.listData,
|
|
270
|
+
listData = _props$listData2 === void 0 ? [] : _props$listData2,
|
|
271
|
+
defaultValueData = props.defaultValueData,
|
|
272
|
+
onConfirm = props.onConfirm,
|
|
273
|
+
onClose = props.onClose,
|
|
274
|
+
onCloseUpdate = props.onCloseUpdate,
|
|
275
|
+
onChange = props.onChange,
|
|
276
|
+
className = props.className,
|
|
277
|
+
style = props.style,
|
|
278
|
+
threeDimensional = props.threeDimensional,
|
|
279
|
+
swipeDuration = props.swipeDuration,
|
|
280
|
+
rest = _objectWithoutProperties(props, _excluded);
|
|
327
281
|
var _useState13 = useState([]),
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
282
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
283
|
+
chooseValueData = _useState14[0],
|
|
284
|
+
setchooseValueData = _useState14[1]; // 选择的数据的 value 值, 每一条数据的 value 值
|
|
333
285
|
var _useState15 = useState(0),
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
286
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
287
|
+
columnIndex = _useState16[0],
|
|
288
|
+
setcolumnIndex = _useState16[1]; // 选中列
|
|
339
289
|
var pickerRef = useRef(null);
|
|
340
|
-
|
|
341
290
|
var _useRefs = useRefs(),
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
291
|
+
_useRefs2 = _slicedToArray(_useRefs, 2),
|
|
292
|
+
refs = _useRefs2[0],
|
|
293
|
+
setRefs = _useRefs2[1];
|
|
346
294
|
var _useState17 = useState([]),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
295
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
296
|
+
columnsList = _useState18[0],
|
|
297
|
+
setColumnsList = _useState18[1]; // 格式化后每一列的数据
|
|
352
298
|
var b = cn('picker');
|
|
353
|
-
var isConfirmEvent = useRef(false);
|
|
354
|
-
|
|
299
|
+
var isConfirmEvent = useRef(false);
|
|
300
|
+
// 默认值修改
|
|
355
301
|
useEffect(function () {
|
|
356
302
|
if (defaultValueData && defaultValueData.length !== 0 && defaultValueData.toString() !== chooseValueData.toString()) {
|
|
357
303
|
var data = _toConsumableArray(defaultValueData);
|
|
358
|
-
|
|
359
304
|
setchooseValueData(data);
|
|
360
305
|
setColumnsList(normalListData());
|
|
361
306
|
}
|
|
362
|
-
}, [defaultValueData]);
|
|
363
|
-
|
|
307
|
+
}, [defaultValueData]);
|
|
308
|
+
// 选中值进行修改
|
|
364
309
|
useEffect(function () {
|
|
365
310
|
console.log('修改');
|
|
366
311
|
onChange && onChange(columnIndex, chooseValueData, selectedOptions());
|
|
367
|
-
|
|
368
312
|
if (isConfirmEvent.current) {
|
|
369
313
|
isConfirmEvent.current = false;
|
|
370
314
|
onConfirm && onConfirm(chooseValueData, selectedOptions());
|
|
371
315
|
}
|
|
372
|
-
}, [chooseValueData]);
|
|
373
|
-
|
|
316
|
+
}, [chooseValueData]);
|
|
317
|
+
// 列表格式修改
|
|
374
318
|
useEffect(function () {
|
|
375
319
|
init();
|
|
376
320
|
}, [listData]);
|
|
377
|
-
|
|
378
321
|
var closeActionSheet = function closeActionSheet() {
|
|
379
322
|
onClose && onClose(chooseValueData, selectedOptions());
|
|
380
323
|
onCloseUpdate && onCloseUpdate(chooseValueData, selectedOptions(), pickerRef);
|
|
381
|
-
};
|
|
382
|
-
|
|
383
|
-
|
|
324
|
+
};
|
|
325
|
+
// 点击确定
|
|
384
326
|
var confirm = function confirm() {
|
|
385
327
|
var movings = false;
|
|
386
328
|
refs.forEach(function (_ref) {
|
|
387
329
|
if (_ref.moving) movings = true;
|
|
388
|
-
|
|
389
330
|
_ref.stopMomentum();
|
|
390
331
|
});
|
|
391
|
-
|
|
392
332
|
if (movings) {
|
|
393
333
|
isConfirmEvent.current = true;
|
|
394
334
|
} else {
|
|
395
335
|
onConfirm && onConfirm(chooseValueData, selectedOptions());
|
|
396
336
|
}
|
|
397
|
-
|
|
398
337
|
onClose && onClose(chooseValueData, selectedOptions());
|
|
399
338
|
setTimeout(function () {
|
|
400
339
|
isConfirmEvent.current = false;
|
|
401
340
|
}, 0);
|
|
402
341
|
};
|
|
403
|
-
|
|
404
342
|
var selectedOptions = function selectedOptions() {
|
|
405
343
|
var optins = [];
|
|
406
344
|
columnsList.map(function (column, index) {
|
|
@@ -408,19 +346,16 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
408
346
|
currOptions = column.filter(function (item) {
|
|
409
347
|
return item.value === chooseValueData[index];
|
|
410
348
|
});
|
|
411
|
-
|
|
412
349
|
if (currOptions[0]) {
|
|
413
350
|
optins.push(currOptions[0]);
|
|
414
351
|
} else {
|
|
415
352
|
column[0] && optins.push(column[0]);
|
|
416
353
|
}
|
|
417
|
-
|
|
418
354
|
return column;
|
|
419
355
|
});
|
|
420
356
|
return optins;
|
|
421
|
-
};
|
|
422
|
-
|
|
423
|
-
|
|
357
|
+
};
|
|
358
|
+
// 选择每一列的数据
|
|
424
359
|
var _chooseItem = function chooseItem(option, columnIndex) {
|
|
425
360
|
if (option && Object.keys(option).length) {
|
|
426
361
|
// 是否移动后是否与之前有差异
|
|
@@ -430,71 +365,57 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
430
365
|
setchooseValueData(_toConsumableArray(chooseValueData));
|
|
431
366
|
var index = columnIndex;
|
|
432
367
|
var cursor = option;
|
|
433
|
-
|
|
434
368
|
while (cursor && cursor.children && cursor.children[0]) {
|
|
435
369
|
chooseValueData[index + 1] = cursor.children[0].value;
|
|
436
370
|
setchooseValueData(_toConsumableArray(chooseValueData));
|
|
437
371
|
index++;
|
|
438
372
|
var cc = cursor.children[0];
|
|
439
373
|
cursor = cc;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
|
|
374
|
+
}
|
|
375
|
+
// 当前改变列的下一列 children 值为空
|
|
443
376
|
if (cursor && cursor.children) {
|
|
444
377
|
chooseValueData[index + 1] = '';
|
|
445
378
|
setchooseValueData(_toConsumableArray(chooseValueData));
|
|
446
379
|
}
|
|
447
|
-
|
|
448
380
|
setColumnsList(normalListData());
|
|
449
381
|
} else {
|
|
450
382
|
setchooseValueData(function (data) {
|
|
451
383
|
var cdata = _toConsumableArray(data);
|
|
452
|
-
|
|
453
384
|
cdata[columnIndex] = Object.prototype.hasOwnProperty.call(option, 'value') ? option.value : '';
|
|
454
385
|
return cdata;
|
|
455
386
|
});
|
|
456
387
|
}
|
|
457
|
-
|
|
458
388
|
setcolumnIndex(columnIndex);
|
|
459
389
|
}
|
|
460
390
|
}
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
|
|
391
|
+
};
|
|
392
|
+
// 传入的数据格式化
|
|
464
393
|
var normalListData = function normalListData() {
|
|
465
394
|
var type = columnsType();
|
|
466
|
-
|
|
467
395
|
switch (type) {
|
|
468
396
|
case 'multiple':
|
|
469
397
|
return listData;
|
|
470
|
-
|
|
471
398
|
case 'cascade':
|
|
472
399
|
// 级联数据处理
|
|
473
400
|
return formatCascade(listData, chooseValueData);
|
|
474
|
-
|
|
475
401
|
default:
|
|
476
402
|
return [listData];
|
|
477
403
|
}
|
|
478
|
-
};
|
|
479
|
-
|
|
480
|
-
|
|
404
|
+
};
|
|
405
|
+
// 每一列的类型
|
|
481
406
|
var columnsType = function columnsType() {
|
|
482
407
|
var firstColumn = listData[0];
|
|
483
|
-
|
|
484
408
|
if (firstColumn) {
|
|
485
409
|
if (Array.isArray(firstColumn)) {
|
|
486
410
|
return 'multiple';
|
|
487
411
|
}
|
|
488
|
-
|
|
489
412
|
if ('children' in firstColumn) {
|
|
490
413
|
return 'cascade';
|
|
491
414
|
}
|
|
492
415
|
}
|
|
493
|
-
|
|
494
416
|
return 'single';
|
|
495
|
-
};
|
|
496
|
-
|
|
497
|
-
|
|
417
|
+
};
|
|
418
|
+
// 级联数据格式化
|
|
498
419
|
var formatCascade = function formatCascade(columns, defaultValues) {
|
|
499
420
|
var formatted = [];
|
|
500
421
|
var cursor = {
|
|
@@ -503,7 +424,6 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
503
424
|
children: columns
|
|
504
425
|
};
|
|
505
426
|
var columnIndex = 0;
|
|
506
|
-
|
|
507
427
|
var _loop = function _loop() {
|
|
508
428
|
var options = cursor.children;
|
|
509
429
|
var value = defaultValues[columnIndex];
|
|
@@ -515,14 +435,11 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
515
435
|
columnIndex++;
|
|
516
436
|
formatted.push(options);
|
|
517
437
|
};
|
|
518
|
-
|
|
519
438
|
while (cursor && cursor.children) {
|
|
520
439
|
_loop();
|
|
521
440
|
}
|
|
522
|
-
|
|
523
441
|
return formatted;
|
|
524
442
|
};
|
|
525
|
-
|
|
526
443
|
var init = function init() {
|
|
527
444
|
var data = [];
|
|
528
445
|
var normalData = normalListData();
|
|
@@ -531,12 +448,10 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
531
448
|
item[0] && data.push(item[0].value);
|
|
532
449
|
return item;
|
|
533
450
|
});
|
|
534
|
-
|
|
535
451
|
if (!defaultValueData && chooseValueData.length === 0) {
|
|
536
452
|
setchooseValueData([].concat(data));
|
|
537
453
|
}
|
|
538
454
|
};
|
|
539
|
-
|
|
540
455
|
var renderToolbar = function renderToolbar() {
|
|
541
456
|
return React__default.createElement("div", {
|
|
542
457
|
className: b('control')
|
|
@@ -552,7 +467,6 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
552
467
|
onClick: confirm
|
|
553
468
|
}, locale.confirm));
|
|
554
469
|
};
|
|
555
|
-
|
|
556
470
|
return React__default.createElement(Popup, {
|
|
557
471
|
visible: isVisible,
|
|
558
472
|
position: "bottom",
|
|
@@ -580,6 +494,5 @@ var InternalPicker = function InternalPicker(props, ref) {
|
|
|
580
494
|
});
|
|
581
495
|
}))));
|
|
582
496
|
};
|
|
583
|
-
|
|
584
497
|
var Picker = React__default.forwardRef(InternalPicker);
|
|
585
498
|
export { Picker as default };
|