@syncfusion/ej2-richtexteditor 20.1.61 → 20.2.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +10 -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 +419 -171
  5. package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
  6. package/dist/es6/ej2-richtexteditor.es5.js +411 -162
  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 +12 -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/resize.js +4 -3
  27. package/src/rich-text-editor/actions/toolbar.js +4 -2
  28. package/src/rich-text-editor/base/classes.d.ts +5 -0
  29. package/src/rich-text-editor/base/classes.js +5 -0
  30. package/src/rich-text-editor/base/constant.d.ts +40 -0
  31. package/src/rich-text-editor/base/constant.js +41 -1
  32. package/src/rich-text-editor/base/interface.d.ts +2 -0
  33. package/src/rich-text-editor/base/rich-text-editor.d.ts +1 -0
  34. package/src/rich-text-editor/base/rich-text-editor.js +26 -23
  35. package/src/rich-text-editor/base/util.js +3 -3
  36. package/src/rich-text-editor/formatter/formatter.js +1 -1
  37. package/src/rich-text-editor/renderer/iframe-content-renderer.js +1 -1
  38. package/src/rich-text-editor/renderer/image-module.js +38 -37
  39. package/src/rich-text-editor/renderer/link-module.js +16 -14
  40. package/src/rich-text-editor/renderer/markdown-renderer.js +2 -1
  41. package/src/rich-text-editor/renderer/table-module.d.ts +3 -0
  42. package/src/rich-text-editor/renderer/table-module.js +132 -55
  43. package/src/rich-text-editor/renderer/toolbar-renderer.js +11 -1
  44. package/src/rich-text-editor/renderer/view-source.js +1 -1
  45. package/styles/fluent-dark.css +1 -0
  46. package/styles/fluent.css +1 -0
  47. package/styles/rich-text-editor/_fluent-definition.scss +1 -0
  48. package/styles/rich-text-editor/_fusionnew-definition.scss +189 -0
  49. package/styles/rich-text-editor/_layout.scss +3 -0
  50. package/styles/rich-text-editor/_material3-definition.scss +189 -0
  51. package/styles/rich-text-editor/fluent-dark.css +1 -0
  52. package/styles/rich-text-editor/fluent.css +1 -0
  53. package/styles/rich-text-editor/icons/_fusionnew.scss +303 -0
  54. package/styles/rich-text-editor/icons/_material3.scss +303 -0
