Add columns graditent mapping from blocks to server data

[MAILPOET-3005]
This commit is contained in:
Rostislav Wolny
2020-07-02 14:15:15 +02:00
committed by Veljko V
parent aeb2c0d391
commit 3eb6513b0a
6 changed files with 73 additions and 11 deletions

View File

@@ -154,8 +154,9 @@ export function* showPreview(formType = null) {
const formData = select('mailpoet-form-editor').getFormData();
const formBlocks = select('mailpoet-form-editor').getFormBlocks();
const blocksToFormBody = blocksToFormBodyFactory(
editorSettings.colors,
editorSettings.fontSizes,
editorSettings.colors,
editorSettings.gradients,
customFields
);
const { success, error } = yield {

View File

@@ -3,6 +3,7 @@ import {
mapInputBlockStyles,
mapColorSlugToValue,
mapFontSizeSlugToValue,
mapGradientSlugToValue,
} from './mapping/from_blocks/styles_mapper';
const mapCustomField = (block, customFields, mappedCommonProperties) => {
@@ -67,11 +68,17 @@ const mapCustomField = (block, customFields, mappedCommonProperties) => {
/**
* Factory for block to form data mapper
* @param {Array.<{name: string, slug: string, color: string}>} colorDefinitions
* @param {Array.<{name: string, slug: string, size: number}>} fontSizeDefinitions
* @param {Array.<{name: string, slug: string, color: string}>} colorDefinitions
* @param {Array.<{name: string, slug: string, gradient: string}>} gradientDefinitions
* @param customFields - list of all custom Fields
*/
const blocksToFormBodyFactory = (colorDefinitions, fontSizeDefinitions, customFields) => {
const blocksToFormBodyFactory = (
fontSizeDefinitions,
colorDefinitions,
gradientDefinitions,
customFields
) => {
if (!Array.isArray(customFields)) {
throw new Error('Mapper expects customFields to be an array.');
}
@@ -208,6 +215,11 @@ const blocksToFormBodyFactory = (colorDefinitions, fontSizeDefinitions, customFi
block.attributes.backgroundColor,
block.attributes.style?.color?.background
),
gradient: mapGradientSlugToValue(
gradientDefinitions,
block.attributes.gradient,
block.attributes.style?.color?.gradient
),
},
};
case 'mailpoet-form/email-input':

View File

@@ -45,8 +45,9 @@ export default {
const { getSettings } = select('core/block-editor');
const settings = getSettings();
const blocksToFormBody = blocksToFormBodyFactory(
settings.colors,
settings.fontSizes,
settings.colors,
settings.gradients,
customFields
);
const requestData = {

View File

@@ -4,6 +4,7 @@ import {
InputBlockStylesServerData,
FontSizeDefinition,
ColorDefinition,
GradientDefinition,
} from 'form_editor/store/form_data_types';
export const mapInputBlockStyles = (styles: InputBlockStyles) => {
@@ -50,6 +51,15 @@ export const mapColorSlugToValue = (
return result ? result.color : colorValue;
};
export const mapGradientSlugToValue = (
colorDefinitions: GradientDefinition[],
slug: string,
value: string = null
): string => {
const result = colorDefinitions.find((color) => color.slug === slug);
return result ? result.gradient : value;
};
export const mapFontSizeSlugToValue = (
fontSizeDefinitions: FontSizeDefinition[],
sizeSlug: string,