@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.
Files changed (117) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +61 -9
  3. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  4. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-richtexteditor.es2015.js +1006 -312
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +1014 -310
  8. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  9. package/dist/global/ej2-richtexteditor.min.js +2 -2
  10. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +12 -12
  13. package/src/common/types.d.ts +8 -0
  14. package/src/editor-manager/base/editor-manager.d.ts +1 -1
  15. package/src/editor-manager/base/editor-manager.js +6 -6
  16. package/src/editor-manager/base/interface.d.ts +7 -1
  17. package/src/editor-manager/plugin/clearformat-exec.js +2 -2
  18. package/src/editor-manager/plugin/clearformat.d.ts +3 -1
  19. package/src/editor-manager/plugin/clearformat.js +19 -9
  20. package/src/editor-manager/plugin/dom-node.js +2 -2
  21. package/src/editor-manager/plugin/formats.d.ts +1 -0
  22. package/src/editor-manager/plugin/formats.js +87 -7
  23. package/src/editor-manager/plugin/image.js +77 -54
  24. package/src/editor-manager/plugin/inserthtml.js +20 -2
  25. package/src/editor-manager/plugin/isformatted.js +2 -1
  26. package/src/editor-manager/plugin/lists.d.ts +1 -0
  27. package/src/editor-manager/plugin/lists.js +87 -8
  28. package/src/editor-manager/plugin/nodecutter.d.ts +1 -0
  29. package/src/editor-manager/plugin/nodecutter.js +1 -0
  30. package/src/editor-manager/plugin/selection-commands.d.ts +2 -1
  31. package/src/editor-manager/plugin/selection-commands.js +29 -12
  32. package/src/editor-manager/plugin/selection-exec.js +2 -2
  33. package/src/editor-manager/plugin/table.js +19 -9
  34. package/src/editor-manager/plugin/toolbar-status.d.ts +1 -0
  35. package/src/editor-manager/plugin/toolbar-status.js +20 -0
  36. package/src/rich-text-editor/actions/base-quick-toolbar.js +3 -4
  37. package/src/rich-text-editor/actions/enter-key.d.ts +18 -0
  38. package/src/rich-text-editor/actions/enter-key.js +290 -0
  39. package/src/rich-text-editor/actions/full-screen.js +62 -42
  40. package/src/rich-text-editor/actions/html-editor.js +30 -20
  41. package/src/rich-text-editor/actions/paste-clean-up.js +5 -5
  42. package/src/rich-text-editor/actions/resize.js +4 -4
  43. package/src/rich-text-editor/base/constant.d.ts +5 -0
  44. package/src/rich-text-editor/base/constant.js +5 -0
  45. package/src/rich-text-editor/base/interface.d.ts +15 -3
  46. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +27 -1
  47. package/src/rich-text-editor/base/rich-text-editor.d.ts +34 -5
  48. package/src/rich-text-editor/base/rich-text-editor.js +66 -57
  49. package/src/rich-text-editor/base/util.d.ts +7 -1
  50. package/src/rich-text-editor/base/util.js +45 -11
  51. package/src/rich-text-editor/formatter/formatter.js +9 -7
  52. package/src/rich-text-editor/models/items.js +3 -3
  53. package/src/rich-text-editor/renderer/iframe-content-renderer.js +2 -2
  54. package/src/rich-text-editor/renderer/image-module.d.ts +6 -0
  55. package/src/rich-text-editor/renderer/image-module.js +70 -26
  56. package/src/rich-text-editor/renderer/link-module.js +4 -3
  57. package/src/rich-text-editor/renderer/popup-renderer.js +1 -2
  58. package/src/rich-text-editor/renderer/render.js +10 -2
  59. package/src/rich-text-editor/renderer/table-module.js +25 -15
  60. package/src/rich-text-editor/renderer/toolbar-renderer.js +1 -1
  61. package/src/rich-text-editor/renderer/view-source.js +21 -3
  62. package/styles/bootstrap-dark.css +25 -12
  63. package/styles/bootstrap.css +25 -12
  64. package/styles/bootstrap4.css +21 -13
  65. package/styles/bootstrap5-dark.css +3058 -0
  66. package/styles/bootstrap5-dark.scss +1 -0
  67. package/styles/bootstrap5.css +3058 -0
  68. package/styles/bootstrap5.scss +1 -0
  69. package/styles/fabric-dark.css +20 -12
  70. package/styles/fabric.css +20 -12
  71. package/styles/highcontrast-light.css +20 -12
  72. package/styles/highcontrast.css +19 -18
  73. package/styles/material-dark.css +22 -14
  74. package/styles/material.css +19 -11
  75. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +1 -1
  76. package/styles/rich-text-editor/_bootstrap-definition.scss +1 -1
  77. package/styles/rich-text-editor/_bootstrap4-definition.scss +2 -2
  78. package/styles/rich-text-editor/_bootstrap5-dark-definition.scss +1 -0
  79. package/styles/rich-text-editor/_bootstrap5-definition.scss +168 -0
  80. package/styles/rich-text-editor/_fabric-dark-definition.scss +1 -1
  81. package/styles/rich-text-editor/_fabric-definition.scss +1 -1
  82. package/styles/rich-text-editor/_highcontrast-definition.scss +2 -2
  83. package/styles/rich-text-editor/_highcontrast-light-definition.scss +1 -1
  84. package/styles/rich-text-editor/_layout.scss +64 -7
  85. package/styles/rich-text-editor/_tailwind-dark-definition.scss +1 -165
  86. package/styles/rich-text-editor/_tailwind-definition.scss +74 -72
  87. package/styles/rich-text-editor/_theme.scss +103 -3
  88. package/styles/rich-text-editor/bootstrap-dark.css +25 -12
  89. package/styles/rich-text-editor/bootstrap.css +25 -12
  90. package/styles/rich-text-editor/bootstrap4.css +21 -13
  91. package/styles/rich-text-editor/bootstrap5-dark.css +3058 -0
  92. package/styles/rich-text-editor/bootstrap5-dark.scss +4 -0
  93. package/styles/rich-text-editor/bootstrap5.css +3058 -0
  94. package/styles/rich-text-editor/bootstrap5.scss +4 -0
  95. package/styles/rich-text-editor/fabric-dark.css +20 -12
  96. package/styles/rich-text-editor/fabric.css +20 -12
  97. package/styles/rich-text-editor/highcontrast-light.css +20 -12
  98. package/styles/rich-text-editor/highcontrast.css +19 -18
  99. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +1 -1
  100. package/styles/rich-text-editor/icons/_bootstrap.scss +1 -1
  101. package/styles/rich-text-editor/icons/_bootstrap4.scss +1 -1
  102. package/styles/rich-text-editor/icons/_bootstrap5-dark.scss +1 -0
  103. package/styles/rich-text-editor/icons/_bootstrap5.scss +303 -0
  104. package/styles/rich-text-editor/icons/_fabric-dark.scss +1 -1
  105. package/styles/rich-text-editor/icons/_fabric.scss +1 -1
  106. package/styles/rich-text-editor/icons/_highcontrast-light.scss +1 -1
  107. package/styles/rich-text-editor/icons/_highcontrast.scss +1 -1
  108. package/styles/rich-text-editor/icons/_material-dark.scss +1 -1
  109. package/styles/rich-text-editor/icons/_material.scss +1 -1
  110. package/styles/rich-text-editor/icons/_tailwind-dark.scss +1 -304
  111. package/styles/rich-text-editor/icons/_tailwind.scss +2 -2
  112. package/styles/rich-text-editor/material-dark.css +22 -14
  113. package/styles/rich-text-editor/material.css +19 -11
  114. package/styles/rich-text-editor/tailwind-dark.css +51 -20
  115. package/styles/rich-text-editor/tailwind.css +49 -18
  116. package/styles/tailwind-dark.css +51 -20
  117. package/styles/tailwind.css +49 -18
