react-contenteditable

3.3.7last stable release 2 years ago
Complexity Score
Medium
Open Issues
47
Dependent Projects
78
Weekly Downloadsglobal
137,570

License

  • Apache-2.0
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Yespatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

react-contenteditable

React component for a div with editable contents

Install

npm install react-contenteditable

Usage

import React from 'react'
import ContentEditable from 'react-contenteditable'

class MyComponent extends React.Component {
  constructor() {
    super()
    this.contentEditable = React.createRef();
    this.state = {html: "<b>Hello <i>World</i></b>"};
  };

  handleChange = evt => {
    this.setState({html: evt.target.value});
  };

  render = () => {
    return <ContentEditable
              innerRef={this.contentEditable}
              html={this.state.html} // innerHTML of the editable div
              disabled={false}       // use true to disable editing
              onChange={this.handleChange} // handle innerHTML change
              tagName='article' // Use a custom HTML tag (uses a div by default)
            />
  };
};

Available props

prop description type innerRef element’s ref attribute Object | Function html required: innerHTML of the editable element String disabled use true to disable editing Boolean onChange called whenever innerHTML changes Function onBlur called whenever the html element is blurred Function onFocus event fires when an element has received focus Function onKeyUp called whenever a key is released Function onKeyDown called whenever a key is pressed Function className the element’s CSS class String style a collection of CSS properties to apply to the element Object

Known Issues

If you are using hooks, please see this issue. Using this component with useState doesn’t work, but you can still use useRef :

const text = useRef('');

const handleChange = evt => {
    text.current = evt.target.value;
};

const handleBlur = () => {
    console.log(text.current);
};

return <ContentEditable html={text.current} onBlur={handleBlur} onChange={handleChange} />

Examples

You can try react-contenteditable right from your browser to see if it fits your project’s needs:

  • Simple example : just an editable <div> with a default value.
  • Advanced example : custom tag, input sanitization, and rich text edition.

Dependencies

CVE IssuesActive
0
Scorecards Score
2.90
Test Coverage
No Data
Follows Semver
Yes
Github Stars
1,650
Dependenciestotal
5
DependenciesOutdated
2
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute react-contenteditable in your own private NPM registry

npm config set registry  https://npm.cloudsmith.com/owner/repo
Processing...
Done
npm install react-contenteditable
Processing...
Done

41 Releases

NPM on Cloudsmith

Getting started with NPM on Cloudsmith is fast and easy.