UNPKG

formvuelate

Version:
1 lines 12.1 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).Formvuelate={},e.Vue)}(this,(function(e,n){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function l(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return c(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?c(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==t.return||t.return()}finally{if(i)throw a}}}}var i="fvl_",u="".concat(i,"isSchemaWizard"),s="".concat(i,"parentSchemaExists"),m="".concat(i,"injectedSchema"),d="".concat(i,"schemaModelPath"),f="".concat(i,"formModel"),p="".concat(i,"findNestedFormModelProp"),h="".concat(i,"updateFormModel"),v="".concat(i,"deleteFormModelProp"),y="".concat(i,"parseSubSchemaForms"),S="".concat(i,"injectedLocalComponents"),b=Object.freeze({__proto__:null,IS_SCHEMA_WIZARD:u,PARENT_SCHEMA_EXISTS:s,INJECTED_SCHEMA:m,SCHEMA_MODEL_PATH:d,FORM_MODEL:f,FIND_NESTED_FORM_MODEL_PROP:p,UPDATE_FORM_MODEL:h,DELETE_FORM_MODEL_PROP:v,LOOKUP_PARSE_SUB_SCHEMA_FORMS:y,INJECTED_LOCAL_COMPONENTS:S});function g(){var e=Math.floor(1e9*Math.random()),n=new Map;return{UUID:e,UUIDBindings:n,getID:function(t){return n.has(t)?n.get(t):(e++,n.set(t,e),e)}}}var O=function(e){return e.filter((function(e){return e.schema}))},C=function e(n,t){var r=function(e){var n,t=l(e);try{for(t.s();!(n=t.n()).done;){var r=n.value,o=O(r);if(o.length)return o}}catch(e){t.e(e)}finally{t.f()}return[]}(t),o=function(e){return(null==e?void 0:e.model)===n};if(!r.length)return null;var a,c=l(r);try{for(c.s();!(a=c.n()).done;){var i=a.value;if(o(i))return i;var u=e(n,w(i.schema));if(o(u))return u}}catch(e){c.e(e)}finally{c.f()}return null},w=function(e){return(Array.isArray(e)?e:Object.keys(e).map((function(n){return a(a({},e[n]),{},{model:n})}))).map((function(e){return Array.isArray(e)?e:[e]}))};var j={name:"SchemaField",props:{field:{type:Object,required:!0},sharedConfig:{type:Object,default:()=>({})},preventModelCleanupOnSchemaChange:{type:Boolean,default:!1}},setup(e){const t=n.computed((()=>e.field.schema?{...e.field,nestedSchemaModel:e.field.model}:{...e.sharedConfig,...e.field})),r=n.inject(f,{}),o=n.inject(d,null),a=n.inject(p),c=n.computed((()=>o?a(r,o)[e.field.model]:r.value[e.field.model])),l=n.inject(h),i=n.inject(v),u=n.computed((()=>{const n=e.field.condition;return!n||"function"!=typeof n||n(r.value)})),s=n.inject(S,{}),m=n.computed((()=>s[e.field.component]||e.field.component));return n.watch(u,(n=>{n||e.preventModelCleanupOnSchemaChange||i(r,e.field.model,o)})),{binds:t,fieldValue:c,update:n=>{l(r,e.field.model,n,o)},schemaCondition:u,component:m}}};j.render=function(e,t,r,o,a,c){return o.schemaCondition?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(o.component),n.mergeProps({key:0},o.binds,{modelValue:o.fieldValue,"onUpdate:modelValue":o.update,class:"schema-col"}),null,16,["modelValue","onUpdate:modelValue"])):n.createCommentVNode("v-if",!0)},j.__file="packages/formvuelate/src/SchemaField.vue";var k={name:"SchemaRow",components:{SchemaField:j},props:{row:{type:Array,required:!0},schemaRowClasses:{type:[String,Object,Array],default:null},unwrappedRows:{type:Boolean,default:!1}},setup(e){const t=n.inject(f,{});return{rowHasVisibleElements:n.computed((()=>{for(const n of e.row){if(!n.condition)return!0;if("function"!=typeof condition&&!0===n.condition(t.value))return!0}return!1}))}}};k.render=function(e,t,r,o,a,c){const l=n.resolveComponent("SchemaField");return o.rowHasVisibleElements?(n.openBlock(),n.createBlock(n.Fragment,{key:0},[r.unwrappedRows?(n.openBlock(!0),n.createBlock(n.Fragment,{key:0},n.renderList(r.row,(t=>(n.openBlock(),n.createBlock(l,n.mergeProps({key:t.model,field:t},e.$attrs,{class:"schema-col"}),null,16,["field"])))),128)):(n.openBlock(),n.createBlock("div",{key:1,class:["schema-row",r.schemaRowClasses]},[(n.openBlock(!0),n.createBlock(n.Fragment,null,n.renderList(r.row,(t=>(n.openBlock(),n.createBlock(l,n.mergeProps({key:t.model,field:t},e.$attrs,{class:"schema-col"}),null,16,["field"])))),128))],2))],2112)):n.createCommentVNode("v-if",!0)},k.__file="packages/formvuelate/src/SchemaRow.vue";var M=function(e,n){return e[n]||(e[n]={}),e[n]},F=function(e,n){for(var t=n.split("."),r=M(e.value,t[0]),o=1;o<t.length;o++)r=M(r,t[o]);return r},P=function(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;r?F(e,r)[n]=t:e.value[n]=t},_=function(e,n,t){if(t){delete F(e,t)[n];var r=t.split("."),o=r.pop(),a=E(r.join("."),e.value);a&&!Object.keys(a[o]).length&&delete a[o]}else delete e.value[n]},B=function e(t,r){var o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=w(n.unref(t)),i=l(c);try{for(i.s();!(o=i.n()).done;){var u,s=o.value,m=a,d=l(s);try{for(d.s();!(u=d.n()).done;){var f=u.value;f.schema&&(m=""===m?f.model:"".concat(m,".").concat(f.model),e(f.schema,r,m)),r(f,m)}}catch(e){d.e(e)}finally{d.f()}}}catch(e){i.e(e)}finally{i.f()}},E=function(e,n){return e.split(".").reduce((function(e,n){return e[n]}),n)},A=function e(r,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=n.unref(r);for(var l in c){var i=c[l];if("object"===t(i)&&null!==i)return e(i,o,a=""===a?l:"".concat(a,".").concat(l));o(l,i,a)}};function R(e,t){var r=n.inject(f,{});n.inject(s,!1)||(B(t,(function(e,n){"default"in e&&P(r,e.model,e.default,n)})),n.watch(t,(function(n,t){e.preventModelCleanupOnSchemaChange||A(r,(function(e,t,o){var a=!1;B(n,(function(n){n.model===e&&(a=!0)}),o),a||_(r,e,o)}))})))}var D={name:"SchemaForm",components:{SchemaRow:k},props:{schema:{type:[Object,Array],required:!0,validator:e=>!Array.isArray(e)||(0===e.length||0===e.filter((e=>!Array.isArray(e)&&!e.model&&!e.schema)).length)},sharedConfig:{type:Object,default:()=>({})},preventModelCleanupOnSchemaChange:{type:Boolean,default:!1},nestedSchemaModel:{type:String,default:""},schemaRowClasses:{type:[String,Object,Array],default:null},useCustomFormWrapper:{type:Boolean,default:!1},debug:{type:Boolean,default:!1},unwrappedRows:{type:Boolean,default:!1}},emits:["submit","update:modelValue"],setup(e,{emit:t,attrs:r}){const{behaveLikeParentSchema:o,hasParentSchema:c}=function(){var e=n.inject(u,!1),t=n.inject(s,!1);return t||n.provide(s,!0),{behaveLikeParentSchema:n.computed((function(){return!e&&!t})),hasParentSchema:t,isChildOfWizard:e}}(),{schema:l}=function(e,t){var r=n.toRefs(e).schema,o=n.inject(m,!1);if(t&&(n.provide(m,r),o=r),e.nestedSchemaModel){var a=n.inject(d,""),c=a?"".concat(a,".").concat(e.nestedSchemaModel):e.nestedSchemaModel;n.provide(d,c)}return{schema:o}}(e,o),{parsedSchema:i}=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=g().getID,o=n.inject(y,null);return{parsedSchema:n.computed((function(){var c=n.unref(e),l=w(c);if(t){var i=C(t,l);i&&(l=w(i.schema))}return l=l.map((function(e){return e.map((function(e){var n=a({},e);return a(a({},n),{},{uuid:r(e.model)})}))})),o?o.remapSubSchemaForms(l,o.SchemaFormWithPlugins):l}))}}(l,r.model);R(e,i);const f=n.computed((()=>c&&!e.useCustomFormWrapper?{}:{onSubmit:e=>{e.preventDefault(),t("submit",e)}})),p=n.computed((()=>({})));return{behaveLikeParentSchema:o,parsedSchema:i,hasParentSchema:c,formBinds:f,slotBinds:p}}};const L={key:1};D.render=function(e,t,r,o,a,c){const l=n.resolveComponent("SchemaRow");return n.openBlock(),n.createBlock(n.resolveDynamicComponent(o.behaveLikeParentSchema&&!r.useCustomFormWrapper?"form":"div"),o.formBinds,{default:n.withCtx((()=>[o.behaveLikeParentSchema?n.renderSlot(e.$slots,"beforeForm",n.mergeProps({key:0},o.slotBinds)):n.createCommentVNode("v-if",!0),(n.openBlock(!0),n.createBlock(n.Fragment,null,n.renderList(o.parsedSchema,((e,t)=>(n.openBlock(),n.createBlock(l,{key:t,row:e,schemaRowClasses:r.schemaRowClasses,unwrappedRows:r.unwrappedRows,sharedConfig:r.sharedConfig,preventModelCleanupOnSchemaChange:r.preventModelCleanupOnSchemaChange},null,8,["row","schemaRowClasses","unwrappedRows","sharedConfig","preventModelCleanupOnSchemaChange"])))),128)),r.debug?(n.openBlock(),n.createBlock("pre",L,n.toDisplayString(o.parsedSchema),1)):n.createCommentVNode("v-if",!0),o.behaveLikeParentSchema?n.renderSlot(e.$slots,"afterForm",n.mergeProps({key:2},o.slotBinds)):n.createCommentVNode("v-if",!0)])),_:3},16)},D.__file="packages/formvuelate/src/SchemaForm.vue";var V={name:"SchemaWizard",components:{SchemaForm:D},props:{schema:{type:Array,required:!0},step:{type:Number,required:!0,default:0}},emits:["submit"],setup(e){n.provide(u,!0);return{currentSchema:n.computed((()=>e.schema[e.step]))}}};function N(e){return null!==e&&!!e&&"object"===t(e)&&!Array.isArray(e)}V.render=function(e,t,r,o,a,c){const l=n.resolveComponent("SchemaForm");return n.openBlock(),n.createBlock("form",{onSubmit:t[1]||(t[1]=n.withModifiers((n=>e.$emit("submit",n)),["prevent"]))},[n.renderSlot(e.$slots,"beforeForm"),n.createVNode(l,{schema:o.currentSchema,preventModelCleanupOnSchemaChange:""},null,8,["schema"]),n.renderSlot(e.$slots,"afterForm")],32)},V.__file="packages/formvuelate/src/SchemaWizard.vue",e.SchemaForm=D,e.SchemaFormFactory=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=D.setup,o=a({},D.props);function c(e){N(e)?Object.assign(o,e):process.env&&"production"!==process.env.NODE_ENV&&console.warn("FormVueLate: extendSchemaFormProps can only receive a Vue props object")}function l(o,a){var c=r(o,a);return t&&(n.inject(S,null)||n.provide(S,t)),e.length?e.reduce((function(e,n){return n(e,o,a)}),c):c}return e.forEach((function(e){e.extend&&e.extend({extendSchemaFormProps:c})})),a(a({},D),{},{props:o,components:a(a({},t),D.components),name:"SchemaFormWithPlugins",setup:l})},e.SchemaWizard=V,e.constants=b,e.default=D,e.definePlugin=function(e){if("function"==typeof e)return e;var n=e.setup;return"extend"in e&&(n.extend=e.extend),n},e.useSchemaForm=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.isRef(e)?e:n.ref(e);n.provide(h,P),n.provide(v,_),n.provide(p,F),n.provide(f,t);var r=function(e,n){if("string"!=typeof e)throw new Error("path for updateFormModel should be a string separated by dots (.)");var r=e.includes(".")?e.split(".").pop():e;P(t,r,n,e.split(".").slice(0,-1).join("."))};return{formModel:t,updateFormModel:r}},Object.defineProperty(e,"__esModule",{value:!0})}));