react-native-dates-picker 0.1.3 → 0.1.5
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/lib/commonjs/DateTimePicker.js +144 -85
- package/lib/commonjs/DateTimePicker.js.map +1 -1
- package/lib/commonjs/components/Calendar.js +3 -5
- package/lib/commonjs/components/Calendar.js.map +1 -1
- package/lib/commonjs/components/DatePicker.js +16 -83
- package/lib/commonjs/components/DatePicker.js.map +1 -1
- package/lib/commonjs/components/Day.js +3 -8
- package/lib/commonjs/components/Day.js.map +1 -1
- package/lib/commonjs/components/TimeSelector.js +3 -3
- package/lib/commonjs/components/TimeSelector.js.map +1 -1
- package/lib/commonjs/components/WheelPicker/WheelNative.js +2 -2
- package/lib/commonjs/components/WheelPicker/WheelNative.js.map +1 -1
- package/lib/commonjs/components/WheelPicker/WheelNativePicker/wheel-picker-item.js +56 -72
- package/lib/commonjs/components/WheelPicker/WheelNativePicker/wheel-picker-item.js.map +1 -1
- package/lib/commonjs/components/WheelPicker/WheelNativePicker/wheel-picker.js +27 -48
- package/lib/commonjs/components/WheelPicker/WheelNativePicker/wheel-picker.js.map +1 -1
- package/lib/commonjs/components/WheelPicker/WheelWeb.js +5 -7
- package/lib/commonjs/components/WheelPicker/WheelWeb.js.map +1 -1
- package/lib/commonjs/components/WheelSelector.js +129 -0
- package/lib/commonjs/components/WheelSelector.js.map +1 -0
- package/lib/commonjs/utils.js +68 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/DateTimePicker.js +146 -87
- package/lib/module/DateTimePicker.js.map +1 -1
- package/lib/module/components/Calendar.js +3 -5
- package/lib/module/components/Calendar.js.map +1 -1
- package/lib/module/components/DatePicker.js +16 -81
- package/lib/module/components/DatePicker.js.map +1 -1
- package/lib/module/components/Day.js +3 -8
- package/lib/module/components/Day.js.map +1 -1
- package/lib/module/components/TimeSelector.js +3 -3
- package/lib/module/components/TimeSelector.js.map +1 -1
- package/lib/module/components/WheelPicker/WheelNative.js +2 -2
- package/lib/module/components/WheelPicker/WheelNative.js.map +1 -1
- package/lib/module/components/WheelPicker/WheelNativePicker/wheel-picker-item.js +57 -73
- package/lib/module/components/WheelPicker/WheelNativePicker/wheel-picker-item.js.map +1 -1
- package/lib/module/components/WheelPicker/WheelNativePicker/wheel-picker.js +27 -48
- package/lib/module/components/WheelPicker/WheelNativePicker/wheel-picker.js.map +1 -1
- package/lib/module/components/WheelPicker/WheelWeb.js +5 -7
- package/lib/module/components/WheelPicker/WheelWeb.js.map +1 -1
- package/lib/module/components/WheelSelector.js +120 -0
- package/lib/module/components/WheelSelector.js.map +1 -0
- package/lib/module/utils.js +65 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/DateTimePicker.d.ts +2 -2
- package/lib/typescript/DateTimePicker.d.ts.map +1 -1
- package/lib/typescript/components/Calendar.d.ts.map +1 -1
- package/lib/typescript/components/DatePicker.d.ts +6 -1
- package/lib/typescript/components/DatePicker.d.ts.map +1 -1
- package/lib/typescript/components/Day.d.ts.map +1 -1
- package/lib/typescript/components/WheelPicker/Wheel.d.ts +1 -1
- package/lib/typescript/components/WheelPicker/WheelNative.d.ts +1 -1
- package/lib/typescript/components/WheelPicker/WheelNativePicker/wheel-picker-item.d.ts.map +1 -1
- package/lib/typescript/components/WheelPicker/WheelNativePicker/wheel-picker.d.ts +1 -2
- package/lib/typescript/components/WheelPicker/WheelNativePicker/wheel-picker.d.ts.map +1 -1
- package/lib/typescript/components/WheelPicker/WheelWeb.d.ts +1 -1
- package/lib/typescript/components/WheelPicker/WheelWeb.d.ts.map +1 -1
- package/lib/typescript/components/WheelSelector.d.ts +8 -0
- package/lib/typescript/components/WheelSelector.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +1 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils.d.ts +9 -0
- package/lib/typescript/utils.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/DateTimePicker.tsx +226 -108
- package/src/components/Calendar.tsx +3 -11
- package/src/components/DatePicker.tsx +17 -138
- package/src/components/Day.tsx +1 -4
- package/src/components/TimeSelector.tsx +3 -3
- package/src/components/WheelPicker/Wheel.tsx +1 -1
- package/src/components/WheelPicker/WheelNative.tsx +3 -3
- package/src/components/WheelPicker/WheelNativePicker/wheel-picker-item.tsx +65 -74
- package/src/components/WheelPicker/WheelNativePicker/wheel-picker.tsx +21 -48
- package/src/components/WheelPicker/WheelWeb.tsx +6 -7
- package/src/components/WheelSelector.tsx +170 -0
- package/src/types.ts +1 -1
- package/src/utils.ts +77 -0
- package/lib/commonjs/components/WheelPicker/AnimatedMath.js +0 -26
- package/lib/commonjs/components/WheelPicker/AnimatedMath.js.map +0 -1
- package/lib/module/components/WheelPicker/AnimatedMath.js +0 -20
- package/lib/module/components/WheelPicker/AnimatedMath.js.map +0 -1
- package/lib/typescript/components/WheelPicker/AnimatedMath.d.ts +0 -5
- package/lib/typescript/components/WheelPicker/AnimatedMath.d.ts.map +0 -1
- package/src/components/WheelPicker/AnimatedMath.tsx +0 -33
|
@@ -37,7 +37,7 @@ const TimeSelector = () => {
|
|
|
37
37
|
}, /*#__PURE__*/React.createElement(Wheel, {
|
|
38
38
|
value: hour,
|
|
39
39
|
items: hours,
|
|
40
|
-
|
|
40
|
+
onChange: value => handleChange(value, 'hour')
|
|
41
41
|
})), /*#__PURE__*/React.createElement(Text, {
|
|
42
42
|
style: {
|
|
43
43
|
...styles.timePickerText,
|
|
@@ -48,7 +48,7 @@ const TimeSelector = () => {
|
|
|
48
48
|
}, /*#__PURE__*/React.createElement(Wheel, {
|
|
49
49
|
value: minute,
|
|
50
50
|
items: minutes,
|
|
51
|
-
|
|
51
|
+
onChange: value => handleChange(value, 'minute')
|
|
52
52
|
})), /*#__PURE__*/React.createElement(Text, {
|
|
53
53
|
style: {
|
|
54
54
|
...styles.timePickerText,
|
|
@@ -59,7 +59,7 @@ const TimeSelector = () => {
|
|
|
59
59
|
}, /*#__PURE__*/React.createElement(Wheel, {
|
|
60
60
|
value: second,
|
|
61
61
|
items: seconds,
|
|
62
|
-
|
|
62
|
+
onChange: value => handleChange(value, 'second')
|
|
63
63
|
}))));
|
|
64
64
|
};
|
|
65
65
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","Text","View","StyleSheet","useCalendarContext","CONTAINER_HEIGHT","getParsedDate","getDate","getFormatted","Wheel","createNumberList","num","Array","fill","map","_","index","text","toString","padStart","value","hours","minutes","seconds","TimeSelector","date","onSelectDate","theme","hour","minute","second","handleChange","type","newDate","createElement","style","styles","container","timePickerContainer","wheelContainer","items","
|
|
1
|
+
{"version":3,"names":["React","useCallback","Text","View","StyleSheet","useCalendarContext","CONTAINER_HEIGHT","getParsedDate","getDate","getFormatted","Wheel","createNumberList","num","Array","fill","map","_","index","text","toString","padStart","value","hours","minutes","seconds","TimeSelector","date","onSelectDate","theme","hour","minute","second","handleChange","type","newDate","createElement","style","styles","container","timePickerContainer","wheelContainer","items","onChange","timePickerText","wheelPickerTextStyle","create","flex","alignItems","justifyContent","flexDirection","width","height","fontSize","fontWeight","marginHorizontal"],"sourceRoot":"../../../src","sources":["components/TimeSelector.tsx"],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import React, { memo } from 'react';
|
|
|
2
2
|
import WheelPicker from './WheelNativePicker';
|
|
3
3
|
const WheelNative = ({
|
|
4
4
|
value,
|
|
5
|
-
|
|
5
|
+
onChange = () => {},
|
|
6
6
|
items
|
|
7
7
|
}) => {
|
|
8
8
|
return /*#__PURE__*/React.createElement(WheelPicker, {
|
|
9
9
|
value: value,
|
|
10
10
|
options: items,
|
|
11
|
-
onChange:
|
|
11
|
+
onChange: onChange,
|
|
12
12
|
itemHeight: 44,
|
|
13
13
|
decelerationRate: "fast"
|
|
14
14
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","WheelPicker","WheelNative","value","
|
|
1
|
+
{"version":3,"names":["React","memo","WheelPicker","WheelNative","value","onChange","items","createElement","options","itemHeight","decelerationRate"],"sourceRoot":"../../../../src","sources":["components/WheelPicker/WheelNative.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,OAAOC,WAAW,MAAM,qBAAqB;AAS7C,MAAMC,WAAiC,GAAGA,CAAC;EACzCC,KAAK;EACLC,QAAQ,GAAGA,CAAA,KAAM,CAAC,CAAC;EACnBC;AACF,CAAC,KAAK;EACJ,oBACEN,KAAA,CAAAO,aAAA,CAACL,WAAW;IACVE,KAAK,EAAEA,KAAM;IACbI,OAAO,EAAEF,KAAM;IACfD,QAAQ,EAAEA,QAAS;IACnBI,UAAU,EAAE,EAAG;IACfC,gBAAgB,EAAC;EAAM,CACxB,CAAC;AAEN,CAAC;AAED,4BAAeT,IAAI,CAACE,WAAW,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { memo } from 'react';
|
|
1
|
+
import React, { memo, useMemo } from 'react';
|
|
2
2
|
import { Animated, Text, StyleSheet } from 'react-native';
|
|
3
3
|
import { useCalendarContext } from '../../../CalendarContext';
|
|
4
4
|
const WheelPickerItem = ({
|
|
@@ -14,85 +14,69 @@ const WheelPickerItem = ({
|
|
|
14
14
|
const {
|
|
15
15
|
theme
|
|
16
16
|
} = useCalendarContext();
|
|
17
|
-
const relativeScrollIndex = Animated.subtract(index, currentScrollIndex);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
y += height * (1 - Math.sin(Math.PI / 2 - rotationFunction(j)));
|
|
33
|
-
}
|
|
34
|
-
range.unshift(y);
|
|
35
|
-
range.push(-y);
|
|
17
|
+
const relativeScrollIndex = useMemo(() => Animated.subtract(index, currentScrollIndex), [index, currentScrollIndex]);
|
|
18
|
+
const interpolInputRange = useMemo(() => {
|
|
19
|
+
const range = [0];
|
|
20
|
+
for (let i = 1; i <= visibleRest + 1; i++) {
|
|
21
|
+
range.unshift(-i);
|
|
22
|
+
range.push(i);
|
|
23
|
+
}
|
|
24
|
+
return range;
|
|
25
|
+
}, [visibleRest]);
|
|
26
|
+
const translateYOutputRange = useMemo(() => {
|
|
27
|
+
const range = [0];
|
|
28
|
+
for (let i = 1; i <= visibleRest + 1; i++) {
|
|
29
|
+
let y = height / 2 * (1 - Math.sin(Math.PI / 2 - rotationFunction(i)));
|
|
30
|
+
for (let j = 1; j < i; j++) {
|
|
31
|
+
y += height * (1 - Math.sin(Math.PI / 2 - rotationFunction(j)));
|
|
36
32
|
}
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
range.unshift(y);
|
|
34
|
+
range.push(-y);
|
|
35
|
+
}
|
|
36
|
+
return range;
|
|
37
|
+
}, [height, visibleRest, rotationFunction]);
|
|
38
|
+
const opacityOutputRange = useMemo(() => {
|
|
39
|
+
const range = [1];
|
|
40
|
+
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
41
|
+
const val = opacityFunction(x);
|
|
42
|
+
range.unshift(val);
|
|
43
|
+
range.push(val);
|
|
44
|
+
}
|
|
45
|
+
return range;
|
|
46
|
+
}, [visibleRest, opacityFunction]);
|
|
47
|
+
const scaleOutputRange = useMemo(() => {
|
|
48
|
+
const range = [1];
|
|
49
|
+
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
50
|
+
const val = scaleFunction(x);
|
|
51
|
+
range.unshift(val);
|
|
52
|
+
range.push(val);
|
|
53
|
+
}
|
|
54
|
+
return range;
|
|
55
|
+
}, [visibleRest, scaleFunction]);
|
|
56
|
+
const rotateXOutputRange = useMemo(() => {
|
|
57
|
+
const range = ['0deg'];
|
|
58
|
+
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
59
|
+
const deg = `${rotationFunction(x)}deg`;
|
|
60
|
+
range.unshift(deg);
|
|
61
|
+
range.push(deg);
|
|
62
|
+
}
|
|
63
|
+
return range;
|
|
64
|
+
}, [visibleRest, rotationFunction]);
|
|
65
|
+
const translateY = relativeScrollIndex.interpolate({
|
|
66
|
+
inputRange: interpolInputRange,
|
|
67
|
+
outputRange: translateYOutputRange
|
|
39
68
|
});
|
|
40
69
|
const opacity = relativeScrollIndex.interpolate({
|
|
41
|
-
inputRange:
|
|
42
|
-
|
|
43
|
-
for (let i = 1; i <= visibleRest + 1; i++) {
|
|
44
|
-
range.unshift(-i);
|
|
45
|
-
range.push(i);
|
|
46
|
-
}
|
|
47
|
-
return range;
|
|
48
|
-
})(),
|
|
49
|
-
outputRange: (() => {
|
|
50
|
-
const range = [1];
|
|
51
|
-
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
52
|
-
const y = opacityFunction(x);
|
|
53
|
-
range.unshift(y);
|
|
54
|
-
range.push(y);
|
|
55
|
-
}
|
|
56
|
-
return range;
|
|
57
|
-
})()
|
|
70
|
+
inputRange: interpolInputRange,
|
|
71
|
+
outputRange: opacityOutputRange
|
|
58
72
|
});
|
|
59
73
|
const scale = relativeScrollIndex.interpolate({
|
|
60
|
-
inputRange:
|
|
61
|
-
|
|
62
|
-
for (let i = 1; i <= visibleRest + 1; i++) {
|
|
63
|
-
range.unshift(-i);
|
|
64
|
-
range.push(i);
|
|
65
|
-
}
|
|
66
|
-
return range;
|
|
67
|
-
})(),
|
|
68
|
-
outputRange: (() => {
|
|
69
|
-
const range = [1.0];
|
|
70
|
-
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
71
|
-
const y = scaleFunction(x);
|
|
72
|
-
range.unshift(y);
|
|
73
|
-
range.push(y);
|
|
74
|
-
}
|
|
75
|
-
return range;
|
|
76
|
-
})()
|
|
74
|
+
inputRange: interpolInputRange,
|
|
75
|
+
outputRange: scaleOutputRange
|
|
77
76
|
});
|
|
78
77
|
const rotateX = relativeScrollIndex.interpolate({
|
|
79
|
-
inputRange:
|
|
80
|
-
|
|
81
|
-
for (let i = 1; i <= visibleRest + 1; i++) {
|
|
82
|
-
range.unshift(-i);
|
|
83
|
-
range.push(i);
|
|
84
|
-
}
|
|
85
|
-
return range;
|
|
86
|
-
})(),
|
|
87
|
-
outputRange: (() => {
|
|
88
|
-
const range = ['0deg'];
|
|
89
|
-
for (let x = 1; x <= visibleRest + 1; x++) {
|
|
90
|
-
const y = rotationFunction(x);
|
|
91
|
-
range.unshift(`${y}deg`);
|
|
92
|
-
range.push(`${y}deg`);
|
|
93
|
-
}
|
|
94
|
-
return range;
|
|
95
|
-
})()
|
|
78
|
+
inputRange: interpolInputRange,
|
|
79
|
+
outputRange: rotateXOutputRange
|
|
96
80
|
});
|
|
97
81
|
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
98
82
|
style: [styles.option, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","Animated","Text","StyleSheet","useCalendarContext","WheelPickerItem","height","option","index","visibleRest","currentScrollIndex","opacityFunction","rotationFunction","scaleFunction","theme","relativeScrollIndex","subtract","
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","Animated","Text","StyleSheet","useCalendarContext","WheelPickerItem","height","option","index","visibleRest","currentScrollIndex","opacityFunction","rotationFunction","scaleFunction","theme","relativeScrollIndex","subtract","interpolInputRange","range","i","unshift","push","translateYOutputRange","y","Math","sin","PI","j","opacityOutputRange","x","val","scaleOutputRange","rotateXOutputRange","deg","translateY","interpolate","inputRange","outputRange","opacity","scale","rotateX","createElement","View","style","styles","transform","wheelPickerItemStyle","wheelPickerTextStyle","text","create","alignItems","justifyContent","paddingHorizontal","zIndex"],"sourceRoot":"../../../../../src","sources":["components/WheelPicker/WheelNativePicker/wheel-picker-item.tsx"],"mappings":"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"}
|
|
@@ -13,14 +13,13 @@ const WheelPicker = ({
|
|
|
13
13
|
opacityFunction = x => Math.pow(1 / 3, x),
|
|
14
14
|
visibleRest = 2,
|
|
15
15
|
decelerationRate = 'normal',
|
|
16
|
-
containerProps = {}
|
|
17
|
-
flatListProps = {}
|
|
16
|
+
containerProps = {}
|
|
18
17
|
}) => {
|
|
19
18
|
const {
|
|
20
19
|
theme
|
|
21
20
|
} = useCalendarContext();
|
|
22
|
-
const momentumStarted = useRef(false);
|
|
23
21
|
const selectedIndex = options.findIndex(item => item.value === value);
|
|
22
|
+
const timerRef = useRef();
|
|
24
23
|
const flatListRef = useRef(null);
|
|
25
24
|
const [scrollY] = useState(new Animated.Value(selectedIndex * itemHeight));
|
|
26
25
|
const containerHeight = (1 + visibleRest * 2) * itemHeight;
|
|
@@ -35,46 +34,35 @@ const WheelPicker = ({
|
|
|
35
34
|
const offsets = useMemo(() => [...Array(paddedOptions.length)].map((_, i) => i * itemHeight), [paddedOptions, itemHeight]);
|
|
36
35
|
const currentScrollIndex = useMemo(() => Animated.add(Animated.divide(scrollY, itemHeight), visibleRest), [visibleRest, scrollY, itemHeight]);
|
|
37
36
|
const handleScrollEnd = event => {
|
|
37
|
+
var _options$index;
|
|
38
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
38
39
|
const offsetY = Math.min(itemHeight * (options.length - 1), Math.max(event.nativeEvent.contentOffset.y, 0));
|
|
39
40
|
let index = Math.floor(offsetY / itemHeight);
|
|
40
41
|
const remainder = offsetY % itemHeight;
|
|
41
42
|
if (remainder > itemHeight / 2) {
|
|
42
43
|
index++;
|
|
43
44
|
}
|
|
45
|
+
const value = ((_options$index = options[index]) === null || _options$index === void 0 ? void 0 : _options$index.value) || 0;
|
|
44
46
|
if (index !== selectedIndex) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
timerRef.current = setTimeout(() => {
|
|
48
|
+
onChange(value);
|
|
49
|
+
clearTimeout(timerRef.current);
|
|
50
|
+
timerRef.current = undefined;
|
|
51
|
+
}, 50);
|
|
47
52
|
}
|
|
48
53
|
};
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
momentumStarted.current = false;
|
|
54
|
-
handleScrollEnd(event);
|
|
55
|
-
};
|
|
56
|
-
const handleScrollEndDrag = event => {
|
|
57
|
-
var _event$nativeEvent$co;
|
|
58
|
-
// Capture the offset value immediately
|
|
59
|
-
const offsetY = (_event$nativeEvent$co = event.nativeEvent.contentOffset) === null || _event$nativeEvent$co === void 0 ? void 0 : _event$nativeEvent$co.y;
|
|
60
|
-
|
|
61
|
-
// We'll start a short timer to see if momentum scroll begins
|
|
62
|
-
setTimeout(() => {
|
|
63
|
-
// If momentum scroll hasn't started within the timeout,
|
|
64
|
-
// then it was a slow scroll that won't trigger momentum
|
|
65
|
-
if (!momentumStarted.current && offsetY !== undefined) {
|
|
66
|
-
// Create a synthetic event with just the data we need
|
|
67
|
-
const syntheticEvent = {
|
|
68
|
-
nativeEvent: {
|
|
69
|
-
contentOffset: {
|
|
70
|
-
y: offsetY
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
handleScrollEnd(syntheticEvent);
|
|
54
|
+
const scrollEvent = useMemo(() => Animated.event([{
|
|
55
|
+
nativeEvent: {
|
|
56
|
+
contentOffset: {
|
|
57
|
+
y: scrollY
|
|
75
58
|
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
59
|
+
}
|
|
60
|
+
}], {
|
|
61
|
+
useNativeDriver: true,
|
|
62
|
+
listener: handleScrollEnd
|
|
63
|
+
}),
|
|
64
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
|
+
[]);
|
|
78
66
|
useEffect(() => {
|
|
79
67
|
if (selectedIndex < 0 || selectedIndex >= options.length) {
|
|
80
68
|
throw new Error(`Selected index ${selectedIndex} is out of bounds [0, ${options.length - 1}]`);
|
|
@@ -103,24 +91,15 @@ const WheelPicker = ({
|
|
|
103
91
|
}],
|
|
104
92
|
height: itemHeight
|
|
105
93
|
}, theme.wheelPickerSelectedIndicatorStyle]
|
|
106
|
-
}), /*#__PURE__*/React.createElement(Animated.FlatList,
|
|
94
|
+
}), /*#__PURE__*/React.createElement(Animated.FlatList, {
|
|
107
95
|
ref: flatListRef,
|
|
108
96
|
nestedScrollEnabled: true,
|
|
109
97
|
style: styles.scrollView,
|
|
110
98
|
showsVerticalScrollIndicator: false,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
contentOffset: {
|
|
114
|
-
y: scrollY
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}], {
|
|
118
|
-
useNativeDriver: true
|
|
119
|
-
}),
|
|
120
|
-
onScrollEndDrag: handleScrollEndDrag,
|
|
121
|
-
onMomentumScrollBegin: handleMomentumScrollBegin,
|
|
122
|
-
onMomentumScrollEnd: handleMomentumScrollEnd,
|
|
99
|
+
scrollEventThrottle: 16,
|
|
100
|
+
onScroll: scrollEvent,
|
|
123
101
|
snapToOffsets: offsets,
|
|
102
|
+
onMomentumScrollEnd: handleScrollEnd,
|
|
124
103
|
decelerationRate: decelerationRate,
|
|
125
104
|
initialScrollIndex: selectedIndex,
|
|
126
105
|
getItemLayout: (_, index) => ({
|
|
@@ -129,7 +108,7 @@ const WheelPicker = ({
|
|
|
129
108
|
index
|
|
130
109
|
}),
|
|
131
110
|
data: paddedOptions,
|
|
132
|
-
keyExtractor: (item, index) => item ? `${item.value}-${item.text}-${index}` :
|
|
111
|
+
keyExtractor: (item, index) => item ? `${item.value}-${item.text}-${index}` : `-${index}`,
|
|
133
112
|
renderItem: ({
|
|
134
113
|
item: option,
|
|
135
114
|
index
|
|
@@ -144,7 +123,7 @@ const WheelPicker = ({
|
|
|
144
123
|
opacityFunction: opacityFunction,
|
|
145
124
|
visibleRest: visibleRest
|
|
146
125
|
})
|
|
147
|
-
}))
|
|
126
|
+
}));
|
|
148
127
|
};
|
|
149
128
|
const styles = StyleSheet.create({
|
|
150
129
|
container: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useRef","useState","memo","Animated","View","Platform","StyleSheet","WheelPickerItem","useCalendarContext","WheelPicker","value","options","onChange","itemHeight","scaleFunction","x","rotationFunction","Math","pow","opacityFunction","visibleRest","decelerationRate","containerProps","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useRef","useState","memo","Animated","View","Platform","StyleSheet","WheelPickerItem","useCalendarContext","WheelPicker","value","options","onChange","itemHeight","scaleFunction","x","rotationFunction","Math","pow","opacityFunction","visibleRest","decelerationRate","containerProps","theme","selectedIndex","findIndex","item","timerRef","flatListRef","scrollY","Value","containerHeight","paddedOptions","array","i","unshift","push","offsets","Array","length","map","_","currentScrollIndex","add","divide","handleScrollEnd","event","_options$index","current","clearTimeout","offsetY","min","max","nativeEvent","contentOffset","y","index","floor","remainder","setTimeout","undefined","scrollEvent","useNativeDriver","listener","Error","_flatListRef$current","scrollToIndex","animated","OS","createElement","_extends","style","styles","container","height","wheelPickerContainerStyle","selectedIndicator","transform","translateY","wheelPickerSelectedIndicatorStyle","FlatList","ref","nestedScrollEnabled","scrollView","showsVerticalScrollIndicator","scrollEventThrottle","onScroll","snapToOffsets","onMomentumScrollEnd","initialScrollIndex","getItemLayout","offset","data","keyExtractor","text","renderItem","option","key","create","display","position","width","top","overflow","flex"],"sourceRoot":"../../../../../src","sources":["components/WheelPicker/WheelNativePicker/wheel-picker.tsx"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { sin } from './animated-math';
|
|
|
8
8
|
const ITEM_HEIGHT = 44;
|
|
9
9
|
const WheelWeb = ({
|
|
10
10
|
value,
|
|
11
|
-
|
|
11
|
+
onChange = () => {},
|
|
12
12
|
items
|
|
13
13
|
}) => {
|
|
14
14
|
const {
|
|
@@ -43,10 +43,10 @@ const WheelWeb = ({
|
|
|
43
43
|
if ((newValue === null || newValue === void 0 ? void 0 : newValue.value) === value) {
|
|
44
44
|
translateY.setOffset(0);
|
|
45
45
|
translateY.setValue(0);
|
|
46
|
-
} else if (newValue !== null && newValue !== void 0 && newValue.value)
|
|
46
|
+
} else if (newValue !== null && newValue !== void 0 && newValue.value) onChange(newValue.value);else if ((_items$ = items[0]) !== null && _items$ !== void 0 && _items$.value) onChange(items[0].value);
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
}, [circular, displayCount, radius,
|
|
49
|
+
}, [circular, displayCount, radius, onChange, value, valueIndex, items, translateY]);
|
|
50
50
|
const displayValues = useMemo(() => {
|
|
51
51
|
const centerIndex = Math.floor(renderCount / 2);
|
|
52
52
|
return Array.from({
|
|
@@ -83,9 +83,7 @@ const WheelWeb = ({
|
|
|
83
83
|
}), displayValues === null || displayValues === void 0 ? void 0 : displayValues.map((displayValue, index) => {
|
|
84
84
|
const animatedAngle = animatedAngles[index];
|
|
85
85
|
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
86
|
-
key: `${displayValue === null || displayValue === void 0 ? void 0 : displayValue.text}-${index}
|
|
87
|
-
// eslint-disable-next-line react-native/no-inline-styles
|
|
88
|
-
,
|
|
86
|
+
key: `${displayValue === null || displayValue === void 0 ? void 0 : displayValue.text}-${index}`,
|
|
89
87
|
style: {
|
|
90
88
|
position: 'absolute',
|
|
91
89
|
height: ITEM_HEIGHT - 10,
|
|
@@ -130,7 +128,7 @@ const defaultStyles = StyleSheet.create({
|
|
|
130
128
|
}
|
|
131
129
|
});
|
|
132
130
|
const customComparator = (prev, next) => {
|
|
133
|
-
const areEqual = prev.value === next.value && prev.
|
|
131
|
+
const areEqual = prev.value === next.value && prev.onChange === next.onChange && isEqual(prev.items, next.items);
|
|
134
132
|
return areEqual;
|
|
135
133
|
};
|
|
136
134
|
export default /*#__PURE__*/memo(WheelWeb, customComparator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useMemo","useRef","Animated","PanResponder","StyleSheet","View","Platform","Text","isEqual","CONTAINER_HEIGHT","useCalendarContext","sin","ITEM_HEIGHT","WheelWeb","value","
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","useRef","Animated","PanResponder","StyleSheet","View","Platform","Text","isEqual","CONTAINER_HEIGHT","useCalendarContext","sin","ITEM_HEIGHT","WheelWeb","value","onChange","items","theme","displayCount","translateY","Value","current","renderCount","length","circular","height","radius","valueIndex","findIndex","item","panResponder","create","onMoveShouldSetPanResponder","onStartShouldSetPanResponderCapture","onPanResponderGrant","setValue","onPanResponderMove","evt","gestureState","dy","stopPropagation","onPanResponderRelease","_","_items$","extractOffset","newValueIndex","Math","round","newValue","setOffset","displayValues","centerIndex","floor","Array","from","index","targetIndex","max","min","animatedAngles","currentIndex","map","interpolate","inputRange","outputRange","extrapolate","PI","createElement","_extends","style","defaultStyles","container","wheelPickerContainerStyle","panHandlers","selectedIndicator","transform","wheelPickerSelectedIndicatorStyle","displayValue","animatedAngle","key","text","position","multiply","rotateX","opacity","wheelPickerTextStyle","minWidth","overflow","alignItems","justifyContent","select","web","cursor","userSelect","contentContainer","width","top","customComparator","prev","next","areEqual"],"sourceRoot":"../../../../src","sources":["components/WheelPicker/WheelWeb.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { View, StyleSheet } from 'react-native';
|
|
3
|
+
import { useCalendarContext } from '../CalendarContext';
|
|
4
|
+
import { getFormatted, getParsedDate, getDaysNumInMonth, getTimeRange, getDate } from '../utils';
|
|
5
|
+
import Wheel from './WheelPicker/Wheel';
|
|
6
|
+
function createNumberList(start, end, first = 1) {
|
|
7
|
+
return new Array(end - start).fill(0).map((_, index) => ({
|
|
8
|
+
value: index + first + start,
|
|
9
|
+
text: String(index + first + start).padStart(2, '0')
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
const WheelSelector = ({
|
|
13
|
+
type
|
|
14
|
+
}) => {
|
|
15
|
+
const {
|
|
16
|
+
date,
|
|
17
|
+
currentDate,
|
|
18
|
+
onSelectYear,
|
|
19
|
+
onSelectMonth,
|
|
20
|
+
onSelectDate,
|
|
21
|
+
minDate = '1900-01-01',
|
|
22
|
+
maxDate = '2099-12-31'
|
|
23
|
+
} = useCalendarContext();
|
|
24
|
+
const latestValues = useRef({
|
|
25
|
+
date,
|
|
26
|
+
currentDate
|
|
27
|
+
});
|
|
28
|
+
const {
|
|
29
|
+
year,
|
|
30
|
+
month
|
|
31
|
+
} = useMemo(() => {
|
|
32
|
+
const cd = getDate(currentDate);
|
|
33
|
+
if (cd.isAfter(getDate(maxDate))) return getParsedDate(maxDate);
|
|
34
|
+
if (cd.isBefore(getDate(minDate))) return getParsedDate(minDate);
|
|
35
|
+
return getParsedDate(cd);
|
|
36
|
+
}, [currentDate, maxDate, minDate]);
|
|
37
|
+
const {
|
|
38
|
+
year: startYear,
|
|
39
|
+
month: startMonth
|
|
40
|
+
} = getParsedDate(minDate);
|
|
41
|
+
const {
|
|
42
|
+
year: endYear,
|
|
43
|
+
month: endMonth
|
|
44
|
+
} = getParsedDate(maxDate);
|
|
45
|
+
const {
|
|
46
|
+
hour,
|
|
47
|
+
minute,
|
|
48
|
+
second
|
|
49
|
+
} = getParsedDate(currentDate);
|
|
50
|
+
const years = createNumberList(startYear - 1, endYear);
|
|
51
|
+
const months = useMemo(() => createNumberList(startYear === year ? startMonth : 0, endYear === year ? endMonth + 1 : 12), [endMonth, endYear, startMonth, startYear, year]);
|
|
52
|
+
const days = useMemo(() => getDaysNumInMonth(year, month + 1, minDate, maxDate), [year, month, minDate, maxDate]);
|
|
53
|
+
const hours = useMemo(() => createNumberList(...getTimeRange(currentDate, minDate, maxDate, 'hour'), 0), [currentDate, maxDate, minDate]);
|
|
54
|
+
const minutes = useMemo(() => createNumberList(...getTimeRange(currentDate, minDate, maxDate, 'minute'), 0), [currentDate, maxDate, minDate]);
|
|
55
|
+
const seconds = useMemo(() => createNumberList(...getTimeRange(currentDate, minDate, maxDate, 'second'), 0), [currentDate, maxDate, minDate]);
|
|
56
|
+
const handleChangeDate = useCallback((value, type) => {
|
|
57
|
+
const {
|
|
58
|
+
date: latestDate,
|
|
59
|
+
currentDate: latestCurrentDate
|
|
60
|
+
} = latestValues.current;
|
|
61
|
+
const newDate = getDate(latestDate || latestCurrentDate)[type](value);
|
|
62
|
+
onSelectDate(getFormatted(newDate));
|
|
63
|
+
}, [onSelectDate]);
|
|
64
|
+
const renderItem = () => {
|
|
65
|
+
if (type === 'year') return /*#__PURE__*/React.createElement(Wheel, {
|
|
66
|
+
value: year,
|
|
67
|
+
items: years,
|
|
68
|
+
key: "year",
|
|
69
|
+
onChange: value => onSelectYear(value)
|
|
70
|
+
});
|
|
71
|
+
if (type === 'month') return /*#__PURE__*/React.createElement(Wheel, {
|
|
72
|
+
key: "month",
|
|
73
|
+
value: month + 1,
|
|
74
|
+
items: months,
|
|
75
|
+
onChange: value => onSelectMonth(value - 1)
|
|
76
|
+
});
|
|
77
|
+
if (type === 'day') return /*#__PURE__*/React.createElement(Wheel, {
|
|
78
|
+
key: "day",
|
|
79
|
+
value: getDate(currentDate).date(),
|
|
80
|
+
items: days,
|
|
81
|
+
onChange: value => handleChangeDate(value, 'date')
|
|
82
|
+
});
|
|
83
|
+
if (type === 'hour') return /*#__PURE__*/React.createElement(Wheel, {
|
|
84
|
+
key: "hour",
|
|
85
|
+
value: hour,
|
|
86
|
+
items: hours,
|
|
87
|
+
onChange: value => handleChangeDate(value, 'hour')
|
|
88
|
+
});
|
|
89
|
+
if (type === 'minute') return /*#__PURE__*/React.createElement(Wheel, {
|
|
90
|
+
key: "minute",
|
|
91
|
+
value: minute,
|
|
92
|
+
items: minutes,
|
|
93
|
+
onChange: value => handleChangeDate(value, 'minute')
|
|
94
|
+
});
|
|
95
|
+
if (type === 'second') return /*#__PURE__*/React.createElement(Wheel, {
|
|
96
|
+
key: "second",
|
|
97
|
+
value: second,
|
|
98
|
+
items: seconds,
|
|
99
|
+
onChange: value => handleChangeDate(value, 'second')
|
|
100
|
+
});
|
|
101
|
+
return null;
|
|
102
|
+
};
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
latestValues.current = {
|
|
105
|
+
date,
|
|
106
|
+
currentDate
|
|
107
|
+
};
|
|
108
|
+
}, [date, currentDate]);
|
|
109
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
110
|
+
style: styles.wheelContainer,
|
|
111
|
+
key: 'date-' + type
|
|
112
|
+
}, renderItem());
|
|
113
|
+
};
|
|
114
|
+
const styles = StyleSheet.create({
|
|
115
|
+
wheelContainer: {
|
|
116
|
+
flex: 1
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
export default WheelSelector;
|
|
120
|
+
//# sourceMappingURL=WheelSelector.js.map
|