@syncfusion/ej2-richtexteditor 23.2.7 → 24.1.41

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 (107) hide show
  1. package/CHANGELOG.md +27 -1
  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 +571 -309
  6. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-richtexteditor.es5.js +570 -308
  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 +13 -13
  13. package/src/common/config.js +1 -1
  14. package/src/editor-manager/plugin/audio.js +13 -3
  15. package/src/editor-manager/plugin/dom-node.js +1 -14
  16. package/src/editor-manager/plugin/image.js +30 -3
  17. package/src/editor-manager/plugin/inserthtml.js +5 -2
  18. package/src/editor-manager/plugin/ms-word-clean-up.js +4 -1
  19. package/src/editor-manager/plugin/nodecutter.js +1 -1
  20. package/src/editor-manager/plugin/selection-commands.js +39 -0
  21. package/src/rich-text-editor/actions/base-quick-toolbar.js +18 -4
  22. package/src/rich-text-editor/actions/color-picker.js +3 -3
  23. package/src/rich-text-editor/actions/dropdown-buttons.js +4 -2
  24. package/src/rich-text-editor/actions/emoji-picker.js +12 -3
  25. package/src/rich-text-editor/actions/enter-key.js +2 -1
  26. package/src/rich-text-editor/actions/file-manager.js +1 -1
  27. package/src/rich-text-editor/actions/format-painter.js +1 -1
  28. package/src/rich-text-editor/actions/full-screen.js +2 -2
  29. package/src/rich-text-editor/actions/html-editor.d.ts +2 -0
  30. package/src/rich-text-editor/actions/html-editor.js +36 -5
  31. package/src/rich-text-editor/actions/paste-clean-up.d.ts +2 -0
  32. package/src/rich-text-editor/actions/paste-clean-up.js +72 -19
  33. package/src/rich-text-editor/actions/quick-toolbar.js +24 -5
  34. package/src/rich-text-editor/actions/toolbar.d.ts +1 -0
  35. package/src/rich-text-editor/actions/toolbar.js +18 -10
  36. package/src/rich-text-editor/base/classes.d.ts +5 -0
  37. package/src/rich-text-editor/base/classes.js +5 -0
  38. package/src/rich-text-editor/base/constant.d.ts +6 -1
  39. package/src/rich-text-editor/base/constant.js +6 -1
  40. package/src/rich-text-editor/base/interface.d.ts +10 -0
  41. package/src/rich-text-editor/base/rich-text-editor-model.d.ts +1 -1
  42. package/src/rich-text-editor/base/rich-text-editor.d.ts +9 -0
  43. package/src/rich-text-editor/base/rich-text-editor.js +80 -17
  44. package/src/rich-text-editor/base/util.js +11 -2
  45. package/src/rich-text-editor/formatter/formatter.js +1 -1
  46. package/src/rich-text-editor/models/default-locale.js +2 -0
  47. package/src/rich-text-editor/models/items.js +1 -1
  48. package/src/rich-text-editor/renderer/dialog-renderer.js +10 -1
  49. package/src/rich-text-editor/renderer/image-module.js +68 -59
  50. package/src/rich-text-editor/renderer/link-module.js +43 -23
  51. package/src/rich-text-editor/renderer/table-module.d.ts +2 -0
  52. package/src/rich-text-editor/renderer/table-module.js +43 -30
  53. package/src/rich-text-editor/renderer/toolbar-renderer.d.ts +0 -6
  54. package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -93
  55. package/src/rich-text-editor/renderer/view-source.js +3 -1
  56. package/styles/bootstrap-dark.css +194 -52
  57. package/styles/bootstrap.css +197 -53
  58. package/styles/bootstrap4.css +194 -52
  59. package/styles/bootstrap5-dark.css +195 -53
  60. package/styles/bootstrap5.css +195 -53
  61. package/styles/fabric-dark.css +194 -52
  62. package/styles/fabric.css +194 -52
  63. package/styles/fluent-dark.css +197 -53
  64. package/styles/fluent.css +197 -53
  65. package/styles/highcontrast-light.css +194 -52
  66. package/styles/highcontrast.css +194 -52
  67. package/styles/material-dark.css +196 -53
  68. package/styles/material.css +196 -53
  69. package/styles/material3-dark.css +194 -52
  70. package/styles/material3.css +194 -52
  71. package/styles/rich-text-editor/_bootstrap5-definition.scss +1 -1
  72. package/styles/rich-text-editor/_fluent-definition.scss +1 -1
  73. package/styles/rich-text-editor/_layout.scss +78 -3
  74. package/styles/rich-text-editor/_theme.scss +1 -1
  75. package/styles/rich-text-editor/bootstrap-dark.css +194 -52
  76. package/styles/rich-text-editor/bootstrap.css +197 -53
  77. package/styles/rich-text-editor/bootstrap4.css +194 -52
  78. package/styles/rich-text-editor/bootstrap5-dark.css +195 -53
  79. package/styles/rich-text-editor/bootstrap5.css +195 -53
  80. package/styles/rich-text-editor/fabric-dark.css +194 -52
  81. package/styles/rich-text-editor/fabric.css +194 -52
  82. package/styles/rich-text-editor/fluent-dark.css +197 -53
  83. package/styles/rich-text-editor/fluent.css +197 -53
  84. package/styles/rich-text-editor/highcontrast-light.css +194 -52
  85. package/styles/rich-text-editor/highcontrast.css +194 -52
  86. package/styles/rich-text-editor/icons/_bootstrap-dark.scss +3 -3
  87. package/styles/rich-text-editor/icons/_bootstrap.scss +3 -3
  88. package/styles/rich-text-editor/icons/_bootstrap4.scss +3 -3
  89. package/styles/rich-text-editor/icons/_bootstrap5.scss +3 -3
  90. package/styles/rich-text-editor/icons/_fabric-dark.scss +3 -3
  91. package/styles/rich-text-editor/icons/_fabric.scss +3 -3
  92. package/styles/rich-text-editor/icons/_fluent.scss +3 -3
  93. package/styles/rich-text-editor/icons/_fusionnew.scss +3 -3
  94. package/styles/rich-text-editor/icons/_highcontrast-light.scss +3 -3
  95. package/styles/rich-text-editor/icons/_highcontrast.scss +3 -3
  96. package/styles/rich-text-editor/icons/_material-dark.scss +3 -3
  97. package/styles/rich-text-editor/icons/_material.scss +3 -3
  98. package/styles/rich-text-editor/icons/_material3.scss +3 -3
  99. package/styles/rich-text-editor/icons/_tailwind.scss +3 -3
  100. package/styles/rich-text-editor/material-dark.css +196 -53
  101. package/styles/rich-text-editor/material.css +196 -53
  102. package/styles/rich-text-editor/material3-dark.css +194 -52
  103. package/styles/rich-text-editor/material3.css +194 -52
  104. package/styles/rich-text-editor/tailwind-dark.css +194 -52
  105. package/styles/rich-text-editor/tailwind.css +194 -52
  106. package/styles/tailwind-dark.css +194 -52
  107. package/styles/tailwind.css +194 -52
@@ -35,6 +35,7 @@ var Table = /** @class */ (function () {
35
35
  this.parent.on(events.showTableDialog, this.showDialog, this);
36
36
  this.parent.on(events.closeTableDialog, this.closeDialog, this);
37
37
  this.parent.on(events.docClick, this.docClick, this);
38
+ this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);
38
39
  this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);
39
40
  this.parent.on(events.clearDialogObj, this.clearDialogObj, this);
40
41
  this.parent.on(events.tableToolbarAction, this.onToolbarAction, this);
@@ -55,6 +56,7 @@ var Table = /** @class */ (function () {
55
56
  this.parent.off(events.initialEnd, this.afterRender);
56
57
  this.parent.off(events.dynamicModule, this.afterRender);
57
58
  this.parent.off(events.docClick, this.docClick);
59
+ this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);
58
60
  this.parent.off(events.showTableDialog, this.showDialog);
59
61
  this.parent.off(events.closeTableDialog, this.closeDialog);
60
62
  this.parent.off(events.editAreaClick, this.editAreaClickHandler);
@@ -63,8 +65,8 @@ var Table = /** @class */ (function () {
63
65
  this.parent.off(events.dropDownSelect, this.dropdownSelect);
64
66
  this.parent.off(events.mouseDown, this.cellSelect);
65
67
  this.parent.off(events.tableColorPickerChanged, this.setBGColor);
66
- this.parent.off(events.keyUp, this.keyUp);
67
68
  this.parent.off(events.keyDown, this.keyDown);
69
+ this.parent.off(events.keyUp, this.keyUp);
68
70
  this.parent.off(events.mouseUp, this.selectionTable);
69
71
  this.parent.off(events.tableModulekeyUp, this.tableModulekeyUp);
70
72
  this.parent.off(events.bindCssClass, this.setCssClass);
@@ -260,11 +262,12 @@ var Table = /** @class */ (function () {
260
262
  name: !isInternal ? 'showDialog' : null
261
263
  };
262
264
  this.insertTableDialog({ self: this, args: args, selection: selection });
265
+ this.parent.formatter.editorManager.nodeSelection.restore();
263
266
  }
264
267
  };
265
268
  Table.prototype.showDialog = function () {
266
269
  this.openDialog(false);
267
- this.setCssClass({ cssClass: this.parent.cssClass });
270
+ this.setCssClass({ cssClass: this.parent.getCssClass() });
268
271
  };
269
272
  Table.prototype.closeDialog = function () {
270
273
  if (this.editdlgObj) {
@@ -454,6 +457,10 @@ var Table = /** @class */ (function () {
454
457
  Table.prototype.tableHeader = function (selection, e) {
455
458
  this.parent.formatter.process(this.parent, e, e.originalEvent, { selection: selection, subCommand: e.item.subCommand });
456
459
  };
460
+ Table.prototype.getAnchorNode = function (element) {
461
+ var selectParent = closest(element, 'a');
462
+ return (selectParent ? selectParent : element);
463
+ };
457
464
  Table.prototype.editAreaClickHandler = function (e) {
458
465
  if (this.parent.readonly || !isNOU(closest(e.args.target, '.e-img-caption'))) {
459
466
  return;
@@ -475,7 +482,8 @@ var Table = /** @class */ (function () {
475
482
  var closestTable = closest(target, 'table');
476
483
  var startNode = this.parent.getRange().startContainer.parentElement;
477
484
  var endNode = this.parent.getRange().endContainer.parentElement;
478
- if (target && target.nodeName !== 'A' && target.nodeName !== 'IMG' && target.nodeName !== 'VIDEO' && !target.classList.contains(classes.CLS_CLICKELEM) &&
485
+ var isAnchorEle = this.getAnchorNode(target);
486
+ if (target && target.nodeName !== 'A' && isAnchorEle.nodeName !== 'A' && target.nodeName !== 'IMG' && target.nodeName !== 'VIDEO' && !target.classList.contains(classes.CLS_CLICKELEM) &&
479
487
  target.nodeName !== 'AUDIO' && startNode === endNode && (target.nodeName === 'TD' || target.nodeName === 'TH' ||
480
488
  target.nodeName === 'TABLE' || (closestTable && this.parent.contentModule.getEditPanel().contains(closestTable)))
481
489
  && !(range.startContainer.nodeType === 3 && !range.collapsed)) {
@@ -661,7 +669,7 @@ var Table = /** @class */ (function () {
661
669
  this.contentModule.getEditPanel().appendChild(rowReEle);
662
670
  }
663
671
  var tableReBox = this.parent.createElement('span', {
664
- className: classes.CLS_TB_BOX_RES + ' ' + this.parent.cssClass, attrs: {
672
+ className: classes.CLS_TB_BOX_RES + this.parent.getCssClass(true), attrs: {
665
673
  'data-col': columns.length.toString(), 'unselectable': 'on', 'contenteditable': 'false'
666
674
  }
667
675
  });
@@ -814,7 +822,7 @@ var Table = /** @class */ (function () {
814
822
  };
815
823
  Table.prototype.appendHelper = function () {
816
824
  this.helper = this.parent.createElement('div', {
817
- className: 'e-table-rhelper' + ' ' + this.parent.cssClass
825
+ className: 'e-table-rhelper' + this.parent.getCssClass(true)
818
826
  });
819
827
  if (Browser.isDevice) {
820
828
  this.helper.classList.add('e-reicon');
@@ -1175,16 +1183,16 @@ var Table = /** @class */ (function () {
1175
1183
  this.hideTableQuickToolbar();
1176
1184
  var header = '1X1';
1177
1185
  var insertbtn = this.l10n.getConstant('inserttablebtn');
1178
- this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup' + ' ' + this.parent.cssClass, id: this.rteID + '_table' });
1179
- this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' + ' ' + this.parent.cssClass });
1186
+ this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup' + this.parent.getCssClass(true), id: this.rteID + '_table' });
1187
+ this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' + this.parent.getCssClass(true) });
1180
1188
  this.tblHeader.innerHTML = header;
1181
1189
  this.dlgDiv.appendChild(this.tblHeader);
1182
- var tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' + ' ' + this.parent.cssClass });
1190
+ var tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' + this.parent.getCssClass(true) });
1183
1191
  this.drawTable(tableDiv, args);
1184
1192
  this.dlgDiv.appendChild(tableDiv);
1185
- this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' + ' ' + this.parent.cssClass }));
1193
+ this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' + this.parent.getCssClass(true) }));
1186
1194
  var btnEle = this.parent.createElement('button', {
1187
- className: 'e-insert-table-btn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertTable',
1195
+ className: 'e-insert-table-btn' + this.parent.getCssClass(true), id: this.rteID + '_insertTable',
1188
1196
  attrs: { type: 'button', tabindex: '0' }
1189
1197
  });
1190
1198
  if (!isNOU(this.parent.getToolbarElement().querySelector('.e-expended-nav'))) {
@@ -1192,7 +1200,7 @@ var Table = /** @class */ (function () {
1192
1200
  }
1193
1201
  this.dlgDiv.appendChild(btnEle);
1194
1202
  this.createTableButton = new Button({
1195
- iconCss: 'e-icons e-create-table', content: insertbtn, cssClass: 'e-flat' + ' ' + this.parent.cssClass,
1203
+ iconCss: 'e-icons e-create-table', content: insertbtn, cssClass: 'e-flat' + this.parent.getCssClass(true),
1196
1204
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
1197
1205
  });
1198
1206
  this.createTableButton.isStringTemplate = true;
@@ -1220,10 +1228,15 @@ var Table = /** @class */ (function () {
1220
1228
  });
1221
1229
  addClass([this.popupObj.element], 'e-popup-open');
1222
1230
  if (!isNOU(this.parent.cssClass)) {
1223
- addClass([this.popupObj.element], this.parent.cssClass);
1231
+ addClass([this.popupObj.element], this.parent.getCssClass());
1224
1232
  }
1225
1233
  this.popupObj.refreshPosition(target);
1226
1234
  };
1235
+ Table.prototype.onIframeMouseDown = function () {
1236
+ if (this.popupObj) {
1237
+ this.popupObj.hide();
1238
+ }
1239
+ };
1227
1240
  Table.prototype.docClick = function (e) {
1228
1241
  var target = e.args.target;
1229
1242
  // eslint-disable-next-line
@@ -1260,10 +1273,10 @@ var Table = /** @class */ (function () {
1260
1273
  var rowDiv;
1261
1274
  var tableCell;
1262
1275
  for (var row = 0; row < 3; row++) {
1263
- rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row' + ' ' + this.parent.cssClass, attrs: { 'data-column': '' + row } });
1276
+ rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row' + this.parent.getCssClass(true), attrs: { 'data-column': '' + row } });
1264
1277
  for (var col = 0; col < 10; col++) {
1265
1278
  var display = (row > 2) ? 'none' : 'inline-block';
1266
- tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default' + ' ' + this.parent.cssClass, attrs: { 'data-cell': '' + col } });
1279
+ tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default' + this.parent.getCssClass(true), attrs: { 'data-cell': '' + col } });
1267
1280
  rowDiv.appendChild(tableCell);
1268
1281
  tableCell.style.display = display;
1269
1282
  if (col === 0 && row === 0) {
@@ -1287,13 +1300,13 @@ var Table = /** @class */ (function () {
1287
1300
  height: 'initial', width: '290px', content: editContent, header: editHeader,
1288
1301
  buttons: [{
1289
1302
  click: this.applyProperties.bind(this, args),
1290
- buttonModel: { content: update, cssClass: 'e-flat e-size-update' + ' ' + this.parent.cssClass, isPrimary: true }
1303
+ buttonModel: { content: update, cssClass: 'e-flat e-size-update' + this.parent.getCssClass(true), isPrimary: true }
1291
1304
  },
1292
1305
  {
1293
1306
  click: function (e) {
1294
1307
  _this.cancelDialog(e);
1295
1308
  },
1296
- buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
1309
+ buttonModel: { cssClass: 'e-flat e-cancel' + this.parent.getCssClass(true), content: cancel }
1297
1310
  }],
1298
1311
  cssClass: this.editdlgObj.cssClass + ' e-rte-edit-table-prop-dialog'
1299
1312
  });
@@ -1335,10 +1348,10 @@ var Table = /** @class */ (function () {
1335
1348
  Table.prototype.tableCellDlgContent = function () {
1336
1349
  var tableColumn = this.l10n.getConstant('columns');
1337
1350
  var tableRow = this.l10n.getConstant('rows');
1338
- var tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' + ' ' + this.parent.cssClass });
1339
- var content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" '
1340
- + ' data-role ="none" id="tableColumn" class="e-table-column' + ' ' + this.parent.cssClass + '"/></div>'
1341
- + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="tableRow" class="e-table-row' + ' ' + this.parent.cssClass + '" /></div>';
1351
+ var tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' + this.parent.getCssClass(true) });
1352
+ var content = '<div class="e-rte-field' + this.parent.getCssClass(true) + '"><input type="text" '
1353
+ + ' data-role ="none" id="tableColumn" class="e-table-column' + this.parent.getCssClass(true) + '"/></div>'
1354
+ + '<div class="e-rte-field' + this.parent.getCssClass(true) + '"><input type="text" data-role ="none" id="tableRow" class="e-table-row' + this.parent.getCssClass(true) + '" /></div>';
1342
1355
  var contentElem = parseHtml(content);
1343
1356
  tableWrap.appendChild(contentElem);
1344
1357
  this.columnTextBox = new NumericTextBox({
@@ -1349,7 +1362,7 @@ var Table = /** @class */ (function () {
1349
1362
  floatLabelType: 'Auto',
1350
1363
  max: 50,
1351
1364
  enableRtl: this.parent.enableRtl, locale: this.parent.locale,
1352
- cssClass: this.parent.cssClass
1365
+ cssClass: this.parent.getCssClass()
1353
1366
  });
1354
1367
  this.columnTextBox.isStringTemplate = true;
1355
1368
  this.columnTextBox.appendTo(tableWrap.querySelector('#tableColumn'));
@@ -1361,7 +1374,7 @@ var Table = /** @class */ (function () {
1361
1374
  floatLabelType: 'Auto',
1362
1375
  max: 1000,
1363
1376
  enableRtl: this.parent.enableRtl, locale: this.parent.locale,
1364
- cssClass: this.parent.cssClass
1377
+ cssClass: this.parent.getCssClass()
1365
1378
  });
1366
1379
  this.rowTextBox.isStringTemplate = true;
1367
1380
  this.rowTextBox.appendTo(tableWrap.querySelector('#tableRow'));
@@ -1382,7 +1395,7 @@ var Table = /** @class */ (function () {
1382
1395
  return;
1383
1396
  }
1384
1397
  var tableDialog = this.parent.createElement('div', {
1385
- className: 'e-rte-edit-table' + ' ' + this.parent.cssClass, id: this.rteID + '_tabledialog'
1398
+ className: 'e-rte-edit-table' + this.parent.getCssClass(true), id: this.rteID + '_tabledialog'
1386
1399
  });
1387
1400
  this.parent.element.appendChild(tableDialog);
1388
1401
  var insert = this.l10n.getConstant('dialogInsert');
@@ -1390,20 +1403,20 @@ var Table = /** @class */ (function () {
1390
1403
  var header = this.l10n.getConstant('tabledialogHeader');
1391
1404
  var dialogModel = {
1392
1405
  header: header,
1393
- cssClass: classes.CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,
1406
+ cssClass: classes.CLS_RTE_ELEMENTS + this.parent.getCssClass(true),
1394
1407
  enableRtl: this.parent.enableRtl,
1395
1408
  locale: this.parent.locale,
1396
1409
  showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'initial',
1397
1410
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
1398
1411
  isModal: Browser.isDevice,
1399
1412
  buttons: [{
1400
- buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + this.parent.cssClass, isPrimary: true }
1413
+ buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + this.parent.getCssClass(true), isPrimary: true }
1401
1414
  },
1402
1415
  {
1403
1416
  click: function (e) {
1404
1417
  _this.cancelDialog(e);
1405
1418
  },
1406
- buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
1419
+ buttonModel: { cssClass: 'e-flat e-cancel' + this.parent.getCssClass(true), content: cancel }
1407
1420
  }],
1408
1421
  target: (Browser.isDevice) ? document.body : this.parent.element,
1409
1422
  animationSettings: { effect: 'None' },
@@ -1476,13 +1489,13 @@ var Table = /** @class */ (function () {
1476
1489
  var tableWidth = this.l10n.getConstant('tableWidth');
1477
1490
  var cellPadding = this.l10n.getConstant('cellpadding');
1478
1491
  var cellSpacing = this.l10n.getConstant('cellspacing');
1479
- var tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + ' ' + this.parent.cssClass });
1492
+ var tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + this.parent.getCssClass(true) });
1480
1493
  var widthVal = closest(selectNode, 'table').getClientRects()[0].width;
1481
1494
  var padVal = closest(selectNode, 'td').style.padding;
1482
1495
  var brdSpcVal = closest(selectNode, 'table').getAttribute('cellspacing');
1483
- var content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="tableWidth" class="e-table-width' + ' ' + this.parent.cssClass + '" '
1484
- + ' /></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding' + ' ' + this.parent.cssClass + '" />'
1485
- + ' </div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="cellSpacing" class="e-cell-spacing' + ' ' + this.parent.cssClass + '" /></div>';
1496
+ var content = '<div class="e-rte-field' + this.parent.getCssClass(true) + '"><input type="text" data-role ="none" id="tableWidth" class="e-table-width' + this.parent.getCssClass(true) + '" '
1497
+ + ' /></div>' + '<div class="e-rte-field' + this.parent.getCssClass(true) + '"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding' + this.parent.getCssClass(true) + '" />'
1498
+ + ' </div><div class="e-rte-field' + this.parent.getCssClass(true) + '"><input type="text" data-role ="none" id="cellSpacing" class="e-cell-spacing' + this.parent.getCssClass(true) + '" /></div>';
1486
1499
  var contentElem = parseHtml(content);
1487
1500
  tableWrap.appendChild(contentElem);
1488
1501
  this.tableWidthNum = new NumericTextBox({
@@ -17,10 +17,8 @@ export declare class ToolbarRenderer implements IRenderer {
17
17
  * @private
18
18
  */
19
19
  parent: IRichTextEditor;
20
- private popupContainer;
21
20
  private currentElement;
22
21
  private currentDropdown;
23
- private popupOverlay;
24
22
  private tooltip;
25
23
  private l10n;
26
24
  /**
@@ -41,7 +39,6 @@ export declare class ToolbarRenderer implements IRenderer {
41
39
  private tooltipBeforeRender;
42
40
  private dropDownOpen;
43
41
  private dropDownClose;
44
- private removePopupContainer;
45
42
  /**
46
43
  * renderToolbar method
47
44
  *
@@ -69,8 +66,6 @@ export declare class ToolbarRenderer implements IRenderer {
69
66
 
70
67
  */
71
68
  renderListDropDown(args: IDropDownModel): DropDownButton;
72
- private onPopupOverlay;
73
- private setIsModel;
74
69
  private paletteSelection;
75
70
  /**
76
71
  * renderColorPickerDropDown method
@@ -85,7 +80,6 @@ export declare class ToolbarRenderer implements IRenderer {
85
80
  */
86
81
  renderColorPickerDropDown(args: IColorPickerModel, item: string, colorPicker: ColorPicker, defaultColor: string): DropDownButton;
87
82
  private pickerRefresh;
88
- private popupModal;
89
83
  private setColorPickerContentWidth;
90
84
  /**
91
85
  * renderColorPicker method
@@ -1,5 +1,5 @@
1
- import { addClass, Browser, removeClass, EventHandler, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
2
- import { getInstance, closest, selectAll, detach } from '@syncfusion/ej2-base';
1
+ import { addClass, Browser, removeClass, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
2
+ import { getInstance, closest, selectAll } from '@syncfusion/ej2-base';
3
3
  import { Toolbar } from '@syncfusion/ej2-navigations';
4
4
  import { DropDownButton } from '@syncfusion/ej2-splitbuttons';
5
5
  import { Popup, Tooltip } from '@syncfusion/ej2-popups';
@@ -30,21 +30,19 @@ var ToolbarRenderer = /** @class */ (function () {
30
30
  }
31
31
  ToolbarRenderer.prototype.wireEvent = function () {
32
32
  this.parent.on(events.destroy, this.unWireEvent, this);
33
- this.parent.on(events.maximizeMinimizeClick, this.destroyTooltip, this);
33
+ this.parent.on(events.destroyTooltip, this.destroyTooltip, this);
34
34
  };
35
35
  ToolbarRenderer.prototype.destroyTooltip = function () {
36
- if (!isNullOrUndefined(document.querySelector('.e-tooltip-wrap')) && !isNullOrUndefined(document.querySelector(' [data-tooltip-id]'))) {
37
- var tooltipTargetEle = this.parent.element.querySelector('[data-tooltip-id]');
36
+ var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :
37
+ this.parent.contentModule.getDocument();
38
+ if (!isNullOrUndefined(currentDocument.querySelector('.e-tooltip-wrap')) && !isNullOrUndefined(currentDocument.querySelector('[data-tooltip-id]'))) {
39
+ var tooltipTargetEle = currentDocument.querySelector('[data-tooltip-id]');
38
40
  var event_1 = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });
39
41
  tooltipTargetEle.dispatchEvent(event_1);
40
42
  }
41
43
  };
42
44
  ToolbarRenderer.prototype.unWireEvent = function () {
43
45
  this.parent.off(events.destroy, this.unWireEvent);
44
- if (this.popupOverlay) {
45
- EventHandler.remove(this.popupOverlay, 'click touchmove', this.onPopupOverlay);
46
- }
47
- this.removePopupContainer();
48
46
  };
49
47
  ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {
50
48
  if (this.mode === 'Extended') {
@@ -65,7 +63,6 @@ var ToolbarRenderer = /** @class */ (function () {
65
63
  };
66
64
  ToolbarRenderer.prototype.dropDownSelected = function (args) {
67
65
  this.parent.notify(events.dropDownSelect, args);
68
- this.onPopupOverlay();
69
66
  };
70
67
  ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {
71
68
  if (this.parent.readonly || !this.parent.enabled) {
@@ -102,27 +99,11 @@ var ToolbarRenderer = /** @class */ (function () {
102
99
  addClass([listEle[1], listEle[2]], 'e-disabled');
103
100
  }
104
101
  }
105
- if (Browser.isDevice && !args.element.parentElement.classList.contains(classes.CLS_QUICK_DROPDOWN)) {
106
- this.popupModal(args.element.parentElement);
107
- }
108
102
  this.parent.notify(events.selectionSave, args);
109
103
  };
110
104
  ToolbarRenderer.prototype.dropDownClose = function (args) {
111
- this.removePopupContainer();
112
105
  this.parent.notify(events.selectionRestore, args);
113
106
  };
114
- ToolbarRenderer.prototype.removePopupContainer = function () {
115
- if (Browser.isDevice && !isNullOrUndefined(this.popupContainer)) {
116
- var popupEle = this.popupContainer.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');
117
- if (popupEle) {
118
- this.popupContainer.parentNode.insertBefore(popupEle, this.popupContainer.nextSibling);
119
- popupEle.style.removeProperty('position');
120
- removeClass([popupEle], 'e-popup-modal');
121
- }
122
- detach(this.popupContainer);
123
- this.popupContainer = undefined;
124
- }
125
- };
126
107
  /**
127
108
  * renderToolbar method
128
109
  *
@@ -156,7 +137,7 @@ var ToolbarRenderer = /** @class */ (function () {
156
137
  openDelay: 400,
157
138
  opensOn: 'Hover',
158
139
  beforeRender: this.tooltipBeforeRender.bind(this),
159
- cssClass: this.parent.cssClass,
140
+ cssClass: this.parent.getCssClass(),
160
141
  windowCollision: true,
161
142
  position: 'BottomCenter'
162
143
  });
@@ -216,7 +197,7 @@ var ToolbarRenderer = /** @class */ (function () {
216
197
  }
217
198
  //Alignments preselect
218
199
  var alignEle = proxy.parent.getRange().startContainer;
219
- while (alignEle !== proxy.parent.element.querySelector('.e-content') && !isNOU(alignEle.parentElement)) {
200
+ while (alignEle !== proxy.parent.inputElement && !isNOU(alignEle.parentElement)) {
220
201
  if (alignEle.nodeName === '#text') {
221
202
  alignEle = alignEle.parentElement;
222
203
  }
@@ -242,7 +223,8 @@ var ToolbarRenderer = /** @class */ (function () {
242
223
  alignEle = alignEle.parentElement;
243
224
  }
244
225
  //image preselect
245
- var imageEle = startNode.closest('img') ? startNode.closest('img') : startNode.querySelector('img');
226
+ var closestNode = startNode.closest('img');
227
+ var imageEle = closestNode ? closestNode : startNode.querySelector('img');
246
228
  if (args.items[0].command === 'Images') {
247
229
  if (!isNOU(imageEle)) {
248
230
  var index = void 0;
@@ -354,39 +336,6 @@ var ToolbarRenderer = /** @class */ (function () {
354
336
  };
355
337
  return dropDown;
356
338
  };
357
- // eslint-disable-next-line
358
- ToolbarRenderer.prototype.onPopupOverlay = function (args) {
359
- if (!isNullOrUndefined(this.popupOverlay)) {
360
- closest(this.popupOverlay, '.e-popup-container').style.display = 'none';
361
- this.popupOverlay.style.display = 'none';
362
- removeClass([this.popupOverlay], 'e-popup-overlay');
363
- }
364
- };
365
- ToolbarRenderer.prototype.setIsModel = function (element) {
366
- if (!closest(element, '.e-popup-container')) {
367
- this.popupContainer = this.parent.createElement('div', {
368
- className: 'e-rte-modal-popup e-popup-container e-center'
369
- });
370
- element.parentNode.insertBefore(this.popupContainer, element);
371
- this.popupContainer.appendChild(element);
372
- this.popupContainer.style.zIndex = element.style.zIndex;
373
- this.popupContainer.style.display = 'flex';
374
- element.style.position = 'relative';
375
- addClass([element], 'e-popup-modal');
376
- this.popupOverlay = this.parent.createElement('div', { className: 'e-popup-overlay' });
377
- // eslint-disable-next-line
378
- this.popupOverlay.style.zIndex = (parseInt(element.style.zIndex, null) - 1).toString();
379
- this.popupOverlay.style.display = 'block';
380
- this.popupContainer.appendChild(this.popupOverlay);
381
- EventHandler.add(this.popupOverlay, 'click touchmove', this.onPopupOverlay, this);
382
- }
383
- else {
384
- element.parentElement.style.display = 'flex';
385
- this.popupOverlay = element.nextElementSibling;
386
- this.popupOverlay.style.display = 'block';
387
- addClass([this.popupOverlay], 'e-popup-overlay');
388
- }
389
- };
390
339
  ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {
391
340
  var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');
392
341
  var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));
@@ -415,7 +364,7 @@ var ToolbarRenderer = /** @class */ (function () {
415
364
  var proxy = this;
416
365
  var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');
417
366
  css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));
418
- css += ' ' + this.parent.cssClass;
367
+ css += this.parent.getCssClass(true);
419
368
  var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });
420
369
  var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });
421
370
  var range;
@@ -487,9 +436,6 @@ var ToolbarRenderer = /** @class */ (function () {
487
436
  if (focusEle) {
488
437
  focusEle.focus();
489
438
  }
490
- if (Browser.isDevice) {
491
- _this.popupModal(dropDownArgs.element.parentElement);
492
- }
493
439
  _this.pickerRefresh(dropDownArgs);
494
440
  },
495
441
  beforeClose: function (dropDownArgs) {
@@ -517,22 +463,6 @@ var ToolbarRenderer = /** @class */ (function () {
517
463
  },
518
464
  close: function (dropDownArgs) {
519
465
  proxy.parent.notify(events.selectionRestore, {});
520
- var dropElement = closest(dropDownArgs.element.parentElement, '.e-popup-container');
521
- if (dropElement) {
522
- dropElement.style.display = 'none';
523
- dropElement.lastElementChild.style.display = 'none';
524
- removeClass([dropElement.lastElementChild], 'e-popup-overlay');
525
- }
526
- if (Browser.isDevice && !isNullOrUndefined(dropElement)) {
527
- var popupEle = dropElement.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');
528
- if (popupEle) {
529
- dropElement.parentNode.insertBefore(popupEle, dropElement.nextSibling);
530
- popupEle.style.removeProperty('position');
531
- removeClass([popupEle], 'e-popup-modal');
532
- }
533
- detach(dropElement);
534
- proxy.popupContainer = undefined;
535
- }
536
466
  }
537
467
  });
538
468
  dropDown.isStringTemplate = true;
@@ -560,16 +490,6 @@ var ToolbarRenderer = /** @class */ (function () {
560
490
  popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';
561
491
  }
562
492
  };
563
- ToolbarRenderer.prototype.popupModal = function (element) {
564
- var popupInst = getInstance(element, Popup);
565
- popupInst.relateTo = document.body;
566
- popupInst.position = { X: 0, Y: 0 };
567
- popupInst.targetType = 'container';
568
- popupInst.collision = { X: 'fit', Y: 'fit' };
569
- popupInst.offsetY = 4;
570
- popupInst.dataBind();
571
- this.setIsModel(element);
572
- };
573
493
  ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {
574
494
  var colorPickerContent = colorPicker.element.nextSibling;
575
495
  if (colorPickerContent.style.width === '0px') {
@@ -608,7 +528,7 @@ var ToolbarRenderer = /** @class */ (function () {
608
528
  args.element.classList.add(CLS_COLOR_PALETTE);
609
529
  args.element.classList.add(CLS_CUSTOM_TILE);
610
530
  if (!isNullOrUndefined(_this.parent.cssClass)) {
611
- var allClassName = _this.parent.cssClass.split(' ');
531
+ var allClassName = _this.parent.getCssClass().split(' ');
612
532
  for (var i = 0; i < allClassName.length; i++) {
613
533
  if (allClassName[i].trim() !== '') {
614
534
  args.element.classList.add(allClassName[i]);
@@ -44,7 +44,7 @@ var ViewSource = /** @class */ (function () {
44
44
  this.parent.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown);
45
45
  };
46
46
  ViewSource.prototype.getSourceCode = function () {
47
- return this.parent.createElement('textarea', { className: CLS_RTE_SOURCE_CODE_TXTAREA + ' ' + this.parent.cssClass });
47
+ return this.parent.createElement('textarea', { className: CLS_RTE_SOURCE_CODE_TXTAREA + this.parent.getCssClass(true) });
48
48
  };
49
49
  ViewSource.prototype.wireEvent = function (element) {
50
50
  this.keyboardModule = new KeyboardEvents(element, {
@@ -141,8 +141,10 @@ var ViewSource = /** @class */ (function () {
141
141
  this.getPanel().style.display = 'block';
142
142
  }
143
143
  else {
144
+ var height = this.parent.inputElement.offsetHeight;
144
145
  this.contentModule.getPanel().appendChild(this.previewElement);
145
146
  this.getPanel().value = this.getTextAreaValue();
147
+ this.previewElement.style.height = height + 'px';
146
148
  this.contentModule.getEditPanel().style.display = 'none';
147
149
  this.previewElement.style.display = 'block';
148
150
  }