Кендо-редактор: Как добавить эффект для текста или изображения в кендо-редакторе? - PullRequest
0 голосов
/ 28 июня 2019

Как добавить эффект для текста или изображения из Kendo Editor?

Случай 1:

  • затемнение текста или изображения
  • выбор эффекта в списке со списком
  • Добавление эффекта для текста / изображения

Случай 2:

  • эффект потемнения текста / изображения
  • Эффект отобразится в списке выбора

Я надеюсь, что результаты будут такими же, какрезультаты при добавлении размера шрифта или семейства шрифтов для текста.

В настоящее время у меня есть список эффектов и я могу добавить эффект для текста.Это все.: (

<textarea name="Contents" id="editor"></textarea>

$("#editor").kendoEditor({
   tools: [
     { 
       name: "formatting",
       width: 150, 
       items: [
          { text: "bounce", value: ".animated bounce" },
          { text: "flash", value: ".animated flash" },
          { text: "pulse", value: ".animated pulse" },
          { text: "rubberBand", value: ".animated rubberBand" },
          { text: "shake", value: ".animated shake" },
          { text: "swing", value: ".animated swing" },
          { text: "FadeIn Left", value: ".animated fadeInLeft" },
          { text: "FadeIn Down", value: ".animated fadeInDown" },
          { text: "zoomIn", value: ".animated zoomIn" },
          { text: "zoomInDown", value: ".animated zoomInDown" },
          { text: "zoomInLeft", value: ".animated zoomInLeft" },
          { text: "zoomInRight", value: ".animated zoomInRight" },
          { text: "zoomInUp", value: ".zoomInUp" },
          { text: "Highlight Error", value: ".hlError" },
          { text: "Highlight OK", value: ".hlOK" },
          { text: "Inline Code", value: ".inlineCode" }
       ]
     },
     "cleanFormatting",
     "fontName",
     "fontSize",
     "backColor",
     "insertImage",
     "viewHtml",
     {
       name: 'customeAnimation',
       template:  '<input id="customAnimation" placeholder="Select animation..." style="width: 100%;" />'
     },
     
   ],
   stylesheets: [
    "https://demos.telerik.com/kendo-ui/content/web/editor/editorStyles.css",
     "https://daneden.github.io/animate.css/animate.min.css",
   ]
 });

$("#customAnimation").kendoComboBox({
  autoWidth: false,
  dataTextField: "text",
  dataValueField: "value",
  dataSource: [
    { text: "FadeIn Left", value: "fadeInLeft" },
    { text: "FadeIn Down", value: "fadeInDown" },
    { text: "zoomIn", value: "zoomIn" },
    { text: "zoomInDown", value: "zoomInDown" },
    { text: "zoomInLeft", value: "zoomInLeft" },
    { text: "zoomInRight", value: "zoomInRight" },
    { text: "zoomInUp", value: "zoomInUp" },
    // { text: "Highlight Error", value: "hlError" },
    // { text: "Highlight OK", value: "hlOK" },
    // { text: "Inline Code", value: "inlineCode" }
  ],
  change: function(e) {
    var editor = $("#editor").data("kendoEditor");
    var effectValue = this.value();
    var textSelect = '';
    if (editor.getSelection) {
      textSelect = editor.getSelection().toString();
    } else if (editor.selection.type != "Control") {
      textSelect = editor.selection.createRange().text;
    }
    var newText = '';
    var arrText = [];
    var newContent = '';
    if(textSelect != '' && effectValue != '') {
      const range = editor.getSelection().getRangeAt(0);
      range.cloneContents().querySelectorAll('*').forEach(e => {
        arrText.push(e);
      });
      
      if (arrText.length > 0) {
        arrText.forEach(e => {
          newText = "<span class='animated "+effectValue+"'>" + e.innerText + "</span>";
          newContent = editor.body.innerHTML.replace(e.innerText, newText);
          editor.body.innerHTML = '';
          editor.exec("inserthtml", { value: newContent });
        });
      } else {
        newText ="<span class='animated "+effectValue+"'>" + textSelect + "</span>";
        newContent = editor.body.innerHTML.replace(textSelect, newText);
        editor.body.innerHTML = '';
        editor.exec("inserthtml", { value: newContent });
      }
      
      editor.refresh();
    }
  },
  filter: "contains",
});

$(document).ready(function() {
  $("#btn-show").click(function() {
    var editor = $("#editor").data("kendoEditor");
    document.getElementById("e-content").innerHTML = editor.value();
  });
})
...