@syncfusion/ej2-ribbon 23.2.7 → 24.1.44

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 (82) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/README.md +1 -1
  3. package/dist/ej2-ribbon.umd.min.js +2 -2
  4. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-ribbon.es2015.js +541 -57
  6. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  7. package/dist/es6/ej2-ribbon.es5.js +561 -72
  8. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  9. package/dist/global/ej2-ribbon.min.js +2 -2
  10. package/dist/global/ej2-ribbon.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +13 -13
  13. package/src/ribbon/base/ribbon.d.ts +10 -0
  14. package/src/ribbon/base/ribbon.js +444 -53
  15. package/src/ribbon/items/ribbon-colorpicker.js +16 -0
  16. package/src/ribbon/items/ribbon-combobox.js +16 -0
  17. package/src/ribbon/items/ribbon-dropdown.js +5 -3
  18. package/src/ribbon/items/ribbon-groupbutton.d.ts +4 -1
  19. package/src/ribbon/items/ribbon-groupbutton.js +64 -15
  20. package/src/ribbon/models/ribbon-colorpicker-settings-model.d.ts +8 -1
  21. package/src/ribbon/models/ribbon-colorpicker-settings.d.ts +7 -1
  22. package/src/ribbon/models/ribbon-colorpicker-settings.js +4 -1
  23. package/src/ribbon/models/ribbon-combobox-settings-model.d.ts +7 -0
  24. package/src/ribbon/models/ribbon-combobox-settings.d.ts +6 -0
  25. package/src/ribbon/models/ribbon-combobox-settings.js +3 -0
  26. package/src/ribbon/models/ribbon-group-button-settings-model.d.ts +7 -0
  27. package/src/ribbon/models/ribbon-group-button-settings.d.ts +6 -0
  28. package/src/ribbon/models/ribbon-group-button-settings.js +3 -0
  29. package/src/ribbon/models/ribbon-group-model.d.ts +7 -0
  30. package/src/ribbon/models/ribbon-group.d.ts +6 -0
  31. package/src/ribbon/models/ribbon-group.js +3 -0
  32. package/src/ribbon/modules/ribbon-backstage.js +3 -0
  33. package/styles/bootstrap-dark.css +105 -26
  34. package/styles/bootstrap.css +104 -25
  35. package/styles/bootstrap4.css +104 -25
  36. package/styles/bootstrap5-dark.css +105 -26
  37. package/styles/bootstrap5.css +104 -25
  38. package/styles/fabric-dark.css +103 -24
  39. package/styles/fabric.css +104 -25
  40. package/styles/fluent-dark.css +104 -25
  41. package/styles/fluent.css +104 -25
  42. package/styles/highcontrast-light.css +103 -24
  43. package/styles/highcontrast.css +103 -24
  44. package/styles/material-dark.css +105 -26
  45. package/styles/material.css +105 -26
  46. package/styles/material3-dark.css +105 -26
  47. package/styles/material3.css +105 -26
  48. package/styles/ribbon/_bootstrap-dark-definition.scss +8 -0
  49. package/styles/ribbon/_bootstrap-definition.scss +8 -0
  50. package/styles/ribbon/_bootstrap4-definition.scss +8 -0
  51. package/styles/ribbon/_bootstrap5-definition.scss +8 -0
  52. package/styles/ribbon/_fabric-dark-definition.scss +8 -0
  53. package/styles/ribbon/_fabric-definition.scss +8 -0
  54. package/styles/ribbon/_fluent-definition.scss +8 -0
  55. package/styles/ribbon/_fusionnew-definition.scss +8 -0
  56. package/styles/ribbon/_highcontrast-definition.scss +8 -0
  57. package/styles/ribbon/_highcontrast-light-definition.scss +8 -0
  58. package/styles/ribbon/_layout.scss +69 -5
  59. package/styles/ribbon/_material-dark-definition.scss +9 -1
  60. package/styles/ribbon/_material-definition.scss +9 -1
  61. package/styles/ribbon/_material3-definition.scss +8 -2
  62. package/styles/ribbon/_tailwind-definition.scss +8 -0
  63. package/styles/ribbon/_theme.scss +34 -13
  64. package/styles/ribbon/bootstrap-dark.css +105 -26
  65. package/styles/ribbon/bootstrap.css +104 -25
  66. package/styles/ribbon/bootstrap4.css +104 -25
  67. package/styles/ribbon/bootstrap5-dark.css +105 -26
  68. package/styles/ribbon/bootstrap5.css +104 -25
  69. package/styles/ribbon/fabric-dark.css +103 -24
  70. package/styles/ribbon/fabric.css +104 -25
  71. package/styles/ribbon/fluent-dark.css +104 -25
  72. package/styles/ribbon/fluent.css +104 -25
  73. package/styles/ribbon/highcontrast-light.css +103 -24
  74. package/styles/ribbon/highcontrast.css +103 -24
  75. package/styles/ribbon/material-dark.css +105 -26
  76. package/styles/ribbon/material.css +105 -26
  77. package/styles/ribbon/material3-dark.css +105 -26
  78. package/styles/ribbon/material3.css +105 -26
  79. package/styles/ribbon/tailwind-dark.css +104 -25
  80. package/styles/ribbon/tailwind.css +104 -25
  81. package/styles/tailwind-dark.css +104 -25
  82. package/styles/tailwind.css +104 -25
