react-native-timer-picker 2.5.0 → 2.6.1
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 +22 -13
- package/dist/commonjs/components/DurationScroll/DurationScroll.js +39 -18
- package/dist/commonjs/components/DurationScroll/DurationScroll.js.map +1 -1
- package/dist/commonjs/components/DurationScroll/types.js.map +1 -1
- package/dist/commonjs/components/Modal/Modal.js +10 -10
- package/dist/commonjs/components/Modal/Modal.js.map +1 -1
- package/dist/commonjs/components/Modal/styles.js +5 -5
- package/dist/commonjs/components/Modal/styles.js.map +1 -1
- package/dist/commonjs/components/Modal/types.js.map +1 -1
- package/dist/commonjs/components/PickerItem/PickerItem.js +2 -1
- package/dist/commonjs/components/PickerItem/PickerItem.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/TimerPicker.js +47 -21
- package/dist/commonjs/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
- package/dist/commonjs/components/TimerPicker/styles.js +79 -69
- 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 +34 -14
- package/dist/commonjs/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
- package/dist/commonjs/components/TimerPickerModal/styles.js +34 -28
- package/dist/commonjs/components/TimerPickerModal/styles.js.map +1 -1
- package/dist/commonjs/components/TimerPickerModal/types.js.map +1 -1
- package/dist/commonjs/index.js +3 -39
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/tests/DurationScroll.test.js +8 -8
- package/dist/commonjs/tests/DurationScroll.test.js.map +1 -1
- package/dist/commonjs/tests/Modal.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPicker.test.js +1 -9
- package/dist/commonjs/tests/TimerPicker.test.js.map +1 -1
- package/dist/commonjs/tests/TimerPickerModal.test.js +3 -3
- package/dist/commonjs/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/commonjs/tests/colorToRgba.test.js.map +1 -1
- package/dist/commonjs/tests/generateNumbers.test.js +63 -63
- package/dist/commonjs/tests/generateNumbers.test.js.map +1 -1
- package/dist/commonjs/tests/getAdjustedLimit.test.js +38 -38
- package/dist/commonjs/tests/getAdjustedLimit.test.js.map +1 -1
- package/dist/commonjs/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -1
- package/dist/commonjs/tests/getInitialScrollIndex.test.js.map +1 -1
- package/dist/commonjs/tests/getSafeInitialValue.test.js +2 -0
- package/dist/commonjs/tests/getSafeInitialValue.test.js.map +1 -1
- package/dist/commonjs/tests/padNumber.test.js.map +1 -1
- package/dist/commonjs/utils/colorToRgba.js +4 -4
- package/dist/commonjs/utils/colorToRgba.js.map +1 -1
- package/dist/commonjs/utils/generateNumbers.js.map +1 -1
- package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
- package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
- package/dist/commonjs/utils/getInitialScrollIndex.js +4 -4
- package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -1
- package/dist/commonjs/utils/getSafeInitialValue.js +5 -5
- package/dist/commonjs/utils/getSafeInitialValue.js.map +1 -1
- package/dist/commonjs/utils/padNumber.js.map +1 -1
- package/dist/module/components/DurationScroll/DurationScroll.js +39 -18
- package/dist/module/components/DurationScroll/DurationScroll.js.map +1 -1
- package/dist/module/components/DurationScroll/types.js.map +1 -1
- package/dist/module/components/Modal/Modal.js +10 -10
- package/dist/module/components/Modal/Modal.js.map +1 -1
- package/dist/module/components/Modal/styles.js +5 -5
- package/dist/module/components/Modal/styles.js.map +1 -1
- package/dist/module/components/Modal/types.js.map +1 -1
- package/dist/module/components/PickerItem/PickerItem.js +2 -1
- package/dist/module/components/PickerItem/PickerItem.js.map +1 -1
- package/dist/module/components/TimerPicker/TimerPicker.js +47 -21
- package/dist/module/components/TimerPicker/TimerPicker.js.map +1 -1
- package/dist/module/components/TimerPicker/index.js.map +1 -1
- package/dist/module/components/TimerPicker/styles.js +79 -69
- 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 +35 -15
- package/dist/module/components/TimerPickerModal/TimerPickerModal.js.map +1 -1
- package/dist/module/components/TimerPickerModal/styles.js +33 -27
- package/dist/module/components/TimerPickerModal/styles.js.map +1 -1
- package/dist/module/components/TimerPickerModal/types.js.map +1 -1
- package/dist/module/index.js +2 -2
- package/dist/module/index.js.map +1 -1
- package/dist/module/tests/DurationScroll.test.js +8 -8
- package/dist/module/tests/DurationScroll.test.js.map +1 -1
- package/dist/module/tests/Modal.test.js.map +1 -1
- package/dist/module/tests/TimerPicker.test.js +1 -8
- package/dist/module/tests/TimerPicker.test.js.map +1 -1
- package/dist/module/tests/TimerPickerModal.test.js +3 -3
- package/dist/module/tests/TimerPickerModal.test.js.map +1 -1
- package/dist/module/tests/colorToRgba.test.js.map +1 -1
- package/dist/module/tests/generateNumbers.test.js +63 -63
- package/dist/module/tests/generateNumbers.test.js.map +1 -1
- package/dist/module/tests/getAdjustedLimit.test.js +38 -38
- package/dist/module/tests/getAdjustedLimit.test.js.map +1 -1
- package/dist/module/tests/getDurationAndIndexFromScrollOffset.test.js.map +1 -1
- package/dist/module/tests/getInitialScrollIndex.test.js.map +1 -1
- package/dist/module/tests/getSafeInitialValue.test.js +1 -0
- package/dist/module/tests/getSafeInitialValue.test.js.map +1 -1
- package/dist/module/tests/padNumber.test.js.map +1 -1
- package/dist/module/utils/colorToRgba.js +4 -4
- package/dist/module/utils/colorToRgba.js.map +1 -1
- package/dist/module/utils/generateNumbers.js.map +1 -1
- package/dist/module/utils/getAdjustedLimit.js.map +1 -1
- package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -1
- package/dist/module/utils/getInitialScrollIndex.js +4 -4
- package/dist/module/utils/getInitialScrollIndex.js.map +1 -1
- package/dist/module/utils/getSafeInitialValue.js +5 -5
- package/dist/module/utils/getSafeInitialValue.js.map +1 -1
- package/dist/module/utils/padNumber.js.map +1 -1
- package/dist/typescript/components/DurationScroll/types.d.ts +9 -6
- package/dist/typescript/components/Modal/styles.d.ts +5 -5
- package/dist/typescript/components/Modal/types.d.ts +2 -1
- package/dist/typescript/components/PickerItem/PickerItem.d.ts +4 -0
- package/dist/typescript/components/TimerPicker/styles.d.ts +230 -225
- package/dist/typescript/components/TimerPicker/types.d.ts +9 -8
- package/dist/typescript/components/TimerPickerModal/styles.d.ts +158 -154
- package/dist/typescript/components/TimerPickerModal/types.d.ts +2 -1
- package/dist/typescript/index.d.ts +4 -2
- package/dist/typescript/tests/DurationScroll.test.d.ts +1 -0
- package/dist/typescript/tests/Modal.test.d.ts +1 -0
- package/dist/typescript/tests/TimerPicker.test.d.ts +1 -0
- package/dist/typescript/tests/TimerPickerModal.test.d.ts +1 -0
- package/dist/typescript/tests/colorToRgba.test.d.ts +1 -0
- package/dist/typescript/tests/generateNumbers.test.d.ts +1 -0
- package/dist/typescript/tests/getAdjustedLimit.test.d.ts +1 -0
- package/dist/typescript/tests/getDurationAndIndexFromScrollOffset.test.d.ts +1 -0
- package/dist/typescript/tests/getInitialScrollIndex.test.d.ts +1 -0
- package/dist/typescript/tests/getSafeInitialValue.test.d.ts +1 -0
- package/dist/typescript/tests/padNumber.test.d.ts +1 -0
- package/package.json +144 -126
|
@@ -4,7 +4,16 @@ import { View, Text, TouchableOpacity } from "react-native";
|
|
|
4
4
|
import { getSafeInitialValue } from "../../utils/getSafeInitialValue";
|
|
5
5
|
import Modal from "../Modal";
|
|
6
6
|
import TimerPicker from "../TimerPicker";
|
|
7
|
-
import { generateStyles } from "./styles";
|
|
7
|
+
import { DEFAULT_COLUMN_WIDTH, generateStyles } from "./styles";
|
|
8
|
+
const resolveColumnWidth = (pickerColumnWidth, column) => {
|
|
9
|
+
if (pickerColumnWidth == null) {
|
|
10
|
+
return DEFAULT_COLUMN_WIDTH;
|
|
11
|
+
}
|
|
12
|
+
if (typeof pickerColumnWidth === "number") {
|
|
13
|
+
return pickerColumnWidth;
|
|
14
|
+
}
|
|
15
|
+
return pickerColumnWidth[column] ?? DEFAULT_COLUMN_WIDTH;
|
|
16
|
+
};
|
|
8
17
|
const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
9
18
|
const {
|
|
10
19
|
buttonContainerProps,
|
|
@@ -15,6 +24,10 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
15
24
|
containerProps,
|
|
16
25
|
contentContainerProps,
|
|
17
26
|
hideCancelButton = false,
|
|
27
|
+
hideDays = true,
|
|
28
|
+
hideHours = false,
|
|
29
|
+
hideMinutes = false,
|
|
30
|
+
hideSeconds = false,
|
|
18
31
|
initialValue,
|
|
19
32
|
modalProps,
|
|
20
33
|
modalTitle,
|
|
@@ -27,8 +40,11 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
27
40
|
visible,
|
|
28
41
|
...otherProps
|
|
29
42
|
} = props;
|
|
43
|
+
const pickerColumnWidth = customStyles === null || customStyles === void 0 ? void 0 : customStyles.pickerColumnWidth;
|
|
44
|
+
const totalColumnWidth = (!hideDays ? resolveColumnWidth(pickerColumnWidth, "days") : 0) + (!hideHours ? resolveColumnWidth(pickerColumnWidth, "hours") : 0) + (!hideMinutes ? resolveColumnWidth(pickerColumnWidth, "minutes") : 0) + (!hideSeconds ? resolveColumnWidth(pickerColumnWidth, "seconds") : 0);
|
|
30
45
|
const styles = generateStyles(customStyles, {
|
|
31
|
-
hasModalTitle: Boolean(modalTitle)
|
|
46
|
+
hasModalTitle: Boolean(modalTitle),
|
|
47
|
+
totalColumnWidth
|
|
32
48
|
});
|
|
33
49
|
const timerPickerRef = useRef(null);
|
|
34
50
|
const safeInitialValue = getSafeInitialValue({
|
|
@@ -84,11 +100,17 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
84
100
|
onDurationChange === null || onDurationChange === void 0 || onDurationChange(duration);
|
|
85
101
|
}, [onDurationChange]);
|
|
86
102
|
useImperativeHandle(ref, () => {
|
|
87
|
-
var _timerPickerRef$
|
|
103
|
+
var _timerPickerRef$curre3, _timerPickerRef$curre4, _timerPickerRef$curre5, _timerPickerRef$curre6;
|
|
88
104
|
return {
|
|
105
|
+
latestDuration: {
|
|
106
|
+
days: (_timerPickerRef$curre3 = timerPickerRef.current) === null || _timerPickerRef$curre3 === void 0 || (_timerPickerRef$curre3 = _timerPickerRef$curre3.latestDuration) === null || _timerPickerRef$curre3 === void 0 ? void 0 : _timerPickerRef$curre3.days,
|
|
107
|
+
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,
|
|
108
|
+
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,
|
|
109
|
+
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
|
|
110
|
+
},
|
|
89
111
|
reset,
|
|
90
112
|
setValue: (value, options) => {
|
|
91
|
-
var _timerPickerRef$
|
|
113
|
+
var _timerPickerRef$curre7;
|
|
92
114
|
setSelectedDuration(prev => ({
|
|
93
115
|
...prev,
|
|
94
116
|
...value
|
|
@@ -97,13 +119,7 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
97
119
|
...prev,
|
|
98
120
|
...value
|
|
99
121
|
}));
|
|
100
|
-
(_timerPickerRef$
|
|
101
|
-
},
|
|
102
|
-
latestDuration: {
|
|
103
|
-
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,
|
|
104
|
-
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,
|
|
105
|
-
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,
|
|
106
|
-
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
|
|
122
|
+
(_timerPickerRef$curre7 = timerPickerRef.current) === null || _timerPickerRef$curre7 === void 0 || _timerPickerRef$curre7.setValue(value, options);
|
|
107
123
|
}
|
|
108
124
|
};
|
|
109
125
|
});
|
|
@@ -120,6 +136,10 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
120
136
|
style: styles.modalTitle
|
|
121
137
|
}), modalTitle) : null, /*#__PURE__*/React.createElement(TimerPicker, _extends({
|
|
122
138
|
ref: timerPickerRef,
|
|
139
|
+
hideDays: hideDays,
|
|
140
|
+
hideHours: hideHours,
|
|
141
|
+
hideMinutes: hideMinutes,
|
|
142
|
+
hideSeconds: hideSeconds,
|
|
123
143
|
initialValue: confirmedDuration
|
|
124
144
|
}, otherProps, {
|
|
125
145
|
aggressivelyGetLatestDuration: true,
|
|
@@ -127,15 +147,15 @@ const TimerPickerModal = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
127
147
|
styles: styles.timerPickerStyles
|
|
128
148
|
})), /*#__PURE__*/React.createElement(View, _extends({}, buttonContainerProps, {
|
|
129
149
|
style: styles.buttonContainer
|
|
130
|
-
}), !hideCancelButton ? /*#__PURE__*/React.isValidElement(props.cancelButton) ? /*#__PURE__*/React.cloneElement(props.cancelButton, {
|
|
150
|
+
}), !hideCancelButton ? /*#__PURE__*/React.isValidElement(props.cancelButton) ? (/*#__PURE__*/React.cloneElement(props.cancelButton, {
|
|
131
151
|
onPress: cancelHandler
|
|
132
|
-
}) : /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
152
|
+
})) : /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
133
153
|
onPress: cancelHandler
|
|
134
154
|
}), /*#__PURE__*/React.createElement(Text, {
|
|
135
155
|
style: [styles.button, styles.cancelButton]
|
|
136
|
-
}, cancelButtonText)) : null, /*#__PURE__*/React.isValidElement(props.confirmButton) ? /*#__PURE__*/React.cloneElement(props.confirmButton, {
|
|
156
|
+
}, cancelButtonText)) : null, /*#__PURE__*/React.isValidElement(props.confirmButton) ? (/*#__PURE__*/React.cloneElement(props.confirmButton, {
|
|
137
157
|
onPress: confirmHandler
|
|
138
|
-
}) : /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
158
|
+
})) : /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, buttonTouchableOpacityProps, {
|
|
139
159
|
onPress: confirmHandler
|
|
140
160
|
}), /*#__PURE__*/React.createElement(Text, {
|
|
141
161
|
style: [styles.button, styles.confirmButton]
|
|
@@ -1 +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","prev","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","isValidElement","cancelButton","cloneElement","onPress","button","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((prev) => ({\n ...prev,\n ...value,\n }));\n setConfirmedDuration((prev) => ({\n ...prev,\n ...value,\n }));\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 ? (\n React.isValidElement(props.cancelButton)\n ? React.cloneElement(\n props.cancelButton,\n {\n onPress: cancelHandler,\n }\n )\n : (\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 )\n )\n : null}\n {React.isValidElement(props.confirmButton)\n ? React.cloneElement(props.confirmButton, {\n onPress: confirmHandler,\n })\n : (\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 )}\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
|
+
{"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","View","Text","TouchableOpacity","getSafeInitialValue","Modal","TimerPicker","DEFAULT_COLUMN_WIDTH","generateStyles","resolveColumnWidth","pickerColumnWidth","column","TimerPickerModal","props","ref","buttonContainerProps","buttonTouchableOpacityProps","cancelButtonText","closeOnOverlayPress","confirmButtonText","containerProps","contentContainerProps","hideCancelButton","hideDays","hideHours","hideMinutes","hideSeconds","initialValue","modalProps","modalTitle","modalTitleProps","onCancel","onConfirm","onDurationChange","setIsVisible","styles","customStyles","visible","otherProps","totalColumnWidth","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$curre3","_timerPickerRef$curre4","_timerPickerRef$curre5","_timerPickerRef$curre6","setValue","value","_timerPickerRef$curre7","prev","createElement","_extends","isVisible","onOverlayPress","undefined","testID","style","container","contentContainer","aggressivelyGetLatestDuration","timerPickerStyles","buttonContainer","isValidElement","cancelButton","cloneElement","onPress","button","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\";\nimport type { PerColumnValue, PickerColumn } from \"../TimerPicker/styles\";\nimport { DEFAULT_COLUMN_WIDTH, generateStyles } from \"./styles\";\nimport type { TimerPickerModalRef, TimerPickerModalProps } from \"./types\";\n\nconst resolveColumnWidth = (\n pickerColumnWidth: PerColumnValue | undefined,\n column: PickerColumn\n): number => {\n if (pickerColumnWidth == null) {\n return DEFAULT_COLUMN_WIDTH;\n }\n\n if (typeof pickerColumnWidth === \"number\") {\n return pickerColumnWidth;\n }\n\n return pickerColumnWidth[column] ?? DEFAULT_COLUMN_WIDTH;\n};\n\nconst TimerPickerModal = forwardRef<TimerPickerModalRef, TimerPickerModalProps>((props, ref) => {\n const {\n buttonContainerProps,\n buttonTouchableOpacityProps,\n cancelButtonText = \"Cancel\",\n closeOnOverlayPress,\n confirmButtonText = \"Confirm\",\n containerProps,\n contentContainerProps,\n hideCancelButton = false,\n hideDays = true,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = 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 pickerColumnWidth = customStyles?.pickerColumnWidth;\n\n const totalColumnWidth =\n (!hideDays ? resolveColumnWidth(pickerColumnWidth, \"days\") : 0) +\n (!hideHours ? resolveColumnWidth(pickerColumnWidth, \"hours\") : 0) +\n (!hideMinutes ? resolveColumnWidth(pickerColumnWidth, \"minutes\") : 0) +\n (!hideSeconds ? resolveColumnWidth(pickerColumnWidth, \"seconds\") : 0);\n\n const styles = generateStyles(customStyles, {\n hasModalTitle: Boolean(modalTitle),\n totalColumnWidth,\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] = useState(safeInitialValue);\n const [confirmedDuration, setConfirmedDuration] = 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: latestDuration?.minutes?.current ?? selectedDuration.minutes,\n seconds: latestDuration?.seconds?.current ?? 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: { days: number; hours: number; minutes: number; seconds: number }) => {\n setSelectedDuration(duration);\n onDurationChange?.(duration);\n },\n [onDurationChange]\n );\n\n useImperativeHandle(ref, () => ({\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 reset,\n setValue: (value, options) => {\n setSelectedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n setConfirmedDuration((prev) => ({\n ...prev,\n ...value,\n }));\n timerPickerRef.current?.setValue(value, options);\n },\n }));\n\n return (\n <Modal\n isVisible={visible}\n onOverlayPress={closeOnOverlayPress ? hideModalHandler : undefined}\n {...modalProps}\n testID=\"timer-picker-modal\"\n >\n <View {...containerProps} style={styles.container}>\n <View {...contentContainerProps} style={styles.contentContainer}>\n {modalTitle ? (\n <Text {...modalTitleProps} style={styles.modalTitle}>\n {modalTitle}\n </Text>\n ) : null}\n <TimerPicker\n ref={timerPickerRef}\n hideDays={hideDays}\n hideHours={hideHours}\n hideMinutes={hideMinutes}\n hideSeconds={hideSeconds}\n initialValue={confirmedDuration}\n {...otherProps}\n aggressivelyGetLatestDuration\n onDurationChange={durationChangeHandler}\n styles={styles.timerPickerStyles}\n />\n <View {...buttonContainerProps} style={styles.buttonContainer}>\n {!hideCancelButton ? (\n React.isValidElement(props.cancelButton) ? (\n React.cloneElement(props.cancelButton, {\n onPress: cancelHandler,\n })\n ) : (\n <TouchableOpacity {...buttonTouchableOpacityProps} onPress={cancelHandler}>\n <Text style={[styles.button, styles.cancelButton]}>{cancelButtonText}</Text>\n </TouchableOpacity>\n )\n ) : null}\n {React.isValidElement(props.confirmButton) ? (\n React.cloneElement(props.confirmButton, {\n onPress: confirmHandler,\n })\n ) : (\n <TouchableOpacity {...buttonTouchableOpacityProps} onPress={confirmHandler}>\n <Text style={[styles.button, styles.confirmButton]}>{confirmButtonText}</Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n </View>\n </Modal>\n );\n});\n\nexport default React.memo(TimerPickerModal);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StyleSheet } from "react-native";
|
|
2
|
+
export const DEFAULT_COLUMN_WIDTH = 70;
|
|
2
3
|
const DARK_MODE_BACKGROUND_COLOR = "#232323";
|
|
3
4
|
const DARK_MODE_TEXT_COLOR = "#E9E9E9";
|
|
4
5
|
const LIGHT_MODE_BACKGROUND_COLOR = "#F1F1F1";
|
|
@@ -14,58 +15,63 @@ export const generateStyles = (customStyles, variables) => {
|
|
|
14
15
|
modalTitle: customModalTitleStyle,
|
|
15
16
|
...customTimerPickerStyles
|
|
16
17
|
} = customStyles ?? {};
|
|
18
|
+
const totalColumnWidth = variables.totalColumnWidth;
|
|
19
|
+
const modalPadding = (customContentContainerStyle === null || customContentContainerStyle === void 0 ? void 0 : customContentContainerStyle.paddingHorizontal) ?? 20;
|
|
20
|
+
const labelOverhang = 20;
|
|
21
|
+
const computedWidth = Math.max(DEFAULT_COLUMN_WIDTH * 2, totalColumnWidth + modalPadding * 2 + labelOverhang);
|
|
17
22
|
return StyleSheet.create({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
contentContainer: {
|
|
24
|
-
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.backgroundColor) ?? ((customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? DARK_MODE_BACKGROUND_COLOR : LIGHT_MODE_BACKGROUND_COLOR),
|
|
25
|
-
justifyContent: "center",
|
|
26
|
-
alignItems: "center",
|
|
27
|
-
borderRadius: 20,
|
|
23
|
+
button: {
|
|
24
|
+
borderRadius: 10,
|
|
25
|
+
borderWidth: 1,
|
|
26
|
+
fontSize: 16,
|
|
27
|
+
marginHorizontal: 12,
|
|
28
28
|
overflow: "hidden",
|
|
29
29
|
paddingHorizontal: 20,
|
|
30
|
-
|
|
30
|
+
paddingVertical: 10,
|
|
31
|
+
...(customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.text),
|
|
32
|
+
...customButtonStyle
|
|
31
33
|
},
|
|
32
34
|
buttonContainer: {
|
|
33
35
|
flexDirection: "row",
|
|
34
|
-
marginTop: 25,
|
|
35
36
|
marginBottom: 20,
|
|
37
|
+
marginTop: 25,
|
|
36
38
|
...customButtonContainerStyle
|
|
37
39
|
},
|
|
38
|
-
button: {
|
|
39
|
-
marginHorizontal: 12,
|
|
40
|
-
paddingVertical: 10,
|
|
41
|
-
paddingHorizontal: 20,
|
|
42
|
-
borderWidth: 1,
|
|
43
|
-
borderRadius: 10,
|
|
44
|
-
fontSize: 16,
|
|
45
|
-
overflow: "hidden",
|
|
46
|
-
...(customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.text),
|
|
47
|
-
...customButtonStyle
|
|
48
|
-
},
|
|
49
40
|
cancelButton: {
|
|
41
|
+
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? "gray" : undefined,
|
|
50
42
|
borderColor: "gray",
|
|
51
43
|
color: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : "gray",
|
|
52
|
-
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? "gray" : undefined,
|
|
53
44
|
...(customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.text),
|
|
54
45
|
...customCancelButtonStyle
|
|
55
46
|
},
|
|
56
47
|
confirmButton: {
|
|
48
|
+
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? "green" : undefined,
|
|
57
49
|
borderColor: "green",
|
|
58
50
|
color: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : "green",
|
|
59
|
-
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? "green" : undefined,
|
|
60
51
|
...(customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.text),
|
|
61
52
|
...customConfirmButtonStyle
|
|
62
53
|
},
|
|
54
|
+
container: {
|
|
55
|
+
justifyContent: "center",
|
|
56
|
+
overflow: "hidden",
|
|
57
|
+
...customContainerStyle
|
|
58
|
+
},
|
|
59
|
+
contentContainer: {
|
|
60
|
+
alignItems: "center",
|
|
61
|
+
backgroundColor: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.backgroundColor) ?? ((customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? DARK_MODE_BACKGROUND_COLOR : LIGHT_MODE_BACKGROUND_COLOR),
|
|
62
|
+
borderRadius: 20,
|
|
63
|
+
justifyContent: "center",
|
|
64
|
+
overflow: "hidden",
|
|
65
|
+
paddingHorizontal: 20,
|
|
66
|
+
width: computedWidth,
|
|
67
|
+
...customContentContainerStyle
|
|
68
|
+
},
|
|
63
69
|
modalTitle: {
|
|
70
|
+
color: (customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.theme) === "dark" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,
|
|
64
71
|
fontSize: 24,
|
|
65
72
|
fontWeight: "600",
|
|
66
|
-
marginTop: 20,
|
|
67
73
|
marginBottom: 15,
|
|
68
|
-
|
|
74
|
+
marginTop: 20,
|
|
69
75
|
...(customTimerPickerStyles === null || customTimerPickerStyles === void 0 ? void 0 : customTimerPickerStyles.text),
|
|
70
76
|
...customModalTitleStyle
|
|
71
77
|
},
|
|
@@ -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","variables","button","customButtonStyle","buttonContainer","customButtonContainerStyle","cancelButton","customCancelButtonStyle","confirmButton","customConfirmButtonStyle","container","customContainerStyle","contentContainer","customContentContainerStyle","modalTitle","customModalTitleStyle","customTimerPickerStyles","
|
|
1
|
+
{"version":3,"names":["StyleSheet","DEFAULT_COLUMN_WIDTH","DARK_MODE_BACKGROUND_COLOR","DARK_MODE_TEXT_COLOR","LIGHT_MODE_BACKGROUND_COLOR","LIGHT_MODE_TEXT_COLOR","generateStyles","customStyles","variables","button","customButtonStyle","buttonContainer","customButtonContainerStyle","cancelButton","customCancelButtonStyle","confirmButton","customConfirmButtonStyle","container","customContainerStyle","contentContainer","customContentContainerStyle","modalTitle","customModalTitleStyle","customTimerPickerStyles","totalColumnWidth","modalPadding","paddingHorizontal","labelOverhang","computedWidth","Math","max","create","borderRadius","borderWidth","fontSize","marginHorizontal","overflow","paddingVertical","text","flexDirection","marginBottom","marginTop","backgroundColor","theme","undefined","borderColor","color","justifyContent","alignItems","width","fontWeight","timerPickerStyles","pickerContainer","marginRight","paddingTop","hasModalTitle"],"sources":["styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\nimport type { DimensionValue, TextStyle, ViewStyle } from \"react-native\";\n\nimport type { CustomTimerPickerStyles } from \"../TimerPicker/styles\";\n\nexport const DEFAULT_COLUMN_WIDTH = 70;\n\nexport interface CustomTimerPickerModalStyles extends CustomTimerPickerStyles {\n button?: TextStyle;\n buttonContainer?: ViewStyle;\n cancelButton?: TextStyle;\n confirmButton?: TextStyle;\n container?: ViewStyle;\n contentContainer?: ViewStyle;\n modalTitle?: TextStyle;\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: CustomTimerPickerModalStyles | undefined,\n variables: {\n hasModalTitle: boolean;\n totalColumnWidth: number;\n }\n) => {\n const {\n button: customButtonStyle,\n buttonContainer: customButtonContainerStyle,\n cancelButton: customCancelButtonStyle,\n confirmButton: customConfirmButtonStyle,\n container: customContainerStyle,\n contentContainer: customContentContainerStyle,\n modalTitle: customModalTitleStyle,\n ...customTimerPickerStyles\n } = customStyles ?? {};\n\n const totalColumnWidth = variables.totalColumnWidth;\n const modalPadding = (customContentContainerStyle?.paddingHorizontal as number) ?? 20;\n const labelOverhang = 20;\n const computedWidth = Math.max(\n DEFAULT_COLUMN_WIDTH * 2,\n totalColumnWidth + modalPadding * 2 + labelOverhang\n );\n\n return StyleSheet.create({\n button: {\n borderRadius: 10,\n borderWidth: 1,\n fontSize: 16,\n marginHorizontal: 12,\n overflow: \"hidden\",\n paddingHorizontal: 20,\n paddingVertical: 10,\n ...customTimerPickerStyles?.text,\n ...customButtonStyle,\n },\n buttonContainer: {\n flexDirection: \"row\",\n marginBottom: 20,\n marginTop: 25,\n ...customButtonContainerStyle,\n },\n cancelButton: {\n backgroundColor: customTimerPickerStyles?.theme === \"dark\" ? \"gray\" : undefined,\n borderColor: \"gray\",\n color: customTimerPickerStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"gray\",\n ...customTimerPickerStyles?.text,\n ...customCancelButtonStyle,\n },\n confirmButton: {\n backgroundColor: customTimerPickerStyles?.theme === \"dark\" ? \"green\" : undefined,\n borderColor: \"green\",\n color: customTimerPickerStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : \"green\",\n ...customTimerPickerStyles?.text,\n ...customConfirmButtonStyle,\n },\n container: {\n justifyContent: \"center\",\n overflow: \"hidden\",\n ...customContainerStyle,\n },\n contentContainer: {\n alignItems: \"center\",\n backgroundColor:\n customTimerPickerStyles?.backgroundColor ??\n (customTimerPickerStyles?.theme === \"dark\"\n ? DARK_MODE_BACKGROUND_COLOR\n : LIGHT_MODE_BACKGROUND_COLOR),\n borderRadius: 20,\n justifyContent: \"center\",\n overflow: \"hidden\",\n paddingHorizontal: 20,\n width: computedWidth,\n ...customContentContainerStyle,\n },\n modalTitle: {\n color:\n customTimerPickerStyles?.theme === \"dark\" ? DARK_MODE_TEXT_COLOR : LIGHT_MODE_TEXT_COLOR,\n fontSize: 24,\n fontWeight: \"600\",\n marginBottom: 15,\n marginTop: 20,\n ...customTimerPickerStyles?.text,\n ...customModalTitleStyle,\n },\n timerPickerStyles: {\n ...customTimerPickerStyles,\n pickerContainer: {\n marginRight: \"8%\" as DimensionValue,\n paddingTop: !variables?.hasModalTitle ? 20 : 0,\n ...(customTimerPickerStyles?.pickerContainer ?? {}),\n },\n },\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { RefObject, ReactElement } from \"react\";\n\nimport type { View, TouchableOpacity, Text } from \"react-native\";\n\nimport type Modal from \"../Modal\";\nimport type { TimerPickerProps } from \"../TimerPicker/types\";\
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from \"react\";\nimport { type RefObject, type ReactElement } from \"react\";\n\nimport type { View, TouchableOpacity, Text } from \"react-native\";\n\nimport type Modal from \"../Modal\";\nimport type { TimerPickerProps } from \"../TimerPicker/types\";\nimport type { CustomTimerPickerModalStyles } from \"./styles\";\n\nexport interface TimerPickerModalRef {\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 TimerPickerModalProps extends TimerPickerProps {\n buttonContainerProps?: React.ComponentProps<typeof View>;\n buttonTouchableOpacityProps?: React.ComponentProps<typeof TouchableOpacity>;\n /** Custom cancel button component. If provided, replaces the default cancel button. */\n cancelButton?: ReactElement<{ onPress?: () => void }>;\n cancelButtonText?: string;\n closeOnOverlayPress?: boolean;\n /** Custom confirm button component. If provided, replaces the default confirm button. */\n confirmButton?: ReactElement<{ onPress?: () => void }>;\n confirmButtonText?: string;\n containerProps?: React.ComponentProps<typeof View>;\n contentContainerProps?: React.ComponentProps<typeof View>;\n hideCancelButton?: boolean;\n modalProps?: React.ComponentProps<typeof Modal>;\n modalTitle?: string;\n modalTitleProps?: React.ComponentProps<typeof Text>;\n onCancel?: () => void;\n onConfirm: ({\n days,\n hours,\n minutes,\n seconds,\n }: {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n }) => void;\n setIsVisible: (isVisible: boolean) => void;\n styles?: CustomTimerPickerModalStyles;\n visible: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
package/dist/module/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { default as TimerPickerModal
|
|
2
|
-
export { default as TimerPicker
|
|
1
|
+
export { default as TimerPickerModal } from "./components/TimerPickerModal";
|
|
2
|
+
export { default as TimerPicker } from "./components/TimerPicker";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","TimerPickerModal","
|
|
1
|
+
{"version":3,"names":["default","TimerPickerModal","TimerPicker"],"sources":["index.ts"],"sourcesContent":["export { default as TimerPickerModal } from \"./components/TimerPickerModal\";\nexport type {\n TimerPickerModalProps,\n TimerPickerModalRef,\n CustomTimerPickerModalStyles,\n} from \"./components/TimerPickerModal\";\n\nexport { default as TimerPicker } from \"./components/TimerPicker\";\nexport type {\n TimerPickerProps,\n TimerPickerRef,\n CustomTimerPickerStyles,\n} from \"./components/TimerPicker\";\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,gBAAgB,QAAQ,+BAA+B;AAO3E,SAASD,OAAO,IAAIE,WAAW,QAAQ,0BAA0B","ignoreList":[]}
|
|
@@ -4,16 +4,16 @@ import DurationScroll from "../components/DurationScroll";
|
|
|
4
4
|
describe("DurationScroll", () => {
|
|
5
5
|
const onDurationChangeMock = jest.fn();
|
|
6
6
|
const emptyStyles = {
|
|
7
|
-
pickerContainer: {},
|
|
8
|
-
pickerLabelContainer: {},
|
|
9
|
-
pickerLabel: {},
|
|
10
|
-
pickerItemContainer: {},
|
|
11
|
-
pickerItem: {},
|
|
12
|
-
pickerAmPmContainer: {},
|
|
13
|
-
pickerAmPmLabel: {},
|
|
14
7
|
disabledPickerContainer: {},
|
|
15
8
|
disabledPickerItem: {},
|
|
16
|
-
|
|
9
|
+
pickerAmPmContainer: {},
|
|
10
|
+
pickerAmPmLabel: {},
|
|
11
|
+
pickerContainer: {},
|
|
12
|
+
pickerGradientOverlay: {},
|
|
13
|
+
pickerItem: {},
|
|
14
|
+
pickerItemContainer: {},
|
|
15
|
+
pickerLabel: {},
|
|
16
|
+
pickerLabelContainer: {}
|
|
17
17
|
};
|
|
18
18
|
it("renders without crashing", () => {
|
|
19
19
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","render","DurationScroll","describe","onDurationChangeMock","jest","fn","emptyStyles","pickerContainer","pickerLabelContainer","pickerLabel","pickerItemContainer","pickerItem","pickerAmPmContainer","pickerAmPmLabel","disabledPickerContainer","disabledPickerItem","pickerGradientOverlay","it","getByTestId","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label","queryByTestId","toBeNull"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\n\nimport DurationScroll from \"../components/DurationScroll\";\nimport type { generateStyles } from \"../components/TimerPicker/styles\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n pickerContainer: {},\n pickerLabelContainer: {},\n pickerLabel: {},\n pickerItemContainer: {},\n pickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerGradientOverlay: {},\n } as ReturnType<typeof generateStyles>;\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={23}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(10);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n label=\"Duration\"\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n\n it(\"does not render label when not provided\", () => {\n const { queryByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = queryByTestId(\"picker-label\");\n expect(label).toBeNull();\n });\n\n it(\"handles different intervals\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={5}\n maximumValue={55}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toBeDefined();\n });\n\n it(\"renders with zero padWithNItems\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles large maximumValue\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={999}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles aggressivelyGetLatestDuration set to true\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={true}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles repeatNumbersNTimesNotExplicitlySet set to false\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={false}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","render","DurationScroll","describe","onDurationChangeMock","jest","fn","emptyStyles","disabledPickerContainer","disabledPickerItem","pickerAmPmContainer","pickerAmPmLabel","pickerContainer","pickerGradientOverlay","pickerItem","pickerItemContainer","pickerLabel","pickerLabelContainer","it","getByTestId","createElement","aggressivelyGetLatestDuration","interval","maximumValue","onDurationChange","padWithNItems","repeatNumbersNTimesNotExplicitlySet","styles","testID","component","expect","toBeDefined","getAllByTestId","items","toHaveLength","getByText","label","queryByTestId","toBeNull"],"sources":["DurationScroll.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\n\nimport DurationScroll from \"../components/DurationScroll\";\nimport type { generateStyles } from \"../components/TimerPicker/styles\";\n\ndescribe(\"DurationScroll\", () => {\n const onDurationChangeMock = jest.fn();\n const emptyStyles = {\n disabledPickerContainer: {},\n disabledPickerItem: {},\n pickerAmPmContainer: {},\n pickerAmPmLabel: {},\n pickerContainer: {},\n pickerGradientOverlay: {},\n pickerItem: {},\n pickerItemContainer: {},\n pickerLabel: {},\n pickerLabelContainer: {},\n } as ReturnType<typeof generateStyles>;\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={1}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"renders the correct number of items\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={23}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toHaveLength(10);\n });\n\n it(\"renders the label if provided\", () => {\n const { getByText } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n label=\"Duration\"\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = getByText(\"Duration\");\n expect(label).toBeDefined();\n });\n\n it(\"does not render label when not provided\", () => {\n const { queryByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const label = queryByTestId(\"picker-label\");\n expect(label).toBeNull();\n });\n\n it(\"handles different intervals\", () => {\n const { getAllByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={5}\n maximumValue={55}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n />\n );\n const items = getAllByTestId(\"picker-item\");\n expect(items).toBeDefined();\n });\n\n it(\"renders with zero padWithNItems\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={0}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles large maximumValue\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={999}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles aggressivelyGetLatestDuration set to true\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={true}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={true}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n\n it(\"handles repeatNumbersNTimesNotExplicitlySet set to false\", () => {\n const { getByTestId } = render(\n <DurationScroll\n aggressivelyGetLatestDuration={false}\n interval={1}\n maximumValue={59}\n onDurationChange={onDurationChangeMock}\n padWithNItems={1}\n repeatNumbersNTimesNotExplicitlySet={false}\n styles={emptyStyles}\n testID=\"duration-scroll\"\n />\n );\n const component = getByTestId(\"duration-scroll\");\n expect(component).toBeDefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","render","fireEvent","cleanup","Text","Modal","describe","beforeEach","jest","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","it","getByTestId","createElement","isVisible","component","expect","toBeDefined","getByText","content","onOverlayPressMock","fn","onOverlayPress","overlay","press","toHaveBeenCalled","modal","props","visible","toBe","not","toThrow","rerender","toHaveBeenCalledTimes"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\nimport { Text } from \"react-native\";\n\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\n
|
|
1
|
+
{"version":3,"names":["React","render","fireEvent","cleanup","Text","Modal","describe","beforeEach","jest","useFakeTimers","afterEach","runOnlyPendingTimers","useRealTimers","it","getByTestId","createElement","isVisible","component","expect","toBeDefined","getByText","content","onOverlayPressMock","fn","onOverlayPress","overlay","press","toHaveBeenCalled","modal","props","visible","toBe","not","toThrow","rerender","toHaveBeenCalledTimes"],"sources":["Modal.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render, fireEvent, cleanup } from \"@testing-library/react-native\";\nimport { Text } from \"react-native\";\n\nimport Modal from \"../components/Modal\";\n\ndescribe(\"Modal\", () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.runOnlyPendingTimers();\n jest.useRealTimers();\n cleanup();\n });\n\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<Modal isVisible />);\n const component = getByTestId(\"modal\");\n expect(component).toBeDefined();\n });\n\n it(\"renders children when visible\", () => {\n const { getByText } = render(\n <Modal isVisible>\n <Text>{\"Modal Content\"}</Text>\n </Modal>\n );\n const content = getByText(\"Modal Content\");\n expect(content).toBeDefined();\n });\n\n it(\"calls onOverlayPress when overlay is pressed\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(<Modal isVisible onOverlayPress={onOverlayPressMock} />);\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalled();\n });\n\n it(\"renders but is not visible when isVisible is false\", () => {\n const { getByTestId } = render(<Modal isVisible={false} />);\n const modal = getByTestId(\"modal\");\n expect(modal).toBeDefined();\n expect(modal.props.visible).toBe(false);\n });\n\n it(\"does not call onOverlayPress when onOverlayPress is not provided\", () => {\n const { getByTestId } = render(<Modal isVisible />);\n const overlay = getByTestId(\"modal-backdrop\");\n expect(() => fireEvent.press(overlay)).not.toThrow();\n });\n\n it(\"handles rapid visibility changes\", () => {\n const { getByTestId, rerender } = render(<Modal isVisible={true} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n\n rerender(<Modal isVisible={false} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(false);\n\n rerender(<Modal isVisible={true} />);\n expect(getByTestId(\"modal\")).toBeDefined();\n expect(getByTestId(\"modal\").props.visible).toBe(true);\n });\n\n it(\"calls onOverlayPress exactly once per press\", () => {\n const onOverlayPressMock = jest.fn();\n const { getByTestId } = render(<Modal isVisible onOverlayPress={onOverlayPressMock} />);\n const overlay = getByTestId(\"modal-backdrop\");\n fireEvent.press(overlay);\n expect(onOverlayPressMock).toHaveBeenCalledTimes(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
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
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
3
|
import React from "react";
|
|
3
4
|
import { render } from "@testing-library/react-native";
|
|
4
5
|
import { FlatList } from "react-native";
|
|
@@ -111,14 +112,6 @@ describe("TimerPicker", () => {
|
|
|
111
112
|
expect(getByText("mins")).toBeDefined();
|
|
112
113
|
expect(getByText("secs")).toBeDefined();
|
|
113
114
|
});
|
|
114
|
-
it("renders with disabled state", () => {
|
|
115
|
-
const {
|
|
116
|
-
getByTestId
|
|
117
|
-
} = render(/*#__PURE__*/React.createElement(TimerPicker, {
|
|
118
|
-
disabled: true
|
|
119
|
-
}));
|
|
120
|
-
expect(getByTestId("timer-picker")).toBeDefined();
|
|
121
|
-
});
|
|
122
115
|
it("renders LinearGradient when specified", () => {
|
|
123
116
|
const {
|
|
124
117
|
getByTestId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","render","FlatList","TimerPicker","describe","it","getByTestId","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideDays","hideMinutes","hideSeconds","dayPicker","minutePicker","secondPicker","toBeNull","CustomFlatList","props","_extends","testID","queryAllByTestId","customFlatList","toHaveLength","hideHours","initialValue","hours","minutes","seconds","hourInterval","minuteInterval","secondInterval","getByText","hourLabel","minuteLabel","secondLabel","disabled","use12HourPicker","onDurationChangeMock","jest","fn","onDurationChange"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\nimport { FlatList } from \"react-native\";\n\nimport TimerPicker from \"../components/TimerPicker\";\n\ndescribe(\"TimerPicker\", () => {\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPicker />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"renders without crashing with negative padWithNItems\", () => {\n const { getByTestId } = render(<TimerPicker padWithNItems={-1} />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"hides days, minutes and seconds when respective hide props are provided\", () => {\n const { queryByTestId } = render(\n <TimerPicker hideDays hideMinutes hideSeconds />\n );\n const dayPicker = queryByTestId(\"duration-scroll-day\");\n const minutePicker = queryByTestId(\"duration-scroll-minute\");\n const secondPicker = queryByTestId(\"duration-scroll-second\");\n expect(dayPicker).toBeNull();\n expect(minutePicker).toBeNull();\n expect(secondPicker).toBeNull();\n });\n\n it(\"uses the custom FlatList component when provided\", () => {\n const CustomFlatList = (props) => (\n <FlatList {...props} testID=\"custom-flat-list\" />\n );\n const { queryAllByTestId } = render(\n <TimerPicker FlatList={CustomFlatList} />\n );\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n\n it(\"renders all pickers by default (hours, minutes, seconds)\", () => {\n const { getByTestId } = render(<TimerPicker />);\n expect(getByTestId(\"duration-scroll-hour\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-second\")).toBeDefined();\n });\n\n it(\"hides hours when hideHours is true\", () => {\n const { queryByTestId } = render(<TimerPicker hideHours />);\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n });\n\n it(\"renders with custom initial value\", () => {\n const { getByTestId } = render(\n <TimerPicker initialValue={{ hours: 2, minutes: 30, seconds: 45 }} />\n );\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with hourInterval\", () => {\n const { getByTestId } = render(<TimerPicker hourInterval={2} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with minuteInterval\", () => {\n const { getByTestId } = render(<TimerPicker minuteInterval={15} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with secondInterval\", () => {\n const { getByTestId } = render(<TimerPicker secondInterval={5} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with custom labels\", () => {\n const { getByText } = render(\n <TimerPicker\n hourLabel=\"hrs\"\n minuteLabel=\"mins\"\n secondLabel=\"secs\"\n />\n );\n expect(getByText(\"hrs\")).toBeDefined();\n expect(getByText(\"mins\")).toBeDefined();\n expect(getByText(\"secs\")).toBeDefined();\n });\n\n it(\"renders with disabled state\", () => {\n const { getByTestId } = render(<TimerPicker disabled />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders LinearGradient when specified\", () => {\n const { getByTestId } = render(<TimerPicker use12HourPicker={false} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"handles combination of hide props\", () => {\n const { queryByTestId } = render(\n <TimerPicker hideHours hideSeconds />\n );\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n\n it(\"handles onDurationChange callback\", () => {\n const onDurationChangeMock = jest.fn();\n const { getByTestId } = render(\n <TimerPicker onDurationChange={onDurationChangeMock} />\n );\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with all hide props and days enabled\", () => {\n const { getByTestId, queryByTestId } = render(\n <TimerPicker hideDays={false} hideHours hideMinutes hideSeconds />\n );\n expect(getByTestId(\"duration-scroll-day\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","render","FlatList","TimerPicker","describe","it","getByTestId","createElement","component","expect","toBeDefined","padWithNItems","queryByTestId","hideDays","hideMinutes","hideSeconds","dayPicker","minutePicker","secondPicker","toBeNull","CustomFlatList","props","_extends","testID","queryAllByTestId","customFlatList","toHaveLength","hideHours","initialValue","hours","minutes","seconds","hourInterval","minuteInterval","secondInterval","getByText","hourLabel","minuteLabel","secondLabel","use12HourPicker","onDurationChangeMock","jest","fn","onDurationChange"],"sources":["TimerPicker.test.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\n\nimport { render } from \"@testing-library/react-native\";\nimport { FlatList } from \"react-native\";\n\nimport TimerPicker from \"../components/TimerPicker\";\n\ndescribe(\"TimerPicker\", () => {\n it(\"renders without crashing\", () => {\n const { getByTestId } = render(<TimerPicker />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"renders without crashing with negative padWithNItems\", () => {\n const { getByTestId } = render(<TimerPicker padWithNItems={-1} />);\n const component = getByTestId(\"timer-picker\");\n expect(component).toBeDefined();\n });\n\n it(\"hides days, minutes and seconds when respective hide props are provided\", () => {\n const { queryByTestId } = render(<TimerPicker hideDays hideMinutes hideSeconds />);\n const dayPicker = queryByTestId(\"duration-scroll-day\");\n const minutePicker = queryByTestId(\"duration-scroll-minute\");\n const secondPicker = queryByTestId(\"duration-scroll-second\");\n expect(dayPicker).toBeNull();\n expect(minutePicker).toBeNull();\n expect(secondPicker).toBeNull();\n });\n\n it(\"uses the custom FlatList component when provided\", () => {\n const CustomFlatList = (props: any) => <FlatList {...props} testID=\"custom-flat-list\" />;\n const { queryAllByTestId } = render(<TimerPicker FlatList={CustomFlatList} />);\n const customFlatList = queryAllByTestId(\"custom-flat-list\");\n expect(customFlatList).toHaveLength(3);\n });\n\n it(\"renders all pickers by default (hours, minutes, seconds)\", () => {\n const { getByTestId } = render(<TimerPicker />);\n expect(getByTestId(\"duration-scroll-hour\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(getByTestId(\"duration-scroll-second\")).toBeDefined();\n });\n\n it(\"hides hours when hideHours is true\", () => {\n const { queryByTestId } = render(<TimerPicker hideHours />);\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n });\n\n it(\"renders with custom initial value\", () => {\n const { getByTestId } = render(\n <TimerPicker initialValue={{ hours: 2, minutes: 30, seconds: 45 }} />\n );\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with hourInterval\", () => {\n const { getByTestId } = render(<TimerPicker hourInterval={2} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with minuteInterval\", () => {\n const { getByTestId } = render(<TimerPicker minuteInterval={15} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with secondInterval\", () => {\n const { getByTestId } = render(<TimerPicker secondInterval={5} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with custom labels\", () => {\n const { getByText } = render(\n <TimerPicker hourLabel=\"hrs\" minuteLabel=\"mins\" secondLabel=\"secs\" />\n );\n expect(getByText(\"hrs\")).toBeDefined();\n expect(getByText(\"mins\")).toBeDefined();\n expect(getByText(\"secs\")).toBeDefined();\n });\n\n it(\"renders LinearGradient when specified\", () => {\n const { getByTestId } = render(<TimerPicker use12HourPicker={false} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"handles combination of hide props\", () => {\n const { queryByTestId } = render(<TimerPicker hideHours hideSeconds />);\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n\n it(\"handles onDurationChange callback\", () => {\n const onDurationChangeMock = jest.fn();\n const { getByTestId } = render(<TimerPicker onDurationChange={onDurationChangeMock} />);\n expect(getByTestId(\"timer-picker\")).toBeDefined();\n });\n\n it(\"renders with all hide props and days enabled\", () => {\n const { getByTestId, queryByTestId } = render(\n <TimerPicker hideDays={false} hideHours hideMinutes hideSeconds />\n );\n expect(getByTestId(\"duration-scroll-day\")).toBeDefined();\n expect(queryByTestId(\"duration-scroll-hour\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-minute\")).toBeNull();\n expect(queryByTestId(\"duration-scroll-second\")).toBeNull();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,10 +15,10 @@ describe("TimerPickerModal", () => {
|
|
|
15
15
|
cleanup();
|
|
16
16
|
});
|
|
17
17
|
const defaultProps = {
|
|
18
|
-
|
|
19
|
-
setIsVisible: jest.fn(),
|
|
18
|
+
onCancel: mockOnCancel,
|
|
20
19
|
onConfirm: mockOnConfirm,
|
|
21
|
-
|
|
20
|
+
setIsVisible: jest.fn(),
|
|
21
|
+
visible: true
|
|
22
22
|
};
|
|
23
23
|
it("renders without crashing", () => {
|
|
24
24
|
const {
|