Skip to content

Commit 98808a9

Browse files
committed
MC-5443: IE11 - Cannot Use Slide Item Option Menu
Force minimum interaction level to be 0 and trigger interaction stop if focused on another slide in slider
1 parent 77aa5b6 commit 98808a9

File tree

4 files changed

+34
-13
lines changed

4 files changed

+34
-13
lines changed

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

Lines changed: 13 additions & 4 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/stage.js

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

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,20 +172,29 @@ export default class Preview extends PreviewCollection {
172172
* @param {JQueryEventObject} event
173173
*/
174174
public onFocusOut(data: PreviewCollection, event: JQueryEventObject) {
175-
let relatedTarget = event.relatedTarget;
175+
let relatedTarget = event.relatedTarget,
176+
$relatedTarget;
176177

177178
if (!relatedTarget && document.activeElement && !(document.activeElement instanceof HTMLBodyElement)) {
178179
relatedTarget = document.activeElement;
179180
}
180181

181-
const relatedTargetIsDescendantOfNavigation = (
182-
relatedTarget &&
183-
$(relatedTarget as HTMLElement).closest(this.navigationElement).length
184-
);
182+
if (!relatedTarget) {
183+
this.setFocusedSlide(null);
184+
return;
185+
}
185186

186-
const shouldUnsetFocusedSlide = !relatedTarget || !relatedTargetIsDescendantOfNavigation;
187+
$relatedTarget = $(relatedTarget as HTMLElement);
188+
189+
const isRelatedTargetDescendantOfNavigation = $relatedTarget.closest(this.navigationElement).length;
190+
const isFocusedOnAnotherSlideInThisSlider = (
191+
$relatedTarget.hasClass("navigation-dot-anchor") &&
192+
isRelatedTargetDescendantOfNavigation
193+
);
187194

188-
if (shouldUnsetFocusedSlide) {
195+
if (isFocusedOnAnotherSlideInThisSlider) {
196+
events.trigger("stage:interactionStop");
197+
} else if (!isRelatedTargetDescendantOfNavigation) {
189198
this.setFocusedSlide(null);
190199
}
191200
}

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/stage.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ export default class Stage {
199199
});
200200
events.on("stage:interactionStop", (args: {force: boolean}) => {
201201
const forced = (_.isObject(args) && args.force === true);
202-
if (--interactionLevel === 0 || forced) {
202+
interactionLevel = Math.max(interactionLevel - 1, 0);
203+
204+
if (interactionLevel === 0 || forced) {
203205
this.interacting(false);
204206
if (forced) {
205207
interactionLevel = 0;

0 commit comments

Comments
 (0)