@gopowerteam/form-render 0.0.6 → 0.0.8

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';
@@ -3,5 +3,6 @@ export declare function renderInputItem<T = DataRecord>(options?: RenderInputIte
3
3
  export interface RenderInputItemOptions {
4
4
  placeholder?: string;
5
5
  clearable?: boolean;
6
+ readonly?: boolean;
6
7
  type?: 'string' | 'number';
7
8
  }
@@ -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 t,r,a;const u=l.getCurrentInstance(),c=l.inject(F,void 0),n=(a=(r=c==null?void 0:c.prefixCls)!=null?r:(t=u==null?void 0:u.appContext.config.globalProperties[I])==null?void 0:t.classPrefix)!=null?a:w;return e?`${n}-${e}`:n},j=Object.prototype.toString;function $(e){return j.call(e)==="[object Number]"&&e===e}var N=(e,t)=>{for(const[r,a]of t)e[r]=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:t}){const r=C("icon"),a=l.computed(()=>[r,`${r}-down`,{[`${r}-spin`]:e.spin}]),u=l.computed(()=>{const n={};return e.size&&(n.fontSize=$(e.size)?`${e.size}px`:e.size),e.rotate&&(n.transform=`rotate(${e.rotate}deg)`),n});return{cls:a,innerStyle:u,onClick:n=>{t("click",n)}}}}),_=["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,t,r,a,u,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:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))},z,14,_)}var b=N(D,[["render",B]]);const O=Object.assign(b,{install:(e,t)=>{var r;const a=(r=t==null?void 0:t.iconPrefix)!=null?r:"";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:t}){const r=C("icon"),a=l.computed(()=>[r,`${r}-up`,{[`${r}-spin`]:e.spin}]),u=l.computed(()=>{const n={};return e.size&&(n.fontSize=$(e.size)?`${e.size}px`:e.size),e.rotate&&(n.transform=`rotate(${e.rotate}deg)`),n});return{cls:a,innerStyle:u,onClick:n=>{t("click",n)}}}}),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,t,r,a,u,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:t[0]||(t[0]=(...n)=>e.onClick&&e.onClick(...n))},q,14,M)}var v=N(L,[["render",T]]);const R=Object.assign(v,{install:(e,t)=>{var r;const a=(r=t==null?void 0:t.iconPrefix)!=null?r:"";e.component(a+v.name,v)}}),S={id:Symbol("ID"),source:Symbol("Source")};function E(e,t){const r=l.ref({});return e==null||e.forEach(u=>{let c=null;u.default&&(c=(typeof u.default=="function"?u.default():u.default)||null),t&&t[u.key]&&(c=t[u.key]),r.value[u.key]=c}),[r,u=>{r.value=u}]}function A(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(d.WeekPicker,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"month":return l.createVNode(d.MonthPicker,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"quarter":return l.createVNode(d.QuarterPicker,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null);case"year":return l.createVNode(d.YearPicker,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,"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(d.DatePicker,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,"disabled-date":t,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)}}}function Y(e){return(t,r)=>{switch(e==null?void 0:e.type){case"number":return l.createVNode(d.InputNumber,{modelValue:t[r.key],"onUpdate:modelValue":a=>t[r.key]=a,hideButton:!0,"read-only":e==null?void 0:e.readonly,placeholder:e==null?void 0:e.placeholder,allowClear:e==null?void 0:e.clearable},null);case"string":default:return l.createVNode(d.Input,{modelValue:t[r.key],"onUpdate:modelValue":a=>t[r.key]=a,placeholder:e==null?void 0:e.placeholder,readonly:e==null?void 0:e.readonly,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 t=!1;const r=l.ref(new Map);e.options instanceof Function?e.options().then(u=>r.value=u):e.options instanceof Promise?e.options.then(u=>r.value=u):r.value=e.options;function a(){e.autoSumbit}return(u,c)=>{let n;return e.default&&!t&&(u[c.key]=e.default,t=!0),l.createVNode(d.Select,{multiple:e.multiple,modelValue:u[c.key],"onUpdate:modelValue":f=>u[c.key]=f,placeholder:e.placeholder,allowClear:e.clearable,maxTagCount:e.maxTagCount??5,onChange:a},W(n=Array.from(r.value.entries()).map(([f,o])=>l.createVNode(d.Option,{key:f,value:f,label:o},null)))?n:{default:()=>[n]})}}function K(e){function t(){e!=null&&e.autoSumbit}return(r,a)=>(e!=null&&e.default&&(r[a.key]=e.default),l.createVNode(d.Switch,{modelValue:r[a.key],"onUpdate:modelValue":u=>r[a.key]=u,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 Q(e){return(t,r)=>{let a=[];function u(f){a=f}function c(f){if(f&&f.length===2){const[o,h]=f.sort(),s=V(o).startOf("days"),y=V(h).endOf("days");t[r.key]=[s.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD"),y.format((e==null?void 0:e.valueFormat)||"YYYY-MM-DD")]}}function n(f){return e!=null&&e.disabledDate?e.disabledDate(a,f):!1}return l.createVNode("div",null,[l.createVNode(d.RangePicker,{style:{width:"300px"},modelValue:t[r.key],"onUpdate:modelValue":f=>t[r.key]=f,onSelect:u,onChange:c,mode:e==null?void 0:e.type,allowClear:e==null?void 0:e.clearable,"disabled-date":n,format:e==null?void 0:e.labelFormat,"value-format":e==null?void 0:e.valueFormat},null)])}}function X(e){return(t,r)=>l.createVNode(d.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 H(e){return t=>e(t)}function J(){return{input:Y,textarea:X,select:G,date:A,switch:K,dateRange:Q,render:H}}function Z(e,t){t.render||(t.render=a=>a.input());const r=t.render({...J()});return{default:()=>r(e,t)}}function p(e,t){return l.h(d.FormItem,{field:t.key,label:t.title},Z(e,t))}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 t=Math.random().toString(32).slice(2).toUpperCase(),r=l.ref(),[a,u]=E(e.form,e.modelValue||e.value),c=l.ref(0),n=l.ref(!0),f=()=>n.value=!n.value;l.provide(S.id,t),l.provide(S.source,a);const o=l.computed(()=>{if(!c.value)return 1;const m=e.form.reduce((i,k)=>i+((k==null?void 0:k.span)||1),0);return c.value-m%c.value}),h=l.computed(()=>e.form.reduce((m,i)=>(i.rule&&(m[i.key]=i.rule),m),{}));function s(){var i;const m=(i=r.value)==null?void 0:i.$el;c.value=Math.floor(m.offsetWidth/e.minWidth)}l.onMounted(()=>{s()});function y(m,i){u({...a,[m]:i})}function x(){var m;(m=r.value)==null||m.resetFields()}return window.addEventListener("resize",s),{formId:t,formSource:a,formInstance:r,formColumns:c,formRules:h,formCollspased:n,formActiosSpan:o,toggleFormCollapsed:f,updateFormField:y,updateFormSource:u,reset:x}},render(){const e=()=>{this.$emit("submit",this.formSource),this.$emit("update:model-value",this.formSource)},t=()=>{const r=[],a=this.footer?{span:this.formColumns}:{span:this.formActiosSpan};if(this.searchable&&(r.push(l.createVNode(d.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("搜索")]})),r.push(l.createVNode(d.Button,{type:"secondary",onClick:()=>{var u;return(u=this.formInstance)==null?void 0:u.resetFields()}},{default:()=>[l.createTextVNode("重置")]}))),this.submitable&&(r.push(l.createVNode(d.Button,{type:"primary",htmlType:"submit"},{default:()=>[l.createTextVNode("提交")]})),r.push(l.createVNode(d.Button,{type:"secondary",onClick:()=>this.$emit("cancel")},{default:()=>[l.createTextVNode("取消")]}))),this.form.some(u=>!!u.collapsed)&&r.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&&r.push(...this.$slots.actions()),r.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(r)?r:{default:()=>[r]})]})]})};return l.createVNode(d.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(d.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(d.GridItem,{span:r.span},g(a=p(this.formSource,r))?a:{default:()=>[a]})}),t()]})]})}});function re(e){return e}function te(e){const t=l.getCurrentInstance(),r=l.ref();function a(){var c,n;const u=(n=(c=t==null?void 0:t.proxy)==null?void 0:c.$refs)==null?void 0:n[e];u&&(r.value=u)}return l.onMounted(a),l.onUpdated(a),r}exports.FormRender=ee;exports.defineForm=re;exports.useForm=te;
@@ -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';
@@ -3,5 +3,6 @@ export declare function renderInputItem<T = DataRecord>(options?: RenderInputIte
3
3
  export interface RenderInputItemOptions {
4
4
  placeholder?: string;
5
5
  clearable?: boolean;
6
+ readonly?: boolean;
6
7
  type?: 'string' | 'number';
7
8
  }
@@ -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 i, createVNode as n, isVNode as O, h as A, provide as x, onMounted as U, mergeProps as Y, createTextVNode as k, 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 me = 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
+ }), ie = ["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, ie);
76
76
  }
77
- var v = /* @__PURE__ */ O(ue, [["render", ie]]);
78
- const se = Object.assign(v, {
77
+ var g = /* @__PURE__ */ q(me, [["render", he]]);
78
+ const ye = 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
+ }), ke = 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(ke, [["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 = i({});
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,61 +211,64 @@ 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,
222
+ "read-only": e == null ? void 0 : e.readonly,
221
223
  placeholder: e == null ? void 0 : e.placeholder,
222
224
  allowClear: e == null ? void 0 : e.clearable
223
225
  }, null);
224
226
  case "string":
225
227
  default:
226
- return u(G, {
228
+ return n(H, {
227
229
  modelValue: l[r.key],
228
230
  "onUpdate:modelValue": (t) => l[r.key] = t,
229
231
  placeholder: e == null ? void 0 : e.placeholder,
232
+ readonly: e == null ? void 0 : e.readonly,
230
233
  allowClear: e == null ? void 0 : e.clearable
231
234
  }, null);
232
235
  }
233
236
  };
234
237
  }
235
- function $e(e) {
236
- return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !P(e);
238
+ function we(e) {
239
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !O(e);
237
240
  }
238
- function Ce(e) {
241
+ function Ve(e) {
239
242
  let l = !1;
240
- const r = h(/* @__PURE__ */ new Map());
243
+ const r = i(/* @__PURE__ */ new Map());
241
244
  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
245
  function t() {
243
246
  e.autoSumbit;
244
247
  }
245
248
  return (a, c) => {
246
- let n;
247
- return e.default && !l && (a[c.key] = e.default, l = !0), u(Q, {
249
+ let u;
250
+ return e.default && !l && (a[c.key] = e.default, l = !0), n(Z, {
248
251
  multiple: e.multiple,
249
252
  modelValue: a[c.key],
250
253
  "onUpdate:modelValue": (d) => a[c.key] = d,
251
254
  placeholder: e.placeholder,
252
255
  allowClear: e.clearable,
256
+ maxTagCount: e.maxTagCount ?? 5,
253
257
  onChange: t
254
- }, $e(n = Array.from(r.value.entries()).map(([d, m]) => u(X, {
258
+ }, we(u = Array.from(r.value.entries()).map(([d, o]) => n(p, {
255
259
  key: d,
256
260
  value: d,
257
- label: m
258
- }, null))) ? n : {
259
- default: () => [n]
261
+ label: o
262
+ }, null))) ? u : {
263
+ default: () => [u]
260
264
  });
261
265
  };
262
266
  }
263
- function xe(e) {
267
+ function Ie(e) {
264
268
  function l() {
265
269
  e != null && e.autoSumbit;
266
270
  }
267
- return (r, t) => (e != null && e.default && (r[t.key] = e.default), u(H, {
271
+ return (r, t) => (e != null && e.default && (r[t.key] = e.default), n(ee, {
268
272
  modelValue: r[t.key],
269
273
  "onUpdate:modelValue": (a) => r[t.key] = a,
270
274
  checkedText: (e == null ? void 0 : e.openLabel) ?? "是",
@@ -274,7 +278,7 @@ function xe(e) {
274
278
  onChange: l
275
279
  }, null));
276
280
  }
277
- function we(e) {
281
+ function De(e) {
278
282
  return (l, r) => {
279
283
  let t = [];
280
284
  function a(d) {
@@ -282,14 +286,14 @@ function we(e) {
282
286
  }
283
287
  function c(d) {
284
288
  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")];
289
+ const [o, b] = d.sort(), y = w(o).startOf("days"), v = w(b).endOf("days");
290
+ l[r.key] = [y.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD"), v.format((e == null ? void 0 : e.valueFormat) || "YYYY-MM-DD")];
287
291
  }
288
292
  }
289
- function n(d) {
293
+ function u(d) {
290
294
  return e != null && e.disabledDate ? e.disabledDate(t, d) : !1;
291
295
  }
292
- return u("div", null, [u(J, {
296
+ return n("div", null, [n(re, {
293
297
  style: {
294
298
  width: "300px"
295
299
  },
@@ -299,14 +303,14 @@ function we(e) {
299
303
  onChange: c,
300
304
  mode: e == null ? void 0 : e.type,
301
305
  allowClear: e == null ? void 0 : e.clearable,
302
- "disabled-date": n,
306
+ "disabled-date": u,
303
307
  format: e == null ? void 0 : e.labelFormat,
304
308
  "value-format": e == null ? void 0 : e.valueFormat
305
309
  }, null)]);
306
310
  };
307
311
  }
308
- function Ve(e) {
309
- return (l, r) => u(Z, {
312
+ function _e(e) {
313
+ return (l, r) => n(le, {
310
314
  modelValue: l[r.key],
311
315
  "onUpdate:modelValue": (t) => l[r.key] = t,
312
316
  placeholder: e == null ? void 0 : e.placeholder,
@@ -314,44 +318,52 @@ function Ve(e) {
314
318
  maxLength: e == null ? void 0 : e.maxLength
315
319
  }, null);
316
320
  }
317
- function Fe(e) {
321
+ function je(e) {
318
322
  return (l) => e(l);
319
323
  }
320
- function Ie() {
324
+ function Pe() {
321
325
  return {
322
- input: ge,
323
- textarea: Ve,
324
- select: Ce,
325
- date: Se,
326
- switch: xe,
327
- dateRange: we,
328
- render: Fe
326
+ input: Fe,
327
+ textarea: _e,
328
+ select: Ve,
329
+ date: xe,
330
+ switch: Ie,
331
+ dateRange: De,
332
+ render: je
329
333
  };
330
334
  }
331
- function De(e, l) {
335
+ function ze(e, l) {
332
336
  l.render || (l.render = (t) => t.input());
333
337
  const r = l.render({
334
- ...Ie()
338
+ ...Pe()
335
339
  });
336
340
  return {
337
341
  default: () => r(e, l)
338
342
  };
339
343
  }
340
- function _e(e, l) {
341
- return B(z, {
344
+ function Le(e, l) {
345
+ return A(N, {
342
346
  field: l.key,
343
347
  label: l.title
344
- }, De(e, l));
348
+ }, ze(e, l));
345
349
  }
346
- function V(e) {
347
- return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !P(e);
350
+ function I(e) {
351
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !O(e);
348
352
  }
349
- const Le = /* @__PURE__ */ g({
353
+ const Me = /* @__PURE__ */ C({
350
354
  props: {
351
355
  form: {
352
356
  type: Object,
353
357
  required: !0
354
358
  },
359
+ value: {
360
+ type: Object,
361
+ required: !1
362
+ },
363
+ modelValue: {
364
+ type: Object,
365
+ required: !1
366
+ },
355
367
  minWidth: {
356
368
  type: Number,
357
369
  required: !1,
@@ -378,85 +390,99 @@ const Le = /* @__PURE__ */ g({
378
390
  default: !1
379
391
  }
380
392
  },
381
- emits: ["submit", "cancel"],
382
- expose: ["formSource"],
393
+ emits: ["submit", "cancel", "update:model-value"],
394
+ expose: ["formSource", "updateFormField", "updateFormSource", "reset"],
383
395
  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)
396
+ const l = Math.random().toString(32).slice(2).toUpperCase(), r = i(), [t, a] = Ce(e.form, e.modelValue || e.value), c = i(0), u = i(!0), d = () => u.value = !u.value;
397
+ x(V.id, l), x(V.source, t);
398
+ const o = s(() => {
399
+ if (!c.value)
388
400
  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), {}));
392
- function k() {
401
+ const f = e.form.reduce((m, S) => m + ((S == null ? void 0 : S.span) || 1), 0);
402
+ return c.value - f % c.value;
403
+ }), b = s(() => e.form.reduce((f, m) => (m.rule && (f[m.key] = m.rule), f), {}));
404
+ function y() {
405
+ var m;
406
+ const f = (m = r.value) == null ? void 0 : m.$el;
407
+ c.value = Math.floor(f.offsetWidth / e.minWidth);
408
+ }
409
+ U(() => {
410
+ y();
411
+ });
412
+ function v(f, m) {
413
+ a({
414
+ ...t,
415
+ [f]: m
416
+ });
417
+ }
418
+ function R() {
393
419
  var f;
394
- const i = (f = r.value) == null ? void 0 : f.$el;
395
- a.value = Math.floor(i.offsetWidth / e.minWidth);
420
+ (f = r.value) == null || f.resetFields();
396
421
  }
397
- return R(() => {
398
- k();
399
- }), window.addEventListener("resize", k), {
422
+ return window.addEventListener("resize", y), {
400
423
  formId: l,
401
424
  formSource: t,
402
425
  formInstance: r,
403
- formColumns: a,
404
- formRules: m,
405
- formCollspased: c,
406
- formActiosSpan: d,
407
- toggleFormCollapsed: n
426
+ formColumns: c,
427
+ formRules: b,
428
+ formCollspased: u,
429
+ formActiosSpan: o,
430
+ toggleFormCollapsed: d,
431
+ updateFormField: v,
432
+ updateFormSource: a,
433
+ reset: R
408
434
  };
409
435
  },
410
436
  render() {
411
437
  const e = () => {
412
- this.$emit("submit", this.formSource);
438
+ this.$emit("submit", this.formSource), this.$emit("update:model-value", this.formSource);
413
439
  }, l = () => {
414
440
  const r = [], t = this.footer ? {
415
441
  span: this.formColumns
416
442
  } : {
417
443
  span: this.formActiosSpan
418
444
  };
419
- if (this.searchable && (r.push(u(o, {
445
+ if (this.searchable && (r.push(n(h, {
420
446
  type: "primary",
421
447
  htmlType: "submit"
422
448
  }, {
423
- default: () => [y("搜索")]
424
- })), r.push(u(o, {
449
+ default: () => [k("搜索")]
450
+ })), r.push(n(h, {
425
451
  type: "secondary",
426
452
  onClick: () => {
427
453
  var a;
428
454
  return (a = this.formInstance) == null ? void 0 : a.resetFields();
429
455
  }
430
456
  }, {
431
- default: () => [y("重置")]
432
- }))), this.submitable && (r.push(u(o, {
457
+ default: () => [k("重置")]
458
+ }))), this.submitable && (r.push(n(h, {
433
459
  type: "primary",
434
460
  htmlType: "submit"
435
461
  }, {
436
- default: () => [y("提交")]
437
- })), r.push(u(o, {
462
+ default: () => [k("提交")]
463
+ })), r.push(n(h, {
438
464
  type: "secondary",
439
465
  onClick: () => this.$emit("cancel")
440
466
  }, {
441
- default: () => [y("取消")]
442
- }))), this.form.some((a) => !!a.collapsed) && r.push(u(o, {
467
+ default: () => [k("取消")]
468
+ }))), this.form.some((a) => !!a.collapsed) && r.push(n(h, {
443
469
  onClick: this.toggleFormCollapsed
444
470
  }, {
445
471
  default: () => this.formCollspased ? "展开" : "收起",
446
- icon: () => this.formCollspased ? u(se, null, null) : u(be, null, null)
472
+ icon: () => this.formCollspased ? n(ye, null, null) : n($e, null, null)
447
473
  })), this.$slots.actions && r.push(...this.$slots.actions()), r.length)
448
- return u(C, t, {
449
- default: () => [u(z, {
474
+ return n(F, t, {
475
+ default: () => [n(N, {
450
476
  hideLabel: !0,
451
477
  contentClass: this.footer ? "form-footer" : ""
452
478
  }, {
453
- default: () => [u(re, null, V(r) ? r : {
479
+ default: () => [n(ue, null, I(r) ? r : {
454
480
  default: () => [r]
455
481
  })]
456
482
  })]
457
483
  });
458
484
  };
459
- return u(p, q({
485
+ return n(te, Y({
460
486
  rules: this.formRules,
461
487
  onSubmitSuccess: e
462
488
  }, {
@@ -466,16 +492,16 @@ const Le = /* @__PURE__ */ g({
466
492
  ref: (r) => this.formInstance = r,
467
493
  model: this.formSource
468
494
  }), {
469
- default: () => [u(ee, {
495
+ default: () => [n(ae, {
470
496
  cols: this.formColumns,
471
497
  "col-gap": 10,
472
498
  "rol-gap": 10
473
499
  }, {
474
500
  default: () => [this.form.filter((r) => this.formCollspased ? !r.collapsed : !0).map((r) => {
475
501
  let t;
476
- return u(C, {
502
+ return n(F, {
477
503
  span: r.span
478
- }, V(t = _e(this.formSource, r)) ? t : {
504
+ }, I(t = Le(this.formSource, r)) ? t : {
479
505
  default: () => [t]
480
506
  });
481
507
  }), l()]
@@ -483,10 +509,20 @@ const Le = /* @__PURE__ */ g({
483
509
  });
484
510
  }
485
511
  });
486
- function Ne(e) {
512
+ function Be(e) {
487
513
  return e;
488
514
  }
515
+ function qe(e) {
516
+ const l = D(), r = i();
517
+ function t() {
518
+ var c, u;
519
+ const a = (u = (c = l == null ? void 0 : l.proxy) == null ? void 0 : c.$refs) == null ? void 0 : u[e];
520
+ a && (r.value = a);
521
+ }
522
+ return U(t), E(t), r;
523
+ }
489
524
  export {
490
- Le as FormRender,
491
- Ne as defineForm
525
+ Me as FormRender,
526
+ Be as defineForm,
527
+ qe as useForm
492
528
  };
@@ -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.8",
5
5
  "author": {
6
6
  "name": "zhuchentong",
7
7
  "email": "2037630@gmail.com"