@syncfusion/ej2-ribbon 33.2.3 → 33.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.
@@ -2123,7 +2123,16 @@ class RibbonDropDown {
2123
2123
  }
2124
2124
  },
2125
2125
  beforeItemRender: dropDownSettings.beforeItemRender,
2126
- beforeOpen: dropDownSettings.beforeOpen,
2126
+ beforeOpen: (e) => {
2127
+ const ddb = getComponent(buttonEle, DropDownButton);
2128
+ const target = this.parent.getAppendToElement();
2129
+ if (ddb && ddb.dropDown && !target.contains(ddb.dropDown.element)) {
2130
+ target.appendChild(ddb.dropDown.element);
2131
+ }
2132
+ if (dropDownSettings.beforeOpen) {
2133
+ dropDownSettings.beforeOpen.call(this, e);
2134
+ }
2135
+ },
2127
2136
  close: (e) => {
2128
2137
  if (dropDownSettings.close) {
2129
2138
  dropDownSettings.close.call(this, e);
@@ -2226,6 +2235,12 @@ class RibbonDropDown {
2226
2235
  cssClass: VERTICAL_DDB + SPACE + RIBBON_GROUP_OVERFLOW_DDB,
2227
2236
  iconPosition: 'Top',
2228
2237
  content: name,
2238
+ beforeOpen: () => {
2239
+ const target = this.parent.getAppendToElement();
2240
+ if (dropdown && dropdown.dropDown && !target.contains(dropdown.dropDown.element)) {
2241
+ target.appendChild(dropdown.dropDown.element);
2242
+ }
2243
+ },
2229
2244
  beforeClose: (args) => {
2230
2245
  args.cancel = !isNullOrUndefined(args.event && closest(args.event.target, '.' + RIBBON_POPUP_CONTROL));
2231
2246
  }
@@ -2565,7 +2580,16 @@ class RibbonSplitButton {
2565
2580
  }
2566
2581
  },
2567
2582
  beforeItemRender: splitButtonSettings.beforeItemRender,
2568
- beforeOpen: splitButtonSettings.beforeOpen,
2583
+ beforeOpen: () => {
2584
+ const popupEl = splitbutton.dropDown.element;
2585
+ const target = this.parent.getAppendToElement();
2586
+ if (popupEl && !target.contains(popupEl)) {
2587
+ target.appendChild(popupEl);
2588
+ }
2589
+ if (splitButtonSettings.beforeOpen) {
2590
+ splitButtonSettings.beforeOpen.call(this);
2591
+ }
2592
+ },
2569
2593
  close: () => {
2570
2594
  splitbutton['wrapper'].classList.remove(RIBBON_POPUP_OPEN);
2571
2595
  if (splitButtonSettings.close) {
@@ -3902,7 +3926,7 @@ class RibbonGallery {
3902
3926
  setWrapperStyle(popup, popupContainerItems) {
3903
3927
  if (popup.width !== 'auto') {
3904
3928
  popupContainerItems.forEach((ele) => {
3905
- ele.style.flexFlow = 'wrap';
3929
+ ele.style.flexFlow = 'column wrap';
3906
3930
  });
3907
3931
  }
3908
3932
  }
@@ -4175,6 +4199,9 @@ class RibbonGallery {
4175
4199
  const popupContainerItems = popupContainerEle.querySelectorAll('.e-ribbon-gallery-container');
4176
4200
  this.setWrapperStyle(popup, popupContainerItems);
4177
4201
  this.setFoucsToFirstItem(popupContainerEle, true, item.id);
4202
+ if (popup.width !== 'auto') {
4203
+ this.alignGalleryPopupLeft(popupContainerEle, buttonEle);
4204
+ }
4178
4205
  },
4179
4206
  beforeClose: (args) => {
4180
4207
  const isCancelled = this.popupEvents(args.event, item.gallerySettings, 'popupClose', false);
@@ -4345,6 +4372,22 @@ class RibbonGallery {
4345
4372
  this.handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings);
4346
4373
  };
4347
4374
  }
4375
+ alignGalleryPopupLeft(popup, buttonEle) {
4376
+ const popupEl = popup.parentElement;
4377
+ if (!popupEl) {
4378
+ return;
4379
+ }
4380
+ const currentLeft = parseFloat(popupEl.style.left);
4381
+ const buttonRect = buttonEle.getBoundingClientRect();
4382
+ const popupWidth = popupEl.offsetWidth;
4383
+ let targetLeft = buttonRect.left - popupWidth - 1;
4384
+ if (targetLeft < 0) {
4385
+ targetLeft = 1;
4386
+ }
4387
+ if (Math.abs(currentLeft - targetLeft) > 1) {
4388
+ popupEl.style.left = `${targetLeft}px`;
4389
+ }
4390
+ }
4348
4391
  handleGalleryPopupNavigation(e, popupEle, isDropdown, itemID, popup, gallerySettings) {
4349
4392
  const galleryPopupEle = popupEle.querySelectorAll('.e-ribbon-gallery-item');
4350
4393
  if (galleryPopupEle) {
@@ -4510,6 +4553,16 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
4510
4553
  }
4511
4554
  return modules;
4512
4555
  }
4556
+ getAppendToElement() {
4557
+ if (this.isAngular) {
4558
+ const cdkPane = this.element.closest('.cdk-overlay-pane');
4559
+ const popoverEl = this.element.closest('[popover]');
4560
+ if (cdkPane && popoverEl) {
4561
+ return cdkPane;
4562
+ }
4563
+ }
4564
+ return document.body;
4565
+ }
4513
4566
  initialize() {
4514
4567
  this.element.id = this.element.id || getUniqueID('e-' + this.getModuleName());
4515
4568
  this.initializeLocale();
@@ -6480,6 +6533,10 @@ let Ribbon = Ribbon_1 = class Ribbon extends Component {
6480
6533
  enableRtl: this.enableRtl,
6481
6534
  enablePersistence: this.enablePersistence,
6482
6535
  beforeOpen: (args) => {
6536
+ const target = this.getAppendToElement();
6537
+ if (overflowDDB && overflowDDB.dropDown && !target.contains(overflowDDB.dropDown.element)) {
6538
+ target.appendChild(overflowDDB.dropDown.element);
6539
+ }
6483
6540
  const eventArgs = { element: args.element, event: args.event, cancel: args.cancel };
6484
6541
  this.trigger('overflowPopupOpen', eventArgs, (ribbonArgs) => {
6485
6542
  if (ribbonArgs.cancel) {