@@ -251,22 +251,22 @@ var Link = /** @class */ (function () {
251
251
  var textPlace = this.i10n.getConstant('textPlaceholder');
252
252
  var title = this.i10n.getConstant('linkTitle');
253
253
  var linkDialogEle = this.parent.createElement('div', {
254
- className: 'e-rte-link-dialog', id: this.rteID + '_rtelink'
254
+ className: 'e-rte-link-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_rtelink'
255
255
  });
256
256
  this.parent.element.appendChild(linkDialogEle);
257
257
  var linkContent = this.parent.createElement('div', {
258
- className: 'e-rte-linkcontent', id: this.rteID + '_linkContent'
258
+ className: 'e-rte-linkcontent' + ' ' + this.parent.cssClass, id: this.rteID + '_linkContent'
259
259
  });
260
260
  var htmlTextbox = (this.parent.editorMode === 'HTML') ? '<label>' + linkTooltip +
261
- '</label></div><div class="e-rte-field">' +
262
- '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle"></div>' +
263
- '<div class="e-rte-label"></div>' + '<div class="e-rte-field">' +
264
- '<input type="checkbox" class="e-rte-linkTarget" data-role ="none"></div>' : '';
265
- var content = '<div class="e-rte-label"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field">' +
266
- '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl"/></div>' +
267
- '<div class="e-rte-label">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field"> ' +
268
- '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText" placeholder="' + textPlace + '">' +
269
- '</div><div class="e-rte-label">' + htmlTextbox;
261
+ '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
262
+ '<input type="text" data-role ="none" spellcheck="false" placeholder = "' + title + '" class="e-input e-rte-linkTitle' + ' ' + this.parent.cssClass + '"></div>' +
263
+ '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
264
+ '<input type="checkbox" class="e-rte-linkTarget' + ' ' + this.parent.cssClass + '" data-role ="none"></div>' : '';
265
+ var content = '<div class="e-rte-label' + ' ' + this.parent.cssClass + '"><label>' + linkWebAddress + '</label></div>' + '<div class="e-rte-field' + ' ' + this.parent.cssClass + '">' +
266
+ '<input type="text" data-role ="none" spellcheck="false" placeholder="' + urlPlace + '" class="e-input e-rte-linkurl' + ' ' + this.parent.cssClass + '"/></div>' +
267
+ '<div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + '<label>' + linkDisplayText + '</label></div><div class="e-rte-field' + ' ' + this.parent.cssClass + '"> ' +
268
+ '<input type="text" data-role ="none" spellcheck="false" class="e-input e-rte-linkText' + ' ' + this.parent.cssClass + '" placeholder="' + textPlace + '">' +
269
+ '</div><div class="e-rte-label' + ' ' + this.parent.cssClass + '">' + htmlTextbox;
270
270
  var contentElem = parseHtml(content);
271
271
  linkContent.appendChild(contentElem);
272
272
  var linkTarget = linkContent.querySelector('.e-rte-linkTarget');
@@ -294,9 +294,9 @@ var Link = /** @class */ (function () {
294
294
  isModal: Browser.isDevice,
295
295
  buttons: [{
296
296
  click: this.insertlink.bind(selectObj),
297
- buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink', isPrimary: true }
297
+ buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + ' ' + this.parent.cssClass, isPrimary: true }
298
298
  },
299
- { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat', content: linkCancel } }],
299
+ { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat' + ' ' + this.parent.cssClass, content: linkCancel } }],
300
300
  target: (Browser.isDevice) ? document.body : this.parent.element,
301
301
  animationSettings: { effect: 'None' },
302
302
  close: function (event) {
@@ -440,8 +440,10 @@ var Link = /** @class */ (function () {
440
440
  if (this.parent.formatter.getUndoRedoStack().length === 0) {
441
441
  this.parent.formatter.saveData();
442
442
  }
443
+ var selectParentEle = this.getAnchorNode(e.selectParent[0]);
443
444
  this.parent.formatter.process(this.parent, e.args, e.args, {
444
445
  selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,
446
+ text: selectParentEle.innerText,
445
447
  subCommand: e.args.item.subCommand
446
448
  });
447
449
  if (isIDevice() && this.parent.iframeSettings.enable) {
@@ -456,7 +458,7 @@ var Link = /** @class */ (function () {
456
458
  var selectParentEle = this.getAnchorNode(e.selectParent[0]);
457
459
  if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {
458
460
  this.parent.formatter.process(this.parent, e.args, e.args, {
459
- url: selectParentEle.href,
461
+ url: selectParentEle.href, text: selectParentEle.innerText,
460
462
  target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,
461
463
  subCommand: e.args.item.subCommand
462
464
  });
@@ -25,7 +25,8 @@ var MarkdownRender = /** @class */ (function () {
25
25
  var div = this.parent.createElement('div', { id: this.parent.getID() + '_view', className: 'e-rte-content' });
26
26
  this.editableElement = this.parent.createElement('textarea', {
27
27
  className: 'e-content',
28
- id: this.parent.getID() + '_editable-content'
28
+ id: this.parent.getID() + '_editable-content',
29
+ attrs: { 'aria-labelledby': this.parent.getID() + '_view' }
29
30
  });
30
31
  div.appendChild(this.editableElement);
31
32
  this.setPanel(div);
@@ -32,6 +32,8 @@ export declare class Table {
32
32
  private moveEle;
33
33
  private helper;
34
34
  private dialogRenderObj;
35
+ private currentColumnResize;
36
+ private currentMarginLeft;
35
37
  private constructor();
36
38
  protected addEventListener(): void;
37
39
  protected removeEventListener(): void;
@@ -75,6 +77,7 @@ export declare class Table {
75
77
  private updateHelper;
76
78
  private calMaxCol;
77
79
  private resizing;
80
+ private findFirstLastColCells;
78
81
  private convertPixelToPercentage;
79
82
  private cancelResizeAction;
80
83
  private resizeEnd;
@@ -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) + '%';
853
+ }
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) + '%';
816
866
  }
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) + '%';
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,13 +1119,13 @@ 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
1130
  cssClass: this.parent.cssClass
1054
1131
  });
@@ -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
  }
@@ -518,7 +528,7 @@ var ToolbarRenderer = /** @class */ (function () {
518
528
  colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;
519
529
  colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :
520
530
  this.parent.fontColor.colorCode;
521
- colorPicker.cssClass = (item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER;
531
+ colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;
522
532
  colorPicker.createElement = this.parent.createElement;
523
533
  colorPicker.appendTo(document.getElementById(args.target));
524
534
  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, {
@@ -1233,6 +1233,7 @@
1233
1233
  height: 16px;
1234
1234
  }
1235
1235
  .e-richtexteditor .e-rte-table-popup.e-popup-open .e-insert-table-btn {
1236
+ margin-top: 16px;
1236
1237
  width: 100%;
1237
1238
  }
1238
1239
  .e-richtexteditor .e-rte-edit-table .e-rte-field {
package/styles/fluent.css CHANGED
@@ -1233,6 +1233,7 @@
1233
1233
  height: 16px;
1234
1234
  }
1235
1235
  .e-richtexteditor .e-rte-table-popup.e-popup-open .e-insert-table-btn {
1236
+ margin-top: 16px;
1236
1237
  width: 100%;
1237
1238
  }
1238
1239
  .e-richtexteditor .e-rte-edit-table .e-rte-field {
@@ -172,6 +172,7 @@ $rte-table-header-bg: $content-bg-color-alt1 !default;
172
172
  $rte-tb-hover-font-color: $secondary-text-color-hover;
173
173
  $transparent: $transparent;
174
174
  $rte-placeholder-padding: 24px !default;
175
+ $rte-table-popup-btn-margin-top: 16px !default;
175
176
 
176
177
  $rte-img-dlg-min-height: 410px !default;
177
178
  $rte-big-img-dlg-min-height: 434px !default;