@syncfusion/ej2-ribbon 23.2.4 → 23.2.7

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 (50) hide show
  1. package/CHANGELOG.md +14 -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 +201 -11
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +201 -11
  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 +9 -9
  12. package/src/ribbon/base/interface.d.ts +17 -0
  13. package/src/ribbon/base/ribbon-model.d.ts +15 -1
  14. package/src/ribbon/base/ribbon.d.ts +17 -1
  15. package/src/ribbon/base/ribbon.js +201 -11
  16. package/styles/bootstrap-dark.css +7 -3
  17. package/styles/bootstrap.css +7 -3
  18. package/styles/bootstrap4.css +7 -3
  19. package/styles/bootstrap5-dark.css +7 -3
  20. package/styles/bootstrap5.css +7 -3
  21. package/styles/fabric-dark.css +7 -3
  22. package/styles/fabric.css +7 -3
  23. package/styles/fluent-dark.css +7 -3
  24. package/styles/fluent.css +7 -3
  25. package/styles/highcontrast-light.css +7 -3
  26. package/styles/highcontrast.css +7 -3
  27. package/styles/material-dark.css +7 -3
  28. package/styles/material.css +7 -3
  29. package/styles/material3-dark.css +7 -3
  30. package/styles/material3.css +7 -3
  31. package/styles/ribbon/_layout.scss +10 -3
  32. package/styles/ribbon/bootstrap-dark.css +7 -3
  33. package/styles/ribbon/bootstrap.css +7 -3
  34. package/styles/ribbon/bootstrap4.css +7 -3
  35. package/styles/ribbon/bootstrap5-dark.css +7 -3
  36. package/styles/ribbon/bootstrap5.css +7 -3
  37. package/styles/ribbon/fabric-dark.css +7 -3
  38. package/styles/ribbon/fabric.css +7 -3
  39. package/styles/ribbon/fluent-dark.css +7 -3
  40. package/styles/ribbon/fluent.css +7 -3
  41. package/styles/ribbon/highcontrast-light.css +7 -3
  42. package/styles/ribbon/highcontrast.css +7 -3
  43. package/styles/ribbon/material-dark.css +7 -3
  44. package/styles/ribbon/material.css +7 -3
  45. package/styles/ribbon/material3-dark.css +7 -3
  46. package/styles/ribbon/material3.css +7 -3
  47. package/styles/ribbon/tailwind-dark.css +7 -3
  48. package/styles/ribbon/tailwind.css +7 -3
  49. package/styles/tailwind-dark.css +7 -3
  50. 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) {
@@ -4827,11 +4915,22 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
4827
4915
  locale: this.locale,
4828
4916
  enableRtl: this.enableRtl,
4829
4917
  enablePersistence: this.enablePersistence,
4918
+ beforeOpen: (args) => {
4919
+ const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };
4920
+ this.trigger('overflowPopupOpen', eventArgs, (ribbonArgs) => {
4921
+ if (ribbonArgs.cancel) {
4922
+ args.cancel = true;
4923
+ }
4924
+ });
4925
+ },
4830
4926
  beforeClose: (args) => {
4831
4927
  const ele = args.event ? closest(args.event.target, '.' + RIBBON_POPUP_CONTROL) : null;
4832
- if (ele) {
4833
- args.cancel = true;
4834
- }
4928
+ const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };
4929
+ this.trigger('overflowPopupClose', eventArgs, (ribbonArgs) => {
4930
+ if (ele || ribbonArgs.cancel) {
4931
+ args.cancel = true;
4932
+ }
4933
+ });
4835
4934
  }
4836
4935
  }, overflowButton);
4837
4936
  this.element.classList.add(RIBBON_OVERFLOW);
@@ -5356,6 +5455,20 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
5356
5455
  }
5357
5456
  const elements = this.createCollection(group.collections, group.orientation, group.id, group.header, group.enableGroupOverflow, tabIndex, groupContainer);
5358
5457
  append(elements, groupContent);
5458
+ let isItemsHidden = true;
5459
+ for (let j = 0; j < elements.length; j++) {
5460
+ if (isItemsHidden) {
5461
+ for (let k = 0; k < elements[parseInt(j.toString(), 10)].children.length; k++) {
5462
+ if (!(elements[parseInt(j.toString(), 10)].children[parseInt(k.toString(), 10)].classList.contains('e-hidden'))) {
5463
+ isItemsHidden = false;
5464
+ break;
5465
+ }
5466
+ }
5467
+ }
5468
+ }
5469
+ if (isItemsHidden) {
5470
+ groupEle.classList.add('e-hide-group');
5471
+ }
5359
5472
  if ((this.activeLayout === 'Simplified') && !(group.enableGroupOverflow || groupEle.querySelector('.' + RIBBON_ITEM))) {
5360
5473
  groupEle.classList.add('e-ribbon-emptyCollection');
5361
5474
  }
