@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/Picker.js
CHANGED
|
@@ -1,29 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
|
-
var _excluded = ["children", "visible", "title", "options", "closeOnOverlayClick", "popupProps", "defaultValue", "className", "style", "threeDimensional", "duration", "onConfirm", "onCancel", "onClose", "afterClose", "onChange"];
|
|
6
|
-
function ownKeys(e, r) {
|
|
7
|
-
var t = Object.keys(e);
|
|
8
|
-
if (Object.getOwnPropertySymbols) {
|
|
9
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
10
|
-
r && (o = o.filter(function(r2) {
|
|
11
|
-
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
12
|
-
})), t.push.apply(t, o);
|
|
13
|
-
}
|
|
14
|
-
return t;
|
|
15
|
-
}
|
|
16
|
-
function _objectSpread(e) {
|
|
17
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
18
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
19
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
20
|
-
_defineProperty(e, r2, t[r2]);
|
|
21
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
22
|
-
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return e;
|
|
26
|
-
}
|
|
1
|
+
import { _ as __rest } from "./tslib.es6.js";
|
|
27
2
|
import React__default, { useState, useRef, useEffect, useImperativeHandle } from "react";
|
|
28
3
|
import classNames from "classnames";
|
|
29
4
|
import { P as Popup } from "./popup2.js";
|
|
@@ -34,35 +9,33 @@ import { u as useRefs } from "./use-refs.js";
|
|
|
34
9
|
import { useConfig } from "./ConfigProvider.js";
|
|
35
10
|
import { u as usePropsValue } from "./use-props-value.js";
|
|
36
11
|
import { C as ComponentDefaults } from "./typings.js";
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
12
|
+
const InternalPickerPanel = (props, ref) => {
|
|
13
|
+
const { keyIndex = 0, defaultValue, options = [], threeDimensional = true, duration = 1e3, chooseItem } = props;
|
|
14
|
+
const touch = useTouch();
|
|
15
|
+
const DEFAULT_DURATION = 200;
|
|
16
|
+
const INERTIA_TIME = 300;
|
|
17
|
+
const INERTIA_DISTANCE = 15;
|
|
18
|
+
const [currIndex, setCurrIndex] = useState(1);
|
|
19
|
+
const lineSpacing = 36;
|
|
20
|
+
const [touchTime, setTouchTime] = useState(0);
|
|
21
|
+
const [touchDeg, setTouchDeg] = useState("0deg");
|
|
22
|
+
const rotation = 20;
|
|
23
|
+
const moving = useRef(false);
|
|
24
|
+
let timer;
|
|
25
|
+
const rollerRef = useRef(null);
|
|
26
|
+
const PickerPanelRef = useRef(null);
|
|
27
|
+
const [startTime, setStartTime] = useState(0);
|
|
28
|
+
const [startY, setStartY] = useState(0);
|
|
29
|
+
const transformY = useRef(0);
|
|
30
|
+
const [scrollDistance, setScrollDistance] = useState(0);
|
|
31
|
+
const isHidden = (index) => {
|
|
57
32
|
if (index >= currIndex + 8 || index <= currIndex - 8) {
|
|
58
33
|
return true;
|
|
59
34
|
}
|
|
60
35
|
return false;
|
|
61
36
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var translateY = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
|
|
65
|
-
var nTime = time;
|
|
37
|
+
const setTransform = (type, deg, time = DEFAULT_DURATION, translateY = 0) => {
|
|
38
|
+
let nTime = time;
|
|
66
39
|
if (type !== "end") {
|
|
67
40
|
nTime = 0;
|
|
68
41
|
}
|
|
@@ -70,8 +43,8 @@ var InternalPickerPanel = function InternalPickerPanel2(props, ref) {
|
|
|
70
43
|
setTouchDeg(deg);
|
|
71
44
|
setScrollDistance(translateY);
|
|
72
45
|
};
|
|
73
|
-
|
|
74
|
-
|
|
46
|
+
const setMove = (move, type, time) => {
|
|
47
|
+
let updateMove = move + transformY.current;
|
|
75
48
|
if (type === "end") {
|
|
76
49
|
if (updateMove > 0) {
|
|
77
50
|
updateMove = 0;
|
|
@@ -79,66 +52,66 @@ var InternalPickerPanel = function InternalPickerPanel2(props, ref) {
|
|
|
79
52
|
if (updateMove < -(options.length - 1) * lineSpacing) {
|
|
80
53
|
updateMove = -(options.length - 1) * lineSpacing;
|
|
81
54
|
}
|
|
82
|
-
|
|
83
|
-
|
|
55
|
+
const endMove = Math.round(updateMove / lineSpacing) * lineSpacing;
|
|
56
|
+
const deg = `${(Math.abs(Math.round(endMove / lineSpacing)) + 1) * rotation}deg`;
|
|
84
57
|
setTransform(type, deg, time, endMove);
|
|
85
58
|
setCurrIndex(Math.abs(Math.round(endMove / lineSpacing)) + 1);
|
|
86
59
|
} else {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (minDeg <
|
|
93
|
-
setTransform("",
|
|
60
|
+
let deg = 0;
|
|
61
|
+
const currentDeg = (-updateMove / lineSpacing + 1) * rotation;
|
|
62
|
+
const maxDeg = (options.length + 1) * rotation;
|
|
63
|
+
const minDeg = 0;
|
|
64
|
+
deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);
|
|
65
|
+
if (minDeg < deg && deg < maxDeg) {
|
|
66
|
+
setTransform("", `${deg}deg`, void 0, updateMove);
|
|
94
67
|
setCurrIndex(Math.abs(Math.round(updateMove / lineSpacing)) + 1);
|
|
95
68
|
}
|
|
96
69
|
}
|
|
97
70
|
};
|
|
98
|
-
|
|
99
|
-
chooseItem === null || chooseItem === void 0
|
|
71
|
+
const setChooseValue = (move) => {
|
|
72
|
+
chooseItem === null || chooseItem === void 0 ? void 0 : chooseItem(options === null || options === void 0 ? void 0 : options[Math.round(-move / lineSpacing)], keyIndex);
|
|
100
73
|
};
|
|
101
|
-
|
|
74
|
+
const touchStart = (event) => {
|
|
102
75
|
touch.start(event);
|
|
103
76
|
setStartY(touch.deltaY.current);
|
|
104
77
|
setStartTime(Date.now());
|
|
105
78
|
transformY.current = scrollDistance;
|
|
106
79
|
};
|
|
107
|
-
|
|
80
|
+
const touchMove = (event) => {
|
|
108
81
|
touch.move(event);
|
|
109
82
|
if (touch.isVertical) {
|
|
110
83
|
moving.current = true;
|
|
111
84
|
preventDefault(event, true);
|
|
112
85
|
}
|
|
113
|
-
|
|
86
|
+
const move = touch.deltaY.current - startY;
|
|
114
87
|
setMove(move);
|
|
115
88
|
};
|
|
116
|
-
|
|
89
|
+
const touchEnd = () => {
|
|
117
90
|
if (!moving.current)
|
|
118
91
|
return;
|
|
119
|
-
|
|
120
|
-
|
|
92
|
+
const move = touch.deltaY.current - startY;
|
|
93
|
+
const moveTime = Date.now() - startTime;
|
|
121
94
|
if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {
|
|
122
|
-
|
|
95
|
+
const distance = momentum(move, moveTime);
|
|
123
96
|
setMove(distance, "end", +duration);
|
|
124
97
|
} else {
|
|
125
98
|
setMove(move, "end");
|
|
126
99
|
}
|
|
127
|
-
setTimeout(
|
|
100
|
+
setTimeout(() => {
|
|
128
101
|
touch.reset();
|
|
129
102
|
}, 0);
|
|
130
103
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
104
|
+
const momentum = (distance, duration2) => {
|
|
105
|
+
let nDistance = distance;
|
|
106
|
+
const speed = Math.abs(nDistance / duration2);
|
|
134
107
|
nDistance = speed / 3e-3 * (nDistance < 0 ? -1 : 1);
|
|
135
108
|
return nDistance;
|
|
136
109
|
};
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
110
|
+
const modifyStatus = (type, val) => {
|
|
111
|
+
const value = val || defaultValue;
|
|
112
|
+
let index = -1;
|
|
140
113
|
if (value) {
|
|
141
|
-
options.some(
|
|
114
|
+
options.some((item, idx) => {
|
|
142
115
|
if (item.value === value) {
|
|
143
116
|
index = idx;
|
|
144
117
|
return true;
|
|
@@ -146,23 +119,23 @@ var InternalPickerPanel = function InternalPickerPanel2(props, ref) {
|
|
|
146
119
|
return false;
|
|
147
120
|
});
|
|
148
121
|
} else {
|
|
149
|
-
options.forEach(
|
|
122
|
+
options.forEach((item, i) => {
|
|
150
123
|
if (item.value === defaultValue) {
|
|
151
124
|
index = i;
|
|
152
125
|
}
|
|
153
126
|
});
|
|
154
127
|
}
|
|
155
128
|
setCurrIndex(index === -1 ? 1 : index + 1);
|
|
156
|
-
|
|
129
|
+
const move = index === -1 ? 0 : index * lineSpacing;
|
|
157
130
|
type && setChooseValue(-move);
|
|
158
131
|
setMove(-move);
|
|
159
132
|
};
|
|
160
|
-
|
|
133
|
+
const stopMomentum = () => {
|
|
161
134
|
moving.current = false;
|
|
162
135
|
setTouchTime(0);
|
|
163
136
|
setChooseValue(scrollDistance);
|
|
164
137
|
};
|
|
165
|
-
|
|
138
|
+
const preventDefault = (event, isStopPropagation) => {
|
|
166
139
|
if (typeof event.cancelable !== "boolean" || event.cancelable) {
|
|
167
140
|
event.preventDefault();
|
|
168
141
|
}
|
|
@@ -170,155 +143,133 @@ var InternalPickerPanel = function InternalPickerPanel2(props, ref) {
|
|
|
170
143
|
event.stopPropagation();
|
|
171
144
|
}
|
|
172
145
|
};
|
|
173
|
-
|
|
146
|
+
const touchRollerStyle = () => {
|
|
174
147
|
return {
|
|
175
|
-
transition:
|
|
176
|
-
transform:
|
|
148
|
+
transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,
|
|
149
|
+
transform: `rotate3d(1, 0, 0, ${touchDeg})`
|
|
177
150
|
};
|
|
178
151
|
};
|
|
179
|
-
|
|
152
|
+
const touchTileStyle = () => {
|
|
180
153
|
return {
|
|
181
|
-
transition:
|
|
182
|
-
transform:
|
|
154
|
+
transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,
|
|
155
|
+
transform: `translate3d(0, ${scrollDistance}px, 0)`
|
|
183
156
|
};
|
|
184
157
|
};
|
|
185
|
-
useEffect(
|
|
158
|
+
useEffect(() => {
|
|
186
159
|
setScrollDistance(0);
|
|
187
160
|
transformY.current = 0;
|
|
188
161
|
modifyStatus(false);
|
|
189
|
-
return
|
|
162
|
+
return () => {
|
|
190
163
|
clearTimeout(timer);
|
|
191
164
|
};
|
|
192
165
|
}, [options]);
|
|
193
|
-
useImperativeHandle(ref,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
var _PickerPanelRef$curre4, _PickerPanelRef$curre5, _PickerPanelRef$curre6;
|
|
209
|
-
(_PickerPanelRef$curre4 = PickerPanelRef.current) === null || _PickerPanelRef$curre4 === void 0 || _PickerPanelRef$curre4.removeEventListener("touchstart", touchStart);
|
|
210
|
-
(_PickerPanelRef$curre5 = PickerPanelRef.current) === null || _PickerPanelRef$curre5 === void 0 || _PickerPanelRef$curre5.removeEventListener("touchmove", touchMove);
|
|
211
|
-
(_PickerPanelRef$curre6 = PickerPanelRef.current) === null || _PickerPanelRef$curre6 === void 0 || _PickerPanelRef$curre6.removeEventListener("touchend", touchEnd);
|
|
166
|
+
useImperativeHandle(ref, () => ({
|
|
167
|
+
stopMomentum,
|
|
168
|
+
moving: moving.current
|
|
169
|
+
}));
|
|
170
|
+
useEffect(() => {
|
|
171
|
+
var _a, _b, _c;
|
|
172
|
+
const options2 = passiveSupported ? { passive: false } : false;
|
|
173
|
+
(_a = PickerPanelRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener("touchstart", touchStart, options2);
|
|
174
|
+
(_b = PickerPanelRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener("touchmove", touchMove, options2);
|
|
175
|
+
(_c = PickerPanelRef.current) === null || _c === void 0 ? void 0 : _c.addEventListener("touchend", touchEnd, options2);
|
|
176
|
+
return () => {
|
|
177
|
+
var _a2, _b2, _c2;
|
|
178
|
+
(_a2 = PickerPanelRef.current) === null || _a2 === void 0 ? void 0 : _a2.removeEventListener("touchstart", touchStart);
|
|
179
|
+
(_b2 = PickerPanelRef.current) === null || _b2 === void 0 ? void 0 : _b2.removeEventListener("touchmove", touchMove);
|
|
180
|
+
(_c2 = PickerPanelRef.current) === null || _c2 === void 0 ? void 0 : _c2.removeEventListener("touchend", touchEnd);
|
|
212
181
|
};
|
|
213
182
|
});
|
|
214
|
-
return React__default.createElement(
|
|
215
|
-
|
|
216
|
-
ref: PickerPanelRef,
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}), React__default.createElement("div", {
|
|
241
|
-
className: "nut-picker-indicator"
|
|
242
|
-
}));
|
|
183
|
+
return React__default.createElement(
|
|
184
|
+
"div",
|
|
185
|
+
{ className: "nut-picker-list", ref: PickerPanelRef, onTouchStart: touchStart, onTouchMove: touchMove, onTouchEnd: touchEnd },
|
|
186
|
+
React__default.createElement(
|
|
187
|
+
"div",
|
|
188
|
+
{ className: "nut-picker-roller", ref: rollerRef, style: threeDimensional ? touchRollerStyle() : touchTileStyle(), onTransitionEnd: stopMomentum },
|
|
189
|
+
threeDimensional && options.map((item, index) => {
|
|
190
|
+
return React__default.createElement(
|
|
191
|
+
"div",
|
|
192
|
+
{ className: `nut-picker-roller-item ${isHidden(index + 1) && "nut-picker-roller-item-hidden"}`, style: {
|
|
193
|
+
transform: `rotate3d(1, 0, 0, ${-rotation * (index + 1)}deg) translate3d(0px, 0px, 104px)`
|
|
194
|
+
}, key: item.value ? item.value : index },
|
|
195
|
+
React__default.createElement(React__default.Fragment, null, item.text)
|
|
196
|
+
);
|
|
197
|
+
}),
|
|
198
|
+
!threeDimensional && options.map((item, index) => {
|
|
199
|
+
return React__default.createElement(
|
|
200
|
+
"div",
|
|
201
|
+
{ className: "nut-picker-roller-item-title", key: item.value ? item.value : index },
|
|
202
|
+
React__default.createElement(React__default.Fragment, null, item.text)
|
|
203
|
+
);
|
|
204
|
+
})
|
|
205
|
+
),
|
|
206
|
+
React__default.createElement("div", { className: "nut-picker-mask" }),
|
|
207
|
+
React__default.createElement("div", { className: "nut-picker-indicator" })
|
|
208
|
+
);
|
|
243
209
|
};
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
duration: 1e3
|
|
254
|
-
});
|
|
255
|
-
var InternalPicker = function InternalPicker2(props, ref) {
|
|
256
|
-
var _useConfig = useConfig(), locale = _useConfig.locale;
|
|
257
|
-
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), children = _defaultProps$props.children, visible = _defaultProps$props.visible, title = _defaultProps$props.title, _defaultProps$props$o = _defaultProps$props.options, options = _defaultProps$props$o === void 0 ? [] : _defaultProps$props$o, closeOnOverlayClick = _defaultProps$props.closeOnOverlayClick, _defaultProps$props$p = _defaultProps$props.popupProps, popupProps = _defaultProps$props$p === void 0 ? {} : _defaultProps$props$p, _defaultProps$props$d = _defaultProps$props.defaultValue, defaultValue = _defaultProps$props$d === void 0 ? [] : _defaultProps$props$d, className = _defaultProps$props.className, style = _defaultProps$props.style, threeDimensional = _defaultProps$props.threeDimensional, duration = _defaultProps$props.duration, onConfirm = _defaultProps$props.onConfirm, onCancel = _defaultProps$props.onCancel, onClose = _defaultProps$props.onClose, _afterClose = _defaultProps$props.afterClose, onChange = _defaultProps$props.onChange, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
|
|
258
|
-
var classPrefix = "nut-picker";
|
|
259
|
-
var classes = classNames(classPrefix, className);
|
|
260
|
-
var _usePropsValue = usePropsValue({
|
|
210
|
+
const PickerPanel = React__default.forwardRef(InternalPickerPanel);
|
|
211
|
+
const PickerPanel$1 = PickerPanel;
|
|
212
|
+
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { title: "", options: [], value: [], defaultValue: [], threeDimensional: true, closeOnOverlayClick: true, duration: 1e3 });
|
|
213
|
+
const InternalPicker = (props, ref) => {
|
|
214
|
+
const { locale } = useConfig();
|
|
215
|
+
const _a = Object.assign(Object.assign({}, defaultProps), props), { children, visible, title, options = [], closeOnOverlayClick, popupProps = {}, defaultValue = [], className, style, threeDimensional, duration, onConfirm, onCancel, onClose, afterClose, onChange } = _a, rest = __rest(_a, ["children", "visible", "title", "options", "closeOnOverlayClick", "popupProps", "defaultValue", "className", "style", "threeDimensional", "duration", "onConfirm", "onCancel", "onClose", "afterClose", "onChange"]);
|
|
216
|
+
const classPrefix = "nut-picker";
|
|
217
|
+
const classes = classNames(classPrefix, className);
|
|
218
|
+
const [selectedValue, setSelectedValue] = usePropsValue({
|
|
261
219
|
value: props.value,
|
|
262
|
-
defaultValue:
|
|
263
|
-
finalValue:
|
|
264
|
-
onChange:
|
|
265
|
-
var
|
|
266
|
-
(
|
|
220
|
+
defaultValue: [...defaultValue],
|
|
221
|
+
finalValue: [...defaultValue],
|
|
222
|
+
onChange: (val) => {
|
|
223
|
+
var _a2;
|
|
224
|
+
(_a2 = props.onConfirm) === null || _a2 === void 0 ? void 0 : _a2.call(props, setSelectedOptions(), val);
|
|
267
225
|
}
|
|
268
|
-
})
|
|
269
|
-
|
|
226
|
+
});
|
|
227
|
+
const [innerVisible, setInnerVisible] = usePropsValue({
|
|
270
228
|
value: props.visible,
|
|
271
229
|
defaultValue: false,
|
|
272
230
|
finalValue: false,
|
|
273
|
-
onChange:
|
|
274
|
-
var
|
|
275
|
-
(
|
|
231
|
+
onChange: (val) => {
|
|
232
|
+
var _a2;
|
|
233
|
+
(_a2 = props.onClose) === null || _a2 === void 0 ? void 0 : _a2.call(props, setSelectedOptions(), innerValue);
|
|
276
234
|
}
|
|
277
|
-
})
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
open:
|
|
235
|
+
});
|
|
236
|
+
const [innerValue, setInnerValue] = useState(selectedValue);
|
|
237
|
+
const [columnIndex, setColumnIndex] = useState(0);
|
|
238
|
+
const pickerRef = useRef(null);
|
|
239
|
+
const [refs, setRefs] = useRefs();
|
|
240
|
+
const [columnsList, setColumnsList] = useState([]);
|
|
241
|
+
const isConfirmEvent = useRef(false);
|
|
242
|
+
const actions = {
|
|
243
|
+
open: () => {
|
|
286
244
|
setInnerVisible(true);
|
|
287
245
|
},
|
|
288
|
-
close:
|
|
246
|
+
close: () => {
|
|
289
247
|
setInnerVisible(false);
|
|
290
248
|
}
|
|
291
249
|
};
|
|
292
|
-
useImperativeHandle(ref,
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
var formatted = [];
|
|
297
|
-
var columnOptions = {
|
|
250
|
+
useImperativeHandle(ref, () => actions);
|
|
251
|
+
const formatCascade = (columns, values) => {
|
|
252
|
+
const formatted = [];
|
|
253
|
+
let columnOptions = {
|
|
298
254
|
text: "",
|
|
299
255
|
value: "",
|
|
300
256
|
children: columns
|
|
301
257
|
};
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
return columnItem.value === value;
|
|
308
|
-
});
|
|
258
|
+
let columnIndex2 = 0;
|
|
259
|
+
while (columnOptions && columnOptions.children) {
|
|
260
|
+
const options2 = columnOptions.children;
|
|
261
|
+
const value = values[columnIndex2];
|
|
262
|
+
let index = options2.findIndex((columnItem) => columnItem.value === value);
|
|
309
263
|
if (index === -1)
|
|
310
264
|
index = 0;
|
|
311
265
|
columnOptions = columnOptions.children[index];
|
|
312
266
|
columnIndex2++;
|
|
313
267
|
formatted.push(options2);
|
|
314
|
-
};
|
|
315
|
-
while (columnOptions && columnOptions.children) {
|
|
316
|
-
_loop();
|
|
317
268
|
}
|
|
318
269
|
return formatted;
|
|
319
270
|
};
|
|
320
|
-
|
|
321
|
-
|
|
271
|
+
const columnsType = () => {
|
|
272
|
+
const firstColumn = options[0];
|
|
322
273
|
if (firstColumn) {
|
|
323
274
|
if (Array.isArray(firstColumn)) {
|
|
324
275
|
return "multiple";
|
|
@@ -329,8 +280,8 @@ var InternalPicker = function InternalPicker2(props, ref) {
|
|
|
329
280
|
}
|
|
330
281
|
return "single";
|
|
331
282
|
};
|
|
332
|
-
|
|
333
|
-
|
|
283
|
+
const normalListData = (innerValue2) => {
|
|
284
|
+
const type = columnsType();
|
|
334
285
|
switch (type) {
|
|
335
286
|
case "multiple":
|
|
336
287
|
return options;
|
|
@@ -340,36 +291,34 @@ var InternalPicker = function InternalPicker2(props, ref) {
|
|
|
340
291
|
return [options];
|
|
341
292
|
}
|
|
342
293
|
};
|
|
343
|
-
|
|
344
|
-
|
|
294
|
+
const init = () => {
|
|
295
|
+
const normalData = normalListData(innerValue);
|
|
345
296
|
setColumnsList(normalData);
|
|
346
|
-
|
|
347
|
-
normalData.length > 0 && normalData.map(
|
|
297
|
+
const data = [];
|
|
298
|
+
normalData.length > 0 && normalData.map((item) => {
|
|
348
299
|
item[0] && data.push(item[0].value);
|
|
349
300
|
return item;
|
|
350
301
|
});
|
|
351
302
|
if (!innerValue.length && innerValue.length === 0) {
|
|
352
|
-
setInnerValue([]
|
|
303
|
+
setInnerValue([...data]);
|
|
353
304
|
}
|
|
354
305
|
};
|
|
355
|
-
useEffect(
|
|
306
|
+
useEffect(() => {
|
|
356
307
|
setInnerValue(innerValue !== selectedValue ? selectedValue : innerValue);
|
|
357
308
|
}, [innerVisible, selectedValue]);
|
|
358
|
-
useEffect(
|
|
309
|
+
useEffect(() => {
|
|
359
310
|
if (innerVisible) {
|
|
360
311
|
init();
|
|
361
312
|
}
|
|
362
313
|
}, [options, innerVisible]);
|
|
363
|
-
useEffect(
|
|
314
|
+
useEffect(() => {
|
|
364
315
|
onChange && onChange(setSelectedOptions(), innerValue, columnIndex);
|
|
365
316
|
}, [innerValue, columnsList]);
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
columnsList.forEach(
|
|
370
|
-
currOptions = columnOptions.filter(
|
|
371
|
-
return item.value === innerValue[index];
|
|
372
|
-
});
|
|
317
|
+
const setSelectedOptions = () => {
|
|
318
|
+
const options2 = [];
|
|
319
|
+
let currOptions = [];
|
|
320
|
+
columnsList.forEach((columnOptions, index) => {
|
|
321
|
+
currOptions = columnOptions.filter((item) => item.value === innerValue[index]);
|
|
373
322
|
if (currOptions[0]) {
|
|
374
323
|
options2.push(currOptions[0]);
|
|
375
324
|
} else {
|
|
@@ -378,29 +327,31 @@ var InternalPicker = function InternalPicker2(props, ref) {
|
|
|
378
327
|
});
|
|
379
328
|
return options2;
|
|
380
329
|
};
|
|
381
|
-
|
|
382
|
-
var
|
|
383
|
-
|
|
330
|
+
const chooseItem = (columnOptions, columnIndex2) => {
|
|
331
|
+
var _a2, _b;
|
|
332
|
+
const values = [];
|
|
333
|
+
const start = columnIndex2;
|
|
384
334
|
if (columnOptions && Object.keys(columnOptions).length) {
|
|
385
335
|
if (values[columnIndex2] !== columnOptions.value) {
|
|
386
336
|
if (columnsType() === "cascade") {
|
|
387
|
-
var _columnOptions2;
|
|
388
337
|
values[columnIndex2] = columnOptions.value || "";
|
|
389
|
-
while ((
|
|
390
|
-
var _columnOptions;
|
|
338
|
+
while ((_a2 = columnOptions === null || columnOptions === void 0 ? void 0 : columnOptions.children) === null || _a2 === void 0 ? void 0 : _a2[0]) {
|
|
391
339
|
values[columnIndex2 + 1] = columnOptions.children[0].value;
|
|
392
340
|
columnIndex2++;
|
|
393
341
|
columnOptions = columnOptions.children[0];
|
|
394
342
|
}
|
|
395
|
-
if ((
|
|
343
|
+
if ((_b = columnOptions === null || columnOptions === void 0 ? void 0 : columnOptions.children) === null || _b === void 0 ? void 0 : _b.length) {
|
|
396
344
|
values[columnIndex2 + 1] = "";
|
|
397
345
|
}
|
|
398
|
-
|
|
346
|
+
const combineResult = [
|
|
347
|
+
...innerValue.slice(0, start),
|
|
348
|
+
...values.splice(start)
|
|
349
|
+
];
|
|
399
350
|
setInnerValue(combineResult);
|
|
400
351
|
setColumnsList(normalListData(combineResult));
|
|
401
352
|
} else {
|
|
402
|
-
setInnerValue(
|
|
403
|
-
|
|
353
|
+
setInnerValue((data) => {
|
|
354
|
+
const cdata = [...data];
|
|
404
355
|
cdata[columnIndex2] = Object.prototype.hasOwnProperty.call(columnOptions, "value") ? columnOptions.value : "";
|
|
405
356
|
return cdata;
|
|
406
357
|
});
|
|
@@ -409,9 +360,9 @@ var InternalPicker = function InternalPicker2(props, ref) {
|
|
|
409
360
|
}
|
|
410
361
|
}
|
|
411
362
|
};
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
refs.forEach(
|
|
363
|
+
const confirm = () => {
|
|
364
|
+
let moving = false;
|
|
365
|
+
refs.forEach((ref2) => {
|
|
415
366
|
if (ref2.moving)
|
|
416
367
|
moving = true;
|
|
417
368
|
ref2.stopMomentum();
|
|
@@ -422,68 +373,56 @@ var InternalPicker = function InternalPicker2(props, ref) {
|
|
|
422
373
|
setSelectedValue(innerValue, true);
|
|
423
374
|
setInnerVisible(false);
|
|
424
375
|
}
|
|
425
|
-
setTimeout(
|
|
376
|
+
setTimeout(() => {
|
|
426
377
|
isConfirmEvent.current = false;
|
|
427
378
|
}, 0);
|
|
428
379
|
};
|
|
429
|
-
|
|
430
|
-
return React__default.createElement(
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
className:
|
|
434
|
-
onClick: function onClick(e) {
|
|
380
|
+
const renderTitleBar = () => {
|
|
381
|
+
return React__default.createElement(
|
|
382
|
+
"div",
|
|
383
|
+
{ className: `${classPrefix}-control` },
|
|
384
|
+
React__default.createElement("span", { className: `${classPrefix}-cancel-btn`, onClick: (e) => {
|
|
435
385
|
e.stopPropagation();
|
|
436
|
-
onCancel === null || onCancel === void 0
|
|
386
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
437
387
|
setInnerVisible(false);
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
className:
|
|
441
|
-
}, title || ""), React__default.createElement("span", {
|
|
442
|
-
className: "".concat(classPrefix, "-confirm-btn"),
|
|
443
|
-
onClick: function onClick(e) {
|
|
388
|
+
} }, locale.cancel),
|
|
389
|
+
React__default.createElement("div", { className: `${classPrefix}-title` }, title || ""),
|
|
390
|
+
React__default.createElement("span", { className: `${classPrefix}-confirm-btn`, onClick: (e) => {
|
|
444
391
|
e.stopPropagation();
|
|
445
392
|
confirm();
|
|
446
|
-
}
|
|
447
|
-
|
|
393
|
+
} }, locale.confirm)
|
|
394
|
+
);
|
|
448
395
|
};
|
|
449
|
-
return React__default.createElement(
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
},
|
|
477
|
-
duration,
|
|
478
|
-
key: index,
|
|
479
|
-
keyIndex: index
|
|
480
|
-
});
|
|
481
|
-
}))), React__default.createElement(SafeArea, {
|
|
482
|
-
position: "bottom"
|
|
483
|
-
})));
|
|
396
|
+
return React__default.createElement(
|
|
397
|
+
React__default.Fragment,
|
|
398
|
+
null,
|
|
399
|
+
typeof children === "function" && children(selectedValue),
|
|
400
|
+
React__default.createElement(
|
|
401
|
+
Popup,
|
|
402
|
+
Object.assign({}, popupProps, { visible: innerVisible, position: "bottom", onOverlayClick: () => {
|
|
403
|
+
var _a2;
|
|
404
|
+
if (closeOnOverlayClick) {
|
|
405
|
+
(_a2 = props.onCancel) === null || _a2 === void 0 ? void 0 : _a2.call(props);
|
|
406
|
+
setInnerVisible(false);
|
|
407
|
+
}
|
|
408
|
+
}, afterClose: () => {
|
|
409
|
+
afterClose === null || afterClose === void 0 ? void 0 : afterClose(setSelectedOptions(), innerValue, pickerRef);
|
|
410
|
+
} }),
|
|
411
|
+
React__default.createElement(
|
|
412
|
+
"div",
|
|
413
|
+
Object.assign({ className: classes, style }, rest),
|
|
414
|
+
renderTitleBar(),
|
|
415
|
+
typeof children !== "function" && children,
|
|
416
|
+
React__default.createElement("div", { className: `${classPrefix}-panel`, ref: pickerRef }, columnsList === null || columnsList === void 0 ? void 0 : columnsList.map((item, index) => {
|
|
417
|
+
return React__default.createElement(PickerPanel$1, { ref: setRefs(index), defaultValue: innerValue === null || innerValue === void 0 ? void 0 : innerValue[index], options: item, threeDimensional, chooseItem: (value, index2) => chooseItem(value, index2), duration, key: index, keyIndex: index });
|
|
418
|
+
}))
|
|
419
|
+
),
|
|
420
|
+
React__default.createElement(SafeArea, { position: "bottom" })
|
|
421
|
+
)
|
|
422
|
+
);
|
|
484
423
|
};
|
|
485
|
-
|
|
486
|
-
|
|
424
|
+
const Picker = React__default.forwardRef(InternalPicker);
|
|
425
|
+
const Picker$1 = Picker;
|
|
487
426
|
export {
|
|
488
427
|
Picker$1 as default
|
|
489
428
|
};
|