diff --git a/App.js b/App.js
index e839a06..4bb1038 100644
--- a/App.js
+++ b/App.js
@@ -1 +1,46 @@
export default from './storybook';
+
+// import React, {useState} from 'react';
+// import {
+// StyleSheet,
+// View,
+// SafeAreaView,
+// Text,
+// Alert,
+// onChangeText,
+// Platform
+// } from 'react-native';
+// import {Base as Input} from './src';
+
+// const App = () => {
+// const [date, setDate] = useState(new Date(1598051730000));
+// const [mode, setMode] = useState('date');
+// const [show, setShow] = useState(false);
+
+// const onChange = (event, selectedDate) => {
+// const currentDate = selectedDate || date;
+// setShow(Platform.OS === 'ios');
+// setDate(currentDate);
+// };
+// return (
+//
+// {
+// onChange(v);
+// }}
+// labelTextColor="#3B82F6"
+// maximumDate={new Date(2300, 10, 20)}
+// minimumDate={new Date(1950, 0, 1)}
+// placeholder="YYYY-MM-DD"
+// icon={😊}
+// iconPosition="right"
+// edit={false}
+// />
+//
+// );
+// };
+// export default App;
diff --git a/package.json b/package.json
index c71155a..57e4f96 100644
--- a/package.json
+++ b/package.json
@@ -67,5 +67,8 @@
},
"jest": {
"preset": "react-native"
+ },
+ "dependencies": {
+ "@react-native-community/datetimepicker": "^5.0.1"
}
}
diff --git a/src/Base/Base.stories.js b/src/Base/Base.stories.js
index a6622c4..d2610b6 100644
--- a/src/Base/Base.stories.js
+++ b/src/Base/Base.stories.js
@@ -47,4 +47,22 @@ storiesOf('Default', module)
// borderColor="#FDBA74"
// errorTextStyles={{color: '#FDBA74'}}
/>
+ ))
+ .add('Default Calendar Field', () => (
+ {
+ onChangeText(value)
+ }}
+ labelTextColor="#3B82F6"
+ maximumDate={new Date(2300, 10, 20)}
+ minimumDate={new Date(1950, 0, 1)}
+ placeholder="YYYY-MM-DD"
+ icon={😊}
+ iconPosition="right"
+ edit={false}
+ />
));
diff --git a/src/Base/index.js b/src/Base/index.js
index ecf15ce..de4800d 100644
--- a/src/Base/index.js
+++ b/src/Base/index.js
@@ -1,6 +1,7 @@
import {height} from 'dom-helpers';
-import React from 'react';
-import {Text, View, TextInput} from 'react-native';
+import React, {useState, useRef, useEffect} from 'react';
+import {Text, View, TextInput, Platform, Pressable, Button} from 'react-native';
+import DateTimePicker from '@react-native-community/datetimepicker';
const Input = ({
onChangeText,
@@ -8,16 +9,25 @@ const Input = ({
icon,
value,
placeholder = 'Enter Text',
+ maximumDate = null,
+ minimumDate = null,
label = null,
+ calendar = 'false',
+ autoFocus = false,
error,
+ editable = true,
+ mode = 'date',
+ edit = false,
+ calenderWidth = '100%',
...props
}) => {
+ const inputRef = useRef(null);
const [focused, setFocused] = React.useState(false);
const textInputStyles = {
...(props.textInputStyles || {
flex: 1,
width: '100%',
- color: props.textColor || '#fff',
+ color: props.textColor || '#000',
letterSpacing: 0,
}),
};
@@ -39,53 +49,133 @@ const Input = ({
}
return props.borderColor;
};
+ const [event, setEvent] = useState(edit ? 'true' : 'false');
+
+ const [showDatePicker, setShowDatePicker] = useState('false');
+
+ const formatDate = value => {
+ var d = new Date(value.toString()),
+ month = '' + (d.getMonth() + 1),
+ day = '' + d.getDate(),
+ year = d.getFullYear();
+ if (month.length < 2) {
+ month = '0' + month;
+ }
+ if (day.length < 2) {
+ day = '0' + day;
+ }
+
+ return [year, month, day].join('-');
+ };
+
+ useEffect(() => {
+ if (autoFocus) {
+ inputRef.current.focus();
+ }
+ }, [autoFocus]);
return (
- <>
+
{label && (
{label}
)}
-
-
- {icon && icon}
-
+ {calendar === 'false' && (
+ <>
+
+
+ {icon && icon}
+
+
+ {
+ setFocused(true);
+ }}
+ onBlur={() => {
+ setFocused(false);
+ }}
+ {...props}
+ />
+
+
+ >
+ )}
+ {calendar === 'true' && (
- {
- setFocused(true);
- }}
- onBlur={() => {
- setFocused(false);
- }}
- {...props}
- />
+
+ {icon && icon}
+
+ {event === 'true' && (
+ {
+ setShowDatePicker('true');
+ }}
+ value={value}
+ />
+ )}
+
+ {event === 'false' && (
+ {
+ setShowDatePicker('true');
+ }}>
+ {placeholder}
+
+ )}
-
+ )}
+
{error && (
)}
- >
+ {showDatePicker === 'true' && (
+
+ {
+ if (event.type === 'dismissed') {
+ setShowDatePicker('false');
+ } else {
+ setShowDatePicker('false');
+ if (mode === 'time') {
+ onChangeText(
+ `${selectedDate.getHours()}:${selectedDate.getMinutes()}`,
+ );
+ } else {
+ onChangeText(formatDate(selectedDate));
+ }
+ setEvent('true');
+ }
+ }}
+ />
+
+ )}
+
);
};
diff --git a/src/index.js b/src/index.js
index 769e688..6fee475 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,3 +1,2 @@
import Base from './Base';
-
export {Base};
diff --git a/yarn.lock b/yarn.lock
index 6c4a78d..baffb85 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1632,6 +1632,13 @@
sudo-prompt "^9.0.0"
wcwidth "^1.0.1"
+"@react-native-community/datetimepicker@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-5.0.1.tgz#1113f4c999dff6fda3cb5926e53f5f9c22e42e62"
+ integrity sha512-yDQbGZbP7SiOLkB2j1F0i9sQvVMo/cv4BB3DnbzPzWWYOH6xSPL1D9hi3YY9UUaJKQnLNgXBRMUEAJkmMy8NTw==
+ dependencies:
+ invariant "^2.2.4"
+
"@react-native-community/eslint-config@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-config/-/eslint-config-2.0.0.tgz#35dcc529a274803fc4e0a6b3d6c274551fb91774"