@syncfusion/ej2-ribbon 23.2.4 → 23.2.5

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 (48) hide show
  1. package/CHANGELOG.md +6 -0
  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 +181 -8
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +181 -8
  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 +7 -7
  12. package/src/ribbon/base/ribbon.d.ts +4 -0
  13. package/src/ribbon/base/ribbon.js +181 -8
  14. package/styles/bootstrap-dark.css +7 -3
  15. package/styles/bootstrap.css +7 -3
  16. package/styles/bootstrap4.css +7 -3
  17. package/styles/bootstrap5-dark.css +7 -3
  18. package/styles/bootstrap5.css +7 -3
  19. package/styles/fabric-dark.css +7 -3
  20. package/styles/fabric.css +7 -3
  21. package/styles/fluent-dark.css +7 -3
  22. package/styles/fluent.css +7 -3
  23. package/styles/highcontrast-light.css +7 -3
  24. package/styles/highcontrast.css +7 -3
  25. package/styles/material-dark.css +7 -3
  26. package/styles/material.css +7 -3
  27. package/styles/material3-dark.css +7 -3
  28. package/styles/material3.css +7 -3
  29. package/styles/ribbon/_layout.scss +10 -3
  30. package/styles/ribbon/bootstrap-dark.css +7 -3
  31. package/styles/ribbon/bootstrap.css +7 -3
  32. package/styles/ribbon/bootstrap4.css +7 -3
  33. package/styles/ribbon/bootstrap5-dark.css +7 -3
  34. package/styles/ribbon/bootstrap5.css +7 -3
  35. package/styles/ribbon/fabric-dark.css +7 -3
  36. package/styles/ribbon/fabric.css +7 -3
  37. package/styles/ribbon/fluent-dark.css +7 -3
  38. package/styles/ribbon/fluent.css +7 -3
  39. package/styles/ribbon/highcontrast-light.css +7 -3
  40. package/styles/ribbon/highcontrast.css +7 -3
  41. package/styles/ribbon/material-dark.css +7 -3
  42. package/styles/ribbon/material.css +7 -3
  43. package/styles/ribbon/material3-dark.css +7 -3
  44. package/styles/ribbon/material3.css +7 -3
  45. package/styles/ribbon/tailwind-dark.css +7 -3
  46. package/styles/ribbon/tailwind.css +7 -3
  47. package/styles/tailwind-dark.css +7 -3
  48. package/styles/tailwind.css +7 -3
@@ -3674,6 +3674,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3674
3674
  if (activeTab) {
3675
3675
  activeTab.classList.add(RIBBON_TAB_ACTIVE);
3676
3676
  this.overflowDDB.element.classList.remove(HIDE_CSS);
3677
+ this.checkOverflowHiddenItems(false, selectedIndex);
3677
3678
  }
3678
3679
  else {
3679
3680
  this.overflowDDB.element.classList.add(HIDE_CSS);
@@ -3783,6 +3784,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3783
3784
  }
