diff --git a/README.md b/README.md new file mode 100644 index 0000000..09a8da7 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# Vue Formulate +--------------- + +### What is it? + +Vue Formulate is a (Vue)[https://vuejs.org/] plugin that exposes an elegant +mechanism for building and validating forms with a centralized data store. + +### Installation + +First download the `vue-formulate` package from npm: + +```sh +npm install vue-formulate +``` + +Install `vue-formulate` like any other vue plugin: + +```js +import Vue from 'vue +import formulate from 'vue-formulate; + +Vue.use(formulate) +``` +Finally `vue-formulate` needs to access your vuex store. You can choose to. + +### Usage + +`vue-formulate` automatically registers two components `formulate` and +`formulate-element`. These two elements are able to address most of your form +building needs. Here's a simple example: + +```html + +``` + +### Validation Rules + +There are several built in validation methods and you are easily able to add +your own. + +Rule | Arguments +----------|--------------- +required | label +email | label +confirmed | label, confirmation field + +You can add as many validation rules as you want to each `formulate-element`, +simply chain your rules with pipes `|'. + +``` +validation="required(My Label)|confirmed(Password Field, confirmation_field)" +``` + +Adding your own validation rules is simple, simply pass an additional object +of rules in your installation: + +```js +Vue.use(formulate, { + rules: { + isPizza: ({field, value, error, values}, label) => value === 'pizza' ? false : `${label || field} is not pizza.` + } +}) +``` + +Validation rules expect a return of `false` if there are no errors, or a error +message string. Validation rules are all passed an object with the `field` name, +`value` of the field, `error` function to generate an error message, and all the +`values` of the entire form. + +### Full Documentation + +There are many more options available, more documentation coming soon. diff --git a/dist/index.js b/dist/index.js index 33c05c1..680a4a6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,43 +1 @@ -!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("vue-formulate",[],r):"object"==typeof exports?exports["vue-formulate"]=r():t["vue-formulate"]=r()}("undefined"!=typeof self?self:this,function(){return function(t){function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var e={};return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="",r(r.s=9)}([function(t,r,e){"use strict";function n(){p=!1}function o(t){if(!t)return void(f!==h&&(f=h,n()));if(t!==f){if(t.length!==h.length)throw new Error("Custom alphabet for shortid must be "+h.length+" unique characters. You submitted "+t.length+" characters: "+t);var r=t.split("").filter(function(t,r,e){return r!==e.lastIndexOf(t)});if(r.length)throw new Error("Custom alphabet for shortid must be "+h.length+" unique characters. These characters were not unique: "+r.join(", "));f=t,n()}}function i(t){return o(t),f}function a(t){d.seed(t),l!==t&&(n(),l=t)}function u(){f||o(h);for(var t,r=f.split(""),e=[],n=d.nextValue();r.length>0;)n=d.nextValue(),t=Math.floor(n*r.length),e.push(r.splice(t,1)[0]);return e.join("")}function s(){return p||(p=u())}function c(t){return s()[t]}var f,l,p,d=e(27),h="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";t.exports={characters:i,seed:a,lookup:c,shuffled:s}},function(t,r,e){t.exports=e(10)},function(t,r,e){"use strict";function n(t){return!0===o(t)&&"[object Object]"===Object.prototype.toString.call(t)}/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -var o=e(15);t.exports=function(t){var r,e;return!1!==n(t)&&("function"==typeof(r=t.constructor)&&(e=r.prototype,!1!==n(e)&&!1!==e.hasOwnProperty("isPrototypeOf")))}},function(t,r){t.exports=function(t,r,e,n,o,i){var a,u=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(a=t,u=t.default);var c="function"==typeof u?u.options:u;r&&(c.render=r.render,c.staticRenderFns=r.staticRenderFns,c._compiled=!0),e&&(c.functional=!0),o&&(c._scopeId=o);var f;if(i?(f=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},c._ssrRegister=f):n&&(f=n),f){var l=c.functional,p=l?c.render:c.beforeCreate;l?(c._injectStyles=f,c.render=function(t,r){return f.call(r),p(t,r)}):c.beforeCreate=p?[].concat(p,f):[f]}return{esModule:a,exports:u,options:c}}},function(t,r,e){"use strict";function n(t){return function(){var r=t.apply(this,arguments);return new Promise(function(t,e){function n(o,i){try{var a=r[o](i),u=a.value}catch(t){return void e(t)}if(!a.done)return Promise.resolve(u).then(function(t){n("next",t)},function(t){n("throw",t)});t(u)}return n("next")})}}Object.defineProperty(r,"__esModule",{value:!0});var o=e(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=e(5);r.default={props:{name:{type:String,required:!0},module:{type:[String,Boolean],default:function(){return this.$formulate.options.vuexModule}},initial:{type:Object,default:function(){return{}}}},data:function(){return{parentIdentifier:"vue-formulate-wrapper-element"}},computed:{m:function(){return this.module?this.module+"/":""},hasErrors:function(){return this.$store.getters[this.m+"hasErrors"][this.name]||!1},values:function(){return this.$store.getters[this.m+"formValues"][this.name]||{}},errors:function(){return this.$store.getters[this.m+"formErrors"][this.name]||{}},validationErrors:function(){return this.$store.getters[this.m+"formValidationErrors"][this.name]||{}},fields:function(){return this.$formulate.fields(this.$vnode)}},created:function(){this.hydrate(this.initial)},methods:{hydrate:function(t){var r=!0,e=!1,n=void 0;try{for(var o,i=this.fields[Symbol.iterator]();!(r=(o=i.next()).done);r=!0){var a=o.value;this.$store.commit(this.m+"setFieldValue",{field:a.name,value:t[a.name],form:this.name})}}catch(t){e=!0,n=t}finally{try{!r&&i.return&&i.return()}finally{if(e)throw n}}this.updateFormValidation()},update:function(t){this.$store.commit(this.m+"setFieldValue",Object.assign(t,{form:this.name})),this.updateFormValidation()},updateFieldErrors:function(t){this.$store.commit(this.m+"setFieldErrors",Object.assign(t,{form:this.name}))},updateFieldValidationErrors:function(t){this.$store.commit(this.m+"setFieldValidationErrors",Object.assign(t,{form:this.name}))},validateField:function(){function t(t){return r.apply(this,arguments)}var r=n(i.default.mark(function t(r){var e,n=r.field,o=r.validation;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.$formulate.validationErrors({field:n,value:this.values[n]},o,this.values);case 2:return e=t.sent,(0,a.equals)(e,this.validationErrors[n]||[])||this.updateFieldValidationErrors({field:n,errors:e}),t.abrupt("return",e);case 5:case"end":return t.stop()}},t,this)}));return t}(),updateFormValidation:function(){var t=this;this.fields.map(function(){var r=n(i.default.mark(function r(e){return i.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",t.validateField({field:e.name,validation:e.validation}));case 1:case"end":return r.stop()}},r,t)}));return function(t){return r.apply(this,arguments)}}())},submit:function(){alert("submitting form")}}}},function(t,r,e){"use strict";function n(t,r){var e=t.length;if(e!==r.length)return!1;for(var n=0;n - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -t.exports=function(t,r,e){for(var n in t)if(!1===r.call(e,t[n],n,t))break}},function(t,r,e){"use strict";function n(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}Object.defineProperty(r,"__esModule",{value:!0});var o=e(5),i=e(25),a=function(t){return t&&t.__esModule?t:{default:t}}(i);r.default={props:{type:{type:[String,Boolean],default:"text"},name:{type:String,required:!0},initial:{type:[String,Boolean],default:!1},validation:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},label:{type:[String,Boolean],default:!1},id:{type:[String],default:function(){return a.default.generate()}}},computed:{hasCustomInput:function(){return this.$slots.default&&this.$slots.default.length},isTextInput:function(){return!this.hasCustomInput&&o.inputTypes.text.includes(this.type)},isButtonInput:function(){return!this.hasCustomInput&&o.inputTypes.button.includes(this.type)},isListInput:function(){return!this.hasCustomInput&&o.inputTypes.list.includes(this.type)},form:function(){for(var t=this.$parent;t&&t.$data&&"vue-formulate-wrapper-element"!==t.$data.parentIdentifier;)t=t.$parent;if(!t.$data||"vue-formulate-wrapper-element"!==t.$data.parentIdentifier)throw new Error("FormulateElement has no FormulateWrapper element");return t},values:function(){return this.form.values},value:function(){return this.values[this.name]},module:function(){return this.form.$props.module},formName:function(){return this.form.$props.name},validationErrors:function(){return this.form.validationErrors[this.name]||[]},storeErrors:function(){return this.form.errors[this.name]||[]},localAndValidationErrors:function(){return this.errors.concat(this.validationErrors)},attributes:function(){return this.$props},val:{set:function(t){this.form.update({field:this.name,value:t}),this.$refs.input.value=t},get:function(){return this.value}}},watch:{errors:function(){this.form.updateFieldErrors({field:this.name,errors:this.localAndValidationErrors})}},created:function(){!1!==this.initial&&this.form.hydrate(n({},this.name,this.initial))}}},function(t,r,e){"use strict";function n(t,r){for(var e,n=0,i="";!e;)i+=t(r>>4*n&15|o()),e=r1&&void 0!==arguments[1]?arguments[1]:{};t.prototype.$formulate=this,r=Object.assign(this.defaultOptions,r),r.registerComponents&&(t.component(r.tags.Formulate,d.default),t.component(r.tags.FormulateElement,m.default)),r.errors&&(this.errors=Object.assign(this.errors,r.errors)),r.rules&&(this.rules=Object.assign(this.rules,r.rules)),this.options=r}},{key:"parseRules",value:function(t){return t.split("|").map(function(t){return t.trim()}).map(function(t){return t.match(/([a-zA-Z0-9]+)\((.*)?\)/)||[null,t,""]}).map(function(t){var r=c(t,3),e=(r[0],r[1]),n=r[2];return Object.assign({},{rule:e},n?{args:n.split(",").map(function(t){return t.trim()})}:{args:[]})})}},{key:"errorFactory",value:function(t){return this.errors[t]?this.errors[t]:this.errors.default}},{key:"fields",value:function(t){var r=this,e=[],n=!1;return t&&t.componentOptions&&t.componentOptions.children&&t.componentOptions.children.length?n=t.componentOptions.children:t&&t.children&&t.children.length&&(n=t.children),n&&(e=e.concat(n.reduce(function(t,e){return e.componentOptions&&e.componentOptions.tag===r.options.tags.FormulateElement&&t.push(e.componentOptions.propsData),t.concat(r.fields(e))},[]))),e}},{key:"validationErrors",value:function(){function t(t,e,n){return r.apply(this,arguments)}var r=i(s.default.mark(function t(r,e,n){var i=r.field,a=r.value,u=this;return s.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!!e&&Promise.all(this.parseRules(e).map(function(t){var r,e=t.rule,s=t.args;return(r=u.rules)[e].apply(r,[{field:i,value:a,error:u.errorFactory(e),values:n}].concat(o(s)))})).then(function(t){return t.reduce(function(t,r){return r?Array.isArray(t)?t.concat(r):[r]:t},!1)}));case 1:case"end":return t.stop()}},t,this)}));return t}()}]),t}(),w=new x;r.default=w;r.mapModels=function(t){var r={};for(var e in t)!function(e){var n=t[e].split("/"),o=c(n,2),i=o[0],a=o[1];r[e]={set:function(t){var r=w.options.vuexModule?w.options.vuexModule+"/":"";this.$store.commit(r+"setFieldValue",{form:i,field:a,value:t})},get:function(){var t=w.options.vuexModule?w.options.vuexModule+"/":"";return this.$store.getters[t+"formValues"][i]?this.$store.getters[t+"formValues"][i][a]:""}}}(e);return r}},function(t,r,e){var n=function(){return this}()||Function("return this")(),o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=e(11),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(t){n.regeneratorRuntime=void 0}},function(t,r){!function(r){"use strict";function e(t,r,e,n){var i=r&&r.prototype instanceof o?r:o,a=Object.create(i.prototype),u=new d(n||[]);return a._invoke=c(t,e,u),a}function n(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}function o(){}function i(){}function a(){}function u(t){["next","throw","return"].forEach(function(r){t[r]=function(t){return this._invoke(r,t)}})}function s(t){function r(e,o,i,a){var u=n(t[e],t,o);if("throw"!==u.type){var s=u.arg,c=s.value;return c&&"object"==typeof c&&g.call(c,"__await")?Promise.resolve(c.__await).then(function(t){r("next",t,i,a)},function(t){r("throw",t,i,a)}):Promise.resolve(c).then(function(t){s.value=t,i(s)},a)}a(u.arg)}function e(t,e){function n(){return new Promise(function(n,o){r(t,e,n,o)})}return o=o?o.then(n,n):n()}var o;this._invoke=e}function c(t,r,e){var o=O;return function(i,a){if(o===k)throw new Error("Generator is already running");if(o===F){if("throw"===i)throw a;return m()}for(e.method=i,e.arg=a;;){var u=e.delegate;if(u){var s=f(u,e);if(s){if(s===P)continue;return s}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(o===O)throw o=F,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);o=k;var c=n(t,r,e);if("normal"===c.type){if(o=e.done?F:A,c.arg===P)continue;return{value:c.arg,done:e.done}}"throw"===c.type&&(o=F,e.method="throw",e.arg=c.arg)}}}function f(t,r){var e=t.iterator[r.method];if(e===v){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=v,f(t,r),"throw"===r.method))return P;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return P}var o=n(e,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,P;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=v),r.delegate=null,P):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,P)}function l(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function p(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function d(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(l,this),this.reset(!0)}function h(t){if(t){var r=t[x];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var e=-1,n=function r(){for(;++e=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var a=g.call(o,"catchLoc"),u=g.call(o,"finallyLoc");if(a&&u){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&g.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),p(e),P}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;p(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,e){return this.delegate={iterator:h(t),resultName:r,nextLoc:e},"next"===this.method&&(this.arg=v),P}}}(function(){return this}()||Function("return this")())},function(t,r,e){"use strict";function n(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}Object.defineProperty(r,"__esModule",{value:!0}),r.formulateModule=r.formulateMutations=r.formulateActions=r.formulateGetters=r.formulateState=void 0;var o=e(5),i=r.formulateState=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){return Object.assign({values:{},errors:{},validationErrors:{}},t)}},a=r.formulateGetters=function(){var t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign({formValues:function(t){return t.values},formErrors:function(t){return t.errors},formValidationErrors:function(t){return t.validationErrors},hasErrors:function(t){return(0,o.map)(t.errors,function(t,r){return(0,o.reduce)(r,function(t,r,e){return t||!!e.length},!1)})}},t)},u=r.formulateActions=function(){var t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign({},t)},s=r.formulateMutations=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.assign({setFieldValue:function(t,r){var e=r.form,o=r.field,i=r.value;t.values=Object.assign({},t.values,n({},e,Object.assign({},t.values[e]||{},n({},o,i))))},setFieldErrors:function(t,r){var e=r.form,o=r.field,i=r.errors;t.errors=Object.assign({},t.errors,n({},e,Object.assign({},t.errors[e]||{},n({},o,i))))},setFieldValidationErrors:function(t,r){var e=r.form,o=r.field,i=r.errors;t.validationErrors=Object.assign({},t.validationErrors,n({},e,Object.assign({},t.validationErrors[e]||{},n({},o,i))))}},t)};r.formulateModule=function(t){return{state:i(),getters:a(t),actions:u(t),mutations:s()}}},function(t,r,e){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e(4),o=e.n(n);for(var i in n)"default"!==i&&function(t){e.d(r,t,function(){return n[t]})}(i);var a=e(23),u=e(3),s=u(o.a,a.a,!1,null,null,null);s.options.__file="src/components/Formulate.vue",r.default=s.exports},function(t,r,e){"use strict";function n(t,r){switch(s(t)){case"object":return o(t,r);case"array":return i(t,r);default:return u(t)}}function o(t,r){if(a(t)||!0===r&&"object"===s(t)){var e={};return c(t,function(t,e){this[e]=n(t,r)},e),e}return"function"==typeof r?r(t):t}function i(t,r){for(var e=[],o=0;o - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -t.exports=function(t){return null!=t&&"object"==typeof t&&!1===Array.isArray(t)}},function(t,r,e){"use strict";function n(t){var r=a(t);return n.hasOwnProperty(r)?n[r](t):t}/*! - * shallow-clone - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ -var o=e(17),i=e(18),a=e(20);n.array=function(t){return t.slice()},n.date=function(t){return new Date(+t)},n.object=function(t){return o(t)?i({},t):t},n.map=function(t){return new Map(t)},n.regexp=function(t){var r="";return r+=t.multiline?"m":"",r+=t.global?"g":"",r+=t.ignoreCase?"i":"",new RegExp(t.source,r)},n.set=function(t){return new Set(t)},t.exports=n},function(t,r,e){"use strict";/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ -var n=e(2);t.exports=function(t){return n(t)||"function"==typeof t||Array.isArray(t)}},function(t,r,e){"use strict";function n(t,r){o(r)&&i(r,function(r,e){t[e]=r})}var o=e(19),i=e(6);t.exports=function(t,r){if(!o(t))throw new TypeError("expected the first argument to be an object");for(var e=arguments.length,i=0;++i - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ -var n=e(2);t.exports=function(t){return n(t)||"function"==typeof t||Array.isArray(t)}},function(t,r){function e(t){return t.constructor?t.constructor.name:null}function n(t){return Array.isArray?Array.isArray(t):t instanceof Array}function o(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}function i(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}function a(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}function u(t,r){return"GeneratorFunction"===e(t)}function s(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}function c(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}function f(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var l=Object.prototype.toString;t.exports=function(t){if(void 0===t)return"undefined";if(null===t)return"null";var r=typeof t;if("boolean"===r)return"boolean";if("string"===r)return"string";if("number"===r)return"number";if("symbol"===r)return"symbol";if("function"===r)return u(t)?"generatorfunction":"function";if(n(t))return"array";if(f(t))return"buffer";if(c(t))return"arguments";if(i(t))return"date";if(o(t))return"error";if(a(t))return"regexp";switch(e(t)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(s(t))return"generator";switch(r=l.call(t)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")}},function(t,r){function e(t){return t.constructor?t.constructor.name:null}function n(t){return Array.isArray?Array.isArray(t):t instanceof Array}function o(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}function i(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}function a(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}function u(t,r){return"GeneratorFunction"===e(t)}function s(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}function c(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}function f(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var l=Object.prototype.toString;t.exports=function(t){if(void 0===t)return"undefined";if(null===t)return"null";var r=typeof t;if("boolean"===r)return"boolean";if("string"===r)return"string";if("number"===r)return"number";if("symbol"===r)return"symbol";if("function"===r)return u(t)?"generatorfunction":"function";if(n(t))return"array";if(f(t))return"buffer";if(c(t))return"arguments";if(i(t))return"date";if(o(t))return"error";if(a(t))return"regexp";switch(e(t)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(s(t))return"generator";switch(r=l.call(t)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")}},function(t,r,e){"use strict";/*! - * for-own - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -var n=e(6),o=Object.prototype.hasOwnProperty;t.exports=function(t,r,e){n(t,function(n,i){if(o.call(t,i))return r.call(e,t[i],i,t)})}},function(t,r,e){"use strict";var n=function(){var t=this,r=t.$createElement;return(t._self._c||r)("form",{staticClass:"formulate-element",on:{submit:function(r){r.preventDefault(),t.submit(r)}}},[t._t("default")],2)},o=[];n._withStripped=!0;var i={render:n,staticRenderFns:o};r.a=i},function(t,r,e){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e(7),o=e.n(n);for(var i in n)"default"!==i&&function(t){e.d(r,t,function(){return n[t]})}(i);var a=e(33),u=e(3),s=u(o.a,a.a,!1,null,null,null);s.options.__file="src/components/FormulateElement.vue",r.default=s.exports},function(t,r,e){"use strict";t.exports=e(26)},function(t,r,e){"use strict";function n(r){return u.seed(r),t.exports}function o(r){return l=r,t.exports}function i(t){return void 0!==t&&u.characters(t),u.shuffled()}function a(){return c(l)}var u=e(0),s=(e(8),e(29)),c=e(30),f=e(31),l=e(32)||0;t.exports=a,t.exports.generate=a,t.exports.seed=n,t.exports.worker=o,t.exports.characters=i,t.exports.decode=s,t.exports.isValid=f},function(t,r,e){"use strict";function n(){return(i=(9301*i+49297)%233280)/233280}function o(t){i=t}var i=1;t.exports={nextValue:n,seed:o}},function(t,r,e){"use strict";function n(){if(!o||!o.getRandomValues)return 48&Math.floor(256*Math.random());var t=new Uint8Array(1);return o.getRandomValues(t),48&t[0]}var o="object"==typeof window&&(window.crypto||window.msCrypto);t.exports=n},function(t,r,e){"use strict";function n(t){var r=o.shuffled();return{version:15&r.indexOf(t.substr(0,1)),worker:15&r.indexOf(t.substr(1,1))}}var o=e(0);t.exports=n},function(t,r,e){"use strict";function n(t){var r="",e=Math.floor(.001*(Date.now()-s));return e===i?o++:(o=0,i=e),r+=a(u.lookup,c),r+=a(u.lookup,t),o>0&&(r+=a(u.lookup,o)),r+=a(u.lookup,e)}var o,i,a=e(8),u=e(0),s=1459707606518,c=6;t.exports=n},function(t,r,e){"use strict";function n(t){if(!t||"string"!=typeof t||t.length<6)return!1;for(var r=o.characters(),e=t.length,n=0;n-1:t.val},on:{change:function(r){var e=t.val,n=r.target,o=!!n.checked;if(Array.isArray(e)){var i=t._i(e,null);n.checked?i<0&&(t.val=e.concat([null])):i>-1&&(t.val=e.slice(0,i).concat(e.slice(i+1)))}else t.val=o}}}):"radio"===t.type&&t.isTextInput?e("input",{directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],ref:"input",attrs:{name:t.name,id:t.id,type:"radio"},domProps:{checked:t._q(t.val,null)},on:{change:function(r){t.val=null}}}):t.isTextInput?e("input",{directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],ref:"input",attrs:{name:t.name,id:t.id,type:t.type},domProps:{value:t.val},on:{input:function(r){r.target.composing||(t.val=r.target.value)}}}):t._e(),t._v(" "),t.isButtonInput?e("button",{attrs:{type:t.type,disabled:"submit"===t.type&&t.form.hasErrors},domProps:{textContent:t._s(t.label||t.name)}}):t._e(),t._v(" "),t.hasCustomInput?t._t("default"):t._e()],2),t._v(" "),t.localAndValidationErrors.length?e("ul",{staticClass:"formulate-errors"},t._l(t.localAndValidationErrors,function(r){return e("li",{key:r,domProps:{textContent:t._s(r)}})})):t._e()])},o=[];n._withStripped=!0;var i={render:n,staticRenderFns:o};r.a=i},function(t,r,e){"use strict";function n(t){return function(){var r=t.apply(this,arguments);return new Promise(function(t,e){function n(o,i){try{var a=r[o](i),u=a.value}catch(t){return void e(t)}if(!a.done)return Promise.resolve(u).then(function(t){n("next",t)},function(t){n("throw",t)});t(u)}return n("next")})}}Object.defineProperty(r,"__esModule",{value:!0});var o=e(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o);r.default={required:function(){function t(t,e){return r.apply(this,arguments)}var r=n(i.default.mark(function t(r,e){var n=(r.field,r.value),o=r.error,a=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!n&&o.apply(void 0,a));case 1:case"end":return t.stop()}},t,this)}));return t}(),email:function(){function t(t,e){return r.apply(this,arguments)}var r=n(i.default.mark(function t(r,e){var n,o=(r.field,r.value),a=r.error,u=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/,t.abrupt("return",!(!o||n.test(o.toLowerCase()))&&a.apply(void 0,u));case 2:case"end":return t.stop()}},t,this)}));return t}(),confirmed:function(){function t(t,e,n){return r.apply(this,arguments)}var r=n(i.default.mark(function t(r,e,n){var o=r.field,a=r.value,u=r.error,s=r.values,c=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=n||o+"_confirmation",t.abrupt("return",!(!a||a===s[n])&&u.apply(void 0,c));case 2:case"end":return t.stop()}},t,this)}));return t}()}},function(t,r,e){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default={required:function(t,r){var e=t.field;t.value;return(r||e)+" is required"},email:function(t,r){t.field,t.value;return(r||"Email address")+" is invalid."},confirmed:function(t,r){var e=t.field;t.value;return(r||e)+" does not match the confirmation field."},default:function(t){var r=t.field;t.value;return"The "+r+" field is invalid."}}}])}); \ No newline at end of file +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("vue-formulate",[],e):"object"==typeof exports?exports["vue-formulate"]=e():t["vue-formulate"]=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=7)}([function(t,e,r){"use strict";function n(){d=!1}function o(t){if(!t)return void(c!==h&&(c=h,n()));if(t!==c){if(t.length!==h.length)throw new Error("Custom alphabet for shortid must be "+h.length+" unique characters. You submitted "+t.length+" characters: "+t);var e=t.split("").filter(function(t,e,r){return e!==r.lastIndexOf(t)});if(e.length)throw new Error("Custom alphabet for shortid must be "+h.length+" unique characters. These characters were not unique: "+e.join(", "));c=t,n()}}function i(t){return o(t),c}function a(t){p.seed(t),f!==t&&(n(),f=t)}function u(){c||o(h);for(var t,e=c.split(""),r=[],n=p.nextValue();e.length>0;)n=p.nextValue(),t=Math.floor(n*e.length),r.push(e.splice(t,1)[0]);return r.join("")}function s(){return d||(d=u())}function l(t){return s()[t]}var c,f,d,p=r(16),h="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";t.exports={characters:i,seed:a,lookup:l,shuffled:s}},function(t,e,r){t.exports=r(8)},function(t,e,r){"use strict";function n(t,e){var r=t.length;if(r!==e.length)return!1;for(var n=0;n1&&(t=[])}return t},module:function(){return this.form.$props.module},formName:function(){return this.form.$props.name},classes:function(){return{"formulate-element":!0,"formulate-element--has-value":!!this.value,"formulate-element--has-errors":this.localAndValidationErrors.length&&this.shouldShowErrors}},validationErrors:function(){return this.form.validationErrors[this.name]||[]},storeErrors:function(){return this.form.errors[this.name]||[]},localAndValidationErrors:function(){return this.errors.concat(this.validationErrors)},shouldShowErrors:function(){var t=this.form.shouldShowErrors;return"blur"===this.form.behavior&&(t=this.errorBlurState),!1!==this.showErrors&&!0!==this.showErrors||(t=this.showErrors),t},attributes:function(){var t=this;return["min","max","placeholder","id","multiple"].filter(function(e){return!1!==t[e]}).reduce(function(e,r){return e[r]=t[r],e},{})},optionList:function(){return Array.isArray(this.options)?Array.isArray(this.options)&&!this.options.length?[{value:this.name,label:this.label||this.name,id:a.default.generate()}]:this.options:(0,o.reduce)(this.options,function(t,e,r){return t.concat({value:e,label:r,id:a.default.generate()})},[])},val:{set:function(t){this.form.update({field:this.name,value:t}),this.isTextInput&&(this.$refs.input.value=t)},get:function(){return this.value}}},watch:{localAndValidationErrors:function(){(0,o.equals)(this.localAndValidationErrors,this.storeErrors)||this.form.updateFieldErrors({field:this.name,errors:this.localAndValidationErrors})}},created:function(){!1!==this.initial&&this.form.hydrate(n({},this.name,this.initial))}}},function(t,e,r){"use strict";function n(t,e){for(var r,n=0,i="";!r;)i+=t(e>>4*n&15|o()),r=e1&&void 0!==arguments[1]?arguments[1]:{};t.prototype.$formulate=this,e=Object.assign(this.defaultOptions,e),e.registerComponents&&(t.component(e.tags.Formulate,p.default),t.component(e.tags.FormulateElement,v.default)),e.errors&&(this.errors=Object.assign(this.errors,e.errors)),e.rules&&(this.rules=Object.assign(this.rules,e.rules)),this.options=e}},{key:"parseRules",value:function(t){return t.split("|").map(function(t){return t.trim()}).map(function(t){return t.match(/([a-zA-Z0-9]+)\((.*)?\)/)||[null,t,""]}).map(function(t){var e=l(t,3),r=(e[0],e[1]),n=e[2];return Object.assign({},{rule:r},n?{args:n.split(",").map(function(t){return t.trim()})}:{args:[]})})}},{key:"errorFactory",value:function(t){return this.errors[t]?this.errors[t]:this.errors.default}},{key:"fields",value:function(t){var e=this,r=[],n=!1;return t&&t.componentOptions&&t.componentOptions.children&&t.componentOptions.children.length?n=t.componentOptions.children:t&&t.children&&t.children.length&&(n=t.children),n&&(r=r.concat(n.reduce(function(t,r){return r.componentOptions&&r.componentOptions.tag===e.options.tags.FormulateElement&&t.push(r.componentOptions.propsData),t.concat(e.fields(r))},[]))),r}},{key:"validationErrors",value:function(){function t(t,r,n){return e.apply(this,arguments)}var e=i(s.default.mark(function t(e,r,n){var i=e.field,a=e.value,u=this;return s.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!!r&&Promise.all(this.parseRules(r).map(function(t){var e,r=t.rule,s=t.args;return(e=u.rules)[r].apply(e,[{field:i,value:a,error:u.errorFactory(r),values:n}].concat(o(s)))})).then(function(t){return t.reduce(function(t,e){return e?Array.isArray(t)?t.concat(e):[e]:t},!1)}));case 1:case"end":return t.stop()}},t,this)}));return t}()}]),t}(),w=new x;e.default=w;e.mapModels=function(t){var e={};for(var r in t)!function(r){var n=t[r].split("/"),o=l(n,2),i=o[0],a=o[1];e[r]={set:function(t){var e=w.options.vuexModule?w.options.vuexModule+"/":"";this.$store.commit(e+"setFieldValue",{form:i,field:a,value:t})},get:function(){var t=w.options.vuexModule?w.options.vuexModule+"/":"";return this.$store.getters[t+"formValues"][i]?this.$store.getters[t+"formValues"][i][a]:""}}}(r);return e}},function(t,e,r){var n=function(){return this}()||Function("return this")(),o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=r(9),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(t){n.regeneratorRuntime=void 0}},function(t,e){!function(e){"use strict";function r(t,e,r,n){var i=e&&e.prototype instanceof o?e:o,a=Object.create(i.prototype),u=new p(n||[]);return a._invoke=l(t,r,u),a}function n(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}function o(){}function i(){}function a(){}function u(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function s(t){function e(r,o,i,a){var u=n(t[r],t,o);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==typeof l&&g.call(l,"__await")?Promise.resolve(l.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(l).then(function(t){s.value=t,i(s)},a)}a(u.arg)}function r(t,r){function n(){return new Promise(function(n,o){e(t,r,n,o)})}return o=o?o.then(n,n):n()}var o;this._invoke=r}function l(t,e,r){var o=j;return function(i,a){if(o===S)throw new Error("Generator is already running");if(o===P){if("throw"===i)throw a;return v()}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var s=c(u,r);if(s){if(s===F)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===j)throw o=P,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=S;var l=n(t,e,r);if("normal"===l.type){if(o=r.done?P:k,l.arg===F)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(o=P,r.method="throw",r.arg=l.arg)}}}function c(t,e){var r=t.iterator[e.method];if(r===m){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=m,c(t,e),"throw"===e.method))return F;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return F}var o=n(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,F;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=m),e.delegate=null,F):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,F)}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function d(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function p(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function h(t){if(t){var e=t[x];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return e("end");if(o.tryLoc<=this.prev){var a=g.call(o,"catchLoc"),u=g.call(o,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&g.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),d(r),F}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:h(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=m),F}}}(function(){return this}()||Function("return this")())},function(t,e,r){"use strict";function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}Object.defineProperty(e,"__esModule",{value:!0}),e.formulateModule=e.formulateMutations=e.formulateActions=e.formulateGetters=e.formulateState=void 0;var o=r(2),i=e.formulateState=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){return Object.assign({values:{},errors:{},validationErrors:{}},t)}},a=e.formulateGetters=function(){var t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign({formValues:function(t){return t.values},formErrors:function(t){return t.errors},formValidationErrors:function(t){return t.validationErrors},hasErrors:function(t){return(0,o.map)(t.errors,function(t,e){return(0,o.reduce)(e,function(t,e,r){return t||!!r.length},!1)})}},t)},u=e.formulateActions=function(){var t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return Object.assign({},t)},s=e.formulateMutations=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.assign({setFieldValue:function(t,e){var r=e.form,o=e.field,i=e.value;t.values=Object.assign({},t.values,n({},r,Object.assign({},t.values[r]||{},n({},o,i))))},setFieldErrors:function(t,e){var r=e.form,o=e.field,i=e.errors;t.errors=Object.assign({},t.errors,n({},r,Object.assign({},t.errors[r]||{},n({},o,i))))},setFieldValidationErrors:function(t,e){var r=e.form,o=e.field,i=e.errors;t.validationErrors=Object.assign({},t.validationErrors,n({},r,Object.assign({},t.validationErrors[r]||{},n({},o,i))))}},t)};e.formulateModule=function(t){return{state:i(),getters:a(t),actions:u(t),mutations:s()}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(4),o=r.n(n);for(var i in n)"default"!==i&&function(t){r.d(e,t,function(){return n[t]})}(i);var a=r(12),u=r(3),s=u(o.a,a.a,!1,null,null,null);s.options.__file="src/components/Formulate.vue",e.default=s.exports},function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement;return(t._self._c||e)("form",{staticClass:"formulate-element",on:{submit:function(e){e.preventDefault(),t.submit(e)}}},[t._t("default")],2)},o=[];n._withStripped=!0;var i={render:n,staticRenderFns:o};e.a=i},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(5),o=r.n(n);for(var i in n)"default"!==i&&function(t){r.d(e,t,function(){return n[t]})}(i);var a=r(22),u=r(3),s=u(o.a,a.a,!1,null,null,null);s.options.__file="src/components/FormulateElement.vue",e.default=s.exports},function(t,e,r){"use strict";t.exports=r(15)},function(t,e,r){"use strict";function n(e){return u.seed(e),t.exports}function o(e){return f=e,t.exports}function i(t){return void 0!==t&&u.characters(t),u.shuffled()}function a(){return l(f)}var u=r(0),s=(r(6),r(18)),l=r(19),c=r(20),f=r(21)||0;t.exports=a,t.exports.generate=a,t.exports.seed=n,t.exports.worker=o,t.exports.characters=i,t.exports.decode=s,t.exports.isValid=c},function(t,e,r){"use strict";function n(){return(i=(9301*i+49297)%233280)/233280}function o(t){i=t}var i=1;t.exports={nextValue:n,seed:o}},function(t,e,r){"use strict";function n(){if(!o||!o.getRandomValues)return 48&Math.floor(256*Math.random());var t=new Uint8Array(1);return o.getRandomValues(t),48&t[0]}var o="object"==typeof window&&(window.crypto||window.msCrypto);t.exports=n},function(t,e,r){"use strict";function n(t){var e=o.shuffled();return{version:15&e.indexOf(t.substr(0,1)),worker:15&e.indexOf(t.substr(1,1))}}var o=r(0);t.exports=n},function(t,e,r){"use strict";function n(t){var e="",r=Math.floor(.001*(Date.now()-s));return r===i?o++:(o=0,i=r),e+=a(u.lookup,l),e+=a(u.lookup,t),o>0&&(e+=a(u.lookup,o)),e+=a(u.lookup,r)}var o,i,a=r(6),u=r(0),s=1459707606518,l=6;t.exports=n},function(t,e,r){"use strict";function n(t){if(!t||"string"!=typeof t||t.length<6)return!1;for(var e=o.characters(),r=t.length,n=0;n1)?r("label",{attrs:{for:t.id},domProps:{textContent:t._s(t.label)}}):t._e(),t._v(" "),"checkbox"===t.type&&t.isTextInput?r("input",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],ref:"input",attrs:{name:t.name,type:"checkbox"},domProps:{checked:Array.isArray(t.val)?t._i(t.val,null)>-1:t.val},on:{blur:function(e){t.errorBlurState=!0},change:function(e){var r=t.val,n=e.target,o=!!n.checked;if(Array.isArray(r)){var i=t._i(r,null);n.checked?i<0&&(t.val=r.concat([null])):i>-1&&(t.val=r.slice(0,i).concat(r.slice(i+1)))}else t.val=o}}},"input",t.attributes,!1)):"radio"===t.type&&t.isTextInput?r("input",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],ref:"input",attrs:{name:t.name,type:"radio"},domProps:{checked:t._q(t.val,null)},on:{blur:function(e){t.errorBlurState=!0},change:function(e){t.val=null}}},"input",t.attributes,!1)):t.isTextInput?r("input",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],ref:"input",attrs:{name:t.name,type:t.type},domProps:{value:t.val},on:{blur:function(e){t.errorBlurState=!0},input:function(e){e.target.composing||(t.val=e.target.value)}}},"input",t.attributes,!1)):t._e(),t._v(" "),t.isButtonInput?r("button",{attrs:{type:t.type,disabled:"submit"===t.type&&t.form.hasErrors&&"live"===t.form.behavior},domProps:{textContent:t._s(t.label||t.name)}}):t._e(),t._v(" "),t.isSelectInput?r("select",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],attrs:{name:t.name},on:{blur:function(e){t.errorBlurState=!0},change:function(e){var r=Array.prototype.filter.call(e.target.options,function(t){return t.selected}).map(function(t){return"_value"in t?t._value:t.value});t.val=e.target.multiple?r:r[0]}}},"select",t.attributes,!1),t._l(t.optionList,function(e){return r("option",{key:e.id,domProps:{value:e.value,textContent:t._s(e.label)}})})):t._e(),t._v(" "),t.isBoxInput?r("div",{staticClass:"formulate-element-box-input-group"},[t._l(t.optionList,function(e){return["radio"===t.type?r("input",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],key:e.id+"-input",attrs:{type:"radio",name:t.name,id:e.id},domProps:{value:e.value,checked:t._q(t.val,e.value)},on:{blur:function(e){t.errorBlurState=!0},change:function(r){t.val=e.value}}},"input",t.attributes,!1)):t._e(),t._v(" "),"checkbox"===t.type?r("input",t._b({directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],key:e.id+"-input",attrs:{type:"checkbox",name:t.name,id:e.id},domProps:{value:e.value,checked:Array.isArray(t.val)?t._i(t.val,e.value)>-1:t.val},on:{blur:function(e){t.errorBlurState=!0},change:function(r){var n=t.val,o=r.target,i=!!o.checked;if(Array.isArray(n)){var a=e.value,u=t._i(n,a);o.checked?u<0&&(t.val=n.concat([a])):u>-1&&(t.val=n.slice(0,u).concat(n.slice(u+1)))}else t.val=i}}},"input",t.attributes,!1)):t._e(),t._v(" "),r("label",{key:e.id+"-label",attrs:{for:e.id},domProps:{textContent:t._s(e.label)}})]})],2):t._e(),t._v(" "),t.hasCustomInput?t._t("default"):t._e(),t._v(" "),t.isUnsupportedInput?r("div",{staticStyle:{"background-color":"red",color:"white"},domProps:{textContent:t._s("Unsupported field type: “"+t.type+"”.")}}):t._e()],2),t._v(" "),t.shouldShowErrors&&t.localAndValidationErrors.length?r("ul",{staticClass:"formulate-errors"},t._l(t.localAndValidationErrors,function(e){return r("li",{key:e,domProps:{textContent:t._s(e)}})})):t._e()])},o=[];n._withStripped=!0;var i={render:n,staticRenderFns:o};e.a=i},function(t,e,r){"use strict";function n(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,r){function n(o,i){try{var a=e[o](i),u=a.value}catch(t){return void r(t)}if(!a.done)return Promise.resolve(u).then(function(t){n("next",t)},function(t){n("throw",t)});t(u)}return n("next")})}}Object.defineProperty(e,"__esModule",{value:!0});var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o);e.default={required:function(){function t(t,r){return e.apply(this,arguments)}var e=n(i.default.mark(function t(e,r){var n=(e.field,e.value),o=e.error,a=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!(n&&(!Array.isArray(n)||n.length))&&o.apply(void 0,a));case 1:case"end":return t.stop()}},t,this)}));return t}(),email:function(){function t(t,r){return e.apply(this,arguments)}var e=n(i.default.mark(function t(e,r){var n,o=(e.field,e.value),a=e.error,u=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/,t.abrupt("return",!(!o||n.test(o.toLowerCase()))&&a.apply(void 0,u));case 2:case"end":return t.stop()}},t,this)}));return t}(),confirmed:function(){function t(t,r,n){return e.apply(this,arguments)}var e=n(i.default.mark(function t(e,r,n){var o=e.field,a=e.value,u=e.error,s=e.values,l=arguments;return i.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=n||o+"_confirmation",t.abrupt("return",!(!a||a===s[n])&&u.apply(void 0,l));case 2:case"end":return t.stop()}},t,this)}));return t}()}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={required:function(t,e){var r=t.field;t.value;return(e||r)+" is required"},email:function(t,e){t.field,t.value;return(e||"Email address")+" is invalid."},confirmed:function(t,e){var r=t.field;t.value;return(e||r)+" does not match the confirmation field."},default:function(t){var e=t.field;t.value;return"The "+e+" field is invalid."}}}])}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 41b97ff..5d84538 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1943,32 +1943,6 @@ "wordwrap": "0.0.2" } }, - "clone-deep": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-3.0.1.tgz", - "integrity": "sha512-kWn5hGUnIA4algk62xJIp9jxQZ8DxSPg9ktkkK1WxRGhU/0GKZBekYJHXAXaZKMpxoq/7R4eygeIl9Cf7si+bA==", - "requires": { - "for-own": "1.0.0", - "is-plain-object": "2.0.4", - "kind-of": "6.0.2", - "shallow-clone": "2.0.2" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "1.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3079,7 +3053,8 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "0.1.5", @@ -4612,21 +4587,6 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -5203,25 +5163,6 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "mixin-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-3.0.0.tgz", - "integrity": "sha512-RsUqTd3DyF9+UPqhLzJIWwGm4ZGIPYOu6WcQhQuBqqVBGhc6LOC8LrFk9KD7PvVwmqri45IJT88WLrNNrMWjxg==", - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -6362,31 +6303,6 @@ "safe-buffer": "5.1.1" } }, - "shallow-clone": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-2.0.2.tgz", - "integrity": "sha512-2o81AG/RpLTAG/ZXQekPtH/6yTffzKlJ+i6UhtVTtnP6zWQaNo9vt6LI28bhZLSesB12VQSfJYtXopTogVBveg==", - "requires": { - "is-extendable": "1.0.1", - "kind-of": "6.0.2", - "mixin-object": "3.0.0" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", diff --git a/package.json b/package.json index fbe7ad3..b3a64e6 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,6 @@ ] }, "dependencies": { - "clone-deep": "^3.0.1", "shortid": "^2.2.8" } } diff --git a/src/components/Formulate.vue b/src/components/Formulate.vue index 2f3668d..243dc6a 100644 --- a/src/components/Formulate.vue +++ b/src/components/Formulate.vue @@ -25,11 +25,20 @@ export default { initial: { type: Object, default: () => ({}) + }, + behavior: { + type: String, + default: 'blur' + }, + showErrors: { + type: [Boolean, Object], + default: () => ({}) } }, data () { return { - parentIdentifier: 'vue-formulate-wrapper-element' + parentIdentifier: 'vue-formulate-wrapper-element', + forceErrors: null } }, computed: { @@ -50,6 +59,15 @@ export default { }, fields () { return this.$formulate.fields(this.$vnode) + }, + shouldShowErrors () { + if (this.forceErrors === false || this.forceErrors === true) { + return this.forceErrors + } + if (this.showErrors === false || this.showErrors === true) { + return this.showErrors + } + return this.behavior === 'live' } }, created () { @@ -87,8 +105,8 @@ export default { field, value: this.values[field] }, validation, this.values) - if (!equals(errors, (this.validationErrors[field] || []))) { - this.updateFieldValidationErrors({field, errors}) + if (!equals(errors || [], (this.validationErrors[field] || []))) { + this.updateFieldValidationErrors({field, errors: errors || []}) } return errors }, @@ -99,7 +117,11 @@ export default { })) }, submit () { - alert('submitting form') + if (this.hasErrors) { + this.forceErrors = true + } else { + alert('submitting form') + } } } } diff --git a/src/components/FormulateElement.vue b/src/components/FormulateElement.vue index 9ac6ab7..30c3286 100644 --- a/src/components/FormulateElement.vue +++ b/src/components/FormulateElement.vue @@ -1,39 +1,91 @@