Skip to content

Commit 5d4171b

Browse files
committed
#514: User sees content snapshot on Category Page in Admin Panel - Changed animation for enter/exit full screen mode
1 parent d2db35c commit 5d4171b

File tree

7 files changed

+178
-42
lines changed

7 files changed

+178
-42
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/_common.less

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,28 @@
4848
display: none !important;
4949
}
5050
}
51+
52+
//
53+
// Animations
54+
// _____________________________________________
55+
56+
57+
.keyframes (@name; @arguments) {
58+
@-moz-keyframes @name {
59+
@arguments();
60+
}
61+
62+
@-webkit-keyframes @name {
63+
@arguments();
64+
}
65+
66+
@keyframes @name {
67+
@arguments();
68+
}
69+
}
70+
71+
.animation (@arguments) {
72+
-webkit-animation: @arguments;
73+
-moz-animation: @arguments;
74+
animation: @arguments;
75+
}

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/_page-builder.less

Lines changed: 107 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,6 @@
2323
}
2424
}
2525

26-
.pagebuilder-content-snapshot {
27-
.pagebuilder-header {
28-
display: none;
29-
30-
&.visible {
31-
display: block;
32-
}
33-
}
34-
}
35-
3626
.admin__fieldset > .admin__field > .admin__control-grouped {
3727
&.pagebuilder-active {
3828
float: left;
@@ -54,22 +44,6 @@
5444
pointer-events: none;
5545
}
5646

57-
&.pagebuilder-content-snapshot {
58-
&.stage-full-screen {
59-
.pagebuilder-header {
60-
display: block;
61-
62-
&.visible {
63-
display: block;
64-
}
65-
}
66-
67-
.pagebuilder-canvas {
68-
padding-bottom: 120px;
69-
}
70-
}
71-
}
72-
7347
&.stage-full-screen {
7448
-moz-transform: translateZ(0);
7549
-webkit-transform: translateZ(0);
@@ -124,6 +98,12 @@
12498
padding-top: 30px;
12599
}
126100

101+
&.stage-content-snapshot {
102+
.pagebuilder-canvas {
103+
padding-bottom: 120px;
104+
}
105+
}
106+
127107
.pagebuilder-panel-wrapper {
128108
bottom: 0;
129109
position: fixed;
@@ -303,7 +283,13 @@
303283
}
304284
}
305285

306-
.pagebuilder-content-snapshot {
286+
.stage-content-snapshot {
287+
&.stage-full-screen {
288+
.pagebuilder-stage {
289+
margin-left: auto;
290+
}
291+
}
292+
307293
.pagebuilder-stage {
308294
-moz-transition: none;
309295
-webkit-transition: none;
@@ -314,10 +300,104 @@
314300
padding-bottom: 0;
315301
padding-top: 8px;
316302
}
303+
}
304+
}
305+
306+
.pagebuilder-wysiwyg-snapshot {
307+
.pagebuilder-stage-wrapper {
308+
-moz-transition-delay: 0s;
309+
-webkit-transition-delay: 0s;
310+
transition-delay: 0s;
311+
&.stage-full-screen {
312+
-moz-transition-delay: .25s;
313+
-webkit-transition-delay: .25s;
314+
transition-delay: .25s;
315+
}
316+
}
317317

318+
.pagebuilder-stage {
319+
margin-left: 0;
320+
}
321+
322+
.pagebuilder-header {
323+
.keyframes(slide-in-top;{
324+
0% {
325+
-webkit-transform: translateY(-41px);
326+
transform: translateY(-41px);
327+
opacity: 0;
328+
}
329+
100% {
330+
-webkit-transform: translateY(0);
331+
transform: translateY(0);
332+
opacity: 1;
333+
}
334+
});
335+
.animation(slide-in-top .35s .15s ease-in-out both);
336+
opacity: 1;
337+
transition: none;
338+
visibility: visible;
339+
340+
&.transition {
341+
.pagebuilder-stage-wrapper.stage-full-screen.pagebuilder-header;
342+
.keyframes(slide-out-top;{
343+
0% {
344+
-webkit-transform: translateY(0);
345+
transform: translateY(0);
346+
opacity: 1;
347+
}
348+
349+
100% {
350+
-webkit-transform: translateY(-41px);
351+
transform: translateY(-41px);
352+
opacity: 0;
353+
}
354+
});
355+
.animation(slide-out-top .35s 0s ease-in-out both);
356+
transition: none;
357+
z-index: 800;
358+
}
359+
}
360+
361+
.pagebuilder-panel-wrapper {
362+
.keyframes(slide-in-left;{
363+
0% {
364+
-webkit-transform: translateX(-150px);
365+
transform: translateX(-150px);
366+
opacity: 0;
367+
}
368+
100% {
369+
-webkit-transform: translateX(0);
370+
transform: translateX(0);
371+
opacity: 1;
372+
}
373+
});
374+
.animation(slide-in-left .35s .15s ease-in-out both);
375+
opacity: 1;
376+
transition: none;
377+
visibility: visible;
378+
379+
&.transition {
380+
.pagebuilder-stage-wrapper.stage-full-screen.pagebuilder-panel-wrapper;
381+
.keyframes(slide-out-left;{
382+
0% {
383+
-webkit-transform: translateX(0);
384+
transform: translateX(0);
385+
opacity: 1;
386+
}
387+
100% {
388+
-webkit-transform: translateX(-150px);
389+
transform: translateX(-150px);
390+
opacity: 0;
391+
}
392+
});
393+
.animation(slide-out-left .35s 0s ease-in-out both);
394+
transition: none;
395+
z-index: 800;
396+
}
318397
}
319398
}
320399

