diff --git a/assets/js/src/form_editor/blocks/blocks.jsx b/assets/js/src/form_editor/blocks/blocks.jsx index 8a30c70028..3ef15fbee2 100644 --- a/assets/js/src/form_editor/blocks/blocks.jsx +++ b/assets/js/src/form_editor/blocks/blocks.jsx @@ -10,8 +10,20 @@ import * as lastName from './last_name/last_name.jsx'; import * as segmentSelect from './segment_select/segment_select.jsx'; import * as customHtml from './custom_html/custom_html.jsx'; +import * as customText from './custom_text/custom_text.jsx'; + +const registerCustomFieldBlock = (customField) => { + console.log('custom Field', customField); + // eslint-disable-next-line default-case + switch (customField.type) { + case 'text': + registerBlockType(customText.name, customText.getSettings(customField)); + break; + } +}; + export default () => { - const customFields = select('mailpoet-form-editor').getAllAvailableCustomFields() + const customFields = select('mailpoet-form-editor').getAllAvailableCustomFields(); const categories = [ { slug: 'obligatory', title: '' }, // Blocks from this category are not in block insert popup @@ -29,4 +41,8 @@ export default () => { registerBlockType(lastName.name, lastName.settings); registerBlockType(segmentSelect.name, segmentSelect.settings); registerBlockType(customHtml.name, customHtml.settings); + + if (Array.isArray(customFields)) { + customFields.forEach(registerCustomFieldBlock); + } }; diff --git a/assets/js/src/form_editor/blocks/custom_text/custom_text.jsx b/assets/js/src/form_editor/blocks/custom_text/custom_text.jsx new file mode 100644 index 0000000000..70dc3ff4f7 --- /dev/null +++ b/assets/js/src/form_editor/blocks/custom_text/custom_text.jsx @@ -0,0 +1,37 @@ +import MailPoet from 'mailpoet'; + +export const name = 'mailpoet-form/custom-text'; + +export function getSettings(customField) { + return { + title: customField.name, + description: '', + icon: 'admin-site', // TODO + category: 'custom-fields', + attributes: { + label: { + type: 'string', + default: MailPoet.I18n.t('blockFirstName'), + }, + labelWithinInput: { + type: 'boolean', + default: true, + }, + mandatory: { + type: 'boolean', + default: false, + }, + }, + supports: { + html: false, + customClassName: false, + multiple: false, + }, + edit() { + return null; + }, // TODO + save() { + return null; + }, + }; +};