@syncfusion/ej2-richtexteditor 25.1.37 → 25.1.38

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 (39) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/ej2-richtexteditor.min.js +2 -2
  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 +43 -35
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +42 -34
  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 +10 -10
  13. package/src/editor-manager/plugin/inserthtml.js +16 -19
  14. package/src/editor-manager/plugin/lists.js +19 -11
  15. package/src/rich-text-editor/actions/html-editor.js +0 -3
  16. package/src/rich-text-editor/actions/quick-toolbar.js +4 -0
  17. package/src/rich-text-editor/renderer/toolbar-renderer.js +3 -1
  18. package/styles/bootstrap-dark.css +10 -7
  19. package/styles/bootstrap.css +3 -3
  20. package/styles/fluent-dark.css +17 -5
  21. package/styles/fluent.css +17 -5
  22. package/styles/material-dark.css +1 -1
  23. package/styles/material.css +1 -1
  24. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +4 -4
  25. package/styles/rich-text-editor/_bootstrap-definition.scss +2 -2
  26. package/styles/rich-text-editor/_fluent-definition.scss +5 -5
  27. package/styles/rich-text-editor/_layout.scss +3 -3
  28. package/styles/rich-text-editor/_tailwind-definition.scss +5 -5
  29. package/styles/rich-text-editor/_theme.scss +21 -0
  30. package/styles/rich-text-editor/bootstrap-dark.css +10 -7
  31. package/styles/rich-text-editor/bootstrap.css +3 -3
  32. package/styles/rich-text-editor/fluent-dark.css +17 -5
  33. package/styles/rich-text-editor/fluent.css +17 -5
  34. package/styles/rich-text-editor/material-dark.css +1 -1
  35. package/styles/rich-text-editor/material.css +1 -1
  36. package/styles/rich-text-editor/tailwind-dark.css +9 -9
  37. package/styles/rich-text-editor/tailwind.css +9 -9
  38. package/styles/tailwind-dark.css +9 -9
  39. package/styles/tailwind.css +9 -9
