AZaviruha/react-form-generator

View on GitHub
demo/client/js/react-form-generator.global.min.js

Summary

Maintainability
A
0 mins
Test Coverage
!function e(n,t,r){function i(s,o){if(!t[s]){if(!n[s]){var l="function"==typeof require&&require;if(!o&&l)return l(s,!0);if(a)return a(s,!0);throw new Error("Cannot find module '"+s+"'")}var u=t[s]={exports:{}};n[s][0].call(u.exports,function(e){var t=n[s][1][e];return i(t?t:e)},u,u.exports,e,n,t,r)}return t[s].exports}for(var a="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,n,t){function r(){for(var e,n="",t=0;t<arguments.length;t++)if(e=arguments[t])if("string"==typeof e||"number"==typeof e)n+=" "+e;else if("[object Array]"===Object.prototype.toString.call(e))n+=" "+r.apply(null,e);else if("object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&e[i]&&(n+=" "+i);return n.substr(1)}"undefined"!=typeof n&&n.exports&&(n.exports=r),"undefined"!=typeof define&&define.amd&&define("classnames",[],function(){return r})},{}],2:[function(e,n,t){function r(n){n=n||{};var t=e("../../validation")(n.validators),r=t.validateField,c=[].concat(n.mixins||[]),d=o({text:e("./primitives/text")(a,s),textarea:e("./primitives/textarea")(a,s),checkbox:e("./primitives/checkbox")(a,s),radiogroup:e("./primitives/radiogroup")(a,s),select:e("./primitives/select")(a,s),button:e("./primitives/button")(a,s)},u(n,"primitives",{})),f=o({"default":e("./layouts/simpleFormField")(a,s),unwrapped:e("./layouts/unwrapped")(a,s),label:e("./layouts/label")(a,s),header:e("./layouts/header")(a,s)},u(n,"layouts",{})),h=i.createClass({displayName:"GeneratedForm",propTypes:{meta:i.PropTypes.object.isRequired,value:i.PropTypes.object,errors:i.PropTypes.object,onChange:i.PropTypes.func,onEvent:i.PropTypes.func},mixins:c,getDefaultProps:function(){return{key:"generated-form-"+Date.now(),onChange:function(){},onEvent:function(){}}},getFieldValue:function(e){return l(this.props.value,e)},getFieldErrors:function(e){var n=u(this,"props.errors",{});return l(n,e)},handleFieldChanged:function(e){var n=e.id,t=e.meta,i=this.props.value,a=l(e.value,n),s=r(n,t,a);this.props.onChange(o(i,e.value),e.value,s)},handleFieldEvent:function(e,n,t){this.props.onEvent(e,n,t)},render:function(){var e=u(this,"props.meta",{}),n=e.fields;return s.isDefined(n)?this.renderLayout(e.layout.grid):null},renderLayout:function(e,n){return i.createElement("div",{className:e.css,key:n},this.renderLayoutRows(e.rows||[]))},renderLayoutRows:function(e){var n=this;return e.map(function(e,t){return i.createElement("div",{key:"generated-layout-row"+t,className:e.css},n.renderLayoutCells(e))})},renderLayoutCells:function(e){var n=this,t=u(e,"cells",[]);return t.map(function(e,t){return i.createElement("div",{key:"generated-layout-cell"+t,className:e.css},n.renderCellContent(e))})},renderCellContent:function(e){var n,t=this,r=this.props.meta||{},a=u(e,"content",[]);return a.map(function(e,a){var s=u(e,"rendererSpecific"),o=s.fieldID,c=l(r.fields,o),d={fieldID:o,meta:c,css:s.css,value:t.getFieldValue(o),errors:t.getFieldErrors(o),onChange:t.handleFieldChanged,onEvent:t.handleFieldEvent},h=l(e,"renderer"),v="generated-field-"+a;return"field"===h?i.createElement(p,{key:v,config:d}):"grid"===h?t.renderLayout(e.rendererSpecific,v):(n=f[e.renderer||"default"],n?i.createElement(n,{key:v,meta:e,field:d},o?i.createElement(p,{config:d}):null):null)})}}),p=i.createClass({displayName:"GeneratedField",mixins:[],render:function(){var e=this.props,n=l(e,"config.meta.renderer"),t=l(d,n);return t?i.createElement(t,{config:e.config}):null}});return h.validateForm=t.validateForm,h.isFormValid=t.isFormValid,h}var i=window.React,a=i,s=e("../../tools"),o=s.merge,l=s.getOrNull,u=s.getOrDefault;r.tools=s,window.FormGenerator=r},{"../../tools":17,"../../validation":20,"./layouts/header":3,"./layouts/label":4,"./layouts/simpleFormField":5,"./layouts/unwrapped":6,"./primitives/button":7,"./primitives/checkbox":8,"./primitives/radiogroup":9,"./primitives/select":10,"./primitives/text":11,"./primitives/textarea":12}],3:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){return e.createClass({mixins:[r.LayoutAccessors],getHeader:function(n,t){return{1:e.createElement("h1",null,t),2:e.createElement("h2",null,t),3:e.createElement("h3",null,t),4:e.createElement("h4",null,t),5:e.createElement("h5",null,t),6:e.createElement("h6",null,t)}[n]},render:function(){var n=this._css(),t=(this._field(),this._spec());return e.createElement("div",{className:n.wrapper,key:this.props.key},this.getHeader(t.size,t.text))}})}},{"./../../../mixins":13}],4:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){return e.createClass({mixins:[r.LayoutAccessors],render:function(){{var n=this._css();this._field()}return e.createElement("div",{className:n.wrapper,key:this.props.key},e.createElement("label",null,this._spec().text))}})}},{"./../../../mixins":13}],5:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){var t=(n.getOrNull,n.getOrDefault);return e.createClass({mixins:[r.LayoutAccessors],render:function(){var n=this._css(),t=this._field(),r=t.meta;return!r||r.isHidden?null:e.createElement("div",{className:n.wrapper,key:this.props.key},e.createElement("label",{className:n.label,htmlFor:t.fieldID},this._spec().label),e.createElement("div",{className:n.field},this.props.children),e.createElement("div",{className:n.errors},this.renderErrors()))},renderErrors:function(){var n=(this._css(),this._field()),r=n.fieldID,i=t(n,"errors",[]),a="validation-error-of-"+r+"-";return i.map(function(n,t){return e.createElement("div",{key:a+t,className:"validation-error"},n.message)})}})}},{"./../../../mixins":13}],6:[function(e,n,t){n.exports=function(e,n){return e.createClass({render:function(){return this.props.children}})}},{}],7:[function(e,n,t){var r=e("classnames"),i=e("./../../../mixins");n.exports=function(e,n){n.getOrDefault;return e.createClass({displayName:"ButtonRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[i.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleEvent:i.handleEvent,render:function(){var n=this.props.config,t=this._meta(),i=this._spec(),a="string"==typeof n.css,s=r("generated-button-field",a&&n.css);return t.isHidden?null:e.createElement("button",{id:n.fieldID,className:s,disabled:t.isDisabled,onBlur:this.handleEvent("blur"),onFocus:this.handleEvent("focus"),onClick:this.handleEvent("click")},i.text)}})}},{"./../../../mixins":13,classnames:1}],8:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){var t=(n.getOrDefault,n.getOrNull);return e.createClass({displayName:"CheckboxRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[r.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleOnChange:function(e){var n=t(this._spec(),"truthMap"),r=e.target.checked?"true":"false",i=n?n[r]:r,a={id:this._conf().fieldID,meta:this._meta(),value:{}};a.value[a.id]=i,this.handleEvent("change")(e),this._conf().onChange(a)},handleEvent:r.handleEvent,render:function(){var n=this._conf(),r=this._meta(),i=this._spec(),a=n.value,s=t(i,"truthMap"),o=s?s["true"]===a:a;return r.isHidden?null:e.createElement("input",{id:n.fieldID,type:"checkbox",className:"generated-checkbox-field",name:i.name,checked:o,readOnly:r.isReadOnly||r.isDisabled,onChange:this.handleOnChange,onBlur:this.handleEvent("blur"),onFocus:this.handleEvent("focus"),onKeyPress:this.handleEvent("keypress")})}})}},{"./../../../mixins":13}],9:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){var t=(n.getOrDefault,n.getOrNull);return e.createClass({displayName:"RadiogroupRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[r.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleOnChange:function(e,n){var t={id:this._conf().fieldID,meta:this._meta(),value:{}};t.value[t.id]=n.id,this.handleEvent("change")(e),this._conf().onChange(t)},handleEvent:r.handleEvent,render:function(){var n=this._conf(),t=this._meta(),r=this._spec();return t.isHidden?null:e.createElement("div",{className:"generated-radiogroup-field",id:n.fieldID},this.renderItems(r.possibleValues))},renderItems:function(n){var r=this,i=this._conf(),a=this._meta();return(n||[]).map(function(n,s){function o(e){return r.handleOnChange(e,n)}var l=t(i,"value"),u=n.id===l,c=a.isReadOnly||a.isDisabled,d=i.fieldID+"-"+s;return e.createElement("label",{key:d},e.createElement("span",{className:"generated-radio-label"},n.text),e.createElement("input",{type:"radio",className:"generated-radio-item",name:n.name,checked:u,readOnly:c,onChange:o,onBlur:r.handleEvent("blur"),onFocus:r.handleEvent("focus"),onKeyPress:r.handleEvent("keypress")}))})}})}},{"./../../../mixins":13}],10:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){n.getOrDefault,n.getOrNull;return e.createClass({displayName:"SelectRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[r.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleOnChange:function(e){var n={id:this._conf().fieldID,meta:this._meta(),value:{}};n.value[n.id]=e.target.value,this.handleEvent("change")(e),this._conf().onChange(n)},handleEvent:r.handleEvent,render:function(){var n=this._conf(),t=this._spec(),r=this._meta();return r.isHidden?null:e.createElement("select",{id:n.fieldID,disabled:r.isDisabled,className:"generated-select-field",value:n.value,onBlur:this.handleEvent("blur"),onFocus:this.handleEvent("focus"),onChange:this.handleOnChange},this.renderItems(t.possibleValues))},renderItems:function(n){{var t=this._conf();this._meta()}return(n||[]).map(function(n,r){var i=t.fieldID+"-"+r;return e.createElement("option",{key:i,className:"generated-select-item",value:n.id},n.text)})}})}},{"./../../../mixins":13}],11:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){n.getOrDefault;return e.createClass({displayName:"TextRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[r.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleOnChange:function(e){var n={id:this._conf().fieldID,meta:this._meta(),value:{}};n.value[n.id]=e.target.value,this.handleEvent("change")(e),this._conf().onChange(n)},handleEvent:r.handleEvent,render:function(){var n=this.props.config,t=this._meta(),r=this._spec();return t.isHidden?null:e.createElement("input",{id:n.fieldID,type:"text",className:"generated-text-field",name:r.name,value:n.value,readOnly:t.isReadOnly||t.isDisabled,onChange:this.handleOnChange,onBlur:this.handleEvent("blur"),onFocus:this.handleEvent("focus"),onKeyPress:this.handleEvent("keypress")})}})}},{"./../../../mixins":13}],12:[function(e,n,t){var r=e("./../../../mixins");n.exports=function(e,n){n.getOrDefault;return e.createClass({displayName:"TextareaRenderer",propTypes:{config:e.PropTypes.object.isRequired},mixins:[r.PrimitiveAccessors],getDefaultProps:function(){return{config:{}}},handleOnChange:function(e){var n={id:this._conf().fieldID,meta:this._meta(),value:{}};n.value[n.id]=e.target.value,this.handleEvent("change")(e),this._conf().onChange(n)},handleEvent:r.handleEvent,render:function(){var n=this.props.config,t=this._meta(),r=this._spec();return t.isHidden?null:e.createElement("textarea",{id:n.fieldID,className:"generated-textarea-field",name:r.name,cols:r.cols,rows:r.rows,value:n.value,readOnly:t.isReadOnly||t.isDisabled,onChange:this.handleOnChange,onBlur:this.handleEvent("blur"),onFocus:this.handleEvent("focus"),onKeyPress:this.handleEvent("keypress")})}})}},{"./../../../mixins":13}],13:[function(e,n,t){var r=e("./layouts"),i=e("./primitives");n.exports={LayoutAccessors:r.LayoutAccessors,PrimitiveAccessors:i.PrimitiveAccessors,handleEvent:i.handleEvent}},{"./layouts":14,"./primitives":15}],14:[function(e,n,t){var r=e("./../tools"),i=(r.getOrNull,r.getOrDefault),a={componentWillMount:function(){this._meta=function(){return i(this,"props.meta",{})},this._spec=function(){return i(this._meta(),"rendererSpecific",{})},this._css=function(){var e={wrapper:"",inner:""};return i(this._spec(),"css",e)},this._field=function(){return i(this,"props.field",{})}}};n.exports={LayoutAccessors:a}},{"./../tools":17}],15:[function(e,n,t){function r(e){var n=this;return function(t){var r=n._conf().fieldID,i={path:[r,e].join(":"),originalEvent:t};n._conf().onEvent(r,e,i)}}var i=e("./../tools"),a=(i.getOrNull,i.getOrDefault),s={componentWillMount:function(){this._conf=function(){return a(this,"props.config",{})},this._meta=function(){return a(this._conf(),"meta",{})},this._spec=function(){return a(this._meta(),"rendererSpecific",{})}}};n.exports={PrimitiveAccessors:s,handleEvent:r}},{"./../tools":17}],16:[function(e,n,t){function r(e){return null!==e&&void 0!==e}function i(e){return"[object Array]"===Object.prototype.toString.call(e)}function a(e){return"string"==typeof e}function s(e,n,t){var s=i(n);if(!r(e))return t;if(!a(n)&&!s)return t;var o,l,u=s?n:n.split(".");for(o in u){if(l=u[o],!r(e[l]))return t;e=e[l]}return e}function o(e,n){return s(e,n,null)}function l(e,n){for(var t,r,i={},a=0,s=n.length;s>a;a++)r=n[a],t=o(r,e),t&&(i[t]=r);return i}function u(e,n,t){return t.forEach(function(t,r){n=e(n,t,r)}),n}function c(e,n,t){var r,i;for(r in t)t.hasOwnProperty(r)&&(i=t[r],n=e(n,i,r));return n}function d(e,n,t){return r(t)?i(t)?u(e,n,t):c(e,n,t):n}function f(e){return m.apply(e)}function h(e,n){function t(e,n){if(!r(e))return n;if(!r(n))return e;for(var t in n)e[t]=n[t];return e}var i,a=f(arguments);if(0===a.length)return{};if(1===a.length)return e;if(2===a.length)return t(e,n);for(i=t(e,n),a=a.slice(2);a.length;)i=t(i,a[0]),a=a.slice(1);return i}function p(e,n){return e&&n}function v(e,n){return e||n}var m=Array.prototype.slice;n.exports={isDefined:r,isArray:i,isString:a,getOrDefault:s,getOrNull:o,arrayToObject:l,reduce:d,merge:h,argsToArray:f,and:p,or:v}},{}],17:[function(e,n,t){var r=e("./general"),i=e("./serializers"),a=e("./routing");n.exports={isDefined:r.isDefined,isArray:r.isArray,getOrDefault:r.getOrDefault,getOrNull:r.getOrNull,arrayToObject:r.arrayToObject,reduce:r.reduce,merge:r.merge,or:r.or,and:r.and,evalDefaults:i.evalDefaults,buildRouter:a.buildRouter}},{"./general":16,"./routing":18,"./serializers":19}],18:[function(e,n,t){function r(){var e,n,t,r,a,s=i.argsToArray(arguments),o={},l=[];if(0===s.length||s.length%2!==0)throw new Error("Wrong number of arguments!");for(n=0,t=s.length;t>n;n+=2)r=s[n],a=s[n+1],r instanceof RegExp?l.push([r,a]):o[r]=a;return e=l.length,function(n){var t,r,a,s,u=i.argsToArray(arguments).slice(1);if(r=o[n],!i.getOrNull(r,"length"))for(a=0;e>a;a++)if(t=l[a][0],t.test(n)){r=l[a][1];break}if(r&&r.length)for(a=0,s=r.length;s>a;a++)r[a].apply(this,u)}}var i=e("./general");n.exports={buildRouter:r}},{"./general":16}],19:[function(e,n,t){function r(e){var n=i.getOrDefault(e,"fields",{});return i.reduce(function(e,n,t){return e[t]=i.getOrNull(n,"defaultValue"),e},{},n)}var i=e("./general");n.exports={evalDefaults:r}},{"./general":16}],20:[function(e,n,t){var r=e("../tools"),i=r.reduce,a=r.getOrNull;n.exports=function(n){function t(e,n){return function(t,r,a){var s=t.value;return i(function(n,t){var i=h[t.rule];return o(i,t.rule),e(n,i(t,r,a))},n,s)}}function s(e,n,t){var r=e.rule,i=h[r];return o(i,r),i(e,n,t)?null:e}function o(e,n){if(!e)throw new Error("Valdiation rule does not exist: "+n)}function l(e,n,t){return(e||[]).map(function(e){return s(e,n,t)}).filter(function(e){return null!==e})}function u(e,n,t){var r={},i=l(n.validators,t,n);return r[e]=i.length?i:null,r}function c(e,n){return i(function(e,t,i){var s=a(n,i),o=u(i,t,s);return r.merge(e,o)},{},e)}function d(e,n){var t=a(e,"fields"),s=i(function(e,n,t){var i=!r.isDefined(n.validators)||n.isHidden||n.isReadOnly,a={};return i?e:(a[t]=n,r.merge(e,a))},{},t);return c(s,n)}function f(e){return r.reduce(function(e,n,t){return e&&!(n&&n.length)},!0,e)}n=n||{};var h=r.merge(e("./validators"),n.validators);return h.or=t(r.or,!1),h.and=t(r.and,!0),{validateField:u,validateForm:d,isFormValid:f}}},{"../tools":17,"./validators":21}],21:[function(e,n,t){var r=e("../tools"),i=r.getOrNull,a=r.getOrDefault;n.exports={empty:function(e,n){return r.isArray(n)?!n.length:!n},required:function(e,n){return r.isArray(n)?!!n.length:!!n},requiredKey:function(e,n){var t=e.value;return!!i(n,t)},regexp:function(e,n){return new RegExp(e.value).test(n)},maxLength:function(e,n){var t=a(e,"value",0),r=a(n,"length",0);return t>=r},minLength:function(e,n){var t=a(e,"value",0),r=a(n,"length",0);return r>=t},length:function(e,n){var t=a(e,"value",0),r=a(n,"length",0);return r===t},numbers:function(e,n){return/^\d*$/.test(n)},alphabetics:function(e,n){return/^[A-z]*$/.test(n)}}},{"../tools":17}]},{},[2]);