400+
321401
.pagebuilder-row-wrapper,
322402
.pagebuilder-structure-wrapper {
323403
display: inline-block;

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

Lines changed: 24 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/template/form/element/wysiwyg.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<if args="isComponentInitialized">
1818
<div visible="visiblePageBuilder"
1919
class="pagebuilder-wysiwyg-wrapper"
20-
css="{'pagebuilder-transition-in': wysiwygConfigData()['pagebuilder_button'] && !wysiwygConfigData()['pagebuilder_content_snapshot'], 'trigger-transition': transition, 'pagebuilder-transition-out': transitionOut}">
20+
css="{'pagebuilder-transition-in': wysiwygConfigData()['pagebuilder_button'] && !wysiwygConfigData()['pagebuilder_content_snapshot'], 'trigger-transition': transition, 'pagebuilder-transition-out': transitionOut, 'pagebuilder-wysiwyg-snapshot': wysiwygConfigData()['pagebuilder_content_snapshot']}">
2121
<div if="wysiwygConfigData()['pagebuilder_content_snapshot']"
2222
class="pagebuilder-wysiwyg-overlay"
2323
click="pageBuilderEditButtonClick.bind($data)"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
*/
66
-->
77
<div class="pagebuilder-stage-wrapper"
8-
css="'stage-full-screen': isFullScreen, 'pagebuilder-content-snapshot': isSnapshot"
8+
css="'stage-full-screen': isFullScreen, 'stage-content-snapshot': isSnapshot"
99
ko-style="wrapperStyles">
1010
<div class="admin__field pagebuilder-header"
11-
css="visible: panel.isVisible()"
11+
css="visible: panel.isVisible(), transition: isSnapshotTransition()"
1212
if="!isSnapshot()">
1313
<button type="button" translate="'Apply Template'" if="isAllowedTemplateApply" click="toggleTemplateManger"/>
1414
<button type="button" translate="'Save as Template'" if="isAllowedTemplateSave" click="saveAsTemplate"/>

app/code/Magento/PageBuilder/view/adminhtml/web/template/panel.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
-->
77

88
<div id="pagebuilder-panel-wrapper" class="pagebuilder-panel-wrapper"
9-
css="visible: isVisible, 'sticky-top': isStickyTop, 'sticky-bottom': isStickyBottom"
9+
css="visible: isVisible, 'sticky-top': isStickyTop, 'sticky-bottom': isStickyBottom, 'transition': $parent.isSnapshotTransition"
1010
afterRender="afterRender">
1111
<div id="pagebuilder-panel" class="pagebuilder-panel">
1212
<div class="search-content-types">

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

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export default class PageBuilder implements PageBuilderInterface {
3333
public originalScrollTop: number = 0;
3434
public isFullScreen: KnockoutObservable<boolean> = ko.observable(false);
3535
public isSnapshot: KnockoutObservable<boolean> = ko.observable(false);
36+
public isSnapshotTransition: KnockoutObservable<boolean> = ko.observable(false);
3637
public loading: KnockoutObservable<boolean> = ko.observable(true);
3738
public wrapperStyles: KnockoutObservable<{[key: string]: string}> = ko.observable({});
3839
public isAllowedTemplateSave: boolean;
@@ -47,6 +48,7 @@ export default class PageBuilder implements PageBuilderInterface {
4748
this.initialValue = initialValue;
4849
this.isFullScreen(config.isFullScreen);
4950
this.isSnapshot(config.pagebuilder_content_snapshot);
51+
this.isSnapshotTransition(false);
5052
this.config = config;
5153

5254
this.isAllowedTemplateApply = isAllowed(resources.TEMPLATE_APPLY);
@@ -89,9 +91,6 @@ export default class PageBuilder implements PageBuilderInterface {
8991
* @param {StageToggleFullScreenParamsInterface} args
9092
*/
9193
public toggleFullScreen(args: StageToggleFullScreenParamsInterface): void {
92-
if (Config.getConfig("pagebuilder_content_snapshot")) {
93-
this.isSnapshot(this.isFullScreen());
94-
}
9594
if (args.animate === false) {
9695
this.isFullScreen(!this.isFullScreen());
9796
return;
@@ -129,13 +128,27 @@ export default class PageBuilder implements PageBuilderInterface {
129128
}, {}),
130129
);
131130
});
131+
_.delay(() => {
132+
if (Config.getConfig("pagebuilder_content_snapshot")) {
133+
this.isSnapshot(false);
134+
}
135+
}, 350);
132136
} else {
133137
// When leaving full screen mode just transition back to the original state
138+
if (Config.getConfig("pagebuilder_content_snapshot")) {
139+
this.isSnapshotTransition(true);
140+
}
134141
this.wrapperStyles(this.previousWrapperStyles);
135-
this.isFullScreen(false);
142+
_.delay(() => {
143+
if (Config.getConfig("pagebuilder_content_snapshot")) {
144+
this.isSnapshot(true);
145+
this.isSnapshotTransition(false);
146+
}
147+
}, 350);
136148
panel.css("height", this.previousPanelHeight + "px");
137149
// Wait for the 350ms animation to complete before changing these properties back
138150
_.delay(() => {
151+
this.isFullScreen(false);
139152
panel.css("height", "");
140153
pageBuilderWrapper.css("height", "");
141154
this.wrapperStyles(Object.keys(this.previousWrapperStyles)
@@ -145,7 +158,7 @@ export default class PageBuilder implements PageBuilderInterface {
145158
);
146159
this.previousWrapperStyles = {};
147160
this.previousPanelHeight = null;
148-
}, 350);
161+
}, 600);
149162
}
150163
}
151164

0 commit comments

Comments
 (0)