@@ -238,7 +238,8 @@ var IsFormatted = /** @class */ (function () {
238
238
  'sup',
239
239
  'tt',
240
240
  'u',
241
- 'var'
241
+ 'var',
242
+ 'del'
242
243
  ];
243
244
  return IsFormatted;
244
245
  }());
@@ -33,6 +33,7 @@ export declare class Lists {
33
33
  private noPreviousElement;
34
34
  private nestedList;
35
35
  private applyListsHandler;
36
+ private setSelectionBRConfig;
36
37
  private applyLists;
37
38
  private removeEmptyListElements;
38
39
  private isRevert;
@@ -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 paraTag = createElement('p');
105
- paraTag.innerHTML = '<br>';
106
- this.parent.domNode.insertAfter(paraTag, startNodeParent);
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, paraTag, 0);
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)) {
@@ -5,6 +5,7 @@
5
5
 
6
6
  */
7
7
  export declare class NodeCutter {
8
+ enterAction: string;
8
9
  position: number;
9
10
  private nodeSelection;
10
11
  /**
@@ -9,6 +9,7 @@ import { InsertMethods } from './insert-methods';
9
9
  */
10
10
  var NodeCutter = /** @class */ (function () {
11
11
  function NodeCutter() {
12
+ this.enterAction = 'P';
12
13
  this.position = -1;
13
14
  this.nodeSelection = new NodeSelection();
14
15
  }
@@ -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] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));
227
- if (num === 0) {
228
- range.setStartBefore(child[num]);
229
- }
230
- else if (num === child.length - 1) {
231
- range.setEndAfter(child[num]);
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] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?
329
- InsertMethods.Wrap(nodes[index], element)
330
- : InsertMethods.WrapBefore(nodes[index], element, true);
331
- nodes[index] = this.getChildNode(nodes[index], element);
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.row; i++) {
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 emptyPara = createElement('p');
67
- emptyPara.appendChild(createElement('br'));
68
- this.insertAfter(emptyPara, table);
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,td')).indexOf(selectedCell);
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,td')[colIndex];
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.querySelectorAll('tr');
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, isBlazor } from '@syncfusion/ej2-base';
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 = isBlazor() ? { cancel: false, targetElement: target } :
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 = isBlazor() ? { element: this.popupObj.element } : this.popupObj;
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
+ }