Skip to content

Commit 33190e7

Browse files
committed
#514: User sees content snapshot on Category Page in Admin Panel - Moved overlay functions to wysiwyg
1 parent 0b66f31 commit 33190e7

File tree

4 files changed

+44
-64
lines changed

4 files changed

+44
-64
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/form/element/wysiwyg.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ define([
2424
transitionOut: false,
2525
elementSelector: '> textarea',
2626
stageSelector: '.pagebuilder-stage-wrapper',
27+
overlaySelector: '.pagebuilder-wysiwyg-overlay',
28+
overlayMouseover: false,
2729
pageBuilder: false,
2830
visiblePageBuilder: false,
2931
isComponentInitialized: false,
@@ -118,6 +120,20 @@ define([
118120
domObserver.disableNode(node);
119121
},
120122

123+
/**
124+
* Changes tabindex and content editable on stage elements.
125+
*/
126+
toggleFocusableElements: function () {
127+
var stageWrapper = $('#' + this.pageBuilder.id).parent(),
128+
focusableElements = ':focusable:not(' + this.overlaySelector + ')',
129+
editableElements = '[contenteditable]',
130+
tabIndexValue = this.pageBuilder.isFullScreen() ? '0' : '-1',
131+
editableValue = this.pageBuilder.isFullScreen() ? 'true' : 'false';
132+
133+
stageWrapper.find(editableElements).attr('contenteditable', editableValue);
134+
stageWrapper.find(focusableElements).attr('tabindex', tabIndexValue);
135+
},
136+
121137
/**
122138
* Determine if the current instance is within a modal
123139
*
@@ -134,6 +150,26 @@ define([
134150
}
135151
},
136152

153+
/**
154+
* Overlay MouseOver
155+
*/
156+
onOverlayMouseOver: function () {
157+
if (!this.overlayMouseover && !$(this.overlaySelector).hasClass('_hover')) {
158+
$(this.overlaySelector).addClass('_hover');
159+
}
160+
this.overlayMouseover = true;
161+
},
162+
163+
/**
164+
* Overlay MouseOut
165+
*/
166+
onOverlayMouseOut: function () {
167+
if (this.overlayMouseover && $(this.overlaySelector).hasClass('_hover')) {
168+
$(this.overlaySelector).removeClass('_hover');
169+
}
170+
this.overlayMouseover = false;
171+
},
172+
137173
/**
138174
* Toggle Page Builder full screen mode
139175
*/
@@ -163,8 +199,9 @@ define([
163199

164200
events.on('stage:' + id + ':masterFormatRenderAfter', function (args) {
165201
this.value(args.value);
202+
166203
if (this.wysiwygConfigData()['pagebuilder_content_snapshot']) {
167-
this.pageBuilder.toggleFocusableElements();
204+
this.toggleFocusableElements();
168205
}
169206
}.bind(this));
170207

@@ -216,6 +253,10 @@ define([
216253
/* eslint-enable max-depth */
217254
}
218255
}
256+
257+
if (this.wysiwygConfigData()['pagebuilder_content_snapshot']) {
258+
this.toggleFocusableElements();
259+
}
219260
}.bind(this));
220261

221262
// Wait until the stage is rendered and full screen mode is activated

app/code/Magento/PageBuilder/view/adminhtml/web/js/page-builder.js

Lines changed: 0 additions & 32 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/template/form/element/wysiwyg.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class="action-default action"
1212
ko-disabled="disabled"
1313
click="pageBuilderEditButtonClick.bind($data)"
14-
event="{ mouseover: pageBuilder.onStageOverlayMouseOver, mouseout: pageBuilder.onStageOverlayMouseOut }, mouseoverBubble: false">
14+
event="{ mouseover: onOverlayMouseOver, mouseout: onOverlayMouseOut }, mouseoverBubble: false">
1515
<span translate="pageBuilderEditButtonText" />
1616
</button>
1717
<if args="isComponentInitialized">
@@ -22,7 +22,7 @@
2222
class="pagebuilder-wysiwyg-overlay"
2323
click="pageBuilderEditButtonClick.bind($data)"
2424
css="'visible': !pageBuilder.isFullScreen()"
25-
event="{ mouseover: pageBuilder.onStageOverlayMouseOver, mouseout: pageBuilder.onStageOverlayMouseOut }, mouseoverBubble: false"
25+
event="{ mouseover: onOverlayMouseOver, mouseout: onOverlayMouseOut }, mouseoverBubble: false"
2626
tabindex="0">
2727
</div>
2828
<with args="pageBuilder">

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/page-builder.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -86,34 +86,6 @@ export default class PageBuilder implements PageBuilderInterface {
8686
this.isFullScreen.subscribe(() => this.onFullScreenChange());
8787
}
8888

89-
/**
90-
* Changes tabindex and content editable on stage elements.
91-
*/
92-
public toggleFocusableElements () {
93-
const stageWrapper = $("#" + this.id).parent();
94-
let focusableElements = ':focusable:not(.pagebuilder-stage-overlay)';
95-
let editableElements = '[contenteditable]';
96-
let tabIndexValue = this.isFullScreen() ? '0' : '-1';
97-
let editableValue = this.isFullScreen() ? 'true' : 'false';
98-
99-
stageWrapper.find(editableElements).attr('contenteditable', editableValue);
100-
stageWrapper.find(focusableElements).attr('tabindex', tabIndexValue);
101-
}
102-
103-
/**
104-
* MouseOver event for Stage Overlay
105-
*/
106-
public onStageOverlayMouseOver (): void {
107-
$('.pagebuilder-wysiwyg-overlay').addClass('_hover');
108-
}
109-
110-
/**
111-
* MouseOut event for Stage Overlay
112-
*/
113-
public onStageOverlayMouseOut (): void {
114-
$('.pagebuilder-wysiwyg-overlay').removeClass('_hover');
115-
}
116-
11789
/**
11890
* Tells the stage wrapper to expand to fullScreen
11991
*
@@ -189,7 +161,6 @@ export default class PageBuilder implements PageBuilderInterface {
189161
$("body").css("overflow", "");
190162
}
191163

192-
this.toggleFocusableElements();
193164
events.trigger(`stage:${ this.id }:fullScreenModeChangeAfter`, {
194165
fullScreen: this.isFullScreen(),
195166
});

0 commit comments

Comments
 (0)