@syncfusion/ej2-richtexteditor 24.2.7 → 24.2.9
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/CHANGELOG.md +28 -0
- package/dist/ej2-richtexteditor.min.js +2 -2
- 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 +341 -157
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +342 -156
- 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 +8 -8
- package/src/editor-manager/plugin/dom-node.js +3 -1
- package/src/editor-manager/plugin/format-painter-actions.d.ts +1 -0
- package/src/editor-manager/plugin/format-painter-actions.js +18 -0
- package/src/editor-manager/plugin/inserthtml.js +9 -1
- package/src/editor-manager/plugin/lists.js +79 -70
- package/src/editor-manager/plugin/ms-word-clean-up.d.ts +1 -0
- package/src/editor-manager/plugin/ms-word-clean-up.js +22 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.js +5 -2
- package/src/rich-text-editor/actions/color-picker.d.ts +1 -0
- package/src/rich-text-editor/actions/color-picker.js +10 -0
- package/src/rich-text-editor/actions/emoji-picker.js +1 -1
- package/src/rich-text-editor/actions/enter-key.js +2 -2
- package/src/rich-text-editor/actions/html-editor.js +10 -5
- package/src/rich-text-editor/actions/quick-toolbar.js +1 -1
- package/src/rich-text-editor/actions/toolbar.js +3 -0
- 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/rich-text-editor.js +21 -5
- package/src/rich-text-editor/models/default-locale.js +1 -1
- package/src/rich-text-editor/renderer/dialog-renderer.js +5 -1
- package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
- package/src/rich-text-editor/renderer/image-module.js +28 -7
- package/src/rich-text-editor/renderer/table-module.d.ts +3 -1
- package/src/rich-text-editor/renderer/table-module.js +111 -50
- package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -13
- package/styles/bootstrap-dark.css +32 -13
- package/styles/bootstrap.css +36 -20
- package/styles/bootstrap4.css +18 -3
- package/styles/bootstrap5-dark.css +22 -9
- package/styles/bootstrap5.css +22 -9
- package/styles/fabric-dark.css +18 -3
- package/styles/fabric.css +18 -3
- package/styles/fluent-dark.css +24 -3
- package/styles/fluent.css +24 -3
- package/styles/highcontrast-light.css +18 -3
- package/styles/highcontrast.css +21 -3
- package/styles/material-dark.css +22 -3
- package/styles/material.css +22 -3
- package/styles/material3-dark.css +19 -4
- package/styles/material3.css +19 -4
- package/styles/rich-text-editor/_bootstrap-dark-definition.scss +8 -8
- package/styles/rich-text-editor/_bootstrap-definition.scss +14 -14
- package/styles/rich-text-editor/_layout.scss +11 -0
- package/styles/rich-text-editor/_material3-definition.scss +1 -1
- package/styles/rich-text-editor/_theme.scss +47 -13
- package/styles/rich-text-editor/bootstrap-dark.css +32 -13
- package/styles/rich-text-editor/bootstrap.css +36 -20
- package/styles/rich-text-editor/bootstrap4.css +18 -3
- package/styles/rich-text-editor/bootstrap5-dark.css +22 -9
- package/styles/rich-text-editor/bootstrap5.css +22 -9
- package/styles/rich-text-editor/fabric-dark.css +18 -3
- package/styles/rich-text-editor/fabric.css +18 -3
- package/styles/rich-text-editor/fluent-dark.css +24 -3
- package/styles/rich-text-editor/fluent.css +24 -3
- package/styles/rich-text-editor/highcontrast-light.css +18 -3
- package/styles/rich-text-editor/highcontrast.css +21 -3
- package/styles/rich-text-editor/material-dark.css +22 -3
- package/styles/rich-text-editor/material.css +22 -3
- package/styles/rich-text-editor/material3-dark.css +19 -4
- package/styles/rich-text-editor/material3.css +19 -4
- package/styles/rich-text-editor/tailwind-dark.css +30 -3
- package/styles/rich-text-editor/tailwind.css +30 -3
- package/styles/tailwind-dark.css +30 -3
- package/styles/tailwind.css +30 -3
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -41
- package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -27
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 24.2.
|
|
3
|
+
* version : 24.2.9
|
|
4
4
|
* Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
|
|
5
5
|
* Use of this code is subject to the terms of our license.
|
|
6
6
|
* A copy of the current license can be obtained at any time by e-mailing
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_from": "@syncfusion/ej2-richtexteditor@*",
|
|
3
|
-
"_id": "@syncfusion/ej2-richtexteditor@24.2.
|
|
3
|
+
"_id": "@syncfusion/ej2-richtexteditor@24.2.8",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
5
|
+
"_integrity": "sha512-RiTlxXAeoPOeO3I9n1A4XHgDuna06LrHQgt08fEpnjhBE38mAzyH68yRzCtrUlVnoVqTPOvJJ83rLI2VDDlC1w==",
|
|
6
6
|
"_location": "/@syncfusion/ej2-richtexteditor",
|
|
7
7
|
"_phantomChildren": {},
|
|
8
8
|
"_requested": {
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"/@syncfusion/ej2-react-richtexteditor",
|
|
26
26
|
"/@syncfusion/ej2-vue-richtexteditor"
|
|
27
27
|
],
|
|
28
|
-
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.2.
|
|
29
|
-
"_shasum": "
|
|
28
|
+
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-richtexteditor/-/ej2-richtexteditor-24.2.8.tgz",
|
|
29
|
+
"_shasum": "f966e83e1230cc284396b8ec962f1df25c80d5a9",
|
|
30
30
|
"_spec": "@syncfusion/ej2-richtexteditor@*",
|
|
31
31
|
"_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
|
|
32
32
|
"author": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"@syncfusion/ej2-base": "~24.2.7",
|
|
41
41
|
"@syncfusion/ej2-buttons": "~24.2.7",
|
|
42
42
|
"@syncfusion/ej2-filemanager": "~24.2.7",
|
|
43
|
-
"@syncfusion/ej2-inputs": "~24.2.
|
|
44
|
-
"@syncfusion/ej2-navigations": "~24.2.
|
|
45
|
-
"@syncfusion/ej2-popups": "~24.2.
|
|
43
|
+
"@syncfusion/ej2-inputs": "~24.2.9",
|
|
44
|
+
"@syncfusion/ej2-navigations": "~24.2.8",
|
|
45
|
+
"@syncfusion/ej2-popups": "~24.2.9",
|
|
46
46
|
"@syncfusion/ej2-splitbuttons": "~24.2.7"
|
|
47
47
|
},
|
|
48
48
|
"deprecated": false,
|
|
@@ -69,6 +69,6 @@
|
|
|
69
69
|
"url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
|
|
70
70
|
},
|
|
71
71
|
"typings": "index.d.ts",
|
|
72
|
-
"version": "24.2.
|
|
72
|
+
"version": "24.2.9",
|
|
73
73
|
"sideEffects": false
|
|
74
74
|
}
|
|
@@ -490,9 +490,11 @@ var DOMNode = /** @class */ (function () {
|
|
|
490
490
|
var range = save.range;
|
|
491
491
|
var startChildNodes = range.startContainer.childNodes;
|
|
492
492
|
var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';
|
|
493
|
+
var isImgOnlySelected = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'IMAGE' &&
|
|
494
|
+
range.endOffset === 1 && range.endContainer.nodeName === '#text' && range.endContainer.textContent.length === 0;
|
|
493
495
|
var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :
|
|
494
496
|
startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);
|
|
495
|
-
var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]
|
|
497
|
+
var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (isImgOnlySelected ? range.endOffset : (range.endOffset - 1)) : range.endOffset]
|
|
496
498
|
|| range.endContainer);
|
|
497
499
|
if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {
|
|
498
500
|
var existNode = start.contains(end) ? start : end;
|
|
@@ -35,6 +35,7 @@ export declare class FormatPainterActions implements IFormatPainterEditor {
|
|
|
35
35
|
private validateELementTag;
|
|
36
36
|
private findCurrentContext;
|
|
37
37
|
private insertFormatNode;
|
|
38
|
+
private isListCopied;
|
|
38
39
|
private insertBlockNode;
|
|
39
40
|
private insertNewList;
|
|
40
41
|
private insertSameList;
|
|
@@ -363,6 +363,14 @@ var FormatPainterActions = /** @class */ (function () {
|
|
|
363
363
|
var range = this.parent.nodeSelection.getRange(docElement);
|
|
364
364
|
var isCollapsed = range.collapsed;
|
|
365
365
|
var blockNodes = this.parent.domNode.blockNodes();
|
|
366
|
+
var isListCopied = this.isListCopied();
|
|
367
|
+
if (isListCopied) {
|
|
368
|
+
for (var i = 0; i < blockNodes.length; i++) {
|
|
369
|
+
if (closest(blockNodes[i], 'li')) {
|
|
370
|
+
blockNodes[i] = closest(blockNodes[i], 'li');
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
366
374
|
var isFullNodeSelected = false;
|
|
367
375
|
if (blockNodes.length === 1) {
|
|
368
376
|
isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();
|
|
@@ -371,6 +379,16 @@ var FormatPainterActions = /** @class */ (function () {
|
|
|
371
379
|
this.insertBlockNode(clonedElem, range, docElement, blockNodes);
|
|
372
380
|
}
|
|
373
381
|
};
|
|
382
|
+
FormatPainterActions.prototype.isListCopied = function () {
|
|
383
|
+
var isListCopied = false;
|
|
384
|
+
for (var i = 0; i < this.copyCollection.length; i++) {
|
|
385
|
+
if (this.copyCollection[i].tagName === 'OL' || this.copyCollection[i].tagName === 'UL') {
|
|
386
|
+
isListCopied = true;
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return isListCopied;
|
|
391
|
+
};
|
|
374
392
|
FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, nodes) {
|
|
375
393
|
var domSelection = this.parent.nodeSelection;
|
|
376
394
|
var saveSelection = domSelection.save(range, docElement);
|
|
@@ -211,7 +211,12 @@ var InsertHtml = /** @class */ (function () {
|
|
|
211
211
|
CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))
|
|
212
212
|
|| (node.nodeName.toLowerCase() === 'table' && closestParentNode &&
|
|
213
213
|
CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {
|
|
214
|
-
|
|
214
|
+
if (isCollapsed) {
|
|
215
|
+
preNode = nodeCutter.SplitNode(range, closestParentNode, true);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
preNode = nodeCutter.SplitNode(range, closestParentNode, false);
|
|
219
|
+
}
|
|
215
220
|
sibNode = isNOU(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;
|
|
216
221
|
if (nodes.length === 1) {
|
|
217
222
|
nodeSelection.setSelectionContents(docElement, preNode);
|
|
@@ -298,6 +303,9 @@ var InsertHtml = /** @class */ (function () {
|
|
|
298
303
|
var paraElm = void 0;
|
|
299
304
|
var previousParent = void 0;
|
|
300
305
|
if (!this.contentsDeleted) {
|
|
306
|
+
if (!isCollapsed && range.startContainer.parentElement.textContent.length === 0 && range.startContainer.nodeName === 'BR' && range.startContainer.parentElement.nodeName === 'P') {
|
|
307
|
+
editNode.removeChild(range.startContainer.parentElement);
|
|
308
|
+
}
|
|
301
309
|
range.deleteContents();
|
|
302
310
|
}
|
|
303
311
|
while (node.firstChild) {
|
|
@@ -72,14 +72,21 @@ var Lists = /** @class */ (function () {
|
|
|
72
72
|
var preElementOLTest = this.testList(preElement);
|
|
73
73
|
var nextElementOLTest = this.testList(nextElement);
|
|
74
74
|
if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {
|
|
75
|
+
var brElement = createElement('br');
|
|
75
76
|
if (startElementOLTest) {
|
|
76
77
|
range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
|
|
78
|
+
if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
|
|
79
|
+
this.parent.domNode.insertAfter(brElement, range.startContainer);
|
|
80
|
+
}
|
|
77
81
|
this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });
|
|
78
82
|
e.event.preventDefault();
|
|
79
83
|
}
|
|
80
84
|
else if (range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||
|
|
81
85
|
range.startContainer.textContent.replace(/\u200B/g, '').slice(0, range.startOffset).trim() === '-') {
|
|
82
86
|
range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);
|
|
87
|
+
if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {
|
|
88
|
+
this.parent.domNode.insertAfter(brElement, range.startContainer);
|
|
89
|
+
}
|
|
83
90
|
this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });
|
|
84
91
|
e.event.preventDefault();
|
|
85
92
|
}
|
|
@@ -190,11 +197,11 @@ var Lists = /** @class */ (function () {
|
|
|
190
197
|
};
|
|
191
198
|
Lists.prototype.removeList = function (range, e) {
|
|
192
199
|
var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);
|
|
193
|
-
var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
|
|
200
|
+
var endNode = (!isNOU(range.endContainer.parentElement.closest('li')) && range.endContainer.parentElement.closest('li').childElementCount > 1 && range.endContainer.nodeName === '#text') ? range.endContainer : this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);
|
|
194
201
|
startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;
|
|
195
202
|
endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;
|
|
196
203
|
startNode = startNode.nodeName !== 'LI' && !isNOU(startNode.closest('LI')) ? startNode.closest('LI') : startNode;
|
|
197
|
-
endNode = endNode.nodeName !== 'LI' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
|
|
204
|
+
endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;
|
|
198
205
|
if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&
|
|
199
206
|
isNOU(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&
|
|
200
207
|
isNOU(startNode.previousElementSibling) && range.startOffset === 0) ||
|
|
@@ -600,7 +607,7 @@ var Lists = /** @class */ (function () {
|
|
|
600
607
|
};
|
|
601
608
|
Lists.prototype.applyLists = function (elements, type, selector, item, e) {
|
|
602
609
|
var isReverse = true;
|
|
603
|
-
if (this.isRevert(elements, type, item) && isNOU(item)) {
|
|
610
|
+
if (this.isRevert(elements, type, item) && isNOU(item) || (!isNOU(item) && item.listStyle === 'none')) {
|
|
604
611
|
this.revertList(elements, e);
|
|
605
612
|
this.removeEmptyListElements();
|
|
606
613
|
}
|
|
@@ -790,82 +797,84 @@ var Lists = /** @class */ (function () {
|
|
|
790
797
|
var viewNode = [];
|
|
791
798
|
for (var i = 0; i < elements.length; i++) {
|
|
792
799
|
var element = elements[i];
|
|
793
|
-
if (
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
800
|
+
if ((isNullOrUndefined(e.item)) || ((element.nodeName === 'LI' && e.item.listStyle === 'none'))) {
|
|
801
|
+
if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {
|
|
802
|
+
detach(this.domNode.contents(element)[0]);
|
|
803
|
+
}
|
|
804
|
+
var parentNode = elements[i].parentNode;
|
|
805
|
+
var className = element.getAttribute('class');
|
|
806
|
+
if (temp.length === 0) {
|
|
807
|
+
var siblingList = elements[i].querySelectorAll('ul, ol');
|
|
808
|
+
var firstNode = siblingList[0];
|
|
809
|
+
if (firstNode) {
|
|
810
|
+
var child = firstNode
|
|
811
|
+
.querySelectorAll('li');
|
|
812
|
+
if (child) {
|
|
813
|
+
var nestedElement = createElement(firstNode.tagName);
|
|
814
|
+
append([nestedElement], firstNode.parentNode);
|
|
815
|
+
var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });
|
|
816
|
+
append([nestedElementLI], nestedElement);
|
|
817
|
+
append([firstNode], nestedElementLI);
|
|
818
|
+
}
|
|
810
819
|
}
|
|
811
820
|
}
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
classAttr += ' class="' + className + '"';
|
|
823
|
-
}
|
|
824
|
-
if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {
|
|
825
|
-
var wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
|
|
826
|
-
' class="' + className + ' e-rte-wrap-inner"';
|
|
827
|
-
var parentElement = parentNode;
|
|
828
|
-
if (!isNOU(parentElement.style.listStyleType)) {
|
|
829
|
-
parentNode.style.removeProperty("list-style-type");
|
|
821
|
+
if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),
|
|
822
|
+
'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||
|
|
823
|
+
'UL' === parentNode.parentNode.tagName) {
|
|
824
|
+
element.parentNode.insertBefore(this.closeTag('LI'), element);
|
|
825
|
+
}
|
|
826
|
+
else {
|
|
827
|
+
var classAttr = '';
|
|
828
|
+
if (className) {
|
|
829
|
+
// eslint-disable-next-line
|
|
830
|
+
classAttr += ' class="' + className + '"';
|
|
830
831
|
}
|
|
831
|
-
if (
|
|
832
|
-
|
|
832
|
+
if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {
|
|
833
|
+
var wrapperclass = isNullOrUndefined(className) ? ' class="e-rte-wrap-inner"' :
|
|
834
|
+
' class="' + className + ' e-rte-wrap-inner"';
|
|
835
|
+
var parentElement = parentNode;
|
|
836
|
+
if (!isNOU(parentElement.style.listStyleType)) {
|
|
837
|
+
parentNode.style.removeProperty("list-style-type");
|
|
838
|
+
}
|
|
839
|
+
if (!isNOU(parentElement.style.listStyleImage)) {
|
|
840
|
+
parentNode.style.removeProperty("list-style-image");
|
|
841
|
+
}
|
|
842
|
+
if (parentElement.style.length === 0) {
|
|
843
|
+
parentNode.removeAttribute("style");
|
|
844
|
+
}
|
|
845
|
+
var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +
|
|
846
|
+
this.domNode.attributes(parentElement) + '></' + CONSTANT.DEFAULT_TAG + '>';
|
|
847
|
+
if (e.enterAction !== 'BR') {
|
|
848
|
+
this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));
|
|
849
|
+
}
|
|
833
850
|
}
|
|
834
|
-
if (
|
|
835
|
-
parentNode.
|
|
851
|
+
else if (this.domNode.contents(element)[0].nodeType === 3) {
|
|
852
|
+
var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));
|
|
853
|
+
this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
|
|
836
854
|
}
|
|
837
|
-
|
|
838
|
-
this.domNode.
|
|
839
|
-
|
|
840
|
-
this.domNode.
|
|
855
|
+
else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
|
|
856
|
+
this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
|
|
857
|
+
var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
|
|
858
|
+
this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
|
|
841
859
|
}
|
|
860
|
+
else {
|
|
861
|
+
var childNode = element.firstChild;
|
|
862
|
+
className = childNode.getAttribute('class');
|
|
863
|
+
attributes(childNode, this.domNode.rawAttributes(parentNode));
|
|
864
|
+
if (className && childNode.getAttribute('class')) {
|
|
865
|
+
attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
append([this.openTag('LI')], element);
|
|
869
|
+
prepend([this.closeTag('LI')], element);
|
|
842
870
|
}
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
}
|
|
847
|
-
else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||
|
|
848
|
-
this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {
|
|
849
|
-
var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);
|
|
850
|
-
this.domNode.replaceWith(this.domNode.contents(element)[0], replace);
|
|
871
|
+
this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
|
|
872
|
+
if (parentNode.parentNode.tagName === 'LI') {
|
|
873
|
+
parentNode = parentNode.parentNode.parentNode;
|
|
851
874
|
}
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
className = childNode.getAttribute('class');
|
|
855
|
-
attributes(childNode, this.domNode.rawAttributes(parentNode));
|
|
856
|
-
if (className && childNode.getAttribute('class')) {
|
|
857
|
-
attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });
|
|
858
|
-
}
|
|
875
|
+
if (viewNode.indexOf(parentNode) < 0) {
|
|
876
|
+
viewNode.push(parentNode);
|
|
859
877
|
}
|
|
860
|
-
append([this.openTag('LI')], element);
|
|
861
|
-
prepend([this.closeTag('LI')], element);
|
|
862
|
-
}
|
|
863
|
-
this.domNode.insertAfter(this.openTag(parentNode.tagName), element);
|
|
864
|
-
if (parentNode.parentNode.tagName === 'LI') {
|
|
865
|
-
parentNode = parentNode.parentNode.parentNode;
|
|
866
|
-
}
|
|
867
|
-
if (viewNode.indexOf(parentNode) < 0) {
|
|
868
|
-
viewNode.push(parentNode);
|
|
869
878
|
}
|
|
870
879
|
}
|
|
871
880
|
for (var i = 0; i < viewNode.length; i++) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as EVENTS from '../../common/constant';
|
|
2
|
-
import { createElement, isNullOrUndefined as isNOU, detach, addClass } from '@syncfusion/ej2-base';
|
|
2
|
+
import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser } from '@syncfusion/ej2-base';
|
|
3
3
|
import { PASTE_SOURCE } from '../base/constant';
|
|
4
4
|
/**
|
|
5
5
|
* PasteCleanup for MsWord content
|
|
@@ -61,6 +61,7 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
61
61
|
var elm = createElement('p');
|
|
62
62
|
elm.setAttribute('id', 'MSWord-Content');
|
|
63
63
|
elm.innerHTML = tempHTMLContent;
|
|
64
|
+
this.addDoubleBr(elm);
|
|
64
65
|
var patern = /class='?Mso|style='[^ ]*\bmso-/i;
|
|
65
66
|
var patern2 = /class="?Mso|style="[^ ]*\bmso-/i;
|
|
66
67
|
var patern3 = /(class="?Mso|class='?Mso|class="?Xl|class='?Xl|class=Xl|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument)/gi;
|
|
@@ -95,6 +96,26 @@ var MsWordPaste = /** @class */ (function () {
|
|
|
95
96
|
e.callBack(elm.innerHTML);
|
|
96
97
|
}
|
|
97
98
|
};
|
|
99
|
+
MsWordPaste.prototype.addDoubleBr = function (elm) {
|
|
100
|
+
var newline = elm.querySelector('.Apple-interchange-newline');
|
|
101
|
+
if (!isNOU(newline) && Browser.userAgent.indexOf('Chrome') !== -1 && newline.parentElement.nodeName === 'P' && elm !== newline.parentElement) {
|
|
102
|
+
for (var i = 0; i < elm.childNodes.length; i++) {
|
|
103
|
+
// eslint-disable-next-line
|
|
104
|
+
var node = elm.childNodes[i];
|
|
105
|
+
if (node.nodeType === Node.COMMENT_NODE && node.nodeValue.includes('StartFragment')) {
|
|
106
|
+
var newElement = document.createElement('p');
|
|
107
|
+
newElement.innerHTML = '<br>';
|
|
108
|
+
var cssText = newline.parentElement.style.cssText;
|
|
109
|
+
var currentStyle = newElement.getAttribute('style') || '';
|
|
110
|
+
var newStyle = currentStyle + cssText;
|
|
111
|
+
newElement.setAttribute('style', newStyle);
|
|
112
|
+
elm.insertBefore(newElement, node.nextSibling);
|
|
113
|
+
detach(newline);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
98
119
|
MsWordPaste.prototype.cleanList = function (elm, listTag) {
|
|
99
120
|
var replacableElem = elm.querySelectorAll(listTag + ' div');
|
|
100
121
|
for (var j = replacableElem.length - 1; j >= 0; j--) {
|
|
@@ -223,6 +223,9 @@ var BaseQuickToolbar = /** @class */ (function () {
|
|
|
223
223
|
_this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);
|
|
224
224
|
_this.parent.enableToolbarItem(['Undo', 'Redo']);
|
|
225
225
|
}
|
|
226
|
+
else {
|
|
227
|
+
_this.parent.enableToolbarItem(_this.parent.toolbarSettings.items);
|
|
228
|
+
}
|
|
226
229
|
append([_this.element], document.body);
|
|
227
230
|
if (_this.parent.showTooltip) {
|
|
228
231
|
_this.tooltip = new Tooltip({
|
|
@@ -264,9 +267,9 @@ var BaseQuickToolbar = /** @class */ (function () {
|
|
|
264
267
|
parentData: parent_1.getBoundingClientRect(),
|
|
265
268
|
tBarElementHeight: tBarHeight
|
|
266
269
|
};
|
|
267
|
-
if (target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&
|
|
270
|
+
if ((target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&
|
|
268
271
|
(target.classList.contains(classes.CLS_AUDIOWRAP) || target.classList.contains(classes.CLS_CLICKELEM) ||
|
|
269
|
-
target.classList.contains(classes.CLS_VID_CLICK_ELEM)))) {
|
|
272
|
+
target.classList.contains(classes.CLS_VID_CLICK_ELEM)))) && (x == beforeQuickToolbarArgs.positionX || y == beforeQuickToolbarArgs.positionY)) {
|
|
270
273
|
_this.setPosition(showPopupData);
|
|
271
274
|
}
|
|
272
275
|
if (!_this.parent.inlineMode.enable) {
|
|
@@ -170,6 +170,15 @@ var ColorPickerInput = /** @class */ (function () {
|
|
|
170
170
|
this.parent.on(events.destroyColorPicker, this.destroyColorPicker, this);
|
|
171
171
|
this.parent.on(events.modelChanged, this.onPropertyChanged, this);
|
|
172
172
|
this.parent.on(events.bindCssClass, this.setCssClass, this);
|
|
173
|
+
this.parent.on(events.showColorPicker, this.showColorPicker, this);
|
|
174
|
+
};
|
|
175
|
+
ColorPickerInput.prototype.showColorPicker = function (e) {
|
|
176
|
+
if (!isNullOrUndefined(this.fontColorPicker) && (e.toolbarClick === "fontcolor")) {
|
|
177
|
+
this.fontColorDropDown.toggle();
|
|
178
|
+
}
|
|
179
|
+
else if (!isNullOrUndefined(this.backgroundColorPicker) && (e.toolbarClick === "backgroundcolor")) {
|
|
180
|
+
this.backgroundColorDropDown.toggle();
|
|
181
|
+
}
|
|
173
182
|
};
|
|
174
183
|
ColorPickerInput.prototype.onPropertyChanged = function (model) {
|
|
175
184
|
var newProp = model.newProp;
|
|
@@ -243,6 +252,7 @@ var ColorPickerInput = /** @class */ (function () {
|
|
|
243
252
|
this.parent.off(events.destroyColorPicker, this.destroyColorPicker);
|
|
244
253
|
this.parent.off(events.modelChanged, this.onPropertyChanged);
|
|
245
254
|
this.parent.off(events.bindCssClass, this.setCssClass);
|
|
255
|
+
this.parent.off(events.showColorPicker, this.showColorPicker);
|
|
246
256
|
};
|
|
247
257
|
return ColorPickerInput;
|
|
248
258
|
}());
|
|
@@ -64,7 +64,7 @@ var EmojiPicker = /** @class */ (function () {
|
|
|
64
64
|
this.parent.getToolbar().appendChild(this.popDiv);
|
|
65
65
|
}
|
|
66
66
|
else if (this.parent.inlineMode.enable) {
|
|
67
|
-
this.parent.
|
|
67
|
+
this.parent.element.appendChild(this.popDiv);
|
|
68
68
|
}
|
|
69
69
|
EventHandler.add(this.popDiv, 'keydown', this.onKeyDown, this);
|
|
70
70
|
EventHandler.add(this.popDiv, 'keyup', this.searchFilter, this);
|
|
@@ -485,10 +485,10 @@ var EnterKeyAction = /** @class */ (function () {
|
|
|
485
485
|
}
|
|
486
486
|
var previousBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].previousSibling;
|
|
487
487
|
var nextBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].nextSibling;
|
|
488
|
-
if (!isNOU(previousBlockNode) && previousBlockNode.hasAttribute('style') && previousBlockNode.nodeName !== 'TABLE') {
|
|
488
|
+
if (!isNOU(previousBlockNode) && previousBlockNode.nodeName !== '#text' && previousBlockNode.hasAttribute('style') && previousBlockNode.nodeName !== 'TABLE') {
|
|
489
489
|
insertElem.setAttribute('style', previousBlockNode.getAttribute('style'));
|
|
490
490
|
}
|
|
491
|
-
if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.hasAttribute('style') && nextBlockNode.nodeName !== 'TABLE') {
|
|
491
|
+
if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.nodeName !== '#text' && nextBlockNode.hasAttribute('style') && nextBlockNode.nodeName !== 'TABLE') {
|
|
492
492
|
insertElem.setAttribute('style', nextBlockNode.getAttribute('style'));
|
|
493
493
|
}
|
|
494
494
|
return insertElem;
|
|
@@ -425,9 +425,9 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
425
425
|
var liElement = this.getRangeLiNode(currentRange.startContainer);
|
|
426
426
|
if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {
|
|
427
427
|
this.oldRangeElement = liElement.previousElementSibling.lastElementChild.nodeName === 'BR' ?
|
|
428
|
-
liElement.previousElementSibling : liElement.previousElementSibling.
|
|
428
|
+
liElement.previousElementSibling : liElement.previousElementSibling.lastChild;
|
|
429
429
|
if (!isNOU(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR' &&
|
|
430
|
-
isNOU(liElement.lastElementChild.previousSibling)) {
|
|
430
|
+
isNOU(liElement.lastElementChild.previousSibling) && liElement.lastChild.nodeName !== "#text") {
|
|
431
431
|
this.rangeElement = liElement.lastElementChild;
|
|
432
432
|
isLiElement = true;
|
|
433
433
|
}
|
|
@@ -452,7 +452,7 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
452
452
|
? this.oldRangeElement.lastElementChild.lastElementChild :
|
|
453
453
|
this.oldRangeElement.lastElementChild;
|
|
454
454
|
}
|
|
455
|
-
var lastNode = this.oldRangeElement.lastChild;
|
|
455
|
+
var lastNode = this.oldRangeElement.lastChild ? this.oldRangeElement.lastChild : this.oldRangeElement;
|
|
456
456
|
while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&
|
|
457
457
|
lastNode.nodeName !== 'BR') {
|
|
458
458
|
lastNode = lastNode.lastChild;
|
|
@@ -460,12 +460,17 @@ var HtmlEditor = /** @class */ (function () {
|
|
|
460
460
|
this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(),
|
|
461
461
|
// eslint-disable-next-line
|
|
462
462
|
lastNode, lastNode.textContent.length);
|
|
463
|
-
if (this.oldRangeElement.querySelectorAll('BR').length === 1) {
|
|
463
|
+
if (this.oldRangeElement.nodeName !== '#text' && this.oldRangeElement.querySelectorAll('BR').length === 1) {
|
|
464
464
|
detach(this.oldRangeElement.querySelector('BR'));
|
|
465
465
|
}
|
|
466
466
|
if (!isNOU(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {
|
|
467
467
|
while (this.rangeElement.firstChild) {
|
|
468
|
-
this.oldRangeElement.
|
|
468
|
+
if (this.oldRangeElement.nodeName === '#text') {
|
|
469
|
+
this.oldRangeElement.parentElement.appendChild(this.rangeElement.childNodes[0]);
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);
|
|
473
|
+
}
|
|
469
474
|
}
|
|
470
475
|
// eslint-disable-next-line
|
|
471
476
|
!isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);
|
|
@@ -149,7 +149,7 @@ var QuickToolbar = /** @class */ (function () {
|
|
|
149
149
|
|
|
150
150
|
*/
|
|
151
151
|
QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {
|
|
152
|
-
if (isNOU(this.parent) || this.parent.readonly || target.tagName.toLowerCase() === 'img') {
|
|
152
|
+
if (isNOU(this.parent) || this.parent.readonly || target.tagName.toLowerCase() === 'img' || this.inlineQTBar.element.querySelector('.e-rte-color-content')) {
|
|
153
153
|
return;
|
|
154
154
|
}
|
|
155
155
|
this.inlineQTBar.showPopup(x, y, target);
|
|
@@ -56,6 +56,9 @@ var Toolbar = /** @class */ (function () {
|
|
|
56
56
|
if (e.target.classList.contains('e-hor-nav')) {
|
|
57
57
|
this.adjustContentHeight(e.target, true);
|
|
58
58
|
}
|
|
59
|
+
if (!isNullOrUndefined(e.target) && (e.target.classList.contains("e-rte-fontcolor-dropdown") || e.target.classList.contains("e-rte-backgroundcolor-dropdown"))) {
|
|
60
|
+
this.parent.notify(events.showColorPicker, { toolbarClick: e.target.classList.contains("e-rte-fontcolor-dropdown") ? "fontcolor" : "backgroundcolor" });
|
|
61
|
+
}
|
|
59
62
|
}
|
|
60
63
|
};
|
|
61
64
|
Toolbar.prototype.createToolbarElement = function () {
|
|
@@ -759,6 +759,11 @@ export var documentClickClosedBy = 'documentClickClosedBy';
|
|
|
759
759
|
/**
|
|
760
760
|
* @hidden
|
|
761
761
|
|
|
762
|
+
*/
|
|
763
|
+
export var showColorPicker = 'showColorPicker';
|
|
764
|
+
/**
|
|
765
|
+
* @hidden
|
|
766
|
+
|
|
762
767
|
*/
|
|
763
768
|
export var blockEmptyNodes = "address:empty, article:empty, aside:empty, blockquote:empty,\n details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,\n h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,\n noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty";
|
|
764
769
|
/**
|
|
@@ -911,11 +911,14 @@ var RichTextEditor = /** @class */ (function (_super) {
|
|
|
911
911
|
clientX: touch.clientX, clientY: touch.clientY }
|
|
912
912
|
});
|
|
913
913
|
if (this.inputElement && ((this.editorMode === 'HTML' && this.inputElement.textContent.length !== 0) ||
|
|
914
|
-
(this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) ||
|
|
915
|
-
|
|
916
|
-
(e.target.
|
|
917
|
-
e.target.
|
|
918
|
-
e.target.
|
|
914
|
+
(this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) ||
|
|
915
|
+
(e.target && !isNOU(closest(e.target, 'table'))) ||
|
|
916
|
+
(e.target && (e.target.nodeName === 'VIDEO' ||
|
|
917
|
+
e.target.querySelectorAll('.' + classes.CLS_VIDEOWRAP).length > 0) ||
|
|
918
|
+
(e.target && e.target.nodeName !== 'BR' &&
|
|
919
|
+
(e.target.classList.contains(classes.CLS_AUDIOWRAP) ||
|
|
920
|
+
e.target.classList.contains(classes.CLS_CLICKELEM) ||
|
|
921
|
+
e.target.classList.contains(classes.CLS_VID_CLICK_ELEM))))) {
|
|
919
922
|
this.notify(events.toolbarRefresh, { args: e });
|
|
920
923
|
}
|
|
921
924
|
this.triggerEditArea(e);
|
|
@@ -1799,6 +1802,13 @@ var RichTextEditor = /** @class */ (function (_super) {
|
|
|
1799
1802
|
var imgPadding = 12;
|
|
1800
1803
|
var imgResizeBorder = 2;
|
|
1801
1804
|
var editEle = this.contentModule.getEditPanel();
|
|
1805
|
+
if (this.editorMode === "HTML" && !isNOU(this.formatter.editorManager.nodeSelection) && !isNOU(this.formatter.editorManager.nodeSelection.range)) {
|
|
1806
|
+
var currentRange = this.formatter.editorManager.nodeSelection.range;
|
|
1807
|
+
if (currentRange.startContainer.nodeType !== 3 && currentRange.startContainer.closest &&
|
|
1808
|
+
!isNOU(currentRange.startContainer.closest('TD'))) {
|
|
1809
|
+
editEle = currentRange.startContainer;
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1802
1812
|
var eleStyle = window.getComputedStyle(editEle);
|
|
1803
1813
|
var editEleMaxWidth = editEle.offsetWidth - (imgPadding + imgResizeBorder +
|
|
1804
1814
|
parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +
|
|
@@ -2242,6 +2252,12 @@ var RichTextEditor = /** @class */ (function (_super) {
|
|
|
2242
2252
|
var trg = e.relatedTarget;
|
|
2243
2253
|
if (trg) {
|
|
2244
2254
|
var rteElement = closest(trg, '.' + classes.CLS_RTE);
|
|
2255
|
+
if (!rteElement && this.iframeSettings.enable) {
|
|
2256
|
+
var iframeElement = this.element.querySelector('#' + this.getID() + '_rte-view');
|
|
2257
|
+
if (iframeElement && iframeElement.contentWindow.document.body.contains(trg)) {
|
|
2258
|
+
rteElement = closest(iframeElement, '.' + classes.CLS_RTE);
|
|
2259
|
+
}
|
|
2260
|
+
}
|
|
2245
2261
|
if (rteElement && rteElement === this.element) {
|
|
2246
2262
|
this.isBlur = false;
|
|
2247
2263
|
if (trg === this.getToolbarElement()) {
|
|
@@ -94,7 +94,7 @@ export var defaultLocale = {
|
|
|
94
94
|
'browse': 'Browse',
|
|
95
95
|
'imageUrl': 'http://example.com/image.png',
|
|
96
96
|
'audioUrl': 'http://example.com/audio.mp3',
|
|
97
|
-
'videoUrl': 'http://example.com/video.
|
|
97
|
+
'videoUrl': 'http://example.com/video.mp4',
|
|
98
98
|
'webUrl': 'Web URL',
|
|
99
99
|
'embedUrl': 'Embed Code',
|
|
100
100
|
'imageCaption': 'Caption',
|