UNPKG

react-native-gifted-chat-video-support

Version:

The most complete chat UI for React Native , now support send video thanks to react-native-video-player

101 lines (88 loc) 2.75 kB
/* eslint no-use-before-define: ["error", { "variables": false }] */ import PropTypes from 'prop-types'; import React from 'react'; import { Platform, StyleSheet, TextInput } from 'react-native'; import { MIN_COMPOSER_HEIGHT, DEFAULT_PLACEHOLDER } from './Constant'; import Color from './Color'; export default class Composer extends React.Component { onContentSizeChange(e) { const { contentSize } = e.nativeEvent; // Support earlier versions of React Native on Android. if (!contentSize) return; if ( !this.contentSize || this.contentSize.width !== contentSize.width || this.contentSize.height !== contentSize.height ) { this.contentSize = contentSize; this.props.onInputSizeChanged(this.contentSize); } } onChangeText(text) { this.props.onTextChanged(text); } render() { return ( <TextInput testID={this.props.placeholder} accessible accessibilityLabel={this.props.placeholder} placeholder={this.props.placeholder} placeholderTextColor={this.props.placeholderTextColor} multiline={this.props.multiline} onChange={(e) => this.onContentSizeChange(e)} onContentSizeChange={(e) => this.onContentSizeChange(e)} onChangeText={(text) => this.onChangeText(text)} style={[styles.textInput, this.props.textInputStyle, { height: this.props.composerHeight }]} autoFocus={this.props.textInputAutoFocus} value={this.props.text} enablesReturnKeyAutomatically underlineColorAndroid="transparent" keyboardAppearance={this.props.keyboardAppearance} {...this.props.textInputProps} /> ); } } const styles = StyleSheet.create({ textInput: { flex: 1, marginLeft: 10, fontSize: 16, lineHeight: 16, marginTop: Platform.select({ ios: 6, android: 0, }), marginBottom: Platform.select({ ios: 5, android: 3, }), }, }); Composer.defaultProps = { composerHeight: MIN_COMPOSER_HEIGHT, text: '', placeholderTextColor: Color.defaultProps, placeholder: DEFAULT_PLACEHOLDER, textInputProps: null, multiline: true, textInputStyle: {}, textInputAutoFocus: false, keyboardAppearance: 'default', onTextChanged: () => {}, onInputSizeChanged: () => {}, }; Composer.propTypes = { composerHeight: PropTypes.number, text: PropTypes.string, placeholder: PropTypes.string, placeholderTextColor: PropTypes.string, textInputProps: PropTypes.object, onTextChanged: PropTypes.func, onInputSizeChanged: PropTypes.func, multiline: PropTypes.bool, textInputStyle: TextInput.propTypes.style, textInputAutoFocus: PropTypes.bool, keyboardAppearance: PropTypes.string, };