Skip to content

Commit 7053661

Browse files
MC-3940: Slide Content Disappears After Switching Between Slides
1 parent fb38441 commit 7053661

File tree

6 files changed

+60
-4
lines changed

6 files changed

+60
-4
lines changed

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

Lines changed: 14 additions & 2 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/js/content-type/slide/wysiwyg/tinymce4/component-initializer.js

Lines changed: 11 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/js/content-type/slider/preview.js

Lines changed: 1 addition & 1 deletion
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/slide/preview.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {OptionsInterface} from "../../content-type-menu/option.d";
1313
import {DataObject} from "../../data-store";
1414
import ContentTypeMountEventParamsInterface from "../content-type-mount-event-params";
1515
import BasePreview from "../preview";
16+
import SliderPreview from "../slider/preview";
1617
import Uploader from "../uploader";
1718
import WysiwygFactory from "../wysiwyg/factory";
1819
import WysiwygInterface from "../wysiwyg/wysiwyg-interface";
@@ -42,6 +43,11 @@ export default class Preview extends BasePreview {
4243
*/
4344
private uploader: Uploader;
4445

46+
/**
47+
* Slide flag
48+
*/
49+
private slideChanged: boolean = true;
50+
4551
/**
4652
* @param {HTMLElement} element
4753
*/
@@ -210,6 +216,7 @@ export default class Preview extends BasePreview {
210216
const element = this.wysiwyg && this.element || this.textarea;
211217

212218
if (!element ||
219+
!this.slideChanged ||
213220
event.currentTarget !== event.target &&
214221
event.target !== element &&
215222
!element.contains(event.target)
@@ -327,6 +334,19 @@ export default class Preview extends BasePreview {
327334
});
328335
}
329336
});
337+
338+
events.on(`${this.config.name}:renderAfter`, (args: ContentTypeMountEventParamsInterface) => {
339+
if (args.id === this.parent.id) {
340+
const slider = this.parent.parent;
341+
342+
$((slider.preview as SliderPreview).element).on("beforeChange", () => {
343+
this.slideChanged = false;
344+
});
345+
$((slider.preview as SliderPreview).element).on("afterChange", () => {
346+
this.slideChanged = true;
347+
});
348+
}
349+
});
330350
}
331351

332352
/**

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/slide/wysiwyg/tinymce4/component-initializer.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
4545
*/
4646
private activeSlideSelector: string = ".slick-current";
4747

48+
/**
49+
* Slider autoplay
50+
*/
51+
private autoplay: boolean;
52+
4853
/**
4954
* Initialize the instance
5055
*
@@ -75,6 +80,11 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
7580

7681
// Disable slider keyboard events and fix problem with overflow hidden issue
7782
$($slider.parent()).slick("slickSetOption", "accessibility", false);
83+
this.autoplay = $($slider.parent()).slick("slickGetOption", "autoplay") as boolean;
84+
85+
if (this.autoplay) {
86+
$($slider.parent()).slick("slickPause");
87+
}
7888
$notActiveSlides.hide();
7989
this.sliderTransform = sliderContent.style.transform;
8090
sliderContent.style.transform = "";
@@ -100,5 +110,8 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
100110
sliderContent.style.transform = this.sliderTransform;
101111
$notActiveSlides.show();
102112
$($slider.parent()).slick("slickSetOption", "accessibility", true);
113+
if (this.autoplay) {
114+
$($slider.parent()).slick("slickPlay");
115+
}
103116
}
104117
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ import {default as SliderPreview} from "../slider/preview";
3737
export default class Preview extends PreviewCollection {
3838
public focusedSlide: KnockoutObservable<number> = ko.observable();
3939
public activeSlide: KnockoutObservable<number> = ko.observable(0);
40+
public element: HTMLElement;
4041
protected events: DataObject = {
4142
columnWidthChangeAfter: "onColumnResize",
4243
};
43-
private element: HTMLElement;
4444
private childSubscribe: KnockoutSubscription;
4545
private contentTypeHeightReset: boolean;
4646

0 commit comments

Comments
 (0)