Fix loading custom field from columns
[MAILPOET-2868]
This commit is contained in:
committed by
Veljko V
parent
93ac0f5fec
commit
8dc3d5f493
@@ -132,9 +132,19 @@ const mapFontSizeSlug = (fontSizeDefinitions, fontSizeValue) => {
|
|||||||
return result ? result.slug : undefined;
|
return result ? result.slug : undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapColumnBlocks = (data, colorDefinitions, customFields = []) => {
|
/**
|
||||||
|
* @param {Object} data - column or columns block data
|
||||||
|
* @param {Array.<{name: string, slug: string, color: string}>} colorDefinitions
|
||||||
|
* @param {Array.<{name: string, slug: string, size: number}>} fontSizeDefinitions
|
||||||
|
* @param customFields - list of all custom Fields
|
||||||
|
*/
|
||||||
|
const mapColumnBlocks = (data, fontSizeDefinitions, colorDefinitions, customFields = []) => {
|
||||||
// eslint-disable-next-line no-use-before-define
|
// eslint-disable-next-line no-use-before-define
|
||||||
const mapFormBodyToBlocks = formBodyToBlocksFactory(colorDefinitions, customFields);
|
const mapFormBodyToBlocks = formBodyToBlocksFactory(
|
||||||
|
colorDefinitions,
|
||||||
|
fontSizeDefinitions,
|
||||||
|
customFields
|
||||||
|
);
|
||||||
const mapped = {
|
const mapped = {
|
||||||
clientId: generateId(),
|
clientId: generateId(),
|
||||||
name: `core/${data.type}`,
|
name: `core/${data.type}`,
|
||||||
@@ -191,7 +201,7 @@ export const formBodyToBlocksFactory = (
|
|||||||
|
|
||||||
return data.map((item) => {
|
return data.map((item) => {
|
||||||
if (['column', 'columns'].includes(item.type)) {
|
if (['column', 'columns'].includes(item.type)) {
|
||||||
return mapColumnBlocks(item, colorDefinitions, customFields);
|
return mapColumnBlocks(item, fontSizeDefinitions, colorDefinitions, customFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapped = {
|
const mapped = {
|
||||||
|
@@ -638,4 +638,32 @@ describe('Form Body To Blocks', () => {
|
|||||||
expect(block.attributes.width).to.equal(100);
|
expect(block.attributes.width).to.equal(100);
|
||||||
expect(block.attributes.height).to.equal(200);
|
expect(block.attributes.height).to.equal(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should map custom field in column', () => {
|
||||||
|
const columnsWithCustomField = { ...nestedColumns };
|
||||||
|
// Add custom field to first column
|
||||||
|
columnsWithCustomField.body[0].body = [customTextInput];
|
||||||
|
// Prepare custom fields definitions
|
||||||
|
const customField = {
|
||||||
|
created_at: '2019-12-10T15:05:06+00:00',
|
||||||
|
id: 1,
|
||||||
|
name: 'Custom Field name',
|
||||||
|
params: {
|
||||||
|
label: 'Street name',
|
||||||
|
required: '1',
|
||||||
|
validate: '',
|
||||||
|
},
|
||||||
|
type: 'text',
|
||||||
|
updated_at: '2019-12-10T15:05:06+00:00',
|
||||||
|
};
|
||||||
|
const customFields = [customField];
|
||||||
|
// Map columns with custom field
|
||||||
|
const map = formBodyToBlocksFactory(colorDefinitions, fontSizeDefinitions, customFields);
|
||||||
|
const [columns] = map([columnsWithCustomField]);
|
||||||
|
const firstColumn = columns.innerBlocks[0];
|
||||||
|
expect(firstColumn.innerBlocks.length).to.be.equal(1);
|
||||||
|
const customFieldBlock = firstColumn.innerBlocks[0];
|
||||||
|
checkBlockBasics(customFieldBlock);
|
||||||
|
expect(customFieldBlock.name).includes('mailpoet-form/custom-text-');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user