55 lines
2.2 KiB
JavaScript
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 */ |