UNPKG

rn-material-ui-textfield

Version:
171 lines (142 loc) 8.6 kB
[npm-badge]: https://img.shields.io/npm/v/rn-material-ui-textfield.svg?colorB=ff6d00 [npm-url]: https://npmjs.com/package/rn-material-ui-textfield [npm-downloads-badge]: https://img.shields.io/npm/dt/rn-material-ui-textfield.svg [license-badge]: https://img.shields.io/npm/l/rn-material-ui-textfield.svg?colorB=448aff [license-url]: https://raw.githubusercontent.com/n4kz/rn-material-ui-textfield/master/license.txt [example-url]: https://cloud.githubusercontent.com/assets/2055622/24325711/eaa4ff08-11af-11e7-8550-2504c1580979.gif [rn-textinput]: https://facebook.github.io/react-native/docs/textinput.html#props [md-textfield]: https://material.io/guidelines/components/text-fields.html # rn-material-ui-textfield [![npm][npm-badge]][npm-url] [![npm downloads][npm-downloads-badge]][npm-url] [![license][license-badge]][license-url] Material UI texfield with consistent behaviour on Android, iOS and Web ![example][example-url] ## Features - Material design [guidelines][md-textfield] compliance - Consistent look and feel on iOS and Android - Animated state transitions (normal, focused and errored) - Customizable font size, colors and animation duration - Disabled state (with dotted underline) - Outlined and filled fields - Masked input support - Multiline text input - Character counter - Prefix and suffix - Accessory views - Helper text - RTL support - Pure javascript implementation ## Installation ```bash yarn add rn-material-ui-textfield npm install rn-material-ui-textfield ``` ## Usage ```javascript import React, { Component } from 'react'; import { TextField, FilledTextField, OutlinedTextField, } from 'rn-material-ui-textfield'; class Example extends Component { fieldRef = React.createRef(); onSubmit = () => { let { current: field } = this.fieldRef; console.log(field.value()); }; formatText = (text) => { return text.replace(/[^+\d]/g, ''); }; render() { return ( <OutlinedTextField label="Phone number" keyboardType="phone-pad" formatText={this.formatText} onSubmitEditing={this.onSubmit} ref={this.fieldRef} /> ); } } ``` ## Properties | name | description | type | default | | :------------------- | :------------------------------------------ | --------: | :---------------------- | | textColor | Text input color | String | rgba(0, 0, 0, .87) | | fontSize | Text input font size | Number | 16 | | labelFontSize | Text field label font size | Number | 12 | | lineWidth | Text field underline width | Number | 0.5 | | activeLineWidth | Text field active underline width | Number | 2 | | disabledLineWidth | Text field disabled underline width | Number | 1 | | tintColor | Text field accent color | String | rgb(0, 145, 234) | | baseColor | Text field base color | String | rgba(0, 0, 0, .38) | | label | Text field label text | String | - | | title | Text field helper text | String | - | | prefix | Text field prefix text | String | - | | suffix | Text field suffix text | String | - | | error | Text field error text | String | - | | errorColor | Text field color for errored state | String | rgb(213, 0, 0) | | lineType | Text field line type | String | solid | | disabledLineType | Text field line type in disabled state | String | dotted | | animationDuration | Text field animation duration in ms | Number | 225 | | characterRestriction | Text field soft limit for character counter | Number | - | | disabled | Text field availability | Boolean | false | | editable | Text field text can be edited | Boolean | true | | multiline | Text filed multiline input | Boolean | false | | contentInset | Layout configuration object | Object | [{...}](#content-inset) | | labelOffset | Label position adjustment | Object | [{...}](#label-offset) | | inputContainerStyle | Style for input container view | Object | - | | containerStyle | Style for container view | Object | - | | labelTextStyle | Style for label inner Text component | Object | - | | titleTextStyle | Style for title inner Text component | Object | - | | affixTextStyle | Style for affix inner Text component | Object | - | | formatText | Input mask callback | Function | - | | renderLeftAccessory | Render left input accessory view | Function | - | | renderRightAccessory | Render right input accessory view | Function | - | | onChangeText | Change text callback | Function | - | | onFocus | Focus callback | Function | - | | onBlur | Blur callback | Function | - | | inputRef | TextInput ref | RefObject | - | Other [TextInput][rn-textinput] properties will also work. ### Content Inset | name | description | Normal | Filled | Outlined | | :---- | :-------------------------------- | -----: | -----: | -------: | | top | Inset on the top side | 16 | 8 | 0 | | left | Inset on the left side | 0 | 12 | 12 | | right | Inset on the right side | 0 | 12 | 12 | | label | Space between label and TextInput | 4 | 4 | 4 | | input | Space between line and TextInput | 8 | 8 | 16 | ### Label Offset | name | description | Normal | Filled | Outlined | | :--- | :----------------------------------- | -----: | -----: | -------: | | x0 | Horizontal offset for inactive state | 0 | 0 | 0 | | y0 | Vertical offset for inactive state | 0 | -10 | 0 | | x1 | Horizontal offset for active state | 0 | 0 | 0 | | y1 | Vertical offset for active state | 0 | -2 | -10 | ## Methods | name | description | returns | | :--------------------- | :---------------------------- | ------: | | focus() | Acquire focus | - | | blur() | Release focus | - | | clear() | Clear text field | - | | value() | Get current value | String | | isFocused() | Get current focus state | Boolean | | isErrored() | Get current error state | Boolean | | isRestricted() | Get current restriction state | Boolean | | isDefaultVisible() | Get default value visibility | Boolean | | isPlaceholderVisible() | Get placeholder visibility | Boolean | | setValue() | Set current value | - | ## Example ```bash git clone https://github.com/gabrieldonadel/rn-material-ui-textfield cd rn-material-ui-textfield/example yarn install yarn run ios # or yarn run android ``` ## Contributing 1. Fork it (<https://github.com/yourname/yourproject/fork>) 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Commit your changes (`git commit -am 'Add some fooBar'`) 4. Push to the branch (`git push origin feature/fooBar`) 5. Create a new Pull Request