@@ -3945,9 +3945,11 @@ class ToolbarRenderer {
3945
3945
  for (let index = 0; index < args.element.childNodes.length; index++) {
3946
3946
  if (currentListStyle === args.element.childNodes[index].innerHTML.split(' ').join('').toLocaleLowerCase()) {
3947
3947
  addClass([args.element.childNodes[index]], 'e-active');
3948
+ break;
3948
3949
  }
3949
- else if (currentListStyle === '') {
3950
+ else if (currentListStyle === '' && args.element.childNodes[index].innerHTML !== 'None') {
3950
3951
  addClass([args.element.childNodes[index]], 'e-active');
3952
+ break;
3951
3953
  }
3952
3954
  }
3953
3955
  }
@@ -7065,6 +7067,10 @@ class QuickToolbar {
7065
7067
  }
7066
7068
  keyDownHandler(e) {
7067
7069
  const preventHide = e.args.altKey;
7070
+ if (this.parent.inlineMode.enable && e.args.metaKey && e.args.keyCode === 65) {
7071
+ this.showInlineQTBar(this.offsetX, this.offsetY, e.args.target);
7072
+ return;
7073
+ }
7068
7074
  if (!preventHide) {
7069
7075
  if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))
7070
7076
  && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {
@@ -12407,6 +12413,7 @@ class Lists {
12407
12413
  endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
12408
12414
  startNode = startNode.nodeName !== 'LI' && !isNullOrUndefined(startNode.closest('LI')) ? startNode.closest('LI') : startNode;
12409
12415
  endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !isNullOrUndefined(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
12416
+ const parentList = (range.startContainer.nodeName === '#text') ? range.startContainer.parentElement.closest('li') : range.startContainer.closest('li');
12410
12417
  if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&
12411
12418
  isNullOrUndefined(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&
12412
12419
  isNullOrUndefined(startNode.previousElementSibling) && range.startOffset === 0) ||
@@ -12423,6 +12430,12 @@ class Lists {
12423
12430
  }
12424
12431
  e.event.preventDefault();
12425
12432
  }
12433
+ else if (!isNullOrUndefined(parentList) && parentList.textContent === range.startContainer.textContent && parentList.closest('li').previousElementSibling === null) {
12434
+ range.deleteContents();
12435
+ this.parent.editableElement.querySelectorAll('li:empty').forEach((e) => e.remove());
12436
+ this.parent.editableElement.querySelectorAll('ol:empty').forEach((e) => e.remove());
12437
+ e.event.preventDefault();
12438
+ }
12426
12439
  }
12427
12440
  onKeyUp() {
12428
12441
  if (!isNullOrUndefined(this.commonLIParent) && !isNullOrUndefined(this.commonLIParent.querySelector('.removeList'))) {
@@ -12462,7 +12475,7 @@ class Lists {
12462
12475
  if (e.event.which === 8) {
12463
12476
  this.backspaceList(e);
12464
12477
  }
12465
- if (e.event.which === 46 && e.event.action === 'delete') {
12478
+ if ((e.event.which === 46 && e.event.action === 'delete') || (e.event.which === 88 && e.event.action === 'cut')) {
12466
12479
  const range = this.parent.nodeSelection.getRange(this.parent.currentDocument);
12467
12480
  const commonAncestor = range.commonAncestorContainer;
12468
12481
  const startEle = range.startContainer;
@@ -13051,18 +13064,19 @@ class Lists {
13051
13064
  if (DEFAULT_TAG && 0 === element.querySelectorAll(BLOCK_TAGS.join(', ')).length) {
13052
13065
  const wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
13053
13066
  ' class="' + className + ' e-rte-wrap-inner"';
13054
- let parentElement = parentNode;
13055
- if (!isNullOrUndefined(parentElement.style.listStyleType)) {
13056
- parentNode.style.removeProperty("list-style-type");
13057
- }
13058
- if (!isNullOrUndefined(parentElement.style.listStyleImage)) {
13059
- parentNode.style.removeProperty("list-style-image");
13060
- }
13061
- if (parentElement.style.length === 0) {
13062
- parentNode.removeAttribute("style");
13067
+ const parentElement = parentNode;
13068
+ if (elements.length === parentElement.querySelectorAll('li').length) {
13069
+ if (!isNullOrUndefined(parentElement.style.listStyleType)) {
13070
+ parentNode.style.removeProperty('list-style-type');
13071
+ }
13072
+ if (!isNullOrUndefined(parentElement.style.listStyleImage)) {
13073
+ parentNode.style.removeProperty('list-style-image');
13074
+ }
13075
+ if (parentElement.style.length === 0) {
13076
+ parentNode.removeAttribute('style');
13077
+ }
13063
13078
  }
13064
- const wrapper = '<' + DEFAULT_TAG + wrapperclass +
13065
- this.domNode.attributes(parentElement) + '></' + DEFAULT_TAG + '>';
13079
+ const wrapper = '<' + DEFAULT_TAG + wrapperclass + '></' + DEFAULT_TAG + '>';
13066
13080
  if (e.enterAction !== 'BR') {
13067
13081
  this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
13068
13082
  }
@@ -14015,25 +14029,22 @@ class InsertHtml {
14015
14029
  TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))
14016
14030
  || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&
14017
14031
  TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {
14018
- if (isCollapsed) {
14019
- preNode = nodeCutter.SplitNode(range, closestParentNode, true);
14020
- }
14021
- else {
14022
- preNode = nodeCutter.SplitNode(range, closestParentNode, false);
14023
- }
14024
- sibNode = isNullOrUndefined(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;
14025
- if (nodes.length === 1) {
14026
- nodeSelection.setSelectionContents(docElement, preNode);
14027
- range = nodeSelection.getRange(docElement);
14028
- isSingleNode = true;
14029
- }
14030
- else {
14031
- lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);
14032
- lasNode = isNullOrUndefined(lasNode) ? preNode : lasNode;
14033
- nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?
14034
- lasNode.textContent.length : lasNode.childNodes.length);
14035
- range = nodeSelection.getRange(docElement);
14036
- isSingleNode = false;
14032
+ preNode = nodeCutter.GetSpliceNode(range, closestParentNode);
14033
+ if (!isNullOrUndefined(preNode)) {
14034
+ sibNode = isNullOrUndefined(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;
14035
+ if (nodes.length === 1) {
14036
+ nodeSelection.setSelectionContents(docElement, preNode);
14037
+ range = nodeSelection.getRange(docElement);
14038
+ isSingleNode = true;
14039
+ }
14040
+ else {
14041
+ lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);
14042
+ lasNode = isNullOrUndefined(lasNode) ? preNode : lasNode;
14043
+ nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?
14044
+ lasNode.textContent.length : lasNode.childNodes.length);
14045
+ range = nodeSelection.getRange(docElement);
14046
+ isSingleNode = false;
14047
+ }
14037
14048
  }
14038
14049
  }
14039
14050
  let containsBlockNode = false;
@@ -21465,9 +21476,6 @@ class HtmlEditor {
21465
21476
  }
21466
21477
  onSelectionRestore(e) {
21467
21478
  this.parent.isBlur = false;
21468
- if (isNullOrUndefined(this.saveSelection) || isNullOrUndefined(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption")) ? true : !(closest(this.saveSelection.range.startContainer.parentElement, ".e-img-caption").getAttribute("contenteditable") == "false")) {
21469
- this.contentRenderer.getEditPanel().focus();
21470
- }
21471
21479
  if (isNullOrUndefined(e.items) || e.items) {
21472
21480
  this.saveSelection.restore();
21473
21481
  }