From 0f8a7bb19ae55f8cb6488d766596c0b7dd81d4aa Mon Sep 17 00:00:00 2001 From: Nolan Ehrstrom Date: Mon, 3 Feb 2020 11:52:55 -0800 Subject: [PATCH 1/2] Add loop control --- src/App.vue | 17 ++- src/components/editor/loop.vue | 194 ++++++++++++++++++++++++++ src/components/renderer/form-loop.vue | 119 ++++++++++++++++ src/components/vue-form-builder.vue | 2 + src/form-builder-controls.js | 32 +++++ 5 files changed, 363 insertions(+), 1 deletion(-) create mode 100644 src/components/editor/loop.vue create mode 100644 src/components/renderer/form-loop.vue diff --git a/src/App.vue b/src/App.vue index 4c8c85b42..71b0c63b4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -33,7 +33,7 @@ - + { if (item.container) { item.items.forEach(containerItems => { + if (!Array.isArray(containerItems)) { + containerItems = [containerItems]; + } validationErrors.push(...this.getValidationErrorsForItems(containerItems, page)); }); } diff --git a/src/components/editor/loop.vue b/src/components/editor/loop.vue new file mode 100644 index 000000000..70b947219 --- /dev/null +++ b/src/components/editor/loop.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/components/renderer/form-loop.vue b/src/components/renderer/form-loop.vue new file mode 100644 index 000000000..7a6fe2332 --- /dev/null +++ b/src/components/renderer/form-loop.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/components/vue-form-builder.vue b/src/components/vue-form-builder.vue index cdcb99f25..d5780a091 100644 --- a/src/components/vue-form-builder.vue +++ b/src/components/vue-form-builder.vue @@ -269,6 +269,7 @@ import undoRedoModule from '../undoRedoModule'; import accordions from './accordions'; import { keyNameProperty } from '../form-control-common-properties'; import VariableNameGenerator from '@/components/VariableNameGenerator'; +import Loop from './editor/loop'; Vue.use(BootstrapVue); @@ -330,6 +331,7 @@ export default { mixins: [HasColorProperty], components: { draggable, + Loop, FormInput, FormSelectList, FormCheckbox, diff --git a/src/form-builder-controls.js b/src/form-builder-controls.js index acfb51eec..b64959efb 100644 --- a/src/form-builder-controls.js +++ b/src/form-builder-controls.js @@ -1,6 +1,8 @@ import FormText from './components/renderer/form-text'; import FormButton from './components/renderer/form-button'; import FormMultiColumn from './components/renderer/form-multi-column'; +import FormLoop from './components/renderer/form-loop'; +import Loop from './components/editor/loop'; import FormRecordList from './components/renderer/form-record-list'; import FormImage from './components/renderer/form-image'; import FormMaskedInput from './components/renderer/form-masked-input'; @@ -346,6 +348,36 @@ export default [ ], }, }, + { + editorComponent: Loop, + editorBinding: 'Loop', + rendererComponent: FormLoop, + rendererBinding: 'FormLoop', + control: { + label: 'Loop', + component: 'FormLoop', + 'editor-component': 'Loop', + 'editor-control': 'Loop', + container: true, + // Default items container + items: [], + config: { + icon: 'fas fa-redo', + times: '2', + }, + inspector: [ + keyNameProperty, + { + type: 'FormInput', + field: 'times', + config: { + label: 'Number of times', + helper: 'Enter the number of times to repeat the element(s)', + }, + }, + ], + }, + }, { editorComponent: FormText, editorBinding: 'FormText', From d2014ff877ac440eb749a4dec842a7477b2cfb1d Mon Sep 17 00:00:00 2001 From: Nolan Ehrstrom Date: Mon, 3 Feb 2020 12:47:13 -0800 Subject: [PATCH 2/2] Remove duplicate component registration --- src/components/renderer/form-loop.vue | 4 ---- src/components/vue-form-renderer.vue | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/renderer/form-loop.vue b/src/components/renderer/form-loop.vue index 7a6fe2332..70444c0a3 100644 --- a/src/components/renderer/form-loop.vue +++ b/src/components/renderer/form-loop.vue @@ -15,16 +15,12 @@