react-native-timer-picker 2.1.0 → 2.2.0
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/README.md +227 -152
- package/dist/commonjs/components/DurationScroll/DurationScroll.js +417 -0
- package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -0
- package/dist/commonjs/components/DurationScroll/index.js +20 -392
- package/dist/commonjs/components/DurationScroll/index.js.map +1 -1
- package/dist/commonjs/components/DurationScroll/types.js.map +1 -1
- package/dist/commonjs/components/Modal/Modal.js +107 -0
- package/dist/commonjs/components/Modal/Modal.js.map +1 -0
- package/dist/commonjs/components/Modal/index.js +20 -101
- package/dist/commonjs/components/Modal/index.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/TimerPicker.js +225 -0
- package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -0
- package/dist/commonjs/components/TimerPicker/index.js +29 -166
- package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/styles.js +1 -1
- package/dist/commonjs/components/TimerPicker/styles.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/types.js.map +1 -1
- package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js +143 -0
- package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
- package/dist/commonjs/components/TimerPickerModal/index.js +30 -131
- package/dist/commonjs/components/TimerPickerModal/index.js.map +1 -1
- package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
- package/dist/commonjs/index.js +9 -13
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/tests/TimerPicker.test.js +4 -1
- package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
- package/dist/commonjs/utils/colorToRgba.js +35 -4
- package/dist/commonjs/utils/colorToRgba.js.map +1 -1
- package/dist/commonjs/utils/generateNumbers.js +67 -0
- package/dist/commonjs/utils/generateNumbers.js.map +1 -1
- package/dist/commonjs/utils/getAdjustedLimit.js +25 -0
- package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
- package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +38 -0
- package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
- package/dist/commonjs/utils/getInitialScrollIndex.js +38 -0
- package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -1
- package/dist/commonjs/utils/getSafeInitialValue.js +28 -0
- package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -1
- package/dist/commonjs/utils/padNumber.js +25 -0
- package/dist/commonjs/utils/padNumber.js.map +1 -1
- package/dist/module/components/DurationScroll/DurationScroll.js +410 -0
- package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -0
- package/dist/module/components/DurationScroll/index.js +2 -390
- package/dist/module/components/DurationScroll/index.js.map +1 -1
- package/dist/module/components/DurationScroll/types.js.map +1 -1
- package/dist/module/components/Modal/Modal.js +99 -0
- package/dist/module/components/Modal/Modal.js.map +1 -0
- package/dist/module/components/Modal/index.js +2 -98
- package/dist/module/components/Modal/index.js.map +1 -1
- package/dist/module/components/TimerPicker/TimerPicker.js +217 -0
- package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -0
- package/dist/module/components/TimerPicker/index.js +3 -166
- package/dist/module/components/TimerPicker/index.js.map +1 -1
- package/dist/module/components/TimerPicker/styles.js +1 -1
- package/dist/module/components/TimerPicker/styles.js.map +1 -1
- package/dist/module/components/TimerPicker/types.js.map +1 -1
- package/dist/module/components/TimerPickerModal/TimerPickerModal.js +135 -0
- package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -0
- package/dist/module/components/TimerPickerModal/index.js +3 -130
- package/dist/module/components/TimerPickerModal/index.js.map +1 -1
- package/dist/module/components/TimerPickerModal/types.js.map +1 -1
- package/dist/module/index.js +2 -6
- package/dist/module/index.js.map +1 -1
- package/dist/module/tests/TimerPicker.test.js +4 -1
- package/dist/module/tests/TimerPicker.test.js.map +1 -1
- package/dist/module/utils/colorToRgba.js +35 -4
- package/dist/module/utils/colorToRgba.js.map +1 -1
- package/dist/module/utils/generateNumbers.js +68 -0
- package/dist/module/utils/generateNumbers.js.map +1 -1
- package/dist/module/utils/getAdjustedLimit.js +25 -0
- package/dist/module/utils/getAdjustedLimit.js.map +1 -1
- package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +38 -0
- package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
- package/dist/module/utils/getInitialScrollIndex.js +38 -0
- package/dist/module/utils/getInitialScrollIndex.js.map +1 -1
- package/dist/module/utils/getSafeInitialValue.js +28 -0
- package/dist/module/utils/getSafeInitialValue.js.map +1 -1
- package/dist/module/utils/padNumber.js +25 -0
- package/dist/module/utils/padNumber.js.map +1 -1
- package/dist/typescript/components/DurationScroll/DurationScroll.d.ts +4 -0
- package/dist/typescript/components/DurationScroll/index.d.ts +2 -4
- package/dist/typescript/components/DurationScroll/types.d.ts +13 -9
- package/dist/typescript/components/Modal/Modal.d.ts +5 -0
- package/dist/typescript/components/Modal/index.d.ts +2 -5
- package/dist/typescript/components/TimerPicker/TimerPicker.d.ts +4 -0
- package/dist/typescript/components/TimerPicker/index.d.ts +3 -4
- package/dist/typescript/components/TimerPicker/styles.d.ts +1169 -771
- package/dist/typescript/components/TimerPicker/types.d.ts +26 -10
- package/dist/typescript/components/TimerPickerModal/TimerPickerModal.d.ts +4 -0
- package/dist/typescript/components/TimerPickerModal/index.d.ts +3 -4
- package/dist/typescript/components/TimerPickerModal/styles.d.ts +722 -474
- package/dist/typescript/components/TimerPickerModal/types.d.ts +8 -5
- package/dist/typescript/index.d.ts +2 -6
- package/dist/typescript/utils/colorToRgba.d.ts +34 -0
- package/dist/typescript/utils/generateNumbers.d.ts +66 -0
- package/dist/typescript/utils/getAdjustedLimit.d.ts +27 -2
- package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +38 -0
- package/dist/typescript/utils/getInitialScrollIndex.d.ts +38 -0
- package/dist/typescript/utils/getSafeInitialValue.d.ts +29 -0
- package/dist/typescript/utils/padNumber.d.ts +25 -0
- package/package.json +10 -27
|
@@ -1,167 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { getSafeInitialValue } from "../../utils/getSafeInitialValue";
|
|
5
|
-
import DurationScroll from "../DurationScroll";
|
|
6
|
-
import { generateStyles } from "./styles";
|
|
7
|
-
const TimerPicker = /*#__PURE__*/forwardRef((props, ref) => {
|
|
8
|
-
const {
|
|
9
|
-
aggressivelyGetLatestDuration = false,
|
|
10
|
-
allowFontScaling = false,
|
|
11
|
-
amLabel = "am",
|
|
12
|
-
disableInfiniteScroll = false,
|
|
13
|
-
hideHours = false,
|
|
14
|
-
hideMinutes = false,
|
|
15
|
-
hideSeconds = false,
|
|
16
|
-
hourInterval = 1,
|
|
17
|
-
hourLabel,
|
|
18
|
-
hourLimit,
|
|
19
|
-
hoursPickerIsDisabled = false,
|
|
20
|
-
initialValue,
|
|
21
|
-
maximumHours = 23,
|
|
22
|
-
maximumMinutes = 59,
|
|
23
|
-
maximumSeconds = 59,
|
|
24
|
-
minuteInterval = 1,
|
|
25
|
-
minuteLabel,
|
|
26
|
-
minuteLimit,
|
|
27
|
-
minutesPickerIsDisabled = false,
|
|
28
|
-
onDurationChange,
|
|
29
|
-
padHoursWithZero = false,
|
|
30
|
-
padMinutesWithZero = true,
|
|
31
|
-
padSecondsWithZero = true,
|
|
32
|
-
padWithNItems = 1,
|
|
33
|
-
pickerContainerProps,
|
|
34
|
-
pmLabel = "pm",
|
|
35
|
-
repeatHourNumbersNTimes = 8,
|
|
36
|
-
repeatMinuteNumbersNTimes = 3,
|
|
37
|
-
repeatSecondNumbersNTimes = 3,
|
|
38
|
-
secondInterval = 1,
|
|
39
|
-
secondLabel,
|
|
40
|
-
secondLimit,
|
|
41
|
-
secondsPickerIsDisabled = false,
|
|
42
|
-
styles: customStyles,
|
|
43
|
-
use12HourPicker = false,
|
|
44
|
-
...otherProps
|
|
45
|
-
} = props;
|
|
46
|
-
const safePadWithNItems = useMemo(() => {
|
|
47
|
-
if (padWithNItems < 0 || isNaN(padWithNItems)) {
|
|
48
|
-
return 0;
|
|
49
|
-
}
|
|
50
|
-
const maxPadWithNItems = hideHours ? 15 : 6;
|
|
51
|
-
if (padWithNItems > maxPadWithNItems) {
|
|
52
|
-
return maxPadWithNItems;
|
|
53
|
-
}
|
|
54
|
-
return Math.round(padWithNItems);
|
|
55
|
-
}, [hideHours, padWithNItems]);
|
|
56
|
-
const safeInitialValue = useMemo(() => getSafeInitialValue({
|
|
57
|
-
hours: initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours,
|
|
58
|
-
minutes: initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes,
|
|
59
|
-
seconds: initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds
|
|
60
|
-
}), [initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours, initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes, initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds]);
|
|
61
|
-
const styles = useMemo(() => generateStyles(customStyles), [customStyles]);
|
|
62
|
-
const [selectedHours, setSelectedHours] = useState(safeInitialValue.hours);
|
|
63
|
-
const [selectedMinutes, setSelectedMinutes] = useState(safeInitialValue.minutes);
|
|
64
|
-
const [selectedSeconds, setSelectedSeconds] = useState(safeInitialValue.seconds);
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
onDurationChange === null || onDurationChange === void 0 || onDurationChange({
|
|
67
|
-
hours: selectedHours,
|
|
68
|
-
minutes: selectedMinutes,
|
|
69
|
-
seconds: selectedSeconds
|
|
70
|
-
});
|
|
71
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
|
-
}, [selectedHours, selectedMinutes, selectedSeconds]);
|
|
73
|
-
const hoursDurationScrollRef = useRef(null);
|
|
74
|
-
const minutesDurationScrollRef = useRef(null);
|
|
75
|
-
const secondsDurationScrollRef = useRef(null);
|
|
76
|
-
useImperativeHandle(ref, () => {
|
|
77
|
-
var _hoursDurationScrollR3, _minutesDurationScrol3, _secondsDurationScrol3;
|
|
78
|
-
return {
|
|
79
|
-
reset: options => {
|
|
80
|
-
var _hoursDurationScrollR, _minutesDurationScrol, _secondsDurationScrol;
|
|
81
|
-
setSelectedHours(safeInitialValue.hours);
|
|
82
|
-
setSelectedMinutes(safeInitialValue.minutes);
|
|
83
|
-
setSelectedSeconds(safeInitialValue.seconds);
|
|
84
|
-
(_hoursDurationScrollR = hoursDurationScrollRef.current) === null || _hoursDurationScrollR === void 0 || _hoursDurationScrollR.reset(options);
|
|
85
|
-
(_minutesDurationScrol = minutesDurationScrollRef.current) === null || _minutesDurationScrol === void 0 || _minutesDurationScrol.reset(options);
|
|
86
|
-
(_secondsDurationScrol = secondsDurationScrollRef.current) === null || _secondsDurationScrol === void 0 || _secondsDurationScrol.reset(options);
|
|
87
|
-
},
|
|
88
|
-
setValue: (value, options) => {
|
|
89
|
-
var _hoursDurationScrollR2, _minutesDurationScrol2, _secondsDurationScrol2;
|
|
90
|
-
setSelectedHours(value.hours);
|
|
91
|
-
setSelectedMinutes(value.minutes);
|
|
92
|
-
setSelectedSeconds(value.seconds);
|
|
93
|
-
(_hoursDurationScrollR2 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR2 === void 0 || _hoursDurationScrollR2.setValue(value.hours, options);
|
|
94
|
-
(_minutesDurationScrol2 = minutesDurationScrollRef.current) === null || _minutesDurationScrol2 === void 0 || _minutesDurationScrol2.setValue(value.minutes, options);
|
|
95
|
-
(_secondsDurationScrol2 = secondsDurationScrollRef.current) === null || _secondsDurationScrol2 === void 0 || _secondsDurationScrol2.setValue(value.seconds, options);
|
|
96
|
-
},
|
|
97
|
-
latestDuration: {
|
|
98
|
-
hours: (_hoursDurationScrollR3 = hoursDurationScrollRef.current) === null || _hoursDurationScrollR3 === void 0 ? void 0 : _hoursDurationScrollR3.latestDuration,
|
|
99
|
-
minutes: (_minutesDurationScrol3 = minutesDurationScrollRef.current) === null || _minutesDurationScrol3 === void 0 ? void 0 : _minutesDurationScrol3.latestDuration,
|
|
100
|
-
seconds: (_secondsDurationScrol3 = secondsDurationScrollRef.current) === null || _secondsDurationScrol3 === void 0 ? void 0 : _secondsDurationScrol3.latestDuration
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
});
|
|
104
|
-
return /*#__PURE__*/React.createElement(View, _extends({}, pickerContainerProps, {
|
|
105
|
-
style: styles.pickerContainer,
|
|
106
|
-
testID: "timer-picker"
|
|
107
|
-
}), !hideHours ? /*#__PURE__*/React.createElement(DurationScroll, _extends({
|
|
108
|
-
ref: hoursDurationScrollRef,
|
|
109
|
-
aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
|
|
110
|
-
allowFontScaling: allowFontScaling,
|
|
111
|
-
amLabel: amLabel,
|
|
112
|
-
disableInfiniteScroll: disableInfiniteScroll,
|
|
113
|
-
initialValue: safeInitialValue.hours,
|
|
114
|
-
interval: hourInterval,
|
|
115
|
-
is12HourPicker: use12HourPicker,
|
|
116
|
-
isDisabled: hoursPickerIsDisabled,
|
|
117
|
-
label: hourLabel ?? (!use12HourPicker ? "h" : undefined),
|
|
118
|
-
limit: hourLimit,
|
|
119
|
-
maximumValue: maximumHours,
|
|
120
|
-
onDurationChange: setSelectedHours,
|
|
121
|
-
padNumbersWithZero: padHoursWithZero,
|
|
122
|
-
padWithNItems: safePadWithNItems,
|
|
123
|
-
pmLabel: pmLabel,
|
|
124
|
-
repeatNumbersNTimes: repeatHourNumbersNTimes,
|
|
125
|
-
repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatHourNumbersNTimes) === undefined,
|
|
126
|
-
styles: styles,
|
|
127
|
-
testID: "duration-scroll-hour"
|
|
128
|
-
}, otherProps)) : null, !hideMinutes ? /*#__PURE__*/React.createElement(DurationScroll, _extends({
|
|
129
|
-
ref: minutesDurationScrollRef,
|
|
130
|
-
aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
|
|
131
|
-
allowFontScaling: allowFontScaling,
|
|
132
|
-
disableInfiniteScroll: disableInfiniteScroll,
|
|
133
|
-
initialValue: safeInitialValue.minutes,
|
|
134
|
-
interval: minuteInterval,
|
|
135
|
-
isDisabled: minutesPickerIsDisabled,
|
|
136
|
-
label: minuteLabel ?? "m",
|
|
137
|
-
limit: minuteLimit,
|
|
138
|
-
maximumValue: maximumMinutes,
|
|
139
|
-
onDurationChange: setSelectedMinutes,
|
|
140
|
-
padNumbersWithZero: padMinutesWithZero,
|
|
141
|
-
padWithNItems: safePadWithNItems,
|
|
142
|
-
repeatNumbersNTimes: repeatMinuteNumbersNTimes,
|
|
143
|
-
repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatMinuteNumbersNTimes) === undefined,
|
|
144
|
-
styles: styles,
|
|
145
|
-
testID: "duration-scroll-minute"
|
|
146
|
-
}, otherProps)) : null, !hideSeconds ? /*#__PURE__*/React.createElement(DurationScroll, _extends({
|
|
147
|
-
ref: secondsDurationScrollRef,
|
|
148
|
-
aggressivelyGetLatestDuration: aggressivelyGetLatestDuration,
|
|
149
|
-
allowFontScaling: allowFontScaling,
|
|
150
|
-
disableInfiniteScroll: disableInfiniteScroll,
|
|
151
|
-
initialValue: safeInitialValue.seconds,
|
|
152
|
-
interval: secondInterval,
|
|
153
|
-
isDisabled: secondsPickerIsDisabled,
|
|
154
|
-
label: secondLabel ?? "s",
|
|
155
|
-
limit: secondLimit,
|
|
156
|
-
maximumValue: maximumSeconds,
|
|
157
|
-
onDurationChange: setSelectedSeconds,
|
|
158
|
-
padNumbersWithZero: padSecondsWithZero,
|
|
159
|
-
padWithNItems: safePadWithNItems,
|
|
160
|
-
repeatNumbersNTimes: repeatSecondNumbersNTimes,
|
|
161
|
-
repeatNumbersNTimesNotExplicitlySet: (props === null || props === void 0 ? void 0 : props.repeatSecondNumbersNTimes) === undefined,
|
|
162
|
-
styles: styles,
|
|
163
|
-
testID: "duration-scroll-second"
|
|
164
|
-
}, otherProps)) : null);
|
|
165
|
-
});
|
|
166
|
-
export default /*#__PURE__*/React.memo(TimerPicker);
|
|
1
|
+
export { default } from "./TimerPicker";
|
|
2
|
+
export * from "./types";
|
|
3
|
+
export * from "./styles";
|
|
167
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","getSafeInitialValue","DurationScroll","generateStyles","TimerPicker","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","disableInfiniteScroll","hideHours","hideMinutes","hideSeconds","hourInterval","hourLabel","hourLimit","hoursPickerIsDisabled","initialValue","maximumHours","maximumMinutes","maximumSeconds","minuteInterval","minuteLabel","minuteLimit","minutesPickerIsDisabled","onDurationChange","padHoursWithZero","padMinutesWithZero","padSecondsWithZero","padWithNItems","pickerContainerProps","pmLabel","repeatHourNumbersNTimes","repeatMinuteNumbersNTimes","repeatSecondNumbersNTimes","secondInterval","secondLabel","secondLimit","secondsPickerIsDisabled","styles","customStyles","use12HourPicker","otherProps","safePadWithNItems","isNaN","maxPadWithNItems","Math","round","safeInitialValue","hours","minutes","seconds","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","interval","is12HourPicker","isDisabled","label","undefined","limit","maximumValue","padNumbersWithZero","repeatNumbersNTimes","repeatNumbersNTimesNotExplicitlySet","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { View } from \"react-native\";\n\nimport { getSafeInitialValue } from \"../../utils/getSafeInitialValue\";\nimport DurationScroll from \"../DurationScroll\";\nimport type { DurationScrollRef } from \"../DurationScroll/types\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration = false,\n allowFontScaling = false,\n amLabel = \"am\",\n disableInfiniteScroll = false,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourInterval = 1,\n hourLabel,\n hourLimit,\n hoursPickerIsDisabled = false,\n initialValue,\n maximumHours = 23,\n maximumMinutes = 59,\n maximumSeconds = 59,\n minuteInterval = 1,\n minuteLabel,\n minuteLimit,\n minutesPickerIsDisabled = false,\n onDurationChange,\n padHoursWithZero = false,\n padMinutesWithZero = true,\n padSecondsWithZero = true,\n padWithNItems = 1,\n pickerContainerProps,\n pmLabel = \"pm\",\n repeatHourNumbersNTimes = 8,\n repeatMinuteNumbersNTimes = 3,\n repeatSecondNumbersNTimes = 3,\n secondInterval = 1,\n secondLabel,\n secondLimit,\n secondsPickerIsDisabled = false,\n styles: customStyles,\n use12HourPicker = false,\n ...otherProps\n } = props;\n\n const safePadWithNItems = useMemo(() => {\n if (padWithNItems < 0 || isNaN(padWithNItems)) {\n return 0;\n }\n\n const maxPadWithNItems = hideHours ? 15 : 6;\n\n if (padWithNItems > maxPadWithNItems) {\n return maxPadWithNItems;\n }\n\n return Math.round(padWithNItems);\n }, [hideHours, padWithNItems]);\n\n const safeInitialValue = useMemo(\n () =>\n getSafeInitialValue({\n hours: initialValue?.hours,\n minutes: initialValue?.minutes,\n seconds: initialValue?.seconds,\n }),\n [initialValue?.hours, initialValue?.minutes, initialValue?.seconds]\n );\n\n const styles = useMemo(\n () => generateStyles(customStyles),\n\n [customStyles]\n );\n\n const [selectedHours, setSelectedHours] = useState(\n safeInitialValue.hours\n );\n const [selectedMinutes, setSelectedMinutes] = useState(\n safeInitialValue.minutes\n );\n const [selectedSeconds, setSelectedSeconds] = useState(\n safeInitialValue.seconds\n );\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(safeInitialValue.hours);\n setSelectedMinutes(safeInitialValue.minutes);\n setSelectedSeconds(safeInitialValue.seconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.hours}\n interval={hourInterval}\n is12HourPicker={use12HourPicker}\n isDisabled={hoursPickerIsDisabled}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n limit={hourLimit}\n maximumValue={maximumHours}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={safePadWithNItems}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatHourNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.minutes}\n interval={minuteInterval}\n isDisabled={minutesPickerIsDisabled}\n label={minuteLabel ?? \"m\"}\n limit={minuteLimit}\n maximumValue={maximumMinutes}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero={padMinutesWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatMinuteNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.seconds}\n interval={secondInterval}\n isDisabled={secondsPickerIsDisabled}\n label={secondLabel ?? \"s\"}\n limit={secondLimit}\n maximumValue={maximumSeconds}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero={padSecondsWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n repeatNumbersNTimesNotExplicitlySet={\n props?.repeatSecondNumbersNTimes === undefined\n }\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from \"./TimerPicker\";\n\nexport * from \"./types\";\n\nexport * from \"./styles\";\n\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AAEvC,cAAc,SAAS;AAEvB,cAAc,UAAU","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import { StyleSheet } from "react-native";
|
|
|
2
2
|
const DARK_MODE_BACKGROUND_COLOR = "#232323";
|
|
3
3
|
const DARK_MODE_TEXT_COLOR = "#E9E9E9";
|
|
4
4
|
const LIGHT_MODE_BACKGROUND_COLOR = "#F1F1F1";
|
|
5
|
-
const LIGHT_MODE_TEXT_COLOR = "#
|
|
5
|
+
const LIGHT_MODE_TEXT_COLOR = "#1B1B1B";
|
|
6
6
|
export const generateStyles = customStyles => {
|
|
7
7
|
var _customStyles$pickerL, _customStyles$text, _customStyles$pickerI, _customStyles$text2, _customStyles$pickerI2, _customStyles$pickerI3;
|
|
8
8
|
return StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","_customStyles$pickerL","_customStyles$text","_customStyles$pickerI","_customStyles$text2","_customStyles$pickerI2","_customStyles$pickerI3","create","pickerContainer","flexDirection","marginRight","backgroundColor","theme","pickerLabelContainer","position","right","top","bottom","justifyContent","minWidth","pickerLabel","fontSize","text","fontWeight","marginTop","pickerItem","color","pickerItemContainer","height","alignItems","width","textAlignVertical","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","opacity","disabledPickerItem","maskedView","flex","pickerGradientOverlay","durationScrollFlatList","durationScrollFlatListContainer","overflow","durationScrollFlatListContentContainer"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\nimport type { TextStyle, ViewStyle } from \"react-native\";\n\nexport interface CustomTimerPickerStyles {\n backgroundColor?: string;\n disabledPickerContainer?: ViewStyle;\n disabledPickerItem?: TextStyle;\n durationScrollFlatList?: ViewStyle;\n durationScrollFlatListContainer?: ViewStyle;\n durationScrollFlatListContentContainer?: ViewStyle;\n pickerAmPmContainer?: ViewStyle;\n pickerAmPmLabel?: TextStyle;\n pickerContainer?: ViewStyle & { backgroundColor?: string };\n pickerGradientOverlay?: ViewStyle;\n pickerItem?: TextStyle;\n pickerItemContainer?: ViewStyle & { height?: number };\n pickerLabel?: TextStyle;\n pickerLabelContainer?: ViewStyle;\n text?: TextStyle;\n theme?: \"light\" | \"dark\";\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#
|
|
1
|
+
{"version":3,"names":["StyleSheet","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","_customStyles$pickerL","_customStyles$text","_customStyles$pickerI","_customStyles$text2","_customStyles$pickerI2","_customStyles$pickerI3","create","pickerContainer","flexDirection","marginRight","backgroundColor","theme","pickerLabelContainer","position","right","top","bottom","justifyContent","minWidth","pickerLabel","fontSize","text","fontWeight","marginTop","pickerItem","color","pickerItemContainer","height","alignItems","width","textAlignVertical","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","opacity","disabledPickerItem","maskedView","flex","pickerGradientOverlay","durationScrollFlatList","durationScrollFlatListContainer","overflow","durationScrollFlatListContentContainer"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\nimport type { TextStyle, ViewStyle } from \"react-native\";\n\nexport interface CustomTimerPickerStyles {\n backgroundColor?: string;\n disabledPickerContainer?: ViewStyle;\n disabledPickerItem?: TextStyle;\n durationScrollFlatList?: ViewStyle;\n durationScrollFlatListContainer?: ViewStyle;\n durationScrollFlatListContentContainer?: ViewStyle;\n pickerAmPmContainer?: ViewStyle;\n pickerAmPmLabel?: TextStyle;\n pickerContainer?: ViewStyle & { backgroundColor?: string };\n pickerGradientOverlay?: ViewStyle;\n pickerItem?: TextStyle;\n pickerItemContainer?: ViewStyle & { height?: number };\n pickerLabel?: TextStyle;\n pickerLabelContainer?: ViewStyle;\n text?: TextStyle;\n theme?: \"light\" | \"dark\";\n}\n\nconst DARK_MODE_BACKGROUND_COLOR = \"#232323\";\nconst DARK_MODE_TEXT_COLOR = \"#E9E9E9\";\nconst LIGHT_MODE_BACKGROUND_COLOR = \"#F1F1F1\";\nconst LIGHT_MODE_TEXT_COLOR = \"#1B1B1B\";\n\nexport const generateStyles = (\n customStyles: CustomTimerPickerStyles | undefined\n) =>\n StyleSheet.create({\n pickerContainer: {\n flexDirection: \"row\",\n marginRight: \"8%\",\n backgroundColor:\n customStyles?.backgroundColor ??\n (customStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR),\n ...customStyles?.pickerContainer,\n },\n pickerLabelContainer: {\n position: \"absolute\",\n right: 4,\n top: 0,\n bottom: 0,\n justifyContent: \"center\",\n minWidth:\n (customStyles?.pickerLabel?.fontSize ??\n customStyles?.text?.fontSize ??\n 25) * 0.65,\n ...customStyles?.pickerLabelContainer,\n },\n pickerLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n marginTop:\n (customStyles?.pickerItem?.fontSize ??\n customStyles?.text?.fontSize ??\n 25) / 6,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n },\n pickerItemContainer: {\n flexDirection: \"row\",\n height: 50,\n justifyContent: \"center\",\n alignItems: \"center\",\n width: (customStyles?.pickerItem?.fontSize ?? 25) * 3.6,\n ...customStyles?.pickerItemContainer,\n },\n pickerItem: {\n textAlignVertical: \"center\",\n fontSize: 25,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerItem,\n },\n pickerAmPmContainer: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n justifyContent: \"center\",\n ...customStyles?.pickerLabelContainer,\n ...customStyles?.pickerAmPmContainer,\n },\n pickerAmPmLabel: {\n fontSize: 18,\n fontWeight: \"bold\",\n marginTop: (customStyles?.pickerItem?.fontSize ?? 25) / 6,\n color:\n customStyles?.theme === \"dark\"\n ? DARK_MODE_TEXT_COLOR\n : LIGHT_MODE_TEXT_COLOR,\n ...customStyles?.text,\n ...customStyles?.pickerLabel,\n ...customStyles?.pickerAmPmLabel,\n },\n disabledPickerContainer: {\n opacity: 0.4,\n ...customStyles?.disabledPickerContainer,\n },\n disabledPickerItem: {\n opacity: 0.2,\n ...customStyles?.disabledPickerItem,\n },\n maskedView: {\n flex: 1,\n },\n pickerGradientOverlay: {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n ...customStyles?.pickerGradientOverlay,\n },\n durationScrollFlatList: {\n minWidth: 1,\n width: \"300%\",\n ...customStyles?.durationScrollFlatList,\n },\n durationScrollFlatListContainer: {\n overflow: \"visible\",\n ...customStyles?.durationScrollFlatListContainer,\n },\n durationScrollFlatListContentContainer: {\n ...customStyles?.durationScrollFlatListContentContainer,\n },\n });\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { View } from \"react-native\";\n\nimport type {\n LinearGradientProps,\n SoundAsset,\n Limit,\n} from \"../DurationScroll/types\";\n\nimport type { CustomTimerPickerStyles } from \"./styles\";\n\nexport interface TimerPickerRef {\n latestDuration: {\n days: RefObject<number> | undefined;\n hours: RefObject<number> | undefined;\n minutes: RefObject<number> | undefined;\n seconds: RefObject<number> | undefined;\n };\n reset: (options?: { animated?: boolean }) => void;\n setValue: (\n value: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n },\n options?: { animated?: boolean }\n ) => void;\n}\n\nexport interface TimerPickerProps {\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Audio?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n FlatList?: any;\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Haptics?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LinearGradient?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedView?: any;\n aggressivelyGetLatestDuration?: boolean;\n allowFontScaling?: boolean;\n amLabel?: string;\n /** @deprecated Use pickerFeedback prop instead. Will be removed in a future version. */\n clickSoundAsset?: SoundAsset;\n dayInterval?: number;\n dayLabel?: string | React.ReactElement;\n dayLimit?: Limit;\n daysPickerIsDisabled?: boolean;\n decelerationRate?: number | \"normal\" | \"fast\";\n disableInfiniteScroll?: boolean;\n hideDays?: boolean;\n hideHours?: boolean;\n hideMinutes?: boolean;\n hideSeconds?: boolean;\n hourInterval?: number;\n hourLabel?: string | React.ReactElement;\n hourLimit?: Limit;\n hoursPickerIsDisabled?: boolean;\n initialValue?: {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n };\n maximumDays?: number;\n maximumHours?: number;\n maximumMinutes?: number;\n maximumSeconds?: number;\n minuteInterval?: number;\n minuteLabel?: string | React.ReactElement;\n minuteLimit?: Limit;\n minutesPickerIsDisabled?: boolean;\n onDurationChange?: (duration: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n padDaysWithZero?: boolean;\n padHoursWithZero?: boolean;\n padMinutesWithZero?: boolean;\n padSecondsWithZero?: boolean;\n padWithNItems?: number;\n pickerContainerProps?: React.ComponentProps<typeof View>;\n pickerFeedback?: () => void | Promise<void>;\n pickerGradientOverlayProps?: Partial<LinearGradientProps>;\n pmLabel?: string;\n repeatDayNumbersNTimes?: number;\n repeatHourNumbersNTimes?: number;\n repeatMinuteNumbersNTimes?: number;\n repeatSecondNumbersNTimes?: number;\n secondInterval?: number;\n secondLabel?: string | React.ReactElement;\n secondLimit?: Limit;\n secondsPickerIsDisabled?: boolean;\n styles?: CustomTimerPickerStyles;\n use12HourPicker?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
3
|
+
import { View, Text, TouchableOpacity } from "react-native";
|
|
4
|
+
import { getSafeInitialValue } from "../../utils/getSafeInitialValue";
|
|
5
|
+
import Modal from "../Modal";
|
|
6
|
+
import TimerPicker from "../TimerPicker";
|
|
7
|
+
import { generateStyles } from "./styles";
|
|
8
|
+
const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
9
|
+
const {
|
|
10
|
+
buttonContainerProps,
|
|
11
|
+
buttonTouchableOpacityProps,
|
|
12
|
+
cancelButtonText = "Cancel",
|
|
13
|
+
closeOnOverlayPress,
|
|
14
|
+
confirmButtonText = "Confirm",
|
|
15
|
+
containerProps,
|
|
16
|
+
contentContainerProps,
|
|
17
|
+
hideCancelButton = false,
|
|
18
|
+
initialValue,
|
|
19
|
+
modalProps,
|
|
20
|
+
modalTitle,
|
|
21
|
+
modalTitleProps,
|
|
22
|
+
onCancel,
|
|
23
|
+
onConfirm,
|
|
24
|
+
onDurationChange,
|
|
25
|
+
setIsVisible,
|
|
26
|
+
styles: customStyles,
|
|
27
|
+
visible,
|
|
28
|
+
...otherProps
|
|
29
|
+
} = props;
|
|
30
|
+
const styles = generateStyles(customStyles, {
|
|
31
|
+
hasModalTitle: Boolean(modalTitle)
|
|
32
|
+
});
|
|
33
|
+
const timerPickerRef = useRef(null);
|
|
34
|
+
const safeInitialValue = getSafeInitialValue({
|
|
35
|
+
days: initialValue === null || initialValue === void 0 ? void 0 : initialValue.days,
|
|
36
|
+
hours: initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours,
|
|
37
|
+
minutes: initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes,
|
|
38
|
+
seconds: initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds
|
|
39
|
+
});
|
|
40
|
+
const [selectedDuration, setSelectedDuration] = useState(safeInitialValue);
|
|
41
|
+
const [confirmedDuration, setConfirmedDuration] = useState(safeInitialValue);
|
|
42
|
+
const reset = options => {
|
|
43
|
+
var _timerPickerRef$curre;
|
|
44
|
+
setSelectedDuration(safeInitialValue);
|
|
45
|
+
setConfirmedDuration(safeInitialValue);
|
|
46
|
+
(_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// reset state if the initial value changes
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
reset();
|
|
52
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
|
+
}, [safeInitialValue.days, safeInitialValue.hours, safeInitialValue.minutes, safeInitialValue.seconds]);
|
|
54
|
+
const hideModalHandler = () => {
|
|
55
|
+
setSelectedDuration({
|
|
56
|
+
days: confirmedDuration.days,
|
|
57
|
+
hours: confirmedDuration.hours,
|
|
58
|
+
minutes: confirmedDuration.minutes,
|
|
59
|
+
seconds: confirmedDuration.seconds
|
|
60
|
+
});
|
|
61
|
+
setIsVisible(false);
|
|
62
|
+
};
|
|
63
|
+
const confirmHandler = () => {
|
|
64
|
+
var _timerPickerRef$curre2, _latestDuration$days, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
|
|
65
|
+
const latestDuration = (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 ? void 0 : _timerPickerRef$curre2.latestDuration;
|
|
66
|
+
const newDuration = {
|
|
67
|
+
days: (latestDuration === null || latestDuration === void 0 || (_latestDuration$days = latestDuration.days) === null || _latestDuration$days === void 0 ? void 0 : _latestDuration$days.current) ?? selectedDuration.days,
|
|
68
|
+
hours: (latestDuration === null || latestDuration === void 0 || (_latestDuration$hours = latestDuration.hours) === null || _latestDuration$hours === void 0 ? void 0 : _latestDuration$hours.current) ?? selectedDuration.hours,
|
|
69
|
+
minutes: (latestDuration === null || latestDuration === void 0 || (_latestDuration$minut = latestDuration.minutes) === null || _latestDuration$minut === void 0 ? void 0 : _latestDuration$minut.current) ?? selectedDuration.minutes,
|
|
70
|
+
seconds: (latestDuration === null || latestDuration === void 0 || (_latestDuration$secon = latestDuration.seconds) === null || _latestDuration$secon === void 0 ? void 0 : _latestDuration$secon.current) ?? selectedDuration.seconds
|
|
71
|
+
};
|
|
72
|
+
setConfirmedDuration(newDuration);
|
|
73
|
+
onConfirm(newDuration);
|
|
74
|
+
};
|
|
75
|
+
const cancelHandler = () => {
|
|
76
|
+
setIsVisible(false);
|
|
77
|
+
setSelectedDuration(confirmedDuration);
|
|
78
|
+
onCancel === null || onCancel === void 0 || onCancel();
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// wrapped in useCallback to avoid unnecessary re-renders of TimerPicker
|
|
82
|
+
const durationChangeHandler = useCallback(duration => {
|
|
83
|
+
setSelectedDuration(duration);
|
|
84
|
+
onDurationChange === null || onDurationChange === void 0 || onDurationChange(duration);
|
|
85
|
+
}, [onDurationChange]);
|
|
86
|
+
useImperativeHandle(ref, () => {
|
|
87
|
+
var _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6, _timerPickerRef$curre7;
|
|
88
|
+
return {
|
|
89
|
+
reset,
|
|
90
|
+
setValue: (value, options) => {
|
|
91
|
+
var _timerPickerRef$curre3;
|
|
92
|
+
setSelectedDuration(value);
|
|
93
|
+
setConfirmedDuration(value);
|
|
94
|
+
(_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || _timerPickerRef$curre3.setValue(value, options);
|
|
95
|
+
},
|
|
96
|
+
latestDuration: {
|
|
97
|
+
days: (_timerPickerRef$curre4 = timerPickerRef.current) === null || _timerPickerRef$curre4 === void 0 || (_timerPickerRef$curre4 = _timerPickerRef$curre4.latestDuration) === null || _timerPickerRef$curre4 === void 0 ? void 0 : _timerPickerRef$curre4.days,
|
|
98
|
+
hours: (_timerPickerRef$curre5 = timerPickerRef.current) === null || _timerPickerRef$curre5 === void 0 || (_timerPickerRef$curre5 = _timerPickerRef$curre5.latestDuration) === null || _timerPickerRef$curre5 === void 0 ? void 0 : _timerPickerRef$curre5.hours,
|
|
99
|
+
minutes: (_timerPickerRef$curre6 = timerPickerRef.current) === null || _timerPickerRef$curre6 === void 0 || (_timerPickerRef$curre6 = _timerPickerRef$curre6.latestDuration) === null || _timerPickerRef$curre6 === void 0 ? void 0 : _timerPickerRef$curre6.minutes,
|
|
100
|
+
seconds: (_timerPickerRef$curre7 = timerPickerRef.current) === null || _timerPickerRef$curre7 === void 0 || (_timerPickerRef$curre7 = _timerPickerRef$curre7.latestDuration) === null || _timerPickerRef$curre7 === void 0 ? void 0 : _timerPickerRef$curre7.seconds
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
return /*#__PURE__*/React.createElement(Modal, _extends({
|
|
105
|
+
isVisible: visible,
|
|
106
|
+
onOverlayPress: closeOnOverlayPress ? hideModalHandler : undefined
|
|
107
|
+
}, modalProps, {
|
|
108
|
+
testID: "timer-picker-modal"
|
|
109
|
+
}), /*#__PURE__*/React.createElement(View, _extends({}, containerProps, {
|
|
110
|
+
style: styles.container
|
|
111
|
+
}), /*#__PURE__*/React.createElement(View, _extends({}, contentContainerProps, {
|
|
112
|
+
style: styles.contentContainer
|
|
113
|
+
}), modalTitle ? /*#__PURE__*/React.createElement(Text, _extends({}, modalTitleProps, {
|
|
114
|
+
style: styles.modalTitle
|
|
115
|
+
}), modalTitle) : null, /*#__PURE__*/React.createElement(TimerPicker, _extends({
|
|
116
|
+
ref: timerPickerRef,
|
|
117
|
+
initialValue: confirmedDuration
|
|
118
|
+
}, otherProps, {
|
|
119
|
+
aggressivelyGetLatestDuration: true,
|
|
120
|
+
onDurationChange: durationChangeHandler,
|
|
121
|
+
styles: styles.timerPickerStyles
|
|
122
|
+
})), /*#__PURE__*/React.createElement(View, _extends({}, buttonContainerProps, {
|
|
123
|
+
style: styles.buttonContainer
|
|
124
|
+
}), !hideCancelButton ? /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
125
|
+
onPress: cancelHandler
|
|
126
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
127
|
+
style: [styles.button, styles.cancelButton]
|
|
128
|
+
}, cancelButtonText)) : null, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
129
|
+
onPress: confirmHandler
|
|
130
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
131
|
+
style: [styles.button, styles.confirmButton]
|
|
132
|
+
}, confirmButtonText))))));
|
|
133
|
+
});
|
|
134
|
+
export default /*#__PURE__*/React.memo(TimerPickerModal);
|
|
135
|
+
//# sourceMappingURL=TimerPickerModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","getSafeInitialValue","Modal","TimerPicker","generateStyles","TimerPickerModal","props","ref","buttonContainerProps","buttonTouchableOpacityProps","cancelButtonText","closeOnOverlayPress","confirmButtonText","containerProps","contentContainerProps","hideCancelButton","initialValue","modalProps","modalTitle","modalTitleProps","onCancel","onConfirm","onDurationChange","setIsVisible","styles","customStyles","visible","otherProps","hasModalTitle","Boolean","timerPickerRef","safeInitialValue","days","hours","minutes","seconds","selectedDuration","setSelectedDuration","confirmedDuration","setConfirmedDuration","reset","options","_timerPickerRef$curre","current","hideModalHandler","confirmHandler","_timerPickerRef$curre2","_latestDuration$days","_latestDuration$hours","_latestDuration$minut","_latestDuration$secon","latestDuration","newDuration","cancelHandler","durationChangeHandler","duration","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","_timerPickerRef$curre7","setValue","value","_timerPickerRef$curre3","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","onPress","button","cancelButton","confirmButton","memo"],"sources":["TimerPickerModal.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\n\nimport { View, Text, TouchableOpacity } from \"react-native\";\n\nimport { getSafeInitialValue } from \"../../utils/getSafeInitialValue\";\nimport Modal from \"../Modal\";\nimport TimerPicker from \"../TimerPicker\";\nimport type { TimerPickerRef } from \"../TimerPicker\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerModalRef, TimerPickerModalProps } from \"./types\";\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>(\n (props, ref) => {\n const {\n buttonContainerProps,\n buttonTouchableOpacityProps,\n cancelButtonText = \"Cancel\",\n closeOnOverlayPress,\n confirmButtonText = \"Confirm\",\n containerProps,\n contentContainerProps,\n hideCancelButton = false,\n initialValue,\n modalProps,\n modalTitle,\n modalTitleProps,\n onCancel,\n onConfirm,\n onDurationChange,\n setIsVisible,\n styles: customStyles,\n visible,\n ...otherProps\n } = props;\n\n const styles = generateStyles(customStyles, {\n hasModalTitle: Boolean(modalTitle),\n });\n\n const timerPickerRef = useRef<TimerPickerRef>(null);\n\n const safeInitialValue = getSafeInitialValue({\n days: initialValue?.days,\n hours: initialValue?.hours,\n minutes: initialValue?.minutes,\n seconds: initialValue?.seconds,\n });\n\n const [selectedDuration, setSelectedDuration] =\n useState(safeInitialValue);\n const [confirmedDuration, setConfirmedDuration] =\n useState(safeInitialValue);\n\n const reset = (options?: { animated?: boolean }) => {\n setSelectedDuration(safeInitialValue);\n setConfirmedDuration(safeInitialValue);\n timerPickerRef.current?.reset(options);\n };\n\n // reset state if the initial value changes\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n safeInitialValue.days,\n safeInitialValue.hours,\n safeInitialValue.minutes,\n safeInitialValue.seconds,\n ]);\n\n const hideModalHandler = () => {\n setSelectedDuration({\n days: confirmedDuration.days,\n hours: confirmedDuration.hours,\n minutes: confirmedDuration.minutes,\n seconds: confirmedDuration.seconds,\n });\n setIsVisible(false);\n };\n\n const confirmHandler = () => {\n const latestDuration = timerPickerRef.current?.latestDuration;\n\n const newDuration = {\n days: latestDuration?.days?.current ?? selectedDuration.days,\n hours: latestDuration?.hours?.current ?? selectedDuration.hours,\n minutes:\n latestDuration?.minutes?.current ??\n selectedDuration.minutes,\n seconds:\n latestDuration?.seconds?.current ??\n selectedDuration.seconds,\n };\n setConfirmedDuration(newDuration);\n onConfirm(newDuration);\n };\n\n const cancelHandler = () => {\n setIsVisible(false);\n setSelectedDuration(confirmedDuration);\n onCancel?.();\n };\n\n // wrapped in useCallback to avoid unnecessary re-renders of TimerPicker\n const durationChangeHandler = useCallback(\n (duration: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\n reset,\n setValue: (value, options) => {\n setSelectedDuration(value);\n setConfirmedDuration(value);\n timerPickerRef.current?.setValue(value, options);\n },\n latestDuration: {\n days: timerPickerRef.current?.latestDuration?.days,\n hours: timerPickerRef.current?.latestDuration?.hours,\n minutes: timerPickerRef.current?.latestDuration?.minutes,\n seconds: timerPickerRef.current?.latestDuration?.seconds,\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={\n closeOnOverlayPress ? hideModalHandler : undefined\n }\n {...modalProps}\n testID=\"timer-picker-modal\">\n <View {...containerProps} style={styles.container}>\n <View\n {...contentContainerProps}\n style={styles.contentContainer}>\n {modalTitle ? (\n <Text\n {...modalTitleProps}\n style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n initialValue={confirmedDuration}\n {...otherProps}\n aggressivelyGetLatestDuration\n onDurationChange={durationChangeHandler}\n styles={styles.timerPickerStyles}\n />\n <View\n {...buttonContainerProps}\n style={styles.buttonContainer}>\n {!hideCancelButton ? (\n <TouchableOpacity\n {...buttonTouchableOpacityProps}\n onPress={cancelHandler}>\n <Text\n style={[\n styles.button,\n styles.cancelButton,\n ]}>\n {cancelButtonText}\n </Text>\n </TouchableOpacity>\n ) : null}\n <TouchableOpacity\n {...buttonTouchableOpacityProps}\n onPress={confirmHandler}>\n <Text\n style={[\n styles.button,\n styles.confirmButton,\n ]}>\n {confirmButtonText}\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </Modal>\n );\n }\n);\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,131 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { getSafeInitialValue } from "../../utils/getSafeInitialValue";
|
|
5
|
-
import Modal from "../Modal";
|
|
6
|
-
import TimerPicker from "../TimerPicker";
|
|
7
|
-
import { generateStyles } from "./styles";
|
|
8
|
-
const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
9
|
-
const {
|
|
10
|
-
buttonContainerProps,
|
|
11
|
-
buttonTouchableOpacityProps,
|
|
12
|
-
cancelButtonText = "Cancel",
|
|
13
|
-
closeOnOverlayPress,
|
|
14
|
-
confirmButtonText = "Confirm",
|
|
15
|
-
containerProps,
|
|
16
|
-
contentContainerProps,
|
|
17
|
-
hideCancelButton = false,
|
|
18
|
-
initialValue,
|
|
19
|
-
modalProps,
|
|
20
|
-
modalTitle,
|
|
21
|
-
modalTitleProps,
|
|
22
|
-
onCancel,
|
|
23
|
-
onConfirm,
|
|
24
|
-
onDurationChange,
|
|
25
|
-
setIsVisible,
|
|
26
|
-
styles: customStyles,
|
|
27
|
-
visible,
|
|
28
|
-
...otherProps
|
|
29
|
-
} = props;
|
|
30
|
-
const styles = generateStyles(customStyles, {
|
|
31
|
-
hasModalTitle: Boolean(modalTitle)
|
|
32
|
-
});
|
|
33
|
-
const timerPickerRef = useRef(null);
|
|
34
|
-
const safeInitialValue = getSafeInitialValue({
|
|
35
|
-
hours: initialValue === null || initialValue === void 0 ? void 0 : initialValue.hours,
|
|
36
|
-
minutes: initialValue === null || initialValue === void 0 ? void 0 : initialValue.minutes,
|
|
37
|
-
seconds: initialValue === null || initialValue === void 0 ? void 0 : initialValue.seconds
|
|
38
|
-
});
|
|
39
|
-
const [selectedDuration, setSelectedDuration] = useState(safeInitialValue);
|
|
40
|
-
const [confirmedDuration, setConfirmedDuration] = useState(safeInitialValue);
|
|
41
|
-
const reset = options => {
|
|
42
|
-
var _timerPickerRef$curre;
|
|
43
|
-
setSelectedDuration(safeInitialValue);
|
|
44
|
-
setConfirmedDuration(safeInitialValue);
|
|
45
|
-
(_timerPickerRef$curre = timerPickerRef.current) === null || _timerPickerRef$curre === void 0 || _timerPickerRef$curre.reset(options);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
// reset state if the initial value changes
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
reset();
|
|
51
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
|
-
}, [safeInitialValue.hours, safeInitialValue.minutes, safeInitialValue.seconds]);
|
|
53
|
-
const hideModalHandler = () => {
|
|
54
|
-
setSelectedDuration({
|
|
55
|
-
hours: confirmedDuration.hours,
|
|
56
|
-
minutes: confirmedDuration.minutes,
|
|
57
|
-
seconds: confirmedDuration.seconds
|
|
58
|
-
});
|
|
59
|
-
setIsVisible(false);
|
|
60
|
-
};
|
|
61
|
-
const confirmHandler = () => {
|
|
62
|
-
var _timerPickerRef$curre2, _latestDuration$hours, _latestDuration$minut, _latestDuration$secon;
|
|
63
|
-
const latestDuration = (_timerPickerRef$curre2 = timerPickerRef.current) === null || _timerPickerRef$curre2 === void 0 ? void 0 : _timerPickerRef$curre2.latestDuration;
|
|
64
|
-
const newDuration = {
|
|
65
|
-
hours: (latestDuration === null || latestDuration === void 0 || (_latestDuration$hours = latestDuration.hours) === null || _latestDuration$hours === void 0 ? void 0 : _latestDuration$hours.current) ?? selectedDuration.hours,
|
|
66
|
-
minutes: (latestDuration === null || latestDuration === void 0 || (_latestDuration$minut = latestDuration.minutes) === null || _latestDuration$minut === void 0 ? void 0 : _latestDuration$minut.current) ?? selectedDuration.minutes,
|
|
67
|
-
seconds: (latestDuration === null || latestDuration === void 0 || (_latestDuration$secon = latestDuration.seconds) === null || _latestDuration$secon === void 0 ? void 0 : _latestDuration$secon.current) ?? selectedDuration.seconds
|
|
68
|
-
};
|
|
69
|
-
setConfirmedDuration(newDuration);
|
|
70
|
-
onConfirm(newDuration);
|
|
71
|
-
};
|
|
72
|
-
const cancelHandler = () => {
|
|
73
|
-
setIsVisible(false);
|
|
74
|
-
setSelectedDuration(confirmedDuration);
|
|
75
|
-
onCancel === null || onCancel === void 0 || onCancel();
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
// wrapped in useCallback to avoid unnecessary re-renders of TimerPicker
|
|
79
|
-
const durationChangeHandler = useCallback(duration => {
|
|
80
|
-
setSelectedDuration(duration);
|
|
81
|
-
onDurationChange === null || onDurationChange === void 0 || onDurationChange(duration);
|
|
82
|
-
}, [onDurationChange]);
|
|
83
|
-
useImperativeHandle(ref, () => {
|
|
84
|
-
var _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6;
|
|
85
|
-
return {
|
|
86
|
-
reset,
|
|
87
|
-
setValue: (value, options) => {
|
|
88
|
-
var _timerPickerRef$curre3;
|
|
89
|
-
setSelectedDuration(value);
|
|
90
|
-
setConfirmedDuration(value);
|
|
91
|
-
(_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || _timerPickerRef$curre3.setValue(value, options);
|
|
92
|
-
},
|
|
93
|
-
latestDuration: {
|
|
94
|
-
hours: (_timerPickerRef$curre4 = timerPickerRef.current) === null || _timerPickerRef$curre4 === void 0 || (_timerPickerRef$curre4 = _timerPickerRef$curre4.latestDuration) === null || _timerPickerRef$curre4 === void 0 ? void 0 : _timerPickerRef$curre4.hours,
|
|
95
|
-
minutes: (_timerPickerRef$curre5 = timerPickerRef.current) === null || _timerPickerRef$curre5 === void 0 || (_timerPickerRef$curre5 = _timerPickerRef$curre5.latestDuration) === null || _timerPickerRef$curre5 === void 0 ? void 0 : _timerPickerRef$curre5.minutes,
|
|
96
|
-
seconds: (_timerPickerRef$curre6 = timerPickerRef.current) === null || _timerPickerRef$curre6 === void 0 || (_timerPickerRef$curre6 = _timerPickerRef$curre6.latestDuration) === null || _timerPickerRef$curre6 === void 0 ? void 0 : _timerPickerRef$curre6.seconds
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
});
|
|
100
|
-
return /*#__PURE__*/React.createElement(Modal, _extends({
|
|
101
|
-
isVisible: visible,
|
|
102
|
-
onOverlayPress: closeOnOverlayPress ? hideModalHandler : undefined
|
|
103
|
-
}, modalProps, {
|
|
104
|
-
testID: "timer-picker-modal"
|
|
105
|
-
}), /*#__PURE__*/React.createElement(View, _extends({}, containerProps, {
|
|
106
|
-
style: styles.container
|
|
107
|
-
}), /*#__PURE__*/React.createElement(View, _extends({}, contentContainerProps, {
|
|
108
|
-
style: styles.contentContainer
|
|
109
|
-
}), modalTitle ? /*#__PURE__*/React.createElement(Text, _extends({}, modalTitleProps, {
|
|
110
|
-
style: styles.modalTitle
|
|
111
|
-
}), modalTitle) : null, /*#__PURE__*/React.createElement(TimerPicker, _extends({
|
|
112
|
-
ref: timerPickerRef,
|
|
113
|
-
initialValue: confirmedDuration
|
|
114
|
-
}, otherProps, {
|
|
115
|
-
aggressivelyGetLatestDuration: true,
|
|
116
|
-
onDurationChange: durationChangeHandler,
|
|
117
|
-
styles: styles.timerPickerStyles
|
|
118
|
-
})), /*#__PURE__*/React.createElement(View, _extends({}, buttonContainerProps, {
|
|
119
|
-
style: styles.buttonContainer
|
|
120
|
-
}), !hideCancelButton ? /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
121
|
-
onPress: cancelHandler
|
|
122
|
-
}), /*#__PURE__*/React.createElement(Text, {
|
|
123
|
-
style: [styles.button, styles.cancelButton]
|
|
124
|
-
}, cancelButtonText)) : null, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
125
|
-
onPress: confirmHandler
|
|
126
|
-
}), /*#__PURE__*/React.createElement(Text, {
|
|
127
|
-
style: [styles.button, styles.confirmButton]
|
|
128
|
-
}, confirmButtonText))))));
|
|
129
|
-
});
|
|
130
|
-
export default /*#__PURE__*/React.memo(TimerPickerModal);
|
|
1
|
+
export { default } from "./TimerPickerModal";
|
|
2
|
+
export * from "./types";
|
|
3
|
+
export * from "./styles";
|
|
131
4
|
//# sourceMappingURL=index.js.map
|