@syncfusion/ej2-richtexteditor 20.1.61 → 20.2.39

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 (93) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/ej2-richtexteditor.umd.min.js +2 -2
  3. package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-richtexteditor.es2015.js +468 -191
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +460 -181
  7. package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
  8. package/dist/global/ej2-richtexteditor.min.js +2 -2
  9. package/dist/global/ej2-richtexteditor.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +8 -6
  12. package/helpers/e2e/rte-helper.js +80 -64
  13. package/package.json +12 -12
  14. package/src/common/util.js +7 -8
  15. package/src/editor-manager/plugin/inserthtml.d.ts +1 -0
  16. package/src/editor-manager/plugin/inserthtml.js +25 -3
  17. package/src/editor-manager/plugin/lists.js +14 -4
  18. package/src/markdown-parser/base/constant.d.ts +6 -0
  19. package/src/markdown-parser/base/constant.js +6 -0
  20. package/src/markdown-parser/base/markdown-parser.d.ts +2 -0
  21. package/src/markdown-parser/base/markdown-parser.js +6 -0
  22. package/src/markdown-parser/base/types.d.ts +1 -1
  23. package/src/markdown-parser/plugin/insert-text.d.ts +22 -0
  24. package/src/markdown-parser/plugin/insert-text.js +51 -0
  25. package/src/rich-text-editor/actions/color-picker.js +20 -4
  26. package/src/rich-text-editor/actions/full-screen.js +4 -2
  27. package/src/rich-text-editor/actions/resize.js +4 -3
  28. package/src/rich-text-editor/actions/toolbar.js +4 -2
  29. package/src/rich-text-editor/base/classes.d.ts +5 -0
  30. package/src/rich-text-editor/base/classes.js +5 -0
  31. package/src/rich-text-editor/base/constant.d.ts +46 -1
  32. package/src/rich-text-editor/base/constant.js +46 -1
  33. package/src/rich-text-editor/base/interface.d.ts +2 -0
  34. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
  35. package/src/rich-text-editor/base/rich-text-editor.js +34 -27
  36. package/src/rich-text-editor/base/util.js +10 -6
  37. package/src/rich-text-editor/formatter/formatter.js +1 -1
  38. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  39. package/src/rich-text-editor/renderer/image-module.d.ts +1 -0
  40. package/src/rich-text-editor/renderer/image-module.js +58 -44
  41. package/src/rich-text-editor/renderer/link-module.js +16 -14
  42. package/src/rich-text-editor/renderer/markdown-renderer.js +2 -1
  43. package/src/rich-text-editor/renderer/table-module.d.ts +3 -0
  44. package/src/rich-text-editor/renderer/table-module.js +133 -56
  45. package/src/rich-text-editor/renderer/toolbar-renderer.js +13 -2
  46. package/src/rich-text-editor/renderer/view-source.js +1 -1
  47. package/styles/bootstrap-dark.css +49 -0
  48. package/styles/bootstrap.css +49 -0
  49. package/styles/bootstrap4.css +49 -0
  50. package/styles/bootstrap5-dark.css +49 -0
  51. package/styles/bootstrap5.css +49 -0
  52. package/styles/fabric-dark.css +49 -0
  53. package/styles/fabric.css +49 -0
  54. package/styles/fluent-dark.css +53 -3
  55. package/styles/fluent.css +50 -0
  56. package/styles/highcontrast-light.css +49 -0
  57. package/styles/highcontrast.css +49 -0
  58. package/styles/material-dark.css +49 -0
  59. package/styles/material.css +49 -0
  60. package/styles/rich-text-editor/_bootstrap-dark-definition.scss +17 -16
  61. package/styles/rich-text-editor/_bootstrap-definition.scss +17 -16
  62. package/styles/rich-text-editor/_bootstrap4-definition.scss +17 -16
  63. package/styles/rich-text-editor/_bootstrap5-definition.scss +17 -16
  64. package/styles/rich-text-editor/_fabric-dark-definition.scss +17 -16
  65. package/styles/rich-text-editor/_fabric-definition.scss +17 -16
  66. package/styles/rich-text-editor/_fluent-definition.scss +18 -16
  67. package/styles/rich-text-editor/_fusionnew-definition.scss +190 -0
  68. package/styles/rich-text-editor/_highcontrast-definition.scss +17 -16
  69. package/styles/rich-text-editor/_highcontrast-light-definition.scss +17 -16
  70. package/styles/rich-text-editor/_layout.scss +59 -0
  71. package/styles/rich-text-editor/_material-dark-definition.scss +17 -16
  72. package/styles/rich-text-editor/_material-definition.scss +17 -16
  73. package/styles/rich-text-editor/_material3-definition.scss +190 -0
  74. package/styles/rich-text-editor/_tailwind-definition.scss +17 -16
  75. package/styles/rich-text-editor/bootstrap-dark.css +49 -0
  76. package/styles/rich-text-editor/bootstrap.css +49 -0
  77. package/styles/rich-text-editor/bootstrap4.css +49 -0
  78. package/styles/rich-text-editor/bootstrap5-dark.css +49 -0
  79. package/styles/rich-text-editor/bootstrap5.css +49 -0
  80. package/styles/rich-text-editor/fabric-dark.css +49 -0
  81. package/styles/rich-text-editor/fabric.css +49 -0
  82. package/styles/rich-text-editor/fluent-dark.css +53 -3
  83. package/styles/rich-text-editor/fluent.css +50 -0
  84. package/styles/rich-text-editor/highcontrast-light.css +49 -0
  85. package/styles/rich-text-editor/highcontrast.css +49 -0
  86. package/styles/rich-text-editor/icons/_fusionnew.scss +303 -0
  87. package/styles/rich-text-editor/icons/_material3.scss +303 -0
  88. package/styles/rich-text-editor/material-dark.css +49 -0
  89. package/styles/rich-text-editor/material.css +49 -0
  90. package/styles/rich-text-editor/tailwind-dark.css +49 -0
  91. package/styles/rich-text-editor/tailwind.css +49 -0
  92. package/styles/tailwind-dark.css +49 -0
  93. package/styles/tailwind.css +49 -0
