Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. var React = require('react');
  4. var ReactNative = require('react-native');
  5. var {
  6.   DatePickerIOS,
  7.   StyleSheet,
  8.   Text,
  9.   TextInput,
  10.   View,
  11.   AppRegistry,
  12. } = ReactNative;
  13.  
  14. class DatePickerExample extends React.Component {
  15.   static defaultProps = {
  16.     date: new Date(),
  17.     timeZoneOffsetInHours: (-1) * (new Date()).getTimezoneOffset() / 60,
  18.   };
  19.  
  20.   state = {
  21.     date: this.props.date,
  22.     timeZoneOffsetInHours: this.props.timeZoneOffsetInHours,
  23.   };
  24.  
  25.   onDateChange = (date) => {
  26.     this.setState({date: date});
  27.   };
  28.  
  29.   onTimezoneChange = (event) => {
  30.     var offset = parseInt(event.nativeEvent.text, 10);
  31.     if (isNaN(offset)) {
  32.       return;
  33.     }
  34.     this.setState({timeZoneOffsetInHours: offset});
  35.   };
  36.  
  37.   render() {
  38.     // Ideally, the timezone input would be a picker rather than a
  39.     // text input, but we don't have any pickers yet :(
  40.     return (
  41.       <View>
  42.         <WithLabel label="Value:">
  43.           <Text>{
  44.             this.state.date.toLocaleDateString() +
  45.             ' ' +
  46.             this.state.date.toLocaleTimeString()
  47.           }</Text>
  48.         </WithLabel>
  49.         <WithLabel label="Timezone:">
  50.           <TextInput
  51.             onChange={this.onTimezoneChange}
  52.             style={styles.textinput}
  53.             value={this.state.timeZoneOffsetInHours.toString()}
  54.           />
  55.           <Text> hours from UTC</Text>
  56.         </WithLabel>
  57.         <Heading label="Date + time picker" />
  58.         <DatePickerIOS
  59.           date={this.state.date}
  60.           mode="datetime"
  61.           timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
  62.           onDateChange={this.onDateChange}
  63.         />
  64.         <Heading label="Date picker" />
  65.         <DatePickerIOS
  66.           date={this.state.date}
  67.           mode="date"
  68.           timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
  69.           onDateChange={this.onDateChange}
  70.         />
  71.         <Heading label="Time picker, 10-minute interval" />
  72.         <DatePickerIOS
  73.           date={this.state.date}
  74.           mode="time"
  75.           timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
  76.           onDateChange={this.onDateChange}
  77.           minuteInterval={10}
  78.         />
  79.       </View>
  80.     );
  81.   }
  82. }
  83.  
  84. class WithLabel extends React.Component {
  85.   render() {
  86.     return (
  87.       <View style={styles.labelContainer}>
  88.         <View style={styles.labelView}>
  89.           <Text style={styles.label}>
  90.             {this.props.label}
  91.           </Text>
  92.         </View>
  93.         {this.props.children}
  94.       </View>
  95.     );
  96.   }
  97. }
  98.  
  99. class Heading extends React.Component {
  100.   render() {
  101.     return (
  102.       <View style={styles.headingContainer}>
  103.         <Text style={styles.heading}>
  104.           {this.props.label}
  105.         </Text>
  106.       </View>
  107.     );
  108.   }
  109. }
  110.  
  111. exports.displayName = (undefined: ?string);
  112. exports.title = '<DatePickerIOS>';
  113. exports.description = 'Select dates and times using the native UIDatePicker.';
  114. exports.examples = [
  115. {
  116.   title: '<DatePickerIOS>',
  117.   render: function(): React.Element<any> {
  118.     return <DatePickerExample />;
  119.   },
  120. }];
  121.  
  122. var styles = StyleSheet.create({
  123.   textinput: {
  124.     height: 26,
  125.     width: 50,
  126.     borderWidth: 0.5,
  127.     borderColor: '#0f0f0f',
  128.     padding: 4,
  129.     fontSize: 13,
  130.   },
  131.   labelContainer: {
  132.     flexDirection: 'row',
  133.     alignItems: 'center',
  134.     marginVertical: 2,
  135.   },
  136.   labelView: {
  137.     marginRight: 10,
  138.     paddingVertical: 2,
  139.   },
  140.   label: {
  141.     fontWeight: '500',
  142.   },
  143.   headingContainer: {
  144.     padding: 4,
  145.     backgroundColor: '#f6f7f8',
  146.   },
  147.   heading: {
  148.     fontWeight: '500',
  149.     fontSize: 14,
  150.   },
  151. });
  152.  
  153. AppRegistry.registerComponent('DT', () => DatePickerExample);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement