-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.form.min.js
1 lines (1 loc) · 2.96 KB
/
jquery.form.min.js
1
define(["jquery","bootstrap"],function(a){"use strict";a.fn.form=function(b,c,d){d||"function"!=typeof c||(d=c),c||d||"function"!=typeof b||(d=b);var e=this;return e.render=function(b,c){e.schema=b,e.find("*").remove(),e.visiblityConditions=[];var d=a("<div class='row'>").appendTo(e);return function b(f,g){a.each(f,function(f,h){var i=g?g+"-"+f:f,j=e.getFieldValue(i,c);if("group"===h.type)b(h.values,i);else{var k,l={id:i,schema:h,value:"string"==typeof j?j.replace(/[&<>"'\/]/g,function(a){return{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}[a]}):j,title:h.title};l.control=e.form.templates[h.type]||e.form.templates.text,l.$control=l.control(l),k=l.control.wrapped?a(e.form.templates.wrapper(l)).appendTo(d).find("#"+i):a(l.$control).appendTo(d),h.show_if&&e.visiblityConditions.push({show_if:h.show_if,$field:k.closest(".form-group").parent()})}})}(e.schema),e.trigger("change")},e.set=function(b){return e.find("[name]").each(function(){var c=e.getFieldValue(this.name,b);"undefined"!=typeof c&&a(this).val(c)}),e.trigger("change")},e.toJSON=function(){var b=e.serializeArray(),c={};return a.each(b,function(){var b=this.name.split("-"),d=c,f=null,g=null,h=this.value;try{h=["object","boolean"].indexOf(typeof JSON.parse(h))===-1?h:JSON.parse(h)}catch(a){}a.each(b,function(){g=this,f=d,d[this]||(d[this]={}),d=d[this]});var i=e.find("#"+this.name);i.attr("multiple")||"checkbox"===i.attr("type")?f[g].push?f[g].push(h):f[g]=[h]:f[g]=h}),c},e.handler=function(){e.find(".form-group.has-error").removeClass("has-error").tooltip("destroy");var a=e.schema,b=e.toJSON(),c=e.validate(a,b);return c.length?setTimeout(function(){c.reverse().map(e.throwError)},150):d.call(e,b),!1},e.validate=function(b,c){var d=[];return function b(f,g){a.each(f,function(a,f){var h=g?g+"-"+a:a,i=e.getFieldValue(h,c);if("group"===f.type)b(f.values,h);else if(f.required&&!i){if(f.show_if&&!e.getVisiblityCondition(f.show_if,c))return!0;d.push(e.find("#"+h))}})}(b),d},e.throwError=function(a,b){var c=a.focus().closest(".form-group").addClass("has-error");return"string"==typeof b&&c.tooltip({title:b,trigger:"manual"}).tooltip("show"),e},e.throwErrors=function(a,b){for(var c in a)if(isNaN(a[c].length))e.throwErrors(a[c],(b?b+"-":"")+c);else for(var d=0;d<a[c].length;d++)e.throwError(e.find("#"+(b?b+"-":"")+c),a[c][d]);return e},e.getFieldValue=function(a,b){var c=a.split("-");return c.length>1?b?e.getFieldValue(c.slice(1).join("-"),b[c[0]]):void 0:b&&null!==b[a]?b[a]:void 0},e.updateVisiblityState=function(){for(var a=e.toJSON(),b=0;b<e.visiblityConditions.length;b++){var c=e.visiblityConditions[b].$field,d=e.visiblityConditions[b].show_if;c[e.getVisiblityCondition(d,a)?"show":"hide"]()}return e},e.getVisiblityCondition=function(a,b){return new Function("data","return "+a).call(e,b)},e.render(b,c).off("submit",e.handler).on("submit",e.handler).off("input change",e.updateVisiblityState).on("input change",e.updateVisiblityState)},"undefined"!=typeof module&&module.exports&&(module.exports=a.fn.form)});