Narcissistic Project Managers
    Wondering what’s next for npm?Check out our public roadmap! »

    react-easy-edit

    1.13.1 • Public • Published

    Test NPM License: MIT CircleCI Known Vulnerabilities install size DeepScan grade

    react-easy-edit

    A React library that allows inline editing on HTML5 input components, try the sandbox here!

    For full library documentation, visit this site!

    📝 Features

    • Supports input (most types, even inputs with datalist), textarea,radio, checkbox and select HTML types
    • Validates user input
    • Allows customisation on all elements including the save and cancel buttons
    • Supports custom editComponent and custom displayComponent for each type

    🚀 Installation

    npm i react-easy-edit or yarn add react-easy-edit

    🙏 Show your support

    Give a if this project helped you in any way!

    paypal ko-fi

    🆒 Props

    For the full list of props, please visit our documentation.

    📄 Examples

    More examples can be found here

    A simple example - Textbox

    import React, { Component } from 'react';
    import EasyEdit from 'react-easy-edit';
    
    function App() {
    
      const save = (value) => {alert(value)}
      const cancel = () => {alert("Cancelled")}
    
      return (
        <EasyEdit
          type="text"
          onSave={save}
          onCancel={cancel}
          saveButtonLabel="Save Me"
          cancelButtonLabel="Cancel Me"
          attributes={{ name: "awesome-input", id: 1}}
          instructions="Star this repo!"
        />
      );
    }

    Radio buttons

    <EasyEdit
      type="radio"
      value="one"
      onSave={save}
      options={[
          {label: 'First option', value: 'one'},
          {label: 'Second option', value: 'two'}]}
      instructions="Custom instructions"
    />

    Date

    <EasyEdit
      type="date"
      onSave={save}
      instructions="Select your date of birth"
    />

    Dropdown

    <EasyEdit
      type="select"
      options={[
          {label: 'First option', value: 'one'},
          {label: 'Second option', value: 'two'}]}
      onSave={save}
      placeholder="My Placeholder"
      instructions="Custom instructions"
    />

    Datalist

    <EasyEdit
      type="datalist"
      options={[
          {label: 'First option', value: 'one'},
          {label: 'Second option', value: 'two'}]}
      onSave={save}
      instructions="Custom instructions"
    />

    Checkboxes

    <EasyEdit
      type="checkbox"
      options={[
          {label: 'First option', value: 'one'},
          {label: 'Second option', value: 'two'}]}
      onSave={save}
      value={['one', 'two']} // this will preselect both options
    />

    Custom components

    When using custom input components, they must be passed in as props, like so:

    <EasyEdit
        type="text"
        onSave={() => {}}
        editComponent={<CustomInput />}
        displayComponent={<CustomDisplay />}
    />

    When defining a custom input component, the function setParentValue is injected into your custom component, which must be called in order to pass the desired value up to the parent EasyEdit component.

    For example, if your component was a text field that needed to set the EasyEdit value as a user id based on a username entered, you would need to pass the id to this.props.setParentValue in order to get that value to the EasyEdit component.

    e.g.

    // Inside your custom input
    
    onChange(searchTerm) {
      getUserIdByUsername(searchTerm).then((userId) => {
        this.props.setParentValue(userId);
      })
    }

    You can use a custom EditComponent and still use the saveOnBlur behavior. An onBlur function will be passed to your custom component, for you to trigger the behavior.

    class CustomComponent extends React.Component{
      constructor(props){
        super(props);
      }
    
      render(){
        return <div>
          <p>Custom editor</p>
          <input onBlur={this.props.onBlur} />
        </diV>;
      }
    }

    🤝 Contributing

    Contributions, issues and feature requests are welcome.

    Feel free to check issues page if you want to contribute.

    🔢 Versioning

    For transparency and insight into our release cycle, releases will be numbered with the following format:

    <major>.<minor>.<patch>

    And constructed with the following guidelines:

    • Breaking backwards compatibility bumps the major
    • New additions without breaking backwards compatibility bumps the minor
    • Bug fixes and misc changes bump the patch
    • For more information on semantic versioning, please visit http://semver.org/.

    📜 Licence

    Copyright © 2020 George Artemiou.

    This project is MIT licensed.

    Install

    npm i react-easy-edit

    DownloadsWeekly Downloads

    2,846

    Version

    1.13.1

    License

    MIT

    Unpacked Size

    26.5 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar