@gopowerteam/form-render 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export * from './define-form';
@@ -6,6 +6,7 @@ export interface RenderSelectItemOptions {
6
6
  clearable?: boolean;
7
7
  options: SelectOptions | Promise<SelectOptions> | (() => Promise<SelectOptions>);
8
8
  multiple?: boolean;
9
+ maxTagCount?: number;
9
10
  default?: string | number | boolean;
10
11
  autoSumbit?: boolean;
11
12
  }
@@ -3,9 +3,17 @@ import { type FieldRule } from '@arco-design/web-vue';
3
3
  import type { FormItemsOptions } from '../interfaces';
4
4
  export declare const FormRender: import("vue").DefineComponent<{
5
5
  form: {
6
- type: PropType<FormItemsOptions>;
6
+ type: PropType<FormItemsOptions<any>>;
7
7
  required: true;
8
8
  };
9
+ value: {
10
+ type: PropType<Record<string, any>>;
11
+ required: false;
12
+ };
13
+ modelValue: {
14
+ type: PropType<Record<string, any>>;
15
+ required: false;
16
+ };
9
17
  minWidth: {
10
18
  type: NumberConstructor;
11
19
  required: false;
@@ -287,11 +295,22 @@ export declare const FormRender: import("vue").DefineComponent<{
287
295
  formCollspased: import("vue").Ref<boolean>;
288
296
  formActiosSpan: import("vue").ComputedRef<number>;
289
297
  toggleFormCollapsed: () => boolean;
290
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "cancel")[], "submit" | "cancel", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
298
+ updateFormField: (key: string, value: any) => void;
299
+ updateFormSource: (value: import("../interfaces").DataRecord) => void;
300
+ reset: () => void;
301
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "cancel" | "update:model-value")[], "submit" | "cancel" | "update:model-value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
291
302
  form: {
292
- type: PropType<FormItemsOptions>;
303
+ type: PropType<FormItemsOptions<any>>;
293
304
  required: true;
294
305
  };
306
+ value: {
307
+ type: PropType<Record<string, any>>;
308
+ required: false;
309
+ };
310
+ modelValue: {
311
+ type: PropType<Record<string, any>>;
312
+ required: false;
313
+ };
295
314
  minWidth: {
296
315
  type: NumberConstructor;
297
316
  required: false;
@@ -320,6 +339,7 @@ export declare const FormRender: import("vue").DefineComponent<{
320
339
  }>> & {
321
340
  onSubmit?: ((...args: any[]) => any) | undefined;
322
341
  onCancel?: ((...args: any[]) => any) | undefined;
342
+ "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
323
343
  }, {
324
344
  footer: boolean;
325
345
  name: string;
@@ -0,0 +1 @@
1
+ export * from './use-form';
@@ -0,0 +1,12 @@
1
+ import { type ComponentPublicInstance, type Ref } from 'vue';
2
+ import type { FormRenderInstance } from '../form-render';
3
+ type FormRenderExpose = {
4
+ -readonly [K in keyof Omit<FormRenderInstance, keyof ComponentPublicInstance>]: FormRenderInstance[K];
5
+ };
6
+ /**
7
+ * 获取TableRender实例
8
+ * @param key
9
+ * @returns
10
+ */
11
+ export declare function useForm(key: string): Readonly<Ref<FormRenderExpose>>;
12
+ export {};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),c=require("@arco-design/web-vue"),b=require("dayjs");const $=Symbol("ArcoConfigProvider"),N="arco",x="$arco",S=e=>{var t,r,a;const n=l.getCurrentInstance(),d=l.inject($,void 0),u=(a=(r=d==null?void 0:d.prefixCls)!=null?r:(t=n==null?void 0:n.appContext.config.globalProperties[x])==null?void 0:t.classPrefix)!=null?a:N;return e?`${u}-${e}`:u},w=Object.prototype.toString;function g(e){return w.call(e)==="[object Number]"&&e===e}var C=(e,t)=>{for(const[r,a]of t)e[r]=a;return e};const F=l.defineComponent({name:"IconDown",props:{size:{type:[Number,String]},strokeWidth:{type:Number,default:4},strokeLinecap:{type:String,default:"butt",validator:e=>["butt","round","square"].includes(e)},strokeLinejoin:{type:String,default:"miter",validator:e=>["arcs","bevel","miter","miter-clip","round"].includes(e)},rotate:Number,spin:Boolean},emits:{click:e=>!0},setup(e,{emit:t}){const r=S("icon"),a=l.computed(()=>[r,`${r}-down`,{[`${r}-spin`]:e.spin}]),n=l.computed(()=>{const u={};return e.size&&(u.fontSize=g(e.size)?`${e.size}px`:e.size),e.rotate&&(u.transform=`rotate(${e.rotate}deg)`),u});return{cls:a,innerStyle:n,onClick:u=>{t("click",u)}}}}),I=["stroke-width","stroke-linecap","stroke-linejoin"],D=l.createElementVNode("path",{d:"M39.6 17.443 24.043 33 8.487 17.443"},null,-1),_=[D];function j(e,t,r,a,n,d){return l.openBlock(),l.createElementBlock("svg",{viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",class:l.normalizeClass(e.cls),style:l.normalizeStyle(e.innerStyle),"stroke-width":e.strokeWidth,"stroke-linecap":e.strokeLinecap,"stroke-linejoin":e.strokeLinejoin,onClick:t[0]||(t[0]=(...u)=>e.onClick&&e.onClick(...u))},_,14,I)}var k=C(F,[["render",j]]);const P=Object.assign(k,{install:(e,t)=>{var r;const a=(r=t==null?void 0:t.iconPrefix)!=null?r:"";e.component(a+k.name,k)}}),z=l.defineComponent({name:"IconUp",props:{size:{type:[Number,String]},strokeWidth:{type:Number,default:4},strokeLinecap:{type:String,default:"butt",validator:e=>["butt","round","square"].includes(e)},strokeLinejoin:{type:String,default:"miter",validator:e=>["arcs","bevel","miter","miter-clip","round"].includes(e)},rotate:Number,spin:Boolean},emits:{click:e=>!0},setup(e,{emit:t}){const r=S("icon"),a=l.computed(()=>[r,`${r}-up`,{[`${r}-spin`]:e.spin}]),n=l.computed(()=>{const u={};return e.size&&(u.fontSize=g(e.size)?`${e.size}px`:e.size),e.rotate&&(u.transform=`rotate(${e.rotate}deg)`),u});return{cls:a,innerStyle:n,onClick:u=>{t("click",u)}}}}),B=["stroke-width","stroke-linecap","stroke-linejoin"],L=l.createElementVNode("path",{d:"M39.6 30.557 24.043 15 8.487 30.557"},null,-1),O=[L];function M(e,t,r,a,n,d){return l.openBlock(),l.createElementBlock("svg",{viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",class:l.normalizeClass(e.cls),style:l.normalizeStyle(e.innerStyle),"stroke-width":e.strokeWidth,"stroke-linecap":e.strokeLinecap,"stroke-linejoin":e.strokeLinejoin,onClick:t[0]||(t[0]=(...u)=>e.onClick&&e.onClick(...u))},O,14,B)}var y=C(z,[["render",M]]);const U=Object.assign(y,{install:(e,t)=>{var r;const a=(r=t==null?void 0:t.iconPrefix)!=null?r:"";e.component(a+y.name,y)}}),v={id:Symbol("ID"),source:Symbol("Source")};function q(e){const t=l.ref({});return e==null||e.forEach(a=>{t.value[a.key]=(typeof a.default=="function"?a.default():a.default)||null}),[t,a=>{t.value=a}]}function R(e){function t(r,a){return e!=null&&e.disabledDate?e.disabledDate(r,a):!1}return(r,a)=>{switch(e==null?void 0:e.type){case"week":return l.createVNode(c.WeekPicker,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"month":return l.createVNode(c.MonthPicker,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"quarter":return l.createVNode(c.QuarterPicker,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"year":return l.createVNode(c.YearPicker,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"date":default:return l.createVNode(c.DatePicker,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)}}}function T(e){return(t,r)=>{switch(e==null?void 0:e.type){case"number":return l.createVNode(c.InputNumber,{modelValue:t[r.key],"onUpdate:modelValue":a=>t[r.key]=a,hideButton:!0,placeholder:e==null?void 0:e.placeholder,allowClear:e==null?void 0:e.clearable},null);case"string":default:return l.createVNode(c.Input,{modelValue:t[r.key],"onUpdate:modelValue":a=>t[r.key]=a,placeholder:e==null?void 0:e.placeholder,allowClear:e==null?void 0:e.clearable},null)}}}function E(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}function A(e){let t=!1;const r=l.ref(new Map);e.options instanceof Function?e.options().then(n=>r.value=n):e.options instanceof Promise?e.options.then(n=>r.value=n):r.value=e.options;function a(){e.autoSumbit}return(n,d)=>{let u;return e.default&&!t&&(n[d.key]=e.default,t=!0),l.createVNode(c.Select,{multiple:e.multiple,modelValue:n[d.key],"onUpdate:modelValue":i=>n[d.key]=i,placeholder:e.placeholder,allowClear:e.clearable,onChange:a},E(u=Array.from(r.value.entries()).map(([i,s])=>l.createVNode(c.Option,{key:i,value:i,label:s},null)))?u:{default:()=>[u]})}}function Y(e){function t(){e!=null&&e.autoSumbit}return(r,a)=>(e!=null&&e.default&&(r[a.key]=e.default),l.createVNode(c.Switch,{modelValue:r[a.key],"onUpdate:modelValue":n=>r[a.key]=n,checkedText:(e==null?void 0:e.openLabel)??"是",uncheckedText:(e==null?void 0:e.closeLabel)??"否",checkedValue:(e==null?void 0:e.openValue)??!0,uncheckedValue:(e==null?void 0:e.closeValue)??!1,onChange:t},null))}function W(e){return(t,r)=>{let a=[];function n(i){a=i}function d(i){if(i&&i.length===2){const[s,o]=i.sort(),m=b(s).startOf("days"),f=b(o).endOf("days");t[r.key]=[m.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD"),f.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD")]}}function u(i){return e!=null&&e.disabledDate?e.disabledDate(a,i):!1}return l.createVNode("div",null,[l.createVNode(c.RangePicker,{style:{width:"300px"},modelValue:t[r.key],"onUpdate:modelValue":i=>t[r.key]=i,onSelect:n,onChange:d,mode:e==null?void 0:e.type,allowClear:e==null?void 0:e.clearable,"disabled-date":u,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)])}}function G(e){return(t,r)=>l.createVNode(c.Textarea,{modelValue:t[r.key],"onUpdate:modelValue":a=>t[r.key]=a,placeholder:e==null?void 0:e.placeholder,autoSize:e==null?void 0:e.autosize,maxLength:e==null?void 0:e.maxLength},null)}function K(e){return t=>e(t)}function Q(){return{input:T,textarea:G,select:A,date:R,switch:Y,dateRange:W,render:K}}function X(e,t){t.render||(t.render=a=>a.input());const r=t.render({...Q()});return{default:()=>r(e,t)}}function H(e,t){return l.h(c.FormItem,{field:t.key,label:t.title},X(e,t))}function V(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const J=l.defineComponent({props:{form:{type:Object,required:!0},minWidth:{type:Number,required:!1,default:300},name:{type:String,required:!1,default:"form"},submitable:{type:Boolean,required:!1,default:!1},searchable:{type:Boolean,required:!1,default:!1},footer:{type:Boolean,required:!1,default:!1}},emits:["submit","cancel"],expose:["formSource"],setup(e){const t=Math.random().toString(32).slice(2).toUpperCase(),r=l.ref(),[a]=q(e.form),n=l.ref(0),d=l.ref(!0),u=()=>d.value=!d.value;l.provide(v.id,t),l.provide(v.source,a);const i=l.computed(()=>{if(!n.value)return 1;const m=e.form.reduce((f,h)=>f+((h==null?void 0:h.span)||1),0);return n.value-m%n.value}),s=l.computed(()=>e.form.reduce((m,f)=>(f.rule&&(m[f.key]=f.rule),m),{}));function o(){var f;const m=(f=r.value)==null?void 0:f.$el;n.value=Math.floor(m.offsetWidth/e.minWidth)}return l.onMounted(()=>{o()}),window.addEventListener("resize",o),{formId:t,formSource:a,formInstance:r,formColumns:n,formRules:s,formCollspased:d,formActiosSpan:i,toggleFormCollapsed:u}},render(){const e=()=>{this.$emit("submit",this.formSource)},t=()=>{const r=[],a=this.footer?{span:this.formColumns}:{span:this.formActiosSpan};if(this.searchable&&(r.push(l.createVNode(c.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("搜索")]})),r.push(l.createVNode(c.Button,{type:"secondary",onClick:()=>{var n;return(n=this.formInstance)==null?void 0:n.resetFields()}},{default:()=>[l.createTextVNode("重置")]}))),this.submitable&&(r.push(l.createVNode(c.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("提交")]})),r.push(l.createVNode(c.Button,{type:"secondary",onClick:()=>this.$emit("cancel")},{default:()=>[l.createTextVNode("取消")]}))),this.form.some(n=>!!n.collapsed)&&r.push(l.createVNode(c.Button,{onClick:this.toggleFormCollapsed},{default:()=>this.formCollspased?"展开":"收起",icon:()=>this.formCollspased?l.createVNode(P,null,null):l.createVNode(U,null,null)})),this.$slots.actions&&r.push(...this.$slots.actions()),r.length)return l.createVNode(c.GridItem,a,{default:()=>[l.createVNode(c.FormItem,{hideLabel:!0,contentClass:this.footer?"form-footer":""},{default:()=>[l.createVNode(c.Space,null,V(r)?r:{default:()=>[r]})]})]})};return l.createVNode(c.Form,l.mergeProps({rules:this.formRules,onSubmitSuccess:e},{name:this.name},{"auto-label-width":!0,ref:r=>this.formInstance=r,model:this.formSource}),{default:()=>[l.createVNode(c.Grid,{cols:this.formColumns,"col-gap":10,"rol-gap":10},{default:()=>[this.form.filter(r=>this.formCollspased?!r.collapsed:!0).map(r=>{let a;return l.createVNode(c.GridItem,{span:r.span},V(a=H(this.formSource,r))?a:{default:()=>[a]})}),t()]})]})}});function Z(e){return e}exports.FormRender=J;exports.defineForm=Z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),d=require("@arco-design/web-vue"),V=require("dayjs");const F=Symbol("ArcoConfigProvider"),w="arco",I="$arco",C=e=>{var r,t,a;const n=l.getCurrentInstance(),c=l.inject(F,void 0),u=(a=(t=c==null?void 0:c.prefixCls)!=null?t:(r=n==null?void 0:n.appContext.config.globalProperties[I])==null?void 0:r.classPrefix)!=null?a:w;return e?`${u}-${e}`:u},j=Object.prototype.toString;function $(e){return j.call(e)==="[object Number]"&&e===e}var N=(e,r)=>{for(const[t,a]of r)e[t]=a;return e};const D=l.defineComponent({name:"IconDown",props:{size:{type:[Number,String]},strokeWidth:{type:Number,default:4},strokeLinecap:{type:String,default:"butt",validator:e=>["butt","round","square"].includes(e)},strokeLinejoin:{type:String,default:"miter",validator:e=>["arcs","bevel","miter","miter-clip","round"].includes(e)},rotate:Number,spin:Boolean},emits:{click:e=>!0},setup(e,{emit:r}){const t=C("icon"),a=l.computed(()=>[t,`${t}-down`,{[`${t}-spin`]:e.spin}]),n=l.computed(()=>{const u={};return e.size&&(u.fontSize=$(e.size)?`${e.size}px`:e.size),e.rotate&&(u.transform=`rotate(${e.rotate}deg)`),u});return{cls:a,innerStyle:n,onClick:u=>{r("click",u)}}}}),_=["stroke-width","stroke-linecap","stroke-linejoin"],P=l.createElementVNode("path",{d:"M39.6 17.443 24.043 33 8.487 17.443"},null,-1),z=[P];function B(e,r,t,a,n,c){return l.openBlock(),l.createElementBlock("svg",{viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",class:l.normalizeClass(e.cls),style:l.normalizeStyle(e.innerStyle),"stroke-width":e.strokeWidth,"stroke-linecap":e.strokeLinecap,"stroke-linejoin":e.strokeLinejoin,onClick:r[0]||(r[0]=(...u)=>e.onClick&&e.onClick(...u))},z,14,_)}var b=N(D,[["render",B]]);const O=Object.assign(b,{install:(e,r)=>{var t;const a=(t=r==null?void 0:r.iconPrefix)!=null?t:"";e.component(a+b.name,b)}}),L=l.defineComponent({name:"IconUp",props:{size:{type:[Number,String]},strokeWidth:{type:Number,default:4},strokeLinecap:{type:String,default:"butt",validator:e=>["butt","round","square"].includes(e)},strokeLinejoin:{type:String,default:"miter",validator:e=>["arcs","bevel","miter","miter-clip","round"].includes(e)},rotate:Number,spin:Boolean},emits:{click:e=>!0},setup(e,{emit:r}){const t=C("icon"),a=l.computed(()=>[t,`${t}-up`,{[`${t}-spin`]:e.spin}]),n=l.computed(()=>{const u={};return e.size&&(u.fontSize=$(e.size)?`${e.size}px`:e.size),e.rotate&&(u.transform=`rotate(${e.rotate}deg)`),u});return{cls:a,innerStyle:n,onClick:u=>{r("click",u)}}}}),M=["stroke-width","stroke-linecap","stroke-linejoin"],U=l.createElementVNode("path",{d:"M39.6 30.557 24.043 15 8.487 30.557"},null,-1),q=[U];function T(e,r,t,a,n,c){return l.openBlock(),l.createElementBlock("svg",{viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",class:l.normalizeClass(e.cls),style:l.normalizeStyle(e.innerStyle),"stroke-width":e.strokeWidth,"stroke-linecap":e.strokeLinecap,"stroke-linejoin":e.strokeLinejoin,onClick:r[0]||(r[0]=(...u)=>e.onClick&&e.onClick(...u))},q,14,M)}var v=N(L,[["render",T]]);const R=Object.assign(v,{install:(e,r)=>{var t;const a=(t=r==null?void 0:r.iconPrefix)!=null?t:"";e.component(a+v.name,v)}}),S={id:Symbol("ID"),source:Symbol("Source")};function E(e,r){const t=l.ref({});return e==null||e.forEach(n=>{let c=null;n.default&&(c=(typeof n.default=="function"?n.default():n.default)||null),r&&r[n.key]&&(c=r[n.key]),t.value[n.key]=c}),[t,n=>{t.value=n}]}function A(e){function r(t,a){return e!=null&&e.disabledDate?e.disabledDate(t,a):!1}return(t,a)=>{switch(e==null?void 0:e.type){case"week":return l.createVNode(d.WeekPicker,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,"disabled-date":r,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"month":return l.createVNode(d.MonthPicker,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,"disabled-date":r,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"quarter":return l.createVNode(d.QuarterPicker,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,"disabled-date":r,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"year":return l.createVNode(d.YearPicker,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,"disabled-date":r,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"date":default:return l.createVNode(d.DatePicker,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,"disabled-date":r,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)}}}function Y(e){return(r,t)=>{switch(e==null?void 0:e.type){case"number":return l.createVNode(d.InputNumber,{modelValue:r[t.key],"onUpdate:modelValue":a=>r[t.key]=a,hideButton:!0,placeholder:e==null?void 0:e.placeholder,allowClear:e==null?void 0:e.clearable},null);case"string":default:return l.createVNode(d.Input,{modelValue:r[t.key],"onUpdate:modelValue":a=>r[t.key]=a,placeholder:e==null?void 0:e.placeholder,allowClear:e==null?void 0:e.clearable},null)}}}function W(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}function G(e){let r=!1;const t=l.ref(new Map);e.options instanceof Function?e.options().then(n=>t.value=n):e.options instanceof Promise?e.options.then(n=>t.value=n):t.value=e.options;function a(){e.autoSumbit}return(n,c)=>{let u;return e.default&&!r&&(n[c.key]=e.default,r=!0),l.createVNode(d.Select,{multiple:e.multiple,modelValue:n[c.key],"onUpdate:modelValue":o=>n[c.key]=o,placeholder:e.placeholder,allowClear:e.clearable,maxTagCount:e.maxTagCount,onChange:a},W(u=Array.from(t.value.entries()).map(([o,m])=>l.createVNode(d.Option,{key:o,value:o,label:m},null)))?u:{default:()=>[u]})}}function K(e){function r(){e!=null&&e.autoSumbit}return(t,a)=>(e!=null&&e.default&&(t[a.key]=e.default),l.createVNode(d.Switch,{modelValue:t[a.key],"onUpdate:modelValue":n=>t[a.key]=n,checkedText:(e==null?void 0:e.openLabel)??"是",uncheckedText:(e==null?void 0:e.closeLabel)??"否",checkedValue:(e==null?void 0:e.openValue)??!0,uncheckedValue:(e==null?void 0:e.closeValue)??!1,onChange:r},null))}function Q(e){return(r,t)=>{let a=[];function n(o){a=o}function c(o){if(o&&o.length===2){const[m,h]=o.sort(),s=V(m).startOf("days"),k=V(h).endOf("days");r[t.key]=[s.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD"),k.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD")]}}function u(o){return e!=null&&e.disabledDate?e.disabledDate(a,o):!1}return l.createVNode("div",null,[l.createVNode(d.RangePicker,{style:{width:"300px"},modelValue:r[t.key],"onUpdate:modelValue":o=>r[t.key]=o,onSelect:n,onChange:c,mode:e==null?void 0:e.type,allowClear:e==null?void 0:e.clearable,"disabled-date":u,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)])}}function X(e){return(r,t)=>l.createVNode(d.Textarea,{modelValue:r[t.key],"onUpdate:modelValue":a=>r[t.key]=a,placeholder:e==null?void 0:e.placeholder,autoSize:e==null?void 0:e.autosize,maxLength:e==null?void 0:e.maxLength},null)}function H(e){return r=>e(r)}function J(){return{input:Y,textarea:X,select:G,date:A,switch:K,dateRange:Q,render:H}}function Z(e,r){r.render||(r.render=a=>a.input());const t=r.render({...J()});return{default:()=>t(e,r)}}function p(e,r){return l.h(d.FormItem,{field:r.key,label:r.title},Z(e,r))}function g(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const ee=l.defineComponent({props:{form:{type:Object,required:!0},value:{type:Object,required:!1},modelValue:{type:Object,required:!1},minWidth:{type:Number,required:!1,default:300},name:{type:String,required:!1,default:"form"},submitable:{type:Boolean,required:!1,default:!1},searchable:{type:Boolean,required:!1,default:!1},footer:{type:Boolean,required:!1,default:!1}},emits:["submit","cancel","update:model-value"],expose:["formSource","updateFormField","updateFormSource","reset"],setup(e){const r=Math.random().toString(32).slice(2).toUpperCase(),t=l.ref(),[a,n]=E(e.form,e.modelValue||e.value),c=l.ref(0),u=l.ref(!0),o=()=>u.value=!u.value;l.provide(S.id,r),l.provide(S.source,a);const m=l.computed(()=>{if(!c.value)return 1;const f=e.form.reduce((i,y)=>i+((y==null?void 0:y.span)||1),0);return c.value-f%c.value}),h=l.computed(()=>e.form.reduce((f,i)=>(i.rule&&(f[i.key]=i.rule),f),{}));function s(){var i;const f=(i=t.value)==null?void 0:i.$el;c.value=Math.floor(f.offsetWidth/e.minWidth)}l.onMounted(()=>{s()});function k(f,i){n({...a,[f]:i})}function x(){var f;(f=t.value)==null||f.resetFields()}return window.addEventListener("resize",s),{formId:r,formSource:a,formInstance:t,formColumns:c,formRules:h,formCollspased:u,formActiosSpan:m,toggleFormCollapsed:o,updateFormField:k,updateFormSource:n,reset:x}},render(){const e=()=>{this.$emit("submit",this.formSource),this.$emit("update:model-value",this.formSource)},r=()=>{const t=[],a=this.footer?{span:this.formColumns}:{span:this.formActiosSpan};if(this.searchable&&(t.push(l.createVNode(d.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("搜索")]})),t.push(l.createVNode(d.Button,{type:"secondary",onClick:()=>{var n;return(n=this.formInstance)==null?void 0:n.resetFields()}},{default:()=>[l.createTextVNode("重置")]}))),this.submitable&&(t.push(l.createVNode(d.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("提交")]})),t.push(l.createVNode(d.Button,{type:"secondary",onClick:()=>this.$emit("cancel")},{default:()=>[l.createTextVNode("取消")]}))),this.form.some(n=>!!n.collapsed)&&t.push(l.createVNode(d.Button,{onClick:this.toggleFormCollapsed},{default:()=>this.formCollspased?"展开":"收起",icon:()=>this.formCollspased?l.createVNode(O,null,null):l.createVNode(R,null,null)})),this.$slots.actions&&t.push(...this.$slots.actions()),t.length)return l.createVNode(d.GridItem,a,{default:()=>[l.createVNode(d.FormItem,{hideLabel:!0,contentClass:this.footer?"form-footer":""},{default:()=>[l.createVNode(d.Space,null,g(t)?t:{default:()=>[t]})]})]})};return l.createVNode(d.Form,l.mergeProps({rules:this.formRules,onSubmitSuccess:e},{name:this.name},{"auto-label-width":!0,ref:t=>this.formInstance=t,model:this.formSource}),{default:()=>[l.createVNode(d.Grid,{cols:this.formColumns,"col-gap":10,"rol-gap":10},{default:()=>[this.form.filter(t=>this.formCollspased?!t.collapsed:!0).map(t=>{let a;return l.createVNode(d.GridItem,{span:t.span},g(a=p(this.formSource,t))?a:{default:()=>[a]})}),r()]})]})}});function te(e){return e}function re(e){const r=l.getCurrentInstance(),t=l.ref();function a(){var c,u;const n=(u=(c=r==null?void 0:r.proxy)==null?void 0:c.$refs)==null?void 0:u[e];n&&(t.value=n)}return l.onMounted(a),l.onUpdated(a),t}exports.FormRender=ee;exports.defineForm=te;exports.useForm=re;
@@ -1,3 +1,4 @@
1
1
  export { FormRender, type FormRenderInstance } from './form-render';
2
- export { defineForm } from './defines/define-form';
2
+ export * from './defines';
3
+ export * from './hooks';
3
4
  export * from './interfaces';
@@ -1,3 +1,3 @@
1
1
  import { type Ref } from 'vue';
2
2
  import type { DataRecord, FormItemsOptions } from '../interfaces';
3
- export declare function createFormSource(form?: FormItemsOptions): [Ref<DataRecord>, (value: DataRecord) => void];
3
+ export declare function createFormSource(form?: FormItemsOptions, source?: Record<string, any>): [Ref<DataRecord>, (value: DataRecord) => void];
@@ -0,0 +1 @@
1
+ export * from './define-form';
@@ -6,6 +6,7 @@ export interface RenderSelectItemOptions {
6
6
  clearable?: boolean;
7
7
  options: SelectOptions | Promise<SelectOptions> | (() => Promise<SelectOptions>);
8
8
  multiple?: boolean;
9
+ maxTagCount?: number;
9
10
  default?: string | number | boolean;
10
11
  autoSumbit?: boolean;
11
12
  }
@@ -3,9 +3,17 @@ import { type FieldRule } from '@arco-design/web-vue';
3
3
  import type { FormItemsOptions } from '../interfaces';
4
4
  export declare const FormRender: import("vue").DefineComponent<{
5
5
  form: {
6
- type: PropType<FormItemsOptions>;
6
+ type: PropType<FormItemsOptions<any>>;
7
7
  required: true;
8
8
  };
9
+ value: {
10
+ type: PropType<Record<string, any>>;
11
+ required: false;
12
+ };
13
+ modelValue: {
14
+ type: PropType<Record<string, any>>;
15
+ required: false;
16
+ };
9
17
  minWidth: {
10
18
  type: NumberConstructor;
11
19
  required: false;
@@ -287,11 +295,22 @@ export declare const FormRender: import("vue").DefineComponent<{
287
295
  formCollspased: import("vue").Ref<boolean>;
288
296
  formActiosSpan: import("vue").ComputedRef<number>;
289
297
  toggleFormCollapsed: () => boolean;
290
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "cancel")[], "submit" | "cancel", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
298
+ updateFormField: (key: string, value: any) => void;
299
+ updateFormSource: (value: import("../interfaces").DataRecord) => void;
300
+ reset: () => void;
301
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "cancel" | "update:model-value")[], "submit" | "cancel" | "update:model-value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
291
302
  form: {
292
- type: PropType<FormItemsOptions>;
303
+ type: PropType<FormItemsOptions<any>>;
293
304
  required: true;
294
305
  };
306
+ value: {
307
+ type: PropType<Record<string, any>>;
308
+ required: false;
309
+ };
310
+ modelValue: {
311
+ type: PropType<Record<string, any>>;
312
+ required: false;
313
+ };
295
314
  minWidth: {
296
315
  type: NumberConstructor;
297
316
  required: false;
@@ -320,6 +339,7 @@ export declare const FormRender: import("vue").DefineComponent<{
320
339
  }>> & {
321
340
  onSubmit?: ((...args: any[]) => any) | undefined;
322
341
  onCancel?: ((...args: any[]) => any) | undefined;
342
+ "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
323
343
  }, {
324
344
  footer: boolean;
325
345
  name: string;
@@ -0,0 +1 @@
1
+ export * from './use-form';
@@ -0,0 +1,12 @@
1
+ import { type ComponentPublicInstance, type Ref } from 'vue';
2
+ import type { FormRenderInstance } from '../form-render';
3
+ type FormRenderExpose = {
4
+ -readonly [K in keyof Omit<FormRenderInstance, keyof ComponentPublicInstance>]: FormRenderInstance[K];
5
+ };
6
+ /**
7
+ * 获取TableRender实例
8
+ * @param key
9
+ * @returns
10
+ */
11
+ export declare function useForm(key: string): Readonly<Ref<FormRenderExpose>>;
12
+ export {};
@@ -1,3 +1,4 @@
1
1
  export { FormRender, type FormRenderInstance } from './form-render';
2
- export { defineForm } from './defines/define-form';
2
+ export * from './defines';
3
+ export * from './hooks';
3
4
  export * from './interfaces';
package/dist/es/index.mjs CHANGED
@@ -1,20 +1,20 @@
1
- import { getCurrentInstance as U, inject as M, defineComponent as g, computed as s, openBlock as F, createElementBlock as I, normalizeClass as D, normalizeStyle as _, createElementVNode as j, ref as h, createVNode as u, isVNode as P, h as B, provide as $, onMounted as R, mergeProps as q, createTextVNode as y } from "vue";
2
- import { DatePicker as A, YearPicker as Y, QuarterPicker as E, MonthPicker as T, WeekPicker as W, Input as G, InputNumber as K, Select as Q, Option as X, Switch as H, RangePicker as J, Textarea as Z, FormItem as z, Form as p, Grid as ee, GridItem as C, Button as o, Space as re } from "@arco-design/web-vue";
3
- import x from "dayjs";
4
- const le = Symbol("ArcoConfigProvider"), te = "arco", ae = "$arco", L = (e) => {
1
+ import { getCurrentInstance as D, inject as T, defineComponent as C, computed as s, openBlock as _, createElementBlock as j, normalizeClass as P, normalizeStyle as z, createElementVNode as L, ref as m, createVNode as n, isVNode as O, h as A, provide as x, onMounted as U, mergeProps as Y, createTextVNode as y, onUpdated as E } from "vue";
2
+ import { DatePicker as W, YearPicker as G, QuarterPicker as K, MonthPicker as Q, WeekPicker as X, Input as H, InputNumber as J, Select as Z, Option as p, Switch as ee, RangePicker as re, Textarea as le, FormItem as N, Form as te, Grid as ae, GridItem as F, Button as h, Space as ue } from "@arco-design/web-vue";
3
+ import w from "dayjs";
4
+ const ne = Symbol("ArcoConfigProvider"), ce = "arco", de = "$arco", M = (e) => {
5
5
  var l, r, t;
6
- const a = U(), c = M(le, void 0), n = (t = (r = c == null ? void 0 : c.prefixCls) != null ? r : (l = a == null ? void 0 : a.appContext.config.globalProperties[ae]) == null ? void 0 : l.classPrefix) != null ? t : te;
7
- return e ? `${n}-${e}` : n;
8
- }, ne = Object.prototype.toString;
9
- function N(e) {
10
- return ne.call(e) === "[object Number]" && e === e;
6
+ const a = D(), c = T(ne, void 0), u = (t = (r = c == null ? void 0 : c.prefixCls) != null ? r : (l = a == null ? void 0 : a.appContext.config.globalProperties[de]) == null ? void 0 : l.classPrefix) != null ? t : ce;
7
+ return e ? `${u}-${e}` : u;
8
+ }, fe = Object.prototype.toString;
9
+ function B(e) {
10
+ return fe.call(e) === "[object Number]" && e === e;
11
11
  }
12
- var O = (e, l) => {
12
+ var q = (e, l) => {
13
13
  for (const [r, t] of l)
14
14
  e[r] = t;
15
15
  return e;
16
16
  };
17
- const ue = g({
17
+ const ie = C({
18
18
  name: "IconDown",
19
19
  props: {
20
20
  size: {
@@ -43,45 +43,45 @@ const ue = g({
43
43
  setup(e, {
44
44
  emit: l
45
45
  }) {
46
- const r = L("icon"), t = s(() => [r, `${r}-down`, {
46
+ const r = M("icon"), t = s(() => [r, `${r}-down`, {
47
47
  [`${r}-spin`]: e.spin
48
48
  }]), a = s(() => {
49
- const n = {};
50
- return e.size && (n.fontSize = N(e.size) ? `${e.size}px` : e.size), e.rotate && (n.transform = `rotate(${e.rotate}deg)`), n;
49
+ const u = {};
50
+ return e.size && (u.fontSize = B(e.size) ? `${e.size}px` : e.size), e.rotate && (u.transform = `rotate(${e.rotate}deg)`), u;
51
51
  });
52
52
  return {
53
53
  cls: t,
54
54
  innerStyle: a,
55
- onClick: (n) => {
56
- l("click", n);
55
+ onClick: (u) => {
56
+ l("click", u);
57
57
  }
58
58
  };
59
59
  }
60
- }), ce = ["stroke-width", "stroke-linecap", "stroke-linejoin"], de = /* @__PURE__ */ j("path", {
60
+ }), me = ["stroke-width", "stroke-linecap", "stroke-linejoin"], se = /* @__PURE__ */ L("path", {
61
61
  d: "M39.6 17.443 24.043 33 8.487 17.443"
62
- }, null, -1), fe = [de];
63
- function ie(e, l, r, t, a, c) {
64
- return F(), I("svg", {
62
+ }, null, -1), oe = [se];
63
+ function he(e, l, r, t, a, c) {
64
+ return _(), j("svg", {
65
65
  viewBox: "0 0 48 48",
66
66
  fill: "none",
67
67
  xmlns: "http://www.w3.org/2000/svg",
68
68
  stroke: "currentColor",
69
- class: D(e.cls),
70
- style: _(e.innerStyle),
69
+ class: P(e.cls),
70
+ style: z(e.innerStyle),
71
71
  "stroke-width": e.strokeWidth,
72
72
  "stroke-linecap": e.strokeLinecap,
73
73
  "stroke-linejoin": e.strokeLinejoin,
74
- onClick: l[0] || (l[0] = (...n) => e.onClick && e.onClick(...n))
75
- }, fe, 14, ce);
74
+ onClick: l[0] || (l[0] = (...u) => e.onClick && e.onClick(...u))
75
+ }, oe, 14, me);
76
76
  }
77
- var v = /* @__PURE__ */ O(ue, [["render", ie]]);
78
- const se = Object.assign(v, {
77
+ var g = /* @__PURE__ */ q(ie, [["render", he]]);
78
+ const ke = Object.assign(g, {
79
79
  install: (e, l) => {
80
80
  var r;
81
81
  const t = (r = l == null ? void 0 : l.iconPrefix) != null ? r : "";
82
- e.component(t + v.name, v);
82
+ e.component(t + g.name, g);
83
83
  }
84
- }), me = g({
84
+ }), ye = C({
85
85
  name: "IconUp",
86
86
  props: {
87
87
  size: {
@@ -110,64 +110,65 @@ const se = Object.assign(v, {
110
110
  setup(e, {
111
111
  emit: l
112
112
  }) {
113
- const r = L("icon"), t = s(() => [r, `${r}-up`, {
113
+ const r = M("icon"), t = s(() => [r, `${r}-up`, {
114
114
  [`${r}-spin`]: e.spin
115
115
  }]), a = s(() => {
116
- const n = {};
117
- return e.size && (n.fontSize = N(e.size) ? `${e.size}px` : e.size), e.rotate && (n.transform = `rotate(${e.rotate}deg)`), n;
116
+ const u = {};
117
+ return e.size && (u.fontSize = B(e.size) ? `${e.size}px` : e.size), e.rotate && (u.transform = `rotate(${e.rotate}deg)`), u;
118
118
  });
119
119
  return {
120
120
  cls: t,
121
121
  innerStyle: a,
122
- onClick: (n) => {
123
- l("click", n);
122
+ onClick: (u) => {
123
+ l("click", u);
124
124
  }
125
125
  };
126
126
  }
127
- }), oe = ["stroke-width", "stroke-linecap", "stroke-linejoin"], he = /* @__PURE__ */ j("path", {
127
+ }), be = ["stroke-width", "stroke-linecap", "stroke-linejoin"], ve = /* @__PURE__ */ L("path", {
128
128
  d: "M39.6 30.557 24.043 15 8.487 30.557"
129
- }, null, -1), ke = [he];
130
- function ye(e, l, r, t, a, c) {
131
- return F(), I("svg", {
129
+ }, null, -1), Se = [ve];
130
+ function ge(e, l, r, t, a, c) {
131
+ return _(), j("svg", {
132
132
  viewBox: "0 0 48 48",
133
133
  fill: "none",
134
134
  xmlns: "http://www.w3.org/2000/svg",
135
135
  stroke: "currentColor",
136
- class: D(e.cls),
137
- style: _(e.innerStyle),
136
+ class: P(e.cls),
137
+ style: z(e.innerStyle),
138
138
  "stroke-width": e.strokeWidth,
139
139
  "stroke-linecap": e.strokeLinecap,
140
140
  "stroke-linejoin": e.strokeLinejoin,
141
- onClick: l[0] || (l[0] = (...n) => e.onClick && e.onClick(...n))
142
- }, ke, 14, oe);
141
+ onClick: l[0] || (l[0] = (...u) => e.onClick && e.onClick(...u))
142
+ }, Se, 14, be);
143
143
  }
144
- var S = /* @__PURE__ */ O(me, [["render", ye]]);
145
- const be = Object.assign(S, {
144
+ var $ = /* @__PURE__ */ q(ye, [["render", ge]]);
145
+ const $e = Object.assign($, {
146
146
  install: (e, l) => {
147
147
  var r;
148
148
  const t = (r = l == null ? void 0 : l.iconPrefix) != null ? r : "";
149
- e.component(t + S.name, S);
149
+ e.component(t + $.name, $);
150
150
  }
151
- }), w = {
151
+ }), V = {
152
152
  id: Symbol("ID"),
153
153
  source: Symbol("Source")
154
154
  };
155
- function ve(e) {
156
- const l = h({});
157
- return e == null || e.forEach((t) => {
158
- l.value[t.key] = (typeof t.default == "function" ? t.default() : t.default) || null;
159
- }), [l, (t) => {
160
- l.value = t;
155
+ function Ce(e, l) {
156
+ const r = m({});
157
+ return e == null || e.forEach((a) => {
158
+ let c = null;
159
+ a.default && (c = (typeof a.default == "function" ? a.default() : a.default) || null), l && l[a.key] && (c = l[a.key]), r.value[a.key] = c;
160
+ }), [r, (a) => {
161
+ r.value = a;
161
162
  }];
162
163
  }
163
- function Se(e) {
164
+ function xe(e) {
164
165
  function l(r, t) {
165
166
  return e != null && e.disabledDate ? e.disabledDate(r, t) : !1;
166
167
  }
167
168
  return (r, t) => {
168
169
  switch (e == null ? void 0 : e.type) {
169
170
  case "week":
170
- return u(W, {
171
+ return n(X, {
171
172
  modelValue: r[t.key],
172
173
  "onUpdate:modelValue": (a) => r[t.key] = a,
173
174
  "disabled-date": l,
@@ -175,7 +176,7 @@ function Se(e) {
175
176
  "value-format": e == null ? void 0 : e.valueFormat
176
177
  }, null);
177
178
  case "month":
178
- return u(T, {
179
+ return n(Q, {
179
180
  modelValue: r[t.key],
180
181
  "onUpdate:modelValue": (a) => r[t.key] = a,
181
182
  "disabled-date": l,
@@ -183,7 +184,7 @@ function Se(e) {
183
184
  "value-format": e == null ? void 0 : e.valueFormat
184
185
  }, null);
185
186
  case "quarter":
186
- return u(E, {
187
+ return n(K, {
187
188
  modelValue: r[t.key],
188
189
  "onUpdate:modelValue": (a) => r[t.key] = a,
189
190
  "disabled-date": l,
@@ -191,7 +192,7 @@ function Se(e) {
191
192
  "value-format": e == null ? void 0 : e.valueFormat
192
193
  }, null);
193
194
  case "year":
194
- return u(Y, {
195
+ return n(G, {
195
196
  modelValue: r[t.key],
196
197
  "onUpdate:modelValue": (a) => r[t.key] = a,
197
198
  "disabled-date": l,
@@ -200,7 +201,7 @@ function Se(e) {
200
201
  }, null);
201
202
  case "date":
202
203
  default:
203
- return u(A, {
204
+ return n(W, {
204
205
  modelValue: r[t.key],
205
206
  "onUpdate:modelValue": (a) => r[t.key] = a,
206
207
  "disabled-date": l,
@@ -210,11 +211,11 @@ function Se(e) {
210
211
  }
211
212
  };
212
213
  }
213
- function ge(e) {
214
+ function Fe(e) {
214
215
  return (l, r) => {
215
216
  switch (e == null ? void 0 : e.type) {
216
217
  case "number":
217
- return u(K, {
218
+ return n(J, {
218
219
  modelValue: l[r.key],
219
220
  "onUpdate:modelValue": (t) => l[r.key] = t,
220
221
  hideButton: !0,
@@ -223,7 +224,7 @@ function ge(e) {
223
224
  }, null);
224
225
  case "string":
225
226
  default:
226
- return u(G, {
227
+ return n(H, {
227
228
  modelValue: l[r.key],
228
229
  "onUpdate:modelValue": (t) => l[r.key] = t,
229
230
  placeholder: e == null ? void 0 : e.placeholder,
@@ -232,39 +233,40 @@ function ge(e) {
232
233
  }
233
234
  };
234
235
  }
235
- function $e(e) {
236
- return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !P(e);
236
+ function we(e) {
237
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !O(e);
237
238
  }
238
- function Ce(e) {
239
+ function Ve(e) {
239
240
  let l = !1;
240
- const r = h(/* @__PURE__ */ new Map());
241
+ const r = m(/* @__PURE__ */ new Map());
241
242
  e.options instanceof Function ? e.options().then((a) => r.value = a) : e.options instanceof Promise ? e.options.then((a) => r.value = a) : r.value = e.options;
242
243
  function t() {
243
244
  e.autoSumbit;
244
245
  }
245
246
  return (a, c) => {
246
- let n;
247
- return e.default && !l && (a[c.key] = e.default, l = !0), u(Q, {
247
+ let u;
248
+ return e.default && !l && (a[c.key] = e.default, l = !0), n(Z, {
248
249
  multiple: e.multiple,
249
250
  modelValue: a[c.key],
250
251
  "onUpdate:modelValue": (d) => a[c.key] = d,
251
252
  placeholder: e.placeholder,
252
253
  allowClear: e.clearable,
254
+ maxTagCount: e.maxTagCount,
253
255
  onChange: t
254
- }, $e(n = Array.from(r.value.entries()).map(([d, m]) => u(X, {
256
+ }, we(u = Array.from(r.value.entries()).map(([d, o]) => n(p, {
255
257
  key: d,
256
258
  value: d,
257
- label: m
258
- }, null))) ? n : {
259
- default: () => [n]
259
+ label: o
260
+ }, null))) ? u : {
261
+ default: () => [u]
260
262
  });
261
263
  };
262
264
  }
263
- function xe(e) {
265
+ function Ie(e) {
264
266
  function l() {
265
267
  e != null && e.autoSumbit;
266
268
  }
267
- return (r, t) => (e != null && e.default && (r[t.key] = e.default), u(H, {
269
+ return (r, t) => (e != null && e.default && (r[t.key] = e.default), n(ee, {
268
270
  modelValue: r[t.key],
269
271
  "onUpdate:modelValue": (a) => r[t.key] = a,
270
272
  checkedText: (e == null ? void 0 : e.openLabel) ?? "是",
@@ -274,7 +276,7 @@ function xe(e) {
274
276
  onChange: l
275
277
  }, null));
276
278
  }
277
- function we(e) {
279
+ function De(e) {
278
280
  return (l, r) => {
279
281
  let t = [];
280
282
  function a(d) {
@@ -282,14 +284,14 @@ function we(e) {
282
284
  }
283
285
  function c(d) {
284
286
  if (d && d.length === 2) {
285
- const [m, k] = d.sort(), i = x(m).startOf("days"), f = x(k).endOf("days");
286
- l[r.key] = [i.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD"), f.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD")];
287
+ const [o, b] = d.sort(), k = w(o).startOf("days"), v = w(b).endOf("days");
288
+ l[r.key] = [k.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD"), v.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD")];
287
289
  }
288
290
  }
289
- function n(d) {
291
+ function u(d) {
290
292
  return e != null && e.disabledDate ? e.disabledDate(t, d) : !1;
291
293
  }
292
- return u("div", null, [u(J, {
294
+ return n("div", null, [n(re, {
293
295
  style: {
294
296
  width: "300px"
295
297
  },
@@ -299,14 +301,14 @@ function we(e) {
299
301
  onChange: c,
300
302
  mode: e == null ? void 0 : e.type,
301
303
  allowClear: e == null ? void 0 : e.clearable,
302
- "disabled-date": n,
304
+ "disabled-date": u,
303
305
  format: e == null ? void 0 : e.labelFormat,
304
306
  "value-format": e == null ? void 0 : e.valueFormat
305
307
  }, null)]);
306
308
  };
307
309
  }
308
- function Ve(e) {
309
- return (l, r) => u(Z, {
310
+ function _e(e) {
311
+ return (l, r) => n(le, {
310
312
  modelValue: l[r.key],
311
313
  "onUpdate:modelValue": (t) => l[r.key] = t,
312
314
  placeholder: e == null ? void 0 : e.placeholder,
@@ -314,44 +316,52 @@ function Ve(e) {
314
316
  maxLength: e == null ? void 0 : e.maxLength
315
317
  }, null);
316
318
  }
317
- function Fe(e) {
319
+ function je(e) {
318
320
  return (l) => e(l);
319
321
  }
320
- function Ie() {
322
+ function Pe() {
321
323
  return {
322
- input: ge,
323
- textarea: Ve,
324
- select: Ce,
325
- date: Se,
326
- switch: xe,
327
- dateRange: we,
328
- render: Fe
324
+ input: Fe,
325
+ textarea: _e,
326
+ select: Ve,
327
+ date: xe,
328
+ switch: Ie,
329
+ dateRange: De,
330
+ render: je
329
331
  };
330
332
  }
331
- function De(e, l) {
333
+ function ze(e, l) {
332
334
  l.render || (l.render = (t) => t.input());
333
335
  const r = l.render({
334
- ...Ie()
336
+ ...Pe()
335
337
  });
336
338
  return {
337
339
  default: () => r(e, l)
338
340
  };
339
341
  }
340
- function _e(e, l) {
341
- return B(z, {
342
+ function Le(e, l) {
343
+ return A(N, {
342
344
  field: l.key,
343
345
  label: l.title
344
- }, De(e, l));
346
+ }, ze(e, l));
345
347
  }
346
- function V(e) {
347
- return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !P(e);
348
+ function I(e) {
349
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !O(e);
348
350
  }
349
- const Le = /* @__PURE__ */ g({
351
+ const Me = /* @__PURE__ */ C({
350
352
  props: {
351
353
  form: {
352
354
  type: Object,
353
355
  required: !0
354
356
  },
357
+ value: {
358
+ type: Object,
359
+ required: !1
360
+ },
361
+ modelValue: {
362
+ type: Object,
363
+ required: !1
364
+ },
355
365
  minWidth: {
356
366
  type: Number,
357
367
  required: !1,
@@ -378,50 +388,64 @@ const Le = /* @__PURE__ */ g({
378
388
  default: !1
379
389
  }
380
390
  },
381
- emits: ["submit", "cancel"],
382
- expose: ["formSource"],
391
+ emits: ["submit", "cancel", "update:model-value"],
392
+ expose: ["formSource", "updateFormField", "updateFormSource", "reset"],
383
393
  setup(e) {
384
- const l = Math.random().toString(32).slice(2).toUpperCase(), r = h(), [t] = ve(e.form), a = h(0), c = h(!0), n = () => c.value = !c.value;
385
- $(w.id, l), $(w.source, t);
386
- const d = s(() => {
387
- if (!a.value)
394
+ const l = Math.random().toString(32).slice(2).toUpperCase(), r = m(), [t, a] = Ce(e.form, e.modelValue || e.value), c = m(0), u = m(!0), d = () => u.value = !u.value;
395
+ x(V.id, l), x(V.source, t);
396
+ const o = s(() => {
397
+ if (!c.value)
388
398
  return 1;
389
- const i = e.form.reduce((f, b) => f + ((b == null ? void 0 : b.span) || 1), 0);
390
- return a.value - i % a.value;
391
- }), m = s(() => e.form.reduce((i, f) => (f.rule && (i[f.key] = f.rule), i), {}));
399
+ const f = e.form.reduce((i, S) => i + ((S == null ? void 0 : S.span) || 1), 0);
400
+ return c.value - f % c.value;
401
+ }), b = s(() => e.form.reduce((f, i) => (i.rule && (f[i.key] = i.rule), f), {}));
392
402
  function k() {
393
- var f;
394
- const i = (f = r.value) == null ? void 0 : f.$el;
395
- a.value = Math.floor(i.offsetWidth / e.minWidth);
403
+ var i;
404
+ const f = (i = r.value) == null ? void 0 : i.$el;
405
+ c.value = Math.floor(f.offsetWidth / e.minWidth);
396
406
  }
397
- return R(() => {
407
+ U(() => {
398
408
  k();
399
- }), window.addEventListener("resize", k), {
409
+ });
410
+ function v(f, i) {
411
+ a({
412
+ ...t,
413
+ [f]: i
414
+ });
415
+ }
416
+ function R() {
417
+ var f;
418
+ (f = r.value) == null || f.resetFields();
419
+ }
420
+ return window.addEventListener("resize", k), {
400
421
  formId: l,
401
422
  formSource: t,
402
423
  formInstance: r,
403
- formColumns: a,
404
- formRules: m,
405
- formCollspased: c,
406
- formActiosSpan: d,
407
- toggleFormCollapsed: n
424
+ formColumns: c,
425
+ formRules: b,
426
+ formCollspased: u,
427
+ formActiosSpan: o,
428
+ toggleFormCollapsed: d,
429
+ updateFormField: v,
430
+ updateFormSource: a,
431
+ reset: R
408
432
  };
409
433
  },
410
434
  render() {
411
435
  const e = () => {
412
- this.$emit("submit", this.formSource);
436
+ this.$emit("submit", this.formSource), this.$emit("update:model-value", this.formSource);
413
437
  }, l = () => {
414
438
  const r = [], t = this.footer ? {
415
439
  span: this.formColumns
416
440
  } : {
417
441
  span: this.formActiosSpan
418
442
  };
419
- if (this.searchable && (r.push(u(o, {
443
+ if (this.searchable && (r.push(n(h, {
420
444
  type: "primary",
421
445
  htmlType: "submit"
422
446
  }, {
423
447
  default: () => [y("搜索")]
424
- })), r.push(u(o, {
448
+ })), r.push(n(h, {
425
449
  type: "secondary",
426
450
  onClick: () => {
427
451
  var a;
@@ -429,34 +453,34 @@ const Le = /* @__PURE__ */ g({
429
453
  }
430
454
  }, {
431
455
  default: () => [y("重置")]
432
- }))), this.submitable && (r.push(u(o, {
456
+ }))), this.submitable && (r.push(n(h, {
433
457
  type: "primary",
434
458
  htmlType: "submit"
435
459
  }, {
436
460
  default: () => [y("提交")]
437
- })), r.push(u(o, {
461
+ })), r.push(n(h, {
438
462
  type: "secondary",
439
463
  onClick: () => this.$emit("cancel")
440
464
  }, {
441
465
  default: () => [y("取消")]
442
- }))), this.form.some((a) => !!a.collapsed) && r.push(u(o, {
466
+ }))), this.form.some((a) => !!a.collapsed) && r.push(n(h, {
443
467
  onClick: this.toggleFormCollapsed
444
468
  }, {
445
469
  default: () => this.formCollspased ? "展开" : "收起",
446
- icon: () => this.formCollspased ? u(se, null, null) : u(be, null, null)
470
+ icon: () => this.formCollspased ? n(ke, null, null) : n($e, null, null)
447
471
  })), this.$slots.actions && r.push(...this.$slots.actions()), r.length)
448
- return u(C, t, {
449
- default: () => [u(z, {
472
+ return n(F, t, {
473
+ default: () => [n(N, {
450
474
  hideLabel: !0,
451
475
  contentClass: this.footer ? "form-footer" : ""
452
476
  }, {
453
- default: () => [u(re, null, V(r) ? r : {
477
+ default: () => [n(ue, null, I(r) ? r : {
454
478
  default: () => [r]
455
479
  })]
456
480
  })]
457
481
  });
458
482
  };
459
- return u(p, q({
483
+ return n(te, Y({
460
484
  rules: this.formRules,
461
485
  onSubmitSuccess: e
462
486
  }, {
@@ -466,16 +490,16 @@ const Le = /* @__PURE__ */ g({
466
490
  ref: (r) => this.formInstance = r,
467
491
  model: this.formSource
468
492
  }), {
469
- default: () => [u(ee, {
493
+ default: () => [n(ae, {
470
494
  cols: this.formColumns,
471
495
  "col-gap": 10,
472
496
  "rol-gap": 10
473
497
  }, {
474
498
  default: () => [this.form.filter((r) => this.formCollspased ? !r.collapsed : !0).map((r) => {
475
499
  let t;
476
- return u(C, {
500
+ return n(F, {
477
501
  span: r.span
478
- }, V(t = _e(this.formSource, r)) ? t : {
502
+ }, I(t = Le(this.formSource, r)) ? t : {
479
503
  default: () => [t]
480
504
  });
481
505
  }), l()]
@@ -483,10 +507,20 @@ const Le = /* @__PURE__ */ g({
483
507
  });
484
508
  }
485
509
  });
486
- function Ne(e) {
510
+ function Be(e) {
487
511
  return e;
488
512
  }
513
+ function qe(e) {
514
+ const l = D(), r = m();
515
+ function t() {
516
+ var c, u;
517
+ const a = (u = (c = l == null ? void 0 : l.proxy) == null ? void 0 : c.$refs) == null ? void 0 : u[e];
518
+ a && (r.value = a);
519
+ }
520
+ return U(t), E(t), r;
521
+ }
489
522
  export {
490
- Le as FormRender,
491
- Ne as defineForm
523
+ Me as FormRender,
524
+ Be as defineForm,
525
+ qe as useForm
492
526
  };
@@ -1,3 +1,3 @@
1
1
  import { type Ref } from 'vue';
2
2
  import type { DataRecord, FormItemsOptions } from '../interfaces';
3
- export declare function createFormSource(form?: FormItemsOptions): [Ref<DataRecord>, (value: DataRecord) => void];
3
+ export declare function createFormSource(form?: FormItemsOptions, source?: Record<string, any>): [Ref<DataRecord>, (value: DataRecord) => void];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gopowerteam/form-render",
3
3
  "type": "module",
4
- "version": "0.0.6",
4
+ "version": "0.0.7",
5
5
  "author": {
6
6
  "name": "zhuchentong",
7
7
  "email": "2037630@gmail.com"