diff --git a/assets/js/src/form_editor/store/actions.jsx b/assets/js/src/form_editor/store/actions.jsx index e548f7edf3..84a8613bb4 100644 --- a/assets/js/src/form_editor/store/actions.jsx +++ b/assets/js/src/form_editor/store/actions.jsx @@ -6,6 +6,13 @@ export function toggleSidebar(toggleTo) { }; } +export function changeFormBlocks(blocks) { + return { + type: 'CHANGE_FORM_BLOCKS', + blocks, + }; +} + export function changeFormName(name) { return { type: 'CHANGE_FORM_NAME', diff --git a/assets/js/src/form_editor/store/reducer.jsx b/assets/js/src/form_editor/store/reducer.jsx index 4df739744a..3f5cc2ebcd 100644 --- a/assets/js/src/form_editor/store/reducer.jsx +++ b/assets/js/src/form_editor/store/reducer.jsx @@ -8,9 +8,11 @@ import saveFormStarted from './reducers/save_form_started.jsx'; import switchSidebarTab from './reducers/switch_sidebar_tab.jsx'; import toggleSidebar from './reducers/toggle_sidebar.jsx'; import toggleSidebarPanel from './reducers/toggle_sidebar_panel.jsx'; +import changeFormBlocks from './reducers/change_form_blocks.jsx'; export default (defaultState) => (state = defaultState, action) => { switch (action.type) { + case 'CHANGE_FORM_BLOCKS': return changeFormBlocks(state, action); case 'CHANGE_FORM_NAME': return changeFormName(state, action); case 'CHANGE_FORM_SETTINGS': return changeFormSettings(state, action); case 'CHANGE_FORM_STYLES': return changeFormStyles(state, action); diff --git a/assets/js/src/form_editor/store/reducers/change_form_blocks.jsx b/assets/js/src/form_editor/store/reducers/change_form_blocks.jsx new file mode 100644 index 0000000000..fcf4698041 --- /dev/null +++ b/assets/js/src/form_editor/store/reducers/change_form_blocks.jsx @@ -0,0 +1,12 @@ +import validateForm from '../form_validator.jsx'; + +export default (state, action) => { + const newState = { + ...state, + formBlocks: action.blocks, + }; + return { + ...newState, + formErrors: validateForm(newState.formData, newState.formBlocks), + }; +}; diff --git a/assets/js/src/form_editor/store/selectors.jsx b/assets/js/src/form_editor/store/selectors.jsx index d2f155c8b6..b5181261c4 100644 --- a/assets/js/src/form_editor/store/selectors.jsx +++ b/assets/js/src/form_editor/store/selectors.jsx @@ -44,4 +44,7 @@ export default { getSidebarOpenedPanels(state) { return state.sidebar.openedPanels; }, + getFormBlocks(state) { + return state.formBlocks; + }, };