
Material UI texfield with consistent behaviour on Android, iOS and Web

- Material design guidelines 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
yarn add rn-material-ui-textfield
npm install rn-material-ui-textfield
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}
/>
);
}
}
| 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 |
{...} |
| labelOffset |
Label position adjustment |
Object |
{...} |
| 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 properties will also work.
| 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 |
| 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 |
| 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 |
- |
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
- Fork it (https://github.com/yourname/yourproject/fork)
- Create your feature branch (
git checkout -b feature/fooBar)
- Commit your changes (
git commit -am 'Add some fooBar')
- Push to the branch (
git push origin feature/fooBar)
- Create a new Pull Request