Files
Saxonite/SaxoniteCoreWebAdmin/wwwroot/rjs/sax-rjs.js
T
2023-03-18 12:26:59 +00:00

55 lines
2.2 KiB
JavaScript

/*
* RoosterJS scripts.
*/
(function (win, doc, undef)
{
/* Rooster JS Editor. */
"use strict";
let rjs = sax.rjs = sax.rjs || {};
//--------------------------------------------------------------
rjs.init = function ($pnl, $inp, data)
{
let $con = $pnl.closest(".rjs-container");
let $tb = $('.rjs-toolbar', $con).empty();
let editor = roosterjs.createEditor($pnl[0], [], data);
$pnl.off('focus').on('focus', function (evt) { rjs.onFocusEditor(evt, $pnl, $con, $tb, editor, $inp); });
$pnl.off('blur').on('blur', function (evt) { rjs.onBlurEditor(evt, $pnl, $con, $tb, editor, $inp); });
rjs.initToolbar($pnl, $tb, editor);
return editor;
}
rjs.initToolbar = function ($pnl, $tb, ed)
{
$tb.off('click').on('click', function () { $pnl.focus(); });
rjs.addTbAction($pnl, $tb, 'bold', 'Bold', function () { roosterjs.toggleBold(ed); });
rjs.addTbAction($pnl, $tb, 'italic', 'Italic', function () { roosterjs.toggleItalic(ed); });
rjs.addTbAction($pnl, $tb, 'underline', 'Underline', function () { roosterjs.toggleUnderline(ed); });
rjs.addTbAction($pnl, $tb, 'list-number', 'Numbered list', function () { roosterjs.toggleNumbering(ed); });
rjs.addTbAction($pnl, $tb, 'list-bullit', 'Bullit list', function () { roosterjs.toggleBullet(ed); });
rjs.addTbAction($pnl, $tb, 'indent', 'Indent', function () { roosterjs.setIndentation(ed, 0); });
rjs.addTbAction($pnl, $tb, 'unindent', 'Unindent', function () { roosterjs.setIndentation(ed, 1); });
}
rjs.addTbAction = function ($pnl, $tb, act, ttl, fn)
{
$tb.append($('<div>').addClass('rjs-action rjs-' + act).prop('title', ttl).prop('tabindex',9).on('click', fn));
}
rjs.onFocusEditor = function (evt, $pnl, $con, $tb, rjsEd, $inp)
{
$con.addClass("rjs-editing");
}
rjs.onBlurEditor = function (evt, $pnl, $con, $tb, rjsEd, $inp)
{
if ($.contains($con[0],evt.relatedTarget)) return;
$con.removeClass("rjs-editing");
while ($pnl.children().length > 1)
{
let lc = $pnl.children().last();
if (!lc || lc.text().trim().length) break;
lc.remove();
}
$inp.val($pnl.html());
}
//--------------------------------------------------------------
//$(function (){});
//--------------------------------------------------------------
}(window, window.document));
/* The End */