Package detail

editorjs-drag-drop

kommitters88.3kMIT1.1.16

Drag and Drop feature for Editor.js

drag, drop, dragdrop, draganddrop

readme

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

changelog

Changelog

1.1.16 (13.09.2024)

  • Bundle update (#158). See PR #158

1.1.15 (06.09.2024)

  • Bug fix: Ensure setAttribute fires after editor is ready. See Issue #148

  • Updated README: Added section on plugin usage and customizing the indicator style to enhance documentation clarity.

1.1.14 (24.04.2024)

  • Update all dependencies. See PR #131
  • Solve indicator border error. See Issue #134
  • Update the CONTRIBUTING.md with the stale issues policy. See PR #136
  • Fix workflows for scorecards and publish. See PR #140

1.1.13 (13.01.2023)

  • Update all dependencies.
  • Block egress traffic in GitHub Actions.
  • Add stability badge in README.

1.1.12 (27.12.2022)

  • Add Renovate as dependency update tool.
  • Keep read-only permissions in CI workflow.

1.1.11 (22.12.2022)

  • Harden GitHub Actions.

1.1.10 (07.12.2022)

  • Bump loader-utils from 1.4.1 to 1.4.2

1.1.9 (09.11.2022)

  • Bump loader-utils from 1.4.0 to 1.4.1

1.1.8 (28.10.2022)

  • Add Coverage Report with Coveralls

1.1.7 (12.09.2022)

  • Add OpenSSF BestPractices & Scorecard badges
  • Add CDN version documentation

1.1.6 (23.08.2022)

  • Fix bug dropping images or videos into the editor incorrectly causes reordering of blocks.

1.1.5 (09.08.2022)

  • Add scorecards actions

1.1.4 (25.07.2022)

  • Add security policy to the repository
  • Update packages with known security breaches

1.1.3 (15.07.2022)

  • Add workflow for automatic publishing in npm.

1.1.2 (06.06.2022)

  • Fix bug that removes the last character every time it's used, since EditorJS 2.24.2.
  • Fix bug that updates the block every time it's dropped

1.1.1 (10.05.2022)

  • Fix bug that removes last character every time it's used, since EditorJS 2.24.2.

1.1.0 (29.04.2022)

  • Fix toolbar bug that stays open, since EditorJS 2.23+.
  • Allow customizing border style.

1.0.4 (29.03.2022)

  • Updated packages with known security breaches.

1.0.3 (20.01.2022)

  • Updated packages with known security breaches.

1.0.2 (18.01.2022)

  • Added react-editor-js support

1.0.1 (10.12.2021)

  • Add a feature to avoid moving an only block in the editor.

1.0.0 (10.11.2021)

  • Updated packages with known security breaches.

0.2.2 (11.10.2021)

  • Change the style adding a line to reference the Drag-Drop position.

0.2.1 (22.09.2021)

  • Added react-editor-js support
  • Updated packages with known security breaches.

0.2.0 (09.09.2021)

  • Added a CI workflow with Github actions.
  • Updated packages with known security breaches.
  • Docs updated.

0.1.3 (10.05.2021)

  • Support holder being an HTML element or selector.
  • Updated packages with known security breaches.

0.1.2 (29.04.2021)

  • Added read-only mode support.
  • Updated packages with known security breaches.
  • Removed unused packages.

0.1.1 (11.08.2020)

  • Replace targeted block style from border to outline.

0.1.0 (23.06.2020)

Initial release.