From f87d6945b24911c3801263cd802a7e170cbeb218 Mon Sep 17 00:00:00 2001
From: kritikhedau
Date: Mon, 20 Oct 2025 18:59:38 +0530
Subject: [PATCH 1/6] Add support for custom buttons
---
README.md | 203 +-
demos/example5.gif | Bin 0 -> 972974 bytes
examples/example-bare/App.tsx | 96 +
examples/example-bare/ios/Podfile.lock | 2102 +++++++++++++++++
.../ios/exampleBare.xcodeproj/project.pbxproj | 53 +-
.../contents.xcworkspacedata | 10 +
examples/example-expo/App.tsx | 99 +-
.../TimerPickerModal/TimerPickerModal.tsx | 65 +-
src/components/TimerPickerModal/types.ts | 6 +-
src/tests/TimerPickerModal.test.tsx | 92 +
10 files changed, 2633 insertions(+), 93 deletions(-)
create mode 100644 demos/example5.gif
create mode 100644 examples/example-bare/ios/Podfile.lock
create mode 100644 examples/example-bare/ios/exampleBare.xcworkspace/contents.xcworkspacedata
diff --git a/README.md b/README.md
index e2d969c..b227a20 100644
--- a/README.md
+++ b/README.md
@@ -13,37 +13,38 @@ Works with Expo and bare React Native apps ✅
Includes iOS-style haptic and audio feedback 🍏
-- [React Native Timer Picker ⏰🕰️⏳](#react-native-timer-picker-️)
- - [Demos 📱](#demos-)
- - [Installation 🚀](#installation-)
- - [Peer Dependencies 👶](#peer-dependencies-)
- - [Linear Gradient](#linear-gradient)
- - [Masked View](#masked-view)
- - [Examples 😎](#examples-)
- - [Timer Picker Modal (Dark Mode) 🌚](#timer-picker-modal-dark-mode-)
- - [Timer Picker Modal (Light Mode) 🌞](#timer-picker-modal-light-mode-)
- - [Timer Picker with Transparent Fade-Out (Dark Mode) 🌒](#timer-picker-with-transparent-fade-out-dark-mode-)
- - [Timer Picker with Customisation (Light Mode) 🌔](#timer-picker-with-customisation-light-mode-)
- - [Props 💅](#props-)
- - [TimerPicker ⏲️](#timerpicker-️)
- - [Custom Styles 👗](#custom-styles-)
- - [Performance](#performance)
- - [Custom FlatList](#custom-flatlist)
- - [TimerPickerModal ⏰](#timerpickermodal-)
- - [Custom Styles 👕](#custom-styles--1)
- - [Methods 🔄](#methods-)
- - [TimerPicker](#timerpicker)
- - [TimerPickerModal](#timerpickermodal)
- - [Picker Feedback 📳🔉](#picker-feedback-)
- - [Audio Feedack](#audio-feedack)
- - [Haptic Feedback](#haptic-feedback)
- - [Feedback Example](#feedback-example)
- - [Expo-Specific Audio/Haptic Feedback (DEPRECATED)](#expo-specific-audiohaptic-feedback-deprecated)
- - [Contributing 🧑🤝🧑](#contributing-)
- - [Dev Setup](#dev-setup)
- - [GitHub Guidelines](#github-guidelines)
- - [Limitations ⚠](#limitations-)
- - [License 📝](#license-)
+- [React Native Timer Picker ⏰🕰️⏳](#react-native-timer-picker-️)
+ - [Demos 📱](#demos-)
+ - [Installation 🚀](#installation-)
+ - [Peer Dependencies 👶](#peer-dependencies-)
+ - [Linear Gradient](#linear-gradient)
+ - [Masked View](#masked-view)
+ - [Examples 😎](#examples-)
+ - [Timer Picker Modal (Dark Mode) 🌚](#timer-picker-modal-dark-mode-)
+ - [Timer Picker Modal (Light Mode) 🌞](#timer-picker-modal-light-mode-)
+ - [Timer Picker with Transparent Fade-Out (Dark Mode) 🌒](#timer-picker-with-transparent-fade-out-dark-mode-)
+ - [Timer Picker with Customisation (Light Mode) 🌔](#timer-picker-with-customisation-light-mode-)
+ - [Timer Picker Modal with Custom Buttons 🎨](#timer-picker-modal-with-custom-buttons-)
+ - [Props 💅](#props-)
+ - [TimerPicker ⏲️](#timerpicker-️)
+ - [Custom Styles 👗](#custom-styles-)
+ - [Performance](#performance)
+ - [Custom FlatList](#custom-flatlist)
+ - [TimerPickerModal ⏰](#timerpickermodal-)
+ - [Custom Styles 👕](#custom-styles--1)
+ - [Methods 🔄](#methods-)
+ - [TimerPicker](#timerpicker)
+ - [TimerPickerModal](#timerpickermodal)
+ - [Picker Feedback 📳🔉](#picker-feedback-)
+ - [Audio Feedack](#audio-feedack)
+ - [Haptic Feedback](#haptic-feedback)
+ - [Feedback Example](#feedback-example)
+ - [Expo-Specific Audio/Haptic Feedback (DEPRECATED)](#expo-specific-audiohaptic-feedback-deprecated)
+ - [Contributing 🧑🤝🧑](#contributing-)
+ - [Dev Setup](#dev-setup)
+ - [GitHub Guidelines](#github-guidelines)
+ - [Limitations ⚠](#limitations-)
+ - [License 📝](#license-)
@@ -59,6 +60,9 @@ Includes iOS-style haptic and audio feedback 🍏
+
+
+
@@ -399,6 +403,141 @@ return (
+### Timer Picker Modal with Custom Buttons 🎨
+
+```jsx
+import { TimerPickerModal } from "react-native-timer-picker";
+import { LinearGradient } from "expo-linear-gradient"; // or `import LinearGradient from "react-native-linear-gradient"`
+import { TouchableOpacity, Text, StyleSheet, Platform } from "react-native";
+
+// Custom Button Component
+interface MyCustomButtonProps {
+ label: string;
+ onPress?: () => void;
+}
+
+const MyCustomButton: React.FC = ({ label, onPress }) => {
+ return (
+
+
+ {label}
+
+
+ );
+};
+
+// Styles
+const styles = StyleSheet.create({
+ customButtonContainer: {
+ marginHorizontal: 5,
+ },
+ customButtonGradient: {
+ borderRadius: 15,
+ paddingVertical: 12,
+ paddingHorizontal: 20,
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ customButtonText: {
+ color: '#FFFFFF',
+ fontSize: 16,
+ fontWeight: '600',
+ },
+});
+
+....
+const [showPicker, setShowPicker] = useState(false);
+const [alarmString, setAlarmString] = useState(null);
+
+const formatTime = ({
+ hours,
+ minutes,
+ seconds,
+}: {
+ hours?: number;
+ minutes?: number;
+ seconds?: number;
+}) => {
+ const timeParts = [];
+
+ if (hours !== undefined) {
+ timeParts.push(hours.toString().padStart(2, "0"));
+ }
+ if (minutes !== undefined) {
+ timeParts.push(minutes.toString().padStart(2, "0"));
+ }
+ if (seconds !== undefined) {
+ timeParts.push(seconds.toString().padStart(2, "0"));
+ }
+
+ return timeParts.join(":");
+};
+
+return (
+
+
+ {alarmString !== null ? "Alarm set for" : "No alarm set"}
+
+ setShowPicker(true)}>
+
+ {alarmString !== null ? (
+
+ {alarmString}
+
+ ) : null}
+ setShowPicker(true)}>
+
+
+ Set Alarm 🔔
+
+
+
+
+
+ {
+ setAlarmString(formatTime(pickedDuration));
+ setShowPicker(false);
+ }}
+ modalTitle="Set Alarm"
+ onCancel={() => setShowPicker(false)}
+ closeOnOverlayPress
+ use12HourPicker
+ LinearGradient={LinearGradient}
+ // Custom buttons
+ cancelButton={}
+ confirmButton={}
+ styles={{
+ theme: "light",
+ }}
+ />
+
+)
+
+```
+
+
+
## Props 💅
@@ -531,6 +670,8 @@ The TimerPickerModal component accepts all [TimerPicker props](#timerpicker-️)
| hideCancelButton | Hide the cancel button within the modal | Boolean | false | false |
| confirmButtonText | Text for the confirm button | String | Confirm | false |
| cancelButtonText | Text for the cancel button | String | Cancel | false |
+| confirmButton | Custom confirm button component | `ReactElement<{ onPress?: () => void }>` | - | false |
+| cancelButton | Custom cancel button component | `ReactElement<{ onPress?: () => void }>` | - | false |
| modalTitle | Title text for the modal | String | - | false |
| modalProps | Props for the main modal component | `React.ComponentProps` | - | false |
| containerProps | Props for the main container | `React.ComponentProps` | - | false |
diff --git a/demos/example5.gif b/demos/example5.gif
new file mode 100644
index 0000000000000000000000000000000000000000..558dd4a8f721fa36b5f366406b12220e72e874aa
GIT binary patch
literal 972974
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 OkECB5X|VYh&^Mfqydyi#?|f##
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 |