UNPKG

12.6 kBJavaScriptView Raw
1!function(e){if("function"==typeof bootstrap)bootstrap("reformer",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeReformer=e}else"undefined"!=typeof window?window.Reformer=e():global.Reformer=e()}(function(){var define;return function(e,t,r){function i(r,a){if(!t[r]){if(!e[r]){var s="function"==typeof require&&require;if(!a&&s)return s(r,!0);if(n)return n(r,!0);throw new Error("Cannot find module '"+r+"'")}var o=t[r]={exports:{}};e[r][0].call(o.exports,function(t){var n=e[r][1][t];return i(n?n:t)},o,o.exports)}return t[r].exports}for(var n="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(){},{}],2:[function(e,t){function r(e){if("string"!=typeof e)throw new TypeError("String expected");var t=/<([\w:]+)/.exec(e);if(!t)throw new Error("No elements were generated.");var r=t[1];if("body"==r){var n=document.createElement("html");return n.innerHTML=e,n.removeChild(n.lastChild)}var a=i[r]||i._default,s=a[0],o=a[1],l=a[2],n=document.createElement("div");for(n.innerHTML=o+e+l;s--;)n=n.lastChild;var u=n.children;if(1==u.length)return n.removeChild(u[0]);for(var f=document.createDocumentFragment();u.length;)f.appendChild(n.removeChild(u[0]));return f}t.exports=r;var i={option:[1,'<select multiple="multiple">',"</select>"],optgroup:[1,'<select multiple="multiple">',"</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tbody:[1,"<table>","</table>"],tfoot:[1,"<table>","</table>"],colgroup:[1,"<table>","</table>"],caption:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],th:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],_default:[0,"",""]}},{}],3:[function(e,t){function r(e,t,r){if(!e.length)return r();var i=0;e.forEach(function(n){t(n,function(t){t?(r(t),r=function(){}):(i+=1,i===e.length&&r())})})}function i(e){return e&&e.trim?e.trim():""}function n(e){var t,r=this,i=function(){};this.settings={error:i,submit:i,reqMessage:"This field is required",html5Validation:!0,errorPlacement:"before"},this.fieldDefinition=e.fields,this.fields=[],this.id=e.id,this.formEl=e.formEl,this.fieldContainer=e.fieldContainer,this.initialData=e.data||{},delete e.fields;for(t in e)this.settings[t]=e[t];this.fieldDefinition.forEach(function(e){e.parent=r,r.fields.push(new a(e))})}function a(e){var t,r=e.parent.initialData;this.errors=[],this.type="text",this.tests=[],this.textarea="textarea"===e.widget,this.select="select"===e.widget&&e.hasOwnProperty("options"),this.input=e.hasOwnProperty("widget")?"input"===e.widget:!0,this.errorPlacement=e.errorPlacement||e.parent.settings.errorPlacement,this.trim=!0;for(t in e)this[t]=e[t];if(this.id=e.id||e.name,!this.id)throw new Error("All fields need either a name or id attribute");this.containerEl=function(){var t=typeof e.containerEl;return"string"===t?document.getElementById(e.containerEl):"object"===t?e.containerEl:void 0}(),this.containerId=this.containerEl&&this.containerEl.id||this.id+"_parent",r&&r.hasOwnProperty(this.name)?this.setValue(r[this.name]):this.setValue(""),this.initial=this.value}var s=e("./templates"),o=e("domify");n.prototype.render=function(e,t){var r=e||{};return r.formEl&&(this.formEl=r.formEl),r.fieldContainer&&(this.fieldContainer=r.fieldContainer),this.rendered||(this.formEl.addEventListener("submit",function(e){e.preventDefault()},!0),this.addButtonHandlers()),this.rendered=!0,this.fields.forEach(function(e){e.render(t)}),this.formEl},n.prototype.addButtonHandlers=function(){for(var e=this,t=this.formEl.getElementsByTagName("button",this.dom),r=0,i=t.length;i>r;r++)t[r].addEventListener("click",function(t){var r,i=t.target.className;return e.submitRe.test(i)||"submit"===t.target.type?(e.handleSubmit(),t.stopPropagation(),!1):(r=e.settings[i])?(t.preventDefault(),t.stopPropagation(),r(),!1):void 0},!0)},n.prototype.reset=function(e){e&&(this.initialData=e),this.render({},!0)},n.prototype.handleSubmit=function(){var e=this;e.settings.preSubmit&&e.settings.preSubmit.call(e),this.validate(function(t){if(e.render(),t){var r=e.data();e.settings.submit.call(e,r,e.diffData(r))}else e.settings.error.call(e)})},n.prototype.data=function(){var e={};return this.fields.forEach(function(t){e[t.name]=t.data()}),this.settings.clean&&(e=this.settings.clean(e)),e},n.prototype.errors=function(){var e={};return this.fields.forEach(function(t){t.errors.length&&(e[t.name]=t.errors)}),e},n.prototype.diffData=function(e){var t,r=this.initialData,i={};for(var n in e)e[n]!==r[n]&&(t=!0,i[n]=e[n]);return t?i:void 0},n.prototype.loadDummyData=function(){this.fields.forEach(function(e){e.dummy&&!e.value&&e.setValue(e.dummy)})},n.prototype.clearAll=function(){return this.fields.forEach(function(e){e.inputEl.value="",e.errors=[]}),!0},n.prototype.validate=function(e){var t=!0;r(this.fields,function(e,r){e.validate(function(e){e||(t=!1),r()})},function(){e(t)})},n.prototype.getField=function(e){var t;return this.fields.some(function(r){return r.name===e||r.id===e?(t=r,!0):void 0}),t},n.prototype.submitRe=/(^|\s)submit(\s|$)/,a.prototype.render=function(e){var t,r=o(s.field({field:this}));"string"==typeof this.fieldContainer&&(this.fieldContainer=this.parent.formEl.querySelector("#"+this.fieldContainer)),this.fieldContainer?(t=this.fieldContainer.parentNode,t.replaceChild(r,this.fieldContainer),this.fieldContainer=r):(this.fieldContainer=r,this.parent.fieldContainer.appendChild(r)),this.inputEl=this.fieldContainer.querySelector('[name="'+this.name+'"]'),this.labelEl=this.fieldContainer.querySelector('label[for="'+this.id+'"]'),e?this.resetValue():this.setValue(this.value),this.registerHandlers(),!this.rendered&&this.setup&&this.setup(),this.rendered=!0},a.prototype.registerHandlers=function(){var e=this;this.inputEl.addEventListener("input",function(){e.handleInputChange.apply(e,arguments)},!0),this.inputEl.addEventListener("blur",function(){e.handleInputChange.apply(e,arguments)},!0),this.inputEl.addEventListener("change",function(){e.handleInputChange.apply(e,arguments)},!0),this.inputEl.addEventListener("invalid",function(e){e.preventDefault()},!0)},a.prototype.handleInputChange=function(){var e=this.inputEl,t=this.type;this.value=function(){return-1!==["range","number"].indexOf(t)?e.valueAsNumber:"date"===t?e.valueAsDate:e.value}()},a.prototype.resetValue=function(){var e=this.parent.initialData[this.name]||"";this.setValue(e),this.initial=e},a.prototype.setValue=function(e){this.inputEl&&(this.inputEl.value=e),this.value=e},a.prototype.data=function(){return this.clean?this.clean(this.value):this.trim?i(this.value):this.value},a.prototype.validate=function(e){var t=this,i=this.tests instanceof Array?this.tests:[this.tests],n=!0;this.errors=[],!this.required||this.value&&0!==this.value.length||(n=!1,this.errors.push(this.reqMessage||this.parent.settings.reqMessage)),this.parent.settings.html5Validation&&this.inputEl.validationMessage&&(n=!1,this.errors.push(this.inputEl.validationMessage)),r(i,function(e,r){var i=!1;e.async?e.test.call(t,t.value,t,function(i){i||(n=!1,t.errors.push(e.message)),r(null,i)}):(i=e.test.call(t,t.value,t),i||(n=!1,t.errors.push(e.message)),r(null,i))},function(){e(n)})},a.prototype.get=function(e,t){var r=t||null;return"undefined"==typeof this[e]?r:this[e]},t.exports=n},{"./templates":4,domify:2}],4:[function(require,module,exports){!function(){var root=this,exports={},jade=function(e){function t(e){return null!=e}return Array.isArray||(Array.isArray=function(e){return"[object Array]"==Object.prototype.toString.call(e)}),Object.keys||(Object.keys=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);return t}),e.merge=function(e,r){var i=e["class"],n=r["class"];(i||n)&&(i=i||[],n=n||[],Array.isArray(i)||(i=[i]),Array.isArray(n)||(n=[n]),i=i.filter(t),n=n.filter(t),e["class"]=i.concat(n).join(" "));for(var a in r)"class"!=a&&(e[a]=r[a]);return e},e.attrs=function(t,r){var i=[],n=t.terse;delete t.terse;var a=Object.keys(t),s=a.length;if(s){i.push("");for(var o=0;s>o;++o){var l=a[o],u=t[l];"boolean"==typeof u||null==u?u&&(n?i.push(l):i.push(l+'="'+l+'"')):0==l.indexOf("data")&&"string"!=typeof u?i.push(l+"='"+JSON.stringify(u)+"'"):"class"==l&&Array.isArray(u)?i.push(l+'="'+e.escape(u.join(" "))+'"'):r&&r[l]?i.push(l+'="'+e.escape(u)+'"'):i.push(l+'="'+u+'"')}}return i.join(" ")},e.escape=function(e){return String(e).replace(/&(?!(\w+|\#\d+);)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},e.rethrow=function(e,t,r){if(!t)throw e;var i=3,n=require("fs").readFileSync(t,"utf8"),a=n.split("\n"),s=Math.max(r-i,0),o=Math.min(a.length,r+i),i=a.slice(s,o).map(function(e,t){var i=t+s+1;return(i==r?" > ":" ")+i+"| "+e}).join("\n");throw e.path=t,e.message=(t||"Jade")+":"+r+"\n"+i+"\n\n"+e.message,e},e}({});exports.errors=function anonymous(locals){var buf=[];with(locals||{}){var hasErrors=!!field.errors.length;hasErrors&&(buf.push('<div class="errorContainer">'),function(){var e=field.errors;if("number"==typeof e.length)for(var t=0,r=e.length;r>t;t++){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}else{var r=0;for(var t in e)if(r++,e.hasOwnProperty(t)){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}}}.call(this),buf.push("</div>"))}return buf.join("")},exports.field=function anonymous(locals){var buf=[];with(locals||{}){if("hidden"===field.type,buf.push("<div"+jade.attrs({id:field.containerId,"class":"fieldContainer clearfix"+(field.errors.length?" error":"")},{id:!0,"class":!0})+">"),"hidden"!==field.type){if("before"===field.errorPlacement){var hasErrors=!!field.errors.length;hasErrors&&(buf.push('<div class="errorContainer">'),function(){var e=field.errors;if("number"==typeof e.length)for(var t=0,r=e.length;r>t;t++){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}else{var r=0;for(var t in e)if(r++,e.hasOwnProperty(t)){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}}}.call(this),buf.push("</div>"))}field.label&&buf.push("<label"+jade.attrs({"for":field.id},{"for":!0})+">"+jade.escape(null==(jade.interp=field.label)?"":jade.interp)+"</label>"),field.textarea&&buf.push("<textarea"+jade.attrs({id:field.id,name:field.name,placeholder:field.placeholder},{id:!0,name:!0,placeholder:!0})+"></textarea>"),field.select&&(buf.push("<select"+jade.attrs({id:field.id,name:field.name,"class":field.class},{id:!0,name:!0,"class":!0})+">"),function(){var e=field.options;if("number"==typeof e.length)for(var t=0,r=e.length;r>t;t++){var i=e[t];buf.push("<option"+jade.attrs({value:i.val},{value:!0})+">"+jade.escape(null==(jade.interp=i.text)?"":jade.interp)+"</option>")}else{var r=0;for(var t in e)if(r++,e.hasOwnProperty(t)){var i=e[t];buf.push("<option"+jade.attrs({value:i.val},{value:!0})+">"+jade.escape(null==(jade.interp=i.text)?"":jade.interp)+"</option>")}}}.call(this),buf.push("</select>"))}if(field.input&&buf.push("<input"+jade.attrs({id:field.id,min:field.get("min"),max:field.get("max"),step:field.get("step"),placeholder:field.get("placeholder"),type:field.type,name:field.name,autocomplete:field.autocomplete||null},{id:!0,min:!0,max:!0,step:!0,placeholder:!0,type:!0,name:!0,autocomplete:!0})+"/>"),"after"===field.errorPlacement&&"hidden"!==field.type){var hasErrors=!!field.errors.length;hasErrors&&(buf.push('<div class="errorContainer">'),function(){var e=field.errors;if("number"==typeof e.length)for(var t=0,r=e.length;r>t;t++){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}else{var r=0;for(var t in e)if(r++,e.hasOwnProperty(t)){var i=e[t];i&&buf.push('<span class="error">'+(null==(jade.interp=i)?"":jade.interp)+"</span>")}}}.call(this),buf.push("</div>"))}"hidden"!==field.type&&field.helpText&&buf.push("<p"+jade.attrs({id:field.id+"_helpText","class":"helpText"},{id:!0})+">"+jade.escape(null==(jade.interp=field.helpText)?"":jade.interp)+"</p>"),buf.push("</div>")}return buf.join("")},exports.form=function anonymous(locals){var buf=[];with(locals||{})buf.push('<form><div class="fields"></div><button type="submit">Submit</button><button type="reset">Cancel</button></form>');return buf.join("")},"undefined"!=typeof module?module.exports=exports:"function"==typeof define&&define.amd?define(exports):root.templatizer=exports}()},{fs:1}]},{},[3])(3)});
\No newline at end of file