• Stars
    star
    765
  • Rank 59,372 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Auto-resizing input field for React

React-Input-Autosize

A text input for React that resizes itself to the current content.

Demo & Examples

Live demo: jedwatson.github.io/react-input-autosize

To run the examples locally, run:

npm install
npm start

Then open localhost:8000 in a browser.

Installation

The easiest way to use React-Input-Autosize is to install it from NPM and include it in your own React build process (using Browserify, rollup, webpack, etc).

You can also use the umd build by including dist/AutosizeInput.js in your page. If you use this, make sure you have already included a umd React build.

npm install react-input-autosize --save

Usage

React-Input-Autosize generates an input field, wrapped in a <div> tag so it can detect the size of its value. Otherwise it behaves very similarly to a standard React input.

import AutosizeInput from 'react-input-autosize';

<AutosizeInput
	name="form-field-name"
	value={inputValue}
	onChange={function(event) {
		// event.target.value contains the new value
	}}
/>

Gotchas

Changing the styles at runtime

The styles applied to the input are only copied when the component mounts. Because of this, subsequent changes to the stylesheet may cause size to be detected incorrectly.

To work around this, either re-mount the input (e.g. by providing a different key prop) or call the copyInputStyles() method after the styles change.

CSP and the IE "clear" indicator

The input will automatically inject a stylesheet that hides IE/Edge's "clear" indicator, which otherwise breaks the UI. This has the downside of being incompatible with some CSP policies.

To work around this, you can pass the injectStyles={false} prop, but if you do this I strongly recommend targeting the input element in your own stylesheet with the following rule:

input::-ms-clear {display: none;}

Custom font sizes

If your input uses custom font sizes, you will need to provide the custom size to AutosizeInput.

<AutosizeInput
	name="form-field-name"
	value={inputValue}
	inputStyle={{ fontSize: 36 }}
	onChange={function(event) {
		// event.target.value contains the new value
	}}
/>

Uncontrolled input

AutosizeInput is a controlled input and depends on the value prop to work as intended. It does not support being used as an uncontrolled input.

License

Copyright (c) 2018 Jed Watson. MIT License.

More Repositories

1

react-select

The Select Component for React.js
TypeScript
27,612
star
2

classnames

A simple javascript utility for conditionally joining classNames together
JavaScript
17,507
star
3

react-codemirror

Codemirror Component for React.js
JavaScript
1,540
star
4

react-hammerjs

ReactJS / HammerJS integration. Support touch events in your React app.
JavaScript
939
star
5

react-tappable

Tappable component for React
JavaScript
861
star
6

sydjs-site

SydJS Meetup Website
JavaScript
535
star
7

react-md-editor

React.js Markdown Editor Component
JavaScript
508
star
8

exenv

React's ExecutionEnvironment module extracted for use in other packages & components
JavaScript
232
star
9

generator-react-component

React Component Project Generator
JavaScript
220
star
10

react-date-select

A React Date Select / Picker Input Component
CSS
158
star
11

happiness

Standard customised to make me happy
JavaScript
124
star
12

react-component-gulp-tasks

Common Gulp tasks I use across my React Component projects
JavaScript
112
star
13

react-value

Adding Value to React
JavaScript
91
star
14

node-premailer

Node.js wrapper for premailer.dialect.ca
JavaScript
74
star
15

react-container

A flexible container for laying out React apps. Part of TouchstoneJS.
JavaScript
57
star
16

react-domify

Like JSON.strinfigy but uses React to generate DOM elements
JavaScript
54
star
17

picture-tour-app

Example React.js Cordova / PhoneGap App with Babel, Webpack and Hot Reloading
JavaScript
46
star
18

react-fixed

A lightweight component that sticks to the bottom of the window while scrolling. Neat for toolbars.
JavaScript
33
star
19

generator-react-express

React / Express Project Generator
JavaScript
33
star
20

react-alt-text

React.js Component for displaying alternate text when the [alt] key is pressed
JavaScript
32
star
21

store-prototype

Simple class for creating event-driven Data Stores
JavaScript
32
star
22

keystone-forum

The source code for forums.keystonejs.com (in development)
JavaScript
30
star
23

react-scroll-spy

React.js mixin for updating state based on the window's scroll position
JavaScript
29
star
24

react-context-example

An example / test / playpen looking at how Context works in React.js
JavaScript
27
star
25

node-express-workshop-complete

The complete reference implementation for node-express-workshop
JavaScript
18
star
26

react-date-input

A React.js Date Input Component
CSS
16
star
27

react-express-starter

ReactJS / Express Starter Project
CSS
16
star
28

node-mascot

βœ¨πŸ’πŸš€βœ¨
JavaScript
14
star
29

html-stringify

Converts Javascript Objects or Arrays to pretty HTML
JavaScript
14
star
30

model-transform

Common toJSON Transform for KeystoneJS / Mongoose Models
JavaScript
13
star
31

react-component-starter

ReactJS Component Starter Project
JavaScript
12
star
32

react-conf-2016

React Conf 2016 API
JavaScript
10
star
33

randomkey

Lightweight node.js lib for generating random string keys
JavaScript
10
star
34

prisma-day-keystone-workshop

TypeScript
10
star
35

asyncdi

Async Dependency Injection
JavaScript
9
star
36

block-timer

A node.js timer implementation for timing blocks of code that are run one or more times
JavaScript
8
star
37

node-bpay

Node.JS BPAY Customer Reference Number Generator and Validator
JavaScript
7
star
38

talk-sydjs-webcomponents

Resources for my talk on Web Components at SydJS, June 2014
CSS
6
star
39

keystone-next-prisma-demo

TypeScript
6
star
40

babel-plugin-example

JavaScript
5
star
41

react-sydney-2021-stack

Demo content for my talk at React Sydney, May 2021
TypeScript
5
star
42

list-to-array

Simple javascript lib for converting a [comma || space] delimited string to an array
JavaScript
4
star
43

aba

Deprecated; use aba-generator instead
JavaScript
4
star
44

sydney-mongodb-meetup

The resource files for the hand-on KeystoneJS session @ the Sydney MongoDB Meet-up, 25th Feb 2014
CSS
4
star
45

qs-set

Querystring manipulator for node.js and the browser
JavaScript
2
star
46

prototype-mobile-app

Prototype Mobile App
JavaScript
2
star
47

admin-ui-prototype

Starting from scratch
CSS
2
star
48

editor-ui-playground

TypeScript
1
star