UNPKG

react-native-mock-tmp-build

Version:

A fully mocked and test-friendly version of react native

249 lines (238 loc) 8.18 kB
var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _react=require('react');var _react2=_interopRequireDefault(_react); var _propTypes=require('prop-types');var _propTypes2=_interopRequireDefault(_propTypes); var _TextInputState=require('../api/TextInputState');var _TextInputState2=_interopRequireDefault(_TextInputState); var _reactTimerMixin=require('react-timer-mixin');var _reactTimerMixin2=_interopRequireDefault(_reactTimerMixin); var _NativeMethodsMixin=require('../mixins/NativeMethodsMixin');var _NativeMethodsMixin2=_interopRequireDefault(_NativeMethodsMixin); var _View=require('./View');var _View2=_interopRequireDefault(_View); var _Text=require('./Text');var _Text2=_interopRequireDefault(_Text); var _createReactClass=require('create-react-class');var _createReactClass2=_interopRequireDefault(_createReactClass);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{'default':obj};} var TextInput=(0,_createReactClass2['default'])({displayName:'TextInput', propTypes:_extends({}, _View2['default'].propTypes,{ /** * Can tell TextInput to automatically capitalize certain characters. * * - characters: all characters, * - words: first letter of each word * - sentences: first letter of each sentence (default) * - none: don't auto capitalize anything */ autoCapitalize:_propTypes2['default'].oneOf([ 'none', 'sentences', 'words', 'characters']), /** * If false, disables auto-correct. The default value is true. */ autoCorrect:_propTypes2['default'].bool, /** * If true, focuses the input on componentDidMount. * The default value is false. */ autoFocus:_propTypes2['default'].bool, /** * If false, text is not editable. The default value is true. */ editable:_propTypes2['default'].bool, /** * Determines which keyboard to open, e.g.`numeric`. * * The following values work across platforms: * - default * - numeric * - email-address */ keyboardType:_propTypes2['default'].oneOf([ // Cross-platform 'default', 'email-address', 'numeric', 'phone-pad', // iOS-only 'ascii-capable', 'numbers-and-punctuation', 'url', 'number-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search']), /** * Determines the color of the keyboard. * @platform ios */ keyboardAppearance:_propTypes2['default'].oneOf([ 'default', 'light', 'dark']), /** * Determines how the return key should look. * @platform ios */ returnKeyType:_propTypes2['default'].oneOf([ 'default', 'go', 'google', 'join', 'next', 'route', 'search', 'send', 'yahoo', 'done', 'emergency-call']), /** * Limits the maximum number of characters that can be entered. Use this * instead of implementing the logic in JS to avoid flicker. */ maxLength:_propTypes2['default'].number, /** * Sets the number of lines for a TextInput. Use it with multiline set to * true to be able to fill the lines. * @platform android */ numberOfLines:_propTypes2['default'].number, /** * If true, the keyboard disables the return key when there is no text and * automatically enables it when there is text. The default value is false. * @platform ios */ enablesReturnKeyAutomatically:_propTypes2['default'].bool, /** * If true, the text input can be multiple lines. * The default value is false. */ multiline:_propTypes2['default'].bool, /** * Callback that is called when the text input is blurred */ onBlur:_propTypes2['default'].func, /** * Callback that is called when the text input is focused */ onFocus:_propTypes2['default'].func, /** * Callback that is called when the text input's text changes. */ onChange:_propTypes2['default'].func, /** * Callback that is called when the text input's text changes. * Changed text is passed as an argument to the callback handler. */ onChangeText:_propTypes2['default'].func, /** * Callback that is called when text input ends. */ onEndEditing:_propTypes2['default'].func, /** * Callback that is called when the text input selection is changed */ onSelectionChange:_propTypes2['default'].func, /** * Callback that is called when the text input's submit button is pressed. * Invalid if multiline={true} is specified. */ onSubmitEditing:_propTypes2['default'].func, /** * Callback that is called when a key is pressed. * Pressed key value is passed as an argument to the callback handler. * Fires before onChange callbacks. * @platform ios */ onKeyPress:_propTypes2['default'].func, /** * Invoked on mount and layout changes with `{x, y, width, height}`. */ onLayout:_propTypes2['default'].func, /** * The string that will be rendered before text input has been entered */ placeholder:_propTypes2['default'].string, /** * The text color of the placeholder string */ placeholderTextColor:_propTypes2['default'].string, /** * If true, the text input obscures the text entered so that sensitive text * like passwords stay secure. The default value is false. */ secureTextEntry:_propTypes2['default'].bool, /** * See DocumentSelectionState.js, some state that is responsible for * maintaining selection information for a document * @platform ios */ // TODO(lmr): requireLibrary // selectionState: PropTypes.instanceOf(DocumentSelectionState), /** * The value to show for the text input. TextInput is a controlled * component, which means the native value will be forced to match this * value prop if provided. For most uses this works great, but in some * cases this may cause flickering - one common cause is preventing edits * by keeping value the same. In addition to simply setting the same value, * either set `editable={false}`, or set/update `maxLength` to prevent * unwanted edits without flicker. */ value:_propTypes2['default'].string, /** * Provides an initial value that will change when the user starts typing. * Useful for simple use-cases where you don't want to deal with listening * to events and updating the value prop to keep the controlled state in sync. */ defaultValue:_propTypes2['default'].string, /** * When the clear button should appear on the right side of the text view * @platform ios */ clearButtonMode:_propTypes2['default'].oneOf([ 'never', 'while-editing', 'unless-editing', 'always']), /** * If true, clears the text field automatically when editing begins * @platform ios */ clearTextOnFocus:_propTypes2['default'].bool, /** * If true, all text will automatically be selected on focus * @platform ios */ selectTextOnFocus:_propTypes2['default'].bool, /** * If true, the text field will blur when submitted. * The default value is true for single-line fields and false for * multiline fields. Note that for multiline fields, setting blurOnSubmit * to true means that pressing return will blur the field and trigger the * onSubmitEditing event instead of inserting a newline into the field. * @platform ios */ blurOnSubmit:_propTypes2['default'].bool, /** * Styles */ style:_Text2['default'].propTypes.style, /** * Used to locate this view in end-to-end tests */ testID:_propTypes2['default'].string, /** * The color of the textInput underline. * @platform android */ underlineColorAndroid:_propTypes2['default'].string}), mixins:[_NativeMethodsMixin2['default'],_reactTimerMixin2['default']], statics:{ State:_TextInputState2['default']}, isFocused:function(){function isFocused(){ // TODO(lmr): React.findNodeHandle return _TextInputState2['default'].currentlyFocusedField()=== _react2['default'].findNodeHandle(this.refs.input); }return isFocused;}(), clear:function(){function clear(){ }return clear;}(), render:function(){function render(){ return null; }return render;}()}); module.exports=TextInput;