Skip to content

kommitters/editorjs-drag-drop

🚨 URGENT: Maintenance Transition 🚨

This project is officially entering a period of passive maintenance and will no longer receive active development or major bug fixes from kommit.

We are fully committed to keeping this project alive within the open-source community! We believe in the value this project provides, and we are actively seeking new, passionate contributors to take over ownership.

🚀 Take Over This Project!

We need a reliable steward for the future development of this repository.

Why Take Ownership?

Full Control: Gain administrative rights and full control over the project's direction.

Visibility: Showcase your expertise by leading an established open-source project.

Impact: Directly support the users who rely on this plugin.

How to Request Ownership

To apply for project ownership, you must create an issue using our dedicated template:

  1. Go to the Issues page
  2. Select the "Project Ownership / Maintainer Request" template
  3. Fill out all required sections completely
  4. Submit the issue for review

Important: Ownership requests submitted through other channels (comments, pull requests, emails) will not be considered. Please use the official issue template to ensure your application is properly reviewed.

EditorJS Drag/Drop Plugin

Stability Badge Coverage Status OpenSSF Best Practices OpenSSF Scorecard

Drag/Drop feature for Editor.js.

Installation

Install via NPM

Get the package

$ npm i --save-dev editorjs-drag-drop

Include module at your application

import DragDrop from "editorjs-drag-drop";

Load from CDN

You can load a specific version of the package from jsDelivr CDN.

Require this script on a page with Editor.js.

<script src="https://cdn.jsdelivr.net/npm/editorjs-drag-drop"></script>

Usage

Add the plugin to the onReady property of the Editor.js configuration to initialize it:

const editor = new EditorJS({
  onReady: () => {
    new DragDrop(editor);
  },
});

You can customize the indicator border style by passing a second parameter to the plugin constructor:

const editor = new EditorJS({
  onReady: () => {
    new DragDrop(editor, "2px solid #fff");
  },
});

If no parameter is provided, the default border style 1px dashed #aaa is used.

Select the block, drag the toolbar settings button, and drop it at the desired position.

Integration with editorjs-undo

If you're already using editorjs-undo, your code might look like this:

const editor = new EditorJS({
  onReady: () => {
    new Undo({ editor });
    new DragDrop(editor);
  },
});

Usage with React.

If you are using React, you could create a function to handle the onReady property, the function will store the DragDrop instance. Then, you must call the function in onReady in the editorJS instance.

const handleReady = (editor) => {
  new DragDrop(editor);
};

class ReactEditor extends Component {
  render() {
    return (
      <EditorJs
        onReady = { handleReady }
        tools = { ... }
      />
    )
  }
}

Note: If you are also using editorjs-undo your handleReady function must have the editorjs-undo instance as well.

const handleReady = (editor) => {
  new Undo({ editor });
  new DragDrop(editor);
};

Usage with react-editor-js.

If you are using react-editor-js, you should use the 'onInitialize' prop in the ReactEditorJS component to obtain the abstract editorjs as follow:

........
export const ReactEditor = () => {
  const editorCore = React.useRef(null)

  const handleInitialize = React.useCallback((instance) => {
    editorCore.current = instance
  }, [])

  const handleReady = () => {
    const editor = editorCore.current._editorJS;
    new Undo({ editor })
    new DragDrop(editor);
  };

  const ReactEditorJS = createReactEditorJS()
  return(
  <ReactEditorJS
    onInitialize={handleInitialize}
    onReady = {handleReady}
    tools={....}
    defaultValue={....}
  />
  )
}

Development

Development mode

$ yarn build:dev

Production release

  1. Create a production bundle
$ yarn build
  1. Commit dist/bundle.js

Run tests

$ yarn test

Code of conduct

We welcome everyone to contribute. Make sure you have read the CODE_OF_CONDUCT before.

Contributing

For information on how to contribute, please refer to our CONTRIBUTING guide.

Changelog

Features and bug fixes are listed in the CHANGELOG file.

License

This library is licensed under an MIT license. See LICENSE for details.

Acknowledgements

Made with 💙 by kommitters Open Source

Sponsor this project

 

Packages

No packages published

Contributors 19