@syncfusion/ej2-ribbon 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 (81) hide show
  1. package/CHANGELOG.md +0 -42
  2. package/dist/ej2-ribbon.umd.min.js +2 -2
  3. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-ribbon.es2015.js +179 -30
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +179 -30
  7. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  8. package/dist/global/ej2-ribbon.min.js +2 -2
  9. package/dist/global/ej2-ribbon.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +13 -13
  12. package/src/ribbon/base/ribbon.d.ts +1 -0
  13. package/src/ribbon/base/ribbon.js +76 -19
  14. package/src/ribbon/items/ribbon-colorpicker.js +16 -0
  15. package/src/ribbon/items/ribbon-combobox.js +16 -0
  16. package/src/ribbon/items/ribbon-dropdown.js +5 -3
  17. package/src/ribbon/items/ribbon-groupbutton.d.ts +3 -1
  18. package/src/ribbon/items/ribbon-groupbutton.js +50 -7
  19. package/src/ribbon/models/ribbon-colorpicker-settings-model.d.ts +8 -1
  20. package/src/ribbon/models/ribbon-colorpicker-settings.d.ts +7 -1
  21. package/src/ribbon/models/ribbon-colorpicker-settings.js +4 -1
  22. package/src/ribbon/models/ribbon-combobox-settings-model.d.ts +7 -0
  23. package/src/ribbon/models/ribbon-combobox-settings.d.ts +6 -0
  24. package/src/ribbon/models/ribbon-combobox-settings.js +3 -0
  25. package/src/ribbon/models/ribbon-group-button-settings-model.d.ts +7 -0
  26. package/src/ribbon/models/ribbon-group-button-settings.d.ts +6 -0
  27. package/src/ribbon/models/ribbon-group-button-settings.js +3 -0
  28. package/src/ribbon/models/ribbon-group-model.d.ts +7 -0
  29. package/src/ribbon/models/ribbon-group.d.ts +6 -0
  30. package/src/ribbon/models/ribbon-group.js +3 -0
  31. package/src/ribbon/modules/ribbon-backstage.js +3 -0
  32. package/styles/bootstrap-dark.css +105 -26
  33. package/styles/bootstrap.css +104 -25
  34. package/styles/bootstrap4.css +104 -25
  35. package/styles/bootstrap5-dark.css +105 -26
  36. package/styles/bootstrap5.css +104 -25
  37. package/styles/fabric-dark.css +103 -24
  38. package/styles/fabric.css +104 -25
  39. package/styles/fluent-dark.css +104 -25
  40. package/styles/fluent.css +104 -25
  41. package/styles/highcontrast-light.css +103 -24
  42. package/styles/highcontrast.css +103 -24
  43. package/styles/material-dark.css +105 -26
  44. package/styles/material.css +105 -26
  45. package/styles/material3-dark.css +105 -26
  46. package/styles/material3.css +105 -26
  47. package/styles/ribbon/_bootstrap-dark-definition.scss +8 -0
  48. package/styles/ribbon/_bootstrap-definition.scss +8 -0
  49. package/styles/ribbon/_bootstrap4-definition.scss +8 -0
  50. package/styles/ribbon/_bootstrap5-definition.scss +8 -0
  51. package/styles/ribbon/_fabric-dark-definition.scss +8 -0
  52. package/styles/ribbon/_fabric-definition.scss +8 -0
  53. package/styles/ribbon/_fluent-definition.scss +8 -0
  54. package/styles/ribbon/_fusionnew-definition.scss +8 -0
  55. package/styles/ribbon/_highcontrast-definition.scss +8 -0
  56. package/styles/ribbon/_highcontrast-light-definition.scss +8 -0
  57. package/styles/ribbon/_layout.scss +69 -5
  58. package/styles/ribbon/_material-dark-definition.scss +9 -1
  59. package/styles/ribbon/_material-definition.scss +9 -1
  60. package/styles/ribbon/_material3-definition.scss +8 -2
  61. package/styles/ribbon/_tailwind-definition.scss +8 -0
  62. package/styles/ribbon/_theme.scss +34 -13
  63. package/styles/ribbon/bootstrap-dark.css +105 -26
  64. package/styles/ribbon/bootstrap.css +104 -25
  65. package/styles/ribbon/bootstrap4.css +104 -25
  66. package/styles/ribbon/bootstrap5-dark.css +105 -26
  67. package/styles/ribbon/bootstrap5.css +104 -25
  68. package/styles/ribbon/fabric-dark.css +103 -24
  69. package/styles/ribbon/fabric.css +104 -25
  70. package/styles/ribbon/fluent-dark.css +104 -25
  71. package/styles/ribbon/fluent.css +104 -25
  72. package/styles/ribbon/highcontrast-light.css +103 -24
  73. package/styles/ribbon/highcontrast.css +103 -24
  74. package/styles/ribbon/material-dark.css +105 -26
  75. package/styles/ribbon/material.css +105 -26
  76. package/styles/ribbon/material3-dark.css +105 -26
  77. package/styles/ribbon/material3.css +105 -26
  78. package/styles/ribbon/tailwind-dark.css +104 -25
  79. package/styles/ribbon/tailwind.css +104 -25
  80. package/styles/tailwind-dark.css +104 -25
  81. package/styles/tailwind.css +104 -25
