aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authorHusam Salhab <47015061+hsalhab@users.noreply.github.com>2020-08-06 16:11:11 -0400
committerGitHub <noreply@github.com>2020-08-06 16:11:11 -0400
commit8e62aaa6dc7c61dcba7b9313d0aadcf7f46ce41b (patch)
tree02a92b5f97a7e8d98285b2f50d1524407dc6ebba /src/components
parent1279249ee9355f88913578f51e3b0bf7d99672f6 (diff)
[TMA-49] Add static boxes (#28)
* adds BigInput component * removes dummy fields * adds website TaggInput * adds handleWebsiteUpdate() * added website regex * added form * added handleFocusChange() * sends website in request * moves input components to onboarding * allow for empty string in website regex * adds bio regex * adds bio field * added bioRef for focusChange * added react-native-datepicker * moves TaggInput * add imports * add TaggDatePicker * fix typescript interface * remove TouchableComponent type * added date and selectpicker * added date and dropdown * adds momentjs * remove warnings from optional fields * remove debugging console.log * Removes isValidBirthdate * moves @types/react-native-datepicker to devdepnden * update package versioning * fix positioning * added checkpoint * update button styling * update placeholder * linting and other fixes
Diffstat (limited to 'src/components')
-rw-r--r--src/components/common/index.ts1
-rw-r--r--src/components/onboarding/TaggBigInput.tsx64
-rw-r--r--src/components/onboarding/TaggDatePicker.tsx63
-rw-r--r--src/components/onboarding/TaggDropDown.tsx40
-rw-r--r--src/components/onboarding/TaggInput.tsx (renamed from src/components/common/TaggInput.tsx)0
-rw-r--r--src/components/onboarding/index.ts4
6 files changed, 171 insertions, 1 deletions
diff --git a/src/components/common/index.ts b/src/components/common/index.ts
index 826675ff..cb8b9b6a 100644
--- a/src/components/common/index.ts
+++ b/src/components/common/index.ts
@@ -1,7 +1,6 @@
export {default as CenteredView} from './CenteredView';
export {default as OverlayView} from './OverlayView';
export {default as RadioCheckbox} from './RadioCheckbox';
-export {default as TaggInput} from './TaggInput';
export {default as NavigationIcon} from './NavigationIcon';
export {default as GradientBackground} from './GradientBackground';
export {default as Post} from './post';
diff --git a/src/components/onboarding/TaggBigInput.tsx b/src/components/onboarding/TaggBigInput.tsx
new file mode 100644
index 00000000..ba965465
--- /dev/null
+++ b/src/components/onboarding/TaggBigInput.tsx
@@ -0,0 +1,64 @@
+import React from 'react';
+import {View, TextInput, StyleSheet, TextInputProps} from 'react-native';
+import * as Animatable from 'react-native-animatable';
+
+interface TaggBigInputProps extends TextInputProps {
+ valid?: boolean;
+ invalidWarning?: string;
+ attemptedSubmit?: boolean;
+ width?: number | string;
+}
+/**
+ * An input component that receives all props a normal TextInput component does. TaggInput components grow to 60% of their parent's width by default, but this can be set using the `width` prop.
+ */
+const TaggBigInput = React.forwardRef((props: TaggBigInputProps, ref: any) => {
+ return (
+ <View style={styles.container}>
+ <TextInput
+ style={[{width: props.width}, styles.input]}
+ placeholderTextColor="#ddd"
+ clearButtonMode="while-editing"
+ ref={ref}
+ multiline={true}
+ {...props}
+ />
+ {props.attemptedSubmit && !props.valid && (
+ <Animatable.Text
+ animation="shake"
+ duration={500}
+ style={styles.warning}>
+ {props.invalidWarning}
+ </Animatable.Text>
+ )}
+ </View>
+ );
+});
+
+const styles = StyleSheet.create({
+ container: {
+ width: '100%',
+ alignItems: 'center',
+ marginVertical: 11,
+ },
+ input: {
+ minWidth: '60%',
+ height: 120,
+ fontSize: 16,
+ fontWeight: '600',
+ color: '#fff',
+ borderColor: '#fffdfd',
+ borderWidth: 2,
+ borderRadius: 20,
+ paddingLeft: 13,
+ paddingTop: 13,
+ },
+ warning: {
+ fontSize: 14,
+ marginTop: 5,
+ color: '#f4ddff',
+ maxWidth: 350,
+ textAlign: 'center',
+ },
+});
+
+export default TaggBigInput;
diff --git a/src/components/onboarding/TaggDatePicker.tsx b/src/components/onboarding/TaggDatePicker.tsx
new file mode 100644
index 00000000..39af6234
--- /dev/null
+++ b/src/components/onboarding/TaggDatePicker.tsx
@@ -0,0 +1,63 @@
+import React from 'react';
+import DatePicker from 'react-native-datepicker';
+import {View, StyleSheet, TextInputProps} from 'react-native';
+
+interface TaggDatePickerProps extends TextInputProps {
+ width?: number | string;
+ date?: string;
+ maxDate?: Date | string;
+}
+/**
+ * An input component that receives all props a normal TextInput component does. TaggInput components grow to 60% of their parent's width by default, but this can be set using the `width` prop.
+ */
+const TaggDatePicker = React.forwardRef(
+ (props: TaggDatePickerProps, ref: any) => {
+ return (
+ <View style={styles.container}>
+ <DatePicker
+ {...props}
+ style={styles.input}
+ placeholder={'Date of Birth'}
+ showIcon={false}
+ ref={ref}
+ format={'YYYY-MM-DD'}
+ customStyles={{
+ placeholderText: {
+ color: '#ddd',
+
+ fontSize: 16,
+ fontWeight: '600',
+ },
+ dateText: {
+ color: '#fff',
+ fontSize: 16,
+ fontWeight: '600',
+ },
+ dateInput: {
+ borderColor: '#fffdfd',
+ borderWidth: 2,
+ borderRadius: 20,
+ justifyContent: 'center',
+ alignItems: 'flex-start',
+ paddingLeft: 13,
+ },
+ }}
+ />
+ </View>
+ );
+ },
+);
+
+const styles = StyleSheet.create({
+ container: {
+ width: '100%',
+ alignItems: 'center',
+ marginVertical: 11,
+ },
+ input: {
+ minWidth: '67%',
+ height: 40,
+ },
+});
+
+export default TaggDatePicker;
diff --git a/src/components/onboarding/TaggDropDown.tsx b/src/components/onboarding/TaggDropDown.tsx
new file mode 100644
index 00000000..a45426ca
--- /dev/null
+++ b/src/components/onboarding/TaggDropDown.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import RNSelectPicker from 'react-native-picker-select';
+import {View, StyleSheet, TextInputProps} from 'react-native';
+
+interface TaggDropDownProps extends TextInputProps {
+ width?: number | string;
+}
+
+/**
+ * An input component that receives all props a normal TextInput component does. TaggInput components grow to 60% of their parent's width by default, but this can be set using the `width` prop.
+ */
+const TaggDropDown = React.forwardRef((props: TaggDropDownProps, ref: any) => {
+ return (
+ <View style={styles.container}>
+ <RNSelectPicker {...props} style={styles} ref={ref} />
+ </View>
+ );
+});
+
+const styles = StyleSheet.create({
+ container: {
+ width: '66.67%',
+ alignItems: 'center',
+ marginVertical: 11,
+ },
+ inputIOS: {
+ paddingVertical: 8,
+ paddingHorizontal: 10,
+ minWidth: '60%',
+ fontSize: 16,
+ fontWeight: '600',
+ color: '#fff',
+ borderColor: '#fffdfd',
+ borderWidth: 2,
+ borderRadius: 20,
+ paddingLeft: 13,
+ },
+});
+
+export default TaggDropDown;
diff --git a/src/components/common/TaggInput.tsx b/src/components/onboarding/TaggInput.tsx
index fe11d4f0..fe11d4f0 100644
--- a/src/components/common/TaggInput.tsx
+++ b/src/components/onboarding/TaggInput.tsx
diff --git a/src/components/onboarding/index.ts b/src/components/onboarding/index.ts
index ef972194..31f356d3 100644
--- a/src/components/onboarding/index.ts
+++ b/src/components/onboarding/index.ts
@@ -3,3 +3,7 @@ export {default as Background} from './Background';
export {default as RegistrationWizard} from './RegistrationWizard';
export {default as TermsConditions} from './TermsConditions';
export {default as SubmitButton} from './SubmitButton';
+export {default as TaggInput} from './TaggInput';
+export {default as TaggBigInput} from './TaggBigInput';
+export {default as TaggDatePicker} from './TaggDatePicker';
+export {default as TaggDropDown} from './TaggDropDown';