Skip to content

Commit 52aef1d

Browse files
mendyEdriethanshar
andauthored
Infra/custom datetime picker input (#1127)
* Added support for toggle from custom input * added datetime-picker custom input demo * added relevant prop * Made a better demo * rename to renderInput * return the demo value back * Added scroll view as a wrapping component for visibility Co-authored-by: Ethan Sharabi <[email protected]>
1 parent 242e8c8 commit 52aef1d

File tree

3 files changed

+46
-5
lines changed

3 files changed

+46
-5
lines changed

demo/src/screens/componentScreens/DateTimePickerScreen.js

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,36 @@
11
import React, {Component} from 'react';
2-
import {DateTimePicker, View, Text} from 'react-native-ui-lib'; // eslint-disable-line
2+
import {ScrollView} from 'react-native';
3+
import {DateTimePicker, Text, TouchableOpacity, Colors} from 'react-native-ui-lib'; // eslint-disable-line
34

45
export default class DateTimePickerScreen extends Component {
6+
7+
getCustomInputValue = value => {
8+
if (!value) {
9+
return 'Default';
10+
}
11+
return value.includes(new Date().getFullYear() + 1) ? 'Next Year' : value;
12+
};
13+
14+
renderCustomInput = (props, toggle) => {
15+
const {value} = props;
16+
return (
17+
<TouchableOpacity
18+
flex
19+
row
20+
spread
21+
onPress={() => {
22+
toggle(true);
23+
}}
24+
>
25+
<Text>Valid from</Text>
26+
<Text absR color={Colors.primary} text80BO>{this.getCustomInputValue(value)}</Text>
27+
</TouchableOpacity>
28+
);
29+
};
30+
531
render() {
632
return (
7-
<View flex padding-s5>
33+
<ScrollView style={{padding: 14}}>
834
<Text text40>Date Time Picker</Text>
935
<DateTimePicker
1036
containerStyle={{marginVertical: 20}}
@@ -37,7 +63,18 @@ export default class DateTimePickerScreen extends Component {
3763
placeholder={'Select time'}
3864
value={new Date('2015-03-25T12:00:00-06:30')}
3965
/>
40-
</View>
66+
<Text text60R marginT-40>
67+
Custom Input
68+
</Text>
69+
<DateTimePicker
70+
containerStyle={{marginVertical: 20}}
71+
title={'Date'}
72+
placeholder={'Select a date'}
73+
renderExpandableInput={this.renderCustomInput}
74+
dateFormat={'MMM D, YYYY'}
75+
// value={new Date('2015-03-25T12:00:00-06:30')}
76+
/>
77+
</ScrollView>
4178
);
4279
}
4380
}

src/components/dateTimePicker/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,11 @@ class DateTimePicker extends Component {
9393
/**
9494
* style to apply to the iOS dialog header
9595
*/
96-
headerStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number])
96+
headerStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number]),
97+
/**
98+
* Render custom input
99+
*/
100+
renderInput: PropTypes.elementType
97101
};
98102

99103
static defaultProps = {

src/components/textField/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ export default class TextField extends BaseInput {
559559
const {renderExpandableInput, testID} = this.getThemeProps();
560560

561561
if (_.isFunction(renderExpandableInput)) {
562-
return renderExpandableInput(this.getThemeProps());
562+
return renderExpandableInput(this.getThemeProps(), this.toggleExpandableModal);
563563
}
564564

565565
return (

0 commit comments

Comments
 (0)