@@ -296,11 +296,14 @@ var RibbonColorPickerSettings = /** @__PURE__ @class */ (function (_super) {
296
296
  __decorate$7([
297
297
  Property('')
298
298
  ], RibbonColorPickerSettings.prototype, "cssClass", void 0);
299
+ __decorate$7([
300
+ Property('')
301
+ ], RibbonColorPickerSettings.prototype, "label", void 0);
299
302
  __decorate$7([
300
303
  Property(true)
301
304
  ], RibbonColorPickerSettings.prototype, "enableOpacity", void 0);
302
305
  __decorate$7([
303
- Property('Picker')
306
+ Property('Palette')
304
307
  ], RibbonColorPickerSettings.prototype, "mode", void 0);
305
308
  __decorate$7([
306
309
  Property(true)
@@ -389,6 +392,9 @@ var RibbonComboBoxSettings = /** @__PURE__ @class */ (function (_super) {
389
392
  __decorate$8([
390
393
  Property('')
391
394
  ], RibbonComboBoxSettings.prototype, "cssClass", void 0);
395
+ __decorate$8([
396
+ Property('')
397
+ ], RibbonComboBoxSettings.prototype, "label", void 0);
392
398
  __decorate$8([
393
399
  Property([])
394
400
  ], RibbonComboBoxSettings.prototype, "dataSource", void 0);
@@ -758,6 +764,9 @@ var RibbonGroupButtonSettings = /** @__PURE__ @class */ (function (_super) {
758
764
  function RibbonGroupButtonSettings() {
759
765
  return _super !== null && _super.apply(this, arguments) || this;
760
766
  }
767
+ __decorate$12([
768
+ Property('')
769
+ ], RibbonGroupButtonSettings.prototype, "header", void 0);
761
770
  __decorate$12([
762
771
  Property('Single')
763
772
  ], RibbonGroupButtonSettings.prototype, "selection", void 0);
@@ -965,6 +974,9 @@ var RibbonGroup = /** @__PURE__ @class */ (function (_super) {
965
974
  __decorate$2([
966
975
  Property('Column')
967
976
  ], RibbonGroup.prototype, "orientation", void 0);
977
+ __decorate$2([
978
+ Property('')
979
+ ], RibbonGroup.prototype, "overflowHeader", void 0);
968
980
  __decorate$2([
969
981
  Property(0)
970
982
  ], RibbonGroup.prototype, "priority", void 0);
@@ -1833,6 +1845,15 @@ var RibbonColorPicker = /** @__PURE__ @class */ (function () {
1833
1845
  */
1834
1846
  RibbonColorPicker.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {
1835
1847
  var _this = this;
1848
+ var colorPickerSettings = item.colorPickerSettings;
1849
+ if (colorPickerSettings.label && this.parent.activeLayout === 'Simplified') {
1850
+ var label = this.parent.createElement('div', {
1851
+ className: 'e-ribbon-colorpicker-label',
1852
+ id: item.id + '_label',
1853
+ innerHTML: colorPickerSettings.label
1854
+ });
1855
+ itemEle.insertBefore(label, itemEle.firstChild);
1856
+ }
1836
1857
  var colorPickerEle = itemEle.querySelector('#' + item.id);
1837
1858
  colorPickerEle.setAttribute('data-control', item.type.toString());
1838
1859
  var colorPickerObj = getComponent(colorPickerEle, ColorPicker);
@@ -1863,6 +1884,13 @@ var RibbonColorPicker = /** @__PURE__ @class */ (function () {
1863
1884
  */
1864
1885
  RibbonColorPicker.prototype.removeOverFlowEvents = function (item, itemEle) {
1865
1886
  var _this = this;
1887
+ var colorPickerSettings = item.colorPickerSettings;
1888
+ if (colorPickerSettings.label) {
1889
+ var label = itemEle.querySelector('#' + item.id + '_label');
1890
+ if (label) {
1891
+ label.remove();
1892
+ }
1893
+ }
1866
1894
  var colorPickerEle = itemEle.querySelector('#' + item.id);
1867
1895
  var colorPickerObj = getComponent(colorPickerEle, ColorPicker);
1868
1896
  var cssClass = colorPickerObj.cssClass.split(SPACE);
@@ -2028,6 +2056,15 @@ var RibbonComboBox = /** @__PURE__ @class */ (function () {
2028
2056
  */
2029
2057
  RibbonComboBox.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {
2030
2058
  var _this = this;
2059
+ var comboBoxSettings = item.comboBoxSettings;
2060
+ if (comboBoxSettings.label && this.parent.activeLayout === 'Simplified') {
2061
+ var label = this.parent.createElement('div', {
2062
+ className: 'e-ribbon-combobox-label',
2063
+ id: item.id + '_label',
2064
+ innerHTML: comboBoxSettings.label
2065
+ });
2066
+ itemEle.insertBefore(label, itemEle.firstChild);
2067
+ }
2031
2068
  var inputEle = itemEle.querySelector('#' + item.id);
2032
2069
  inputEle.setAttribute('data-control', item.type.toString());
2033
2070
  var comboBoxObj = getComponent(inputEle, ComboBox);
@@ -2052,6 +2089,13 @@ var RibbonComboBox = /** @__PURE__ @class */ (function () {
2052
2089
  */
2053
2090
  RibbonComboBox.prototype.removeOverFlowEvents = function (item, itemEle) {
2054
2091
  var _this = this;
2092
+ var comboBoxSettings = item.comboBoxSettings;
2093
+ if (comboBoxSettings.label) {
2094
+ var label = itemEle.querySelector('#' + item.id + '_label');
2095
+ if (label) {
2096
+ label.remove();
2097
+ }
2098
+ }
2055
2099
  var inputEle = itemEle.querySelector('#' + item.id);
2056
2100
  var comboBoxObj = getComponent(inputEle, ComboBox);
2057
2101
  var cssClass = comboBoxObj.cssClass.split(SPACE);
@@ -2293,7 +2337,9 @@ var RibbonDropDown = /** @__PURE__ @class */ (function () {
2293
2337
  return dropdown;
2294
2338
  };
2295
2339
  RibbonDropDown.prototype.keyActionHandler = function (e, target) {
2296
- var items = target.querySelectorAll('.e-control');
2340
+ var controlElements = Array.prototype.slice.call(target.querySelectorAll('.e-control'));
2341
+ var templateElements = Array.prototype.slice.call(target.querySelectorAll('.e-ribbon-template'));
2342
+ var items = controlElements.concat(templateElements);
2297
2343
  var comboBoxElements = target.querySelectorAll('.e-combobox');
2298
2344
  var comboBoxEle;
2299
2345
  if (comboBoxElements) {
@@ -2312,7 +2358,7 @@ var RibbonDropDown = /** @__PURE__ @class */ (function () {
2312
2358
  }
2313
2359
  }
2314
2360
  }
2315
- if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||
2361
+ if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template') || e.target.classList.contains('e-ribbon-launcher-icon') ||
2316
2362
  e.target.classList.contains('e-ribbon-last-item') || e.target.classList.contains('e-ribbon-first-item')) {
2317
2363
  if (e.key === 'ArrowRight' || (!e.shiftKey && e.key === 'Tab')) {
2318
2364
  this.handleNavigation(e, !this.enableRtl, items);
@@ -2335,7 +2381,7 @@ var RibbonDropDown = /** @__PURE__ @class */ (function () {
2335
2381
  }
2336
2382
  if (!e.target.classList.contains('e-combobox') && !e.target.classList.contains('e-ribbon-last-item') &&
2337
2383
  !e.target.classList.contains('e-ribbon-group-container') && (e.target.classList.contains('e-ribbon-first-item')
2338
- || this.itemIndex !== 0) && e.target.classList.contains('e-control')) {
2384
+ || this.itemIndex !== 0) && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template'))) {
2339
2385
  this.itemIndex++;
2340
2386
  this.updateItemIndex(e, items, true);
2341
2387
  }
@@ -3275,13 +3321,17 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3275
3321
  }
3276
3322
  count++;
3277
3323
  }
3278
- new DropDownButton({
3324
+ var dropdown = new DropDownButton({
3279
3325
  iconCss: dropdownIcon,
3280
3326
  target: btnContainerEle,
3281
3327
  enableRtl: this.parent.enableRtl,
3282
3328
  cssClass: 'e-ribbon-dropdown-group-button',
3283
3329
  disabled: item.disabled
3284
3330
  }, buttonEle);
3331
+ if (groupBtnSettings.header) {
3332
+ var dropDownPopup = dropdown.dropDown;
3333
+ this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);
3334
+ }
3285
3335
  buttonEle.onclick = buttonEle.onkeydown = function () {
3286
3336
  if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {
3287
3337
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + 0).focus();
@@ -3298,7 +3348,9 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3298
3348
  }
3299
3349
  };
3300
3350
  RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {
3301
- var previousItems = [], selectingItems = [], selectedItems = [];
3351
+ var previousItems = [];
3352
+ var selectingItems = [];
3353
+ var selectedItems = [];
3302
3354
  var groupButtonEle;
3303
3355
  var dropdown;
3304
3356
  for (var j = 0; j < grpBtnSettings.items.length; j++) {
@@ -3329,9 +3381,11 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3329
3381
  for (var j = 0; j < grpBtnSettings.items.length; j++) {
3330
3382
  if (document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {
3331
3383
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');
3384
+ grpBtnSettings.items[parseInt(j.toString(), 10)].selected = false;
3332
3385
  }
3333
3386
  }
3334
3387
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');
3388
+ grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].selected = true;
3335
3389
  if (document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {
3336
3390
  this.grpBtnIndex = itemIndex;
3337
3391
  groupButtonEle = document.querySelector('#' + item.id);
@@ -3347,6 +3401,12 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3347
3401
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID).classList.add(RIBBON_MULTIPLE_BUTTON_SELECTION);
3348
3402
  }
3349
3403
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');
3404
+ if (document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {
3405
+ grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].selected = true;
3406
+ }
3407
+ else {
3408
+ grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].selected = false;
3409
+ }
3350
3410
  var activeEleCount = 0;
3351
3411
  for (var n = 0; n < grpBtnSettings.items.length; n++) {
3352
3412
  if (document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {
@@ -3435,13 +3495,17 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3435
3495
  }
3436
3496
  itemsCount++;
3437
3497
  }
3438
- new DropDownButton({
3498
+ var dropdown = new DropDownButton({
3439
3499
  iconCss: dropdownIcon,
3440
3500
  target: containerEle,
3441
3501
  enableRtl: this.parent.enableRtl,
3442
3502
  cssClass: 'e-ribbon-dropdown-group-button',
3443
3503
  disabled: item.disabled
3444
3504
  }, buttonEle);
3505
+ if (groupBtnSettings.header) {
3506
+ var dropDownPopup = dropdown.dropDown;
3507
+ this.addGroupButtonHeader(item.id, groupBtnSettings, dropDownPopup.element);
3508
+ }
3445
3509
  buttonEle.onclick = buttonEle.onkeydown = function () {
3446
3510
  if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {
3447
3511
  document.querySelector('#' + item.id + RIBBON_GROUP_BUTTON_ID + 0).focus();
@@ -3465,6 +3529,14 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3465
3529
  }
3466
3530
  }
3467
3531
  };
3532
+ RibbonGroupButton.prototype.addGroupButtonHeader = function (itemID, groupBtnSettings, popupEle) {
3533
+ var groupButtonHeader = this.parent.createElement('div', {
3534
+ className: 'e-ribbon-groupbutton-header',
3535
+ id: itemID + HEADER_ID,
3536
+ innerHTML: groupBtnSettings.header
3537
+ });
3538
+ popupEle.insertBefore(groupButtonHeader, popupEle.firstChild);
3539
+ };
3468
3540
  RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {
3469
3541
  var groupButtonEle = document.querySelector('#' + item.id);
3470
3542
  var dropdown = getComponent(groupButtonEle, DropDownButton);
@@ -3530,16 +3602,29 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3530
3602
  * @returns {void}
3531
3603
  * @hidden
3532
3604
  */
3533
- RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {
3605
+ RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle, overflowButton) {
3534
3606
  var _this = this;
3607
+ var groupBtnSettings = item.groupButtonSettings;
3608
+ var isIconOnly = true;
3535
3609
  var groupButtonEle = itemEle.querySelector('#' + item.id);
3536
3610
  var dropdown = getComponent(groupButtonEle, DropDownButton);
3537
- dropdown.setProperties({ cssClass: dropdown.cssClass + SPACE + RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });
3611
+ dropdown.setProperties({ cssClass: dropdown.cssClass + SPACE + RIBBON_GROUP_BUTTON_OVERFLOW_POPUP, content: groupBtnSettings.header ? groupBtnSettings.header : '' });
3538
3612
  var targetEle = dropdown.target;
3613
+ if (targetEle.children.length) {
3614
+ for (var i = 0; i < targetEle.children.length; i++) {
3615
+ if (groupBtnSettings.items[parseInt(i.toString(), 10)].content) {
3616
+ isIconOnly = false;
3617
+ break;
3618
+ }
3619
+ }
3620
+ if (isIconOnly) {
3621
+ targetEle.classList.add('e-icon-btn');
3622
+ }
3623
+ }
3539
3624
  targetEle.onclick = function () {
3540
3625
  if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {
3541
- dropdown.element.focus();
3542
3626
  dropdown.toggle();
3627
+ overflowButton.toggle();
3543
3628
  }
3544
3629
  };
3545
3630
  };
@@ -3555,9 +3640,13 @@ var RibbonGroupButton = /** @__PURE__ @class */ (function () {
3555
3640
  var groupButtonEle = itemEle.querySelector('#' + item.id);
3556
3641
  if (groupButtonEle) {
3557
3642
  var dropdown = getComponent(groupButtonEle, DropDownButton);
3643
+ var targetEle = dropdown.target;
3644
+ if (targetEle.classList.contains('e-icon-btn')) {
3645
+ targetEle.classList.remove('e-icon-btn');
3646
+ }
3558
3647
  var cssClass = dropdown.cssClass.split(SPACE);
3559
3648
  cssClass = cssClass.filter(function (value) { return value !== RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });
3560
- dropdown.setProperties({ cssClass: cssClass.join(SPACE) });
3649
+ dropdown.setProperties({ cssClass: cssClass.join(SPACE), content: '' });
3561
3650
  }
3562
3651
  };
3563
3652
  /**
@@ -3730,7 +3819,9 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
3730
3819
  e.preventDefault();
3731
3820
  }
3732
3821
  var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + CONTENT_ID);
3733
- var ribbonControls = activeContent.querySelectorAll('.e-control');
3822
+ var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));
3823
+ var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));
3824
+ var ribbonControls = controlElements.concat(templateElements);
3734
3825
  var comboBoxElements = activeContent.querySelectorAll('.e-combobox');
3735
3826
  var comboBoxEle;
3736
3827
  if (comboBoxElements) {
@@ -3759,7 +3850,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
3759
3850
  if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||
3760
3851
  e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||
3761
3852
  e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||
3762
- e.target.classList.contains('e-ribbon-overall-of-btn')) {
3853
+ e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template')) {
3763
3854
  switch (e.action) {
3764
3855
  case 'rightarrow':
3765
3856
  this.handleNavigation(e, !this.enableRtl, ribbonControls);
@@ -3801,7 +3892,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
3801
3892
  }
3802
3893
  }
3803
3894
  if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {
3804
- if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {
3895
+ if (!e.target.classList.contains('e-combobox') && (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-template')) && !e.target.classList.contains('e-ribbon-last-item')) {
3805
3896
  if (enableRtl) {
3806
3897
  this.currentControlIndex++;
3807
3898
  }
@@ -3835,7 +3926,10 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
3835
3926
  }
3836
3927
  if (launcherIconEle) {
3837
3928
  var items = groupContainer.querySelectorAll('.e-ribbon-item');
3838
- items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');
3929
+ var elem = items[items.length - 1].querySelector('.e-control');
3930
+ if (elem) {
3931
+ elem.classList.add('e-ribbon-last-item');
3932
+ }
3839
3933
  }
3840
3934
  }
3841
3935
  else {
@@ -3948,6 +4042,15 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
3948
4042
  var scrollEle = this.tabObj.element.querySelector('.' + HORIZONTAL_SCROLLBAR);
3949
4043
  this.scrollModule.scrollStep = scrollEle.offsetWidth;
3950
4044
  }
4045
+ if (this.activeLayout === 'Simplified') {
4046
+ var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');
4047
+ if (activePopup.length) {
4048
+ for (var i = 0; i < activePopup.length; i++) {
4049
+ var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);
4050
+ dropDownBtn.toggle();
4051
+ }
4052
+ }
4053
+ }
3951
4054
  };
3952
4055
  Ribbon.prototype.renderTabs = function () {
3953
4056
  this.tabsInternal = this.tabs.slice();
@@ -4273,7 +4376,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4273
4376
  }
4274
4377
  if (overflowDDB) {
4275
4378
  if (group.enableGroupOverflow) {
4276
- if (overflowtarget.childElementCount === 0) {
4379
+ if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {
4277
4380
  this.removeOverflowButton(overflowDDB);
4278
4381
  }
4279
4382
  }
@@ -4345,6 +4448,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4345
4448
  };
4346
4449
  Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {
4347
4450
  var overflowButton;
4451
+ var itemProp = getGroup(this.tabs, groupId);
4348
4452
  var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;
4349
4453
  var groupEle = contentEle.querySelector('#' + groupId);
4350
4454
  if (isGroupOF) {
@@ -4358,6 +4462,17 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4358
4462
  overflowButton = getInstance(overflowDDB, DropDownButton);
4359
4463
  }
4360
4464
  var overflowBtnTarget = overflowButton.target;
4465
+ var headerEle = overflowBtnTarget.querySelector('#' + groupId + GROUPOF_BUTTON_ID + HEADER_ID);
4466
+ if (!headerEle) {
4467
+ if (itemProp.group.overflowHeader) {
4468
+ var groupHeader_1 = this.createElement('div', {
4469
+ className: RIBBON_OVERFLOW_HEADER,
4470
+ id: groupId + GROUPOF_BUTTON_ID + HEADER_ID,
4471
+ innerHTML: itemProp.group.overflowHeader
4472
+ });
4473
+ overflowBtnTarget.append(groupHeader_1);
4474
+ }
4475
+ }
4361
4476
  if (groupEle) {
4362
4477
  if (groupEle.classList.contains('e-disabled')) {
4363
4478
  overflowBtnTarget.classList.add('e-disabled');
@@ -4386,7 +4501,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4386
4501
  if (ofTabContainer) {
4387
4502
  var ofGroupContainer = overflowEle.querySelector('#' + groupId + CONTAINER_ID);
4388
4503
  if (!ofGroupContainer) {
4389
- ofGroupContainer = this.createGroupContainer(groupId, groupHeader);
4504
+ ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);
4390
4505
  if (groupEle) {
4391
4506
  if (groupEle.classList.contains('e-disabled')) {
4392
4507
  ofGroupContainer.classList.add('e-disabled');
@@ -4434,7 +4549,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4434
4549
  break;
4435
4550
  case 'GroupButton':
4436
4551
  if (this.activeLayout === 'Simplified') {
4437
- this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);
4552
+ this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);
4438
4553
  break;
4439
4554
  }
4440
4555
  }
@@ -4446,7 +4561,8 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
4446
4561
  });
4447
4562
  var overflowtarget = this.overflowDDB.target;
4448
4563
  overflowtarget.append(ofTabContainer);
4449
- var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);
4564
+ var itemProp = getGroup(this.tabs, groupId);
4565
+ var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);
4450
4566
  ofGroupContainer.append(itemEle);
4451
4567
  ofTabContainer.append(ofGroupContainer);
4452
4568
  if (tabIndex === this.selectedTab) {
@@ -5303,9 +5419,10 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5303
5419
  },
5304
5420
  beforeClose: function (args) {
5305
5421
  var ele = args.event ? closest(args.event.target, '.' + RIBBON_POPUP_CONTROL) : null;
5422
+ var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;
5306
5423
  var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };
5307
5424
  _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {
5308
- if (ele || ribbonArgs.cancel) {
5425
+ if (ele || ribbonArgs.cancel || groupButtonEle) {
5309
5426
  args.cancel = true;
5310
5427
  }
5311
5428
  });
@@ -5327,8 +5444,10 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5327
5444
  var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');
5328
5445
  items = currentList.getElementsByClassName('e-ribbon-item');
5329
5446
  }
5330
- var comboBoxEle = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control').classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;
5447
+ var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');
5448
+ var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;
5331
5449
  var ribbonItem;
5450
+ var templateEle;
5332
5451
  if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {
5333
5452
  if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {
5334
5453
  if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {
@@ -5337,13 +5456,21 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5337
5456
  this.findDisabledItem(ribbonItem, items, true);
5338
5457
  if (comboBoxEle && e.key === 'Tab') {
5339
5458
  e.preventDefault();
5340
- items[this.itemIndex].querySelector('.e-control').focus();
5459
+ var item = items[this.itemIndex].querySelector('.e-control');
5460
+ if (item) {
5461
+ item.focus();
5462
+ }
5341
5463
  }
5464
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
5342
5465
  }
5343
5466
  else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {
5344
5467
  this.itemIndex++;
5345
5468
  ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');
5346
5469
  this.findDisabledItem(ribbonItem, items, true);
5470
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
5471
+ }
5472
+ if (templateEle) {
5473
+ templateEle.focus();
5347
5474
  }
5348
5475
  }
5349
5476
  else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {
@@ -5354,20 +5481,32 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5354
5481
  this.findDisabledItem(ribbonItem, items, false);
5355
5482
  if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {
5356
5483
  e.preventDefault();
5357
- items[this.itemIndex].querySelector('.e-control').focus();
5484
+ var item = items[this.itemIndex].querySelector('.e-control');
5485
+ if (item) {
5486
+ item.focus();
5487
+ }
5358
5488
  }
5489
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
5359
5490
  }
5360
5491
  else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {
5361
5492
  this.itemIndex--;
5362
5493
  ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');
5363
5494
  this.findDisabledItem(ribbonItem, items, false);
5495
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
5496
+ }
5497
+ if (templateEle) {
5498
+ templateEle.focus();
5364
5499
  }
5365
5500
  }
5366
5501
  }
5367
5502
  target.setAttribute('index', this.itemIndex.toString());
5368
5503
  }
5369
5504
  var currentItemIndex = parseInt(target.getAttribute('index'), 10);
5370
- var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;
5505
+ var itemType = "";
5506
+ var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;
5507
+ if (controlItem) {
5508
+ itemType = controlItem.getAttribute('data-control');
5509
+ }
5371
5510
  if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {
5372
5511
  if (itemType === 'ColorPicker') {
5373
5512
  if (e.key === 'Tab') {
@@ -5379,7 +5518,10 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5379
5518
  if (e.key === 'Tab') {
5380
5519
  e.preventDefault();
5381
5520
  }
5382
- items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();
5521
+ var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');
5522
+ if (elem) {
5523
+ elem.focus();
5524
+ }
5383
5525
  }
5384
5526
  if (e.key === ' ' && (itemType === 'CheckBox')) {
5385
5527
  var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');
@@ -5766,7 +5908,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
5766
5908
  this.setItemSize(ele, item);
5767
5909
  }
5768
5910
  if (group.enableGroupOverflow && overflowDDB) {
5769
- if (overflowtarget.childElementCount === 0) {
5911
+ if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {
5770
5912
  this.removeOverflowButton(overflowDDB);
5771
5913
  }
5772
5914
  }
@@ -6051,7 +6193,8 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
6051
6193
  Ribbon.prototype.createTemplateContent = function (item, itemElement) {
6052
6194
  var itemEle = this.createElement('div', {
6053
6195
  className: item.cssClass ? (RIBBON_TEMPLATE + SPACE + item.cssClass) : RIBBON_TEMPLATE,
6054
- id: item.id
6196
+ id: item.id,
6197
+ attrs: { 'tabindex': '-1' }
6055
6198
  });
6056
6199
  if (item.disabled) {
6057
6200
  itemEle.classList.add(DISABLED_CSS);
@@ -6527,7 +6670,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
6527
6670
  }
6528
6671
  if (this.activeLayout === RibbonLayout.Simplified) {
6529
6672
  if (itemProp.group.enableGroupOverflow) {
6530
- if (dropdown.target.childElementCount === 0) {
6673
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
6531
6674
  this.removeOverflowButton(dropdown);
6532
6675
  }
6533
6676
  }
@@ -6554,6 +6697,9 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
6554
6697
  this.refreshLayout();
6555
6698
  }
6556
6699
  };
6700
+ Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {
6701
+ return headerEle.querySelector('#' + groupID + GROUPOF_BUTTON_ID + HEADER_ID) ? true : false;
6702
+ };
6557
6703
  /**
6558
6704
  * Hides a specific group within a ribbon tab.
6559
6705
  *
@@ -7113,7 +7259,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
7113
7259
  }
7114
7260
  if (this.activeLayout === RibbonLayout.Simplified) {
7115
7261
  if (itemProp.group.enableGroupOverflow) {
7116
- if (dropdown.target.childElementCount === 0) {
7262
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
7117
7263
  this.removeOverflowButton(dropdown);
7118
7264
  }
7119
7265
  }
@@ -7332,7 +7478,7 @@ var Ribbon = /** @__PURE__ @class */ (function (_super) {
7332
7478
  }
7333
7479
  this.createRibbonItem(ribbonItem, itemContainer);
7334
7480
  if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {
7335
- if (dropdown.target.childElementCount === 0) {
7481
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
7336
7482
  this.removeOverflowButton(dropdown);
7337
7483
  }
7338
7484
  }
@@ -8343,6 +8489,9 @@ var RibbonBackstage = /** @__PURE__ @class */ (function (_super) {
8343
8489
  this.closeBtn.setProperties(commonProp);
8344
8490
  }
8345
8491
  }
8492
+ if (this.footerMenuCtrl) {
8493
+ this.footerMenuCtrl.setProperties(commonProp);
8494
+ }
8346
8495
  }
8347
8496
  }
8348
8497
  };