3784
3785
  createSimplfiedOverflow(tabContent, activeContent, tabIndex) {
3785
3786
  const orderedGroups = this.getGroupResizeOrder(true, tabIndex);
3787
+ let isEmptyCollection;
3786
3788
  for (let i = 0; ((i < orderedGroups.length) && (tabContent.offsetWidth < activeContent.offsetWidth)); i++) {
3787
3789
  const group = orderedGroups[parseInt(i.toString(), 10)];
3788
3790
  const groupEle = tabContent.querySelector('#' + group.id);
@@ -3811,7 +3813,25 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3811
3813
  if (!(group.enableGroupOverflow || groupEle.querySelector('.' + RIBBON_ITEM))) {
3812
3814
  groupEle.classList.add('e-ribbon-emptyCollection');
3813
3815
  }
3816
+ let itemsLength = groupEle.querySelectorAll('.' + RIBBON_ITEM);
3817
+ if (itemsLength && !group.enableGroupOverflow) {
3818
+ isEmptyCollection = this.checkEmptyCollection(itemsLength);
3819
+ if (isEmptyCollection) {
3820
+ groupEle.classList.add('e-ribbon-emptyCollection');
3821
+ }
3822
+ }
3823
+ this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);
3824
+ }
3825
+ }
3826
+ checkEmptyCollection(itemsLength) {
3827
+ let isEmptyCollection = true;
3828
+ for (let i = 0; i < itemsLength.length; i++) {
3829
+ if (!(itemsLength[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {
3830
+ isEmptyCollection = false;
3831
+ break;
3832
+ }
3814
3833
  }
3834
+ return isEmptyCollection;
3815
3835
  }
3816
3836
  updatePopupItems(item, itemEle, isGroupOF, isMenu) {
3817
3837
  const dropdown = getComponent(itemEle.querySelector('#' + item.id), (item.type === RibbonItemType.DropDown || item.type === RibbonItemType.GroupButton) ? DropDownButton : SplitButton);
@@ -3842,6 +3862,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3842
3862
  removeSimplfiedOverflow(tabContent, activeContent, tabIndex, isClear = false) {
3843
3863
  const orderedGroups = this.getGroupResizeOrder(false, tabIndex);
3844
3864
  let flag = true;
3865
+ let isEmptyCollection;
3845
3866
  for (let i = 0; ((i < orderedGroups.length) && flag); i++) {
3846
3867
  const group = orderedGroups[parseInt(i.toString(), 10)];
3847
3868
  let overflowDDB;
@@ -3889,7 +3910,13 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3889
3910
  const groupEle = tabContent.querySelector('#' + group.id);
3890
3911
  const itemEle = groupEle.querySelector('.' + RIBBON_ITEM);
3891
3912
  if (groupEle.classList.contains('e-ribbon-emptyCollection') && itemEle !== null) {
3892
- groupEle.classList.remove('e-ribbon-emptyCollection');
3913
+ let itemsLength = groupEle.querySelectorAll('.' + RIBBON_ITEM);
3914
+ if (itemsLength) {
3915
+ isEmptyCollection = this.checkEmptyCollection(itemsLength);
3916
+ if (!isEmptyCollection) {
3917
+ groupEle.classList.remove('e-ribbon-emptyCollection');
3918
+ }
3919
+ }
3893
3920
  }
3894
3921
  if (overflowDDB) {
3895
3922
  if (group.enableGroupOverflow) {
@@ -3909,6 +3936,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3909
3936
  }
3910
3937
  }
3911
3938
  }
3939
+ this.checkOverflowHiddenItems(group.enableGroupOverflow, tabIndex, group.id);
3912
3940
  }
3913
3941
  if (this.overflowDDB) {
3914
3942
  const overflowEle = this.overflowDDB.target;
@@ -3918,6 +3946,50 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3918
3946
  }
3919
3947
  }
3920
3948
  }
3949
+ checkOverflowHiddenItems(isGroupOF, tabIndex, groupId) {
3950
+ if (isGroupOF) {
3951
+ const overflowDDB = document.querySelector('#' + groupId + GROUPOF_BUTTON_ID);
3952
+ if (overflowDDB) {
3953
+ const overflowButton = getInstance(overflowDDB, DropDownButton);
3954
+ const overflowBtnTarget = overflowButton.target;
3955
+ let itemEle = overflowBtnTarget.querySelectorAll('.e-ribbon-item');
3956
+ let isHidden = true;
3957
+ for (let i = 0; i < itemEle.length; i++) {
3958
+ if (!(itemEle[parseInt(i.toString(), 10)].classList.contains('e-hidden'))) {
3959
+ isHidden = false;
3960
+ break;
3961
+ }
3962
+ }
3963
+ overflowButton.element.classList[isHidden ? 'add' : 'remove']('e-hidden');
3964
+ }
3965
+ }
3966
+ else {
3967
+ if (this.overflowDDB) {
3968
+ let isGroupHidden = true;
3969
+ let isItemHidden;
3970
+ const overflowEle = this.overflowDDB.target;
3971
+ const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + OVERFLOW_ID);
3972
+ if (ofTabContainer) {
3973
+ for (let k = 0; k < ofTabContainer.children.length; k++) {
3974
+ isItemHidden = true;
3975
+ const overflowTab = ofTabContainer.children[parseInt(k.toString(), 10)];
3976
+ let groupTabContainer = overflowTab.querySelectorAll('.e-ribbon-item');
3977
+ for (let n = 0; n < groupTabContainer.length; n++) {
3978
+ if (!(groupTabContainer[parseInt(n.toString(), 10)].classList.contains('e-hidden'))) {
3979
+ isItemHidden = false;
3980
+ break;
3981
+ }
3982
+ }
3983
+ overflowTab.classList[isItemHidden ? 'add' : 'remove']('e-hide-group');
3984
+ if (!(overflowTab.classList.contains('e-hide-group')) && !(overflowTab.classList.contains('e-hidden'))) {
3985
+ isGroupHidden = false;
3986
+ }
3987
+ }
3988
+ this.overflowDDB.element.classList[isGroupHidden ? 'add' : 'remove'](HIDE_CSS);
3989
+ }
3990
+ }
3991
+ }
3992
+ }
3921
3993
  createOverflowPopup(item, tabIndex, isGroupOF, groupId, groupHeader, itemEle, groupContainer, isResize) {
3922
3994
  let overflowButton;
3923
3995
  const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;
@@ -3933,11 +4005,16 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3933
4005
  overflowButton = getInstance(overflowDDB, DropDownButton);
3934
4006
  }
3935
4007
  const overflowBtnTarget = overflowButton.target;
3936
- if (groupEle && groupEle.classList.contains('e-disabled')) {
3937
- overflowBtnTarget.classList.add('e-disabled');
3938
- }
3939
- if (groupEle && groupEle.classList.contains('e-hidden')) {
3940
- overflowBtnTarget.classList.add('e-hidden');
4008
+ if (groupEle) {
4009
+ if (groupEle.classList.contains('e-disabled')) {
4010
+ overflowBtnTarget.classList.add('e-disabled');
4011
+ }
4012
+ if (groupEle.classList.contains('e-hidden')) {
4013
+ overflowBtnTarget.classList.add('e-hidden');
4014
+ }
4015
+ if (groupEle.classList.contains('e-hide-group')) {
4016
+ overflowBtnTarget.classList.add('e-hide-group');
4017
+ }
3941
4018
  }
3942
4019
  isResize ? overflowBtnTarget.insertBefore(itemEle, overflowBtnTarget.querySelector('.' + RIBBON_ITEM))
3943
4020
  : overflowBtnTarget.append(itemEle);
@@ -3957,8 +4034,16 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
3957
4034
  let ofGroupContainer = overflowEle.querySelector('#' + groupId + CONTAINER_ID);
3958
4035
  if (!ofGroupContainer) {
3959
4036
  ofGroupContainer = this.createGroupContainer(groupId, groupHeader);
3960
- if (groupEle && groupEle.classList.contains('e-disabled')) {
3961
- ofGroupContainer.classList.add('e-disabled');
4037
+ if (groupEle) {
4038
+ if (groupEle.classList.contains('e-disabled')) {
4039
+ ofGroupContainer.classList.add('e-disabled');
4040
+ }
4041
+ if (groupEle.classList.contains('e-hidden')) {
4042
+ ofGroupContainer.classList.add('e-hidden');
4043
+ }
4044
+ if (groupEle.classList.contains('e-hide-group')) {
4045
+ ofGroupContainer.classList.add('e-hide-group');
4046
+ }
3962
4047
  }
3963
4048
  ofTabContainer.append(ofGroupContainer);
3964
4049
  }
@@ -4022,6 +4107,9 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
4022
4107
  if (groupEle.classList.contains('e-hidden')) {
4023
4108
  ofGroupContainer.classList.add('e-hidden');
4024
4109
  }
4110
+ if (groupEle.classList.contains('e-hide-group')) {
4111
+ ofGroupContainer.classList.add('e-hide-group');
4112
+ }
4025
4113
  }
4026
4114
  }
4027
4115
  checkGroupShrinking(tabIndex, tabContent, activeContent, isLarge) {
@@ -5356,6 +5444,20 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
5356
5444
  }
5357
5445
  const elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);
