🐛 Fix button specific config-preparation

This commit is contained in:
Philipp Stracker 2024-06-07 15:42:16 +02:00
parent da64ffbac5
commit 33c6c06e85
No known key found for this signature in database
4 changed files with 51 additions and 8 deletions

View file

@ -96,6 +96,30 @@ class ApplePayPreviewButton extends PreviewButton {
button.init(this.configResponse);
}
/**
* Some style details need to be copied from the ppcpConfig object to buttonConfig.
*
* - ppcpConfig: Generated by JS, containing the current form values.
* - buttonConfig: Generated on server side, contains the full (saved) button details.
*/
applyPreviewConfig() {
// The Apple Pay button expects the "wrapper" to be an ID without `#` prefix!
if (this.buttonConfig?.button?.wrapper) {
this.buttonConfig.button.wrapper = this.buttonConfig.button.wrapper.replace(/^#/, '');
}
// Apple Pay expects the param "lang" instead of "language"
if (this.ppcpConfig?.button?.style?.language) {
this.ppcpConfig.button.style.lang = this.ppcpConfig.button.style.language;
}
if (this.ppcpConfig && this.buttonConfig) {
this.buttonConfig.button.type = this.ppcpConfig.button.style.type;
this.buttonConfig.button.color = this.ppcpConfig.button.style.color;
this.buttonConfig.button.lang = this.ppcpConfig.button.style.lang;
}
}
}
// Initialize the preview button manager.

View file

@ -20,7 +20,6 @@ class PreviewButton {
this.selector = selector;
this.domWrapper = null;
this.payButton = null;
}
/**
@ -50,18 +49,24 @@ class PreviewButton {
this.buttonConfig.button.wrapper = this.selector
}
if (this.ppcpConfig && this.buttonConfig) {
this.buttonConfig.button.style = this.ppcpConfig.button.style;
}
this.applyPreviewConfig();
return this;
}
/**
* Some style details need to be copied from the ppcpConfig object to buttonConfig.
*
* - ppcpConfig: Generated by JS, containing the current form values.
* - buttonConfig: Generated on server side, contains the full (saved) button details.
*/
applyPreviewConfig() {
// Implement in the derived class.
}
/**
* Responsible for creating the actual payment button preview.
* Called by the `render()` method, after the wrapper DOM element is ready.
*
* @return {any} Return value is assigned to `this.payButton`
*/
createButton() {
throw new Error('The "createButton" method must be implemented by the derived class');

View file

@ -97,8 +97,18 @@ class GooglePayPreviewButton extends PreviewButton {
);
button.init(this.configResponse);
}
return button;
/**
* Some style details need to be copied from the ppcpConfig object to buttonConfig.
*
* - ppcpConfig: Generated by JS, containing the current form values.
* - buttonConfig: Generated on server side, contains the full (saved) button details.
*/
applyPreviewConfig() {
if (this.ppcpConfig && this.buttonConfig) {
this.buttonConfig.button.style = this.ppcpConfig.button.style;
}
}
}

View file

@ -7,9 +7,13 @@
box-shadow: 0 2px 10px 1px #ddd;
margin-right: -28px;
// Preview box showing a single button.
&[data-ppcp-apm-preview] {
height: 82px;
margin-top: -149px;
@media (min-width: 1200px) {
margin-top: -149px;
}
@media (min-width: 601px) and (max-width: 1399px) {
margin-right: 10px;