@syncfusion/ej2-richtexteditor 22.2.12 → 23.1.36
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 +39 -1
- 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 +365 -263
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +365 -259
- 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 +13 -13
- package/src/editor-manager/plugin/dom-node.js +6 -5
- package/src/editor-manager/plugin/ms-word-clean-up.d.ts +2 -0
- package/src/editor-manager/plugin/ms-word-clean-up.js +68 -11
- package/src/editor-manager/plugin/table.js +1 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.d.ts +2 -1
- package/src/rich-text-editor/actions/base-quick-toolbar.js +10 -6
- package/src/rich-text-editor/actions/emoji-picker.js +29 -14
- package/src/rich-text-editor/actions/enter-key.js +6 -2
- package/src/rich-text-editor/actions/format-painter.js +12 -6
- package/src/rich-text-editor/actions/html-editor.js +14 -1
- package/src/rich-text-editor/actions/paste-clean-up.d.ts +2 -0
- package/src/rich-text-editor/actions/paste-clean-up.js +63 -32
- package/src/rich-text-editor/actions/quick-toolbar.js +32 -2
- package/src/rich-text-editor/actions/toolbar.js +1 -1
- package/src/rich-text-editor/actions/xhtml-validation.js +1 -1
- package/src/rich-text-editor/base/classes.d.ts +5 -0
- package/src/rich-text-editor/base/classes.js +5 -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/enum.d.ts +4 -0
- package/src/rich-text-editor/base/interface.d.ts +10 -22
- package/src/rich-text-editor/base/rich-text-editor-model.d.ts +1 -39
- package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -39
- package/src/rich-text-editor/base/rich-text-editor.js +2 -8
- package/src/rich-text-editor/base/util.js +5 -1
- package/src/rich-text-editor/models/items.js +34 -22
- package/src/rich-text-editor/models/toolbar-settings-model.d.ts +4 -5
- package/src/rich-text-editor/models/toolbar-settings.d.ts +4 -5
- package/src/rich-text-editor/models/toolbar-settings.js +1 -1
- package/src/rich-text-editor/renderer/audio-module.js +5 -33
- package/src/rich-text-editor/renderer/dialog-renderer.js +1 -1
- package/src/rich-text-editor/renderer/image-module.js +8 -65
- package/src/rich-text-editor/renderer/link-module.js +3 -0
- package/src/rich-text-editor/renderer/table-module.js +18 -7
- package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +5 -1
- package/src/rich-text-editor/renderer/toolbar-renderer.js +28 -2
- package/src/rich-text-editor/renderer/video-module.js +5 -33
- package/src/rich-text-editor/renderer/view-source.js +1 -0
- package/styles/material-dark.css +0 -1
- package/styles/material.css +0 -1
- package/styles/material3-dark.css +0 -1
- package/styles/material3-dark.scss +1 -1
- package/styles/material3.css +0 -1
- package/styles/material3.scss +1 -1
- package/styles/rich-text-editor/bootstrap-dark.scss +1 -1
- package/styles/rich-text-editor/bootstrap.scss +1 -1
- package/styles/rich-text-editor/bootstrap4.scss +1 -1
- package/styles/rich-text-editor/bootstrap5-dark.scss +1 -1
- package/styles/rich-text-editor/bootstrap5.scss +1 -1
- package/styles/rich-text-editor/fabric-dark.scss +1 -1
- package/styles/rich-text-editor/fabric.scss +1 -1
- package/styles/rich-text-editor/fluent-dark.scss +1 -1
- package/styles/rich-text-editor/fluent.scss +1 -1
- package/styles/rich-text-editor/highcontrast-light.scss +1 -1
- package/styles/rich-text-editor/highcontrast.scss +1 -1
- package/styles/rich-text-editor/material-dark.css +0 -1
- package/styles/rich-text-editor/material-dark.scss +1 -1
- package/styles/rich-text-editor/material.css +0 -1
- package/styles/rich-text-editor/material.scss +1 -1
- package/styles/rich-text-editor/material3-dark.css +0 -1
- package/styles/rich-text-editor/material3-dark.scss +1 -1
- package/styles/rich-text-editor/material3.css +0 -1
- package/styles/rich-text-editor/material3.scss +1 -1
- package/styles/rich-text-editor/tailwind-dark.css +0 -1
- package/styles/rich-text-editor/tailwind-dark.scss +1 -1
- package/styles/rich-text-editor/tailwind.css +0 -1
- package/styles/rich-text-editor/tailwind.scss +1 -1
- package/styles/tailwind-dark.css +0 -1
- package/styles/tailwind.css +0 -1
|
@@ -474,14 +474,17 @@ var Table = /** @class */ (function () {
|
|
|
474
474
|
var pageX = void 0;
|
|
475
475
|
var pageY = void 0;
|
|
476
476
|
if (Browser.isDevice && e.args.touches) {
|
|
477
|
-
pageX =
|
|
478
|
-
|
|
477
|
+
pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + this.parent.element.getBoundingClientRect().left +
|
|
478
|
+
e.args.changedTouches[0].clientX : e.args.changedTouches[0].pageX;
|
|
479
|
+
pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + this.parent.element.getBoundingClientRect().top +
|
|
480
|
+
(!this.parent.inlineMode.enable ? this.parent.toolbarModule.getToolbarHeight() : 0)
|
|
481
|
+
+ e.args.changedTouches[0].clientY : e.args.changedTouches[0].pageY;
|
|
479
482
|
}
|
|
480
483
|
else {
|
|
481
484
|
pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset
|
|
482
485
|
+ this.parent.element.getBoundingClientRect().left + args.clientX : args.pageX;
|
|
483
|
-
pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +
|
|
484
|
-
this.parent.
|
|
486
|
+
pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + this.parent.element.getBoundingClientRect().top +
|
|
487
|
+
this.parent.toolbarModule.getToolbarHeight() + args.clientY : args.pageY;
|
|
485
488
|
}
|
|
486
489
|
this.quickToolObj.tableQTBar.showPopup(pageX, pageY, target);
|
|
487
490
|
this.parent.formatter.editorManager.nodeSelection.restore();
|
|
@@ -882,7 +885,7 @@ var Table = /** @class */ (function () {
|
|
|
882
885
|
var width = parseFloat(_this.columnEle.offsetWidth.toString());
|
|
883
886
|
var cellRow = _this.curTable.rows[0].cells[0].nodeName === 'TH' ? 1 : 0;
|
|
884
887
|
var currentTableWidth = void 0;
|
|
885
|
-
if (_this.curTable.style.width
|
|
888
|
+
if (_this.curTable.style.width !== '') {
|
|
886
889
|
currentTableWidth = parseFloat(_this.curTable.style.width.split('%')[0]);
|
|
887
890
|
}
|
|
888
891
|
else {
|
|
@@ -945,6 +948,7 @@ var Table = /** @class */ (function () {
|
|
|
945
948
|
var isMergedEleResize = false;
|
|
946
949
|
var leftTableCell = void 0;
|
|
947
950
|
var rightTableCell = void 0;
|
|
951
|
+
/* eslint-disable */
|
|
948
952
|
for (var j = 0; j < currentRow.cells.length; j++) {
|
|
949
953
|
if (currentRow.cells[j].hasAttribute('rowspan') && j <= _this.colIndex) {
|
|
950
954
|
isRowCellsMerged = true;
|
|
@@ -1003,6 +1007,7 @@ var Table = /** @class */ (function () {
|
|
|
1003
1007
|
_this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
|
|
1004
1008
|
}
|
|
1005
1009
|
}
|
|
1010
|
+
/* eslint-enable */
|
|
1006
1011
|
}
|
|
1007
1012
|
}
|
|
1008
1013
|
}
|
|
@@ -1138,7 +1143,8 @@ var Table = /** @class */ (function () {
|
|
|
1138
1143
|
};
|
|
1139
1144
|
Table.prototype.renderDlgContent = function (args) {
|
|
1140
1145
|
var _this = this;
|
|
1141
|
-
|
|
1146
|
+
var argsTarget = args.args.originalEvent.target;
|
|
1147
|
+
if (Browser.isDevice || this.parent.inlineMode.enable || !isNullOrUndefined(closest(argsTarget, '.e-rte-text-popup'))) {
|
|
1142
1148
|
this.insertTableDialog(args);
|
|
1143
1149
|
return;
|
|
1144
1150
|
}
|
|
@@ -1394,6 +1400,10 @@ var Table = /** @class */ (function () {
|
|
|
1394
1400
|
if (this.quickToolObj && this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {
|
|
1395
1401
|
this.quickToolObj.inlineQTBar.hidePopup();
|
|
1396
1402
|
}
|
|
1403
|
+
if (this.quickToolObj && this.quickToolObj.textQTBar &&
|
|
1404
|
+
this.parent.element.ownerDocument.body.contains(this.quickToolObj.textQTBar.element)) {
|
|
1405
|
+
this.quickToolObj.textQTBar.hidePopup();
|
|
1406
|
+
}
|
|
1397
1407
|
};
|
|
1398
1408
|
Table.prototype.customTable = function (args, e) {
|
|
1399
1409
|
var proxy = (this.self) ? this.self : this;
|
|
@@ -1401,7 +1411,8 @@ var Table = /** @class */ (function () {
|
|
|
1401
1411
|
var argument = ((Browser.isDevice || (!isNullOrUndefined(args.args)
|
|
1402
1412
|
&& !isNullOrUndefined(args.args.originalEvent) &&
|
|
1403
1413
|
args.args.originalEvent.action === 'insert-table')
|
|
1404
|
-
|| proxy.parent.inlineMode.enable) ? args :
|
|
1414
|
+
|| proxy.parent.inlineMode.enable || !isNullOrUndefined(proxy.parent.quickToolbarSettings.text)) ? args :
|
|
1415
|
+
this);
|
|
1405
1416
|
proxy.tableInsert(proxy.rowTextBox.value, proxy.columnTextBox.value, e, argument);
|
|
1406
1417
|
}
|
|
1407
1418
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DropDownButton } from '@syncfusion/ej2-splitbuttons';
|
|
2
2
|
import { IRenderer, IRichTextEditor, IToolbarOptions, IDropDownModel, IColorPickerModel } from '../base/interface';
|
|
3
3
|
import { ColorPicker } from '@syncfusion/ej2-inputs';
|
|
4
|
+
import { ServiceLocator } from '../services/service-locator';
|
|
4
5
|
/**
|
|
5
6
|
* `Toolbar renderer` module is used to render toolbar in RichTextEditor.
|
|
6
7
|
*
|
|
@@ -21,12 +22,14 @@ export declare class ToolbarRenderer implements IRenderer {
|
|
|
21
22
|
private currentDropdown;
|
|
22
23
|
private popupOverlay;
|
|
23
24
|
private tooltip;
|
|
25
|
+
private l10n;
|
|
24
26
|
/**
|
|
25
27
|
* Constructor for toolbar renderer module
|
|
26
28
|
*
|
|
27
29
|
* @param {IRichTextEditor} parent - specifies the parent element.
|
|
30
|
+
* @param {ServiceLocator} serviceLocator - specifies the serviceLocator
|
|
28
31
|
*/
|
|
29
|
-
constructor(parent?: IRichTextEditor);
|
|
32
|
+
constructor(parent?: IRichTextEditor, serviceLocator?: ServiceLocator);
|
|
30
33
|
private wireEvent;
|
|
31
34
|
private destroyTooltip;
|
|
32
35
|
private unWireEvent;
|
|
@@ -35,6 +38,7 @@ export declare class ToolbarRenderer implements IRenderer {
|
|
|
35
38
|
private toolbarClicked;
|
|
36
39
|
private dropDownSelected;
|
|
37
40
|
private beforeDropDownItemRender;
|
|
41
|
+
private tooltipBeforeRender;
|
|
38
42
|
private dropDownOpen;
|
|
39
43
|
private dropDownClose;
|
|
40
44
|
private removePopupContainer;
|
|
@@ -19,9 +19,13 @@ var ToolbarRenderer = /** @class */ (function () {
|
|
|
19
19
|
* Constructor for toolbar renderer module
|
|
20
20
|
*
|
|
21
21
|
* @param {IRichTextEditor} parent - specifies the parent element.
|
|
22
|
+
* @param {ServiceLocator} serviceLocator - specifies the serviceLocator
|
|
22
23
|
*/
|
|
23
|
-
function ToolbarRenderer(parent) {
|
|
24
|
+
function ToolbarRenderer(parent, serviceLocator) {
|
|
24
25
|
this.parent = parent;
|
|
26
|
+
if (serviceLocator) {
|
|
27
|
+
this.l10n = serviceLocator.getService('rteLocale');
|
|
28
|
+
}
|
|
25
29
|
this.wireEvent();
|
|
26
30
|
}
|
|
27
31
|
ToolbarRenderer.prototype.wireEvent = function () {
|
|
@@ -29,7 +33,11 @@ var ToolbarRenderer = /** @class */ (function () {
|
|
|
29
33
|
this.parent.on(events.maximizeMinimizeClick, this.destroyTooltip, this);
|
|
30
34
|
};
|
|
31
35
|
ToolbarRenderer.prototype.destroyTooltip = function () {
|
|
32
|
-
|
|
36
|
+
if (!isNullOrUndefined(document.querySelector('.e-tooltip-wrap')) && !isNullOrUndefined(document.querySelector(' [data-tooltip-id]'))) {
|
|
37
|
+
var tooltipTargetEle = document.querySelector('#' + (this.parent.element).id + ' [data-tooltip-id]');
|
|
38
|
+
var event_1 = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });
|
|
39
|
+
tooltipTargetEle.dispatchEvent(event_1);
|
|
40
|
+
}
|
|
33
41
|
};
|
|
34
42
|
ToolbarRenderer.prototype.unWireEvent = function () {
|
|
35
43
|
this.parent.off(events.destroy, this.unWireEvent);
|
|
@@ -65,6 +73,22 @@ var ToolbarRenderer = /** @class */ (function () {
|
|
|
65
73
|
}
|
|
66
74
|
this.parent.notify(events.beforeDropDownItemRender, args);
|
|
67
75
|
};
|
|
76
|
+
ToolbarRenderer.prototype.tooltipBeforeRender = function (args) {
|
|
77
|
+
if (!isNOU(args.target.getAttribute('title'))) {
|
|
78
|
+
var tooltipTarget = args.target.getAttribute('title');
|
|
79
|
+
var tooltipText = void 0;
|
|
80
|
+
switch (tooltipTarget) {
|
|
81
|
+
case 'Minimize':
|
|
82
|
+
tooltipText = this.l10n.getConstant('minimize');
|
|
83
|
+
args.target.setAttribute('title', tooltipText + ' (Esc)');
|
|
84
|
+
break;
|
|
85
|
+
case 'Maximize':
|
|
86
|
+
tooltipText = this.l10n.getConstant('maximize');
|
|
87
|
+
args.target.setAttribute('title', tooltipText + ' (Ctrl+Shift+F)');
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
68
92
|
ToolbarRenderer.prototype.dropDownOpen = function (args) {
|
|
69
93
|
if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&
|
|
70
94
|
(!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {
|
|
@@ -130,6 +154,8 @@ var ToolbarRenderer = /** @class */ (function () {
|
|
|
130
154
|
target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',
|
|
131
155
|
showTipPointer: true,
|
|
132
156
|
openDelay: 400,
|
|
157
|
+
opensOn: 'Hover',
|
|
158
|
+
beforeRender: this.tooltipBeforeRender.bind(this),
|
|
133
159
|
cssClass: this.parent.cssClass,
|
|
134
160
|
windowCollision: true,
|
|
135
161
|
position: 'BottomCenter'
|
|
@@ -1116,6 +1116,9 @@ var Video = /** @class */ (function () {
|
|
|
1116
1116
|
if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {
|
|
1117
1117
|
this.quickToolObj.inlineQTBar.hidePopup();
|
|
1118
1118
|
}
|
|
1119
|
+
if (this.quickToolObj.textQTBar && this.parent.element.ownerDocument.body.contains(this.quickToolObj.textQTBar.element)) {
|
|
1120
|
+
this.quickToolObj.textQTBar.hidePopup();
|
|
1121
|
+
}
|
|
1119
1122
|
}
|
|
1120
1123
|
};
|
|
1121
1124
|
// eslint-disable-next-line
|
|
@@ -1227,10 +1230,8 @@ var Video = /** @class */ (function () {
|
|
|
1227
1230
|
});
|
|
1228
1231
|
uploadParentEle.appendChild(uploadEle);
|
|
1229
1232
|
var fileName;
|
|
1230
|
-
var rawFile;
|
|
1231
1233
|
var selectArgs;
|
|
1232
1234
|
var filesData;
|
|
1233
|
-
var beforeUploadArgs;
|
|
1234
1235
|
this.uploadObj = new Uploader({
|
|
1235
1236
|
asyncSettings: { saveUrl: this.parent.insertVideoSettings.saveUrl, removeUrl: this.parent.insertVideoSettings.removeUrl },
|
|
1236
1237
|
dropArea: span, multiple: false, enableRtl: this.parent.enableRtl,
|
|
@@ -1238,13 +1239,8 @@ var Video = /** @class */ (function () {
|
|
|
1238
1239
|
selected: function (e) {
|
|
1239
1240
|
proxy.isVideoUploaded = true;
|
|
1240
1241
|
selectArgs = e;
|
|
1242
|
+
// eslint-disable-next-line
|
|
1241
1243
|
filesData = e.filesData;
|
|
1242
|
-
if (_this.parent.isServerRendered) {
|
|
1243
|
-
selectArgs = JSON.parse(JSON.stringify(e));
|
|
1244
|
-
e.cancel = true;
|
|
1245
|
-
rawFile = e.filesData;
|
|
1246
|
-
selectArgs.filesData = rawFile;
|
|
1247
|
-
}
|
|
1248
1244
|
_this.parent.trigger(events.fileSelected, selectArgs, function (selectArgs) {
|
|
1249
1245
|
if (!selectArgs.cancel) {
|
|
1250
1246
|
_this.checkExtension(selectArgs.filesData[0]);
|
|
@@ -1268,35 +1264,11 @@ var Video = /** @class */ (function () {
|
|
|
1268
1264
|
});
|
|
1269
1265
|
reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);
|
|
1270
1266
|
}
|
|
1271
|
-
if (_this.parent.isServerRendered) {
|
|
1272
|
-
/* eslint-disable */
|
|
1273
|
-
_this.uploadObj._internalRenderSelect(selectArgs, rawFile);
|
|
1274
|
-
/* eslint-enable */
|
|
1275
|
-
}
|
|
1276
1267
|
}
|
|
1277
1268
|
});
|
|
1278
1269
|
},
|
|
1279
1270
|
beforeUpload: function (args) {
|
|
1280
|
-
|
|
1281
|
-
beforeUploadArgs = JSON.parse(JSON.stringify(args));
|
|
1282
|
-
beforeUploadArgs.filesData = filesData;
|
|
1283
|
-
args.cancel = true;
|
|
1284
|
-
_this.parent.trigger(events.fileUploading, beforeUploadArgs, function (beforeUploadArgs) {
|
|
1285
|
-
if (beforeUploadArgs.cancel) {
|
|
1286
|
-
return;
|
|
1287
|
-
}
|
|
1288
|
-
/* eslint-disable */
|
|
1289
|
-
_this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?
|
|
1290
|
-
beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;
|
|
1291
|
-
_this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?
|
|
1292
|
-
beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;
|
|
1293
|
-
_this.uploadObj.uploadFiles(rawFile, null);
|
|
1294
|
-
/* eslint-enable */
|
|
1295
|
-
});
|
|
1296
|
-
}
|
|
1297
|
-
else {
|
|
1298
|
-
_this.parent.trigger(events.beforeFileUpload, args);
|
|
1299
|
-
}
|
|
1271
|
+
_this.parent.trigger(events.beforeFileUpload, args);
|
|
1300
1272
|
},
|
|
1301
1273
|
uploading: function (e) {
|
|
1302
1274
|
if (!_this.parent.isServerRendered) {
|
|
@@ -107,6 +107,7 @@ var ViewSource = /** @class */ (function () {
|
|
|
107
107
|
|
|
108
108
|
*/
|
|
109
109
|
ViewSource.prototype.sourceCode = function (args) {
|
|
110
|
+
this.parent.notify(events.hidePopup, {});
|
|
110
111
|
this.parent.isBlur = false;
|
|
111
112
|
this.parent.trigger(events.actionBegin, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });
|
|
112
113
|
var tbItems = selectAll('.' + CLS_TB_ITEM, this.parent.element);
|
package/styles/material-dark.css
CHANGED
package/styles/material.css
CHANGED
package/styles/material3.css
CHANGED
package/styles/material3.scss
CHANGED
package/styles/tailwind-dark.css
CHANGED
package/styles/tailwind.css
CHANGED