5358
5446
  append(elements, groupContent);
5447
+ let isItemsHidden = true;
5448
+ for (let j = 0; j < elements.length; j++) {
5449
+ if (isItemsHidden) {
5450
+ for (let k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {
5451
+ if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {
5452
+ isItemsHidden = false;
5453
+ break;
5454
+ }
5455
+ }
5456
+ }
5457
+ }
5458
+ if (isItemsHidden) {
5459
+ groupEle.classList.add('e-hide-group');
5460
+ }
5359
5461
  if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + RIBBON_ITEM))) {
5360
5462
  groupEle.classList.add('e-ribbon-emptyCollection');
5361
5463
  }
@@ -6355,6 +6457,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
6355
6457
  if (ele) {
6356
6458
  const itemEle = closest(ele, '.e-ribbon-item');
6357
6459
  isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');
6460
+ this.checkHiddenItems(itemProp.group, isHidden, itemProp.tabIndex);
6358
6461
  this.refreshLayout();
6359
6462
  }
6360
6463
  else {
@@ -6387,6 +6490,76 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
6387
6490
  }
6388
6491
  }
6389
6492
  }
6493
+ checkHiddenItems(group, isHidden, tabIndex) {
6494
+ let isItemsHidden = true;
6495
+ let isEmptyCollection;
6496
+ const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;
6497
+ const groupEle = contentEle.querySelector('#' + group.id);
6498
+ if (isHidden) {
6499
+ for (let i = 0; i < group.collections.length; i++) {
6500
+ if (isItemsHidden) {
6501
+ const collection = group.collections[parseInt(i.toString(), 10)];
6502
+ for (let j = 0; j < collection.items.length; j++) {
6503
+ const item = collection.items[parseInt(j.toString(), 10)];
6504
+ let itemEle;
6505
+ if (item.type === 'GroupButton') {
6506
+ const itemProp = getItem(this.tabs, item.id);
6507
+ itemEle = getItemElement(this, item.id + RIBBON_GROUP_BUTTON_ID, itemProp);
6508
+ }
6509
+ else {
6510
+ itemEle = getItemElement(this, item.id);
6511
+ }
6512
+ let itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;
6513
+ if (!(itemContainer.classList.contains('e-hidden'))) {
6514
+ isItemsHidden = false;
6515
+ break;
6516
+ }
6517
+ }
6518
+ }
6519
+ }
6520
+ if (isItemsHidden) {
6521
+ groupEle.classList.add('e-hide-group');
6522
+ this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);
6523
+ }
6524
+ }
6525
+ else {
6526
+ groupEle.classList.remove('e-hide-group');
6527
+ this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);
6528
+ }
6529
+ if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {
6530
+ let itemsLength = groupEle.querySelectorAll('.' + RIBBON_ITEM);
6531
+ if (itemsLength) {
6532
+ isEmptyCollection = this.checkEmptyCollection(itemsLength);
6533
+ groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');
6534
+ }
6535
+ }
6536
+ }
6537
+ checkOverflowItems(isHidden, contentEle, isGroupOF, tabIndex, groupID) {
6538
+ let overflowDDB;
6539
+ let overflowtarget;
6540
+ if (isGroupOF) {
6541
+ const overflowDDBEle = contentEle.querySelector('#' + groupID + GROUPOF_BUTTON_ID);
6542
+ if (overflowDDBEle) {
6543
+ overflowDDB = getInstance(overflowDDBEle, DropDownButton);
6544
+ overflowtarget = overflowDDB.target;
6545
+ }
6546
+ if (overflowtarget) {
6547
+ isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');
6548
+ }
6549
+ }
6550
+ else {
6551
+ if (this.overflowDDB) {
6552
+ const overflowEle = this.overflowDDB.target;
6553
+ const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + OVERFLOW_ID);
6554
+ if (ofTabContainer) {
6555
+ const grpContainer = ofTabContainer.querySelector('#' + groupID + CONTAINER_ID);
6556
+ if (grpContainer) {
6557
+ isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');
6558
+ }
6559
+ }
6560
+ }
6561
+ }
6562
+ }
6390
6563
  /**
6391
6564
  * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.
6392
6565
  *