Skip to content

Commit e67f0b8

Browse files
committed
MC-3847: Issues With Same Width Buttons In Tabs
- Add visibility check so Buttons don't re-calculate if they're not visible - Add docblock and @api tag to new event - Add comment to Tabs widget why we're triggering an event - Update documentation to include event data structure for both frontend and backend
1 parent e3f9c0f commit e67f0b8

File tree

5 files changed

+39
-0
lines changed

5 files changed

+39
-0
lines changed

app/code/Magento/PageBuilder/docs/events.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,8 @@ All events starting with `contentType:` can also be called for specific content
271271

272272
### `contentType:redrawAfter`
273273

274+
#### Backend
275+
274276
**Triggers**
275277

276278
* `Tabs.Preview::onTabClick`
@@ -284,6 +286,20 @@ All events starting with `contentType:` can also be called for specific content
284286
}
285287
```
286288

289+
#### Frontend
290+
291+
**Triggers**
292+
293+
* `Tabs.widget.ui.tabs::activate`
294+
295+
**Params**
296+
297+
``` js
298+
{
299+
element: HTMLElement
300+
}
301+
```
302+
287303
[Back to top]
288304

289305
### `column:dragStart`

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/buttons/preview.js

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/buttons/preview.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ export default class Preview extends PreviewCollection {
247247
if (buttonItems.length > 0) {
248248
const currentLargestButtonWidth = this.findLargestButtonWidth(buttonItems);
249249
const parentWrapperWidth = $(this.wrapperElement).width();
250+
if (currentLargestButtonWidth === 0) {
251+
return;
252+
}
250253
buttonResizeValue = Math.min(currentLargestButtonWidth, parentWrapperWidth);
251254
}
252255
}
@@ -272,6 +275,9 @@ export default class Preview extends PreviewCollection {
272275
* @returns {number}
273276
*/
274277
private calculateButtonWidth(buttonItem: JQuery): number {
278+
if (buttonItem.is(":visible") === false) {
279+
return 0;
280+
}
275281
const widthProperties = ["paddingLeft", "paddingRight", "borderLeftWidth", "borderRightWidth"];
276282
return widthProperties.reduce((accumulatedWidth, widthProperty): number => {
277283
return accumulatedWidth + (parseInt(buttonItem.css(widthProperty), 10) || 0);

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/content-type-redraw-after-event-params.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
import ContentTypeCollectionInterface from "../content-type-collection";
77
import ContentTypeInterface from "../content-type";
88

9+
/**
10+
* Content type event fired whenever content changes dimensions or visibility
11+
*
12+
* @api
13+
*/
914
export default interface ContentTypeRedrawAfterEventParamsInterface {
1015
id: string,
1116
contentType: ContentTypeInterface & ContentTypeCollectionInterface

app/code/Magento/PageBuilder/view/base/web/js/content-type/tabs/appearance/default/widget.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ define([
2727
$element.find('.tabs-navigation li:not(:first-child)').css('marginLeft', -borderWidth);
2828
},
2929
activate:
30+
/**
31+
* Trigger redraw event since new content is being displayed
32+
*/
3033
function () {
3134
events.trigger('contentType:redrawAfter', {
3235
element: element

0 commit comments

Comments
 (0)