From 0154428c63cf6efa97ae2381b4b5bdf55f599f89 Mon Sep 17 00:00:00 2001 From: Sebastian Rachner Date: Mon, 12 Sep 2016 13:35:11 +0200 Subject: [PATCH 1/3] Add 'showCommandButtons' option. Adds a new option to hide the clear, preview and save buttons from the controls. --- README.md | 2 +- demo/assets/js/form-builder.min.js | 10 +- demo/assets/js/form-render.min.js | 8 +- demo/assets/js/form-render.min.js.map | 2 +- dist/form-builder.js | 120 ++++++++++-------- dist/form-builder.min.js | 4 +- dist/form-render.min.js | 2 +- .../formBuilder/options/showCommandButtons.md | 10 ++ src/js/form-builder.js | 112 ++++++++-------- 9 files changed, 145 insertions(+), 125 deletions(-) create mode 100644 docs/formBuilder/options/showCommandButtons.md diff --git a/README.md b/README.md index f9b9a1fc9..f35e785c8 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ jQuery(document).ready(function($) { | [notify](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/notify/) | {Object} | `{error: message => alert(message)}` | [See form-builder.js#L186](https://github.com/kevinchappell/formBuilder/blob/master/src/js/form-builder.js#L186) | | [sortableControls](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/sortableControls/) | {Bool} | `sortableControls: true` | `false` | | [stickyControls](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/stickyControls/) | {Bool} | `stickyControls: true` | `false` | - +| [showCommandButtons](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/showCommandButtons/) | {Bool} | `showCommandButtons: false` | `true` | ## [Changelog](https://github.com/kevinchappell/formBuilder/blob/master/CHANGELOG.md) ## ## Translators Needed! diff --git a/demo/assets/js/form-builder.min.js b/demo/assets/js/form-builder.min.js index 352749fea..41feba3e5 100644 --- a/demo/assets/js/form-builder.min.js +++ b/demo/assets/js/form-builder.min.js @@ -1,7 +1,3 @@ -/* -formBuilder - https://formbuilder.online/ -Version: 1.16.0 -Author: Kevin Chappell -*/ -"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n "];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null," ")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(-1===t.indexOf("ui-sortable-handle")){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
"}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
"+b.outerHTML+'
'}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(d>c||c===d&&o.top>e)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
'+l.labels.on+"
",o='
'+l.labels.off+"
",i='
',c='
'+n+i+o+"
";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
    ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
  • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON,y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return i.doCancel?!1:(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
    ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
    ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
    ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?$(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var $=function(e){var t=(new Date).getTime();return e.type+"-"+t},D=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
    ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
      ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return-1!==s.indexOf(e.type)}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return-1===t.indexOf(e.type)}(),o=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),-1===i.indexOf(e.type)&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),n&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
      "),X.push(' "),X.push('
      ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",X.push('
      "));if(X.push("
      "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
      ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
      ")}return l&&X.push(D(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
      '+n.join("")+"
      "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
      '+n+" "+W+"
      "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='', -l+='
      ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
      ",l='
      '+n+" "+l+"
      "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
      "+Y+"
      "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
      '+v+" "+m+"
      "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
      ',u+='
      ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
      ",u+="
      ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;2>=s?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")});var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault();var t=c.escapeHtml(s.formData),a=c.markup("code",t,{className:"formData-"+r.dataType}),l=c.markup("pre",a);i.dialog(l,null,"data-dialog")});var R=e(document.getElementById(n+"-clear-all"));return R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)}),i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); \ No newline at end of file +"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,o=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&o.push(!0),e.prepend&&o.push(0===a.stopIndex),e.append&&o.push(a.stopIndex+1===r),a.doCancel=o.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var o=a.values,n=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var o,n;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),o&&(e.style=o[1]),e=s.trimObj(e),e=s.escapeAttrs(e),n=e.type.match(/(select|checkbox-group|radio-group)/),n&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),o=$(".prev-holder",e),n={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);n[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(n.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n=s.trimObj(n),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),l=a.fieldPreview(n),o.html(l),$("input[toggle]",o).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var o=t.toggle?"toggle":"",n=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
      "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
      "+b.outerHTML+'
      '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:n=s.attrString(t),l="<"+t.type+" "+n+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,o=function(){t=null,s||e.apply(l,r)},n=s&&!t;clearTimeout(t),t=setTimeout(o,a),n&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],o=void 0;for(o=r.length-1;o>=0;o--)r=r.concat(e.messages.subtypes[r[o]]);l=l.concat(r);var n=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(o=d.length-1;o>=0;o--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[o].match(m);f&&d.splice(o,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),o=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var o=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(o)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var o={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},n=a.offset(),i=s.offset(),c=n.top+a.height(),d=i.top+s.height();c>d&&n.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(o)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),o=s.markup("pre",r);a.dialog(o,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
      ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var o='
      '+l.labels.on+"
      ",n='
      '+l.labels.off+"
      ",i='
      ',c='
      '+o+i+n+"
      ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showCommandButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),o="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=o,s.element=a;var n=e("
        ").attr("id",o).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=o+"-fld-1",u=o+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
      • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showCommandButtons)var y=c.markup("button",b,{id:o+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:o+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:o+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});n.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:n,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===n[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
        ",{id:o+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
        ",{id:o+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
        ",{id:o+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(n,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});n.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",n).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),n.prepend(a)}if(r.append&&!e(".disabled.append",n).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),n.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var o=r.length-1;o>=0;o--)s[r[o].name]=r[o].value}}else s=t;s.name=a?$(s):s.name,s.className=s.className||s["class"];var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);n&&(s.style=n[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",n).each(function(){i.updatePreview(e(this))}),A()};n.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),n.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),n.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var $=function(e){var t=(new Date).getTime();return e.type+"-"+t},D=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
        ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
          ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),o=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),n=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),o&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
          "),X.push(' "),X.push('
          ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,n)?"checked":"",X.push('
          "));if(X.push("
          "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
          ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
          ")}return l&&X.push(D(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',o=[r];return a.first&&o.unshift(s(a.first)),a.second&&o.push(s(a.second)),'
          '+o.join("")+"
          "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var o="";W+='",W='
          '+o+" "+W+"
          "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var o="";l+='',l+='
          ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var o=e===s?"active":"";l+='"}),l+="
          ",l='
          '+o+" "+l+"
          "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
          "+Y+"
          "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],o=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],n=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),o=o.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,o)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
          '+v+" "+m+"
          "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),o=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[o,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
          ',u+='
          ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
          ",u+="
          ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",n).eq(i.stopIndex).after(f):n.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(n),i.toggleEdit(d)),d=i.incrementId(d)},H=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],o=[];t=t||{selected:!1,label:"",value:""};for(var n=l.length-1;n>=0;n--){var i=l[n];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),o.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};o.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",o);return p.outerHTML};if(n.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),n.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),n.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),n.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),n.delegate("input.error","keyup",function(){e(this).removeClass("error")}),n.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),n.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),n.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),n.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},o=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(o)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),n[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),n.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),n.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),n.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),n.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var o=l.attr("name");e(".sortable-options",a).append(H(o,!1,r)),i.updateMultipleSelect()}),n.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showCommandButtons){var P=e(document.getElementById(o+"-view-data"));P.click(function(e){e.preventDefault();var t=c.escapeHtml(s.formData),a=c.markup("code",t,{className:"formData-"+r.dataType}),l=c.markup("pre",a);i.dialog(l,null,"data-dialog")});var R=e(document.getElementById(o+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(o+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),n.css("min-height",f.height()),r.stickyControls&&i.stickyControls(n,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); +//# sourceMappingURL=form-builder.min.js.map diff --git a/demo/assets/js/form-render.min.js b/demo/assets/js/form-render.min.js index 51eb5d99c..172783f38 100644 --- a/demo/assets/js/form-render.min.js +++ b/demo/assets/js/form-render.min.js @@ -1,6 +1,2 @@ -/* -formBuilder - https://formbuilder.online/ -Version: 1.16.0 -Author: Kevin Chappell -*/ -"use strict";function FormRenderFn(e,t){var n=fbUtils,r=this,a={destroyTemplate:!0,container:!1,dataType:"xml",formData:!1,label:{formRendered:"Form Rendered",noFormData:"No form data.",other:"Other",selectColor:"Select Color"},render:!0,notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}}},i={},o=$.extend(!0,a,e);!function(){if(!o.formData)return!1;var e={xml:function(e){return n.parseXML(e)},json:function(e){return window.JSON.parse(e)}};o.formData=e[o.dataType](o.formData)||!1}(),i.fieldRender=function(e){var t="",r="",a="",i=e.label||"",l=e.description||"",s="",c=e.values||[];e.id=e.name,e.type=e.subtype||e.type,e.required&&(e.required=null,e["aria-required"]="true",s='*'),"hidden"!==e.type&&(l&&(l='?'),r='");var f=e.label;delete e.label,delete e.description;var u=n.attrString(e);switch(e.type){case"textarea":case"rich-text":delete e.type;var d=e.value||"";t=r+"";break;case"select":var p;if(e.type=e.type.replace("-group",""),c)for(var v=0;v"+c[v].label+"";t=r+"";break;case"checkbox-group":case"radio-group":var m=void 0;if(e.type=e.type.replace("-group",""),c){for(var b="checkbox"===e.type?e.name+"[]":e.name,y=void 0,h=0;h
          ";if(e.enableOther||e["enable-other"]){var g={id:e.id+"-other",className:(e["class"]||e.className)+" other-option"};y=n.attrString(Object.assign({},e,g)),a+=" '}}t=r+'
          '+a+"
          ";break;case"text":case"password":case"email":case"number":case"file":case"hidden":case"date":case"autocomplete":t=r+" ";break;case"color":t=r+" "+o.label.selectColor;break;case"button":case"submit":t="";break;case"checkbox":t=" "+r,e.toggle&&setTimeout(function(){$(document.getElementById(e.id)).kcToggle()},100);break;default:t="<"+e.type+" "+u+">"+f+""}if("hidden"!==e.type){var k=e.id?"form-group field-"+e.id:"";t=n.markup("div",t,{className:k})}else t=n.markup("input",null,e);return t},Element.prototype.appendFormFields=function(e){var t=this;e.reverse();for(var n=e.length-1;n>=0;n--)t.appendChild(e[n])},Element.prototype.emptyContainer=function(){for(var e=this;e.lastChild;)e.removeChild(e.lastChild)};var l=function(){for(var e=document.getElementsByClassName("other-option"),t=function(){var t=document.getElementById(e[n].id+"-value");e[n].onclick=function(){var e=this;this.checked?(t.style.display="inline-block",e.nextElementSibling.style.display="none",t.oninput=function(){e.value=this.value}):(t.style.display="none",e.nextElementSibling.style.display="inline-block",t.oninput=void 0)}},n=0;n').insertAfter(t).append(t);i.toggleClass("on",t.is(":checked"));var o='
          '+a.labels.on+"
          ",l='
          '+a.labels.off+"
          ",s='
          ',c='
          '+o+s+l+"
          ";i.append(c),i.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(n){var r=this;return r.each(function(){var r=e(this);if(!r.data("kcToggle")){var a=new t(r,n);r.data("kcToggle",a)}})}}(jQuery);var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},fbUtils={};fbUtils.inArray=function(e,t){return-1!==t.indexOf(e)},fbUtils.trimObj=function(e){var t=[null,void 0,"",!1];for(var n in e)fbUtils.inArray(e[n],t)&&delete e[n];return e},fbUtils.makeId=function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},fbUtils.validAttr=function(e){var t=["values","enableOther","other","label","style","subtype"];return!fbUtils.inArray(e,t)},fbUtils.attrString=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&fbUtils.validAttr(n)&&(n=fbUtils.safeAttr(n,e[n]),t.push(n.name+n.value));return t.join(" ")},fbUtils.safeAttr=function(e,t){e=fbUtils.safeAttrName(e);var n=window.JSON.stringify(fbUtils.escapeAttr(t));return t=t?"="+n:"",{name:e,value:t}},fbUtils.safeAttrName=function(e){var t={className:"class"};return t[e]||fbUtils.hyphenCase(e)},fbUtils.hyphenCase=function(e){return e=e.replace(/[^\w\s\-]/gi,""),e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},fbUtils.camelCase=function(e){return e.replace(/-([a-z])/g,function(e,t){return e=e,t.toUpperCase()})},fbUtils.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=void 0,a=document.createElement(e),i=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){a.innerHTML=e},object:function(e){return a.appendChild(e)},array:function(e){for(var t=0;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e},function(e){e.fn.formRender=function(e){this.each(function(){var t=new FormRenderFn(e,this);return t})}}(jQuery); \ No newline at end of file +"use strict";function FormRenderFn(e,t){var n=fbUtils,r=this,a={destroyTemplate:!0,container:!1,dataType:"xml",formData:!1,label:{formRendered:"Form Rendered",noFormData:"No form data.",other:"Other",selectColor:"Select Color"},render:!0,notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}}},i={},o=$.extend(!0,a,e);!function(){if(!o.formData)return!1;var e={xml:function(e){return n.parseXML(e)},json:function(e){return window.JSON.parse(e)}};o.formData=e[o.dataType](o.formData)||!1}(),i.fieldRender=function(e){var t="",r="",a="",i=e.label||"",l=e.description||"",s="",c=e.values||[];e.id=e.name,e.type=e.subtype||e.type,e.required&&(e.required=null,e["aria-required"]="true",s='*'),"hidden"!==e.type&&(l&&(l='?'),r='");var f=e.label;delete e.label,delete e.description;var u=n.attrString(e);switch(e.type){case"textarea":case"rich-text":delete e.type;var d=e.value||"";t=r+"";break;case"select":var p;if(e.type=e.type.replace("-group",""),c)for(var v=0;v"+c[v].label+"";t=r+"";break;case"checkbox-group":case"radio-group":var m=void 0;if(e.type=e.type.replace("-group",""),c){for(var b="checkbox"===e.type?e.name+"[]":e.name,y=void 0,h=0;h
          ";if(e.enableOther||e["enable-other"]){var g={id:e.id+"-other",className:(e["class"]||e.className)+" other-option"};y=n.attrString(Object.assign({},e,g)),a+=" '}}t=r+'
          '+a+"
          ";break;case"text":case"password":case"email":case"number":case"file":case"hidden":case"date":case"autocomplete":t=r+" ";break;case"color":t=r+" "+o.label.selectColor;break;case"button":case"submit":t="";break;case"checkbox":t=" "+r,e.toggle&&setTimeout(function(){$(document.getElementById(e.id)).kcToggle()},100);break;default:t="<"+e.type+" "+u+">"+f+""}if("hidden"!==e.type){var k=e.id?"form-group field-"+e.id:"";t=n.markup("div",t,{className:k})}else t=n.markup("input",null,e);return t},Element.prototype.appendFormFields=function(e){var t=this;e.reverse();for(var n=e.length-1;n>=0;n--)t.appendChild(e[n])},Element.prototype.emptyContainer=function(){for(var e=this;e.lastChild;)e.removeChild(e.lastChild)};var l=function(){for(var e=document.getElementsByClassName("other-option"),t=function(){var t=document.getElementById(e[n].id+"-value");e[n].onclick=function(){var e=this;this.checked?(t.style.display="inline-block",e.nextElementSibling.style.display="none",t.oninput=function(){e.value=this.value}):(t.style.display="none",e.nextElementSibling.style.display="inline-block",t.oninput=void 0)}},n=0;n').insertAfter(t).append(t);i.toggleClass("on",t.is(":checked"));var o='
          '+a.labels.on+"
          ",l='
          '+a.labels.off+"
          ",s='
          ',c='
          '+o+s+l+"
          ";i.append(c),i.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(n){var r=this;return r.each(function(){var r=e(this);if(!r.data("kcToggle")){var a=new t(r,n);r.data("kcToggle",a)}})}}(jQuery);var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},fbUtils={};fbUtils.inArray=function(e,t){return t.indexOf(e)!==-1},fbUtils.trimObj=function(e){var t=[null,void 0,"",!1];for(var n in e)fbUtils.inArray(e[n],t)&&delete e[n];return e},fbUtils.makeId=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},fbUtils.validAttr=function(e){var t=["values","enableOther","other","label","style","subtype"];return!fbUtils.inArray(e,t)},fbUtils.attrString=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&fbUtils.validAttr(n)&&(n=fbUtils.safeAttr(n,e[n]),t.push(n.name+n.value));return t.join(" ")},fbUtils.safeAttr=function(e,t){e=fbUtils.safeAttrName(e);var n=window.JSON.stringify(fbUtils.escapeAttr(t));return t=t?"="+n:"",{name:e,value:t}},fbUtils.safeAttrName=function(e){var t={className:"class"};return t[e]||fbUtils.hyphenCase(e)},fbUtils.hyphenCase=function(e){return e=e.replace(/[^\w\s\-]/gi,""),e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},fbUtils.camelCase=function(e){return e.replace(/-([a-z])/g,function(e,t){return e=e,t.toUpperCase()})},fbUtils.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=void 0,a=document.createElement(e),i=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){a.innerHTML=e},object:function(e){return a.appendChild(e)},array:function(e){for(var t=0;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e},function(e){e.fn.formRender=function(e){this.each(function(){var t=new FormRenderFn(e,this);return t})}}(jQuery); +//# sourceMappingURL=form-render.min.js.map diff --git a/demo/assets/js/form-render.min.js.map b/demo/assets/js/form-render.min.js.map index 442b45f2c..ae8222352 100644 --- a/demo/assets/js/form-render.min.js.map +++ b/demo/assets/js/form-render.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["polyfills.js","form-render.js","kc-toggle.js","form-render.min.js","utils.js"],"names":["FormRenderFn","options","element","utils","fbUtils","formRender","this","defaults","destroyTemplate","container","dataType","formData","label","formRendered","noFormData","other","selectColor","render","notify","error","message","console","success","log","warning","warn","_helpers","opts","$","extend","setData","xml","parseXML","json","window","JSON","parse","fieldRender","fieldData","fieldMarkup","fieldLabel","optionsMarkup","fieldLabelText","fieldDesc","description","fieldRequired","fieldOptions","values","id","name","type","subtype","required","fieldLabelVal","fieldDataString","attrString","fieldVal","value","optionAttrsString","replace","_i","length","selected","optionAttrs","optionName","_optionAttrsString","_i2","Object","assign","checked","enableOther","otherOptionAttrs","className","toggle","setTimeout","document","getElementById","kcToggle","markup","Element","prototype","appendFormFields","fields","reverse","i","appendChild","emptyContainer","lastChild","removeChild","otherOptionCB","otherOptions","getElementsByClassName","_loop","otherInput","onclick","option","style","display","nextElementSibling","oninput","undefined","runCallbacks","rendered","push","renderedFormWrap","jQuery","map","elem","innerHTML","join","noData","remove","parentNode","Event","evt","event","createEvent","initEvent","target","TypeError","index","arguments","source","key","hasOwnProperty","call","Toggle","theme","labels","off","on","$kcToggle","insertAfter","append","toggleClass","is","kctOn","kctOff","kctHandle","kctInner","click","attr","fn","each","data","_typeof","Symbol","iterator","obj","constructor","inArray","needle","haystack","indexOf","trimObj","attrs","xmlRemove","makeId","epoch","Date","getTime","tagName","validAttr","invalid","attributes","safeAttr","safeAttrName","valString","stringify","escapeAttr","hyphenCase","str","$1","toLowerCase","camelCase","m","w","toUpperCase","tag","content","contentType","field","createElement","getContentType","Array","isArray","appendContent","string","object","array","setAttribute","parseAttrs","parseOptions","getElementsByTagName","optionData","textContent","xmlString","parser","DOMParser","parseFromString","escapeHtml","html","escapeElement","replaceTag","match","\"","&","<",">","escapeAttrs"],"mappings":"AAAA,YCGA,SAASA,cAAaC,EAASC,GAE7B,GAAIC,GAAQC,QAERC,EAAaC,KACfC,GACEC,iBAAiB,EACjBC,WAAW,EACXC,SAAU,MACVC,UAAU,EACVC,OACEC,aAAc,gBACdC,WAAY,gBACZC,MAAO,QACPC,YAAa,gBAEfC,QAAQ,EACRC,QACEC,MAAO,SAASC,GACd,MAAOC,SAAQF,MAAMC,IAEvBE,QAAS,SAASF,GAChB,MAAOC,SAAQE,IAAIH,IAErBI,QAAS,SAASJ,GAChB,MAAOC,SAAQI,KAAKL,MAI1BM,KAEEC,EAAOC,EAAEC,QAAO,EAAMtB,EAAUN,IAEpC,WACE,IAAK0B,EAAKhB,SACR,OAAO,CAGT,IAAImB,IACFC,IAAK,SAAApB,GAAA,MAAYR,GAAM6B,SAASrB,IAChCsB,KAAM,SAAAtB,GAAA,MAAYuB,QAAOC,KAAKC,MAAMzB,IAGtCgB,GAAKhB,SAAWmB,EAAQH,EAAKjB,UAAUiB,EAAKhB,YAAa,KAQ3De,EAASW,YAAc,SAASC,GAC9B,GAAIC,GAAc,GAChBC,EAAa,GACbC,EAAgB,GAChBC,EAAiBJ,EAAU1B,OAAS,GACpC+B,EAAYL,EAAUM,aAAe,GACrCC,EAAgB,GAChBC,EAAeR,EAAUS,UAC3BT,GAAUU,GAAKV,EAAUW,KAEzBX,EAAUY,KAAOZ,EAAUa,SAAWb,EAAUY,KAE5CZ,EAAUc,WACZd,EAAUc,SAAW,KACrBd,EAAU,iBAAmB,OAC7BO,EAAA,mCAGqB,WAAnBP,EAAUY,OACRP,IACFA,EAAA,0CAAsDA,EAAtD,cAEFH,EAAA,eAA4BF,EAAUU,GAAtC,KAA6CN,EAA7C,IAA+DG,EAA/D,IAAgFF,EAAhF,WAGF,IAAIU,GAAgBf,EAAU1B,YAEvB0B,GAAU1B,YACV0B,GAAUM,WAEjB,IAAIU,GAAkBnD,EAAMoD,WAAWjB,EAEvC,QAAQA,EAAUY,MAChB,IAAK,WACL,IAAK,kBACIZ,GAAUY,IACjB,IAAIM,GAAWlB,EAAUmB,OAAS,EAClClB,GAAiBC,EAAjB,aAAwCc,EAAxC,IAA2DE,EAA3D,aACA,MACF,KAAK,SACH,GAAIE,EAGJ,IAFApB,EAAUY,KAAOZ,EAAUY,KAAKS,QAAQ,SAAU,IAE9Cb,EACF,IAAK,GAAIc,GAAI,EAAGA,EAAId,EAAae,OAAQD,IAClCd,EAAac,GAAGE,gBACZhB,GAAac,GAAGE,SAEzBJ,EAAoBvD,EAAMoD,WAAWT,EAAac,IAClDnB,GAAA,WAA4BiB,EAA5B,IAAiDZ,EAAac,GAAGhD,MAAjE,WAIJ2B,GAAiBC,EAAjB,WAAsCc,EAAtC,IAAyDb,EAAzD,WACA,MACF,KAAK,iBACL,IAAK,cACH,GAAIsB,GAAA,MAGJ,IAFAzB,EAAUY,KAAOZ,EAAUY,KAAKS,QAAQ,SAAU,IAE9Cb,EAAc,CAIhB,IAAK,GAHDkB,GAAgC,aAAnB1B,EAAUY,KAAsBZ,EAAUW,KAAO,KAAOX,EAAUW,KACjFgB,EAAA,OAEOC,EAAI,EAAGA,EAAIpB,EAAae,OAAQK,IACvCH,EAAcI,OAAOC,UAAW9B,EAAWQ,EAAaoB,IAEpDH,EAAYD,iBACPC,GAAYD,SACnBC,EAAYM,QAAU,MAGxBN,EAAYd,KAAOe,EACnBD,EAAYf,GAAKV,EAAUU,GAAK,IAAMkB,EACtCD,EAAoB9D,EAAMoD,WAAWQ,GACrCtB,GAAA,UAA2BwB,EAA3B,mBAA+DF,EAAYf,GAA3E,KAAkFe,EAAYnD,MAA9F,cAGF,IAAI0B,EAAUgC,aAAehC,EAAU,gBAAiB,CACtD,GAAIiC,IACFvB,GAAIV,EAAUU,GAAK,SACnBwB,WAAYlC,EAAAA,UAAmBA,EAAUkC,WAAa,gBAGxDP,GAAoB9D,EAAMoD,WAAWY,OAAOC,UAAW9B,EAAWiC,IAElE9B,GAAA,UAA2BwB,EAA3B,mBAA+DM,EAAiBvB,GAAhF,KAAuFrB,EAAKf,MAAMG,MAAlG,8CAAqJwD,EAAiBvB,GAAtK,WAAmLgB,EAAnL,SAAsMO,EAAiBvB,GAAvN,oCAIJT,EAAiBC,EAAjB,eAA0CF,EAAUY,KAApD,WAAmET,EAAnE,QACA,MACF,KAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,eACHF,EAAiBC,EAAjB,WAAsCc,EAAtC,GACA,MACF,KAAK,QACHf,EAAiBC,EAAjB,WAAsCc,EAAtC,KAA0D3B,EAAKf,MAAMI,WACrE,MACF,KAAK,SACL,IAAK,SACHuB,EAAA,WAAyBe,EAAzB,IAA4CD,EAA5C,WACA,MACF,KAAK,WACHd,EAAA,UAAwBe,EAAxB,KAA4Cd,EAExCF,EAAUmC,QACZC,WAAW,WACT9C,EAAE+C,SAASC,eAAetC,EAAUU,KAAK6B,YACxC,IAEL,MACF,SACEtC,EAAA,IAAkBD,EAAUY,KAA5B,IAAoCI,EAApC,IAAuDD,EAAvD,KAAyEf,EAAUY,KAAnF,IAGJ,GAAuB,WAAnBZ,EAAUY,KAAmB,CAC/B,GAAIsB,GAAYlC,EAAUU,GAAK,oBAAsBV,EAAUU,GAAK,EACpET,GAAcpC,EAAM2E,OAAO,MAAOvC,GAChCiC,UAAWA,QAGbjC,GAAcpC,EAAM2E,OAAO,QAAS,KAAMxC,EAG5C,OAAOC,IAQTwC,QAAQC,UAAUC,iBAAmB,SAASC,GAC5C,GAAIhF,GAAUI,IACd4E,GAAOC,SACP,KAAK,GAAIC,GAAIF,EAAOrB,OAAS,EAAGuB,GAAK,EAAGA,IACtClF,EAAQmF,YAAYH,EAAOE,KAO/BL,QAAQC,UAAUM,eAAiB,WAEjC,IADA,GAAIpF,GAAUI,KACPJ,EAAQqF,WACbrF,EAAQsF,YAAYtF,EAAQqF,WAIhC,IAAIE,GAAgB,WAElB,IAAK,GADDC,GAAef,SAASgB,uBAAuB,gBADtBC,EAAA,WAG3B,GAAIC,GAAalB,SAASC,eAAec,EAAaN,GAAGpC,GAAK,SAC9D0C,GAAaN,GAAGU,QAAU,WACxB,GAAIC,GAASzF,IACTA,MAAK+D,SACPwB,EAAWG,MAAMC,QAAU,eAC3BF,EAAOG,mBAAmBF,MAAMC,QAAU,OAC1CJ,EAAWM,QAAU,WAAaJ,EAAOtC,MAAQnD,KAAKmD,SAEtDoC,EAAWG,MAAMC,QAAU,OAC3BF,EAAOG,mBAAmBF,MAAMC,QAAU,eAC1CJ,EAAWM,QAAUC,UAXlBhB,EAAI,EAAGA,EAAIM,EAAa7B,OAAQuB,IAAKQ,KAiB5CS,EAAe,WACjBZ,KAIEa,IAGJ,IAAI3E,EAAKhB,SAAU,CACjB,IAAK,GAAIyE,GAAI,EAAGA,EAAIzD,EAAKhB,SAASkD,OAAQuB,IACxCkB,EAASC,KAAK7E,EAASW,YAAYV,EAAKhB,SAASyE,IAGnD,IAAIzD,EAAKV,OAAQ,CACf,GAAIU,EAAKlB,UAAW,CAClB,GAAI+F,GAAmBrG,EAAM2E,OAAO,MAAOwB,GAAY9B,UAAW,iBAClE7C,GAAKlB,UAAakB,EAAKlB,oBAAqBgG,QAAU9E,EAAKlB,UAAU,GAAKkB,EAAKlB,UAC/EkB,EAAKlB,UAAU6E,iBACf3D,EAAKlB,UAAU4E,YAAYmB,OAClBtG,KACTA,EAAQoF,iBACRpF,EAAQ+E,iBAAiBqB,GAG3BD,KACA1E,EAAKT,OAAOI,QAAQK,EAAKf,MAAMC,kBAE/BR,GAAWyE,OAASwB,EAASI,IAAI,SAASC,GACxC,MAAOA,GAAKC,YACXC,KAAK,QAEL,CACL,GAAIC,GAAS3G,EAAM2E,OAAO,MAAOnD,EAAKf,MAAME,YAC1C0D,UAAW,gBAEb8B,GAASC,KAAKO,GACdnF,EAAKT,OAAOC,MAAMQ,EAAKf,MAAME,YAG/B,MAAOT,GD1QH,UAAY0E,SAAQC,YACxBD,QAAQC,UAAU+B,OAAS,WACrBzG,KAAK0G,YACP1G,KAAK0G,WAAWxB,YAAYlF,QAMb,kBAAV2G,SACT,WACE/E,OAAO+E,MAAQ,SAASC,GACtB,GAAIC,GAAQxC,SAASyC,YAAY,QAEjC,OADAD,GAAME,UAAUH,GAAK,GAAM,GACpBC,MAMe,kBAAjBhD,QAAOC,SAChBD,OAAOC,OAAS,SAASkD,GAEvB,GAAc,MAAVA,EACF,KAAM,IAAIC,WAAU,6CAGtBD,GAASnD,OAAOmD,EAChB,KAAK,GAAIE,GAAQ,EAAGA,EAAQC,UAAU5D,OAAQ2D,IAAS,CACrD,GAAIE,GAASD,UAAUD,EACvB,IAAc,MAAVE,EACF,IAAK,GAAIC,KAAOD,GACVvD,OAAOa,UAAU4C,eAAeC,KAAKH,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK7B,MAAOL,KEzCX,SAAU1F,GAGR,GAAIkG,GAAS,SAAS5H,EAASD,GAE7B,GAAIM,IACFwH,MAAO,QACPC,QACEC,IAAK,MACLC,GAAI,OAIJvG,EAAOC,EAAEC,OAAOtB,EAAUN,GAC5BkI,EAAYvG,EAAE,4BAA4BwG,YAAYlI,GAASmI,OAAOnI,EAExEiI,GAAUG,YAAY,KAAMpI,EAAQqI,GAAG,YAEvC,IAAIC,GAAA,uBAA+B7G,EAAKqG,OAAOE,GAA3C,SACAO,EAAA,wBAAiC9G,EAAKqG,OAAOC,IAA7C,SACAS,EAAA,iCACAC,EAAA,0BAAqCH,EAAQE,EAAYD,EAAzD,QAEJN,GAAUE,OAAOM,GAEjBR,EAAUS,MAAM,WACd1I,EAAQ2I,KAAK,WAAY3I,EAAQ2I,KAAK,YACtCjH,EAAEtB,MAAMgI,YAAY,QAKxB1G,GAAEkH,GAAGjE,SAAW,SAAS5E,GACvB,GAAIwE,GAASnE,IACb,OAAOmE,GAAOsE,KAAK,WACjB,GAAI7I,GAAU0B,EAAEtB,KAChB,KAAIJ,EAAQ8I,KAAK,YAAjB,CAGA,GAAInE,GAAW,GAAIiD,GAAO5H,EAASD,EACnCC,GAAQ8I,KAAK,WAAYnE,QAI5B4B,OCiDH,IAAIwC,SAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IC3FpOhJ,UAGNA,SAAQkJ,QAAU,SAASC,EAAQC,GACjC,MAAoC,KAA7BA,EAASC,QAAQF,IAI1BnJ,QAAQsJ,QAAU,SAASC,GACzB,GAAIC,IACF,KACAxD,OACA,IACA,EAEF,KAAK,GAAIhB,KAAKuE,GACRvJ,QAAQkJ,QAAQK,EAAMvE,GAAIwE,UACrBD,GAAMvE,EAGjB,OAAOuE,IAUTvJ,QAAQyJ,OAAS,WAA0B,GAAjB3J,GAAiBuH,UAAA5D,QAAA,GAAAuC,SAAAqB,UAAA,IAAP,EAAOA,UAAA,GACrCqC,GAAQ,GAAIC,OAAOC,SAEvB,OAAU9J,GAAQ+J,QAAlB,IAA6BH,GAG/B1J,QAAQ8J,UAAY,SAASrB,GAC3B,GAAIsB,IACF,SACA,cACA,QACA,QACA,QACA,UAEF,QAAQ/J,QAAQkJ,QAAQT,EAAMsB,IAShC/J,QAAQmD,WAAa,SAASoG,GAC5B,GAAIS,KAEJ,KAAK,GAAIvB,KAAQc,GACXA,EAAM/B,eAAeiB,IAASzI,QAAQ8J,UAAUrB,KAClDA,EAAOzI,QAAQiK,SAASxB,EAAMc,EAAMd,IACpCuB,EAAW7D,KAAKsC,EAAK5F,KAAO4F,EAAKpF,OAGrC,OAAO2G,GAAWvD,KAAK,MAGzBzG,QAAQiK,SAAW,SAASpH,EAAMQ,GAChCR,EAAO7C,QAAQkK,aAAarH,EAE5B,IAAIsH,GAAYrI,OAAOC,KAAKqI,UAAUpK,QAAQqK,WAAWhH,GAGzD,OADAA,GAAQA,EAAA,IAAY8G,EAAc,IAEhCtH,KAAAA,EACAQ,MAAAA,IAIJrD,QAAQkK,aAAe,SAASrH,GAC9B,GAAIoH,IACF7F,UAAW,QAGb,OAAO6F,GAASpH,IAAS7C,QAAQsK,WAAWzH,IAU9C7C,QAAQsK,WAAa,SAACC,GAMpB,MALAA,GAAMA,EAAIhH,QAAQ,cAAe,IACjCgH,EAAMA,EAAIhH,QAAQ,WAAY,SAASiH,GACrC,MAAO,IAAMA,EAAGC,gBAGXF,EAAIhH,QAAQ,MAAO,KAAKA,QAAQ,OAAQ,KAQjDvD,QAAQ0K,UAAY,SAACH,GACnB,MAAOA,GAAIhH,QAAQ,YAAa,SAASoH,EAAGC,GAE1C,MADAD,GAAIA,EACGC,EAAEC,iBAYb7K,QAAQ0E,OAAS,SAASoG,GAA+B,GAA1BC,GAA0B1D,UAAA5D,QAAA,GAAAuC,SAAAqB,UAAA,GAAhB,GAAgBA,UAAA,GAAZkC,EAAYlC,UAAA5D,QAAA,GAAAuC,SAAAqB,UAAA,MAAAA,UAAA,GACnD2D,EAAA,OACFC,EAAQ1G,SAAS2G,cAAcJ,GAC/BK,EAAiB,SAASJ,GACxB,MAAOK,OAAMC,QAAQN,GAAW,QAAzB,mBAA0CA,GAA1C,YAAAlC,QAA0CkC,IAEnDO,GACEC,OAAQ,SAASR,GACfE,EAAMzE,UAAYuE,GAEpBS,OAAQ,SAAST,GACf,MAAOE,GAAMhG,YAAY8F,IAE3BU,MAAO,SAASV,GACd,IAAK,GAAI/F,GAAI,EAAGA,EAAI+F,EAAQtH,OAAQuB,IAClCgG,EAAcG,EAAeJ,EAAQ/F,IACrCsG,EAAcN,GAAaD,EAAQ/F,KAK3C,KAAK,GAAIyD,KAAQc,GACf,GAAIA,EAAM/B,eAAeiB,GAAO,CAC9B,GAAI5F,GAAO7C,QAAQkK,aAAazB,EAChCwC,GAAMS,aAAa7I,EAAM0G,EAAMd,IAUnC,MANAuC,GAAcG,EAAeJ,GAEzBA,GACFO,EAAcN,GAAavD,KAAKvH,KAAM6K,GAGjCE,GAGTjL,QAAQ2L,WAAa,SAASpF,GAC5B,GAAIgD,GAAQhD,EAAKyD,WACbpB,IAEJ,KAAK,GAAIH,KAAQc,GACXA,EAAM/B,eAAeiB,KACvBG,EAAKW,EAAMd,GAAM5F,MAAQ0G,EAAMd,GAAMpF,MAIzC,OAAOuF,IAGT5I,QAAQ4L,aAAe,SAASX,GAC9B,GAAIpL,GAAUoL,EAAMY,qBAAqB,UACvCC,KACAlD,IAEF,IAAI/I,EAAQ4D,OACV,IAAK,GAAIuB,GAAI,EAAGA,EAAInF,EAAQ4D,OAAQuB,IAClC8G,EAAa9L,QAAQ2L,WAAW9L,EAAQmF,IACxC8G,EAAWtL,MAAQX,EAAQmF,GAAG+G,YAC9BnD,EAAKzC,KAAK2F,EAId,OAAOlD,IAGT5I,QAAQ4B,SAAW,SAASoK,GAC1B,GAAMC,GAAS,GAAInK,QAAOoK,UACtBvK,EAAMsK,EAAOE,gBAAgBH,EAAW,YAC1CzL,IAEF,IAAIoB,EAEF,IAAK,GADDmD,GAASnD,EAAIkK,qBAAqB,SAC7B7G,EAAI,EAAGA,EAAIF,EAAOrB,OAAQuB,IAAK,CACtC,GAAI9C,GAAYlC,QAAQ2L,WAAW7G,EAAOE,GAC1C9C,GAAUS,OAAS3C,QAAQ4L,aAAa9G,EAAOE,IAC/CzE,EAAS4F,KAAKjE,GAIlB,MAAO3B,IAGTP,QAAQoM,WAAa,SAASC,GAC5B,GAAIC,GAAgB/H,SAAS2G,cAAc,WAE3C,OADAoB,GAAcP,YAAcM,EACrBC,EAAc9F,WAKvBxG,QAAQqK,WAAa,SAASE,GAQ5B,QAASgC,GAAWzB,GAClB,MAAO0B,GAAM1B,IAAQA,EARvB,GAAI0B,IACFC,IAAK,SACLC,IAAK,QACLC,IAAK,OACLC,IAAK,OAOP,OAAuB,gBAARrC,GAAoBA,EAAIhH,QAAQ,UAAWgJ,GAAchC,GAI1EvK,QAAQ6M,YAAc,SAAStD,GAE7B,IAAK,GAAId,KAAQc,GACXA,EAAM/B,eAAeiB,KACvBc,EAAMd,GAAQzI,QAAQqK,WAAWd,EAAMd,IAI3C,OAAOc,IHiCT,SAAU/H,GAERA,EAAEkH,GAAGzI,WAAa,SAASJ,GACzBK,KAAKyI,KAAK,WACR,GAAI1I,GAAa,GAAIL,cAAaC,EAASK,KAC3C,OAAOD,OAIVoG","file":"form-render.min.js","sourcesContent":["'use strict';\n\n// Element.remove() polyfill\nif (!('remove' in Element.prototype)) {\n Element.prototype.remove = function() {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\n// Event polyfill\nif (typeof Event !== 'function') {\n (function() {\n window.Event = function(evt) {\n var event = document.createEvent('Event');\n event.initEvent(evt, true, true);\n return event;\n };\n })();\n}\n\n// Object.assign polyfill\nif (typeof Object.assign != 'function') {\n Object.assign = function(target) {\n 'use strict';\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n target = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source != null) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n}\n","'use strict';\n\n// render the formBuilder XML into html\nfunction FormRenderFn(options, element) {\n\n var utils = fbUtils;\n\n var formRender = this,\n defaults = {\n destroyTemplate: true, // @todo\n container: false,\n dataType: 'xml',\n formData: false,\n label: {\n formRendered: 'Form Rendered',\n noFormData: 'No form data.',\n other: 'Other',\n selectColor: 'Select Color'\n },\n render: true,\n notify: {\n error: function(message) {\n return console.error(message);\n },\n success: function(message) {\n return console.log(message);\n },\n warning: function(message) {\n return console.warn(message);\n }\n }\n },\n _helpers = {};\n\n var opts = $.extend(true, defaults, options);\n\n (function() {\n if (!opts.formData) {\n return false;\n }\n\n let setData = {\n xml: formData => utils.parseXML(formData),\n json: formData => window.JSON.parse(formData)\n };\n\n opts.formData = setData[opts.dataType](opts.formData) || false;\n })();\n\n /**\n * Generate preview markup\n * @param {object} fieldData\n * @return {string} preview markup for field\n */\n _helpers.fieldRender = function(fieldData) {\n var fieldMarkup = '',\n fieldLabel = '',\n optionsMarkup = '',\n fieldLabelText = fieldData.label || '',\n fieldDesc = fieldData.description || '',\n fieldRequired = '',\n fieldOptions = fieldData.values || [];\n fieldData.id = fieldData.name;\n\n fieldData.type = fieldData.subtype || fieldData.type;\n\n if (fieldData.required) {\n fieldData.required = null;\n fieldData['aria-required'] = 'true';\n fieldRequired = `*`;\n }\n\n if (fieldData.type !== 'hidden') {\n if (fieldDesc) {\n fieldDesc = `?`;\n }\n fieldLabel = ``;\n }\n\n var fieldLabelVal = fieldData.label;\n\n delete fieldData.label;\n delete fieldData.description;\n\n var fieldDataString = utils.attrString(fieldData);\n\n switch (fieldData.type) {\n case 'textarea':\n case 'rich-text':\n delete fieldData.type;\n let fieldVal = fieldData.value || '';\n fieldMarkup = `${fieldLabel}`;\n break;\n case 'select':\n var optionAttrsString;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n for (let i = 0; i < fieldOptions.length; i++) {\n if (!fieldOptions[i].selected) {\n delete fieldOptions[i].selected;\n }\n optionAttrsString = utils.attrString(fieldOptions[i]);\n optionsMarkup += ``;\n }\n }\n\n fieldMarkup = `${fieldLabel}`;\n break;\n case 'checkbox-group':\n case 'radio-group':\n let optionAttrs;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n let optionName = fieldData.type === 'checkbox' ? fieldData.name + '[]' : fieldData.name,\n optionAttrsString;\n\n for (let i = 0; i < fieldOptions.length; i++) {\n optionAttrs = Object.assign({}, fieldData, fieldOptions[i]);\n\n if (optionAttrs.selected) {\n delete optionAttrs.selected;\n optionAttrs.checked = null;\n }\n\n optionAttrs.name = optionName;\n optionAttrs.id = fieldData.id + '-' + i;\n optionAttrsString = utils.attrString(optionAttrs);\n optionsMarkup += `
          `;\n }\n\n if (fieldData.enableOther || fieldData['enable-other']) {\n let otherOptionAttrs = {\n id: fieldData.id + '-' + 'other',\n className: (fieldData.class || fieldData.className) + ' other-option'\n };\n\n optionAttrsString = utils.attrString(Object.assign({}, fieldData, otherOptionAttrs));\n\n optionsMarkup += ` `;\n }\n\n }\n fieldMarkup = `${fieldLabel}
          ${optionsMarkup}
          `;\n break;\n case 'text':\n case 'password':\n case 'email':\n case 'number':\n case 'file':\n case 'hidden':\n case 'date':\n case 'autocomplete':\n fieldMarkup = `${fieldLabel} `;\n break;\n case 'color':\n fieldMarkup = `${fieldLabel} ${opts.label.selectColor}`;\n break;\n case 'button':\n case 'submit':\n fieldMarkup = ``;\n break;\n case 'checkbox':\n fieldMarkup = ` ${fieldLabel}`;\n\n if (fieldData.toggle) {\n setTimeout(function() {\n $(document.getElementById(fieldData.id)).kcToggle();\n }, 100);\n }\n break;\n default:\n fieldMarkup = `<${fieldData.type} ${fieldDataString}>${fieldLabelVal}`;\n }\n\n if (fieldData.type !== 'hidden') {\n let className = fieldData.id ? 'form-group field-' + fieldData.id : '';\n fieldMarkup = utils.markup('div', fieldMarkup, {\n className: className\n });\n } else {\n fieldMarkup = utils.markup('input', null, fieldData);\n }\n\n return fieldMarkup;\n };\n\n /**\n * Extend Element prototype to allow us to append fields\n *\n * @param {object} fields Node elements\n */\n Element.prototype.appendFormFields = function(fields) {\n var element = this;\n fields.reverse();\n for (var i = fields.length - 1; i >= 0; i--) {\n element.appendChild(fields[i]);\n }\n };\n\n /**\n * Extend Element prototype to remove content\n */\n Element.prototype.emptyContainer = function() {\n var element = this;\n while (element.lastChild) {\n element.removeChild(element.lastChild);\n }\n };\n\n var otherOptionCB = function() {\n var otherOptions = document.getElementsByClassName('other-option');\n for (var i = 0; i < otherOptions.length; i++) {\n let otherInput = document.getElementById(otherOptions[i].id + '-value');\n otherOptions[i].onclick = function() {\n let option = this;\n if (this.checked) {\n otherInput.style.display = 'inline-block';\n option.nextElementSibling.style.display = 'none';\n otherInput.oninput = function() { option.value = this.value; };\n } else {\n otherInput.style.display = 'none';\n option.nextElementSibling.style.display = 'inline-block';\n otherInput.oninput = undefined;\n }\n };\n }\n };\n\n var runCallbacks = function() {\n otherOptionCB();\n };\n\n // Begin the core plugin\n var rendered = [];\n\n // generate field markup if we have fields\n if (opts.formData) {\n for (var i = 0; i < opts.formData.length; i++) {\n rendered.push(_helpers.fieldRender(opts.formData[i]));\n }\n\n if (opts.render) {\n if (opts.container) {\n let renderedFormWrap = utils.markup('div', rendered, { className: 'rendered-form' });\n opts.container = (opts.container instanceof jQuery) ? opts.container[0] : opts.container;\n opts.container.emptyContainer();\n opts.container.appendChild(renderedFormWrap);\n } else if (element) {\n element.emptyContainer();\n element.appendFormFields(rendered);\n }\n\n runCallbacks();\n opts.notify.success(opts.label.formRendered);\n } else {\n formRender.markup = rendered.map(function(elem) {\n return elem.innerHTML;\n }).join('');\n }\n } else {\n let noData = utils.markup('div', opts.label.noFormData, {\n className: 'no-form-data'\n });\n rendered.push(noData);\n opts.notify.error(opts.label.noFormData);\n }\n\n return formRender;\n}\n\n(function($) {\n\n $.fn.formRender = function(options) {\n this.each(function() {\n let formRender = new FormRenderFn(options, this);\n return formRender;\n });\n };\n\n})(jQuery);\n","(function($) {\n 'use strict';\n\n var Toggle = function(element, options) {\n\n var defaults = {\n theme: 'fresh',\n labels: {\n off: 'Off',\n on: 'On'\n }\n };\n\n var opts = $.extend(defaults, options),\n $kcToggle = $('
          ').insertAfter(element).append(element);\n\n $kcToggle.toggleClass('on', element.is(':checked'));\n\n var kctOn = `
          ${opts.labels.on}
          `,\n kctOff = `
          ${opts.labels.off}
          `,\n kctHandle = `
          `,\n kctInner = `
          ${kctOn}${kctHandle}${kctOff}
          `;\n\n $kcToggle.append(kctInner);\n\n $kcToggle.click(function() {\n element.attr('checked', !element.attr('checked'));\n $(this).toggleClass('on');\n });\n\n };\n\n $.fn.kcToggle = function(options) {\n var toggle = this;\n return toggle.each(function() {\n var element = $(this);\n if (element.data('kcToggle')) {\n return;\n }\n var kcToggle = new Toggle(element, options);\n element.data('kcToggle', kcToggle);\n });\n };\n\n})(jQuery);\n","'use strict';\n\n// Element.remove() polyfill\n\nif (!('remove' in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\n// Event polyfill\nif (typeof Event !== 'function') {\n (function () {\n window.Event = function (evt) {\n var event = document.createEvent('Event');\n event.initEvent(evt, true, true);\n return event;\n };\n })();\n}\n\n// Object.assign polyfill\nif (typeof Object.assign != 'function') {\n Object.assign = function (target) {\n 'use strict';\n\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n target = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source != null) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n}\n'use strict';\n\n(function ($) {\n 'use strict';\n\n var Toggle = function Toggle(element, options) {\n\n var defaults = {\n theme: 'fresh',\n labels: {\n off: 'Off',\n on: 'On'\n }\n };\n\n var opts = $.extend(defaults, options),\n $kcToggle = $('
          ').insertAfter(element).append(element);\n\n $kcToggle.toggleClass('on', element.is(':checked'));\n\n var kctOn = '
          ' + opts.labels.on + '
          ',\n kctOff = '
          ' + opts.labels.off + '
          ',\n kctHandle = '
          ',\n kctInner = '
          ' + kctOn + kctHandle + kctOff + '
          ';\n\n $kcToggle.append(kctInner);\n\n $kcToggle.click(function () {\n element.attr('checked', !element.attr('checked'));\n $(this).toggleClass('on');\n });\n };\n\n $.fn.kcToggle = function (options) {\n var toggle = this;\n return toggle.each(function () {\n var element = $(this);\n if (element.data('kcToggle')) {\n return;\n }\n var kcToggle = new Toggle(element, options);\n element.data('kcToggle', kcToggle);\n });\n };\n})(jQuery);\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar fbUtils = {};\n\n// cleaner syntax for testing indexOf element\nfbUtils.inArray = function (needle, haystack) {\n return haystack.indexOf(needle) !== -1;\n};\n\n// Remove null or undefined values\nfbUtils.trimObj = function (attrs) {\n var xmlRemove = [null, undefined, '', false];\n for (var i in attrs) {\n if (fbUtils.inArray(attrs[i], xmlRemove)) {\n delete attrs[i];\n }\n }\n return attrs;\n};\n\n/**\n * Make an ID for this element using current date and tag\n *\n * @param {Boolean} element\n * @return {String} new id for element\n */\nfbUtils.makeId = function () {\n var element = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n var epoch = new Date().getTime();\n\n return element.tagName + '-' + epoch;\n};\n\nfbUtils.validAttr = function (attr) {\n var invalid = ['values', 'enableOther', 'other', 'label', 'style', 'subtype'];\n return !fbUtils.inArray(attr, invalid);\n};\n\n/**\n * Convert an attrs object into a string\n *\n * @param {Object} attrs object of attributes for markup\n * @return {string}\n */\nfbUtils.attrString = function (attrs) {\n var attributes = [];\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr) && fbUtils.validAttr(attr)) {\n attr = fbUtils.safeAttr(attr, attrs[attr]);\n attributes.push(attr.name + attr.value);\n }\n }\n return attributes.join(' ');\n};\n\nfbUtils.safeAttr = function (name, value) {\n name = fbUtils.safeAttrName(name);\n\n var valString = window.JSON.stringify(fbUtils.escapeAttr(value));\n\n value = value ? '=' + valString : '';\n return {\n name: name,\n value: value\n };\n};\n\nfbUtils.safeAttrName = function (name) {\n var safeAttr = {\n className: 'class'\n };\n\n return safeAttr[name] || fbUtils.hyphenCase(name);\n};\n\n/**\n * Convert strings\n into lowercase-hyphen\n *\n * @param {string} str\n * @return {string}\n */\nfbUtils.hyphenCase = function (str) {\n str = str.replace(/[^\\w\\s\\-]/gi, '');\n str = str.replace(/([A-Z])/g, function ($1) {\n return '-' + $1.toLowerCase();\n });\n\n return str.replace(/\\s/g, '-').replace(/^-+/g, '');\n};\n\n/**\n * convert a hyphenated string to camelCase\n * @param {String} str\n * @return {String}\n */\nfbUtils.camelCase = function (str) {\n return str.replace(/-([a-z])/g, function (m, w) {\n m = m;\n return w.toUpperCase();\n });\n};\n\n/**\n * Generate markup wrapper where needed\n *\n * @param {string} tag\n * @param {String|Array|Object} content we wrap this\n * @param {object} attrs\n * @return {String}\n */\nfbUtils.markup = function (tag) {\n var content = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];\n var attrs = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n var contentType = void 0,\n field = document.createElement(tag),\n getContentType = function getContentType(content) {\n return Array.isArray(content) ? 'array' : typeof content === 'undefined' ? 'undefined' : _typeof(content);\n },\n appendContent = {\n string: function string(content) {\n field.innerHTML = content;\n },\n object: function object(content) {\n return field.appendChild(content);\n },\n array: function array(content) {\n for (var i = 0; i < content.length; i++) {\n contentType = getContentType(content[i]);\n appendContent[contentType](content[i]);\n }\n }\n };\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n var name = fbUtils.safeAttrName(attr);\n field.setAttribute(name, attrs[attr]);\n }\n }\n\n contentType = getContentType(content);\n\n if (content) {\n appendContent[contentType].call(this, content);\n }\n\n return field;\n};\n\nfbUtils.parseAttrs = function (elem) {\n var attrs = elem.attributes;\n var data = {};\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n data[attrs[attr].name] = attrs[attr].value;\n }\n }\n\n return data;\n};\n\nfbUtils.parseOptions = function (field) {\n var options = field.getElementsByTagName('option'),\n optionData = {},\n data = [];\n\n if (options.length) {\n for (var i = 0; i < options.length; i++) {\n optionData = fbUtils.parseAttrs(options[i]);\n optionData.label = options[i].textContent;\n data.push(optionData);\n }\n }\n\n return data;\n};\n\nfbUtils.parseXML = function (xmlString) {\n var parser = new window.DOMParser();\n var xml = parser.parseFromString(xmlString, 'text/xml'),\n formData = [];\n\n if (xml) {\n var fields = xml.getElementsByTagName('field');\n for (var i = 0; i < fields.length; i++) {\n var fieldData = fbUtils.parseAttrs(fields[i]);\n fieldData.values = fbUtils.parseOptions(fields[i]);\n formData.push(fieldData);\n }\n }\n\n return formData;\n};\n\nfbUtils.escapeHtml = function (html) {\n var escapeElement = document.createElement('textarea');\n escapeElement.textContent = html;\n return escapeElement.innerHTML;\n};\n\nfbUtils.escapeAttr = function (str) {\n var match = {\n '\"': '"',\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n function replaceTag(tag) {\n return match[tag] || tag;\n }\n\n return typeof str === 'string' ? str.replace(/[\"&<>]/g, replaceTag) : str;\n};\n\n// Remove null or undefined values\nfbUtils.escapeAttrs = function (attrs) {\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n attrs[attr] = fbUtils.escapeAttr(attrs[attr]);\n }\n }\n\n return attrs;\n};\n'use strict';\n\n// render the formBuilder XML into html\n\nfunction FormRenderFn(options, element) {\n\n var utils = fbUtils;\n\n var formRender = this,\n defaults = {\n destroyTemplate: true, // @todo\n container: false,\n dataType: 'xml',\n formData: false,\n label: {\n formRendered: 'Form Rendered',\n noFormData: 'No form data.',\n other: 'Other',\n selectColor: 'Select Color'\n },\n render: true,\n notify: {\n error: function error(message) {\n return console.error(message);\n },\n success: function success(message) {\n return console.log(message);\n },\n warning: function warning(message) {\n return console.warn(message);\n }\n }\n },\n _helpers = {};\n\n var opts = $.extend(true, defaults, options);\n\n (function () {\n if (!opts.formData) {\n return false;\n }\n\n var setData = {\n xml: function xml(formData) {\n return utils.parseXML(formData);\n },\n json: function json(formData) {\n return window.JSON.parse(formData);\n }\n };\n\n opts.formData = setData[opts.dataType](opts.formData) || false;\n })();\n\n /**\n * Generate preview markup\n * @param {object} fieldData\n * @return {string} preview markup for field\n */\n _helpers.fieldRender = function (fieldData) {\n var fieldMarkup = '',\n fieldLabel = '',\n optionsMarkup = '',\n fieldLabelText = fieldData.label || '',\n fieldDesc = fieldData.description || '',\n fieldRequired = '',\n fieldOptions = fieldData.values || [];\n fieldData.id = fieldData.name;\n\n fieldData.type = fieldData.subtype || fieldData.type;\n\n if (fieldData.required) {\n fieldData.required = null;\n fieldData['aria-required'] = 'true';\n fieldRequired = '*';\n }\n\n if (fieldData.type !== 'hidden') {\n if (fieldDesc) {\n fieldDesc = '?';\n }\n fieldLabel = '';\n }\n\n var fieldLabelVal = fieldData.label;\n\n delete fieldData.label;\n delete fieldData.description;\n\n var fieldDataString = utils.attrString(fieldData);\n\n switch (fieldData.type) {\n case 'textarea':\n case 'rich-text':\n delete fieldData.type;\n var fieldVal = fieldData.value || '';\n fieldMarkup = fieldLabel + '';\n break;\n case 'select':\n var optionAttrsString;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n for (var _i = 0; _i < fieldOptions.length; _i++) {\n if (!fieldOptions[_i].selected) {\n delete fieldOptions[_i].selected;\n }\n optionAttrsString = utils.attrString(fieldOptions[_i]);\n optionsMarkup += '';\n }\n }\n\n fieldMarkup = fieldLabel + '';\n break;\n case 'checkbox-group':\n case 'radio-group':\n var optionAttrs = void 0;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n var optionName = fieldData.type === 'checkbox' ? fieldData.name + '[]' : fieldData.name,\n _optionAttrsString = void 0;\n\n for (var _i2 = 0; _i2 < fieldOptions.length; _i2++) {\n optionAttrs = Object.assign({}, fieldData, fieldOptions[_i2]);\n\n if (optionAttrs.selected) {\n delete optionAttrs.selected;\n optionAttrs.checked = null;\n }\n\n optionAttrs.name = optionName;\n optionAttrs.id = fieldData.id + '-' + _i2;\n _optionAttrsString = utils.attrString(optionAttrs);\n optionsMarkup += '
          ';\n }\n\n if (fieldData.enableOther || fieldData['enable-other']) {\n var otherOptionAttrs = {\n id: fieldData.id + '-' + 'other',\n className: (fieldData.class || fieldData.className) + ' other-option'\n };\n\n _optionAttrsString = utils.attrString(Object.assign({}, fieldData, otherOptionAttrs));\n\n optionsMarkup += ' ';\n }\n }\n fieldMarkup = fieldLabel + '
          ' + optionsMarkup + '
          ';\n break;\n case 'text':\n case 'password':\n case 'email':\n case 'number':\n case 'file':\n case 'hidden':\n case 'date':\n case 'autocomplete':\n fieldMarkup = fieldLabel + ' ';\n break;\n case 'color':\n fieldMarkup = fieldLabel + ' ' + opts.label.selectColor;\n break;\n case 'button':\n case 'submit':\n fieldMarkup = '';\n break;\n case 'checkbox':\n fieldMarkup = ' ' + fieldLabel;\n\n if (fieldData.toggle) {\n setTimeout(function () {\n $(document.getElementById(fieldData.id)).kcToggle();\n }, 100);\n }\n break;\n default:\n fieldMarkup = '<' + fieldData.type + ' ' + fieldDataString + '>' + fieldLabelVal + '';\n }\n\n if (fieldData.type !== 'hidden') {\n var className = fieldData.id ? 'form-group field-' + fieldData.id : '';\n fieldMarkup = utils.markup('div', fieldMarkup, {\n className: className\n });\n } else {\n fieldMarkup = utils.markup('input', null, fieldData);\n }\n\n return fieldMarkup;\n };\n\n /**\n * Extend Element prototype to allow us to append fields\n *\n * @param {object} fields Node elements\n */\n Element.prototype.appendFormFields = function (fields) {\n var element = this;\n fields.reverse();\n for (var i = fields.length - 1; i >= 0; i--) {\n element.appendChild(fields[i]);\n }\n };\n\n /**\n * Extend Element prototype to remove content\n */\n Element.prototype.emptyContainer = function () {\n var element = this;\n while (element.lastChild) {\n element.removeChild(element.lastChild);\n }\n };\n\n var otherOptionCB = function otherOptionCB() {\n var otherOptions = document.getElementsByClassName('other-option');\n\n var _loop = function _loop() {\n var otherInput = document.getElementById(otherOptions[i].id + '-value');\n otherOptions[i].onclick = function () {\n var option = this;\n if (this.checked) {\n otherInput.style.display = 'inline-block';\n option.nextElementSibling.style.display = 'none';\n otherInput.oninput = function () {\n option.value = this.value;\n };\n } else {\n otherInput.style.display = 'none';\n option.nextElementSibling.style.display = 'inline-block';\n otherInput.oninput = undefined;\n }\n };\n };\n\n for (var i = 0; i < otherOptions.length; i++) {\n _loop();\n }\n };\n\n var runCallbacks = function runCallbacks() {\n otherOptionCB();\n };\n\n // Begin the core plugin\n var rendered = [];\n\n // generate field markup if we have fields\n if (opts.formData) {\n for (var i = 0; i < opts.formData.length; i++) {\n rendered.push(_helpers.fieldRender(opts.formData[i]));\n }\n\n if (opts.render) {\n if (opts.container) {\n var renderedFormWrap = utils.markup('div', rendered, { className: 'rendered-form' });\n opts.container = opts.container instanceof jQuery ? opts.container[0] : opts.container;\n opts.container.emptyContainer();\n opts.container.appendChild(renderedFormWrap);\n } else if (element) {\n element.emptyContainer();\n element.appendFormFields(rendered);\n }\n\n runCallbacks();\n opts.notify.success(opts.label.formRendered);\n } else {\n formRender.markup = rendered.map(function (elem) {\n return elem.innerHTML;\n }).join('');\n }\n } else {\n var noData = utils.markup('div', opts.label.noFormData, {\n className: 'no-form-data'\n });\n rendered.push(noData);\n opts.notify.error(opts.label.noFormData);\n }\n\n return formRender;\n}\n\n(function ($) {\n\n $.fn.formRender = function (options) {\n this.each(function () {\n var formRender = new FormRenderFn(options, this);\n return formRender;\n });\n };\n})(jQuery);","'use strict';\n\nconst fbUtils = {};\n\n// cleaner syntax for testing indexOf element\nfbUtils.inArray = function(needle, haystack) {\n return haystack.indexOf(needle) !== -1;\n};\n\n// Remove null or undefined values\nfbUtils.trimObj = function(attrs) {\n let xmlRemove = [\n null,\n undefined,\n '',\n false\n ];\n for (var i in attrs) {\n if (fbUtils.inArray(attrs[i], xmlRemove)) {\n delete attrs[i];\n }\n }\n return attrs;\n};\n\n\n/**\n * Make an ID for this element using current date and tag\n *\n * @param {Boolean} element\n * @return {String} new id for element\n */\nfbUtils.makeId = function(element = false) {\n let epoch = new Date().getTime();\n\n return `${element.tagName}-${epoch}`;\n};\n\nfbUtils.validAttr = function(attr) {\n let invalid = [\n 'values',\n 'enableOther',\n 'other',\n 'label',\n 'style',\n 'subtype'\n ];\n return !fbUtils.inArray(attr, invalid);\n};\n\n/**\n * Convert an attrs object into a string\n *\n * @param {Object} attrs object of attributes for markup\n * @return {string}\n */\nfbUtils.attrString = function(attrs) {\n let attributes = [];\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr) && fbUtils.validAttr(attr)) {\n attr = fbUtils.safeAttr(attr, attrs[attr]);\n attributes.push(attr.name + attr.value);\n }\n }\n return attributes.join(' ');\n};\n\nfbUtils.safeAttr = function(name, value) {\n name = fbUtils.safeAttrName(name);\n\n let valString = window.JSON.stringify(fbUtils.escapeAttr(value));\n\n value = value ? `=${valString}` : '';\n return {\n name,\n value\n };\n};\n\nfbUtils.safeAttrName = function(name) {\n let safeAttr = {\n className: 'class'\n };\n\n return safeAttr[name] || fbUtils.hyphenCase(name);\n};\n\n/**\n * Convert strings\n into lowercase-hyphen\n *\n * @param {string} str\n * @return {string}\n */\nfbUtils.hyphenCase = (str) => {\n str = str.replace(/[^\\w\\s\\-]/gi, '');\n str = str.replace(/([A-Z])/g, function($1) {\n return '-' + $1.toLowerCase();\n });\n\n return str.replace(/\\s/g, '-').replace(/^-+/g, '');\n};\n\n/**\n * convert a hyphenated string to camelCase\n * @param {String} str\n * @return {String}\n */\nfbUtils.camelCase = (str) => {\n return str.replace(/-([a-z])/g, function(m, w) {\n m = m;\n return w.toUpperCase();\n });\n};\n\n/**\n * Generate markup wrapper where needed\n *\n * @param {string} tag\n * @param {String|Array|Object} content we wrap this\n * @param {object} attrs\n * @return {String}\n */\nfbUtils.markup = function(tag, content = '', attrs = {}) {\n let contentType,\n field = document.createElement(tag),\n getContentType = function(content) {\n return Array.isArray(content) ? 'array' : typeof content;\n },\n appendContent = {\n string: function(content) {\n field.innerHTML = content;\n },\n object: function(content) {\n return field.appendChild(content);\n },\n array: function(content) {\n for (var i = 0; i < content.length; i++) {\n contentType = getContentType(content[i]);\n appendContent[contentType](content[i]);\n }\n }\n };\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n let name = fbUtils.safeAttrName(attr);\n field.setAttribute(name, attrs[attr]);\n }\n }\n\n contentType = getContentType(content);\n\n if (content) {\n appendContent[contentType].call(this, content);\n }\n\n return field;\n};\n\nfbUtils.parseAttrs = function(elem) {\n var attrs = elem.attributes;\n var data = {};\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n data[attrs[attr].name] = attrs[attr].value;\n }\n }\n\n return data;\n};\n\nfbUtils.parseOptions = function(field) {\n let options = field.getElementsByTagName('option'),\n optionData = {},\n data = [];\n\n if (options.length) {\n for (var i = 0; i < options.length; i++) {\n optionData = fbUtils.parseAttrs(options[i]);\n optionData.label = options[i].textContent;\n data.push(optionData);\n }\n }\n\n return data;\n};\n\nfbUtils.parseXML = function(xmlString) {\n const parser = new window.DOMParser();\n let xml = parser.parseFromString(xmlString, 'text/xml'),\n formData = [];\n\n if (xml) {\n var fields = xml.getElementsByTagName('field');\n for (var i = 0; i < fields.length; i++) {\n let fieldData = fbUtils.parseAttrs(fields[i]);\n fieldData.values = fbUtils.parseOptions(fields[i]);\n formData.push(fieldData);\n }\n }\n\n return formData;\n};\n\nfbUtils.escapeHtml = function(html) {\n var escapeElement = document.createElement('textarea');\n escapeElement.textContent = html;\n return escapeElement.innerHTML;\n};\n\n\n\nfbUtils.escapeAttr = function(str) {\n var match = {\n '\"': '"',\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n function replaceTag(tag) {\n return match[tag] || tag;\n }\n\n return (typeof str === 'string') ? str.replace(/[\"&<>]/g, replaceTag) : str;\n};\n\n// Remove null or undefined values\nfbUtils.escapeAttrs = function(attrs) {\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n attrs[attr] = fbUtils.escapeAttr(attrs[attr]);\n }\n }\n\n return attrs;\n};\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["polyfills.js","form-render.js","kc-toggle.js","form-render.min.js","utils.js"],"names":["FormRenderFn","options","element","utils","fbUtils","formRender","this","defaults","destroyTemplate","container","dataType","formData","label","formRendered","noFormData","other","selectColor","render","notify","error","message","console","success","log","warning","warn","_helpers","opts","$","extend","setData","xml","parseXML","json","window","JSON","parse","fieldRender","fieldData","fieldMarkup","fieldLabel","optionsMarkup","fieldLabelText","fieldDesc","description","fieldRequired","fieldOptions","values","id","name","type","subtype","required","fieldLabelVal","fieldDataString","attrString","fieldVal","value","optionAttrsString","replace","i","length","selected","optionAttrs","optionName","Object","assign","checked","enableOther","otherOptionAttrs","className","toggle","setTimeout","document","getElementById","kcToggle","markup","Element","prototype","appendFormFields","fields","reverse","appendChild","emptyContainer","lastChild","removeChild","otherOptionCB","otherOptions","getElementsByClassName","_loop","otherInput","onclick","option","style","display","nextElementSibling","oninput","undefined","runCallbacks","rendered","push","renderedFormWrap","jQuery","map","elem","innerHTML","join","noData","remove","parentNode","Event","evt","event","createEvent","initEvent","target","TypeError","index","arguments","source","key","hasOwnProperty","call","Toggle","theme","labels","off","on","$kcToggle","insertAfter","append","toggleClass","is","kctOn","kctOff","kctHandle","kctInner","click","attr","fn","each","data","_typeof","Symbol","iterator","obj","constructor","inArray","needle","haystack","indexOf","trimObj","attrs","xmlRemove","makeId","epoch","Date","getTime","tagName","validAttr","invalid","attributes","safeAttr","safeAttrName","valString","stringify","escapeAttr","hyphenCase","str","$1","toLowerCase","camelCase","m","w","toUpperCase","tag","content","contentType","field","createElement","getContentType","Array","isArray","appendContent","string","object","array","setAttribute","parseAttrs","parseOptions","getElementsByTagName","optionData","textContent","xmlString","parser","DOMParser","parseFromString","escapeHtml","html","escapeElement","replaceTag","match","\"","&","<",">","escapeAttrs"],"mappings":"AAAA,YCGA,SAASA,cAAaC,EAASC,GAE7B,GAAIC,GAAQC,QAERC,EAAaC,KACfC,GACEC,iBAAiB,EACjBC,WAAW,EACXC,SAAU,MACVC,UAAU,EACVC,OACEC,aAAc,gBACdC,WAAY,gBACZC,MAAO,QACPC,YAAa,gBAEfC,QAAQ,EACRC,QACEC,MAAO,SAASC,GACd,MAAOC,SAAQF,MAAMC,IAEvBE,QAAS,SAASF,GAChB,MAAOC,SAAQE,IAAIH,IAErBI,QAAS,SAASJ,GAChB,MAAOC,SAAQI,KAAKL,MAI1BM,KAEEC,EAAOC,EAAEC,QAAO,EAAMtB,EAAUN,IAEpC,WACE,IAAK0B,EAAKhB,SACR,OAAO,CAGT,IAAImB,IACFC,IAAK,SAAApB,GAAA,MAAYR,GAAM6B,SAASrB,IAChCsB,KAAM,SAAAtB,GAAA,MAAYuB,QAAOC,KAAKC,MAAMzB,IAGtCgB,GAAKhB,SAAWmB,EAAQH,EAAKjB,UAAUiB,EAAKhB,YAAa,KAQ3De,EAASW,YAAc,SAASC,GAC9B,GAAIC,GAAc,GAChBC,EAAa,GACbC,EAAgB,GAChBC,EAAiBJ,EAAU1B,OAAS,GACpC+B,EAAYL,EAAUM,aAAe,GACrCC,EAAgB,GAChBC,EAAeR,EAAUS,UAC3BT,GAAUU,GAAKV,EAAUW,KAEzBX,EAAUY,KAAOZ,EAAUa,SAAWb,EAAUY,KAE5CZ,EAAUc,WACZd,EAAUc,SAAW,KACrBd,EAAU,iBAAmB,OAC7BO,EAAAA,mCAGqB,WAAnBP,EAAUY,OACRP,IACFA,EAAAA,0CAAsDA,EAAtD,cAEFH,EAAAA,eAA4BF,EAAUU,GAAtC,KAA6CN,EAA7C,IAA+DG,EAA/D,IAAgFF,EAAhF,WAGF,IAAIU,GAAgBf,EAAU1B,YAEvB0B,GAAU1B,YACV0B,GAAUM,WAEjB,IAAIU,GAAkBnD,EAAMoD,WAAWjB,EAEvC,QAAQA,EAAUY,MAChB,IAAK,WACL,IAAK,kBACIZ,GAAUY,IACjB,IAAIM,GAAWlB,EAAUmB,OAAS,EAClClB,GAAiBC,EAAjB,aAAwCc,EAAxC,IAA2DE,EAA3D,aACA,MACF,KAAK,SACH,GAAIE,EAGJ,IAFApB,EAAUY,KAAOZ,EAAUY,KAAKS,QAAQ,SAAU,IAE9Cb,EACF,IAAK,GAAIc,GAAI,EAAGA,EAAId,EAAae,OAAQD,IAClCd,EAAac,GAAGE,gBACZhB,GAAac,GAAGE,SAEzBJ,EAAoBvD,EAAMoD,WAAWT,EAAac,IAClDnB,GAAAA,WAA4BiB,EAA5B,IAAiDZ,EAAac,GAAGhD,MAAjE,WAIJ2B,GAAiBC,EAAjB,WAAsCc,EAAtC,IAAyDb,EAAzD,WACA,MACF,KAAK,iBACL,IAAK,cACH,GAAIsB,GAAAA,MAGJ,IAFAzB,EAAUY,KAAOZ,EAAUY,KAAKS,QAAQ,SAAU,IAE9Cb,EAAc,CAIhB,IAAK,GAHDkB,GAAgC,aAAnB1B,EAAUY,KAAsBZ,EAAUW,KAAO,KAAOX,EAAUW,KACjFS,EAAAA,OAEOE,EAAI,EAAGA,EAAId,EAAae,OAAQD,IACvCG,EAAcE,OAAOC,UAAW5B,EAAWQ,EAAac,IAEpDG,EAAYD,iBACPC,GAAYD,SACnBC,EAAYI,QAAU,MAGxBJ,EAAYd,KAAOe,EACnBD,EAAYf,GAAKV,EAAUU,GAAK,IAAMY,EACtCF,EAAoBvD,EAAMoD,WAAWQ,GACrCtB,GAAAA,UAA2BiB,EAA3B,mBAA+DK,EAAYf,GAA3E,KAAkFe,EAAYnD,MAA9F,cAGF,IAAI0B,EAAU8B,aAAe9B,EAAU,gBAAiB,CACtD,GAAI+B,IACFrB,GAAIV,EAAUU,GAAK,SACnBsB,WAAYhC,EAAAA,UAAmBA,EAAUgC,WAAa,gBAGxDZ,GAAoBvD,EAAMoD,WAAWU,OAAOC,UAAW5B,EAAW+B,IAElE5B,GAAAA,UAA2BiB,EAA3B,mBAA+DW,EAAiBrB,GAAhF,KAAuFrB,EAAKf,MAAMG,MAAlG,8CAAqJsD,EAAiBrB,GAAtK,WAAmLgB,EAAnL,SAAsMK,EAAiBrB,GAAvN,oCAIJT,EAAiBC,EAAjB,eAA0CF,EAAUY,KAApD,WAAmET,EAAnE,QACA,MACF,KAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,eACHF,EAAiBC,EAAjB,WAAsCc,EAAtC,GACA,MACF,KAAK,QACHf,EAAiBC,EAAjB,WAAsCc,EAAtC,KAA0D3B,EAAKf,MAAMI,WACrE,MACF,KAAK,SACL,IAAK,SACHuB,EAAAA,WAAyBe,EAAzB,IAA4CD,EAA5C,WACA,MACF,KAAK,WACHd,EAAAA,UAAwBe,EAAxB,KAA4Cd,EAExCF,EAAUiC,QACZC,WAAW,WACT5C,EAAE6C,SAASC,eAAepC,EAAUU,KAAK2B,YACxC,IAEL,MACF,SACEpC,EAAAA,IAAkBD,EAAUY,KAA5B,IAAoCI,EAApC,IAAuDD,EAAvD,KAAyEf,EAAUY,KAAnF,IAGJ,GAAuB,WAAnBZ,EAAUY,KAAmB,CAC/B,GAAIoB,GAAYhC,EAAUU,GAAK,oBAAsBV,EAAUU,GAAK,EACpET,GAAcpC,EAAMyE,OAAO,MAAOrC,GAChC+B,UAAWA,QAGb/B,GAAcpC,EAAMyE,OAAO,QAAS,KAAMtC,EAG5C,OAAOC,IAQTsC,QAAQC,UAAUC,iBAAmB,SAASC,GAC5C,GAAI9E,GAAUI,IACd0E,GAAOC,SACP,KAAK,GAAIrB,GAAIoB,EAAOnB,OAAS,EAAGD,GAAK,EAAGA,IACtC1D,EAAQgF,YAAYF,EAAOpB,KAO/BiB,QAAQC,UAAUK,eAAiB,WAEjC,IADA,GAAIjF,GAAUI,KACPJ,EAAQkF,WACblF,EAAQmF,YAAYnF,EAAQkF,WAIhC,IAAIE,GAAgB,WAElB,IAAK,GADDC,GAAed,SAASe,uBAAuB,gBADtBC,EAAA,WAG3B,GAAIC,GAAajB,SAASC,eAAea,EAAa3B,GAAGZ,GAAK,SAC9DuC,GAAa3B,GAAG+B,QAAU,WACxB,GAAIC,GAAStF,IACTA,MAAK6D,SACPuB,EAAWG,MAAMC,QAAU,eAC3BF,EAAOG,mBAAmBF,MAAMC,QAAU,OAC1CJ,EAAWM,QAAU,WAAaJ,EAAOnC,MAAQnD,KAAKmD,SAEtDiC,EAAWG,MAAMC,QAAU,OAC3BF,EAAOG,mBAAmBF,MAAMC,QAAU,eAC1CJ,EAAWM,QAAUC,UAXlBrC,EAAI,EAAGA,EAAI2B,EAAa1B,OAAQD,IAAK6B,KAiB5CS,EAAe,WACjBZ,KAIEa,IAGJ,IAAIxE,EAAKhB,SAAU,CACjB,IAAK,GAAIiD,GAAI,EAAGA,EAAIjC,EAAKhB,SAASkD,OAAQD,IACxCuC,EAASC,KAAK1E,EAASW,YAAYV,EAAKhB,SAASiD,IAGnD,IAAIjC,EAAKV,OAAQ,CACf,GAAIU,EAAKlB,UAAW,CAClB,GAAI4F,GAAmBlG,EAAMyE,OAAO,MAAOuB,GAAY7B,UAAW,iBAClE3C,GAAKlB,UAAakB,EAAKlB,oBAAqB6F,QAAU3E,EAAKlB,UAAU,GAAKkB,EAAKlB,UAC/EkB,EAAKlB,UAAU0E,iBACfxD,EAAKlB,UAAUyE,YAAYmB,OAClBnG,KACTA,EAAQiF,iBACRjF,EAAQ6E,iBAAiBoB,GAG3BD,KACAvE,EAAKT,OAAOI,QAAQK,EAAKf,MAAMC,kBAE/BR,GAAWuE,OAASuB,EAASI,IAAI,SAASC,GACxC,MAAOA,GAAKC,YACXC,KAAK,QAEL,CACL,GAAIC,GAASxG,EAAMyE,OAAO,MAAOjD,EAAKf,MAAME,YAC1CwD,UAAW,gBAEb6B,GAASC,KAAKO,GACdhF,EAAKT,OAAOC,MAAMQ,EAAKf,MAAME,YAG/B,MAAOT,GD1QH,UAAYwE,SAAQC,YACxBD,QAAQC,UAAU8B,OAAS,WACrBtG,KAAKuG,YACPvG,KAAKuG,WAAWxB,YAAY/E,QAMb,kBAAVwG,SACT,WACE5E,OAAO4E,MAAQ,SAASC,GACtB,GAAIC,GAAQvC,SAASwC,YAAY,QAEjC,OADAD,GAAME,UAAUH,GAAK,GAAM,GACpBC,MAMe,kBAAjB/C,QAAOC,SAChBD,OAAOC,OAAS,SAASiD,GAEvB,GAAc,MAAVA,EACF,KAAM,IAAIC,WAAU,6CAGtBD,GAASlD,OAAOkD,EAChB,KAAK,GAAIE,GAAQ,EAAGA,EAAQC,UAAUzD,OAAQwD,IAAS,CACrD,GAAIE,GAASD,UAAUD,EACvB,IAAc,MAAVE,EACF,IAAK,GAAIC,KAAOD,GACVtD,OAAOa,UAAU2C,eAAeC,KAAKH,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK7B,MAAOL,KEzCX,SAAUvF,GAGR,GAAI+F,GAAS,SAASzH,EAASD,GAE7B,GAAIM,IACFqH,MAAO,QACPC,QACEC,IAAK,MACLC,GAAI,OAIJpG,EAAOC,EAAEC,OAAOtB,EAAUN,GAC5B+H,EAAYpG,EAAE,4BAA4BqG,YAAY/H,GAASgI,OAAOhI,EAExE8H,GAAUG,YAAY,KAAMjI,EAAQkI,GAAG,YAEvC,IAAIC,GAAAA,uBAA+B1G,EAAKkG,OAAOE,GAA3C,SACAO,EAAAA,wBAAiC3G,EAAKkG,OAAOC,IAA7C,SACAS,EAAAA,iCACAC,EAAAA,0BAAqCH,EAAQE,EAAYD,EAAzD,QAEJN,GAAUE,OAAOM,GAEjBR,EAAUS,MAAM,WACdvI,EAAQwI,KAAK,WAAYxI,EAAQwI,KAAK,YACtC9G,EAAEtB,MAAM6H,YAAY,QAKxBvG,GAAE+G,GAAGhE,SAAW,SAAS1E,GACvB,GAAIsE,GAASjE,IACb,OAAOiE,GAAOqE,KAAK,WACjB,GAAI1I,GAAU0B,EAAEtB,KAChB,KAAIJ,EAAQ2I,KAAK,YAAjB,CAGA,GAAIlE,GAAW,GAAIgD,GAAOzH,EAASD,EACnCC,GAAQ2I,KAAK,WAAYlE,QAI5B2B,OCiDH,IAAIwC,SAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IC3FpO7I,UAGNA,SAAQ+I,QAAU,SAASC,EAAQC,GACjC,MAAOA,GAASC,QAAQF,SAI1BhJ,QAAQmJ,QAAU,SAASC,GACzB,GAAIC,IACF,KACAxD,OACA,IACA,EAEF,KAAK,GAAIrC,KAAK4F,GACRpJ,QAAQ+I,QAAQK,EAAM5F,GAAI6F,UACrBD,GAAM5F,EAGjB,OAAO4F,IAUTpJ,QAAQsJ,OAAS,WAA0B,GAAjBxJ,KAAiBoH,UAAAzD,QAAA,GAAAoC,SAAAqB,UAAA,KAAAA,UAAA,GACrCqC,GAAQ,GAAIC,OAAOC,SAEvB,OAAU3J,GAAQ4J,QAAlB,IAA6BH,GAG/BvJ,QAAQ2J,UAAY,SAASrB,GAC3B,GAAIsB,IACF,SACA,cACA,QACA,QACA,QACA,UAEF,QAAQ5J,QAAQ+I,QAAQT,EAAMsB,IAShC5J,QAAQmD,WAAa,SAASiG,GAC5B,GAAIS,KAEJ,KAAK,GAAIvB,KAAQc,GACXA,EAAM/B,eAAeiB,IAAStI,QAAQ2J,UAAUrB,KAClDA,EAAOtI,QAAQ8J,SAASxB,EAAMc,EAAMd,IACpCuB,EAAW7D,KAAKsC,EAAKzF,KAAOyF,EAAKjF,OAGrC,OAAOwG,GAAWvD,KAAK,MAGzBtG,QAAQ8J,SAAW,SAASjH,EAAMQ,GAChCR,EAAO7C,QAAQ+J,aAAalH,EAE5B,IAAImH,GAAYlI,OAAOC,KAAKkI,UAAUjK,QAAQkK,WAAW7G,GAGzD,OADAA,GAAQA,EAAAA,IAAY2G,EAAc,IAEhCnH,KAAAA,EACAQ,MAAAA,IAIJrD,QAAQ+J,aAAe,SAASlH,GAC9B,GAAIiH,IACF5F,UAAW,QAGb,OAAO4F,GAASjH,IAAS7C,QAAQmK,WAAWtH,IAU9C7C,QAAQmK,WAAa,SAACC,GAMpB,MALAA,GAAMA,EAAI7G,QAAQ,cAAe,IACjC6G,EAAMA,EAAI7G,QAAQ,WAAY,SAAS8G,GACrC,MAAO,IAAMA,EAAGC,gBAGXF,EAAI7G,QAAQ,MAAO,KAAKA,QAAQ,OAAQ,KAQjDvD,QAAQuK,UAAY,SAACH,GACnB,MAAOA,GAAI7G,QAAQ,YAAa,SAASiH,EAAGC,GAE1C,MADAD,GAAIA,EACGC,EAAEC,iBAYb1K,QAAQwE,OAAS,SAASmG,GAA+B,GAA1BC,GAA0B1D,UAAAzD,QAAA,GAAAoC,SAAAqB,UAAA,GAAhB,GAAgBA,UAAA,GAAZkC,EAAYlC,UAAAzD,QAAA,GAAAoC,SAAAqB,UAAA,MAAAA,UAAA,GACnD2D,EAAAA,OACFC,EAAQzG,SAAS0G,cAAcJ,GAC/BK,EAAiB,SAASJ,GACxB,MAAOK,OAAMC,QAAQN,GAAW,QAAzB,mBAA0CA,GAA1C,YAAAlC,QAA0CkC,IAEnDO,GACEC,OAAQ,SAASR,GACfE,EAAMzE,UAAYuE,GAEpBS,OAAQ,SAAST,GACf,MAAOE,GAAMhG,YAAY8F,IAE3BU,MAAO,SAASV,GACd,IAAK,GAAIpH,GAAI,EAAGA,EAAIoH,EAAQnH,OAAQD,IAClCqH,EAAcG,EAAeJ,EAAQpH,IACrC2H,EAAcN,GAAaD,EAAQpH,KAK3C,KAAK,GAAI8E,KAAQc,GACf,GAAIA,EAAM/B,eAAeiB,GAAO,CAC9B,GAAIzF,GAAO7C,QAAQ+J,aAAazB,EAChCwC,GAAMS,aAAa1I,EAAMuG,EAAMd,IAUnC,MANAuC,GAAcG,EAAeJ,GAEzBA,GACFO,EAAcN,GAAavD,KAAKpH,KAAM0K,GAGjCE,GAGT9K,QAAQwL,WAAa,SAASpF,GAC5B,GAAIgD,GAAQhD,EAAKyD,WACbpB,IAEJ,KAAK,GAAIH,KAAQc,GACXA,EAAM/B,eAAeiB,KACvBG,EAAKW,EAAMd,GAAMzF,MAAQuG,EAAMd,GAAMjF,MAIzC,OAAOoF,IAGTzI,QAAQyL,aAAe,SAASX,GAC9B,GAAIjL,GAAUiL,EAAMY,qBAAqB,UACvCC,KACAlD,IAEF,IAAI5I,EAAQ4D,OACV,IAAK,GAAID,GAAI,EAAGA,EAAI3D,EAAQ4D,OAAQD,IAClCmI,EAAa3L,QAAQwL,WAAW3L,EAAQ2D,IACxCmI,EAAWnL,MAAQX,EAAQ2D,GAAGoI,YAC9BnD,EAAKzC,KAAK2F,EAId,OAAOlD,IAGTzI,QAAQ4B,SAAW,SAASiK,GAC1B,GAAMC,GAAS,GAAIhK,QAAOiK,UACtBpK,EAAMmK,EAAOE,gBAAgBH,EAAW,YAC1CtL,IAEF,IAAIoB,EAEF,IAAK,GADDiD,GAASjD,EAAI+J,qBAAqB,SAC7BlI,EAAI,EAAGA,EAAIoB,EAAOnB,OAAQD,IAAK,CACtC,GAAItB,GAAYlC,QAAQwL,WAAW5G,EAAOpB,GAC1CtB,GAAUS,OAAS3C,QAAQyL,aAAa7G,EAAOpB,IAC/CjD,EAASyF,KAAK9D,GAIlB,MAAO3B,IAGTP,QAAQiM,WAAa,SAASC,GAC5B,GAAIC,GAAgB9H,SAAS0G,cAAc,WAE3C,OADAoB,GAAcP,YAAcM,EACrBC,EAAc9F,WAKvBrG,QAAQkK,WAAa,SAASE,GAQ5B,QAASgC,GAAWzB,GAClB,MAAO0B,GAAM1B,IAAQA,EARvB,GAAI0B,IACFC,IAAK,SACLC,IAAK,QACLC,IAAK,OACLC,IAAK,OAOP,OAAuB,gBAARrC,GAAoBA,EAAI7G,QAAQ,UAAW6I,GAAchC,GAI1EpK,QAAQ0M,YAAc,SAAStD,GAE7B,IAAK,GAAId,KAAQc,GACXA,EAAM/B,eAAeiB,KACvBc,EAAMd,GAAQtI,QAAQkK,WAAWd,EAAMd,IAI3C,OAAOc,IHiCT,SAAU5H,GAERA,EAAE+G,GAAGtI,WAAa,SAASJ,GACzBK,KAAKsI,KAAK,WACR,GAAIvI,GAAa,GAAIL,cAAaC,EAASK,KAC3C,OAAOD,OAIViG","file":"form-render.min.js","sourcesContent":["'use strict';\n\n// Element.remove() polyfill\nif (!('remove' in Element.prototype)) {\n Element.prototype.remove = function() {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\n// Event polyfill\nif (typeof Event !== 'function') {\n (function() {\n window.Event = function(evt) {\n var event = document.createEvent('Event');\n event.initEvent(evt, true, true);\n return event;\n };\n })();\n}\n\n// Object.assign polyfill\nif (typeof Object.assign != 'function') {\n Object.assign = function(target) {\n 'use strict';\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n target = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source != null) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n}\n","'use strict';\n\n// render the formBuilder XML into html\nfunction FormRenderFn(options, element) {\n\n var utils = fbUtils;\n\n var formRender = this,\n defaults = {\n destroyTemplate: true, // @todo\n container: false,\n dataType: 'xml',\n formData: false,\n label: {\n formRendered: 'Form Rendered',\n noFormData: 'No form data.',\n other: 'Other',\n selectColor: 'Select Color'\n },\n render: true,\n notify: {\n error: function(message) {\n return console.error(message);\n },\n success: function(message) {\n return console.log(message);\n },\n warning: function(message) {\n return console.warn(message);\n }\n }\n },\n _helpers = {};\n\n var opts = $.extend(true, defaults, options);\n\n (function() {\n if (!opts.formData) {\n return false;\n }\n\n let setData = {\n xml: formData => utils.parseXML(formData),\n json: formData => window.JSON.parse(formData)\n };\n\n opts.formData = setData[opts.dataType](opts.formData) || false;\n })();\n\n /**\n * Generate preview markup\n * @param {object} fieldData\n * @return {string} preview markup for field\n */\n _helpers.fieldRender = function(fieldData) {\n var fieldMarkup = '',\n fieldLabel = '',\n optionsMarkup = '',\n fieldLabelText = fieldData.label || '',\n fieldDesc = fieldData.description || '',\n fieldRequired = '',\n fieldOptions = fieldData.values || [];\n fieldData.id = fieldData.name;\n\n fieldData.type = fieldData.subtype || fieldData.type;\n\n if (fieldData.required) {\n fieldData.required = null;\n fieldData['aria-required'] = 'true';\n fieldRequired = `*`;\n }\n\n if (fieldData.type !== 'hidden') {\n if (fieldDesc) {\n fieldDesc = `?`;\n }\n fieldLabel = ``;\n }\n\n var fieldLabelVal = fieldData.label;\n\n delete fieldData.label;\n delete fieldData.description;\n\n var fieldDataString = utils.attrString(fieldData);\n\n switch (fieldData.type) {\n case 'textarea':\n case 'rich-text':\n delete fieldData.type;\n let fieldVal = fieldData.value || '';\n fieldMarkup = `${fieldLabel}`;\n break;\n case 'select':\n var optionAttrsString;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n for (let i = 0; i < fieldOptions.length; i++) {\n if (!fieldOptions[i].selected) {\n delete fieldOptions[i].selected;\n }\n optionAttrsString = utils.attrString(fieldOptions[i]);\n optionsMarkup += ``;\n }\n }\n\n fieldMarkup = `${fieldLabel}`;\n break;\n case 'checkbox-group':\n case 'radio-group':\n let optionAttrs;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n let optionName = fieldData.type === 'checkbox' ? fieldData.name + '[]' : fieldData.name,\n optionAttrsString;\n\n for (let i = 0; i < fieldOptions.length; i++) {\n optionAttrs = Object.assign({}, fieldData, fieldOptions[i]);\n\n if (optionAttrs.selected) {\n delete optionAttrs.selected;\n optionAttrs.checked = null;\n }\n\n optionAttrs.name = optionName;\n optionAttrs.id = fieldData.id + '-' + i;\n optionAttrsString = utils.attrString(optionAttrs);\n optionsMarkup += `
          `;\n }\n\n if (fieldData.enableOther || fieldData['enable-other']) {\n let otherOptionAttrs = {\n id: fieldData.id + '-' + 'other',\n className: (fieldData.class || fieldData.className) + ' other-option'\n };\n\n optionAttrsString = utils.attrString(Object.assign({}, fieldData, otherOptionAttrs));\n\n optionsMarkup += ` `;\n }\n\n }\n fieldMarkup = `${fieldLabel}
          ${optionsMarkup}
          `;\n break;\n case 'text':\n case 'password':\n case 'email':\n case 'number':\n case 'file':\n case 'hidden':\n case 'date':\n case 'autocomplete':\n fieldMarkup = `${fieldLabel} `;\n break;\n case 'color':\n fieldMarkup = `${fieldLabel} ${opts.label.selectColor}`;\n break;\n case 'button':\n case 'submit':\n fieldMarkup = ``;\n break;\n case 'checkbox':\n fieldMarkup = ` ${fieldLabel}`;\n\n if (fieldData.toggle) {\n setTimeout(function() {\n $(document.getElementById(fieldData.id)).kcToggle();\n }, 100);\n }\n break;\n default:\n fieldMarkup = `<${fieldData.type} ${fieldDataString}>${fieldLabelVal}`;\n }\n\n if (fieldData.type !== 'hidden') {\n let className = fieldData.id ? 'form-group field-' + fieldData.id : '';\n fieldMarkup = utils.markup('div', fieldMarkup, {\n className: className\n });\n } else {\n fieldMarkup = utils.markup('input', null, fieldData);\n }\n\n return fieldMarkup;\n };\n\n /**\n * Extend Element prototype to allow us to append fields\n *\n * @param {object} fields Node elements\n */\n Element.prototype.appendFormFields = function(fields) {\n var element = this;\n fields.reverse();\n for (var i = fields.length - 1; i >= 0; i--) {\n element.appendChild(fields[i]);\n }\n };\n\n /**\n * Extend Element prototype to remove content\n */\n Element.prototype.emptyContainer = function() {\n var element = this;\n while (element.lastChild) {\n element.removeChild(element.lastChild);\n }\n };\n\n var otherOptionCB = function() {\n var otherOptions = document.getElementsByClassName('other-option');\n for (var i = 0; i < otherOptions.length; i++) {\n let otherInput = document.getElementById(otherOptions[i].id + '-value');\n otherOptions[i].onclick = function() {\n let option = this;\n if (this.checked) {\n otherInput.style.display = 'inline-block';\n option.nextElementSibling.style.display = 'none';\n otherInput.oninput = function() { option.value = this.value; };\n } else {\n otherInput.style.display = 'none';\n option.nextElementSibling.style.display = 'inline-block';\n otherInput.oninput = undefined;\n }\n };\n }\n };\n\n var runCallbacks = function() {\n otherOptionCB();\n };\n\n // Begin the core plugin\n var rendered = [];\n\n // generate field markup if we have fields\n if (opts.formData) {\n for (var i = 0; i < opts.formData.length; i++) {\n rendered.push(_helpers.fieldRender(opts.formData[i]));\n }\n\n if (opts.render) {\n if (opts.container) {\n let renderedFormWrap = utils.markup('div', rendered, { className: 'rendered-form' });\n opts.container = (opts.container instanceof jQuery) ? opts.container[0] : opts.container;\n opts.container.emptyContainer();\n opts.container.appendChild(renderedFormWrap);\n } else if (element) {\n element.emptyContainer();\n element.appendFormFields(rendered);\n }\n\n runCallbacks();\n opts.notify.success(opts.label.formRendered);\n } else {\n formRender.markup = rendered.map(function(elem) {\n return elem.innerHTML;\n }).join('');\n }\n } else {\n let noData = utils.markup('div', opts.label.noFormData, {\n className: 'no-form-data'\n });\n rendered.push(noData);\n opts.notify.error(opts.label.noFormData);\n }\n\n return formRender;\n}\n\n(function($) {\n\n $.fn.formRender = function(options) {\n this.each(function() {\n let formRender = new FormRenderFn(options, this);\n return formRender;\n });\n };\n\n})(jQuery);\n","(function($) {\n 'use strict';\n\n var Toggle = function(element, options) {\n\n var defaults = {\n theme: 'fresh',\n labels: {\n off: 'Off',\n on: 'On'\n }\n };\n\n var opts = $.extend(defaults, options),\n $kcToggle = $('
          ').insertAfter(element).append(element);\n\n $kcToggle.toggleClass('on', element.is(':checked'));\n\n var kctOn = `
          ${opts.labels.on}
          `,\n kctOff = `
          ${opts.labels.off}
          `,\n kctHandle = `
          `,\n kctInner = `
          ${kctOn}${kctHandle}${kctOff}
          `;\n\n $kcToggle.append(kctInner);\n\n $kcToggle.click(function() {\n element.attr('checked', !element.attr('checked'));\n $(this).toggleClass('on');\n });\n\n };\n\n $.fn.kcToggle = function(options) {\n var toggle = this;\n return toggle.each(function() {\n var element = $(this);\n if (element.data('kcToggle')) {\n return;\n }\n var kcToggle = new Toggle(element, options);\n element.data('kcToggle', kcToggle);\n });\n };\n\n})(jQuery);\n","'use strict';\n\n// Element.remove() polyfill\n\nif (!('remove' in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\n// Event polyfill\nif (typeof Event !== 'function') {\n (function () {\n window.Event = function (evt) {\n var event = document.createEvent('Event');\n event.initEvent(evt, true, true);\n return event;\n };\n })();\n}\n\n// Object.assign polyfill\nif (typeof Object.assign != 'function') {\n Object.assign = function (target) {\n 'use strict';\n\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n target = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source != null) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n}\n'use strict';\n\n(function ($) {\n 'use strict';\n\n var Toggle = function Toggle(element, options) {\n\n var defaults = {\n theme: 'fresh',\n labels: {\n off: 'Off',\n on: 'On'\n }\n };\n\n var opts = $.extend(defaults, options),\n $kcToggle = $('
          ').insertAfter(element).append(element);\n\n $kcToggle.toggleClass('on', element.is(':checked'));\n\n var kctOn = '
          ' + opts.labels.on + '
          ',\n kctOff = '
          ' + opts.labels.off + '
          ',\n kctHandle = '
          ',\n kctInner = '
          ' + kctOn + kctHandle + kctOff + '
          ';\n\n $kcToggle.append(kctInner);\n\n $kcToggle.click(function () {\n element.attr('checked', !element.attr('checked'));\n $(this).toggleClass('on');\n });\n };\n\n $.fn.kcToggle = function (options) {\n var toggle = this;\n return toggle.each(function () {\n var element = $(this);\n if (element.data('kcToggle')) {\n return;\n }\n var kcToggle = new Toggle(element, options);\n element.data('kcToggle', kcToggle);\n });\n };\n})(jQuery);\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar fbUtils = {};\n\n// cleaner syntax for testing indexOf element\nfbUtils.inArray = function (needle, haystack) {\n return haystack.indexOf(needle) !== -1;\n};\n\n// Remove null or undefined values\nfbUtils.trimObj = function (attrs) {\n var xmlRemove = [null, undefined, '', false];\n for (var i in attrs) {\n if (fbUtils.inArray(attrs[i], xmlRemove)) {\n delete attrs[i];\n }\n }\n return attrs;\n};\n\n/**\n * Make an ID for this element using current date and tag\n *\n * @param {Boolean} element\n * @return {String} new id for element\n */\nfbUtils.makeId = function () {\n var element = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n var epoch = new Date().getTime();\n\n return element.tagName + '-' + epoch;\n};\n\nfbUtils.validAttr = function (attr) {\n var invalid = ['values', 'enableOther', 'other', 'label', 'style', 'subtype'];\n return !fbUtils.inArray(attr, invalid);\n};\n\n/**\n * Convert an attrs object into a string\n *\n * @param {Object} attrs object of attributes for markup\n * @return {string}\n */\nfbUtils.attrString = function (attrs) {\n var attributes = [];\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr) && fbUtils.validAttr(attr)) {\n attr = fbUtils.safeAttr(attr, attrs[attr]);\n attributes.push(attr.name + attr.value);\n }\n }\n return attributes.join(' ');\n};\n\nfbUtils.safeAttr = function (name, value) {\n name = fbUtils.safeAttrName(name);\n\n var valString = window.JSON.stringify(fbUtils.escapeAttr(value));\n\n value = value ? '=' + valString : '';\n return {\n name: name,\n value: value\n };\n};\n\nfbUtils.safeAttrName = function (name) {\n var safeAttr = {\n className: 'class'\n };\n\n return safeAttr[name] || fbUtils.hyphenCase(name);\n};\n\n/**\n * Convert strings\n into lowercase-hyphen\n *\n * @param {string} str\n * @return {string}\n */\nfbUtils.hyphenCase = function (str) {\n str = str.replace(/[^\\w\\s\\-]/gi, '');\n str = str.replace(/([A-Z])/g, function ($1) {\n return '-' + $1.toLowerCase();\n });\n\n return str.replace(/\\s/g, '-').replace(/^-+/g, '');\n};\n\n/**\n * convert a hyphenated string to camelCase\n * @param {String} str\n * @return {String}\n */\nfbUtils.camelCase = function (str) {\n return str.replace(/-([a-z])/g, function (m, w) {\n m = m;\n return w.toUpperCase();\n });\n};\n\n/**\n * Generate markup wrapper where needed\n *\n * @param {string} tag\n * @param {String|Array|Object} content we wrap this\n * @param {object} attrs\n * @return {String}\n */\nfbUtils.markup = function (tag) {\n var content = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];\n var attrs = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n var contentType = void 0,\n field = document.createElement(tag),\n getContentType = function getContentType(content) {\n return Array.isArray(content) ? 'array' : typeof content === 'undefined' ? 'undefined' : _typeof(content);\n },\n appendContent = {\n string: function string(content) {\n field.innerHTML = content;\n },\n object: function object(content) {\n return field.appendChild(content);\n },\n array: function array(content) {\n for (var i = 0; i < content.length; i++) {\n contentType = getContentType(content[i]);\n appendContent[contentType](content[i]);\n }\n }\n };\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n var name = fbUtils.safeAttrName(attr);\n field.setAttribute(name, attrs[attr]);\n }\n }\n\n contentType = getContentType(content);\n\n if (content) {\n appendContent[contentType].call(this, content);\n }\n\n return field;\n};\n\nfbUtils.parseAttrs = function (elem) {\n var attrs = elem.attributes;\n var data = {};\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n data[attrs[attr].name] = attrs[attr].value;\n }\n }\n\n return data;\n};\n\nfbUtils.parseOptions = function (field) {\n var options = field.getElementsByTagName('option'),\n optionData = {},\n data = [];\n\n if (options.length) {\n for (var i = 0; i < options.length; i++) {\n optionData = fbUtils.parseAttrs(options[i]);\n optionData.label = options[i].textContent;\n data.push(optionData);\n }\n }\n\n return data;\n};\n\nfbUtils.parseXML = function (xmlString) {\n var parser = new window.DOMParser();\n var xml = parser.parseFromString(xmlString, 'text/xml'),\n formData = [];\n\n if (xml) {\n var fields = xml.getElementsByTagName('field');\n for (var i = 0; i < fields.length; i++) {\n var fieldData = fbUtils.parseAttrs(fields[i]);\n fieldData.values = fbUtils.parseOptions(fields[i]);\n formData.push(fieldData);\n }\n }\n\n return formData;\n};\n\nfbUtils.escapeHtml = function (html) {\n var escapeElement = document.createElement('textarea');\n escapeElement.textContent = html;\n return escapeElement.innerHTML;\n};\n\nfbUtils.escapeAttr = function (str) {\n var match = {\n '\"': '"',\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n function replaceTag(tag) {\n return match[tag] || tag;\n }\n\n return typeof str === 'string' ? str.replace(/[\"&<>]/g, replaceTag) : str;\n};\n\n// Remove null or undefined values\nfbUtils.escapeAttrs = function (attrs) {\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n attrs[attr] = fbUtils.escapeAttr(attrs[attr]);\n }\n }\n\n return attrs;\n};\n'use strict';\n\n// render the formBuilder XML into html\n\nfunction FormRenderFn(options, element) {\n\n var utils = fbUtils;\n\n var formRender = this,\n defaults = {\n destroyTemplate: true, // @todo\n container: false,\n dataType: 'xml',\n formData: false,\n label: {\n formRendered: 'Form Rendered',\n noFormData: 'No form data.',\n other: 'Other',\n selectColor: 'Select Color'\n },\n render: true,\n notify: {\n error: function error(message) {\n return console.error(message);\n },\n success: function success(message) {\n return console.log(message);\n },\n warning: function warning(message) {\n return console.warn(message);\n }\n }\n },\n _helpers = {};\n\n var opts = $.extend(true, defaults, options);\n\n (function () {\n if (!opts.formData) {\n return false;\n }\n\n var setData = {\n xml: function xml(formData) {\n return utils.parseXML(formData);\n },\n json: function json(formData) {\n return window.JSON.parse(formData);\n }\n };\n\n opts.formData = setData[opts.dataType](opts.formData) || false;\n })();\n\n /**\n * Generate preview markup\n * @param {object} fieldData\n * @return {string} preview markup for field\n */\n _helpers.fieldRender = function (fieldData) {\n var fieldMarkup = '',\n fieldLabel = '',\n optionsMarkup = '',\n fieldLabelText = fieldData.label || '',\n fieldDesc = fieldData.description || '',\n fieldRequired = '',\n fieldOptions = fieldData.values || [];\n fieldData.id = fieldData.name;\n\n fieldData.type = fieldData.subtype || fieldData.type;\n\n if (fieldData.required) {\n fieldData.required = null;\n fieldData['aria-required'] = 'true';\n fieldRequired = '*';\n }\n\n if (fieldData.type !== 'hidden') {\n if (fieldDesc) {\n fieldDesc = '?';\n }\n fieldLabel = '';\n }\n\n var fieldLabelVal = fieldData.label;\n\n delete fieldData.label;\n delete fieldData.description;\n\n var fieldDataString = utils.attrString(fieldData);\n\n switch (fieldData.type) {\n case 'textarea':\n case 'rich-text':\n delete fieldData.type;\n var fieldVal = fieldData.value || '';\n fieldMarkup = fieldLabel + '';\n break;\n case 'select':\n var optionAttrsString;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n for (var _i = 0; _i < fieldOptions.length; _i++) {\n if (!fieldOptions[_i].selected) {\n delete fieldOptions[_i].selected;\n }\n optionAttrsString = utils.attrString(fieldOptions[_i]);\n optionsMarkup += '';\n }\n }\n\n fieldMarkup = fieldLabel + '';\n break;\n case 'checkbox-group':\n case 'radio-group':\n var optionAttrs = void 0;\n fieldData.type = fieldData.type.replace('-group', '');\n\n if (fieldOptions) {\n var optionName = fieldData.type === 'checkbox' ? fieldData.name + '[]' : fieldData.name,\n _optionAttrsString = void 0;\n\n for (var _i2 = 0; _i2 < fieldOptions.length; _i2++) {\n optionAttrs = Object.assign({}, fieldData, fieldOptions[_i2]);\n\n if (optionAttrs.selected) {\n delete optionAttrs.selected;\n optionAttrs.checked = null;\n }\n\n optionAttrs.name = optionName;\n optionAttrs.id = fieldData.id + '-' + _i2;\n _optionAttrsString = utils.attrString(optionAttrs);\n optionsMarkup += '
          ';\n }\n\n if (fieldData.enableOther || fieldData['enable-other']) {\n var otherOptionAttrs = {\n id: fieldData.id + '-' + 'other',\n className: (fieldData.class || fieldData.className) + ' other-option'\n };\n\n _optionAttrsString = utils.attrString(Object.assign({}, fieldData, otherOptionAttrs));\n\n optionsMarkup += ' ';\n }\n }\n fieldMarkup = fieldLabel + '
          ' + optionsMarkup + '
          ';\n break;\n case 'text':\n case 'password':\n case 'email':\n case 'number':\n case 'file':\n case 'hidden':\n case 'date':\n case 'autocomplete':\n fieldMarkup = fieldLabel + ' ';\n break;\n case 'color':\n fieldMarkup = fieldLabel + ' ' + opts.label.selectColor;\n break;\n case 'button':\n case 'submit':\n fieldMarkup = '';\n break;\n case 'checkbox':\n fieldMarkup = ' ' + fieldLabel;\n\n if (fieldData.toggle) {\n setTimeout(function () {\n $(document.getElementById(fieldData.id)).kcToggle();\n }, 100);\n }\n break;\n default:\n fieldMarkup = '<' + fieldData.type + ' ' + fieldDataString + '>' + fieldLabelVal + '';\n }\n\n if (fieldData.type !== 'hidden') {\n var className = fieldData.id ? 'form-group field-' + fieldData.id : '';\n fieldMarkup = utils.markup('div', fieldMarkup, {\n className: className\n });\n } else {\n fieldMarkup = utils.markup('input', null, fieldData);\n }\n\n return fieldMarkup;\n };\n\n /**\n * Extend Element prototype to allow us to append fields\n *\n * @param {object} fields Node elements\n */\n Element.prototype.appendFormFields = function (fields) {\n var element = this;\n fields.reverse();\n for (var i = fields.length - 1; i >= 0; i--) {\n element.appendChild(fields[i]);\n }\n };\n\n /**\n * Extend Element prototype to remove content\n */\n Element.prototype.emptyContainer = function () {\n var element = this;\n while (element.lastChild) {\n element.removeChild(element.lastChild);\n }\n };\n\n var otherOptionCB = function otherOptionCB() {\n var otherOptions = document.getElementsByClassName('other-option');\n\n var _loop = function _loop() {\n var otherInput = document.getElementById(otherOptions[i].id + '-value');\n otherOptions[i].onclick = function () {\n var option = this;\n if (this.checked) {\n otherInput.style.display = 'inline-block';\n option.nextElementSibling.style.display = 'none';\n otherInput.oninput = function () {\n option.value = this.value;\n };\n } else {\n otherInput.style.display = 'none';\n option.nextElementSibling.style.display = 'inline-block';\n otherInput.oninput = undefined;\n }\n };\n };\n\n for (var i = 0; i < otherOptions.length; i++) {\n _loop();\n }\n };\n\n var runCallbacks = function runCallbacks() {\n otherOptionCB();\n };\n\n // Begin the core plugin\n var rendered = [];\n\n // generate field markup if we have fields\n if (opts.formData) {\n for (var i = 0; i < opts.formData.length; i++) {\n rendered.push(_helpers.fieldRender(opts.formData[i]));\n }\n\n if (opts.render) {\n if (opts.container) {\n var renderedFormWrap = utils.markup('div', rendered, { className: 'rendered-form' });\n opts.container = opts.container instanceof jQuery ? opts.container[0] : opts.container;\n opts.container.emptyContainer();\n opts.container.appendChild(renderedFormWrap);\n } else if (element) {\n element.emptyContainer();\n element.appendFormFields(rendered);\n }\n\n runCallbacks();\n opts.notify.success(opts.label.formRendered);\n } else {\n formRender.markup = rendered.map(function (elem) {\n return elem.innerHTML;\n }).join('');\n }\n } else {\n var noData = utils.markup('div', opts.label.noFormData, {\n className: 'no-form-data'\n });\n rendered.push(noData);\n opts.notify.error(opts.label.noFormData);\n }\n\n return formRender;\n}\n\n(function ($) {\n\n $.fn.formRender = function (options) {\n this.each(function () {\n var formRender = new FormRenderFn(options, this);\n return formRender;\n });\n };\n})(jQuery);","'use strict';\n\nconst fbUtils = {};\n\n// cleaner syntax for testing indexOf element\nfbUtils.inArray = function(needle, haystack) {\n return haystack.indexOf(needle) !== -1;\n};\n\n// Remove null or undefined values\nfbUtils.trimObj = function(attrs) {\n let xmlRemove = [\n null,\n undefined,\n '',\n false\n ];\n for (var i in attrs) {\n if (fbUtils.inArray(attrs[i], xmlRemove)) {\n delete attrs[i];\n }\n }\n return attrs;\n};\n\n\n/**\n * Make an ID for this element using current date and tag\n *\n * @param {Boolean} element\n * @return {String} new id for element\n */\nfbUtils.makeId = function(element = false) {\n let epoch = new Date().getTime();\n\n return `${element.tagName}-${epoch}`;\n};\n\nfbUtils.validAttr = function(attr) {\n let invalid = [\n 'values',\n 'enableOther',\n 'other',\n 'label',\n 'style',\n 'subtype'\n ];\n return !fbUtils.inArray(attr, invalid);\n};\n\n/**\n * Convert an attrs object into a string\n *\n * @param {Object} attrs object of attributes for markup\n * @return {string}\n */\nfbUtils.attrString = function(attrs) {\n let attributes = [];\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr) && fbUtils.validAttr(attr)) {\n attr = fbUtils.safeAttr(attr, attrs[attr]);\n attributes.push(attr.name + attr.value);\n }\n }\n return attributes.join(' ');\n};\n\nfbUtils.safeAttr = function(name, value) {\n name = fbUtils.safeAttrName(name);\n\n let valString = window.JSON.stringify(fbUtils.escapeAttr(value));\n\n value = value ? `=${valString}` : '';\n return {\n name,\n value\n };\n};\n\nfbUtils.safeAttrName = function(name) {\n let safeAttr = {\n className: 'class'\n };\n\n return safeAttr[name] || fbUtils.hyphenCase(name);\n};\n\n/**\n * Convert strings\n into lowercase-hyphen\n *\n * @param {string} str\n * @return {string}\n */\nfbUtils.hyphenCase = (str) => {\n str = str.replace(/[^\\w\\s\\-]/gi, '');\n str = str.replace(/([A-Z])/g, function($1) {\n return '-' + $1.toLowerCase();\n });\n\n return str.replace(/\\s/g, '-').replace(/^-+/g, '');\n};\n\n/**\n * convert a hyphenated string to camelCase\n * @param {String} str\n * @return {String}\n */\nfbUtils.camelCase = (str) => {\n return str.replace(/-([a-z])/g, function(m, w) {\n m = m;\n return w.toUpperCase();\n });\n};\n\n/**\n * Generate markup wrapper where needed\n *\n * @param {string} tag\n * @param {String|Array|Object} content we wrap this\n * @param {object} attrs\n * @return {String}\n */\nfbUtils.markup = function(tag, content = '', attrs = {}) {\n let contentType,\n field = document.createElement(tag),\n getContentType = function(content) {\n return Array.isArray(content) ? 'array' : typeof content;\n },\n appendContent = {\n string: function(content) {\n field.innerHTML = content;\n },\n object: function(content) {\n return field.appendChild(content);\n },\n array: function(content) {\n for (var i = 0; i < content.length; i++) {\n contentType = getContentType(content[i]);\n appendContent[contentType](content[i]);\n }\n }\n };\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n let name = fbUtils.safeAttrName(attr);\n field.setAttribute(name, attrs[attr]);\n }\n }\n\n contentType = getContentType(content);\n\n if (content) {\n appendContent[contentType].call(this, content);\n }\n\n return field;\n};\n\nfbUtils.parseAttrs = function(elem) {\n var attrs = elem.attributes;\n var data = {};\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n data[attrs[attr].name] = attrs[attr].value;\n }\n }\n\n return data;\n};\n\nfbUtils.parseOptions = function(field) {\n let options = field.getElementsByTagName('option'),\n optionData = {},\n data = [];\n\n if (options.length) {\n for (var i = 0; i < options.length; i++) {\n optionData = fbUtils.parseAttrs(options[i]);\n optionData.label = options[i].textContent;\n data.push(optionData);\n }\n }\n\n return data;\n};\n\nfbUtils.parseXML = function(xmlString) {\n const parser = new window.DOMParser();\n let xml = parser.parseFromString(xmlString, 'text/xml'),\n formData = [];\n\n if (xml) {\n var fields = xml.getElementsByTagName('field');\n for (var i = 0; i < fields.length; i++) {\n let fieldData = fbUtils.parseAttrs(fields[i]);\n fieldData.values = fbUtils.parseOptions(fields[i]);\n formData.push(fieldData);\n }\n }\n\n return formData;\n};\n\nfbUtils.escapeHtml = function(html) {\n var escapeElement = document.createElement('textarea');\n escapeElement.textContent = html;\n return escapeElement.innerHTML;\n};\n\n\n\nfbUtils.escapeAttr = function(str) {\n var match = {\n '\"': '"',\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n function replaceTag(tag) {\n return match[tag] || tag;\n }\n\n return (typeof str === 'string') ? str.replace(/[\"&<>]/g, replaceTag) : str;\n};\n\n// Remove null or undefined values\nfbUtils.escapeAttrs = function(attrs) {\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n attrs[attr] = fbUtils.escapeAttr(attrs[attr]);\n }\n }\n\n return attrs;\n};\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/form-builder.js b/dist/form-builder.js index 6fc28662b..78eefc84e 100644 --- a/dist/form-builder.js +++ b/dist/form-builder.js @@ -1287,6 +1287,15 @@ function formBuilderHelpersFn(opts, formBuilder) { }); }; + _helpers.showXML = function () { + + var data = utils.escapeHtml(formBuilder.formData), + code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), + pre = utils.markup('pre', code); + + _helpers.dialog(pre, null, 'data-dialog'); + }; + return _helpers; } 'use strict'; @@ -1380,6 +1389,7 @@ function formBuilderEventsFn() { // type: 'text' // }], defaultFields: [], + showControls: true, fieldRemoveWarn: false, roles: { 1: 'Administrator' @@ -1674,25 +1684,27 @@ function formBuilderEventsFn() { var viewDataText = opts.dataType === 'xml' ? opts.messages.viewXML : opts.messages.viewJSON; - // Build our headers and action links - var viewData = utils.markup('button', viewDataText, { - id: frmbID + '-view-data', - type: 'button', - className: 'view-data btn btn-default' - }), - clearAll = utils.markup('button', opts.messages.clearAll, { - id: frmbID + '-clear-all', - type: 'button', - className: 'clear-all btn btn-default' - }), - saveAll = utils.markup('button', opts.messages.save, { - className: 'btn btn-primary ' + opts.prefix + 'save', - id: frmbID + '-save', - type: 'button' - }), - formActions = utils.markup('div', [clearAll, viewData, saveAll], { - className: 'form-actions btn-group' - }); + if (opts.showControls) { + // Build our headers and action links + var viewData = utils.markup('button', viewDataText, { + id: frmbID + '-view-data', + type: 'button', + className: 'view-data btn btn-default' + }), + clearAll = utils.markup('button', opts.messages.clearAll, { + id: frmbID + '-clear-all', + type: 'button', + className: 'clear-all btn btn-default' + }), + saveAll = utils.markup('button', opts.messages.save, { + className: 'btn btn-primary ' + opts.prefix + 'save', + id: frmbID + '-save', + type: 'button' + }), + formActions = utils.markup('div', [clearAll, viewData, saveAll], { + className: 'form-actions btn-group' + }); + } // Sortable fields $sortableFields.sortable({ @@ -2494,44 +2506,43 @@ function formBuilderEventsFn() { $(this).parents('li:eq(0)').toggleClass('delete'); }); - // View XML - var xmlButton = $(document.getElementById(frmbID + '-view-data')); - xmlButton.click(function (e) { - e.preventDefault(); - var data = utils.escapeHtml(formBuilder.formData), - code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), - pre = utils.markup('pre', code); - _helpers.dialog(pre, null, 'data-dialog'); - }); + if (opts.showControls) { + // View XML + var xmlButton = $(document.getElementById(frmbID + '-view-data')); + xmlButton.click(function (e) { + e.preventDefault(); + _helpers.showXML(); + }); - // Clear all fields in form editor - var clearButton = $(document.getElementById(frmbID + '-clear-all')); - clearButton.click(function () { - var fields = $('li.form-field'); - var buttonPosition = this.getBoundingClientRect(), - bodyRect = document.body.getBoundingClientRect(), - coords = { - pageX: buttonPosition.left + buttonPosition.width / 2, - pageY: buttonPosition.top - bodyRect.top - 12 - }; + // Clear all fields in form editor + var clearButton = $(document.getElementById(frmbID + '-clear-all')); + clearButton.click(function () { + var fields = $('li.form-field'); + var buttonPosition = this.getBoundingClientRect(), + bodyRect = document.body.getBoundingClientRect(), + coords = { + pageX: buttonPosition.left + buttonPosition.width / 2, + pageY: buttonPosition.top - bodyRect.top - 12 + }; - if (fields.length) { - _helpers.confirm(opts.messages.clearAllMessage, function () { - _helpers.removeAllfields(); - opts.notify.success(opts.messages.allFieldsRemoved); - _helpers.save(); - }, coords); - } else { - _helpers.dialog('There are no fields to clear', { pageX: coords.pageX, pageY: coords.pageY }); - } - }); + if (fields.length) { + _helpers.confirm(opts.messages.clearAllMessage, function () { + _helpers.removeAllfields(); + opts.notify.success(opts.messages.allFieldsRemoved); + _helpers.save(); + }, coords); + } else { + _helpers.dialog('There are no fields to clear', { pageX: coords.pageX, pageY: coords.pageY }); + } + }); - // Save Idea Template - $(document.getElementById(frmbID + '-save')).click(function (e) { - e.preventDefault(); - _helpers.save(); - _helpers.validateForm(e); - }); + // Save Idea Template + $(document.getElementById(frmbID + '-save')).click(function (e) { + e.preventDefault(); + _helpers.save(); + _helpers.validateForm(e); + }); + } _helpers.getData(); loadFields(); @@ -2548,6 +2559,7 @@ function formBuilderEventsFn() { // Make some actions accessible formBuilder.actions = { clearFields: _helpers.removeAllfields, + showXML: _helpers.showXML, save: _helpers.save }; diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 352749fea..551ac6de8 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -3,5 +3,5 @@ formBuilder - https://formbuilder.online/ Version: 1.16.0 Author: Kevin Chappell */ -"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n "];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null," ")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(-1===t.indexOf("ui-sortable-handle")){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
          "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
          "+b.outerHTML+'
          '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(d>c||c===d&&o.top>e)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
          ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
          '+l.labels.on+"
          ",o='
          '+l.labels.off+"
          ",i='
          ',c='
          '+n+i+o+"
          ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
            ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
          • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON,y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return i.doCancel?!1:(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
            ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
            ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
            ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?$(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var $=function(e){var t=(new Date).getTime();return e.type+"-"+t},D=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
            ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
              ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return-1!==s.indexOf(e.type)}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return-1===t.indexOf(e.type)}(),o=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),-1===i.indexOf(e.type)&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),n&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
              "),X.push(' "),X.push('
              ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",X.push('
              "));if(X.push("
              "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
              ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
              ")}return l&&X.push(D(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
              '+n.join("")+"
              "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
              '+n+" "+W+"
              "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='', -l+='
              ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
              ",l='
              '+n+" "+l+"
              "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
              "+Y+"
              "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
              '+v+" "+m+"
              "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
              ',u+='
              ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
              ",u+="
              ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;2>=s?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")});var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault();var t=c.escapeHtml(s.formData),a=c.markup("code",t,{className:"formData-"+r.dataType}),l=c.markup("pre",a);i.dialog(l,null,"data-dialog")});var R=e(document.getElementById(n+"-clear-all"));return R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)}),i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); \ No newline at end of file +"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,o=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&o.push(!0),e.prepend&&o.push(0===a.stopIndex),e.append&&o.push(a.stopIndex+1===r),a.doCancel=o.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var o=a.values,n=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var o,n;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),o&&(e.style=o[1]),e=s.trimObj(e),e=s.escapeAttrs(e),n=e.type.match(/(select|checkbox-group|radio-group)/),n&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),o=$(".prev-holder",e),n={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);n[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(n.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n=s.trimObj(n),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),l=a.fieldPreview(n),o.html(l),$("input[toggle]",o).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var o=t.toggle?"toggle":"",n=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
              "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
              "+b.outerHTML+'
              '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:n=s.attrString(t),l="<"+t.type+" "+n+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,o=function(){t=null,s||e.apply(l,r)},n=s&&!t;clearTimeout(t),t=setTimeout(o,a),n&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],o=void 0;for(o=r.length-1;o>=0;o--)r=r.concat(e.messages.subtypes[r[o]]);l=l.concat(r);var n=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(o=d.length-1;o>=0;o--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[o].match(m);f&&d.splice(o,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),o=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var o=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(o)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var o={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},n=a.offset(),i=s.offset(),c=n.top+a.height(),d=i.top+s.height();c>d&&n.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(o)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),o=s.markup("pre",r);a.dialog(o,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
              ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var o='
              '+l.labels.on+"
              ",n='
              '+l.labels.off+"
              ",i='
              ',c='
              '+o+i+n+"
              ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],showControls:!0,fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),o="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=o,s.element=a;var n=e("
                ").attr("id",o).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=o+"-fld-1",u=o+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
              • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showControls)var y=c.markup("button",b,{id:o+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:o+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:o+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});n.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:n,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===n[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                ",{id:o+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                ",{id:o+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                ",{id:o+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(n,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});n.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",n).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),n.prepend(a)}if(r.append&&!e(".disabled.append",n).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),n.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var o=r.length-1;o>=0;o--)s[r[o].name]=r[o].value}}else s=t;s.name=a?M(s):s.name,s.className=s.className||s["class"];var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);n&&(s.style=n[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",n).each(function(){i.updatePreview(e(this))}),A()};n.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),n.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),n.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var M=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function X(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),X="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(X+='",X+='
                ',"select"===e.type){var s={second:r.messages.selectionsMessage};X+=L("multiple",e,s)}for(X+='
                  ',v=0;v",c.markup("div",X,{className:"form-group field-options"}).outerHTML},D=function z(e){var t,z=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),o=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),n=void 0!==e.role?e.role.split(","):[];z.push(q(e)),"checkbox"===e.type&&z.push(L("toggle",e,{first:r.messages.toggle})),z.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&z.push(j("description",e)),z.push(F(e)),"button"===e.type&&z.push(U(e.style,e.type)),"number"===e.type&&(z.push(I("min",e)),z.push(I("max",e)),z.push(I("step",e))),z.push(j("placeholder",e)),z.push(j("className",e)),z.push(j("name",e)),o&&z.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};z.push(L("multiple",e,u))}z.push('
                  "),z.push(' "),z.push('
                  ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,n)?"checked":"",z.push('
                  "));if(z.push("
                  "),"checkbox-group"===e.type||"radio-group"===e.type){z.push('
                  ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),z.push('
                  ")}return l&&z.push($(e)),z.push(j("maxlength",e)),z.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',o=[r];return a.first&&o.unshift(s(a.first)),a.second&&o.push(s(a.second)),'
                  '+o.join("")+"
                  "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var o="";W+='",W='
                  '+o+" "+W+"
                  "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var o="";l+='',l+='
                  ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var o=e===s?"active":"";l+='"}),l+="
                  ",l='
                  '+o+" "+l+"
                  "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                  "+Y+"
                  "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],o=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],n=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),o=o.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,o)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                  '+v+" "+m+"
                  "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),o=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[o,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                  ',u+='
                  ',u+=D(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                  ",u+="
                  ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",n).eq(i.stopIndex).after(f):n.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(n),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],o=[];t=t||{selected:!1,label:"",value:""};for(var n=l.length-1;n>=0;n--){var i=l[n];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),o.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};o.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",o);return p.outerHTML};if(n.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),n.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),n.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),n.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),n.delegate("input.error","keyup",function(){e(this).removeClass("error")}),n.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),n.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),n.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),n.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},o=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(o)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),n[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),n.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),n.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),n.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),n.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var o=l.attr("name");e(".sortable-options",a).append(P(o,!1,r)),i.updateMultipleSelect()}),n.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showControls){var H=e(document.getElementById(o+"-view-data"));H.click(function(e){e.preventDefault(),i.showXML()});var R=e(document.getElementById(o+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(o+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),n.css("min-height",f.height()),r.stickyControls&&i.stickyControls(n,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showXML:i.showXML,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); \ No newline at end of file diff --git a/dist/form-render.min.js b/dist/form-render.min.js index 51eb5d99c..143209963 100644 --- a/dist/form-render.min.js +++ b/dist/form-render.min.js @@ -3,4 +3,4 @@ formBuilder - https://formbuilder.online/ Version: 1.16.0 Author: Kevin Chappell */ -"use strict";function FormRenderFn(e,t){var n=fbUtils,r=this,a={destroyTemplate:!0,container:!1,dataType:"xml",formData:!1,label:{formRendered:"Form Rendered",noFormData:"No form data.",other:"Other",selectColor:"Select Color"},render:!0,notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}}},i={},o=$.extend(!0,a,e);!function(){if(!o.formData)return!1;var e={xml:function(e){return n.parseXML(e)},json:function(e){return window.JSON.parse(e)}};o.formData=e[o.dataType](o.formData)||!1}(),i.fieldRender=function(e){var t="",r="",a="",i=e.label||"",l=e.description||"",s="",c=e.values||[];e.id=e.name,e.type=e.subtype||e.type,e.required&&(e.required=null,e["aria-required"]="true",s='*'),"hidden"!==e.type&&(l&&(l='?'),r='");var f=e.label;delete e.label,delete e.description;var u=n.attrString(e);switch(e.type){case"textarea":case"rich-text":delete e.type;var d=e.value||"";t=r+"";break;case"select":var p;if(e.type=e.type.replace("-group",""),c)for(var v=0;v"+c[v].label+"";t=r+"";break;case"checkbox-group":case"radio-group":var m=void 0;if(e.type=e.type.replace("-group",""),c){for(var b="checkbox"===e.type?e.name+"[]":e.name,y=void 0,h=0;h
                  ";if(e.enableOther||e["enable-other"]){var g={id:e.id+"-other",className:(e["class"]||e.className)+" other-option"};y=n.attrString(Object.assign({},e,g)),a+=" '}}t=r+'
                  '+a+"
                  ";break;case"text":case"password":case"email":case"number":case"file":case"hidden":case"date":case"autocomplete":t=r+" ";break;case"color":t=r+" "+o.label.selectColor;break;case"button":case"submit":t="";break;case"checkbox":t=" "+r,e.toggle&&setTimeout(function(){$(document.getElementById(e.id)).kcToggle()},100);break;default:t="<"+e.type+" "+u+">"+f+""}if("hidden"!==e.type){var k=e.id?"form-group field-"+e.id:"";t=n.markup("div",t,{className:k})}else t=n.markup("input",null,e);return t},Element.prototype.appendFormFields=function(e){var t=this;e.reverse();for(var n=e.length-1;n>=0;n--)t.appendChild(e[n])},Element.prototype.emptyContainer=function(){for(var e=this;e.lastChild;)e.removeChild(e.lastChild)};var l=function(){for(var e=document.getElementsByClassName("other-option"),t=function(){var t=document.getElementById(e[n].id+"-value");e[n].onclick=function(){var e=this;this.checked?(t.style.display="inline-block",e.nextElementSibling.style.display="none",t.oninput=function(){e.value=this.value}):(t.style.display="none",e.nextElementSibling.style.display="inline-block",t.oninput=void 0)}},n=0;n').insertAfter(t).append(t);i.toggleClass("on",t.is(":checked"));var o='
                  '+a.labels.on+"
                  ",l='
                  '+a.labels.off+"
                  ",s='
                  ',c='
                  '+o+s+l+"
                  ";i.append(c),i.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(n){var r=this;return r.each(function(){var r=e(this);if(!r.data("kcToggle")){var a=new t(r,n);r.data("kcToggle",a)}})}}(jQuery);var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},fbUtils={};fbUtils.inArray=function(e,t){return-1!==t.indexOf(e)},fbUtils.trimObj=function(e){var t=[null,void 0,"",!1];for(var n in e)fbUtils.inArray(e[n],t)&&delete e[n];return e},fbUtils.makeId=function(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},fbUtils.validAttr=function(e){var t=["values","enableOther","other","label","style","subtype"];return!fbUtils.inArray(e,t)},fbUtils.attrString=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&fbUtils.validAttr(n)&&(n=fbUtils.safeAttr(n,e[n]),t.push(n.name+n.value));return t.join(" ")},fbUtils.safeAttr=function(e,t){e=fbUtils.safeAttrName(e);var n=window.JSON.stringify(fbUtils.escapeAttr(t));return t=t?"="+n:"",{name:e,value:t}},fbUtils.safeAttrName=function(e){var t={className:"class"};return t[e]||fbUtils.hyphenCase(e)},fbUtils.hyphenCase=function(e){return e=e.replace(/[^\w\s\-]/gi,""),e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},fbUtils.camelCase=function(e){return e.replace(/-([a-z])/g,function(e,t){return e=e,t.toUpperCase()})},fbUtils.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=void 0,a=document.createElement(e),i=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){a.innerHTML=e},object:function(e){return a.appendChild(e)},array:function(e){for(var t=0;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e},function(e){e.fn.formRender=function(e){this.each(function(){var t=new FormRenderFn(e,this);return t})}}(jQuery); \ No newline at end of file +"use strict";function FormRenderFn(e,t){var n=fbUtils,r=this,a={destroyTemplate:!0,container:!1,dataType:"xml",formData:!1,label:{formRendered:"Form Rendered",noFormData:"No form data.",other:"Other",selectColor:"Select Color"},render:!0,notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}}},i={},o=$.extend(!0,a,e);!function(){if(!o.formData)return!1;var e={xml:function(e){return n.parseXML(e)},json:function(e){return window.JSON.parse(e)}};o.formData=e[o.dataType](o.formData)||!1}(),i.fieldRender=function(e){var t="",r="",a="",i=e.label||"",l=e.description||"",s="",c=e.values||[];e.id=e.name,e.type=e.subtype||e.type,e.required&&(e.required=null,e["aria-required"]="true",s='*'),"hidden"!==e.type&&(l&&(l='?'),r='");var f=e.label;delete e.label,delete e.description;var u=n.attrString(e);switch(e.type){case"textarea":case"rich-text":delete e.type;var d=e.value||"";t=r+"";break;case"select":var p;if(e.type=e.type.replace("-group",""),c)for(var v=0;v"+c[v].label+"";t=r+"";break;case"checkbox-group":case"radio-group":var m=void 0;if(e.type=e.type.replace("-group",""),c){for(var b="checkbox"===e.type?e.name+"[]":e.name,y=void 0,h=0;h
                  ";if(e.enableOther||e["enable-other"]){var g={id:e.id+"-other",className:(e["class"]||e.className)+" other-option"};y=n.attrString(Object.assign({},e,g)),a+=" '}}t=r+'
                  '+a+"
                  ";break;case"text":case"password":case"email":case"number":case"file":case"hidden":case"date":case"autocomplete":t=r+" ";break;case"color":t=r+" "+o.label.selectColor;break;case"button":case"submit":t="";break;case"checkbox":t=" "+r,e.toggle&&setTimeout(function(){$(document.getElementById(e.id)).kcToggle()},100);break;default:t="<"+e.type+" "+u+">"+f+""}if("hidden"!==e.type){var k=e.id?"form-group field-"+e.id:"";t=n.markup("div",t,{className:k})}else t=n.markup("input",null,e);return t},Element.prototype.appendFormFields=function(e){var t=this;e.reverse();for(var n=e.length-1;n>=0;n--)t.appendChild(e[n])},Element.prototype.emptyContainer=function(){for(var e=this;e.lastChild;)e.removeChild(e.lastChild)};var l=function(){for(var e=document.getElementsByClassName("other-option"),t=function(){var t=document.getElementById(e[n].id+"-value");e[n].onclick=function(){var e=this;this.checked?(t.style.display="inline-block",e.nextElementSibling.style.display="none",t.oninput=function(){e.value=this.value}):(t.style.display="none",e.nextElementSibling.style.display="inline-block",t.oninput=void 0)}},n=0;n').insertAfter(t).append(t);i.toggleClass("on",t.is(":checked"));var o='
                  '+a.labels.on+"
                  ",l='
                  '+a.labels.off+"
                  ",s='
                  ',c='
                  '+o+s+l+"
                  ";i.append(c),i.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(n){var r=this;return r.each(function(){var r=e(this);if(!r.data("kcToggle")){var a=new t(r,n);r.data("kcToggle",a)}})}}(jQuery);var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},fbUtils={};fbUtils.inArray=function(e,t){return t.indexOf(e)!==-1},fbUtils.trimObj=function(e){var t=[null,void 0,"",!1];for(var n in e)fbUtils.inArray(e[n],t)&&delete e[n];return e},fbUtils.makeId=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0],t=(new Date).getTime();return e.tagName+"-"+t},fbUtils.validAttr=function(e){var t=["values","enableOther","other","label","style","subtype"];return!fbUtils.inArray(e,t)},fbUtils.attrString=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&fbUtils.validAttr(n)&&(n=fbUtils.safeAttr(n,e[n]),t.push(n.name+n.value));return t.join(" ")},fbUtils.safeAttr=function(e,t){e=fbUtils.safeAttrName(e);var n=window.JSON.stringify(fbUtils.escapeAttr(t));return t=t?"="+n:"",{name:e,value:t}},fbUtils.safeAttrName=function(e){var t={className:"class"};return t[e]||fbUtils.hyphenCase(e)},fbUtils.hyphenCase=function(e){return e=e.replace(/[^\w\s\-]/gi,""),e=e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}),e.replace(/\s/g,"-").replace(/^-+/g,"")},fbUtils.camelCase=function(e){return e.replace(/-([a-z])/g,function(e,t){return e=e,t.toUpperCase()})},fbUtils.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=void 0,a=document.createElement(e),i=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){a.innerHTML=e},object:function(e){return a.appendChild(e)},array:function(e){for(var t=0;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e},function(e){e.fn.formRender=function(e){this.each(function(){var t=new FormRenderFn(e,this);return t})}}(jQuery); \ No newline at end of file diff --git a/docs/formBuilder/options/showCommandButtons.md b/docs/formBuilder/options/showCommandButtons.md new file mode 100644 index 000000000..2ea6e5fd1 --- /dev/null +++ b/docs/formBuilder/options/showCommandButtons.md @@ -0,0 +1,10 @@ +# showCommandButtons +When the option `showCommandButtons` is set to false, the buttons for clearing the form controls, previewing the code and saving the form are not shown. By default the buttons are visible. + +## Usage +```javascript +var options = { + showCommandButtons: false + }; +$(container).formBuilder(options); +``` diff --git a/src/js/form-builder.js b/src/js/form-builder.js index 33abd5309..ee883372c 100644 --- a/src/js/form-builder.js +++ b/src/js/form-builder.js @@ -192,6 +192,7 @@ }, sortableControls: false, stickyControls: false, + showCommandButtons: true, prefix: 'form-builder-' }; @@ -356,25 +357,27 @@ let viewDataText = opts.dataType === 'xml' ? opts.messages.viewXML : opts.messages.viewJSON; - // Build our headers and action links - var viewData = utils.markup('button', viewDataText, { - id: frmbID + '-view-data', - type: 'button', - className: 'view-data btn btn-default' - }), - clearAll = utils.markup('button', opts.messages.clearAll, { - id: frmbID + '-clear-all', - type: 'button', - className: 'clear-all btn btn-default' - }), - saveAll = utils.markup('button', opts.messages.save, { - className: `btn btn-primary ${opts.prefix}save`, - id: frmbID + '-save', - type: 'button' - }), - formActions = utils.markup('div', [clearAll, viewData, saveAll], { - className: 'form-actions btn-group' + if (opts.showCommandButtons) { + // Build our headers and action links + var viewData = utils.markup('button', viewDataText, { + id: frmbID + '-view-data', + type: 'button', + className: 'view-data btn btn-default' + }), + clearAll = utils.markup('button', opts.messages.clearAll, { + id: frmbID + '-clear-all', + type: 'button', + className: 'clear-all btn btn-default' + }), + saveAll = utils.markup('button', opts.messages.save, { + className: `btn btn-primary ${opts.prefix}save`, + id: frmbID + '-save', + type: 'button' + }), + formActions = utils.markup('div', [clearAll, viewData, saveAll], { + className: 'form-actions btn-group' }); + } // Sortable fields $sortableFields.sortable({ @@ -1205,44 +1208,47 @@ $(this).parents('li:eq(0)').toggleClass('delete'); }); - // View XML - var xmlButton = $(document.getElementById(frmbID + '-view-data')); - xmlButton.click(function(e) { - e.preventDefault(); - var data = utils.escapeHtml(formBuilder.formData), - code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), - pre = utils.markup('pre', code); - _helpers.dialog(pre, null, 'data-dialog'); - }); - // Clear all fields in form editor - var clearButton = $(document.getElementById(frmbID + '-clear-all')); - clearButton.click(function() { - let fields = $('li.form-field'); - let buttonPosition = this.getBoundingClientRect(), - bodyRect = document.body.getBoundingClientRect(), - coords = { - pageX: buttonPosition.left + (buttonPosition.width / 2), - pageY: (buttonPosition.top - bodyRect.top) - 12 - }; + if(opts.showCommandButtons) { + // View XML + var xmlButton = $(document.getElementById(frmbID + '-view-data')); + xmlButton.click(function(e) { + e.preventDefault(); + var data = utils.escapeHtml(formBuilder.formData), + code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), + pre = utils.markup('pre', code); + _helpers.dialog(pre, null, 'data-dialog'); + }); - if (fields.length) { - _helpers.confirm(opts.messages.clearAllMessage, function() { - _helpers.removeAllfields(); - opts.notify.success(opts.messages.allFieldsRemoved); - _helpers.save(); - }, coords); - } else { - _helpers.dialog('There are no fields to clear', { pageX: coords.pageX, pageY: coords.pageY }); - } - }); + // Clear all fields in form editor + var clearButton = $(document.getElementById(frmbID + '-clear-all')); + clearButton.click(function() { + let fields = $('li.form-field'); + let buttonPosition = this.getBoundingClientRect(), + bodyRect = document.body.getBoundingClientRect(), + coords = { + pageX: buttonPosition.left + (buttonPosition.width / 2), + pageY: (buttonPosition.top - bodyRect.top) - 12 + }; - // Save Idea Template - $(document.getElementById(frmbID + '-save')).click(function(e) { - e.preventDefault(); - _helpers.save(); - _helpers.validateForm(e); - }); + if (fields.length) { + _helpers.confirm(opts.messages.clearAllMessage, function() { + _helpers.removeAllfields(); + opts.notify.success(opts.messages.allFieldsRemoved); + _helpers.save(); + }, coords); + } else { + _helpers.dialog('There are no fields to clear', { pageX: coords.pageX, pageY: coords.pageY }); + } + }); + + // Save Idea Template + $(document.getElementById(frmbID + '-save')).click(function(e) { + e.preventDefault(); + _helpers.save(); + _helpers.validateForm(e); + }); + } _helpers.getData(); loadFields(); From 113b5430917c9b962dc53e16e76e0569b03c0124 Mon Sep 17 00:00:00 2001 From: Sebastian Rachner Date: Mon, 12 Sep 2016 13:44:27 +0200 Subject: [PATCH 2/3] Add helper for the showXML data dialog and export it as an action. --- demo/assets/js/form-builder.min.js | 4 ++-- src/js/form-builder.js | 6 ++---- src/js/helpers.js | 10 ++++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/demo/assets/js/form-builder.min.js b/demo/assets/js/form-builder.min.js index 41feba3e5..1c4b37e80 100644 --- a/demo/assets/js/form-builder.min.js +++ b/demo/assets/js/form-builder.min.js @@ -1,3 +1,3 @@ -"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,o=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&o.push(!0),e.prepend&&o.push(0===a.stopIndex),e.append&&o.push(a.stopIndex+1===r),a.doCancel=o.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var o=a.values,n=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var o,n;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),o&&(e.style=o[1]),e=s.trimObj(e),e=s.escapeAttrs(e),n=e.type.match(/(select|checkbox-group|radio-group)/),n&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),o=$(".prev-holder",e),n={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);n[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(n.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n=s.trimObj(n),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),l=a.fieldPreview(n),o.html(l),$("input[toggle]",o).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var o=t.toggle?"toggle":"",n=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                  "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                  "+b.outerHTML+'
                  '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:n=s.attrString(t),l="<"+t.type+" "+n+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,o=function(){t=null,s||e.apply(l,r)},n=s&&!t;clearTimeout(t),t=setTimeout(o,a),n&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],o=void 0;for(o=r.length-1;o>=0;o--)r=r.concat(e.messages.subtypes[r[o]]);l=l.concat(r);var n=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(o=d.length-1;o>=0;o--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[o].match(m);f&&d.splice(o,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),o=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var o=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(o)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var o={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},n=a.offset(),i=s.offset(),c=n.top+a.height(),d=i.top+s.height();c>d&&n.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(o)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),o=s.markup("pre",r);a.dialog(o,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                  ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var o='
                  '+l.labels.on+"
                  ",n='
                  '+l.labels.off+"
                  ",i='
                  ',c='
                  '+o+i+n+"
                  ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showCommandButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),o="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=o,s.element=a;var n=e("
                    ").attr("id",o).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=o+"-fld-1",u=o+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                  • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showCommandButtons)var y=c.markup("button",b,{id:o+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:o+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:o+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});n.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:n,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===n[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                    ",{id:o+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                    ",{id:o+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                    ",{id:o+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(n,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});n.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",n).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),n.prepend(a)}if(r.append&&!e(".disabled.append",n).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),n.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var o=r.length-1;o>=0;o--)s[r[o].name]=r[o].value}}else s=t;s.name=a?$(s):s.name,s.className=s.className||s["class"];var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);n&&(s.style=n[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",n).each(function(){i.updatePreview(e(this))}),A()};n.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),n.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),n.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var $=function(e){var t=(new Date).getTime();return e.type+"-"+t},D=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
                    ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
                      ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),o=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),n=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),o&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
                      "),X.push(' "),X.push('
                      ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,n)?"checked":"",X.push('
                      "));if(X.push("
                      "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
                      ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
                      ")}return l&&X.push(D(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',o=[r];return a.first&&o.unshift(s(a.first)),a.second&&o.push(s(a.second)),'
                      '+o.join("")+"
                      "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var o="";W+='",W='
                      '+o+" "+W+"
                      "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var o="";l+='',l+='
                      ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var o=e===s?"active":"";l+='"}),l+="
                      ",l='
                      '+o+" "+l+"
                      "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                      "+Y+"
                      "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],o=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],n=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),o=o.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,o)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                      '+v+" "+m+"
                      "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),o=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[o,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                      ',u+='
                      ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                      ",u+="
                      ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",n).eq(i.stopIndex).after(f):n.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(n),i.toggleEdit(d)),d=i.incrementId(d)},H=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],o=[];t=t||{selected:!1,label:"",value:""};for(var n=l.length-1;n>=0;n--){var i=l[n];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),o.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};o.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",o);return p.outerHTML};if(n.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),n.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),n.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),n.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),n.delegate("input.error","keyup",function(){e(this).removeClass("error")}),n.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),n.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),n.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),n.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},o=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(o)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),n[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),n.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),n.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),n.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),n.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var o=l.attr("name");e(".sortable-options",a).append(H(o,!1,r)),i.updateMultipleSelect()}),n.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showCommandButtons){var P=e(document.getElementById(o+"-view-data"));P.click(function(e){e.preventDefault();var t=c.escapeHtml(s.formData),a=c.markup("code",t,{className:"formData-"+r.dataType}),l=c.markup("pre",a);i.dialog(l,null,"data-dialog")});var R=e(document.getElementById(o+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(o+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),n.css("min-height",f.height()),r.stickyControls&&i.stickyControls(n,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); +"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                      "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                      "+b.outerHTML+'
                      '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),n=s.markup("pre",r);a.dialog(n,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                      ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
                      '+l.labels.on+"
                      ",o='
                      '+l.labels.off+"
                      ",i='
                      ',c='
                      '+n+i+o+"
                      ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showCommandButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
                        ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                      • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showCommandButtons)var y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                        ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                        ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                        ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?M(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var M=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function X(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),X="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(X+='",X+='
                        ',"select"===e.type){var s={second:r.messages.selectionsMessage};X+=L("multiple",e,s)}for(X+='
                          ',v=0;v",c.markup("div",X,{className:"form-group field-options"}).outerHTML},D=function z(e){var t,z=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),o=void 0!==e.role?e.role.split(","):[];z.push(q(e)),"checkbox"===e.type&&z.push(L("toggle",e,{first:r.messages.toggle})),z.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&z.push(j("description",e)),z.push(F(e)),"button"===e.type&&z.push(U(e.style,e.type)),"number"===e.type&&(z.push(I("min",e)),z.push(I("max",e)),z.push(I("step",e))),z.push(j("placeholder",e)),z.push(j("className",e)),z.push(j("name",e)),n&&z.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};z.push(L("multiple",e,u))}z.push('
                          "),z.push(' "),z.push('
                          ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",z.push('
                          "));if(z.push("
                          "),"checkbox-group"===e.type||"radio-group"===e.type){z.push('
                          ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),z.push('
                          ")}return l&&z.push($(e)),z.push(j("maxlength",e)),z.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
                          '+n.join("")+"
                          "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
                          '+n+" "+W+"
                          "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='',l+='
                          ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
                          ",l='
                          '+n+" "+l+"
                          "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                          "+Y+"
                          "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                          '+v+" "+m+"
                          "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                          ',u+='
                          ',u+=D(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                          ",u+="
                          ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};if(o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showCommandButtons){var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault(),i.showXML()});var R=e(document.getElementById(n+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showXML:i.showXML,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); //# sourceMappingURL=form-builder.min.js.map diff --git a/src/js/form-builder.js b/src/js/form-builder.js index ee883372c..0be21c13c 100644 --- a/src/js/form-builder.js +++ b/src/js/form-builder.js @@ -1214,10 +1214,7 @@ var xmlButton = $(document.getElementById(frmbID + '-view-data')); xmlButton.click(function(e) { e.preventDefault(); - var data = utils.escapeHtml(formBuilder.formData), - code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), - pre = utils.markup('pre', code); - _helpers.dialog(pre, null, 'data-dialog'); + _helpers.showXML(); }); // Clear all fields in form editor @@ -1265,6 +1262,7 @@ // Make some actions accessible formBuilder.actions = { clearFields: _helpers.removeAllfields, + showXML: _helpers.showXML, save: _helpers.save }; diff --git a/src/js/helpers.js b/src/js/helpers.js index 36595d135..3a576584e 100644 --- a/src/js/helpers.js +++ b/src/js/helpers.js @@ -981,5 +981,15 @@ function formBuilderHelpersFn(opts, formBuilder) { }; + _helpers.showXML = function() { + + var data = utils.escapeHtml(formBuilder.formData), + code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), + pre = utils.markup('pre', code); + + _helpers.dialog(pre, null, 'data-dialog'); + + }; + return _helpers; } From 5fa0b72a484bc5f561a13456ddcd7d32c11c694a Mon Sep 17 00:00:00 2001 From: Sebastian Rachner Date: Mon, 12 Sep 2016 15:24:59 +0200 Subject: [PATCH 3/3] Rename newly added option and helper method. * Renamed 'showCommandButtons' option to 'showActionButtons'. * Changed exported action and helper name from 'showXML' to 'showData'. --- README.md | 2 +- demo/assets/js/form-builder.min.js | 4 ++-- dist/form-builder.js | 12 ++++++------ dist/form-builder.min.js | 4 ++-- docs/formBuilder/options/showActionButtons.md | 10 ++++++++++ docs/formBuilder/options/showCommandButtons.md | 10 ---------- src/js/form-builder.js | 10 +++++----- src/js/helpers.js | 2 +- 8 files changed, 27 insertions(+), 27 deletions(-) create mode 100644 docs/formBuilder/options/showActionButtons.md delete mode 100644 docs/formBuilder/options/showCommandButtons.md diff --git a/README.md b/README.md index f35e785c8..bd1266bfa 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ jQuery(document).ready(function($) { | [notify](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/notify/) | {Object} | `{error: message => alert(message)}` | [See form-builder.js#L186](https://github.com/kevinchappell/formBuilder/blob/master/src/js/form-builder.js#L186) | | [sortableControls](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/sortableControls/) | {Bool} | `sortableControls: true` | `false` | | [stickyControls](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/stickyControls/) | {Bool} | `stickyControls: true` | `false` | -| [showCommandButtons](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/showCommandButtons/) | {Bool} | `showCommandButtons: false` | `true` | +| [showActionButtons](http://formbuilder.readthedocs.io/en/latest/formBuilder/options/showActionButtons/) | {Bool} | `showActionButtons: false` | `true` | ## [Changelog](https://github.com/kevinchappell/formBuilder/blob/master/CHANGELOG.md) ## ## Translators Needed! diff --git a/demo/assets/js/form-builder.min.js b/demo/assets/js/form-builder.min.js index 1c4b37e80..50da27f66 100644 --- a/demo/assets/js/form-builder.min.js +++ b/demo/assets/js/form-builder.min.js @@ -1,3 +1,3 @@ -"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                          "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                          "+b.outerHTML+'
                          '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),n=s.markup("pre",r);a.dialog(n,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                          ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
                          '+l.labels.on+"
                          ",o='
                          '+l.labels.off+"
                          ",i='
                          ',c='
                          '+n+i+o+"
                          ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showCommandButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
                            ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                          • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showCommandButtons)var y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                            ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                            ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                            ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?M(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var M=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function X(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),X="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(X+='",X+='
                            ',"select"===e.type){var s={second:r.messages.selectionsMessage};X+=L("multiple",e,s)}for(X+='
                              ',v=0;v",c.markup("div",X,{className:"form-group field-options"}).outerHTML},D=function z(e){var t,z=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),o=void 0!==e.role?e.role.split(","):[];z.push(q(e)),"checkbox"===e.type&&z.push(L("toggle",e,{first:r.messages.toggle})),z.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&z.push(j("description",e)),z.push(F(e)),"button"===e.type&&z.push(U(e.style,e.type)),"number"===e.type&&(z.push(I("min",e)),z.push(I("max",e)),z.push(I("step",e))),z.push(j("placeholder",e)),z.push(j("className",e)),z.push(j("name",e)),n&&z.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};z.push(L("multiple",e,u))}z.push('
                              "),z.push(' "),z.push('
                              ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",z.push('
                              "));if(z.push("
                              "),"checkbox-group"===e.type||"radio-group"===e.type){z.push('
                              ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),z.push('
                              ")}return l&&z.push($(e)),z.push(j("maxlength",e)),z.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
                              '+n.join("")+"
                              "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
                              '+n+" "+W+"
                              "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='',l+='
                              ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
                              ",l='
                              '+n+" "+l+"
                              "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                              "+Y+"
                              "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                              '+v+" "+m+"
                              "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                              ',u+='
                              ',u+=D(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                              ",u+="
                              ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};if(o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showCommandButtons){var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault(),i.showXML()});var R=e(document.getElementById(n+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showXML:i.showXML,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); +"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                              "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                              "+b.outerHTML+'
                              '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a.showData=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),n=s.markup("pre",r);a.dialog(n,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                              ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
                              '+l.labels.on+"
                              ",o='
                              '+l.labels.off+"
                              ",i='
                              ',c='
                              '+n+i+o+"
                              ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showActionButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
                                ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                              • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showActionButtons)var y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                                ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                                ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                                ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?D(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var D=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
                                ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
                                  ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),o=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),n&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
                                  "),X.push(' "),X.push('
                                  ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",X.push('
                                  "));if(X.push("
                                  "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
                                  ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
                                  ")}return l&&X.push($(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
                                  '+n.join("")+"
                                  "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
                                  '+n+" "+W+"
                                  "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='',l+='
                                  ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
                                  ",l='
                                  '+n+" "+l+"
                                  "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                                  "+Y+"
                                  "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                                  '+v+" "+m+"
                                  "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                                  ',u+='
                                  ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                                  ",u+="
                                  ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};if(o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showActionButtons){var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault(),i.showData()});var R=e(document.getElementById(n+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showData:i.showData,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); //# sourceMappingURL=form-builder.min.js.map diff --git a/dist/form-builder.js b/dist/form-builder.js index 78eefc84e..3f32f71c0 100644 --- a/dist/form-builder.js +++ b/dist/form-builder.js @@ -1287,7 +1287,7 @@ function formBuilderHelpersFn(opts, formBuilder) { }); }; - _helpers.showXML = function () { + _helpers.showData = function () { var data = utils.escapeHtml(formBuilder.formData), code = utils.markup('code', data, { className: 'formData-' + opts.dataType }), @@ -1389,7 +1389,6 @@ function formBuilderEventsFn() { // type: 'text' // }], defaultFields: [], - showControls: true, fieldRemoveWarn: false, roles: { 1: 'Administrator' @@ -1520,6 +1519,7 @@ function formBuilderEventsFn() { }, sortableControls: false, stickyControls: false, + showActionButtons: true, prefix: 'form-builder-' }; @@ -1684,7 +1684,7 @@ function formBuilderEventsFn() { var viewDataText = opts.dataType === 'xml' ? opts.messages.viewXML : opts.messages.viewJSON; - if (opts.showControls) { + if (opts.showActionButtons) { // Build our headers and action links var viewData = utils.markup('button', viewDataText, { id: frmbID + '-view-data', @@ -2506,12 +2506,12 @@ function formBuilderEventsFn() { $(this).parents('li:eq(0)').toggleClass('delete'); }); - if (opts.showControls) { + if (opts.showActionButtons) { // View XML var xmlButton = $(document.getElementById(frmbID + '-view-data')); xmlButton.click(function (e) { e.preventDefault(); - _helpers.showXML(); + _helpers.showData(); }); // Clear all fields in form editor @@ -2559,7 +2559,7 @@ function formBuilderEventsFn() { // Make some actions accessible formBuilder.actions = { clearFields: _helpers.removeAllfields, - showXML: _helpers.showXML, + showData: _helpers.showData, save: _helpers.save }; diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 551ac6de8..a0960a93a 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -3,5 +3,5 @@ formBuilder - https://formbuilder.online/ Version: 1.16.0 Author: Kevin Chappell */ -"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,o=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&o.push(!0),e.prepend&&o.push(0===a.stopIndex),e.append&&o.push(a.stopIndex+1===r),a.doCancel=o.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var o=a.values,n=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var o,n;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),o&&(e.style=o[1]),e=s.trimObj(e),e=s.escapeAttrs(e),n=e.type.match(/(select|checkbox-group|radio-group)/),n&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),o=$(".prev-holder",e),n={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);n[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(n.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(n.values=[],n.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),n.values.push(e)})),n=s.trimObj(n),n.className=a.classNames(e,n),$(".fld-className",e).val(n.className),e.data("fieldData",n),l=a.fieldPreview(n),o.html(l),$("input[toggle]",o).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var o=t.toggle?"toggle":"",n=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                                  "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                                  "+b.outerHTML+'
                                  '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:n=s.attrString(t),l="<"+t.type+" "+n+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,o=function(){t=null,s||e.apply(l,r)},n=s&&!t;clearTimeout(t),t=setTimeout(o,a),n&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],o=void 0;for(o=r.length-1;o>=0;o--)r=r.concat(e.messages.subtypes[r[o]]);l=l.concat(r);var n=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[n];if(p){if(i){for(o=d.length-1;o>=0;o--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[o].match(m);f&&d.splice(o,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(n,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),o=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},n={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var o=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(o)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var o={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},n=a.offset(),i=s.offset(),c=n.top+a.height(),d=i.top+s.height();c>d&&n.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(o)}else t.parentElement.removeAttribute("style")})},a.showXML=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),o=s.markup("pre",r);a.dialog(o,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                                  ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var o='
                                  '+l.labels.on+"
                                  ",n='
                                  '+l.labels.off+"
                                  ",i='
                                  ',c='
                                  '+o+i+n+"
                                  ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],showControls:!0,fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),o="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=o,s.element=a;var n=e("
                                    ").attr("id",o).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=o+"-fld-1",u=o+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                                  • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showControls)var y=c.markup("button",b,{id:o+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:o+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:o+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});n.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:n,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===n[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                                    ",{id:o+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                                    ",{id:o+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                                    ",{id:o+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(n,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});n.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",n).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),n.prepend(a)}if(r.append&&!e(".disabled.append",n).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),n.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var o=r.length-1;o>=0;o--)s[r[o].name]=r[o].value}}else s=t;s.name=a?M(s):s.name,s.className=s.className||s["class"];var n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);n&&(s.style=n[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",n).each(function(){i.updatePreview(e(this))}),A()};n.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),n.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),n.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var M=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function X(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),X="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(X+='",X+='
                                    ',"select"===e.type){var s={second:r.messages.selectionsMessage};X+=L("multiple",e,s)}for(X+='
                                      ',v=0;v",c.markup("div",X,{className:"form-group field-options"}).outerHTML},D=function z(e){var t,z=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),o=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),n=void 0!==e.role?e.role.split(","):[];z.push(q(e)),"checkbox"===e.type&&z.push(L("toggle",e,{first:r.messages.toggle})),z.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&z.push(j("description",e)),z.push(F(e)),"button"===e.type&&z.push(U(e.style,e.type)),"number"===e.type&&(z.push(I("min",e)),z.push(I("max",e)),z.push(I("step",e))),z.push(j("placeholder",e)),z.push(j("className",e)),z.push(j("name",e)),o&&z.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};z.push(L("multiple",e,u))}z.push('
                                      "),z.push(' "),z.push('
                                      ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,n)?"checked":"",z.push('
                                      "));if(z.push("
                                      "),"checkbox-group"===e.type||"radio-group"===e.type){z.push('
                                      ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),z.push('
                                      ")}return l&&z.push($(e)),z.push(j("maxlength",e)),z.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',o=[r];return a.first&&o.unshift(s(a.first)),a.second&&o.push(s(a.second)),'
                                      '+o.join("")+"
                                      "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var o="";W+='",W='
                                      '+o+" "+W+"
                                      "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var o="";l+='',l+='
                                      ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var o=e===s?"active":"";l+='"}),l+="
                                      ",l='
                                      '+o+" "+l+"
                                      "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                                      "+Y+"
                                      "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],o=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],n=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),o=o.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,o)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                                      '+v+" "+m+"
                                      "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),o=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[o,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                                      ',u+='
                                      ',u+=D(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                                      ",u+="
                                      ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",n).eq(i.stopIndex).after(f):n.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(n),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],o=[];t=t||{selected:!1,label:"",value:""};for(var n=l.length-1;n>=0;n--){var i=l[n];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),o.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};o.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",o);return p.outerHTML};if(n.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),n.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),n.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),n.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),n.delegate("input.error","keyup",function(){e(this).removeClass("error")}),n.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),n.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),n.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),n.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},o=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(o)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),n[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),n.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),n.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),n.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),n.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var o=l.attr("name");e(".sortable-options",a).append(P(o,!1,r)),i.updateMultipleSelect()}),n.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showControls){var H=e(document.getElementById(o+"-view-data"));H.click(function(e){e.preventDefault(),i.showXML()});var R=e(document.getElementById(o+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(o+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),n.css("min-height",f.height()),r.stickyControls&&i.stickyControls(n,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showXML:i.showXML,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); \ No newline at end of file +"use strict";function formBuilderHelpersFn(e,t){var a={doCancel:!1},s=fbUtils;return t.events=formBuilderEventsFn(),a.makeClassName=function(e){return e=e.replace(/[^\w\s\-]/gi,""),s.hyphenCase(e)},a.mobileClass=function(){var e="";return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=" fb-mobile")}(navigator.userAgent||navigator.vendor||window.opera),e},a.startMoving=function(e,t){e=e,t.item.show().addClass("moving"),a.startIndex=$("li",this).index(t.item)},a.stopMoving=function(e,t){e=e,t.item.removeClass("moving"),a.doCancel&&($(t.sender).sortable("cancel"),$(this).sortable("cancel")),a.save(),a.doCancel=!1},a.beforeStop=function(t,s){t=t;var l=document.getElementById(e.formID),r=l.children.length-1,n=[];a.stopIndex=s.placeholder.index()-1,!e.sortableControls&&s.item.parent().hasClass("frmb-control")&&n.push(!0),e.prepend&&n.push(0===a.stopIndex),e.append&&n.push(a.stopIndex+1===r),a.doCancel=n.some(function(e){return e===!0})},a.safename=function(e){return e.replace(/\s/g,"-").replace(/[^a-zA-Z0-9\-]/g,"").toLowerCase()},a.forceNumber=function(e){return e.replace(/[^0-9]/g,"")},a.initTooltip=function(e){var t=e.find(".tooltip");e.mouseenter(function(){t.outerWidth()>200&&t.addClass("max-width"),t.css("left",e.width()+14),t.stop(!0,!0).fadeIn("fast")}).mouseleave(function(){e.find(".tooltip").stop(!0,!0).fadeOut("fast")}),t.hide()},a.getTypes=function(e){var t={type:e.attr("type")},a=$(".fld-subtype",e).val();return a!==t.type&&(t.subtype=a),t},a.fieldOptionData=function(e){var t=[];return $(".sortable-options li",e).each(function(){var e=$(this),a={label:$(".option-label",e).val(),value:$(".option-value",e).val(),selected:$(".option-selected",e).is(":checked")};t.push(a)}),t},a.xmlSave=function(e){var t=a.prepData(e),l=["\n\t"];return a.forEach(t,function(e){var a=t[e],r=null;if(a.type.match(/(select|checkbox-group|radio-group)/)){for(var n=a.values,o=[],i=0;i\n"),l.join("")},a.prepData=function(e){var t=[];return 0!==e.childNodes.length&&a.forEach(e.childNodes,function(e,l){e=e;var r=$(l);if(!r.hasClass("disabled")){var n,o;!function(){var e=a.getTypes(r),i=$(".roles-field:checked",l).map(function(){return this.value}).get();$('[class*="fld-"]',l).each(function(){var t=s.camelCase(this.name);e[t]="checkbox"===this.type?this.checked:this.value}),i.length&&(e.role=i.join(",")),$('[name="enable-other"]:checked',l).length&&(e.enableOther=!0),e.className=e.className||e["class"],n=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(e.className),n&&(e.style=n[1]),e=s.trimObj(e),e=s.escapeAttrs(e),o=e.type.match(/(select|checkbox-group|radio-group)/),o&&(e.values=a.fieldOptionData(r)),t.push(e)}()}}),t},a.jsonSave=function(e){return window.JSON.stringify(a.prepData(e),null,"\t")},a.getData=function(){if(!e.formData)return!1;var a={xml:function(e){return s.parseXML(e)},json:function(e){return window.JSON.parse(e)}};return t.formData=a[e.dataType](e.formData)||[],t.formData},a.save=function(){var s=document.getElementById(e.formID),l={xml:a.xmlSave,json:a.jsonSave};return t.formData=l[e.dataType](s),document.dispatchEvent(t.events.formSaved),t.formData},a.incrementId=function(e){var t=e.lastIndexOf("-"),a=parseInt(e.substring(t+1))+1,s=e.substring(0,t);return s+"-"+a},a.updatePreview=function(e){var t=e.attr("class");if(t.indexOf("ui-sortable-handle")===-1){var l,r=$(e).attr("type"),n=$(".prev-holder",e),o={type:r};$('[class*="fld-"]',e).each(function(){var e=s.camelCase(this.name);o[e]="checkbox"===this.type?this.checked:this.value});var i=$(".btn-style",e).val();i&&(o.style=i),r.match(/(select|checkbox-group|radio-group)/)&&(o.values=[],o.multiple=$('[name="multiple"]',e).is(":checked"),$(".sortable-options li",e).each(function(){var e={};e.selected=$(".option-selected",this).is(":checked"),e.value=$(".option-value",this).val(),e.label=$(".option-label",this).val(),o.values.push(e)})),o=s.trimObj(o),o.className=a.classNames(e,o),$(".fld-className",e).val(o.className),e.data("fieldData",o),l=a.fieldPreview(o),n.html(l),$("input[toggle]",n).kcToggle()}},a.fieldPreview=function(t){var a,l="",r=(new Date).getTime();t=jQuery.extend({},t),t.type=t.subtype||t.type;var n=t.toggle?"toggle":"",o=s.attrString(t);switch(t.type){case"textarea":case"rich-text":var i=t.value||"";l="";break;case"button":case"submit":l="";break;case"select":var c="",d=t.multiple?"multiple":"";for(t.values.reverse(),t.placeholder&&(c+=""),a=t.values.length-1;a>=0;a--){var u=t.values[a].selected&&!t.placeholder?"selected":"";c+='"}l="<"+t.type+' class="'+t.className+'" '+d+">"+c+"";break;case"checkbox-group":case"radio-group":var p=t.type.replace("-group",""),m=p+"-"+r;for(t.values.reverse(),a=t.values.length-1;a>=0;a--){var f=t.values[a].selected?"checked":"",v=p+"-"+r+"-"+a;l+='
                                      "}if(t.enableOther){var h=m+"-other",g={id:h,name:m,className:t.className+" other-option",type:p,onclick:"otherOptionCallback('"+h+"')"},b=s.markup("input",null,g);window.otherOptionCallback=function(e){var t=document.getElementById(e),a=t.nextElementSibling,s=a.nextElementSibling;t.checked?(s.style.display="inline-block",a.style.display="none"):(s.style.display="none",a.style.display="inline-block")},l+="
                                      "+b.outerHTML+'
                                      '}break;case"text":case"password":case"email":case"date":case"file":case"number":l="";break;case"color":l=' '+e.messages.selectColor;break;case"hidden":case"checkbox":l='";break;case"autocomplete":l='';break;default:o=s.attrString(t),l="<"+t.type+" "+o+">"+t.label+""}return l},a.updateMultipleSelect=function(){$(document.getElementById(e.formID)).on("change",'input[name="multiple"]',function(){var e=$(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected");this.checked?e.each(function(){$(this).prop("type","checkbox")}):e.each(function(){$(this).removeAttr("checked").prop("type","radio")})})},a.debounce=function(e){var t,a=arguments.length<=1||void 0===arguments[1]?250:arguments[1],s=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return function(){var l=this,r=arguments,n=function(){t=null,s||e.apply(l,r)},o=s&&!t;clearTimeout(t),t=setTimeout(n,a),o&&e.apply(l,r)}},a.validateForm=function(){var t=$(document.getElementById(e.formID)),a=[];$('input[name="label"], input[type="text"].option',t).each(function(){if(""===$(this).val()){var t=$(this).parents("li.form-field"),s=$(this);a.push({field:t,error:e.messages.labelEmpty,attribute:s})}}),a.length&&(alert("Error: "+a[0].error),$("html, body").animate({scrollTop:a[0].field.offset().top},1e3,function(){var e=$(".toggle-form",a[0].field).attr("id");$(".toggle-form",a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250),$("#"+e+"-fld").slideDown(250,function(){a[0].attribute.addClass("error")})}))},a.disabledTT={className:"frmb-tt",add:function(t){var l=e.messages.fieldNonEditable;if(l){var r=s.markup("p",l,{className:a.disabledTT.className});t.append(r)}},remove:function(e){$(".frmb-tt",e).remove()}},a.classNames=function(t,s){var l=["checkbox","checkbox-group","radio-group"],r=["header","paragraph","button"],n=void 0;for(n=r.length-1;n>=0;n--)r=r.concat(e.messages.subtypes[r[n]]);l=l.concat(r);var o=s.type,i=s.style,c=t[0].querySelector(".fld-className").value,d=[].concat(c.split(" ")).reverse(),u={button:"btn",submit:"btn"},p=u[o];if(p){if(i){for(n=d.length-1;n>=0;n--){var m=new RegExp("(?:^|s)"+p+"-(.*?)(?:s|$)+","g"),f=d[n].match(m);f&&d.splice(n,1)}d.push(p+"-"+i)}d.push(p)}else a.inArray(o,l)||d.push("form-control");return a.unique(d.reverse()).join(" ").trim()},s.markup=function(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],a=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],l=void 0,r=document.createElement(e),n=function(e){return Array.isArray(e)?"array":"undefined"==typeof e?"undefined":_typeof(e)},o={string:function(e){r.innerHTML=e},object:function(e){return r.appendChild(e)},array:function(e){for(var t=0;t=0;r--){var n=t.filter(function(e){return e.attrs.type===s[r]})[0];l.push(n)}return l.filter(Boolean)},a.forEach=function(e,t,a){for(var s=0;s li.editing",e),a=$(".toggle-form",e),s=$(".frm-holder",t);a.removeClass("open"),t.removeClass("editing"),s.hide(),$(".prev-holder",t).show()},a.toggleEdit=function(e){var t=document.getElementById(e),a=$(".toggle-form",t),s=$(".frm-holder",t);t.classList.toggle("editing"),a.toggleClass("open"),$(".prev-holder",t).slideToggle(250),s.slideToggle(250)},a.stickyControls=function(e,t){var a=$(t).parent(),s=e.parent(),l=a.width(),r=t.getBoundingClientRect();$(window).scroll(function(){var e=$(this).scrollTop();if(e>s.offset().top){var n={position:"fixed",width:l,top:0,bottom:"auto",right:"auto",left:r.left},o=a.offset(),i=s.offset(),c=o.top+a.height(),d=i.top+s.height();c>d&&o.top!==i.top&&a.css({position:"absolute",top:"auto",bottom:0,right:0,left:"auto"}),(ce)&&a.css(n)}else t.parentElement.removeAttribute("style")})},a.showData=function(){var l=s.escapeHtml(t.formData),r=s.markup("code",l,{className:"formData-"+e.dataType}),n=s.markup("pre",r);a.dialog(n,null,"data-dialog")},a}function formBuilderEventsFn(){var e={};return e.loaded=new Event("loaded"),e.viewData=new Event("viewData"),e.userDeclined=new Event("userDeclined"),e.modalClosed=new Event("modalClosed"),e.formSaved=new Event("formSaved"),e}"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),"function"!=typeof Event&&!function(){window.Event=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t":">"};return"string"==typeof e?e.replace(/["&<>]/g,t):e},fbUtils.escapeAttrs=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t]=fbUtils.escapeAttr(e[t]));return e};var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){var t=function(t,a){var s={theme:"fresh",labels:{off:"Off",on:"On"}},l=e.extend(s,a),r=e('
                                      ').insertAfter(t).append(t);r.toggleClass("on",t.is(":checked"));var n='
                                      '+l.labels.on+"
                                      ",o='
                                      '+l.labels.off+"
                                      ",i='
                                      ',c='
                                      '+n+i+o+"
                                      ";r.append(c),r.click(function(){t.attr("checked",!t.attr("checked")),e(this).toggleClass("on")})};e.fn.kcToggle=function(a){var s=this;return s.each(function(){var s=e(this);if(!s.data("kcToggle")){var l=new t(s,a);s.data("kcToggle",l)}})}}(jQuery),function(e){var t=function(t,a){var s=this,l={controlPosition:"right",controlOrder:["autocomplete","button","checkbox","checkbox-group","date","file","header","hidden","paragraph","number","radio-group","select","text","textarea"],dataType:"xml",disableFields:[],editOnAdd:!1,append:!1,prepend:!1,defaultFields:[],fieldRemoveWarn:!1,roles:{1:"Administrator"},messages:{addOption:"Add Option",allFieldsRemoved:"All fields were removed.",allowSelect:"Allow Select",allowMultipleFiles:"Allow users to upload multiple files",autocomplete:"Autocomplete",button:"Button",cannotBeEmpty:"This field cannot be empty",checkboxGroup:"Checkbox Group",checkbox:"Checkbox",checkboxes:"Checkboxes",className:"Class",clearAllMessage:"Are you sure you want to clear all fields?",clearAll:"Clear",close:"Close",content:"Content",copy:"Copy To Clipboard",dateField:"Date Field",description:"Help Text",descriptionField:"Description",devMode:"Developer Mode",editNames:"Edit Names",editorTitle:"Form Elements",editXML:"Edit XML",enableOther:"Enable "Other"",enableOtherMsg:"Let users to enter an unlisted option",fieldDeleteWarning:!1,fieldVars:"Field Variables",fieldNonEditable:"This field cannot be edited.",fieldRemoveWarning:"Are you sure you want to remove this field?",fileUpload:"File Upload",formUpdated:"Form Updated",getStarted:"Drag a field from the right to this area",header:"Header",hide:"Edit",hidden:"Hidden Input",label:"Label",labelEmpty:"Field Label cannot be empty",limitRole:"Limit access to one or more of the following roles:",mandatory:"Mandatory",maxlength:"Max Length",minOptionMessage:"This field requires a minimum of 2 options",multipleFiles:"Multiple Files",name:"Name",no:"No",number:"Number",off:"Off",on:"On",option:"Option",optional:"optional",optionLabelPlaceholder:"Label",optionValuePlaceholder:"Value",optionEmpty:"Option value required",other:"Other",paragraph:"Paragraph",placeholder:"Placeholder",placeholders:{value:"Value",label:"Label",text:"",textarea:"",email:"Enter you email",placeholder:"",className:"space separated classes",password:"Enter your password"},preview:"Preview",radioGroup:"Radio Group",radio:"Radio",removeMessage:"Remove Element",remove:"×",required:"Required",richText:"Rich Text Editor",roles:"Access",save:"Save",selectOptions:"Options",select:"Select",selectColor:"Select Color",selectionsMessage:"Allow Multiple Selections",size:"Size",sizes:{xs:"Extra Small",sm:"Small",m:"Default",lg:"Large"},style:"Style",styles:{btn:{"default":"Default",danger:"Danger",info:"Info",primary:"Primary",success:"Success",warning:"Warning"}},subtype:"Type",subtypes:{text:["text","password","email","color"],button:["button","submit"],header:["h1","h2","h3"],paragraph:["p","address","blockquote","canvas","output"]},text:"Text Field",textArea:"Text Area",toggle:"Toggle",warning:"Warning!",value:"Value",viewJSON:"{ }",viewXML:"</>",yes:"Yes"},notify:{error:function(e){return console.error(e)},success:function(e){return console.log(e)},warning:function(e){return console.warn(e)}},sortableControls:!1,stickyControls:!1,showActionButtons:!0,prefix:"form-builder-"};l.messages.subtypes.password=l.messages.subtypes.text,l.messages.subtypes.email=l.messages.subtypes.text,l.messages.subtypes.color=l.messages.subtypes.text,l.messages.subtypes.submit=l.messages.subtypes.button;var r=Object.assign({},l,t),n="frmb-"+e("ul[id^=frmb-]").length++;t.messages&&(r.messages=Object.assign({},l.messages,t.messages)),r.formID=n,s.element=a;var o=e("
                                        ").attr("id",n).addClass("frmb"),i=formBuilderHelpersFn(r,s),c=fbUtils;s.layout=i.editorLayout(r.controlPosition);var d=n+"-fld-1",u=n+"-control-box",p=[{label:r.messages.textArea,attrs:{type:"textarea",className:"text-area",name:"textarea"}},{label:r.messages.text,attrs:{type:"text",className:"text-input",name:"text-input"}},{label:r.messages.select,attrs:{type:"select",className:"select",name:"select"}},{label:r.messages.radioGroup,attrs:{type:"radio-group",className:"radio-group",name:"radio-group"}},{label:r.messages.paragraph,attrs:{type:"paragraph",className:"paragraph"}},{label:r.messages.number,attrs:{type:"number",className:"number",name:"number"}},{label:r.messages.hidden,attrs:{type:"hidden",className:"hidden-input",name:"hidden-input"}},{label:r.messages.header,attrs:{type:"header",className:"header"}},{label:r.messages.fileUpload,attrs:{type:"file",className:"file-input",name:"file-input"}},{label:r.messages.dateField,attrs:{type:"date",className:"calendar",name:"date-input"}},{label:r.messages.checkboxGroup,attrs:{type:"checkbox-group",className:"checkbox-group",name:"checkbox-group"}},{label:r.messages.checkbox,attrs:{type:"checkbox",className:"checkbox",name:"checkbox"}},{label:r.messages.button,attrs:{type:"button",className:"button-input",name:"button"}},{label:r.messages.autocomplete,attrs:{type:"autocomplete",className:"autocomplete",name:"autocomplete"}}];p=i.orderFields(p),r.disableFields&&(p=p.filter(function(e){return!c.inArray(e.attrs.type,r.disableFields)}));var m=c.markup("ul",null,{id:u,className:"frmb-control"});r.sortableControls&&m.classList.add("sort-enabled");for(var f=e(m),v=p.length-1;v>=0;v--){var h=e("
                                      • ",{"class":"icon-"+p[v].attrs.className,type:p[v].type,name:p[v].className,label:p[v].label});h.data("newFieldData",p[v]);var g=c.markup("span",p[v].label);h.html(g).appendTo(f)}var b="xml"===r.dataType?r.messages.viewXML:r.messages.viewJSON;if(r.showActionButtons)var y=c.markup("button",b,{id:n+"-view-data",type:"button",className:"view-data btn btn-default"}),k=c.markup("button",r.messages.clearAll,{id:n+"-clear-all",type:"button",className:"clear-all btn btn-default"}),w=c.markup("button",r.messages.save,{className:"btn btn-primary "+r.prefix+"save",id:n+"-save",type:"button"}),x=c.markup("div",[k,y,w],{className:"form-actions btn-group"});o.sortable({cursor:"move",opacity:.9,revert:150,beforeStop:i.beforeStop,start:i.startMoving,stop:i.stopMoving,cancel:"input, select, .disabled, .form-group, .btn",placeholder:"frmb-placeholder"}),f.sortable({helper:"clone",opacity:.9,connectWith:o,cursor:"move",scroll:!1,placeholder:"ui-state-highlight",start:i.startMoving,stop:i.stopMoving,revert:150,beforeStop:i.beforeStop,distance:3,update:function(e,t){return!i.doCancel&&(e=e,void(t.item.parent()[0]===o[0]?(T(t.item,!0),i.doCancel=!0):(i.setFieldOrder(f),i.doCancel=!r.sortableControls)))}});var C=e("
                                        ",{id:n+"-form-wrap","class":"form-wrap form-builder"+i.mobileClass()}),N=e("
                                        ",{id:n+"-stage-wrap","class":"stage-wrap "+s.layout.stage}),O=e("
                                        ",{id:n+"-cb-wrap","class":"cb-wrap "+s.layout.controls}).append(f[0],x);N.append(o,O),N.before(C),C.append(N,O),e(a).append(C);var E=i.debounce(function(t){if(t&&"keyup"===t.type&&"className"===this.name)return!1;var a=e(this).parents(".form-field:eq(0)");i.updatePreview(a),i.save()});o.on("change blur keyup",".form-elements input, .form-elements select, .form-elements textarea",E),e("li",f).click(function(){i.stopIndex=void 0,T(e(this),!0),i.save()});var A=function(){var t=[];if(r.prepend&&!e(".disabled.prepend",o).length){var a=c.markup("li",r.prepend,{className:"disabled prepend"});t.push(!0),o.prepend(a)}if(r.append&&!e(".disabled.append",o).length){var s=c.markup("li",r.append,{className:"disabled append"});t.push(!0),o.append(s)}t.some(function(e){return e===!0})&&N.removeClass("empty")},T=function(t){var a=!(arguments.length<=1||void 0===arguments[1])&&arguments[1],s={};if(t instanceof jQuery){var l=t.data("newFieldData");if(l)s=l.attrs,s.label=l.label;else{var r=t[0].attributes;a||(s.values=t.children().map(function(t,a){return t=t,{label:e(a).text(),value:e(a).attr("value"),selected:Boolean(e(a).attr("selected"))}}));for(var n=r.length-1;n>=0;n--)s[r[n].name]=r[n].value}}else s=t;s.name=a?D(s):s.name,s.className=s.className||s["class"];var o=/(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className);o&&(s.style=o[1]),c.escapeAttrs(s),B(s),N.removeClass("empty")},S=function(){var t=s.formData;if(t){for(var a=0;a=0;l--)T(r.defaultFields[l]);N.removeClass("empty")}else r.prepend||r.append||N.addClass("empty").attr("data-content",r.messages.getStarted);i.save(),e("li.form-field:not(.disabled)",o).each(function(){i.updatePreview(e(this))}),A()};o.on("mousemove","li.disabled",function(t){e(".frmb-tt",this).css({left:t.offsetX-16,top:t.offsetY-34})}),o.on("mouseenter","li.disabled",function(){i.disabledTT.add(e(this))}),o.on("mouseleave","li.disabled",function(){i.disabledTT.remove(e(this))});var D=function(e){var t=(new Date).getTime();return e.type+"-"+t},$=function z(e){var t=c.markup("a",r.messages.addOption,{className:"add add-opt"}),z="";if(e.values&&e.values.length)for(var a=e.values.length-1;a>=0;a--)e.values[a]=Object.assign({},{selected:!1},e.values[a]);else e.values=[{selected:!0},{selected:!1}],e.values=e.values.map(function(e,t){return e.label=r.messages.option+" "+(t+1),e.value=c.hyphenCase(e.label),e});if(z+='",z+='
                                        ',"select"===e.type){var s={second:r.messages.selectionsMessage};z+=L("multiple",e,s)}for(z+='
                                          ',v=0;v",c.markup("div",z,{className:"form-group field-options"}).outerHTML},M=function X(e){var t,X=[],a="",s=["select","checkbox-group","radio-group"],l=function(){return s.indexOf(e.type)!==-1}(),n=function(){var t=["header","paragraph","file"].concat(s,r.messages.subtypes.header,r.messages.subtypes.paragraph);return t.indexOf(e.type)===-1}(),o=void 0!==e.role?e.role.split(","):[];X.push(q(e)),"checkbox"===e.type&&X.push(L("toggle",e,{first:r.messages.toggle})),X.push(j("label",e)),e.size=e.size||"m",e.style=e.style||"default";var i=["header","paragraph","button"].concat(r.messages.subtypes.header,r.messages.subtypes.paragraph);if(i=i.concat(r.messages.subtypes.header,r.messages.subtypes.paragraph),i.indexOf(e.type)===-1&&X.push(j("description",e)),X.push(F(e)),"button"===e.type&&X.push(U(e.style,e.type)),"number"===e.type&&(X.push(I("min",e)),X.push(I("max",e)),X.push(I("step",e))),X.push(j("placeholder",e)),X.push(j("className",e)),X.push(j("name",e)),n&&X.push(j("value",e)),"file"===e.type){var u={first:r.messages.multipleFiles,second:r.messages.allowMultipleFiles};X.push(L("multiple",e,u))}X.push('
                                          "),X.push(' "),X.push('
                                          ");for(t in r.roles)r.roles.hasOwnProperty(t)&&(a=c.inArray(t,o)?"checked":"",X.push('
                                          "));if(X.push("
                                          "),"checkbox-group"===e.type||"radio-group"===e.type){X.push('
                                          ");var p="";(e.enableOther||e["enable-other"])&&(p="checked"),X.push('
                                          ")}return l&&X.push($(e)),X.push(j("maxlength",e)),X.join("")},L=function(e,t,a){var s=function(t){return'"},l=void 0!==t[e]?"checked":"",r='',n=[r];return a.first&&n.unshift(s(a.first)),a.second&&n.push(s(a.second)),'
                                          '+n.join("")+"
                                          "},F=function W(e){var t=r.messages.subtypes,a=e.type,s=e.subtype||"",W="",l=void 0;if(t[a]){var n="";W+='",W='
                                          '+n+" "+W+"
                                          "}return W},U=function(e,t){var a={button:"btn"},s=r.messages.styles[a[t]],l="";if(s){var n="";l+='',l+='
                                          ',Object.keys(r.messages.styles[a[t]]).forEach(function(s){var n=e===s?"active":"";l+='"}),l+="
                                          ",l='
                                          '+n+" "+l+"
                                          "}return l},I=function Y(e,t){var a=t[e]||"",s=r.messages[e]||e,l=r.messages.placeholders[e]||"",Y='';return'
                                          "+Y+"
                                          "},j=function(e,t){var a=["text","textarea","select"],s=["header"],l=["paragraph"],n=["checkbox","select","checkbox-group","date","autocomplete","radio-group","hidden","button","header","number"],o=t[e]||"",i=r.messages[e];"label"===e&&c.inArray(t.type,l)&&(i=r.messages.content),s=s.concat(r.messages.subtypes.header,l),n=n.concat(l);var u=r.messages.placeholders,p=u[e]||"",m="",f=[];if("placeholder"!==e||c.inArray(t.type,a)||f.push(!0),"name"===e&&c.inArray(t.type,s)&&f.push(!0),"maxlength"===e&&c.inArray(t.type,n)&&f.push(!0),!f.some(function(e){return e===!0})){var v='";m+="label"===e&&c.inArray(t.type,l)||"value"===e&&"textarea"===t.type?'":'',m='
                                          '+v+" "+m+"
                                          "}return m},q=function(e){var t=["header","paragraph","button"],a=[],s="";return c.inArray(e.type,t)&&a.push(!0),a.some(function(e){return e===!0})||(s=L("required",e,{first:r.messages.required})),s},B=function(t){var a=t.type||"text",s=t.label||r.messages[a]||r.messages.label,l=c.markup("a",r.messages.remove,{id:"del_"+d,className:"del-button btn delete-confirm",title:r.messages.removeMessage}),n=c.markup("a",null,{id:d+"-edit",className:"toggle-form btn icon-pencil",title:r.messages.hide}),u=c.markup("div",[n,l],{className:"field-actions"}).outerHTML;u+='",t.description&&(u+='?');var p=t.required?'style="display:inline"':"";u+=' *",u+=c.markup("div","",{className:"prev-holder"}).outerHTML,u+='
                                          ',u+='
                                          ',u+=M(t),u+=c.markup("a",r.messages.close,{className:"close-field"}).outerHTML,u+="
                                          ",u+="
                                          ";var m=c.markup("li",u,{"class":a+"-field form-field",type:a,id:d}),f=e(m);f.data("fieldData",{attrs:t}),"undefined"!=typeof i.stopIndex?e("> li",o).eq(i.stopIndex).after(f):o.append(f),e(".sortable-options",f).sortable(),i.updatePreview(f),r.editOnAdd&&(i.closeAllEdit(o),i.toggleEdit(d)),d=i.incrementId(d)},P=function(e,t,a){var s={selected:a?"checkbox":"radio"},l=["value","label","selected"],n=[];t=t||{selected:!1,label:"",value:""};for(var o=l.length-1;o>=0;o--){var i=l[o];if(t.hasOwnProperty(i)){var d={type:s[i]||"text","class":"option-"+i,placeholder:r.messages.placeholders[i],value:t[i],name:e};"selected"===i&&(d.checked=t.selected),n.push(c.markup("input",null,d))}}var u={className:"remove btn",title:r.messages.removeMessage};n.push(c.markup("a",r.messages.remove,u));var p=c.markup("li",n);return p.outerHTML};if(o.on("click touchstart",".remove",function(t){var a=e(this).parents(".form-field:eq(0)");t.preventDefault();var s=e(this).parents(".sortable-options:eq(0)").children("li").length;s<=2?r.notify.error("Error: "+r.messages.minOptionMessage):e(this).parent("li").slideUp("250",function(){e(this).remove(),i.updatePreview(a),i.save()})}),o.on("touchstart","input",function(t){if(t.handled===!0)return!1;if("checkbox"===e(this).attr("type"))e(this).trigger("click");else{e(this).focus();var a=e(this).val();e(this).val(a)}}),o.on("click touchstart",".toggle-form, .close-field",function(t){if(t.stopPropagation(),t.preventDefault(),t.handled===!0)return!1;var a=e(this).parents(".form-field:eq(0)").attr("id");i.toggleEdit(a),t.handled=!0}),o.on("keyup change",'[name="label"]',function(){e(".field-label",e(this).closest("li")).text(e(this).val())}),o.delegate("input.error","keyup",function(){e(this).removeClass("error")}),o.on("keyup",'input[name="description"]',function(){var t=e(this).parents(".form-field:eq(0)"),a=e(".tooltip-element",t),s=e(this).val();if(""!==s)if(a.length)a.attr("tooltip",s).css("display","inline-block");else{var l='?';e(".field-label",t).after(l)}else a.length&&a.css("display","none")}),i.updateMultipleSelect(),o.delegate('input[name="name"]',"blur",function(){e(this).val(i.safename(e(this).val())),""===e(this).val()?e(this).addClass("field_error").attr("placeholder",r.messages.cannotBeEmpty):e(this).removeClass("field_error")}),o.delegate("input.fld-maxlength","blur",function(){e(this).val(i.forceNumber(e(this).val()))}),o.on("click touchstart",".delete-confirm",function(t){t.preventDefault();var a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12},n=e(this).parents(".form-field:eq(0)").attr("id"),d=e(document.getElementById(n)),u=function(){d.slideUp(250,function(){d.removeClass("deleting"),d.remove(),i.save(),o[0].childNodes.length||N.addClass("empty").attr("data-content",r.messages.getStarted)})};if(document.addEventListener("modalClosed",function(){d.removeClass("deleting")},!1),r.fieldRemoveWarn){var p=c.markup("h3",r.messages.warning),m=c.markup("p",r.messages.fieldRemoveWarning);i.confirm([p,m],u,l),d.addClass("deleting")}else u(d)}),o.on("click",".style-wrap button",function(){var t=e(this).val(),a=e(this).parent(),s=a.prev(".btn-style");s.val(t),e(this).siblings(".btn").removeClass("active"),e(this).addClass("active"),E.call(a)}),o.on("click","input.fld-required",function(){var t=e(this).parents("li.form-field").find(".required-asterisk");t.toggle()}),o.on("click",'input[name="enable-roles"]',function(){var t=e(this).siblings("div.available-roles"),a=e(this);t.slideToggle(250,function(){a.is(":checked")||e('input[type="checkbox"]',t).removeAttr("checked")})}),o.on("click",".add-opt",function(t){t.preventDefault();var a=e(this).parents(".field-options:eq(0)"),s=e('[name="multiple"]',a),l=e(".option-selected:eq(0)",a),r=!1;r=s.length?s.prop("checked"):"checkbox"===l.attr("type");var n=l.attr("name");e(".sortable-options",a).append(P(n,!1,r)),i.updateMultipleSelect()}),o.on("mouseover mouseout",".remove, .del-button",function(){e(this).parents("li:eq(0)").toggleClass("delete")}),r.showActionButtons){var H=e(document.getElementById(n+"-view-data"));H.click(function(e){e.preventDefault(),i.showData()});var R=e(document.getElementById(n+"-clear-all"));R.click(function(){var t=e("li.form-field"),a=this.getBoundingClientRect(),s=document.body.getBoundingClientRect(),l={pageX:a.left+a.width/2,pageY:a.top-s.top-12};t.length?i.confirm(r.messages.clearAllMessage,function(){i.removeAllfields(),r.notify.success(r.messages.allFieldsRemoved),i.save()},l):i.dialog("There are no fields to clear",{pageX:l.pageX,pageY:l.pageY})}),e(document.getElementById(n+"-save")).click(function(e){e.preventDefault(),i.save(),i.validateForm(e)})}return i.getData(),S(),o.css("min-height",f.height()),r.stickyControls&&i.stickyControls(o,m),document.dispatchEvent(s.events.loaded),s.actions={clearFields:i.removeAllfields,showData:i.showData,save:i.save},s};e.fn.formBuilder=function(a){return a=a||{},this.each(function(){var s=new t(a,this);return e(this).data("formBuilder",s),s})}}(jQuery); \ No newline at end of file diff --git a/docs/formBuilder/options/showActionButtons.md b/docs/formBuilder/options/showActionButtons.md new file mode 100644 index 000000000..7124bece8 --- /dev/null +++ b/docs/formBuilder/options/showActionButtons.md @@ -0,0 +1,10 @@ +# showActionButtons +When the option `showActionButtons` is set to false, the buttons for clearing the form controls, previewing the code and saving the form are not shown. By default the buttons are visible. + +## Usage +```javascript +var options = { + showActionButtons: false + }; +$(container).formBuilder(options); +``` diff --git a/docs/formBuilder/options/showCommandButtons.md b/docs/formBuilder/options/showCommandButtons.md deleted file mode 100644 index 2ea6e5fd1..000000000 --- a/docs/formBuilder/options/showCommandButtons.md +++ /dev/null @@ -1,10 +0,0 @@ -# showCommandButtons -When the option `showCommandButtons` is set to false, the buttons for clearing the form controls, previewing the code and saving the form are not shown. By default the buttons are visible. - -## Usage -```javascript -var options = { - showCommandButtons: false - }; -$(container).formBuilder(options); -``` diff --git a/src/js/form-builder.js b/src/js/form-builder.js index 0be21c13c..7d1ebab15 100644 --- a/src/js/form-builder.js +++ b/src/js/form-builder.js @@ -192,7 +192,7 @@ }, sortableControls: false, stickyControls: false, - showCommandButtons: true, + showActionButtons: true, prefix: 'form-builder-' }; @@ -357,7 +357,7 @@ let viewDataText = opts.dataType === 'xml' ? opts.messages.viewXML : opts.messages.viewJSON; - if (opts.showCommandButtons) { + if (opts.showActionButtons) { // Build our headers and action links var viewData = utils.markup('button', viewDataText, { id: frmbID + '-view-data', @@ -1209,12 +1209,12 @@ }); - if(opts.showCommandButtons) { + if(opts.showActionButtons) { // View XML var xmlButton = $(document.getElementById(frmbID + '-view-data')); xmlButton.click(function(e) { e.preventDefault(); - _helpers.showXML(); + _helpers.showData(); }); // Clear all fields in form editor @@ -1262,7 +1262,7 @@ // Make some actions accessible formBuilder.actions = { clearFields: _helpers.removeAllfields, - showXML: _helpers.showXML, + showData: _helpers.showData, save: _helpers.save }; diff --git a/src/js/helpers.js b/src/js/helpers.js index 3a576584e..1d16f301a 100644 --- a/src/js/helpers.js +++ b/src/js/helpers.js @@ -981,7 +981,7 @@ function formBuilderHelpersFn(opts, formBuilder) { }; - _helpers.showXML = function() { + _helpers.showData = function() { var data = utils.escapeHtml(formBuilder.formData), code = utils.markup('code', data, { className: 'formData-' + opts.dataType }),