@@ -59,6 +59,8 @@ var Ribbon = /** @class */ (function (_super) {
59
59
  this.idIndex = 0;
60
60
  this.tooltipData = [];
61
61
  this.initialPropsData = {};
62
+ this.hiddenElements = {};
63
+ this.hiddenGroups = [];
62
64
  this.isAddRemove = false;
63
65
  this.keyConfigs = {
64
66
  leftarrow: 'leftarrow',
@@ -132,7 +134,9 @@ var Ribbon = /** @class */ (function (_super) {
132
134
  e.preventDefault();
133
135
  }
134
136
  var activeContent = this.tabObj.element.querySelector('#' + this.tabs[this.selectedTab].id + constants.CONTENT_ID);
135
- var ribbonControls = activeContent.querySelectorAll('.e-control');
137
+ var controlElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-control'));
138
+ var templateElements = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-template'));
139
+ var ribbonControls = controlElements.concat(templateElements);
136
140
  var comboBoxElements = activeContent.querySelectorAll('.e-combobox');
137
141
  var comboBoxEle;
138
142
  if (comboBoxElements) {
@@ -161,7 +165,7 @@ var Ribbon = /** @class */ (function (_super) {
161
165
  if (e.target.classList.contains('e-control') || e.target.classList.contains('e-ribbon-launcher-icon') ||
162
166
  e.target.classList.contains('e-ribbon-collapse-btn') || e.target.classList.contains('e-ribbon-last-item') ||
163
167
  e.target.classList.contains('e-ribbon-first-item') || e.target.classList.contains('e-ribbon-group-of-btn') ||
164
- e.target.classList.contains('e-ribbon-overall-of-btn')) {
168
+ e.target.classList.contains('e-ribbon-overall-of-btn') || e.target.classList.contains('e-ribbon-template')) {
165
169
  switch (e.action) {
166
170
  case 'rightarrow':
167
171
  this.handleNavigation(e, !this.enableRtl, ribbonControls);
@@ -203,7 +207,7 @@ var Ribbon = /** @class */ (function (_super) {
203
207
  }
204
208
  }
205
209
  if ((!enableRtl && (this.currentControlIndex > 0)) || (enableRtl && (this.currentControlIndex < ribbonControls.length - 1))) {
206
- if (!e.target.classList.contains('e-combobox') && e.target.classList.contains('e-control') && !e.target.classList.contains('e-ribbon-last-item')) {
210
+ 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')) {
207
211
  if (enableRtl) {
208
212
  this.currentControlIndex++;
209
213
  }
@@ -237,7 +241,10 @@ var Ribbon = /** @class */ (function (_super) {
237
241
  }
238
242
  if (launcherIconEle) {
239
243
  var items = groupContainer.querySelectorAll('.e-ribbon-item');
240
- items[items.length - 1].querySelector('.e-control').classList.add('e-ribbon-last-item');
244
+ var elem = items[items.length - 1].querySelector('.e-control');
245
+ if (elem) {
246
+ elem.classList.add('e-ribbon-last-item');
247
+ }
241
248
  }
242
249
  }
243
250
  else {
@@ -350,6 +357,15 @@ var Ribbon = /** @class */ (function (_super) {
350
357
  var scrollEle = this.tabObj.element.querySelector('.' + constants.HORIZONTAL_SCROLLBAR);
351
358
  this.scrollModule.scrollStep = scrollEle.offsetWidth;
352
359
  }
360
+ if (this.activeLayout === 'Simplified') {
361
+ var activePopup = document.querySelectorAll('.e-ribbon .e-dropdown-btn.e-active, .e-ribbon-group-overflow-ddb .e-dropdown-btn.e-active');
362
+ if (activePopup.length) {
363
+ for (var i = 0; i < activePopup.length; i++) {
364
+ var dropDownBtn = getInstance(activePopup[parseInt(i.toString(), 10)], DropDownButton);
365
+ dropDownBtn.toggle();
366
+ }
367
+ }
368
+ }
353
369
  };
354
370
  Ribbon.prototype.renderTabs = function () {
355
371
  this.tabsInternal = this.tabs.slice();
@@ -417,6 +433,7 @@ var Ribbon = /** @class */ (function (_super) {
417
433
  selectedIndex = selectedIndex === -1 ? this.selectedTab : selectedIndex;
418
434
  var eventArgs = { previousIndex: this.selectedTab, selectedIndex: selectedIndex };
419
435
  this.setProperties({ selectedTab: selectedIndex }, true);
436
+ this.calculateHiddenElementsWidth(selectedIndex);
420
437
  this.checkOverflow(selectedIndex, e.selectedContent.firstChild);
421
438
  if (this.activeLayout === 'Simplified' && this.overflowDDB) {
422
439
  var overflowTarget = this.overflowDDB.target;
@@ -540,6 +557,7 @@ var Ribbon = /** @class */ (function (_super) {
540
557
  var orderedGroups = this.getGroupResizeOrder(true, tabIndex);
541
558
  var isEmptyCollection;
542
559
  for (var i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {
560
+ var isGroupUpdated = false;
543
561
  var group = orderedGroups[parseInt(i.toString(), 10)];
544
562
  var groupEle = tabContent.querySelector('#' + group.id);
545
563
  var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);
@@ -551,7 +569,67 @@ var Ribbon = /** @class */ (function (_super) {
551
569
  var itemContainer = collectionEle.querySelector('#' + item.id + constants.CONTAINER_ID);
552
570
  if (((item.displayOptions === DisplayMode.Auto) ||
553
571
  (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {
554
- itemContainer.setAttribute('data-simplified-width', activeContent.offsetWidth.toString());
572
+ var groupHidden = false;
573
+ var itemHidden = false;
574
+ var isAllItemHidden = false;
575
+ var isEmptyCollection_1 = false;
576
+ var groupItems = void 0;
577
+ if (groupEle.classList.contains('e-hidden') || groupEle.classList.contains('e-hide-group')) {
578
+ groupItems = groupEle.querySelectorAll('.e-ribbon-item.e-hidden');
579
+ if (groupItems.length) {
580
+ for (var i_1 = 0; i_1 < groupItems.length; i_1++) {
581
+ groupItems[parseInt(i_1.toString(), 10)].classList.remove('e-hidden');
582
+ }
583
+ }
584
+ if (groupEle.classList.contains('e-hide-group')) {
585
+ isAllItemHidden = true;
586
+ groupEle.classList.remove('e-hide-group');
587
+ groupEle.classList.remove('e-ribbon-emptyCollection');
588
+ if (this.hiddenGroups.indexOf(groupEle.id) !== -1) {
589
+ this.hiddenGroups.splice(this.hiddenGroups.indexOf(groupEle.id), 1);
590
+ }
591
+ }
592
+ else {
593
+ groupHidden = true;
594
+ groupEle.classList.remove('e-hidden');
595
+ }
596
+ if (!isGroupUpdated) {
597
+ this.calculateOverflowItemsWidth(groupEle.offsetWidth, false, tabIndex);
598
+ this.calculateMediumDataWidth(groupEle.offsetWidth, tabIndex, false);
599
+ isGroupUpdated = true;
600
+ }
601
+ }
602
+ else {
603
+ if (itemContainer.classList.contains('e-hidden')) {
604
+ itemHidden = true;
605
+ itemContainer.classList.remove('e-hidden');
606
+ if (groupEle.classList.contains('e-ribbon-emptyCollection')) {
607
+ isEmptyCollection_1 = true;
608
+ groupEle.classList.remove('e-ribbon-emptyCollection');
609
+ }
610
+ this.calculateOverflowItemsWidth(itemContainer.offsetWidth, false, tabIndex);
611
+ this.calculateMediumDataWidth(itemContainer.offsetWidth, tabIndex, false);
612
+ }
613
+ }
614
+ itemContainer.setAttribute('data-simplified-width', (activeContent.offsetWidth).toString());
615
+ if (itemHidden) {
616
+ itemContainer.classList.add('e-hidden');
617
+ }
618
+ if (groupItems && groupItems.length) {
619
+ for (var i_2 = 0; i_2 < groupItems.length; i_2++) {
620
+ groupItems[parseInt(i_2.toString(), 10)].classList.add('e-hidden');
621
+ }
622
+ }
623
+ if (groupHidden) {
624
+ groupEle.classList.add('e-hidden');
625
+ }
626
+ if (isAllItemHidden) {
627
+ groupEle.classList.add('e-hide-group');
628
+ groupEle.classList.add('e-ribbon-emptyCollection');
629
+ }
630
+ if (isEmptyCollection_1) {
631
+ groupEle.classList.add('e-ribbon-emptyCollection');
632
+ }
555
633
  this.createOverflowPopup(item, tabIndex, group.enableGroupOverflow, group.id, group.header, itemContainer, groupContainer, true);
556
634
  if (item.activeSize === RibbonItemSize.Small) {
557
635
  var itemEle = itemContainer.querySelector('#' + item.id);
@@ -645,37 +723,61 @@ var Ribbon = /** @class */ (function (_super) {
645
723
  if (((item.displayOptions === DisplayMode.Auto) ||
646
724
  (item.displayOptions === (DisplayMode.Simplified | DisplayMode.Overflow))) && !isNullOrUndefined(itemContainer)) {
647
725
  var width = parseInt(itemContainer.getAttribute('data-simplified-width'), 10);
726
+ var groupItemEle = tabContent.querySelector('#' + group.id);
727
+ if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {
728
+ width = Math.abs(width - activeContent.offsetWidth);
729
+ }
648
730
  if (!isClear && (tabContent.offsetWidth < width)) {
649
731
  flag = false;
650
732
  break;
651
733
  }
652
- var groupEle_1 = tabContent.querySelector('#' + collection.id);
734
+ var groupEle = tabContent.querySelector('#' + collection.id);
653
735
  if ((item.type === RibbonItemType.DropDown) || (item.type === RibbonItemType.SplitButton) || (item.type === RibbonItemType.GroupButton)) {
654
736
  this.updatePopupItems(item, itemContainer, group.enableGroupOverflow, false);
655
737
  }
656
- groupEle_1.append(itemContainer);
738
+ groupEle.append(itemContainer);
739
+ if (itemContainer.classList.contains('e-hidden') || groupItemEle.classList.contains('e-hidden')) {
740
+ itemContainer.setAttribute('data-simplified-width', width.toString());
741
+ var isGroupHidden = false;
742
+ var widthDifference = 0;
743
+ if (itemContainer.classList.contains('e-hidden')) {
744
+ itemContainer.classList.remove('e-hidden');
745
+ if (groupItemEle.classList.contains('e-hide-group')) {
746
+ isGroupHidden = true;
747
+ widthDifference = this.checkWidthDifference(itemContainer, groupItemEle);
748
+ }
749
+ width = itemContainer.offsetWidth + widthDifference;
750
+ itemContainer.classList.add('e-hidden');
751
+ }
752
+ this.calculateOverflowItemsWidth(width, true, tabIndex);
753
+ this.calculateMediumDataWidth(width, tabIndex, true);
754
+ if (isGroupHidden) {
755
+ groupItemEle.classList.add('e-hide-group');
756
+ groupItemEle.classList.add('e-ribbon-emptyCollection');
757
+ }
758
+ }
657
759
  this.removeOverflowEvent(item, itemContainer);
658
760
  if (item.allowedSizes & RibbonItemSize.Small) {
659
761
  item.setProperties({ activeSize: RibbonItemSize.Small }, true);
660
762
  this.setItemSize(itemContainer.querySelector('#' + item.id), item);
661
763
  }
662
- }
663
- }
664
- }
665
- var groupEle = tabContent.querySelector('#' + group.id);
666
- var itemEle = groupEle.querySelector('.' + constants.RIBBON_ITEM);
667
- if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {
668
- var itemsLength = groupEle.querySelectorAll('.' + constants.RIBBON_ITEM);
669
- if (itemsLength) {
670
- isEmptyCollection = this.checkEmptyCollection(itemsLength);
671
- if (!isEmptyCollection) {
672
- groupEle.classList.remove('e-ribbon-emptyCollection');
764
+ var groupElement = tabContent.querySelector('#' + group.id);
765
+ var itemEle = groupElement.querySelector('.' + constants.RIBBON_ITEM);
766
+ if (groupElement.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {
767
+ var itemsLength = groupElement.querySelectorAll('.' + constants.RIBBON_ITEM);
768
+ if (itemsLength) {
769
+ isEmptyCollection = this.checkEmptyCollection(itemsLength);
770
+ if (!isEmptyCollection) {
771
+ groupElement.classList.remove('e-ribbon-emptyCollection');
772
+ }
773
+ }
774
+ }
673
775
  }
674
776
  }
675
777
  }
676
778
  if (overflowDDB) {
677
779
  if (group.enableGroupOverflow) {
678
- if (overflowtarget.childElementCount === 0) {
780
+ if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {
679
781
  this.removeOverflowButton(overflowDDB);
680
782
  }
681
783
  }
@@ -691,7 +793,9 @@ var Ribbon = /** @class */ (function (_super) {
691
793
  }
692
794
  }
693
795
  }
694
- this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);
796
+ }
797
+ for (var i = 0; i < orderedGroups.length; i++) {
798
+ this.checkOverflowHiddenItems(orderedGroups[parseInt(i.toString(), 10)].enableGroupOverflow, tabIndex, orderedGroups[parseInt(i.toString(), 10)].id);
695
799
  }
696
800
  if (this.overflowDDB) {
697
801
  var overflowEle = this.overflowDDB.target;
@@ -747,6 +851,7 @@ var Ribbon = /** @class */ (function (_super) {
747
851
  };
748
852
  Ribbon.prototype.createOverflowPopup = function (item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {
749
853
  var overflowButton;
854
+ var itemProp = getGroup(this.tabs, groupId);
750
855
  var contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;
751
856
  var groupEle = contentEle.querySelector('#' + groupId);
752
857
  if (isGroupOF) {
@@ -760,6 +865,17 @@ var Ribbon = /** @class */ (function (_super) {
760
865
  overflowButton = getInstance(overflowDDB, DropDownButton);
761
866
  }
762
867
  var overflowBtnTarget = overflowButton.target;
868
+ var headerEle = overflowBtnTarget.querySelector('#' + groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID);
869
+ if (!headerEle) {
870
+ if (itemProp.group.overflowHeader) {
871
+ var groupHeader_1 = this.createElement('div', {
872
+ className: constants.RIBBON_OVERFLOW_HEADER,
873
+ id: groupId + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID,
874
+ innerHTML: itemProp.group.overflowHeader
875
+ });
876
+ overflowBtnTarget.append(groupHeader_1);
877
+ }
878
+ }
763
879
  if (groupEle) {
764
880
  if (groupEle.classList.contains('e-disabled')) {
765
881
  overflowBtnTarget.classList.add('e-disabled');
@@ -788,7 +904,7 @@ var Ribbon = /** @class */ (function (_super) {
788
904
  if (ofTabContainer) {
789
905
  var ofGroupContainer = overflowEle.querySelector('#' + groupId + constants.CONTAINER_ID);
790
906
  if (!ofGroupContainer) {
791
- ofGroupContainer = this.createGroupContainer(groupId, groupHeader);
907
+ ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);
792
908
  if (groupEle) {
793
909
  if (groupEle.classList.contains('e-disabled')) {
794
910
  ofGroupContainer.classList.add('e-disabled');
@@ -836,7 +952,7 @@ var Ribbon = /** @class */ (function (_super) {
836
952
  break;
837
953
  case 'GroupButton':
838
954
  if (this.activeLayout === 'Simplified') {
839
- this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle);
955
+ this.ribbonGroupButtonModule.addOverFlowEvents(item, itemEle, overflowButton);
840
956
  break;
841
957
  }
842
958
  }
@@ -848,7 +964,8 @@ var Ribbon = /** @class */ (function (_super) {
848
964
  });
849
965
  var overflowtarget = this.overflowDDB.target;
850
966
  overflowtarget.append(ofTabContainer);
851
- var ofGroupContainer = this.createGroupContainer(groupId, groupHeader);
967
+ var itemProp = getGroup(this.tabs, groupId);
968
+ var ofGroupContainer = itemProp.group.overflowHeader ? this.createGroupContainer(groupId, itemProp.group.overflowHeader) : this.createGroupContainer(groupId, groupHeader);
852
969
  ofGroupContainer.append(itemEle);
853
970
  ofTabContainer.append(ofGroupContainer);
854
971
  if (tabIndex === this.selectedTab) {
@@ -1705,9 +1822,10 @@ var Ribbon = /** @class */ (function (_super) {
1705
1822
  },
1706
1823
  beforeClose: function (args) {
1707
1824
  var ele = args.event ? closest(args.event.target, '.' + constants.RIBBON_POPUP_CONTROL) : null;
1825
+ var groupButtonEle = args.event ? closest(args.event.target, '.e-ribbon-group-button-overflow-popup') : null;
1708
1826
  var eventArgs = { element: args.element, event: args.event, cancel: args.cancel };
1709
1827
  _this.trigger('overflowPopupClose', eventArgs, function (ribbonArgs) {
1710
- if (ele || ribbonArgs.cancel) {
1828
+ if (ele || ribbonArgs.cancel || groupButtonEle) {
1711
1829
  args.cancel = true;
1712
1830
  }
1713
1831
  });
@@ -1729,8 +1847,10 @@ var Ribbon = /** @class */ (function (_super) {
1729
1847
  var currentList = target.querySelector('.e-ribbon-of-tab.e-ribbon-active');
1730
1848
  items = currentList.getElementsByClassName('e-ribbon-item');
1731
1849
  }
1732
- 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;
1850
+ var control = items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-control');
1851
+ var comboBoxEle = control && control.classList.contains('e-combobox') ? items[(!this.itemIndex || this.itemIndex < 0) ? 0 : this.itemIndex].querySelector('.e-combobox') : null;
1733
1852
  var ribbonItem;
1853
+ var templateEle;
1734
1854
  if (comboBoxEle === null || (e.key === 'Tab') || this.itemIndex < 0) {
1735
1855
  if (e.key === 'ArrowDown' || (!e.shiftKey && e.key === 'Tab')) {
1736
1856
  if ((!this.itemIndex && this.itemIndex !== 0) || this.itemIndex < 0 || this.itemIndex === items.length - 1) {
@@ -1739,13 +1859,21 @@ var Ribbon = /** @class */ (function (_super) {
1739
1859
  this.findDisabledItem(ribbonItem, items, true);
1740
1860
  if (comboBoxEle && e.key === 'Tab') {
1741
1861
  e.preventDefault();
1742
- items[this.itemIndex].querySelector('.e-control').focus();
1862
+ var item = items[this.itemIndex].querySelector('.e-control');
1863
+ if (item) {
1864
+ item.focus();
1865
+ }
1743
1866
  }
1867
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
1744
1868
  }
1745
1869
  else if (this.itemIndex < items.length - 1 && this.itemIndex >= 0) {
1746
1870
  this.itemIndex++;
1747
1871
  ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');
1748
1872
  this.findDisabledItem(ribbonItem, items, true);
1873
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
1874
+ }
1875
+ if (templateEle) {
1876
+ templateEle.focus();
1749
1877
  }
1750
1878
  }
1751
1879
  else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {
@@ -1756,20 +1884,32 @@ var Ribbon = /** @class */ (function (_super) {
1756
1884
  this.findDisabledItem(ribbonItem, items, false);
1757
1885
  if (comboBoxEle && (e.shiftKey && e.key === 'Tab')) {
1758
1886
  e.preventDefault();
1759
- items[this.itemIndex].querySelector('.e-control').focus();
1887
+ var item = items[this.itemIndex].querySelector('.e-control');
1888
+ if (item) {
1889
+ item.focus();
1890
+ }
1760
1891
  }
1892
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
1761
1893
  }
1762
1894
  else if (this.itemIndex <= items.length - 1 && this.itemIndex > 0) {
1763
1895
  this.itemIndex--;
1764
1896
  ribbonItem = items[this.itemIndex].closest('.e-ribbon-item');
1765
1897
  this.findDisabledItem(ribbonItem, items, false);
1898
+ templateEle = items[this.itemIndex].querySelector('.e-ribbon-template');
1899
+ }
1900
+ if (templateEle) {
1901
+ templateEle.focus();
1766
1902
  }
1767
1903
  }
1768
1904
  }
1769
1905
  target.setAttribute('index', this.itemIndex.toString());
1770
1906
  }
1771
1907
  var currentItemIndex = parseInt(target.getAttribute('index'), 10);
1772
- var itemType = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').getAttribute('data-control') : null;
1908
+ var itemType = "";
1909
+ var controlItem = items[parseInt(currentItemIndex.toString(), 10)] ? items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control') : null;
1910
+ if (controlItem) {
1911
+ itemType = controlItem.getAttribute('data-control');
1912
+ }
1773
1913
  if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === ' ' || e.key === 'Tab') {
1774
1914
  if (itemType === 'ColorPicker') {
1775
1915
  if (e.key === 'Tab') {
@@ -1781,7 +1921,10 @@ var Ribbon = /** @class */ (function (_super) {
1781
1921
  if (e.key === 'Tab') {
1782
1922
  e.preventDefault();
1783
1923
  }
1784
- items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control').focus();
1924
+ var elem = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');
1925
+ if (elem) {
1926
+ elem.focus();
1927
+ }
1785
1928
  }
1786
1929
  if (e.key === ' ' && (itemType === 'CheckBox')) {
1787
1930
  var checkBoxEle = items[parseInt(currentItemIndex.toString(), 10)].querySelector('.e-control');
@@ -1989,22 +2132,22 @@ var Ribbon = /** @class */ (function (_super) {
1989
2132
  var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);
1990
2133
  var tabContent = activeContent.closest('.' + constants.TAB_CONTENT);
1991
2134
  if (this.activeLayout === 'Simplified') {
1992
- for (var i_1 = 0; i_1 < groupList.length; i_1++) {
1993
- var group = groupList[parseInt(i_1.toString(), 10)];
1994
- var alignType = groupList[parseInt(i_1.toString(), 10)].orientation;
2135
+ for (var i_3 = 0; i_3 < groupList.length; i_3++) {
2136
+ var group = groupList[parseInt(i_3.toString(), 10)];
2137
+ var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;
1995
2138
  if (group.isCollapsed) {
1996
2139
  group.setProperties({ isCollapsed: false }, true);
1997
2140
  this.removeDropdown(group.id);
1998
2141
  }
1999
2142
  else {
2000
- this.checkSmallToMedium(tabIndex, tab, i_1, tabContent, activeContent, true, false);
2001
- this.checkMediumToLarge(tabIndex, tab, i_1, tabContent, activeContent, true, false);
2143
+ this.checkSmallToMedium(tabIndex, tab, i_3, tabContent, activeContent, true, false);
2144
+ this.checkMediumToLarge(tabIndex, tab, i_3, tabContent, activeContent, true, false);
2002
2145
  }
2003
2146
  var groupEle = tabContent.querySelector('#' + group.id);
2004
2147
  var groupContainer = groupEle.querySelector('#' + group.id + constants.CONTAINER_ID);
2005
2148
  var shrinkColumns = groupContainer.querySelectorAll('.' + 'e-ribbon-shrink');
2006
- for (var i_2 = 0; i_2 < shrinkColumns.length; i_2++) {
2007
- shrinkColumns[parseInt(i_2.toString(), 10)].remove();
2149
+ for (var i_4 = 0; i_4 < shrinkColumns.length; i_4++) {
2150
+ shrinkColumns[parseInt(i_4.toString(), 10)].remove();
2008
2151
  }
2009
2152
  var groupHeader = groupContainer.querySelector('#' + group.id + constants.HEADER_ID);
2010
2153
  groupHeader.remove();
@@ -2072,9 +2215,9 @@ var Ribbon = /** @class */ (function (_super) {
2072
2215
  }
2073
2216
  else {
2074
2217
  this.element.classList.remove(constants.RIBBON_OVERFLOW);
2075
- for (var i_3 = 0; i_3 < groupList.length; i_3++) {
2076
- var group = groupList[parseInt(i_3.toString(), 10)];
2077
- var alignType = groupList[parseInt(i_3.toString(), 10)].orientation;
2218
+ for (var i_5 = 0; i_5 < groupList.length; i_5++) {
2219
+ var group = groupList[parseInt(i_5.toString(), 10)];
2220
+ var alignType = groupList[parseInt(i_5.toString(), 10)].orientation;
2078
2221
  var groupContainer = tabContent.querySelector('#' + group.id + constants.CONTAINER_ID);
2079
2222
  var groupContent = groupContainer.querySelector('#' + group.id + constants.CONTENT_ID);
2080
2223
  var groupHeader = this.createElement('div', {
@@ -2168,7 +2311,7 @@ var Ribbon = /** @class */ (function (_super) {
2168
2311
  this.setItemSize(ele, item);
2169
2312
  }
2170
2313
  if (group.enableGroupOverflow && overflowDDB) {
2171
- if (overflowtarget.childElementCount === 0) {
2314
+ if (overflowtarget.childElementCount === 0 || (overflowtarget.childElementCount === 1 && this.isHeaderVisible(overflowtarget, group.id))) {
2172
2315
  this.removeOverflowButton(overflowDDB);
2173
2316
  }
2174
2317
  }
@@ -2453,7 +2596,8 @@ var Ribbon = /** @class */ (function (_super) {
2453
2596
  Ribbon.prototype.createTemplateContent = function (item, itemElement) {
2454
2597
  var itemEle = this.createElement('div', {
2455
2598
  className: item.cssClass ? (constants.RIBBON_TEMPLATE + constants.SPACE + item.cssClass) : constants.RIBBON_TEMPLATE,
2456
- id: item.id
2599
+ id: item.id,
2600
+ attrs: { 'tabindex': '-1' }
2457
2601
  });
2458
2602
  if (item.disabled) {
2459
2603
  itemEle.classList.add(constants.DISABLED_CSS);
@@ -2547,15 +2691,15 @@ var Ribbon = /** @class */ (function (_super) {
2547
2691
  var moduleName = this.getItemModuleName(item);
2548
2692
  if (moduleName !== 'template') {
2549
2693
  if (moduleName === 'group-btn' && this.activeLayout === 'Classic') {
2550
- for (var i_4 = 0; i_4 < item.groupButtonSettings.items.length; i_4++) {
2551
- var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_4);
2694
+ for (var i_6 = 0; i_6 < item.groupButtonSettings.items.length; i_6++) {
2695
+ var btnEle = ele.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_6);
2552
2696
  updateCommonProperty(btnEle, 'btn', commonProp);
2553
2697
  }
2554
2698
  }
2555
2699
  else if (moduleName === 'group-btn' && this.activeLayout === 'Simplified') {
2556
2700
  updateCommonProperty(ele, 'dropdown-btn', commonProp);
2557
- for (var i_5 = 0; i_5 < item.groupButtonSettings.items.length; i_5++) {
2558
- var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_5);
2701
+ for (var i_7 = 0; i_7 < item.groupButtonSettings.items.length; i_7++) {
2702
+ var btnEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i_7);
2559
2703
  updateCommonProperty(btnEle, 'btn', commonProp);
2560
2704
  }
2561
2705
  }
@@ -2929,7 +3073,7 @@ var Ribbon = /** @class */ (function (_super) {
2929
3073
  }
2930
3074
  if (this.activeLayout === RibbonLayout.Simplified) {
2931
3075
  if (itemProp.group.enableGroupOverflow) {
2932
- if (dropdown.target.childElementCount === 0) {
3076
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
2933
3077
  this.removeOverflowButton(dropdown);
2934
3078
  }
2935
3079
  }
@@ -2956,6 +3100,9 @@ var Ribbon = /** @class */ (function (_super) {
2956
3100
  this.refreshLayout();
2957
3101
  }
2958
3102
  };
3103
+ Ribbon.prototype.isHeaderVisible = function (headerEle, groupID) {
3104
+ return headerEle.querySelector('#' + groupID + constants.GROUPOF_BUTTON_ID + constants.HEADER_ID) ? true : false;
3105
+ };
2959
3106
  /**
2960
3107
  * Hides a specific group within a ribbon tab.
2961
3108
  *
@@ -2984,7 +3131,7 @@ var Ribbon = /** @class */ (function (_super) {
2984
3131
  var contentEle = this.tabObj.items[itemProp.tabIndex].content;
2985
3132
  var groupEle = contentEle.querySelector('#' + groupID);
2986
3133
  if (groupEle) {
2987
- isHidden ? groupEle.classList.add('e-hidden') : groupEle.classList.remove('e-hidden');
3134
+ this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideGroup' : 'showGroup', groupID, isHidden, groupEle);
2988
3135
  }
2989
3136
  else {
2990
3137
  this.updateInitialProps(itemProp.tabIndex, groupID, 'hiddenGroups', isHidden);
@@ -3009,7 +3156,244 @@ var Ribbon = /** @class */ (function (_super) {
3009
3156
  }
3010
3157
  }
3011
3158
  }
3012
- this.refreshLayout();
3159
+ if (this.selectedTab === itemProp.tabIndex) {
3160
+ this.refreshLayout();
3161
+ }
3162
+ };
3163
+ Ribbon.prototype.updateHiddenElements = function (tabIndex, key, id, isHidden, element, group) {
3164
+ if (isHidden) {
3165
+ if (!(element.classList.contains('e-hidden'))) {
3166
+ this.checkHiddenElements(key, id, tabIndex);
3167
+ element.classList.add('e-hidden');
3168
+ if (key === 'hideItem') {
3169
+ this.checkHiddenItems(group, isHidden, tabIndex);
3170
+ }
3171
+ this.calculateHiddenElementsWidth(tabIndex);
3172
+ }
3173
+ }
3174
+ else {
3175
+ if (element.classList.contains('e-hidden')) {
3176
+ this.checkHiddenElements(key, id, tabIndex);
3177
+ element.classList.remove('e-hidden');
3178
+ this.calculateHiddenElementsWidth(tabIndex);
3179
+ if (key === 'showItem') {
3180
+ this.checkHiddenItems(group, isHidden, tabIndex);
3181
+ }
3182
+ }
3183
+ }
3184
+ };
3185
+ Ribbon.prototype.checkHiddenElements = function (key, id, tabIndex) {
3186
+ if (this.activeLayout === 'Simplified') {
3187
+ var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];
3188
+ if (!hiddenProps) {
3189
+ this.hiddenElements[parseInt(tabIndex.toString(), 10)] = {};
3190
+ hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];
3191
+ }
3192
+ if (hiddenProps) {
3193
+ /* eslint-disable */
3194
+ if (!hiddenProps[key]) {
3195
+ hiddenProps[key] = [];
3196
+ }
3197
+ if (hiddenProps[key].length) {
3198
+ var index = hiddenProps[key].indexOf(id);
3199
+ if (index === -1) {
3200
+ hiddenProps[key].push(id);
3201
+ }
3202
+ }
3203
+ else {
3204
+ hiddenProps[key].push(id);
3205
+ }
3206
+ /* eslint-enable */
3207
+ }
3208
+ }
3209
+ };
3210
+ Ribbon.prototype.updateItemsSimplifiedWidth = function (tabIndex, key) {
3211
+ var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];
3212
+ /* eslint-disable */
3213
+ if (hiddenProps && hiddenProps[key] && hiddenProps[key].length) {
3214
+ var _loop_4 = function (i) {
3215
+ var contentEle = this_4.tabObj.items[tabIndex].content;
3216
+ var hiddenEle;
3217
+ var groupEle = void 0;
3218
+ var isGroupHidden = false;
3219
+ var widthDifference = 0;
3220
+ if (key === 'hideGroup' || key === 'showGroup') {
3221
+ hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i]);
3222
+ }
3223
+ else {
3224
+ hiddenEle = contentEle.querySelector('#' + hiddenProps[key][i] + constants.CONTAINER_ID);
3225
+ }
3226
+ if (hiddenEle) {
3227
+ if (key === 'hideGroup' || key === 'hideItem') {
3228
+ var isHidden = false;
3229
+ if (hiddenEle.classList.contains('e-hidden')) {
3230
+ isHidden = true;
3231
+ hiddenEle.classList.remove('e-hidden');
3232
+ }
3233
+ if (key === 'hideItem') {
3234
+ groupEle = hiddenEle.closest('.e-ribbon-group');
3235
+ if (groupEle.classList.contains('e-hide-group')) {
3236
+ isGroupHidden = true;
3237
+ widthDifference = this_4.checkWidthDifference(hiddenEle, groupEle);
3238
+ }
3239
+ }
3240
+ this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, true, tabIndex);
3241
+ this_4.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, true);
3242
+ if (isHidden) {
3243
+ hiddenEle.classList.add('e-hidden');
3244
+ }
3245
+ }
3246
+ else {
3247
+ if (key === 'showItem') {
3248
+ groupEle = hiddenEle.closest('.e-ribbon-group');
3249
+ if (groupEle.classList.contains('e-hide-group')) {
3250
+ isGroupHidden = true;
3251
+ groupEle.classList.remove('e-hide-group');
3252
+ groupEle.classList.remove('e-ribbon-emptyCollection');
3253
+ widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);
3254
+ if (this_4.hiddenGroups.indexOf(groupEle.id) !== -1) {
3255
+ this_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);
3256
+ }
3257
+ }
3258
+ else {
3259
+ if (this_4.hiddenGroups.indexOf(groupEle.id) !== -1) {
3260
+ var hiddenItems = groupEle.querySelectorAll('.e-ribbon-item:not(.e-hidden)');
3261
+ hiddenItems.forEach(function (item) {
3262
+ if (item.id !== hiddenEle.id) {
3263
+ item.classList.add('e-hidden');
3264
+ }
3265
+ });
3266
+ widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);
3267
+ hiddenItems.forEach(function (item) {
3268
+ if (item.id !== hiddenEle.id) {
3269
+ item.classList.remove('e-hidden');
3270
+ }
3271
+ });
3272
+ this_4.hiddenGroups.splice(this_4.hiddenGroups.indexOf(groupEle.id), 1);
3273
+ }
3274
+ }
3275
+ }
3276
+ this_4.calculateOverflowItemsWidth(hiddenEle.offsetWidth + widthDifference, false, tabIndex);
3277
+ this_4.calculateMediumDataWidth(hiddenEle.offsetWidth + widthDifference, tabIndex, false);
3278
+ }
3279
+ if (isGroupHidden) {
3280
+ groupEle.classList.add('e-hide-group');
3281
+ groupEle.classList.add('e-ribbon-emptyCollection');
3282
+ }
3283
+ }
3284
+ var index = hiddenProps[key].indexOf(hiddenProps[key][i]);
3285
+ if (index !== -1) {
3286
+ hiddenProps[key].splice(index, 1);
3287
+ i--;
3288
+ }
3289
+ out_i_1 = i;
3290
+ };
3291
+ var this_4 = this, out_i_1;
3292
+ for (var i = 0; i < hiddenProps[key].length; i++) {
3293
+ _loop_4(i);
3294
+ i = out_i_1;
3295
+ }
3296
+ }
3297
+ };
3298
+ Ribbon.prototype.checkWidthDifference = function (hiddenEle, groupEle) {
3299
+ var widthDifference = 0;
3300
+ groupEle.classList.remove('e-hide-group');
3301
+ groupEle.classList.remove('e-ribbon-emptyCollection');
3302
+ if (this.hiddenGroups.length) {
3303
+ if (this.hiddenGroups.indexOf(groupEle.id) === -1) {
3304
+ this.hiddenGroups.push(groupEle.id);
3305
+ widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);
3306
+ }
3307
+ }
3308
+ else {
3309
+ this.hiddenGroups.push(groupEle.id);
3310
+ widthDifference = Math.abs(hiddenEle.offsetWidth - groupEle.offsetWidth);
3311
+ }
3312
+ return widthDifference;
3313
+ };
3314
+ Ribbon.prototype.calculateHiddenElementsWidth = function (tabIndex) {
3315
+ if (tabIndex === this.selectedTab && this.activeLayout === 'Simplified') {
3316
+ var hiddenProps = this.hiddenElements[parseInt(tabIndex.toString(), 10)];
3317
+ if (hiddenProps) {
3318
+ for (var i = 0; i < Object.keys(hiddenProps).length; i++) {
3319
+ this.updateItemsSimplifiedWidth(tabIndex, Object.keys(hiddenProps)[parseInt(i.toString(), 10)]);
3320
+ }
3321
+ }
3322
+ }
3323
+ };
3324
+ Ribbon.prototype.calculateMediumDataWidth = function (hiddenWidth, tabIndex, isHidden) {
3325
+ if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {
3326
+ var activeContent = this.tabObj.element.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.CONTENT_ID);
3327
+ var mediumDataItems = Array.prototype.slice.call(activeContent.querySelectorAll('.e-ribbon-item'));
3328
+ if (this.overflowDDB) {
3329
+ var overflowEle = this.overflowDDB.target;
3330
+ var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');
3331
+ var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);
3332
+ for (var i = 0; i < overflowItems.length; i++) {
3333
+ var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);
3334
+ if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id && overflowItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {
3335
+ mediumDataItems.push(overflowItems[parseInt(i.toString(), 10)]);
3336
+ }
3337
+ }
3338
+ }
3339
+ var groupOFButton = activeContent.querySelectorAll('.e-ribbon-group-of-btn');
3340
+ for (var i = 0; i < groupOFButton.length; i++) {
3341
+ var overflowButton = getInstance(groupOFButton[parseInt(i.toString(), 10)], DropDownButton);
3342
+ var overflowBtnTarget = overflowButton.target;
3343
+ var overflowItems = overflowBtnTarget.querySelectorAll('.e-ribbon-item');
3344
+ for (var i_8 = 0; i_8 < overflowItems.length; i_8++) {
3345
+ if (overflowItems[parseInt(i_8.toString(), 10)].hasAttribute('data-medium-width')) {
3346
+ mediumDataItems.push(overflowItems[parseInt(i_8.toString(), 10)]);
3347
+ }
3348
+ }
3349
+ }
3350
+ for (var i = 0; i < mediumDataItems.length; i++) {
3351
+ if (mediumDataItems[parseInt(i.toString(), 10)].hasAttribute('data-medium-width')) {
3352
+ var previousWidth = parseInt(mediumDataItems[parseInt(i.toString(), 10)].getAttribute('data-medium-width'), 10);
3353
+ mediumDataItems[parseInt(i.toString(), 10)].setAttribute('data-medium-width', isHidden ? (previousWidth - hiddenWidth).toString() : (previousWidth + hiddenWidth).toString());
3354
+ }
3355
+ }
3356
+ }
3357
+ };
3358
+ Ribbon.prototype.calculateOverflowItemsWidth = function (hiddenItem, isHidden, tabIndex) {
3359
+ if (this.selectedTab === tabIndex && this.activeLayout === 'Simplified') {
3360
+ var groupList = this.tabs[parseInt(tabIndex.toString(), 10)].groups;
3361
+ for (var i = 0; i < groupList.length; i++) {
3362
+ var group = groupList[parseInt(i.toString(), 10)];
3363
+ if (group.enableGroupOverflow) {
3364
+ var groupContainer = document.querySelector('#' + group.id);
3365
+ var overflowButton = void 0;
3366
+ var overflowDDB = groupContainer.querySelector('#' + group.id + constants.GROUPOF_BUTTON_ID);
3367
+ if (overflowDDB) {
3368
+ overflowButton = getInstance(overflowDDB, DropDownButton);
3369
+ }
3370
+ if (overflowButton) {
3371
+ var overflowEle = overflowButton.target;
3372
+ var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');
3373
+ for (var i_9 = 0; i_9 < overflowItems.length; i_9++) {
3374
+ var previousWidth = parseInt(overflowItems[parseInt(i_9.toString(), 10)].getAttribute('data-simplified-width'), 10);
3375
+ if (previousWidth) {
3376
+ overflowItems[parseInt(i_9.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());
3377
+ }
3378
+ }
3379
+ }
3380
+ }
3381
+ }
3382
+ }
3383
+ if (this.overflowDDB) {
3384
+ var selectedOFTab = document.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);
3385
+ var overflowEle = this.overflowDDB.target;
3386
+ var overflowItems = overflowEle.querySelectorAll('.e-ribbon-item');
3387
+ for (var i = 0; i < overflowItems.length; i++) {
3388
+ var ofTab = overflowItems[parseInt(i.toString(), 10)].closest('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + constants.OVERFLOW_ID);
3389
+ if (selectedOFTab && ofTab && selectedOFTab.id === ofTab.id) {
3390
+ var previousWidth = parseInt(overflowItems[parseInt(i.toString(), 10)].getAttribute('data-simplified-width'), 10);
3391
+ if (previousWidth) {
3392
+ overflowItems[parseInt(i.toString(), 10)].setAttribute('data-simplified-width', isHidden ? (previousWidth - hiddenItem).toString() : (previousWidth + hiddenItem).toString());
3393
+ }
3394
+ }
3395
+ }
3396
+ }
3013
3397
  };
3014
3398
  /**
3015
3399
  * Disables a specific group within a ribbon tab.
@@ -3270,9 +3654,10 @@ var Ribbon = /** @class */ (function (_super) {
3270
3654
  }
3271
3655
  if (ele) {
3272
3656
  var itemEle = closest(ele, '.e-ribbon-item');
3273
- isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');
3274
- this.checkHiddenItems(itemProp.group, isHidden, itemProp.tabIndex);
3275
- this.refreshLayout();
3657
+ this.updateHiddenElements(itemProp.tabIndex, isHidden ? 'hideItem' : 'showItem', itemId, isHidden, itemEle, itemProp.group);
3658
+ if (this.selectedTab === itemProp.tabIndex) {
3659
+ this.refreshLayout();
3660
+ }
3276
3661
  }
3277
3662
  else {
3278
3663
  this.updateInitialProps(itemProp.tabIndex, itemId, 'hiddenItems', isHidden);
@@ -3515,7 +3900,7 @@ var Ribbon = /** @class */ (function (_super) {
3515
3900
  }
3516
3901
  if (this.activeLayout === RibbonLayout.Simplified) {
3517
3902
  if (itemProp.group.enableGroupOverflow) {
3518
- if (dropdown.target.childElementCount === 0) {
3903
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
3519
3904
  this.removeOverflowButton(dropdown);
3520
3905
  }
3521
3906
  }
@@ -3734,7 +4119,7 @@ var Ribbon = /** @class */ (function (_super) {
3734
4119
  }
3735
4120
  this.createRibbonItem(ribbonItem, itemContainer);
3736
4121
  if (this.activeLayout === 'Simplified' && itemProp.group.enableGroupOverflow) {
3737
- if (dropdown.target.childElementCount === 0) {
4122
+ if (dropdown.target.childElementCount === 0 || (dropdown.target.childElementCount === 1 && this.isHeaderVisible(dropdown.target, itemProp.group.id))) {
3738
4123
  this.removeOverflowButton(dropdown);
3739
4124
  }
3740
4125
  }
@@ -3839,6 +4224,9 @@ var Ribbon = /** @class */ (function (_super) {
3839
4224
  this.keyboardModuleRibbon.destroy();
3840
4225
  this.keyboardModuleRibbon = null;
3841
4226
  destroyTooltip(this.element);
4227
+ if (this.refreshing) {
4228
+ this.clearOverflowDropDown(this.selectedTab);
4229
+ }
3842
4230
  this.destroyTabItems(this.tabs);
3843
4231
  if (!this.hideLayoutSwitcher) {
3844
4232
  this.removeExpandCollapse();
@@ -3846,6 +4234,7 @@ var Ribbon = /** @class */ (function (_super) {
3846
4234
  this.collapseButton = undefined;
3847
4235
  if (this.scrollModule) {
3848
4236
  this.scrollModule.destroy();
4237
+ this.scrollModule = null;
3849
4238
  }
3850
4239
  if (this.ribbonTempEle) {
3851
4240
  remove(this.ribbonTempEle);
@@ -3855,6 +4244,8 @@ var Ribbon = /** @class */ (function (_super) {
3855
4244
  this.tabObj.destroy();
3856
4245
  this.tabObj = undefined;
3857
4246
  this.initialPropsData = {};
4247
+ this.hiddenGroups = [];
4248
+ this.hiddenElements = {};
3858
4249
  remove(this.element.querySelector('#' + this.element.id + constants.TAB_ID));
3859
4250
  this.element.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);
3860
4251
  this.element.style.removeProperty(constants.RIBBON_HELP_PANE_TEMPLATE_WIDTH);