|
15 | 15 | } |
16 | 16 |
|
17 | 17 | if ( wc_monei_form.is_apple_selected() ) { |
| 18 | + wc_monei_form.init_checkout_apple_google(); |
18 | 19 | wc_monei_form.init_apple_google_pay(); |
19 | 20 | } |
20 | 21 | } ); |
21 | 22 | // On Pay for order form. |
22 | 23 | $( 'form#order_review' ).on( 'click', function () { |
23 | 24 | if ( wc_monei_form.is_apple_selected() ) { |
| 25 | + wc_monei_form.init_checkout_apple_google(); |
24 | 26 | wc_monei_form.init_apple_google_pay(); |
25 | 27 | } |
26 | 28 | } ); |
|
81 | 83 | this.form = this.$order_pay_form; |
82 | 84 |
|
83 | 85 | if ( wc_monei_form.is_apple_selected() ) { |
| 86 | + wc_monei_form.init_checkout_apple_google(); |
84 | 87 | wc_monei_form.init_apple_google_pay(); |
85 | 88 | } |
86 | 89 |
|
87 | 90 | $( 'input[name="payment_method"]' ).on( 'change', function () { |
88 | 91 | // Check if the apple google pay method is selected |
89 | 92 | if ( wc_monei_form.is_apple_selected() ) { |
| 93 | + wc_monei_form.init_checkout_apple_google(); |
90 | 94 | wc_monei_form.init_apple_google_pay(); |
91 | 95 | } |
92 | 96 | } ); |
|
108 | 112 | }, |
109 | 113 | on_payment_selected() { |
110 | 114 | if ( wc_monei_form.is_apple_selected() ) { |
| 115 | + wc_monei_form.init_checkout_apple_google(); |
111 | 116 | wc_monei_form.init_apple_google_pay(); |
112 | 117 | // Apple/Google Pay initialized |
113 | 118 | if ( wc_monei_form.is_checkout ) { |
|
130 | 135 | return $( '#payment_method_monei_apple_google' ).is( ':checked' ); |
131 | 136 | }, |
132 | 137 | init_apple_google_pay() { |
133 | | - // Check if container exists, create if needed (for order-pay page) |
134 | | - let container = document.getElementById( |
135 | | - 'payment-request-container' |
136 | | - ); |
137 | | - if ( ! container ) { |
138 | | - // Create container structure if it doesn't exist |
139 | | - const paymentMethodLi = document |
140 | | - .querySelector( '#payment_method_monei_apple_google' ) |
141 | | - ?.closest( 'li' ); |
142 | | - if ( ! paymentMethodLi ) { |
143 | | - return; |
144 | | - } |
145 | | - |
146 | | - // Create the container structure |
147 | | - const fieldset = document.createElement( 'fieldset' ); |
148 | | - fieldset.id = 'wc-monei_apple_google-payment-request-form'; |
149 | | - fieldset.className = 'wc-payment-request-form'; |
150 | | - fieldset.style.background = 'transparent'; |
151 | | - fieldset.style.border = 'none'; |
152 | | - |
153 | | - const formDiv = document.createElement( 'div' ); |
154 | | - formDiv.id = 'payment-request-form'; |
155 | | - |
156 | | - container = document.createElement( 'div' ); |
157 | | - container.id = 'payment-request-container'; |
158 | | - |
159 | | - formDiv.appendChild( container ); |
160 | | - fieldset.appendChild( formDiv ); |
161 | | - paymentMethodLi.appendChild( fieldset ); |
162 | | - } |
163 | | - |
164 | 138 | // If checkout is updated (and monei was initiated already), ex, selecting new shipping methods, checkout is re-render by the ajax call. |
165 | 139 | // and we need to reset the counter in order to initiate again the monei component. |
166 | 140 | if ( wc_monei_form.$payment_request_container ) { |
| 141 | + const container = document.getElementById( |
| 142 | + 'payment-request-container' |
| 143 | + ); |
167 | 144 | // Reset if stored container differs from current (recreated) OR current is empty |
168 | 145 | if ( |
169 | 146 | wc_monei_form.$payment_request_container !== container || |
|
193 | 170 | // We already init the button. |
194 | 171 | this.init_apple_counter++; |
195 | 172 | }, |
| 173 | + init_checkout_apple_google() { |
| 174 | + // Check if container exists, create if needed (for order-pay page) |
| 175 | + let container = document.getElementById( |
| 176 | + 'payment-request-container' |
| 177 | + ); |
| 178 | + if ( ! container ) { |
| 179 | + // Create container structure if it doesn't exist |
| 180 | + const paymentMethodLi = document |
| 181 | + .querySelector( '#payment_method_monei_apple_google' ) |
| 182 | + ?.closest( 'li' ); |
| 183 | + if ( ! paymentMethodLi ) { |
| 184 | + return; |
| 185 | + } |
| 186 | + |
| 187 | + // Create the container structure |
| 188 | + const fieldset = document.createElement( 'fieldset' ); |
| 189 | + fieldset.id = 'wc-monei_apple_google-payment-request-form'; |
| 190 | + fieldset.className = |
| 191 | + 'monei-fieldset monei-payment-request-fieldset'; |
| 192 | + |
| 193 | + container = document.createElement( 'div' ); |
| 194 | + container.id = 'payment-request-container'; |
| 195 | + container.className = |
| 196 | + 'monei-payment-request-container wc-block-components-skeleton__element'; |
| 197 | + |
| 198 | + fieldset.appendChild( container ); |
| 199 | + paymentMethodLi.appendChild( fieldset ); |
| 200 | + } else { |
| 201 | + // Ensure existing container has the correct class |
| 202 | + container.className = |
| 203 | + 'monei-payment-request-container wc-block-components-skeleton__element'; |
| 204 | + } |
| 205 | + }, |
196 | 206 | init_apple_google_component() { |
197 | 207 | if ( window.paymentRequest ) { |
198 | 208 | window.paymentRequest.close(); |
|
221 | 231 | $( '#place_order' ).prop( 'disabled', false ); |
222 | 232 | wc_monei_form.create_hidden_input( |
223 | 233 | 'monei_payment_request_token', |
224 | | - 'payment-request-form', |
| 234 | + 'wc-monei_apple_google-payment-request-form', |
225 | 235 | token |
226 | 236 | ); |
227 | 237 | // Once Token is created, submit form. |
|
0 commit comments