@@ -6355,6 +6468,7 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
6355
6468
  if (ele) {
6356
6469
  const itemEle = closest(ele, '.e-ribbon-item');
6357
6470
  isHidden ? itemEle.classList.add('e-hidden') : itemEle.classList.remove('e-hidden');
6471
+ this.checkHiddenItems(itemProp.group, isHidden, itemProp.tabIndex);
6358
6472
  this.refreshLayout();
6359
6473
  }
6360
6474
  else {
@@ -6387,6 +6501,76 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
6387
6501
  }
6388
6502
  }
6389
6503
  }
6504
+ checkHiddenItems(group, isHidden, tabIndex) {
6505
+ let isItemsHidden = true;
6506
+ let isEmptyCollection;
6507
+ const contentEle = this.tabObj.items[parseInt(tabIndex.toString(), 10)].content;
6508
+ const groupEle = contentEle.querySelector('#' + group.id);
6509
+ if (isHidden) {
6510
+ for (let i = 0; i < group.collections.length; i++) {
6511
+ if (isItemsHidden) {
6512
+ const collection = group.collections[parseInt(i.toString(), 10)];
6513
+ for (let j = 0; j < collection.items.length; j++) {
6514
+ const item = collection.items[parseInt(j.toString(), 10)];
6515
+ let itemEle;
6516
+ if (item.type === 'GroupButton') {
6517
+ const itemProp = getItem(this.tabs, item.id);
6518
+ itemEle = getItemElement(this, item.id + RIBBON_GROUP_BUTTON_ID, itemProp);
6519
+ }
6520
+ else {
6521
+ itemEle = getItemElement(this, item.id);
6522
+ }
6523
+ let itemContainer = itemEle ? itemEle.closest('.e-ribbon-item') : null;
6524
+ if (!(itemContainer.classList.contains('e-hidden'))) {
6525
+ isItemsHidden = false;
6526
+ break;
6527
+ }
6528
+ }
6529
+ }
6530
+ }
6531
+ if (isItemsHidden) {
6532
+ groupEle.classList.add('e-hide-group');
6533
+ this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);
6534
+ }
6535
+ }
6536
+ else {
6537
+ groupEle.classList.remove('e-hide-group');
6538
+ this.checkOverflowItems(isHidden, contentEle, group.enableGroupOverflow, tabIndex, group.id);
6539
+ }
6540
+ if (this.activeLayout === 'Simplified' && !group.enableGroupOverflow) {
6541
+ let itemsLength = groupEle.querySelectorAll('.' + RIBBON_ITEM);
6542
+ if (itemsLength) {
6543
+ isEmptyCollection = this.checkEmptyCollection(itemsLength);
6544
+ groupEle.classList[isEmptyCollection ? 'add' : 'remove']('e-ribbon-emptyCollection');
6545
+ }
6546
+ }
6547
+ }
6548
+ checkOverflowItems(isHidden, contentEle, isGroupOF, tabIndex, groupID) {
6549
+ let overflowDDB;
6550
+ let overflowtarget;
6551
+ if (isGroupOF) {
6552
+ const overflowDDBEle = contentEle.querySelector('#' + groupID + GROUPOF_BUTTON_ID);
6553
+ if (overflowDDBEle) {
6554
+ overflowDDB = getInstance(overflowDDBEle, DropDownButton);
6555
+ overflowtarget = overflowDDB.target;
6556
+ }
6557
+ if (overflowtarget) {
6558
+ isHidden ? overflowtarget.classList.add('e-hide-group') : overflowtarget.classList.remove('e-hide-group');
6559
+ }
6560
+ }
6561
+ else {
6562
+ if (this.overflowDDB) {
6563
+ const overflowEle = this.overflowDDB.target;
6564
+ const ofTabContainer = overflowEle.querySelector('#' + this.tabs[parseInt(tabIndex.toString(), 10)].id + OVERFLOW_ID);
6565
+ if (ofTabContainer) {
6566
+ const grpContainer = ofTabContainer.querySelector('#' + groupID + CONTAINER_ID);
6567
+ if (grpContainer) {
6568
+ isHidden ? grpContainer.classList.add('e-hide-group') : grpContainer.classList.remove('e-hide-group');
6569
+ }
6570
+ }
6571
+ }
6572
+ }
6573
+ }
6390
6574
  /**
6391
6575
  * tab - Gets the ribbon tab to be updated. The id of the tab is a required property. Other properties are optional.
6392
6576
  *
@@ -7040,6 +7224,12 @@ __decorate([
7040
7224
  __decorate([
7041
7225
  Event()
7042
7226
  ], Ribbon.prototype, "created", void 0);
7227
+ __decorate([
7228
+ Event()
7229
+ ], Ribbon.prototype, "overflowPopupOpen", void 0);
7230
+ __decorate([
7231
+ Event()
7232
+ ], Ribbon.prototype, "overflowPopupClose", void 0);
7043
7233
  Ribbon = Ribbon_1 = __decorate([
7044
7234
  NotifyPropertyChanges
7045
7235
  ], Ribbon);