@@ -16,6 +16,8 @@ var Table = /** @class */ (function () {
16
16
  this.pageX = null;
17
17
  this.pageY = null;
18
18
  this.moveEle = null;
19
+ this.currentColumnResize = '';
20
+ this.currentMarginLeft = 0;
19
21
  this.parent = parent;
20
22
  this.rteID = parent.element.id;
21
23
  this.l10n = serviceLocator.getService('rteLocale');
@@ -183,6 +185,7 @@ var Table = /** @class */ (function () {
183
185
  }
184
186
  else if (ele && ele.querySelectorAll('table').length > 0) {
185
187
  this.removeResizeElement();
188
+ this.hideTableQuickToolbar();
186
189
  }
187
190
  }
188
191
  if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {
@@ -559,7 +562,7 @@ var Table = /** @class */ (function () {
559
562
  };
560
563
  Table.prototype.tableResizeEleCreation = function (table, e) {
561
564
  this.parent.preventDefaultResize(e);
562
- var columns = Array.prototype.slice.call(table.rows[this.calMaxCol(table)].cells, 1);
565
+ var columns = table.rows[this.calMaxCol(table)].cells;
563
566
  var rows = [];
564
567
  for (var i = 0; i < table.rows.length; i++) {
565
568
  rows.push(Array.prototype.slice.call(table.rows[i].cells, 0, 1)[0]);
@@ -567,15 +570,21 @@ var Table = /** @class */ (function () {
567
570
  var height = parseInt(getComputedStyle(table).height, 10);
568
571
  var width = parseInt(getComputedStyle(table).width, 10);
569
572
  var pos = this.calcPos(table);
570
- for (var i = 0; columns.length > i; i++) {
573
+ for (var i = 0; columns.length >= i; i++) {
571
574
  var colReEle = this.parent.createElement('span', {
572
575
  attrs: {
573
- 'data-col': (i + 1).toString(), 'unselectable': 'on', 'contenteditable': 'false'
576
+ 'data-col': (i).toString(), 'unselectable': 'on', 'contenteditable': 'false'
574
577
  }
575
578
  });
576
579
  colReEle.classList.add(classes.CLS_RTE_TABLE_RESIZE, classes.CLS_TB_COL_RES);
577
- colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
578
- 'px; left:' + (pos.left + this.calcPos(columns[i]).left) + 'px;';
580
+ if (columns.length === i) {
581
+ colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
582
+ 'px; left:' + (pos.left + this.calcPos(columns[i - 1]).left + columns[i - 1].offsetWidth) + 'px;';
583
+ }
584
+ else {
585
+ colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +
586
+ 'px; left:' + (pos.left + this.calcPos(columns[i]).left) + 'px;';
587
+ }
579
588
  this.contentModule.getEditPanel().appendChild(colReEle);
580
589
  }
581
590
  for (var i = 0; rows.length > i; i++) {
@@ -593,7 +602,7 @@ var Table = /** @class */ (function () {
593
602
  this.contentModule.getEditPanel().appendChild(rowReEle);
594
603
  }
595
604
  var tableReBox = this.parent.createElement('span', {
596
- className: classes.CLS_TB_BOX_RES, attrs: {
605
+ className: classes.CLS_TB_BOX_RES + ' ' + this.parent.cssClass, attrs: {
597
606
  'data-col': columns.length.toString(), 'unselectable': 'on', 'contenteditable': 'false'
598
607
  }
599
608
  });
@@ -692,7 +701,19 @@ var Table = /** @class */ (function () {
692
701
  this.hideTableQuickToolbar();
693
702
  if (target.classList.contains(classes.CLS_TB_COL_RES)) {
694
703
  this.resizeBtnStat.column = true;
695
- this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];
704
+ if (parseInt(target.getAttribute('data-col'), 10) === this.curTable.rows[this.calMaxCol(this.curTable)].cells.length) {
705
+ this.currentColumnResize = 'last';
706
+ this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10) - 1];
707
+ }
708
+ else {
709
+ if (parseInt(target.getAttribute('data-col'), 10) === 0) {
710
+ this.currentColumnResize = 'first';
711
+ }
712
+ else {
713
+ this.currentColumnResize = 'middle';
714
+ }
715
+ this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];
716
+ }
696
717
  this.colIndex = this.columnEle.cellIndex;
697
718
  this.moveEle = e.target;
698
719
  this.appendHelper();
@@ -736,7 +757,7 @@ var Table = /** @class */ (function () {
736
757
  };
737
758
  Table.prototype.appendHelper = function () {
738
759
  this.helper = this.parent.createElement('div', {
739
- className: 'e-table-rhelper'
760
+ className: 'e-table-rhelper' + ' ' + this.parent.cssClass
740
761
  });
741
762
  if (Browser.isDevice) {
742
763
  this.helper.classList.add('e-reicon');
@@ -749,7 +770,8 @@ var Table = /** @class */ (function () {
749
770
  if (this.resizeBtnStat.column) {
750
771
  this.helper.classList.add('e-column-helper');
751
772
  this.helper.style.cssText = 'height: ' + getComputedStyle(this.curTable).height + '; top: ' +
752
- pos.top + 'px; left:' + (pos.left + this.calcPos(this.columnEle).left - 1) + 'px;';
773
+ pos.top + 'px; left:' + ((pos.left + this.calcPos(this.columnEle).left) +
774
+ (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1) + 'px;';
753
775
  }
754
776
  else {
755
777
  this.helper.classList.add('e-row-helper');
@@ -761,7 +783,8 @@ var Table = /** @class */ (function () {
761
783
  Table.prototype.updateHelper = function () {
762
784
  var pos = this.calcPos(this.curTable);
763
785
  if (this.resizeBtnStat.column) {
764
- var left = pos.left + this.calcPos(this.columnEle).left - 1;
786
+ var left = (pos.left + this.calcPos(this.columnEle).left) +
787
+ (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1;
765
788
  this.helper.style.left = left + 'px';
766
789
  }
767
790
  else {
@@ -800,23 +823,66 @@ var Table = /** @class */ (function () {
800
823
  var paddingSize = +getComputedStyle(_this.contentModule.getEditPanel()).paddingRight.match(/\d/g).join('');
801
824
  var rteWidth = _this.contentModule.getEditPanel().offsetWidth - (_this.contentModule.getEditPanel().offsetWidth -
802
825
  _this.contentModule.getEditPanel().clientWidth) - paddingSize * 2;
826
+ var widthCompare = void 0;
827
+ if (!isNOU(_this.curTable.parentElement.closest('table'))) {
828
+ var currentTd = _this.curTable.closest('td');
829
+ var currentTDPad = +getComputedStyle(currentTd).paddingRight.match(/\d/g).join('');
830
+ // Padding of the current table with the parent element multiply with 2.
831
+ widthCompare = currentTd.offsetWidth - (currentTd.offsetWidth - currentTd.clientWidth) - currentTDPad * 2;
832
+ }
833
+ else {
834
+ widthCompare = rteWidth;
835
+ }
803
836
  if (_this.resizeBtnStat.column) {
804
- var cellColl = _this.curTable.rows[_this.calMaxCol(_this.curTable)].cells;
805
837
  var width = parseFloat(_this.columnEle.offsetWidth.toString());
806
- var actualwid = width - mouseX;
807
- var totalwid = parseFloat(_this.columnEle.offsetWidth.toString()) +
808
- parseFloat(cellColl[_this.colIndex - 1].offsetWidth.toString());
809
- for (var i = 0; i < _this.curTable.rows.length; i++) {
810
- if ((totalwid - actualwid) > 20 && actualwid > 20) {
811
- var leftColumnWidth = totalwid - actualwid;
812
- var rightColWidth = actualwid;
813
- if (!isNOU(_this.curTable.rows[i].cells[_this.colIndex - 1])) {
814
- _this.curTable.rows[i].cells[_this.colIndex - 1].style.width =
815
- _this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';
838
+ var cellRow = _this.curTable.rows[0].cells[0].nodeName === 'TH' ? 1 : 0;
839
+ var currentTableWidth = parseFloat(_this.curTable.style.width.split('%')[0]);
840
+ var currentColumnCellWidth = parseFloat(_this.curTable.rows[cellRow].cells[_this.colIndex].style.width.split('%')[0]);
841
+ if (_this.currentColumnResize === 'first') {
842
+ mouseX = mouseX - 0.75; //This was done for to make the gripper and the table first/last column will be close.
843
+ _this.removeResizeElement();
844
+ // Below the value '100' is the 100% width of the parent element.
845
+ if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX < 0) && currentTableWidth <= 100 && _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) <= 100) {
846
+ var firstColumnsCell = _this.findFirstLastColCells(_this.curTable, true);
847
+ _this.curTable.style.width = _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) > 100 ? (100 + '%') : (_this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) + '%');
848
+ var differenceWidth = currentTableWidth - _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare);
849
+ _this.currentMarginLeft = _this.currentMarginLeft + differenceWidth;
850
+ _this.curTable.style.marginLeft = 'calc(' + (_this.curTable.style.width === '100%' ? 0 : _this.currentMarginLeft) + '%)';
851
+ for (var i = 0; i < firstColumnsCell.length; i++) {
852
+ _this.curTable.rows[i].cells[_this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
816
853
  }
817
- if (!isNOU(_this.curTable.rows[i].cells[_this.colIndex])) {
818
- _this.curTable.rows[i].cells[_this.colIndex].style.width =
819
- _this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
854
+ }
855
+ }
856
+ else if (_this.currentColumnResize === 'last') {
857
+ mouseX = mouseX + 0.75; //This was done for to make the gripper and the table first/last column will be close.
858
+ _this.removeResizeElement();
859
+ // Below the value '100' is the 100% width of the parent element.
860
+ if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX > 0) && currentTableWidth <= 100 && _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) <= 100) {
861
+ var lastColumnsCell = _this.findFirstLastColCells(_this.curTable, false);
862
+ _this.curTable.style.width = _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) > 100 ? (100 + '%') : (_this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%');
863
+ var differenceWidth = currentTableWidth - _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare);
864
+ for (var i = 0; i < lastColumnsCell.length; i++) {
865
+ _this.curTable.rows[i].cells[_this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';
866
+ }
867
+ }
868
+ }
869
+ else {
870
+ var cellColl = _this.curTable.rows[_this.calMaxCol(_this.curTable)].cells;
871
+ var actualwid = width - mouseX;
872
+ var totalwid = parseFloat(_this.columnEle.offsetWidth.toString()) +
873
+ parseFloat(cellColl[_this.colIndex - 1].offsetWidth.toString());
874
+ for (var i = 0; i < _this.curTable.rows.length; i++) {
875
+ if ((totalwid - actualwid) > 20 && actualwid > 20) {
876
+ var leftColumnWidth = totalwid - actualwid;
877
+ var rightColWidth = actualwid;
878
+ if (!isNOU(_this.curTable.rows[i].cells[_this.colIndex - 1])) {
879
+ _this.curTable.rows[i].cells[_this.colIndex - 1].style.width =
880
+ _this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';
881
+ }
882
+ if (!isNOU(_this.curTable.rows[i].cells[_this.colIndex])) {
883
+ _this.curTable.rows[i].cells[_this.colIndex].style.width =
884
+ _this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';
885
+ }
820
886
  }
821
887
  }
822
888
  }
@@ -840,7 +906,7 @@ var Table = /** @class */ (function () {
840
906
  EventHandler.remove(_this.contentModule.getEditPanel(), 'mouseover', _this.resizeHelper);
841
907
  }
842
908
  var widthType = _this.curTable.style.width.indexOf('%') > -1;
843
- _this.curTable.style.width = widthType ? _this.convertPixelToPercentage(tableWidth + mouseX, rteWidth) + '%'
909
+ _this.curTable.style.width = widthType ? _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%'
844
910
  : tableWidth + mouseX + 'px';
845
911
  _this.curTable.style.height = tableHeight + mouseY + 'px';
846
912
  tableReBox.classList.add('e-rbox-select');
@@ -850,6 +916,17 @@ var Table = /** @class */ (function () {
850
916
  }
851
917
  });
852
918
  };
919
+ Table.prototype.findFirstLastColCells = function (table, isFirst) {
920
+ var resultColumns = [];
921
+ var rows = table.querySelectorAll('tr');
922
+ for (var i = 0; i < rows.length; i++) {
923
+ if (rows[i].closest('table') === table) {
924
+ var columns = rows[i].querySelectorAll('th, td');
925
+ resultColumns.push(isFirst ? columns[0] : columns[columns.length - 1]);
926
+ }
927
+ }
928
+ return resultColumns;
929
+ };
853
930
  Table.prototype.convertPixelToPercentage = function (value, offsetValue) {
854
931
  return (value / offsetValue) * 100;
855
932
  };
@@ -868,14 +945,14 @@ var Table = /** @class */ (function () {
868
945
  EventHandler.add(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper, this);
869
946
  }
870
947
  this.removeResizeElement();
871
- if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {
872
- detach(this.helper);
873
- this.helper = null;
874
- }
875
- this.pageX = null;
876
- this.pageY = null;
877
- this.moveEle = null;
878
948
  }
949
+ if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {
950
+ detach(this.helper);
951
+ this.helper = null;
952
+ }
953
+ this.pageX = null;
954
+ this.pageY = null;
955
+ this.moveEle = null;
879
956
  var args = { event: e, requestType: 'table' };
880
957
  this.parent.trigger(events.resizeStop, args);
881
958
  this.parent.formatter.saveData();
@@ -930,16 +1007,16 @@ var Table = /** @class */ (function () {
930
1007
  this.hideTableQuickToolbar();
931
1008
  var header = '1X1';
932
1009
  var insertbtn = this.l10n.getConstant('inserttablebtn');
933
- this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup', id: this.rteID + '_table' });
934
- this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' });
1010
+ this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup' + ' ' + this.parent.cssClass, id: this.rteID + '_table' });
1011
+ this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' + ' ' + this.parent.cssClass });
935
1012
  this.tblHeader.innerHTML = header;
936
1013
  this.dlgDiv.appendChild(this.tblHeader);
937
- var tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' });
1014
+ var tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' + ' ' + this.parent.cssClass });
938
1015
  this.drawTable(tableDiv, args);
939
1016
  this.dlgDiv.appendChild(tableDiv);
940
- this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' }));
1017
+ this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' + ' ' + this.parent.cssClass }));
941
1018
  var btnEle = this.parent.createElement('button', {
942
- className: 'e-insert-table-btn', id: this.rteID + '_insertTable',
1019
+ className: 'e-insert-table-btn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertTable',
943
1020
  attrs: { type: 'button', tabindex: '0' }
944
1021
  });
945
1022
  if (!isNOU(this.parent.getToolbarElement().querySelector('.e-expended-nav'))) {
@@ -1001,7 +1078,7 @@ var Table = /** @class */ (function () {
1001
1078
  !target.offsetParent.classList.contains('e-quick-dropdown') &&
1002
1079
  !target.offsetParent.classList.contains('e-rte-backgroundcolor-dropdown') && !closest(target, '.e-rte-dropdown-popup')
1003
1080
  && !closest(target, '.e-rte-elements')) {
1004
- removeClass(this.parent.element.querySelectorAll('table td'), classes.CLS_TABLE_SEL);
1081
+ removeClass(this.parent.inputElement.querySelectorAll('table td'), classes.CLS_TABLE_SEL);
1005
1082
  if (!Browser.isIE) {
1006
1083
  this.hideTableQuickToolbar();
1007
1084
  }
@@ -1015,10 +1092,10 @@ var Table = /** @class */ (function () {
1015
1092
  var rowDiv;
1016
1093
  var tableCell;
1017
1094
  for (var row = 0; row < 3; row++) {
1018
- rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row', attrs: { 'data-column': '' + row } });
1095
+ rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row' + ' ' + this.parent.cssClass, attrs: { 'data-column': '' + row } });
1019
1096
  for (var col = 0; col < 10; col++) {
1020
1097
  var display = (row > 2) ? 'none' : 'inline-block';
1021
- tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default', attrs: { 'data-cell': '' + col } });
1098
+ tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default' + ' ' + this.parent.cssClass, attrs: { 'data-cell': '' + col } });
1022
1099
  rowDiv.appendChild(tableCell);
1023
1100
  tableCell.style.display = display;
1024
1101
  if (col === 0 && row === 0) {
@@ -1042,15 +1119,15 @@ var Table = /** @class */ (function () {
1042
1119
  height: 'initial', width: '290px', content: editContent, header: editHeader,
1043
1120
  buttons: [{
1044
1121
  click: this.applyProperties.bind(this, args),
1045
- buttonModel: { content: update, cssClass: 'e-flat e-size-update', isPrimary: true }
1122
+ buttonModel: { content: update, cssClass: 'e-flat e-size-update' + ' ' + this.parent.cssClass, isPrimary: true }
1046
1123
  },
1047
1124
  {
1048
1125
  click: function (e) {
1049
1126
  _this.cancelDialog(e);
1050
1127
  },
1051
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
1128
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
1052
1129
  }],
1053
- cssClass: this.parent.cssClass
1130
+ cssClass: this.editdlgObj.cssClass + ' e-rte-edit-table-prop-dialog'
1054
1131
  });
1055
1132
  this.editdlgObj.element.style.maxHeight = 'none';
1056
1133
  this.editdlgObj.content.querySelector('input').focus();
@@ -1072,13 +1149,13 @@ var Table = /** @class */ (function () {
1072
1149
  height: 'initial', width: '290px', content: dlgContent,
1073
1150
  buttons: [{
1074
1151
  click: proxy.customTable.bind(this, args),
1075
- buttonModel: { content: insert, cssClass: 'e-flat e-insert-table', isPrimary: true }
1152
+ buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + proxy.parent.cssClass, isPrimary: true }
1076
1153
  },
1077
1154
  {
1078
1155
  click: function (e) {
1079
1156
  proxy.cancelDialog(e);
1080
1157
  },
1081
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
1158
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + proxy.parent.cssClass, content: cancel }
1082
1159
  }]
1083
1160
  });
1084
1161
  if (!isNOU(proxy.parent.cssClass)) {
@@ -1090,10 +1167,10 @@ var Table = /** @class */ (function () {
1090
1167
  Table.prototype.tableCellDlgContent = function () {
1091
1168
  var tableColumn = this.l10n.getConstant('columns');
1092
1169
  var tableRow = this.l10n.getConstant('rows');
1093
- var tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' });
1094
- var content = '<div class="e-rte-field"><input type="text" '
1095
- + ' data-role ="none" id="tableColumn" class="e-table-column"/></div>'
1096
- + '<div class="e-rte-field"><input type="text" data-role ="none" id="tableRow" class="e-table-row" /></div>';
1170
+ var tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' + ' ' + this.parent.cssClass });
1171
+ var content = '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" '
1172
+ + ' data-role ="none" id="tableColumn" class="e-table-column' + ' ' + this.parent.cssClass + '"/></div>'
1173
+ + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="tableRow" class="e-table-row' + ' ' + this.parent.cssClass + '" /></div>';
1097
1174
  var contentElem = parseHtml(content);
1098
1175
  tableWrap.appendChild(contentElem);
1099
1176
  this.columnTextBox = new NumericTextBox({
@@ -1137,7 +1214,7 @@ var Table = /** @class */ (function () {
1137
1214
  return;
1138
1215
  }
1139
1216
  var tableDialog = this.parent.createElement('div', {
1140
- className: 'e-rte-edit-table', id: this.rteID + '_tabledialog'
1217
+ className: 'e-rte-edit-table' + ' ' + this.parent.cssClass, id: this.rteID + '_tabledialog'
1141
1218
  });
1142
1219
  this.parent.element.appendChild(tableDialog);
1143
1220
  var insert = this.l10n.getConstant('dialogInsert');
@@ -1152,13 +1229,13 @@ var Table = /** @class */ (function () {
1152
1229
  position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },
1153
1230
  isModal: Browser.isDevice,
1154
1231
  buttons: [{
1155
- buttonModel: { content: insert, cssClass: 'e-flat e-insert-table', isPrimary: true }
1232
+ buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + this.parent.cssClass, isPrimary: true }
1156
1233
  },
1157
1234
  {
1158
1235
  click: function (e) {
1159
1236
  _this.cancelDialog(e);
1160
1237
  },
1161
- buttonModel: { cssClass: 'e-flat e-cancel', content: cancel }
1238
+ buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }
1162
1239
  }],
1163
1240
  target: (Browser.isDevice) ? document.body : this.parent.element,
1164
1241
  animationSettings: { effect: 'None' },
@@ -1226,13 +1303,13 @@ var Table = /** @class */ (function () {
1226
1303
  var tableWidth = this.l10n.getConstant('tableWidth');
1227
1304
  var cellPadding = this.l10n.getConstant('cellpadding');
1228
1305
  var cellSpacing = this.l10n.getConstant('cellspacing');
1229
- var tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' });
1306
+ var tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + ' ' + this.parent.cssClass });
1230
1307
  var widthVal = closest(selectNode, 'table').getClientRects()[0].width;
1231
1308
  var padVal = closest(selectNode, 'td').style.padding;
1232
1309
  var brdSpcVal = closest(selectNode, 'table').getAttribute('cellspacing');
1233
- var content = '<div class="e-rte-field"><input type="text" data-role ="none" id="tableWidth" class="e-table-width" '
1234
- + ' /></div>' + '<div class="e-rte-field"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding" />'
1235
- + ' </div><div class="e-rte-field"><input type="text" data-role ="none" id="cellSpacing" class="e-cell-spacing" /></div>';
1310
+ 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 + '" '
1311
+ + ' /></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '"><input type="text" data-role ="none" id="cellPadding" class="e-cell-padding' + ' ' + this.parent.cssClass + '" />'
1312
+ + ' </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>';
1236
1313
  var contentElem = parseHtml(content);
1237
1314
  tableWrap.appendChild(contentElem);
1238
1315
  this.tableWidthNum = new NumericTextBox({
@@ -296,6 +296,7 @@ var ToolbarRenderer = /** @class */ (function () {
296
296
  var proxy = this;
297
297
  var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');
298
298
  css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));
299
+ css += ' ' + this.parent.cssClass;
299
300
  var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });
300
301
  var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });
301
302
  var range;
@@ -466,6 +467,7 @@ var ToolbarRenderer = /** @class */ (function () {
466
467
 
467
468
  */
468
469
  ToolbarRenderer.prototype.renderColorPicker = function (args, item) {
470
+ var _this = this;
469
471
  // eslint-disable-next-line
470
472
  var proxy = this;
471
473
  var value;
@@ -483,6 +485,14 @@ var ToolbarRenderer = /** @class */ (function () {
483
485
  beforeTileRender: function (args) {
484
486
  args.element.classList.add(CLS_COLOR_PALETTE);
485
487
  args.element.classList.add(CLS_CUSTOM_TILE);
488
+ if (!isNullOrUndefined(_this.parent.cssClass)) {
489
+ var allClassName = _this.parent.cssClass.split(' ');
490
+ for (var i = 0; i < allClassName.length; i++) {
491
+ if (allClassName[i].trim() !== '') {
492
+ args.element.classList.add(allClassName[i]);
493
+ }
494
+ }
495
+ }
486
496
  if (args.value === '') {
487
497
  args.element.classList.add(CLS_NOCOLOR_ITEM);
488
498
  }
@@ -497,8 +507,9 @@ var ToolbarRenderer = /** @class */ (function () {
497
507
  proxy.parent.notify(events.selectionRestore, {});
498
508
  proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;
499
509
  var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());
510
+ var closestElement = closest(range.startContainer.parentNode, 'table');
500
511
  if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||
501
- closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor') {
512
+ closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {
502
513
  proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);
503
514
  }
504
515
  else {
@@ -518,7 +529,7 @@ var ToolbarRenderer = /** @class */ (function () {
518
529
  colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;
519
530
  colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :
520
531
  this.parent.fontColor.colorCode;
521
- colorPicker.cssClass = (item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER;
532
+ colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
522
533
  colorPicker.createElement = this.parent.createElement;
523
534
  colorPicker.appendTo(document.getElementById(args.target));
524
535
  return colorPicker;
@@ -42,7 +42,7 @@ var ViewSource = /** @class */ (function () {
42
42
  this.parent.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown);
43
43
  };
44
44
  ViewSource.prototype.getSourceCode = function () {
45
- return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' });
45
+ return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });
46
46
  };
47
47
  ViewSource.prototype.wireEvent = function (element) {
48
48
  this.keyboardModule = new KeyboardEvents(element, {
@@ -417,6 +417,34 @@
417
417
  .e-richtexteditor.e-bigger.e-rte-full-screen iframe {
418
418
  height: calc(100% - 56px);
419
419
  }
420
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table,
421
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table {
422
+ max-height: 330px !important;
423
+ }
424
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog,
425
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table-prop-dialog {
426
+ max-height: 414px !important;
427
+ }
428
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog,
429
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-link-dialog {
430
+ max-height: 427px !important;
431
+ }
432
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog,
433
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-dialog {
434
+ min-height: 457px !important;
435
+ }
436
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog,
437
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-link-dialog {
438
+ max-height: 256px !important;
439
+ }
440
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog,
441
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-size-dialog {
442
+ max-height: 327px !important;
443
+ }
444
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog,
445
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-alt-dialog {
446
+ min-height: 457px !important;
447
+ }
420
448
 
421
449
  .e-richtexteditor {
422
450
  color: #f0f0f0;
@@ -456,6 +484,27 @@
456
484
  .e-richtexteditor.e-rte-full-screen iframe {
457
485
  height: calc(100% - 42px);
458
486
  }
487
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table {
488
+ max-height: 287px !important;
489
+ }
490
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog {
491
+ max-height: 365px !important;
492
+ }
493
+ .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog {
494
+ max-height: 394px !important;
495
+ }
496
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog {
497
+ max-height: 426px !important;
498
+ }
499
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog {
500
+ max-height: 223px !important;
501
+ }
502
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog {
503
+ max-height: 284px !important;
504
+ }
505
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog {
506
+ max-height: 426px !important;
507
+ }
459
508
  .e-richtexteditor.e-rtl .e-rte-character-count {
460
509
  left: 0;
461
510
  padding-left: 30px;
@@ -558,6 +558,34 @@
558
558
  .e-richtexteditor.e-bigger.e-rte-full-screen iframe {
559
559
  height: calc(100% - 56px);
560
560
  }
561
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table,
562
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table {
563
+ max-height: 330px !important;
564
+ }
565
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog,
566
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table-prop-dialog {
567
+ max-height: 414px !important;
568
+ }
569
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog,
570
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-link-dialog {
571
+ max-height: 427px !important;
572
+ }
573
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog,
574
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-dialog {
575
+ min-height: 457px !important;
576
+ }
577
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog,
578
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-link-dialog {
579
+ max-height: 256px !important;
580
+ }
581
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog,
582
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-size-dialog {
583
+ max-height: 327px !important;
584
+ }
585
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog,
586
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-alt-dialog {
587
+ min-height: 457px !important;
588
+ }
561
589
 
562
590
  .e-richtexteditor {
563
591
  color: #333;
@@ -597,6 +625,27 @@
597
625
  .e-richtexteditor.e-rte-full-screen iframe {
598
626
  height: calc(100% - 42px);
599
627
  }
628
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table {
629
+ max-height: 287px !important;
630
+ }
631
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog {
632
+ max-height: 365px !important;
633
+ }
634
+ .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog {
635
+ max-height: 394px !important;
636
+ }
637
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog {
638
+ max-height: 426px !important;
639
+ }
640
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog {
641
+ max-height: 223px !important;
642
+ }
643
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog {
644
+ max-height: 284px !important;
645
+ }
646
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog {
647
+ max-height: 426px !important;
648
+ }
600
649
  .e-richtexteditor.e-rtl .e-rte-character-count {
601
650
  left: 0;
602
651
  padding-left: 30px;
@@ -653,6 +653,34 @@
653
653
  .e-richtexteditor.e-bigger.e-rte-full-screen iframe {
654
654
  height: calc(100% - 56px);
655
655
  }
656
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table,
657
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table {
658
+ max-height: 302px !important;
659
+ }
660
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog,
661
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-edit-table-prop-dialog {
662
+ max-height: 378px !important;
663
+ }
664
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog,
665
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-link-dialog {
666
+ max-height: 404px !important;
667
+ }
668
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog,
669
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-dialog {
670
+ min-height: 428px !important;
671
+ }
672
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog,
673
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-link-dialog {
674
+ max-height: 231px !important;
675
+ }
676
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog,
677
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-size-dialog {
678
+ max-height: 312px !important;
679
+ }
680
+ .e-bigger .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog,
681
+ .e-richtexteditor.e-bigger.e-rte-full-screen .e-rte-img-alt-dialog {
682
+ min-height: 428px !important;
683
+ }
656
684
 
657
685
  .e-richtexteditor {
658
686
  color: #212529;
@@ -692,6 +720,27 @@
692
720
  .e-richtexteditor.e-rte-full-screen iframe {
693
721
  height: calc(100% - 42px);
694
722
  }
723
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table {
724
+ max-height: 264px !important;
725
+ }
726
+ .e-richtexteditor.e-rte-full-screen .e-rte-edit-table-prop-dialog {
727
+ max-height: 333px !important;
728
+ }
729
+ .e-richtexteditor.e-rte-full-screen .e-rte-link-dialog {
730
+ max-height: 368px !important;
731
+ }
732
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-dialog {
733
+ max-height: 405px !important;
734
+ }
735
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-link-dialog {
736
+ max-height: 204px !important;
737
+ }
738
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-size-dialog {
739
+ max-height: 268px !important;
740
+ }
741
+ .e-richtexteditor.e-rte-full-screen .e-rte-img-alt-dialog {
742
+ max-height: 405px !important;
743
+ }
695
744
  .e-richtexteditor.e-rtl .e-rte-character-count {
696
745
  left: 0;
697
746
  padding-left: 30px;