| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | 
							- // @flow
 - 
 - import React, { Component } from 'react';
 - import { Text, View } from 'react-native';
 - 
 - import { translate } from '../../../base/i18n';
 - 
 - import styles, { ANDROID_UNDERLINE_COLOR } from './styles';
 - 
 - /**
 -  * The type of the React {@code Component} props of {@link FormRow}
 -  */
 - type Props = {
 - 
 -     /**
 -      *
 -      */
 -     children: Object,
 - 
 -     /**
 -      * Prop to decide if a row separator is to be rendered.
 -      */
 -     fieldSeparator: boolean,
 - 
 -     /**
 -      * The i18n key of the text label of the form field.
 -      */
 -     i18nLabel: string,
 - 
 -     /**
 -      * Invoked to obtain translated strings.
 -      */
 -     t: Function
 - }
 - 
 - /**
 -  * Implements a React {@code Component} which renders a standardized row on a
 -  * form. The component should have exactly one child component.
 -  */
 - class FormRow extends Component<Props> {
 -     /**
 -      * Initializes a new {@code FormRow} instance.
 -      *
 -      * @param {Object} props - Component properties.
 -      */
 -     constructor(props) {
 -         super(props);
 - 
 -         React.Children.only(this.props.children);
 - 
 -         this._getDefaultFieldProps = this._getDefaultFieldProps.bind(this);
 -         this._getRowStyle = this._getRowStyle.bind(this);
 -     }
 - 
 -     /**
 -      * Implements React's {@link Component#render()}.
 -      *
 -      * @inheritdoc
 -      * @override
 -      * @returns {ReactElement}
 -      */
 -     render() {
 -         const { t } = this.props;
 - 
 -         // Some field types need additional props to look good and standardized
 -         // on a form.
 -         const newChild
 -             = React.cloneElement(
 -                 this.props.children,
 -                 this._getDefaultFieldProps(this.props.children));
 - 
 -         return (
 -             <View
 -                 style = { this._getRowStyle() } >
 -                 <View style = { styles.fieldLabelContainer } >
 -                     <Text
 -                         style = { [
 -                             styles.text,
 -                             styles.fieldLabelText
 -                         ] } >
 -                         { t(this.props.i18nLabel) }
 -                     </Text>
 -                 </View>
 -                 <View style = { styles.fieldValueContainer } >
 -                     { newChild }
 -                 </View>
 -             </View>
 -         );
 -     }
 - 
 -     _getDefaultFieldProps: (field: Component<*, *>) => Object;
 - 
 -     /**
 -      * Assembles the default props to the field child component of this form
 -      * row.
 -      *
 -      * Currently tested/supported field types:
 -      *     - TextInput
 -      *     - Switch (needs no addition props ATM).
 -      *
 -      * @param {Object} field - The field (child) component.
 -      * @private
 -      * @returns {Object}
 -      */
 -     _getDefaultFieldProps(field: Object) {
 -         if (field && field.type) {
 -             switch (field.type.displayName) {
 -             case 'TextInput':
 -                 return {
 -                     style: styles.textInputField,
 -                     underlineColorAndroid: ANDROID_UNDERLINE_COLOR
 -                 };
 -             }
 -         }
 - 
 -         return {};
 -     }
 - 
 -     _getRowStyle: () => Array<Object>;
 - 
 -     /**
 -      * Assembles the row style array based on the row's props.
 -      *
 -      * @private
 -      * @returns {Array<Object>}
 -      */
 -     _getRowStyle() {
 -         const rowStyle = [
 -             styles.fieldContainer
 -         ];
 - 
 -         if (this.props.fieldSeparator) {
 -             rowStyle.push(styles.fieldSeparator);
 -         }
 - 
 -         return rowStyle;
 -     }
 - }
 - 
 - export default translate(FormRow);
 
 
  |