Skip to content

Commit b0472c6

Browse files
committed
MC-4014: PageBuilder Performance Is Bad With Minimal Content
- Fix test SlideItemDeleteSlideItem
1 parent f41bc95 commit b0472c6

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/ContentTypeSliderActionGroup.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
</arguments>
1515
<comment userInput="Adding Slide" stepKey="comment"/>
1616
<executeJS function="return document.getElementsByClassName('pagebuilder-slide').length+1" stepKey="initialNumberOfSlidesPlusOne"/>
17+
<scrollTo selector="{{PageBuilderPanel.searchPanel}}" x="0" y="-150" stepKey="scrollToSearchPanel"/>
1718
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unFocusSlide"/>
1819
<moveMouseOver selector="{{PageBuilderStage.contentTypeInStageByIndex(PageBuilderSliderContentType.role, slideGroupIndex)}}" stepKey="mouseOverSlider"/>
1920
<waitForPageLoad stepKey="waitForPageLoad1"/>

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

Lines changed: 12 additions & 6 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/slider/preview.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import ContentTypeRemovedEventParamsInterface from "../content-type-removed-even
2929
import ObservableUpdater from "../observable-updater";
3030
import PreviewCollection from "../preview-collection";
3131
import Slide from "../slide/preview";
32+
import delayUntil from "../../utils/delay-until";
3233

3334
/**
3435
* @api
@@ -190,9 +191,11 @@ export default class Preview extends PreviewCollection {
190191
* @param {boolean} force
191192
*/
192193
public navigateToSlide(slideIndex: number, dontAnimate: boolean = false, force: boolean = false): void {
193-
$(this.element).slick("slickGoTo", slideIndex, dontAnimate);
194-
this.setActiveSlide(slideIndex);
195-
this.setFocusedSlide(slideIndex, force);
194+
if ($(this.element).hasClass("slick-initialized")) {
195+
$(this.element).slick("slickGoTo", slideIndex, dontAnimate);
196+
this.setActiveSlide(slideIndex);
197+
this.setFocusedSlide(slideIndex, force);
198+
}
196199
}
197200

198201
/**
@@ -252,7 +255,12 @@ export default class Preview extends PreviewCollection {
252255
events.on("slide:mountAfter", (args: ContentTypeMountEventParamsInterface) => {
253256
if (args.id === slide.id) {
254257
_.defer(() => {
255-
this.navigateToSlide(this.parent.children().length - 1);
258+
// Wait until slick is initialized before trying to navigate
259+
delayUntil(
260+
() => this.navigateToSlide(this.parent.children().length - 1),
261+
() => $(this.element).hasClass("slick-initialized"),
262+
10,
263+
);
256264
slide.preview.onOptionEdit();
257265
});
258266
events.off(`slide:${slide.id}:mountAfter`);

0 commit comments

Comments
 (0)