diff --git a/.gitignore b/.gitignore index 86aff7e..818391c 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,6 @@ tmp *.iml out gen -/nbproject/private/ \ No newline at end of file +/nbproject/private/ + +nbproject \ No newline at end of file diff --git a/demo/demo.js b/demo/demo.js index 0deecdc..11fd70b 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -4,7 +4,7 @@ angular.module('app', ['mwFormBuilder', 'mwFormViewer', 'mwFormUtils', 'pascalpr prefix: '../dist/i18n/', suffix: '/angular-surveys.json' }); - $translateProvider.preferredLanguage('es'); + $translateProvider.preferredLanguage('en'); }) .controller('DemoController', function($q,$http, $translate, mwFormResponseUtils) { @@ -28,6 +28,14 @@ angular.module('app', ['mwFormBuilder', 'mwFormViewer', 'mwFormUtils', 'pascalpr ctrl.formOptions = { autoStart: false }; + ctrl.optionsBuilder={ + /*elementButtons: [{title: 'My title tooltip', icon: 'fa fa-database', text: '', callback: ctrl.callback, filter: ctrl.filter, showInOpen: true}], + customQuestionSelects: [ + {key:"category", label: 'Category', options: [{key:"1", label:"Uno"},{key:"2", label:"dos"},{key:"3", label:"tres"},{key:"4", label:"4"}], required: false}, + {key:"category2", label: 'Category2', options: [{key:"1", label:"Uno"},{key:"2", label:"dos"},{key:"3", label:"tres"},{key:"4", label:"4"}]} + ], + elementTypes: ['question', 'image']*/ + }; ctrl.formStatus= {}; ctrl.responseData={}; $http.get('response-data.json') diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 613de1b..f989058 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -1,17 +1,18 @@ -angular.module("mwFormBuilder",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]).constant("MW_QUESTION_TYPES",["text","textarea","radio","checkbox","grid","priority","division","number","date","time","email","range","url"]).value("mwFormBuilderOptions",{}); +angular.module("mwFormBuilder",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); angular.module("mwFormBuilder").service("mwFormUuid",function(){function r(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}this.get=function(){return r()+r()+r()+r()+r()+r()+r()+r()}}).factory("mwFormClone",["mwFormUuid",function(r){var e={},n=[];return e.resetIds=function(t,a){if(a&&(n=[]),!(n.indexOf(t)>=0)&&(n.push(t),!t!==Object(t))){if(Array.isArray(t))return void t.forEach(e.resetIds);for(var o in t)t.hasOwnProperty(o)&&e.resetIds(t[o]);if(t.hasOwnProperty("id")){var i=r.get();t.id;t.id=i}}},e.cloneElement=function(r){var n={};return angular.copy(r,n),e.resetIds(n,!0),n},e.clonePage=function(n){var t={};angular.copy(n,t),t.id=r.get();var a=[];if(Array.isArray(n.elements))for(var o=0;o
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); +angular.module("mwFormBuilder").run(["$templateCache",function(e){e.put("mw-form-builder.html",'
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); angular.module("mwFormBuilder").directive("mwQuestionPriorityListBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-priority-list-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(i){function e(i){if(i)for(var e=0;e=0&&m(a.formPage.elements,n,o),t()},a.addQuestion=function(){a.addElement("question")},a.addImage=function(){a.addElement("image")},a.addParagraph=function(){a.addElement("paragraph")},a.isElementActive=function(e){return a.activeElement==e},a.selectElement=function(e){a.activeElement=e},a.onElementReady=function(){e(function(){a.activeElement=null})},a.hoverIn=function(){a.hoverEdit=!0},a.hoverOut=function(){a.hoverEdit=!1},a.updateElementsOrderNo=t}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); +angular.module("mwFormBuilder").directive("mwFormPageElementBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageBuilder",scope:{pageElement:"=",formObject:"=",isActive:"=",isFirst:"=",isLast:"=",onReady:"&",readOnly:"=?"},templateUrl:"mw-form-page-element-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(e){var t=this;t.callback=function(e,n){e.preventDefault(),e.stopPropagation(),n.callback&&"function"==typeof n.callback&&n.callback(t.pageElement)},t.filter=function(e){return!e.showInOpen&&t.isActive?!1:e.showInPreview||t.isActive?e.filter&&"function"==typeof e.filter?e.filter(t.pageElement):!0:!1},"question"==t.pageElement.type?t.pageElement.question||(t.pageElement.question={id:e.get(),text:null,type:null,required:!0}):"image"==t.pageElement.type?t.pageElement.image||(t.pageElement.image={id:e.get(),align:"left"}):"paragraph"==t.pageElement.type&&(t.pageElement.paragraph||(t.pageElement.paragraph={id:e.get(),html:""}))}],link:function(e,t,n,l){var o=e.ctrl;o.possiblePageFlow=l.possiblePageFlow,o.hoverIn=function(){o.isHovered=!0},o.hoverOut=function(){o.isHovered=!1},o.editElement=function(){l.selectElement(o.pageElement)},o.cloneElement=function(e){e.preventDefault(),e.stopPropagation(),l.cloneElement(o.pageElement)},o.removeElement=function(){l.removeElement(o.pageElement)},o.moveDown=function(){l.moveDownElement(o.pageElement)},o.moveUp=function(){l.moveUpElement(o.pageElement)},o.options=l.options,o.onImageSelection=l.onImageSelection}}}); +angular.module("mwFormBuilder").directive("mwFormPageBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormBuilder",scope:{formPage:"=",formObject:"=",isFirst:"=",isLast:"=",readOnly:"=?"},templateUrl:"mw-form-page-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","mwFormUuid","mwFormClone","mwFormBuilderOptions",function(e,n,o,t){function r(){for(var e=0;e=0&&a(i.formPage.elements,n,o),r()},i.isElementTypeEnabled=function(e){return-1!==t.elementTypes.indexOf(e)},i.addQuestion=function(){i.addElement("question")},i.addImage=function(){i.addElement("image")},i.addParagraph=function(){i.addElement("paragraph")},i.isElementActive=function(e){return i.activeElement==e},i.selectElement=function(e){i.activeElement=e},i.onElementReady=function(){e(function(){i.activeElement=null})},i.hoverIn=function(){i.hoverEdit=!0},i.hoverOut=function(){i.hoverEdit=!1},i.updateElementsOrderNo=r}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); angular.module("mwFormBuilder").factory("FormImageBuilderId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormImageBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageElementBuilder",scope:{image:"=",formObject:"=",onReady:"&",isPreview:"=?",readOnly:"=?",onImageSelection:"&"},templateUrl:"mw-form-image-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormImageBuilderId","mwFormUuid",function(e,r,t){var n=this;n.id=r.next(),n.formSubmitted=!1,n.save=function(){n.formSubmitted=!0,n.form.$valid&&n.onReady()},n.selectImageButtonClicked=function(){var e=n.onImageSelection();e.then(function(e){n.image.src=e})["catch"](function(){})},n.setAlign=function(e){n.image.align=e}}],link:function(e,r,t,n){e.ctrl}}}); angular.module("mwFormBuilder").directive("mwFormConfirmationPageBuilder",function(){return{replace:!0,restrict:"AE",scope:{formObject:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout",function(r){var o=this;o.hoverEdit=!1,o.hoverIn=function(){o.hoverEdit=!0},o.hoverOut=function(){o.hoverEdit=!1}}],link:function(r,o,e){}}}); -angular.module("mwFormBuilder").directive("mwFormBuilder",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",readOnly:"=?",options:"=?",formStatus:"=?",onImageSelection:"&",api:"=?"},templateUrl:"mw-form-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid","MW_QUESTION_TYPES","mwFormBuilderOptions",function(e,a,o){function t(a){var o=null;return s.possiblePageFlow&&(o=s.possiblePageFlow[0]),{id:e.get(),number:a,name:null,description:null,pageFlow:o,elements:[]}}function n(){for(var e=0;e=0&&r(s.formData.pages,a,o),n()},s.removePage=function(e){var a=s.formData.pages.indexOf(e);s.formData.pages.splice(a,1),n()},s.api&&(s.api.reset=function(){for(var e in s.formData)s.formData.hasOwnProperty(e)&&"pages"!=e&&delete s.formData[e];s.formData.pages.length=0,s.formData.pages.push(t(1))})}],link:function(e,a,o){var t=e.ctrl;t.formStatus&&(t.formStatus.form=t.form),t.possiblePageFlow=[];var n={nextPage:!0,label:"mwForm.pageFlow.goToNextPage"};t.possiblePageFlow.push(n),t.isSamePageFlow=function(e,a){return e.page&&a.page&&e.page.id==a.page.id||e.formSubmit&&a.formSubmit||e.nextPage&&a.nextPage},t.updatePageFlow=function(){t.possiblePageFlow.length=1,t.formData.pages.forEach(function(e){t.possiblePageFlow.push({page:{id:e.id,number:e.number},label:"mwForm.pageFlow.goToPage"})}),t.possiblePageFlow.push({formSubmit:!0,label:"mwForm.pageFlow.submitForm"}),t.formData.pages.forEach(function(e){t.possiblePageFlow.forEach(function(a){e.pageFlow?t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a):e.pageFlow=n,e.elements.forEach(function(e){var o=e.question;o&&o.pageFlowModifier&&o.offeredAnswers.forEach(function(e){e.pageFlow&&t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a)})})})})},e.$watch("ctrl.formData.pages.length",function(e,a){t.updatePageFlow()})}}}); +angular.module("mwFormBuilder").directive("mwFormBuilder",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",readOnly:"=?",options:"=?",formStatus:"=?",onImageSelection:"&",api:"=?"},templateUrl:"mw-form-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid","MW_QUESTION_TYPES","mwFormBuilderOptions",function(a,e,o){function t(e){var o=null;return l.possiblePageFlow&&(o=l.possiblePageFlow[0]),{id:a.get(),number:e,name:null,description:null,pageFlow:o,elements:[]}}function r(){for(var a=0;a=0&&n(l.formData.pages,e,o),r()},l.removePage=function(a){var e=l.formData.pages.indexOf(a);l.formData.pages.splice(e,1),r()},l.api&&(l.api.reset=function(){for(var a in l.formData)l.formData.hasOwnProperty(a)&&"pages"!=a&&delete l.formData[a];l.formData.pages.length=0,l.formData.pages.push(t(1))})}],link:function(a,e,o){var t=a.ctrl;t.formStatus&&(t.formStatus.form=t.form),t.possiblePageFlow=[];var r={nextPage:!0,label:"mwForm.pageFlow.goToNextPage"};t.possiblePageFlow.push(r),t.isSamePageFlow=function(a,e){return a.page&&e.page&&a.page.id==e.page.id||a.formSubmit&&e.formSubmit||a.nextPage&&e.nextPage},t.updatePageFlow=function(){t.possiblePageFlow.length=1,t.formData.pages.forEach(function(a){t.possiblePageFlow.push({page:{id:a.id,number:a.number},label:"mwForm.pageFlow.goToPage"})}),t.possiblePageFlow.push({formSubmit:!0,label:"mwForm.pageFlow.submitForm"}),t.formData.pages.forEach(function(a){t.possiblePageFlow.forEach(function(e){a.pageFlow?t.isSamePageFlow(e,a.pageFlow)&&(a.pageFlow=e):a.pageFlow=r,a.elements.forEach(function(a){var o=a.question;o&&o.pageFlowModifier&&o.offeredAnswers.forEach(function(a){a.pageFlow&&t.isSamePageFlow(e,a.pageFlow)&&(a.pageFlow=e)})})})})},a.$watch("ctrl.formData.pages.length",function(a,e){t.updatePageFlow()})}}}); +angular.module("mwFormBuilder").constant("MW_QUESTION_TYPES",["text","textarea","radio","checkbox","grid","priority","division","number","date","time","email","range","url"]).constant("MW_ELEMENT_TYPES",["question","image","paragraph"]).factory("mwFormBuilderOptions",["MW_ELEMENT_TYPES","MW_QUESTION_TYPES",function(e,t){function n(e,t){return e?e.map(function(e){return angular.extend({},t,e)}):[]}var l={title:null,icon:null,text:null,callback:null,filter:null,showInOpen:!1,showInPreview:!0,cssClass:""},u={key:null,label:null,selects:[],required:!0},r={elementTypes:e,questionTypes:t,elementButtons:[],customQuestionSelects:[],customElements:[]},o={$init:function(e){return angular.extend(o,r,e),o.customQuestionSelects=n(o.customQuestionSelects,u),o.elementButtons=n(o.elementButtons,l),o}};return o}]); angular.module("mwFormBuilder").directive("wdFocusMe",["$timeout","$parse",function(n,u){return{link:function(o,t,c){var i=u(c.wdFocusMe);o.$watch(i,function(u){u===!0&&n(function(){t[0].focus()})}),t.bind("blur",function(){o.$apply(i.assign(o,!1))})}}}]).factory("focus",["$timeout","$window",function(n,u){return function(o){n(function(){var n=u.document.getElementById(o);n&&n.focus()})}}]); "use strict";angular.module("mwFormBuilder").directive("mwConfirmClick",["$window",function(i){return{restrict:"A",link:function(n,r,c){var o=c.wdConfirmClick||"Are you sure?";r.bind("click",function(r){i.confirm(o)&&n.$apply(c.confirmedAction)})}}}]); \ No newline at end of file diff --git a/src/builder/form-builder-options.service.js b/src/builder/form-builder-options.service.js new file mode 100644 index 0000000..6fc6156 --- /dev/null +++ b/src/builder/form-builder-options.service.js @@ -0,0 +1,54 @@ +angular.module('mwFormBuilder') + .constant('MW_QUESTION_TYPES', ['text', 'textarea', 'radio', 'checkbox', 'grid', 'priority', 'division', 'number', 'date', 'time', 'email', 'range', 'url']) + .constant('MW_ELEMENT_TYPES', ['question', 'image', 'paragraph']) + .factory('mwFormBuilderOptions', function mwFormBuilderOptionsFactory(MW_ELEMENT_TYPES, MW_QUESTION_TYPES){ + + var defaultElementButtonOptions={ + title: null, + icon: null, + text: null, + callback: null, + filter: null, + showInOpen:false, + showInPreview:true, + cssClass: '' + }; + + var defaultCustomQuestionSelectOptions={ + key: null, + label: null, + selects: [], + required: true + }; + + var defaultOptions={ + elementTypes: MW_ELEMENT_TYPES, + questionTypes: MW_QUESTION_TYPES, + elementButtons: [], + customQuestionSelects: [], + customElements: [] //TODO + }; + + function extendOptionList(optionList, defaultItemOptions){ + if(!optionList){ + return []; + } + return optionList.map(function (itemOptions){ + return angular.extend({}, defaultItemOptions, itemOptions); + }); + } + + var options = { + + $init: function(customOptions){ + angular.extend(options, defaultOptions, customOptions); + options.customQuestionSelects = extendOptionList(options.customQuestionSelects, defaultCustomQuestionSelectOptions); + options.elementButtons = extendOptionList(options.elementButtons, defaultElementButtonOptions); + + return options; + } + }; + + + return options; + }); diff --git a/src/builder/form-builder.directive.js b/src/builder/form-builder.directive.js index bc5deb2..a1cb0a8 100644 --- a/src/builder/form-builder.directive.js +++ b/src/builder/form-builder.directive.js @@ -21,29 +21,17 @@ angular.module('mwFormBuilder').directive('mwFormBuilder', function () { ctrl.formData.pages = []; ctrl.formData.pages.push(createEmptyPage(1)); } - mwFormBuilderOptions.questionTypes = MW_QUESTION_TYPES; - mwFormBuilderOptions.elementButtons = []; - mwFormBuilderOptions.additionalSelects = []; - - if(ctrl.options){ - if(ctrl.options.questionTypes){ - mwFormBuilderOptions.questionTypes = ctrl.options.questionTypes; - } - if(ctrl.options.additionalSelects){ - mwFormBuilderOptions.additionalSelects = ctrl.options.additionalSelects; - } - if(ctrl.options.elementButtons){ - mwFormBuilderOptions.elementButtons = ctrl.options.elementButtons; - } - } - + ctrl.options = mwFormBuilderOptions.$init(ctrl.options); + console.log('options',mwFormBuilderOptions); ctrl.addPage = function(){ ctrl.formData.pages.push(createEmptyPage(ctrl.formData.pages.length+1)); }; + + function createEmptyPage(number){ var defaultPageFlow = null; if(ctrl.possiblePageFlow){ diff --git a/src/builder/form-builder.module.js b/src/builder/form-builder.module.js index 0e3fa25..5cd9ebe 100644 --- a/src/builder/form-builder.module.js +++ b/src/builder/form-builder.module.js @@ -1,5 +1 @@ -angular.module('mwFormBuilder', ['ngSanitize', 'ui.bootstrap','ng-sortable', 'pascalprecht.translate']) - .constant('MW_QUESTION_TYPES', ['text', 'textarea', 'radio', 'checkbox', 'grid', 'priority', 'division', 'number', 'date', 'time', 'email', 'range', 'url']) - .value('mwFormBuilderOptions', {}); - - +angular.module('mwFormBuilder', ['ngSanitize', 'ui.bootstrap','ng-sortable', 'pascalprecht.translate']); diff --git a/src/builder/form-page-builder.directive.js b/src/builder/form-page-builder.directive.js index c2c1b92..b2d37e1 100644 --- a/src/builder/form-page-builder.directive.js +++ b/src/builder/form-page-builder.directive.js @@ -15,7 +15,7 @@ angular.module('mwFormBuilder').directive('mwFormPageBuilder', function () { templateUrl: 'mw-form-page-builder.html', controllerAs: 'ctrl', bindToController: true, - controller: function($timeout, mwFormUuid, mwFormClone){ + controller: function($timeout, mwFormUuid, mwFormClone, mwFormBuilderOptions){ var ctrl = this; ctrl.hoverEdit = false; ctrl.formPage.namedPage = !!ctrl.formPage.name; @@ -58,7 +58,8 @@ angular.module('mwFormBuilder').directive('mwFormPageBuilder', function () { ctrl.addElement = function(type){ if(!type){ - type='question'; + + type=mwFormBuilderOptions.elementTypes[0]; } var element = createEmptyElement(type, ctrl.formPage.elements.length + 1); ctrl.activeElement=element; @@ -98,6 +99,10 @@ angular.module('mwFormBuilder').directive('mwFormPageBuilder', function () { updateElementsOrderNo(); }; + ctrl.isElementTypeEnabled = function(elementType){ + return mwFormBuilderOptions.elementTypes.indexOf(elementType) !== -1; + }; + ctrl.addQuestion = function(){ ctrl.addElement('question'); }; diff --git a/src/builder/form-page-element-builder.directive.js b/src/builder/form-page-element-builder.directive.js index 58c55af..772d771 100644 --- a/src/builder/form-page-element-builder.directive.js +++ b/src/builder/form-page-element-builder.directive.js @@ -26,9 +26,16 @@ angular.module('mwFormBuilder').directive('mwFormPageElementBuilder', function ( element.callback(ctrl.pageElement); } }; - ctrl.filter = function(element){ - if (element.filter && typeof element.filter === "function") { - return element.filter(ctrl.pageElement); + ctrl.filter = function(button){ + if(!button.showInOpen && ctrl.isActive){ + return false; + } + if(!button.showInPreview && !ctrl.isActive){ + return false; + } + + if (button.filter && typeof button.filter === "function") { + return button.filter(ctrl.pageElement); } return true; }; diff --git a/src/builder/mw-form-page-builder.html b/src/builder/mw-form-page-builder.html index f07f68d..9d91f61 100644 --- a/src/builder/mw-form-page-builder.html +++ b/src/builder/mw-form-page-builder.html @@ -57,9 +57,9 @@ Split button!
    -
  • -
  • -
  • +
  • +
  • +
diff --git a/src/builder/mw-form-page-element-builder.html b/src/builder/mw-form-page-element-builder.html index 1fa6be1..f9885b9 100644 --- a/src/builder/mw-form-page-element-builder.html +++ b/src/builder/mw-form-page-element-builder.html @@ -2,7 +2,17 @@
-
+ + + + -
-
+ + - -
+ + +
diff --git a/src/builder/mw-form-question-builder.html b/src/builder/mw-form-question-builder.html index dbd27c2..c41e6f3 100644 --- a/src/builder/mw-form-question-builder.html +++ b/src/builder/mw-form-question-builder.html @@ -21,10 +21,10 @@
-
- +
+
- +