9
9
'mage/translate' ,
10
10
'Magento_PageBuilder/js/events' ,
11
11
'Magento_PageBuilder/js/page-builder'
12
- ] , function ( jquery , Wysiwyg , $t , events , PageBuilder ) {
12
+ ] , function ( $ , Wysiwyg , $t , events , PageBuilder ) {
13
13
'use strict' ;
14
14
15
15
/**
@@ -22,10 +22,14 @@ define([
22
22
visiblePageBuilder : false ,
23
23
isComponentInitialized : false ,
24
24
wysiwygConfigData : { } ,
25
- pageBuilderEditButtonText : $t ( 'Edit with Page Builder' )
25
+ pageBuilderEditButtonText : $t ( 'Edit with Page Builder' ) ,
26
+ isWithinModal : false ,
27
+ modal : false ,
26
28
} ,
27
29
28
- /** @inheritdoc */
30
+ /**
31
+ * @inheritdoc
32
+ */
29
33
initialize : function ( ) {
30
34
this . _super ( ) ;
31
35
@@ -36,21 +40,35 @@ define([
36
40
return this ;
37
41
} ,
38
42
39
- /** @inheritdoc */
43
+ /**
44
+ * @inheritdoc
45
+ */
40
46
initObservable : function ( ) {
41
47
this . _super ( )
42
48
. observe ( 'visiblePageBuilder wysiwygConfigData loading' ) ;
43
49
44
50
return this ;
45
51
} ,
46
52
47
- /** Handle button click. */
48
- pageBuilderEditButtonClick : function ( ) {
53
+ /**
54
+ * Handle button click, init the Page Builder application
55
+ */
56
+ pageBuilderEditButtonClick : function ( context , event ) {
57
+ var modalInnerWrap = $ ( event . currentTarget ) . parents ( ".modal-inner-wrap" ) ;
58
+
59
+ // Determine if the Page Builder instance is within a modal
60
+ this . isWithinModal = modalInnerWrap . length === 1 ;
61
+ if ( this . isWithinModal ) {
62
+ this . modal = modalInnerWrap ;
63
+ }
64
+
49
65
this . initPageBuilder ( ) ;
50
66
this . toggleFullScreen ( ) ;
51
67
} ,
52
68
53
- /** Init PageBuilder. */
69
+ /**
70
+ * Init Page Builder
71
+ */
54
72
initPageBuilder : function ( ) {
55
73
if ( ! this . isComponentInitialized ) {
56
74
this . loading ( true ) ;
@@ -63,29 +81,47 @@ define([
63
81
}
64
82
} ,
65
83
66
- /** Toggle PageBuilder full screen. */
84
+ /**
85
+ * Toggle Page Builder full screen mode
86
+ */
67
87
toggleFullScreen : function ( ) {
68
88
events . trigger ( 'stage:' + this . pageBuilder . id + ':toggleFullscreen' , { } ) ;
69
89
} ,
70
90
71
- /** Init listeners of stage. */
91
+ /**
92
+ * Init various listeners on the stage
93
+ */
72
94
initPageBuilderListeners : function ( ) {
73
95
var id = this . pageBuilder . id ;
74
96
75
97
events . on ( 'stage:' + id + ':readyAfter' , function ( ) {
76
98
this . isComponentInitialized = true ;
77
99
this . loading ( false ) ;
78
100
} . bind ( this ) ) ;
101
+
79
102
events . on ( 'stage:' + id + ':masterFormatRenderAfter' , function ( args ) {
80
103
this . value ( args . value ) ;
81
104
} . bind ( this ) ) ;
105
+
82
106
events . on ( 'stage:' + id + ':fullScreenModeChangeAfter' , function ( args ) {
83
107
if ( ! args . fullScreen && this . wysiwygConfigData ( ) [ 'pagebuilder_button' ] ) {
84
108
this . visiblePageBuilder ( false ) ;
85
- jquery ( '.modal-inner-wrap' ) . removeClass ( 'un-transform' ) ;
109
+
110
+ if ( this . isWithinModal && this . modal ) {
111
+ this . modal . css ( {
112
+ transform : "" ,
113
+ transition : ""
114
+ } ) ;
115
+ }
86
116
} else if ( args . fullScreen && this . wysiwygConfigData ( ) [ 'pagebuilder_button' ] ) {
87
117
this . visiblePageBuilder ( true ) ;
88
- jquery ( '.modal-inner-wrap' ) . addClass ( 'un-transform' ) ;
118
+
119
+ if ( this . isWithinModal && this . modal ) {
120
+ this . modal . css ( {
121
+ transform : "none" ,
122
+ transition : "none"
123
+ } ) ;
124
+ }
89
125
}
90
126
} . bind ( this ) ) ;
91
127
}
0 commit comments