@syncfusion/ej2-richtexteditor 19.2.57 → 19.3.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +61 -9
- package/dist/ej2-richtexteditor.umd.min.js +2 -2
- package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es2015.js +1006 -312
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +1014 -310
- package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
- package/dist/global/ej2-richtexteditor.min.js +2 -2
- package/dist/global/ej2-richtexteditor.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/common/types.d.ts +8 -0
- package/src/editor-manager/base/editor-manager.d.ts +1 -1
- package/src/editor-manager/base/editor-manager.js +6 -6
- package/src/editor-manager/base/interface.d.ts +7 -1
- package/src/editor-manager/plugin/clearformat-exec.js +2 -2
- package/src/editor-manager/plugin/clearformat.d.ts +3 -1
- package/src/editor-manager/plugin/clearformat.js +19 -9
- package/src/editor-manager/plugin/dom-node.js +2 -2
- package/src/editor-manager/plugin/formats.d.ts +1 -0
- package/src/editor-manager/plugin/formats.js +87 -7
- package/src/editor-manager/plugin/image.js +77 -54
- package/src/editor-manager/plugin/inserthtml.js +20 -2
- package/src/editor-manager/plugin/isformatted.js +2 -1
- package/src/editor-manager/plugin/lists.d.ts +1 -0
- package/src/editor-manager/plugin/lists.js +87 -8
- package/src/editor-manager/plugin/nodecutter.d.ts +1 -0
- package/src/editor-manager/plugin/nodecutter.js +1 -0
- package/src/editor-manager/plugin/selection-commands.d.ts +2 -1
- package/src/editor-manager/plugin/selection-commands.js +29 -12
- package/src/editor-manager/plugin/selection-exec.js +2 -2
- package/src/editor-manager/plugin/table.js +19 -9
- package/src/editor-manager/plugin/toolbar-status.d.ts +1 -0
- package/src/editor-manager/plugin/toolbar-status.js +20 -0
- package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -4
- package/src/rich-text-editor/actions/enter-key.d.ts +18 -0
- package/src/rich-text-editor/actions/enter-key.js +290 -0
- package/src/rich-text-editor/actions/full-screen.js +62 -42
- package/src/rich-text-editor/actions/html-editor.js +30 -20
- package/src/rich-text-editor/actions/paste-clean-up.js +5 -5
- package/src/rich-text-editor/actions/resize.js +4 -4
- package/src/rich-text-editor/base/constant.d.ts +5 -0
- package/src/rich-text-editor/base/constant.js +5 -0
- package/src/rich-text-editor/base/interface.d.ts +15 -3
- package/src/rich-text-editor/base/rich-text-editor-model.d.ts +27 -1
- package/src/rich-text-editor/base/rich-text-editor.d.ts +34 -5
- package/src/rich-text-editor/base/rich-text-editor.js +66 -57
- package/src/rich-text-editor/base/util.d.ts +7 -1
- package/src/rich-text-editor/base/util.js +45 -11
- package/src/rich-text-editor/formatter/formatter.js +9 -7
- package/src/rich-text-editor/models/items.js +3 -3
- package/src/rich-text-editor/renderer/iframe-content-renderer.js +2 -2
- package/src/rich-text-editor/renderer/image-module.d.ts +6 -0
- package/src/rich-text-editor/renderer/image-module.js +70 -26
- package/src/rich-text-editor/renderer/link-module.js +4 -3
- package/src/rich-text-editor/renderer/popup-renderer.js +1 -2
- package/src/rich-text-editor/renderer/render.js +10 -2
- package/src/rich-text-editor/renderer/table-module.js +25 -15
- package/src/rich-text-editor/renderer/toolbar-renderer.js +1 -1
- package/src/rich-text-editor/renderer/view-source.js +21 -3
- package/styles/bootstrap-dark.css +25 -12
- package/styles/bootstrap.css +25 -12
- package/styles/bootstrap4.css +21 -13
- package/styles/bootstrap5-dark.css +3058 -0
- package/styles/bootstrap5-dark.scss +1 -0
- package/styles/bootstrap5.css +3058 -0
- package/styles/bootstrap5.scss +1 -0
- package/styles/fabric-dark.css +20 -12
- package/styles/fabric.css +20 -12
- package/styles/highcontrast-light.css +20 -12
- package/styles/highcontrast.css +19 -18
- package/styles/material-dark.css +22 -14
- package/styles/material.css +19 -11
- package/styles/rich-text-editor/_bootstrap-dark-definition.scss +1 -1
- package/styles/rich-text-editor/_bootstrap-definition.scss +1 -1
- package/styles/rich-text-editor/_bootstrap4-definition.scss +2 -2
- package/styles/rich-text-editor/_bootstrap5-dark-definition.scss +1 -0
- package/styles/rich-text-editor/_bootstrap5-definition.scss +168 -0
- package/styles/rich-text-editor/_fabric-dark-definition.scss +1 -1
- package/styles/rich-text-editor/_fabric-definition.scss +1 -1
- package/styles/rich-text-editor/_highcontrast-definition.scss +2 -2
- package/styles/rich-text-editor/_highcontrast-light-definition.scss +1 -1
- package/styles/rich-text-editor/_layout.scss +64 -7
- package/styles/rich-text-editor/_tailwind-dark-definition.scss +1 -165
- package/styles/rich-text-editor/_tailwind-definition.scss +74 -72
- package/styles/rich-text-editor/_theme.scss +103 -3
- package/styles/rich-text-editor/bootstrap-dark.css +25 -12
- package/styles/rich-text-editor/bootstrap.css +25 -12
- package/styles/rich-text-editor/bootstrap4.css +21 -13
- package/styles/rich-text-editor/bootstrap5-dark.css +3058 -0
- package/styles/rich-text-editor/bootstrap5-dark.scss +4 -0
- package/styles/rich-text-editor/bootstrap5.css +3058 -0
- package/styles/rich-text-editor/bootstrap5.scss +4 -0
- package/styles/rich-text-editor/fabric-dark.css +20 -12
- package/styles/rich-text-editor/fabric.css +20 -12
- package/styles/rich-text-editor/highcontrast-light.css +20 -12
- package/styles/rich-text-editor/highcontrast.css +19 -18
- package/styles/rich-text-editor/icons/_bootstrap-dark.scss +1 -1
- package/styles/rich-text-editor/icons/_bootstrap.scss +1 -1
- package/styles/rich-text-editor/icons/_bootstrap4.scss +1 -1
- package/styles/rich-text-editor/icons/_bootstrap5-dark.scss +1 -0
- package/styles/rich-text-editor/icons/_bootstrap5.scss +303 -0
- package/styles/rich-text-editor/icons/_fabric-dark.scss +1 -1
- package/styles/rich-text-editor/icons/_fabric.scss +1 -1
- package/styles/rich-text-editor/icons/_highcontrast-light.scss +1 -1
- package/styles/rich-text-editor/icons/_highcontrast.scss +1 -1
- package/styles/rich-text-editor/icons/_material-dark.scss +1 -1
- package/styles/rich-text-editor/icons/_material.scss +1 -1
- package/styles/rich-text-editor/icons/_tailwind-dark.scss +1 -304
- package/styles/rich-text-editor/icons/_tailwind.scss +2 -2
- package/styles/rich-text-editor/material-dark.css +22 -14
- package/styles/rich-text-editor/material.css +19 -11
- package/styles/rich-text-editor/tailwind-dark.css +51 -20
- package/styles/rich-text-editor/tailwind.css +49 -18
- package/styles/tailwind-dark.css +51 -20
- package/styles/tailwind.css +49 -18
|
@@ -47,7 +47,7 @@ var Lists = /** @class */ (function () {
|
|
|
47
47
|
var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];
|
|
48
48
|
if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {
|
|
49
49
|
for (var i = 0; i < olListStartRegex.length; i++) {
|
|
50
|
-
if (olListStartRegex[i].test(range.startContainer.textContent.slice(0, range.startOffset).trim())) {
|
|
50
|
+
if (olListStartRegex[i].test(range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim())) {
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -75,8 +75,8 @@ var Lists = /** @class */ (function () {
|
|
|
75
75
|
this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
|
|
76
76
|
e.event.preventDefault();
|
|
77
77
|
}
|
|
78
|
-
else if (range.startContainer.textContent.slice(0, range.startOffset).trim() === '*' ||
|
|
79
|
-
range.startContainer.textContent.slice(0, range.startOffset).trim() === '-') {
|
|
78
|
+
else if (range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||
|
|
79
|
+
range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '-') {
|
|
80
80
|
range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
|
|
81
81
|
this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
|
|
82
82
|
e.event.preventDefault();
|
|
@@ -97,15 +97,24 @@ var Lists = /** @class */ (function () {
|
|
|
97
97
|
var startNodeParent = startNode.parentElement;
|
|
98
98
|
if (isNOU(startNodeParent.parentElement.closest('UL')) && isNOU(startNodeParent.parentElement.closest('OL'))) {
|
|
99
99
|
if (!isNOU(startNode.nextElementSibling)) {
|
|
100
|
-
//startNode.classList.add('innerNode');
|
|
101
100
|
var nearBlockNode = this.parent.domNode.blockParentNode(startNode);
|
|
102
101
|
this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);
|
|
103
102
|
}
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
var insertTag = void 0;
|
|
104
|
+
if (e.enterAction === 'DIV') {
|
|
105
|
+
insertTag = createElement('div');
|
|
106
|
+
insertTag.innerHTML = '<br>';
|
|
107
|
+
}
|
|
108
|
+
else if (e.enterAction === 'P') {
|
|
109
|
+
insertTag = createElement('p');
|
|
110
|
+
insertTag.innerHTML = '<br>';
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
insertTag = createElement('br');
|
|
114
|
+
}
|
|
115
|
+
this.parent.domNode.insertAfter(insertTag, startNodeParent);
|
|
107
116
|
e.event.preventDefault();
|
|
108
|
-
this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument,
|
|
117
|
+
this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);
|
|
109
118
|
if (startNodeParent.textContent === '') {
|
|
110
119
|
detach(startNodeParent);
|
|
111
120
|
}
|
|
@@ -402,6 +411,66 @@ var Lists = /** @class */ (function () {
|
|
|
402
411
|
this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;
|
|
403
412
|
this.domNode.setMarker(this.saveSelection);
|
|
404
413
|
var listsNodes = this.domNode.blockNodes();
|
|
414
|
+
if (e.enterAction === 'BR') {
|
|
415
|
+
this.setSelectionBRConfig();
|
|
416
|
+
var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);
|
|
417
|
+
var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);
|
|
418
|
+
var currentFormatNodes = [];
|
|
419
|
+
if (selectedNodes.length === 0) {
|
|
420
|
+
selectedNodes.push(listsNodes[0]);
|
|
421
|
+
}
|
|
422
|
+
for (var i = 0; i < selectedNodes.length; i++) {
|
|
423
|
+
var currentNode = selectedNodes[i];
|
|
424
|
+
var previousCurrentNode = void 0;
|
|
425
|
+
while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {
|
|
426
|
+
previousCurrentNode = currentNode;
|
|
427
|
+
currentNode = currentNode.parentElement;
|
|
428
|
+
}
|
|
429
|
+
if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {
|
|
430
|
+
currentFormatNodes.push(previousCurrentNode);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
for (var i = 0; i < currentFormatNodes.length; i++) {
|
|
434
|
+
if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {
|
|
435
|
+
var currentNode = currentFormatNodes[i];
|
|
436
|
+
var previousNode = currentNode;
|
|
437
|
+
while (currentNode === this.parent.editableElement) {
|
|
438
|
+
previousNode = currentNode;
|
|
439
|
+
currentNode = currentNode.parentElement;
|
|
440
|
+
}
|
|
441
|
+
var tempElem = void 0;
|
|
442
|
+
if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&
|
|
443
|
+
previousNode.parentElement === this.parent.editableElement) {
|
|
444
|
+
tempElem = createElement('p');
|
|
445
|
+
previousNode.parentElement.insertBefore(tempElem, previousNode);
|
|
446
|
+
tempElem.appendChild(previousNode);
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
tempElem = previousNode;
|
|
450
|
+
}
|
|
451
|
+
var preNode = tempElem.previousSibling;
|
|
452
|
+
while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&
|
|
453
|
+
!this.parent.domNode.isBlockNode(preNode)) {
|
|
454
|
+
tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);
|
|
455
|
+
preNode = tempElem.previousSibling;
|
|
456
|
+
}
|
|
457
|
+
if (!isNOU(preNode) && preNode.nodeName === 'BR') {
|
|
458
|
+
detach(preNode);
|
|
459
|
+
}
|
|
460
|
+
var postNode = tempElem.nextSibling;
|
|
461
|
+
while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&
|
|
462
|
+
!this.parent.domNode.isBlockNode(postNode)) {
|
|
463
|
+
tempElem.appendChild(postNode);
|
|
464
|
+
postNode = tempElem.nextSibling;
|
|
465
|
+
}
|
|
466
|
+
if (!isNOU(postNode) && postNode.nodeName === 'BR') {
|
|
467
|
+
detach(postNode);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
this.setSelectionBRConfig();
|
|
472
|
+
listsNodes = this.parent.domNode.blockNodes();
|
|
473
|
+
}
|
|
405
474
|
for (var i = 0; i < listsNodes.length; i++) {
|
|
406
475
|
if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {
|
|
407
476
|
listsNodes.splice(i, 1);
|
|
@@ -422,6 +491,16 @@ var Lists = /** @class */ (function () {
|
|
|
422
491
|
});
|
|
423
492
|
}
|
|
424
493
|
};
|
|
494
|
+
Lists.prototype.setSelectionBRConfig = function () {
|
|
495
|
+
var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);
|
|
496
|
+
var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);
|
|
497
|
+
if (isNOU(endElem)) {
|
|
498
|
+
this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);
|
|
502
|
+
}
|
|
503
|
+
};
|
|
425
504
|
Lists.prototype.applyLists = function (elements, type, selector, item) {
|
|
426
505
|
var isReverse = true;
|
|
427
506
|
if (this.isRevert(elements, type) && isNOU(item)) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare class SelectionCommands {
|
|
2
|
+
static enterAction: string;
|
|
2
3
|
/**
|
|
3
4
|
* applyFormat method
|
|
4
5
|
*
|
|
@@ -11,7 +12,7 @@ export declare class SelectionCommands {
|
|
|
11
12
|
* @hidden
|
|
12
13
|
|
|
13
14
|
*/
|
|
14
|
-
static applyFormat(docElement: Document, format: string, endNode: Node, value?: string, selector?: string): void;
|
|
15
|
+
static applyFormat(docElement: Document, format: string, endNode: Node, enterAction: string, value?: string, selector?: string): void;
|
|
15
16
|
private static insertCursorNode;
|
|
16
17
|
private static getCursorFormat;
|
|
17
18
|
private static removeFormat;
|
|
@@ -23,7 +23,8 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
23
23
|
* @hidden
|
|
24
24
|
|
|
25
25
|
*/
|
|
26
|
-
SelectionCommands.applyFormat = function (docElement, format, endNode, value, selector) {
|
|
26
|
+
SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector) {
|
|
27
|
+
this.enterAction = enterAction;
|
|
27
28
|
var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',
|
|
28
29
|
'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];
|
|
29
30
|
if (validFormats.indexOf(format) > -1) {
|
|
@@ -99,7 +100,7 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
99
100
|
save.restore();
|
|
100
101
|
}
|
|
101
102
|
if (isSubSup) {
|
|
102
|
-
this.applyFormat(docElement, format, endNode);
|
|
103
|
+
this.applyFormat(docElement, format, endNode, enterAction);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
};
|
|
@@ -119,6 +120,10 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
119
120
|
cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {
|
|
120
121
|
cursorNodes[0].innerHTML = '';
|
|
121
122
|
}
|
|
123
|
+
if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' ||
|
|
124
|
+
cursorNodes[0].nextSibling.nodeName === 'BR')) {
|
|
125
|
+
detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);
|
|
126
|
+
}
|
|
122
127
|
cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;
|
|
123
128
|
}
|
|
124
129
|
return cursorNode;
|
|
@@ -212,6 +217,13 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
212
217
|
nodeCutter.SplitNode(range, textNode.parentElement, false);
|
|
213
218
|
}
|
|
214
219
|
}
|
|
220
|
+
if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {
|
|
221
|
+
if (formatNode.style.textDecoration === 'underline' &&
|
|
222
|
+
nodeTraverse.parentElement.style.textDecoration !== 'underline') {
|
|
223
|
+
nodeTraverse = nodeTraverse.parentElement;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
215
227
|
InsertMethods.unwrap(nodeTraverse.parentElement);
|
|
216
228
|
nodeTraverse = !isNOU(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :
|
|
217
229
|
nodeTraverse.parentElement;
|
|
@@ -223,12 +235,14 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
223
235
|
}
|
|
224
236
|
if (child.length > 0 && isFontStyle) {
|
|
225
237
|
for (var num = 0; num < child.length; num++) {
|
|
226
|
-
child[num]
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
238
|
+
if (child[num].nodeType !== 3 || (child[num].textContent && child[num].textContent.trim().length > 0)) {
|
|
239
|
+
child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));
|
|
240
|
+
if (num === 0) {
|
|
241
|
+
range.setStartBefore(child[num]);
|
|
242
|
+
}
|
|
243
|
+
else if (num === child.length - 1) {
|
|
244
|
+
range.setEndAfter(child[num]);
|
|
245
|
+
}
|
|
232
246
|
}
|
|
233
247
|
}
|
|
234
248
|
var currentNodeElem = nodes[index].parentElement;
|
|
@@ -325,10 +339,12 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
325
339
|
return nodes[index];
|
|
326
340
|
};
|
|
327
341
|
SelectionCommands.applyStyles = function (nodes, index, element) {
|
|
328
|
-
nodes[index]
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
342
|
+
if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {
|
|
343
|
+
nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?
|
|
344
|
+
InsertMethods.Wrap(nodes[index], element)
|
|
345
|
+
: InsertMethods.WrapBefore(nodes[index], element, true);
|
|
346
|
+
nodes[index] = this.getChildNode(nodes[index], element);
|
|
347
|
+
}
|
|
332
348
|
return nodes[index];
|
|
333
349
|
};
|
|
334
350
|
SelectionCommands.getInsertNode = function (docElement, range, format, value) {
|
|
@@ -423,6 +439,7 @@ var SelectionCommands = /** @class */ (function () {
|
|
|
423
439
|
ele.setAttribute('style', styles);
|
|
424
440
|
}
|
|
425
441
|
};
|
|
442
|
+
SelectionCommands.enterAction = 'P';
|
|
426
443
|
return SelectionCommands;
|
|
427
444
|
}());
|
|
428
445
|
export { SelectionCommands };
|
|
@@ -28,12 +28,12 @@ var SelectionBasedExec = /** @class */ (function () {
|
|
|
28
28
|
'subscript', 'uppercase', 'lowercase'];
|
|
29
29
|
if (e.event.ctrlKey && validFormats.indexOf(e.event.action) > -1) {
|
|
30
30
|
e.event.preventDefault();
|
|
31
|
-
SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement);
|
|
31
|
+
SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement, e.enterAction);
|
|
32
32
|
this.callBack(e, e.event.action);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
SelectionBasedExec.prototype.applySelection = function (e) {
|
|
36
|
-
SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.value, e.selector);
|
|
36
|
+
SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.enterAction, e.value, e.selector);
|
|
37
37
|
this.callBack(e, e.subCommand);
|
|
38
38
|
};
|
|
39
39
|
SelectionBasedExec.prototype.callBack = function (event, action) {
|
|
@@ -47,7 +47,7 @@ var TableCommand = /** @class */ (function () {
|
|
|
47
47
|
}
|
|
48
48
|
var tdWid = parseInt(e.item.width.width, 10) > 100 ?
|
|
49
49
|
100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;
|
|
50
|
-
for (var i = 0; i < e.item.
|
|
50
|
+
for (var i = 0; i < e.item.rows; i++) {
|
|
51
51
|
var row = createElement('tr');
|
|
52
52
|
for (var j = 0; j < e.item.columns; j++) {
|
|
53
53
|
var cell = createElement('td');
|
|
@@ -63,9 +63,19 @@ var TableCommand = /** @class */ (function () {
|
|
|
63
63
|
this.removeEmptyNode();
|
|
64
64
|
e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);
|
|
65
65
|
if (table.nextElementSibling === null) {
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
var insertElem = void 0;
|
|
67
|
+
if (e.enterAction === 'DIV') {
|
|
68
|
+
insertElem = createElement('div');
|
|
69
|
+
insertElem.appendChild(createElement('br'));
|
|
70
|
+
}
|
|
71
|
+
else if (e.enterAction === 'BR') {
|
|
72
|
+
insertElem = createElement('br');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
insertElem = createElement('p');
|
|
76
|
+
insertElem.appendChild(createElement('br'));
|
|
77
|
+
}
|
|
78
|
+
this.insertAfter(insertElem, table);
|
|
69
79
|
}
|
|
70
80
|
table.querySelector('td').classList.add('e-cell-select');
|
|
71
81
|
if (e.callBack) {
|
|
@@ -207,16 +217,16 @@ var TableCommand = /** @class */ (function () {
|
|
|
207
217
|
var curRow = closest(selectedCell, 'tr');
|
|
208
218
|
var curCell;
|
|
209
219
|
var allRows = closest((curRow), 'table').rows;
|
|
210
|
-
var colIndex = Array.prototype.slice.call(curRow.querySelectorAll('th
|
|
211
|
-
var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll('td,th').length);
|
|
212
|
-
var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll('td,th').length + 1);
|
|
220
|
+
var colIndex = Array.prototype.slice.call(curRow.querySelectorAll(':scope > td, :scope > th')).indexOf(selectedCell);
|
|
221
|
+
var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);
|
|
222
|
+
var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length + 1);
|
|
213
223
|
var currentTabElm = closest(curRow, 'table');
|
|
214
224
|
var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');
|
|
215
225
|
for (var i = 0; i < thTdElm.length; i++) {
|
|
216
226
|
thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + "%";
|
|
217
227
|
}
|
|
218
228
|
for (var i = 0; i < allRows.length; i++) {
|
|
219
|
-
curCell = allRows[i].querySelectorAll('th
|
|
229
|
+
curCell = allRows[i].querySelectorAll(':scope > td, :scope > th')[colIndex];
|
|
220
230
|
var colTemplate = curCell.cloneNode(true);
|
|
221
231
|
colTemplate.innerHTML = '';
|
|
222
232
|
colTemplate.appendChild(createElement('br'));
|
|
@@ -750,7 +760,7 @@ var TableCommand = /** @class */ (function () {
|
|
|
750
760
|
// eslint-disable-next-line
|
|
751
761
|
var _this = this;
|
|
752
762
|
var colspan = 0;
|
|
753
|
-
var allRows = _this.curTable.
|
|
763
|
+
var allRows = _this.curTable.rows;
|
|
754
764
|
for (var i = 0; i <= allRows.length - 1; i++) {
|
|
755
765
|
var ele = allRows[i];
|
|
756
766
|
var index = 0;
|
|
@@ -21,6 +21,7 @@ export declare class ToolbarStatus {
|
|
|
21
21
|
|
|
22
22
|
*/
|
|
23
23
|
static get(docElement: Document, targetNode: Node, formatNode?: string[], fontSize?: string[], fontName?: string[], documentNode?: Node): IToolbarStatus;
|
|
24
|
+
private static getImmediateBlockNode;
|
|
24
25
|
private static getFormatParent;
|
|
25
26
|
private static isFormattedNode;
|
|
26
27
|
private static isFontColor;
|
|
@@ -31,7 +31,21 @@ var ToolbarStatus = /** @class */ (function () {
|
|
|
31
31
|
var nodeSelection = new NodeSelection();
|
|
32
32
|
var nodes = documentNode ? [documentNode] : nodeSelection.getNodeCollection(nodeSelection.getRange(docElement));
|
|
33
33
|
var nodesLength = nodes.length;
|
|
34
|
+
var isNodeChanged = false;
|
|
35
|
+
var range = nodeSelection.getRange(docElement);
|
|
34
36
|
for (var index = 0; index < nodes.length; index++) {
|
|
37
|
+
while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&
|
|
38
|
+
nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== "BR" &&
|
|
39
|
+
this.getImmediateBlockNode(nodes[index].parentNode, targetNode).textContent.replace(/\u200B/g, '').length === 0 &&
|
|
40
|
+
range.startContainer.textContent.replace(/\u200B/g, '').length === 0 &&
|
|
41
|
+
nodeSelection.get(docElement).toString().replace(/\u200B/g, '').length === 0) {
|
|
42
|
+
nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;
|
|
43
|
+
isNodeChanged = true;
|
|
44
|
+
}
|
|
45
|
+
if (isNodeChanged && nodes[index]) {
|
|
46
|
+
nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);
|
|
47
|
+
isNodeChanged = false;
|
|
48
|
+
}
|
|
35
49
|
if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||
|
|
36
50
|
(nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {
|
|
37
51
|
nodes.splice(index, 1);
|
|
@@ -98,6 +112,12 @@ var ToolbarStatus = /** @class */ (function () {
|
|
|
98
112
|
}
|
|
99
113
|
return nodeCollection;
|
|
100
114
|
};
|
|
115
|
+
ToolbarStatus.getImmediateBlockNode = function (node, editNode) {
|
|
116
|
+
do {
|
|
117
|
+
node = node.parentNode;
|
|
118
|
+
} while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);
|
|
119
|
+
return node;
|
|
120
|
+
};
|
|
101
121
|
ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {
|
|
102
122
|
if (targetNode.contains(node) ||
|
|
103
123
|
(node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU
|
|
1
|
+
import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
|
|
2
2
|
import { addClass, removeClass, Browser, isNullOrUndefined, setStyleAttribute } from '@syncfusion/ej2-base';
|
|
3
3
|
import { isCollide } from '@syncfusion/ej2-popups';
|
|
4
4
|
import * as events from '../base/constant';
|
|
@@ -179,8 +179,7 @@ var BaseQuickToolbar = /** @class */ (function () {
|
|
|
179
179
|
*/
|
|
180
180
|
BaseQuickToolbar.prototype.showPopup = function (x, y, target) {
|
|
181
181
|
var _this = this;
|
|
182
|
-
var eventArgs =
|
|
183
|
-
{ popup: this.popupObj, cancel: false, targetElement: target };
|
|
182
|
+
var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target };
|
|
184
183
|
this.parent.trigger(events.beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {
|
|
185
184
|
if (!beforeQuickToolbarArgs.cancel) {
|
|
186
185
|
var editPanelTop = void 0;
|
|
@@ -307,7 +306,7 @@ var BaseQuickToolbar = /** @class */ (function () {
|
|
|
307
306
|
this.colorPickerObj.destroyColorPicker();
|
|
308
307
|
removeClass([this.element], [classes.CLS_POP]);
|
|
309
308
|
detach(element);
|
|
310
|
-
var args =
|
|
309
|
+
var args = this.popupObj;
|
|
311
310
|
this.parent.trigger(events.quickToolbarClose, args);
|
|
312
311
|
}
|
|
313
312
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IRichTextEditor } from '../base/interface';
|
|
2
|
+
/**
|
|
3
|
+
* `EnterKey` module is used to handle enter key press actions.
|
|
4
|
+
*/
|
|
5
|
+
export declare class EnterKeyAction {
|
|
6
|
+
private parent;
|
|
7
|
+
private range;
|
|
8
|
+
private startNode;
|
|
9
|
+
private endNode;
|
|
10
|
+
constructor(parent?: IRichTextEditor);
|
|
11
|
+
protected addEventListener(): void;
|
|
12
|
+
private destroy;
|
|
13
|
+
private removeEventListener;
|
|
14
|
+
private getRangeNode;
|
|
15
|
+
private enterHandler;
|
|
16
|
+
private insertFocusContent;
|
|
17
|
+
private createInsertElement;
|
|
18
|
+
}
|