Sha256: b3be5434277c8c4e5c83ff1d3440f8403dd0a7e079e5fd2468701bc0e0e0925e

Contents?: true

Size: 1.72 KB

Versions: 7

Compression:

Stored size: 1.72 KB

Contents

/* eslint-disable require-jsdoc */

import lineBreakButtonHandler from "src/decidim/editor/linebreak_module"

const quillFormats = ["bold", "italic", "link", "underline", "header", "list", "video", "image", "alt", "break"];

export default function createQuillEditor(container) {
  const toolbar = $(container).data("toolbar");
  const disabled = $(container).data("disabled");

  let quillToolbar = [
    ["bold", "italic", "underline", "linebreak"],
    [{ list: "ordered" }, { list: "bullet" }],
    ["link", "clean"]
  ];

  if (toolbar === "full") {
    quillToolbar = [
      [{ header: [1, 2, 3, 4, 5, 6, false] }],
      ...quillToolbar,
      ["video"]
    ];
  } else if (toolbar === "basic") {
    quillToolbar = [
      ...quillToolbar,
      ["video"]
    ];
  }

  const $input = $(container).siblings('input[type="hidden"]');
  container.innerHTML = $input.val() || "";

  const quill = new Quill(container, {
    modules: {
      linebreak: {},
      toolbar: {
        container: quillToolbar,
        handlers: {
          "linebreak": lineBreakButtonHandler
        }
      }
    },
    formats: quillFormats,
    theme: "snow"
  });

  if (disabled) {
    quill.disable();
  }

  quill.on("text-change", () => {
    const text = quill.getText();

    // Triggers CustomEvent with the cursor position
    // It is required in input_mentions.js
    let event = new CustomEvent("quill-position", {
      detail: quill.getSelection()
    });
    container.dispatchEvent(event);

    if (text === "\n" || text === "\n\n") {
      $input.val("");
    } else {
      $input.val(quill.root.innerHTML);
    }
  });
  // After editor is ready, linebreak_module deletes two extraneous new lines
  quill.emitter.emit("editor-ready");

  return quill;
}

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
decidim-core-0.25.2 app/packs/src/decidim/editor.js
decidim-core-0.25.1 app/packs/src/decidim/editor.js
decidim-core-0.25.0 app/packs/src/decidim/editor.js
decidim-core-0.25.0.rc4 app/packs/src/decidim/editor.js
decidim-core-0.25.0.rc3 app/packs/src/decidim/editor.js
decidim-core-0.25.0.rc2 app/packs/src/decidim/editor.js
decidim-core-0.25.0.rc1 app/packs/src/decidim/editor.js