vft 0.0.493 → 0.0.495

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.
Files changed (69) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/es/components/autocomplete/autocomplete.vue.d.ts +2 -2
  4. package/es/components/autocomplete/index.d.ts +6 -6
  5. package/es/components/button/index.d.ts +9 -9
  6. package/es/components/config-provider/hooks/use-global-config.js +3 -3
  7. package/es/components/popconfirm/index.d.ts +15 -15
  8. package/es/components/popconfirm/popconfirm.vue.d.ts +1 -1
  9. package/es/components/select/index.d.ts +4 -4
  10. package/es/components/select/select.vue.d.ts +4 -4
  11. package/es/components/select/useSelect.d.ts +4 -4
  12. package/es/components/super-form/index.d.ts +9 -0
  13. package/es/components/super-form/super-form-item.vue2.js +219 -219
  14. package/es/components/super-form/super-form.vue2.js +97 -95
  15. package/es/components/super-form/types.d.ts +20 -1
  16. package/es/components/super-form/use/use-form-events.d.ts +1 -0
  17. package/es/components/super-form/use/use-form-events.js +205 -171
  18. package/es/components/switch/index.d.ts +2 -2
  19. package/es/components/switch/types.d.ts +22 -1
  20. package/es/components/table/field.js +60 -55
  21. package/es/components/table/index.d.ts +3 -3
  22. package/es/components/table/table.vue.d.ts +1 -1
  23. package/es/components/table/types.d.ts +2 -2
  24. package/es/components/table/use/use-data-source.d.ts +1 -1
  25. package/es/components/table/use/use-data-source.js +136 -119
  26. package/es/components/table/use/use-loading.js +15 -13
  27. package/es/components/tree/index.d.ts +5 -5
  28. package/es/components/tree/tree.vue.d.ts +2 -2
  29. package/es/components/upload/index.d.ts +15 -15
  30. package/es/components/upload/upload-content.vue.d.ts +1 -1
  31. package/es/components/upload/upload.vue.d.ts +1 -1
  32. package/es/package.json.d.ts +1 -1
  33. package/es/package.json.js +1 -1
  34. package/lib/components/autocomplete/autocomplete.vue.d.ts +2 -2
  35. package/lib/components/autocomplete/index.d.ts +6 -6
  36. package/lib/components/button/index.d.ts +9 -9
  37. package/lib/components/popconfirm/index.d.ts +15 -15
  38. package/lib/components/popconfirm/popconfirm.vue.d.ts +1 -1
  39. package/lib/components/select/index.d.ts +4 -4
  40. package/lib/components/select/select.vue.d.ts +4 -4
  41. package/lib/components/select/useSelect.d.ts +4 -4
  42. package/lib/components/super-form/index.d.ts +9 -0
  43. package/lib/components/super-form/super-form-item.vue2.cjs +1 -1
  44. package/lib/components/super-form/super-form.vue2.cjs +1 -1
  45. package/lib/components/super-form/types.d.ts +20 -1
  46. package/lib/components/super-form/use/use-form-events.cjs +1 -1
  47. package/lib/components/super-form/use/use-form-events.d.ts +1 -0
  48. package/lib/components/switch/index.d.ts +2 -2
  49. package/lib/components/switch/types.d.ts +22 -1
  50. package/lib/components/table/field.cjs +1 -1
  51. package/lib/components/table/index.d.ts +3 -3
  52. package/lib/components/table/table.vue.d.ts +1 -1
  53. package/lib/components/table/types.d.ts +2 -2
  54. package/lib/components/table/use/use-data-source.cjs +1 -1
  55. package/lib/components/table/use/use-data-source.d.ts +1 -1
  56. package/lib/components/table/use/use-loading.cjs +1 -1
  57. package/lib/components/tree/index.d.ts +5 -5
  58. package/lib/components/tree/tree.vue.d.ts +2 -2
  59. package/lib/components/upload/index.d.ts +15 -15
  60. package/lib/components/upload/upload-content.vue.d.ts +1 -1
  61. package/lib/components/upload/upload.vue.d.ts +1 -1
  62. package/lib/package.json.cjs +1 -1
  63. package/lib/package.json.d.ts +1 -1
  64. package/package.json +5 -5
  65. package/tags.json +1 -1
  66. package/theme-style/index.css +1 -1
  67. package/theme-style/src/table.scss +2 -4
  68. package/theme-style/vft-table.css +1 -1
  69. package/web-types.json +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../alert/index.cjs");require("../avatar/index.cjs");require("../avatar-stack/index.cjs");require("../backtop/index.cjs");require("../button/index.cjs");require("../card/index.cjs");require("../cascader/index.cjs");require("../cascader-panel/index.cjs");require("../check-tag/index.cjs");require("../checkbox/index.cjs");require("../clamp/index.cjs");require("../client-only/index.cjs");require("../clamp-toggle/index.cjs");require("../clamp-tooltip/index.cjs");const z=require("../col/index.cjs");require("../collapse-transition/index.cjs");require("../color-picker/index.cjs");require("../config-provider/index.cjs");require("../container/index.cjs");const s=require("@vft/utils");require("../context-menu/context-menu.vue2.cjs");const J=require("../icon/index.cjs");require("../date-picker/index.cjs");require("../date-time-select/index.cjs");require("../descriptions/index.cjs");require("../dialog/index.cjs");const Z=require("../divider/index.cjs");require("../drawer/index.cjs");require("../dropdown/index.cjs");require("../empty/index.cjs");require("../footer-layout/index.cjs");const _=require("../form/index.cjs");require("../full-screen/index.cjs");require("../header-layout/index.cjs");require("../horizontal-menu/index.cjs");require("../icon-text/index.cjs");require("../iframe-layout/index.cjs");require("../image/index.cjs");require("../image-viewer/index.cjs");require("../input/index.cjs");require("../input-number/index.cjs");require("../link/index.cjs");require("../list-cell/index.cjs");require("../logo/index.cjs");require("../menu/index.cjs");require("../multiple-tabs/index.cjs");require("../notification/index.cjs");require("../overlay/index.cjs");require("../page-wrapper/index.cjs");require("../pagination/index.cjs");require("../popconfirm/index.cjs");require("../popover/index.cjs");require("../popper/index.cjs");require("../qrcode/index.cjs");require("../radio/index.cjs");require("../result/index.cjs");require("../router-view-content/index.cjs");require("../row/index.cjs");require("../scrollbar/index.cjs");require("../search/index.cjs");require("../select/index.cjs");require("../side-menu/index.cjs");require("../skeleton/index.cjs");require("../slider/index.cjs");require("../space/index.cjs");require("../steps/index.cjs");require("../switch/index.cjs");require("../table/index.cjs");require("../tabs/index.cjs");require("../tag/index.cjs");require("../time-picker/index.cjs");const ee=require("../tooltip/index.cjs");require("../tree/index.cjs");require("../verify-code/index.cjs");require("../virtual-list/components/fixed-size-list.cjs");require("../virtual-list/components/dynamic-size-list.cjs");require("../virtual-list/components/fixed-size-grid.cjs");require("../virtual-list/components/dynamic-size-grid.cjs");require("../virtual-list/props.cjs");require("../autocomplete/index.cjs");require("../breadcrumb/index.cjs");require("../carousel/index.cjs");require("../collapse/index.cjs");require("../countdown/index.cjs");require("../input-tag/index.cjs");require("../modal/index.cjs");require("../progress/index.cjs");require("../segmented/index.cjs");require("../statistic/index.cjs");require("../timeline/index.cjs");require("../transfer/index.cjs");require("../upload/index.cjs");require("../watermark/index.cjs");require("../md-code-demo/index.cjs");require("../md-code-tabs/index.cjs");require("../md-comment/index.cjs");require("../md-container/index.cjs");require("../md-tabs/index.cjs");require("../md-vue-playground/index.cjs");require("../infinite-scroll/index.cjs");const r=require("../../utils/form-register.cjs");require("@vueuse/core");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");const re=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");require("../message/index.cjs");require("../progress-i/index.cjs");require("./index.cjs");const j=require("./component-map.cjs"),H=require("./use/helper.cjs");function L(n){return typeof n=="function"||Object.prototype.toString.call(n)==="[object Object]"&&!e.isVNode(n)}const oe=e.defineComponent({inheritAttrs:!1}),te=e.defineComponent({...oe,__name:"super-form-item",props:{schema:{},formProps:{},allDefaultValues:{},formModel:{},setFormModel:{},updateSchema:{},formActionType:{}},setup(n){const x=re.useNamespace("super-form"),P=e.computed(()=>{const{mergeDynamicData:t}=n.formProps;return{field:n.schema.field,model:n.formModel,values:{...t,...n.allDefaultValues,...n.formModel},schema:n.schema,elRef:w}}),W=new Set([r.FormCompEnum.Select,r.FormCompEnum.Radio,r.FormCompEnum.Checkbox,r.FormCompEnum.RadioButton,r.FormCompEnum.CheckboxButton,r.FormCompEnum.Cascader,r.FormCompEnum.AutoComplete]),T=()=>n.schema.type&&W.has(n.schema.type)?{options:[]}:{},M=e.ref(T());async function Y(){const{componentProps:t={}}=n.schema;if(s.isFunction(t)){const o=T();M.value=o;try{const m=t({schema:n.schema,formModel:n.formModel,formActionType:n.formActionType}),l=m instanceof Promise?await m:m;M.value={...o,...l??{}}}catch(m){console.error("componentProps 执行错误:",m),M.value=T()}}else M.value=t}e.watch(()=>n.schema.componentProps,(t,o)=>(t||o)&&Y(),{immediate:!0});const S=e.computed(()=>{let t={...M.value};const o=new Map([[r.FormCompEnum.Divider,{type:"horizontal"}],[r.FormCompEnum.Textarea,{type:"textarea"}],[r.FormCompEnum.Password,{type:"password","show-password":!0}],[r.FormCompEnum.InputNumber,{type:"number"}],[r.FormCompEnum.CheckboxButton,{useButton:!0}],[r.FormCompEnum.RadioButton,{useButton:!0}],[r.FormCompEnum.YearPicker,{type:r.FormCompEnum.YearPicker}],[r.FormCompEnum.MonthPicker,{type:r.FormCompEnum.MonthPicker}],[r.FormCompEnum.DatePicker,{type:r.FormCompEnum.DatePicker}],[r.FormCompEnum.DatesPicker,{type:r.FormCompEnum.DatesPicker}],[r.FormCompEnum.DateTimePicker,{type:r.FormCompEnum.DateTimePicker}],[r.FormCompEnum.WeekPicker,{type:r.FormCompEnum.WeekPicker}],[r.FormCompEnum.TimeRangePicker,{type:r.FormCompEnum.TimePicker,"is-range":!0,"start-placeholder":"开始时间","end-placeholder":"结束时间"}],[r.FormCompEnum.DateTimeRangePicker,{type:r.FormCompEnum.DateTimeRangePicker,"start-placeholder":"开始日期","end-placeholder":"结束日期"}],[r.FormCompEnum.DateRangePicker,{type:r.FormCompEnum.DateRangePicker,"start-placeholder":"开始日期","end-placeholder":"结束日期"}],[r.FormCompEnum.MonthRangePicker,{type:r.FormCompEnum.MonthRangePicker,"start-placeholder":"开始月份","end-placeholder":"结束月份"}]]);n.schema.type&&o.has(n.schema.type)&&(t=Object.assign(o.get(n.schema.type)||{},t));const m=t;return n.formProps.inputMaxLength&&n.schema.type===r.FormCompEnum.Input&&!m?.maxlength&&(m.maxlength=n.formProps.inputMaxLength),m}),K=e.computed(()=>{const{disabled:t}=n.formProps,{dynamicDisabled:o}=n.schema,{disabled:m=!1}=e.unref(S);let l=!!t||m;return s.isBoolean(o)&&(l=o),s.isFunction(o)&&(l=o(e.unref(P))),l});function $(){const{show:t,ifShow:o}=n.schema;let m=!0,l=!0;return s.isBoolean(t)&&(m=t),s.isBoolean(o)&&(l=o),s.isFunction(t)&&(m=t(e.unref(P))),s.isFunction(o)&&(l=o(e.unref(P))),{isShow:m,isIfShow:l}}function Q(){const{rules:t=[],type:o=r.FormCompEnum.Input,rulesMessageJoinLabel:m,label:l,title:F,dynamicRule:f,required:g,dynamicRuleAdd:p=!0}=n.schema,c=s.isFunction(g)?g(e.unref(P)):g;if(!c)return[];const q=l||F;if(s.isFunction(f)&&!p)return f(e.unref(P));let i=s.cloneDeep(s.isArray(t)?t:[t]);const{rulesMessageJoinLabel:b}=n.formProps,k=Reflect.has(n.schema,"rulesMessageJoinLabel")?m:b,E=H.createPlaceholderMessage(o,`${k?q:""}`);function h(u,a){const N=u.message||E;return a===void 0||s.isNull(a)||o===r.FormCompEnum.CheckboxSingle&&!a||Array.isArray(a)&&a.length===0||typeof a=="string"&&a.trim()===""||typeof a=="object"&&Reflect.has(a,"checked")&&Reflect.has(a,"halfChecked")&&Array.isArray(a.checked)&&Array.isArray(a.halfChecked)&&a.checked.length===0&&a.halfChecked.length===0?Promise.reject(N):Promise.resolve()}const y=[r.FormCompEnum.Radio,r.FormCompEnum.Select,r.FormCompEnum.RadioSingle,r.FormCompEnum.RadioButton,r.FormCompEnum.Checkbox,r.FormCompEnum.CheckboxSingle,r.FormCompEnum.CheckboxButton,r.FormCompEnum.AutoComplete,r.FormCompEnum.Cascader,r.FormCompEnum.ColorPicker,r.FormCompEnum.Upload,r.FormCompEnum.Slider].includes(o);if(c)!i||i.length===0?i=[{required:c,validator:h,trigger:y?"change":"blur"}]:i.findIndex(a=>Reflect.has(a,"required"))===-1&&i.unshift({required:c,validator:h,trigger:y?"change":"blur"});else return i;const I=i.findIndex(u=>Reflect.has(u,"required")&&!Reflect.has(u,"validator"));if(I!==-1){const u=i[I],{isShow:a}=$();a||(u.required=!1),o&&(u.message=u.message||E)}const d=i.findIndex(u=>u.min),C=i.findIndex(u=>u.max);function R(u,a,N="all"){const D=i[a],U=D.isNumber?isNaN(u)?u?.length||0:Number(u):u?.length||0;return["min","all"].includes(N)&&U<D.min?Promise.reject(`${q}至少为${D.min}位`):["max","all"].includes(N)&&U>D.max?Promise.reject(`${q}最多${D.max}位`):Promise.resolve()}(d!==-1||C!==-1)&&(d!==-1&&C!==-1&&!i[d].validator&&!i[d].message?i[d].validator=(u,a)=>R(a,d):d!==-1&&!i[d].validator&&!i[d].message?i[d].validator=(u,a)=>R(a,d,"min"):C!==-1&&!i[C].validator&&!i[C].message&&(i[C].validator=(u,a)=>R(a,C,"max")));const v=i.findIndex(u=>u.len);if(v!==-1&&(i[v].validator=(u,a)=>a.length!==i[v].len?Promise.reject(`${q}必须是${i[v].len}位`):Promise.resolve()),s.isFunction(f)&&p){let u=f(e.unref(P));u=s.isArray(u)?u:[u],i=i.concat(u)}return i}const w=e.ref(),G=()=>{const{renderComponentContent:t,type:o=r.FormCompEnum.Input,field:m,changeEvent:l="change",valueField:F,label:f,title:g,placeholderJoinLabel:p=!0}=n.schema;let c=l;j.isInput(o)?c="input":j.isDatePicker(o)||o===r.FormCompEnum.TimePicker||o===r.FormCompEnum.InputTag||o===r.FormCompEnum.AutoComplete||o===r.FormCompEnum.Cascader||o===r.FormCompEnum.ColorPicker||o===r.FormCompEnum.Slider?c="update:modelValue":o===r.FormCompEnum.Upload&&(c="update:fileList");const q=`on${s.upperFirst(c)}`,i={[q]:(...C)=>{const[R]=C;h[q]&&h[q](...C);const v=R?R.target:null,u=v?v.value:R;n.setFormModel(m,u,n.schema)}},b=r.getComponent(o),{autoSetPlaceHolder:k,size:E}=n.formProps,h={clearable:!0,...e.unref(S)};if(o!==r.FormCompEnum.Search&&(h.size=e.unref(S)?.size||E,h.disabled=e.unref(K)),!h.disabled&&k&&!j.isRangePicker(o)&&o){const C=f||g;h.placeholder=e.unref(S)?.placeholder||H.createPlaceholderMessage(o,p&&s.isString(C)?C:"")}const y={[F||"model-value"]:n.formModel[m]},I={...i,...h,...y};if(!t&&o!==r.FormCompEnum.Upload)return e.createVNode(b,e.mergeProps({ref:w},I),null);let d;if(d=s.isFunction(t)?{...t({...e.unref(P),elRef:w})}:{default:()=>t},o===r.FormCompEnum.Upload&&!t){const{drag:C}=e.unref(S);d=C?{default:()=>e.createVNode(e.resolveComponent("vft-icon"),{icon:"icon-arrow-upload"},null)}:{default:()=>e.createVNode(e.resolveComponent("vft-button"),{type:"primary"},{default:()=>[e.createVNode(e.resolveComponent("vft-icon"),{icon:"icon-arrow-upload"},null)]})}}return e.createVNode(b,e.mergeProps({ref:w},I),L(d)?d:{default:()=>[d]})};function A(){const{showLabel:t=!0,label:o,title:m,subLabel:l,labelRequired:F,helpIcon:f,helpTooltip:g}=n.schema;let p=o||m;p=F?e.createVNode("span",null,[e.createVNode("span",{class:"label-required"},[e.createTextVNode("*")]),e.createVNode("span",null,[p])]):p;const c=()=>{if(!f&&!g)return null;const q=e.computed(()=>s.singleAttrToObj(f,"icon",{size:20,pointer:!0,icon:"icon-help"}));if(g){const i=e.computed(()=>s.singleAttrToObj(g,"content",{placement:"right-start"}));return e.createVNode(ee.VftTooltip,e.mergeProps({className:"box-item"},i.value),{default:()=>[e.createVNode(J.VftIcon,q.value,null)]})}return e.createVNode(J.VftIcon,q.value,null)};return t&&p?l?e.createVNode("div",{class:"label-content"},[e.createVNode("div",null,[p,e.createTextVNode(" "),e.createVNode("span",{class:"sub-label"},[l])]),c()]):e.createVNode("div",{class:"label-content"},[e.createVNode("div",null,[p]),c()]):void 0}const B=e.useSlots();function O(t,o="default",m){if(!t||!Reflect.has(t,o))return null;if(!s.isFunction(t[o]))return console.error(`${o} is not a function!`),null;const l=t[o];return l?l(m):null}function X(){const{itemProps:t,slot:o,render:m,field:l,suffix:F,prefix:f,prefixParentStyle:g}=n.schema,{autoCleanErrorMessage:p,compFullWidth:c}=n.formProps,q=()=>o?O(B,o,e.unref(P)):m?m(e.unref(P)):G(),i=!!F,b=!!f,k=s.isFunction(F)?F(e.unref(P)):F,E=s.isFunction(f)?f(e.unref(P)):f,h=()=>{n.updateSchema([{field:l,itemProps:{error:""}}])},V=()=>e.createVNode(_.VftFormItem,e.mergeProps({style:{marginRight:n.formProps.customLayout?"10px":0},prop:l,class:[{[x.is("suffix")]:i},{[x.is("comp-full-width")]:c},x.e("item")]},t,{label:t?.label||t?.title,"onUpdate:error":p?h:()=>{},rules:Q()}),{default:()=>[e.createVNode("div",{class:x.e("container")},[e.createVNode("div",{class:x.e("content")},[q(),i&&e.createVNode("span",{class:x.m("suffix")},[k])])])],label:A()?()=>A():void 0});return b?e.createVNode("div",{style:g},[e.createVNode("span",{class:x.m("prefix")},[E]),V()]):V()}return()=>{let t;const{colProps:o={},colSlot:m,renderColContent:l,type:F=r.FormCompEnum.Input,render:f,quickColSpan:g}=n.schema;if(!r.getComponent(F)&&!l&&!f)return null;const{baseColProps:p={},quickColSpan:c}=n.formProps,q=c?{span:Math.ceil(24/c),...p}:{...p},i=g?{span:Math.ceil(24/g),...o}:{...o},b={...q,...i},{isIfShow:k,isShow:E}=$(),h=e.unref(P),V=()=>m?O(B,m,h):l?l(h):X();if(F===r.FormCompEnum.Divider){let y;return e.createVNode(z.VftCol,e.mergeProps({span:24},i),{default:()=>[e.createVNode(Z.VftDivider,e.unref(S),L(y=A())?y:{default:()=>[y]})]})}return k&&(n.formProps.customLayout?V():e.withDirectives(e.createVNode(z.VftCol,b,L(t=V())?t:{default:()=>[t]}),[[e.vShow,E]]))}}});exports.default=te;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../alert/index.cjs");require("../avatar/index.cjs");require("../avatar-stack/index.cjs");require("../backtop/index.cjs");require("../button/index.cjs");require("../card/index.cjs");require("../cascader/index.cjs");require("../cascader-panel/index.cjs");require("../check-tag/index.cjs");require("../checkbox/index.cjs");require("../clamp/index.cjs");require("../client-only/index.cjs");require("../clamp-toggle/index.cjs");require("../clamp-tooltip/index.cjs");const J=require("../col/index.cjs");require("../collapse-transition/index.cjs");require("../color-picker/index.cjs");require("../config-provider/index.cjs");require("../container/index.cjs");const s=require("@vft/utils");require("../context-menu/context-menu.vue2.cjs");const H=require("../icon/index.cjs");require("../date-picker/index.cjs");require("../date-time-select/index.cjs");require("../descriptions/index.cjs");require("../dialog/index.cjs");const _=require("../divider/index.cjs");require("../drawer/index.cjs");require("../dropdown/index.cjs");require("../empty/index.cjs");require("../footer-layout/index.cjs");const ee=require("../form/index.cjs");require("../full-screen/index.cjs");require("../header-layout/index.cjs");require("../horizontal-menu/index.cjs");require("../icon-text/index.cjs");require("../iframe-layout/index.cjs");require("../image/index.cjs");require("../image-viewer/index.cjs");require("../input/index.cjs");require("../input-number/index.cjs");require("../link/index.cjs");require("../list-cell/index.cjs");require("../logo/index.cjs");require("../menu/index.cjs");require("../multiple-tabs/index.cjs");require("../notification/index.cjs");require("../overlay/index.cjs");require("../page-wrapper/index.cjs");require("../pagination/index.cjs");require("../popconfirm/index.cjs");require("../popover/index.cjs");require("../popper/index.cjs");require("../qrcode/index.cjs");require("../radio/index.cjs");require("../result/index.cjs");require("../router-view-content/index.cjs");require("../row/index.cjs");require("../scrollbar/index.cjs");require("../search/index.cjs");require("../select/index.cjs");require("../side-menu/index.cjs");require("../skeleton/index.cjs");require("../slider/index.cjs");require("../space/index.cjs");require("../steps/index.cjs");require("../switch/index.cjs");require("../table/index.cjs");require("../tabs/index.cjs");require("../tag/index.cjs");require("../time-picker/index.cjs");const re=require("../tooltip/index.cjs");require("../tree/index.cjs");require("../verify-code/index.cjs");require("../virtual-list/components/fixed-size-list.cjs");require("../virtual-list/components/dynamic-size-list.cjs");require("../virtual-list/components/fixed-size-grid.cjs");require("../virtual-list/components/dynamic-size-grid.cjs");require("../virtual-list/props.cjs");require("../autocomplete/index.cjs");require("../breadcrumb/index.cjs");require("../carousel/index.cjs");require("../collapse/index.cjs");require("../countdown/index.cjs");require("../input-tag/index.cjs");require("../modal/index.cjs");require("../progress/index.cjs");require("../segmented/index.cjs");require("../statistic/index.cjs");require("../timeline/index.cjs");require("../transfer/index.cjs");require("../upload/index.cjs");require("../watermark/index.cjs");require("../md-code-demo/index.cjs");require("../md-code-tabs/index.cjs");require("../md-comment/index.cjs");require("../md-container/index.cjs");require("../md-tabs/index.cjs");require("../md-vue-playground/index.cjs");require("../infinite-scroll/index.cjs");const r=require("../../utils/form-register.cjs");require("@vueuse/core");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");const oe=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");require("../message/index.cjs");require("../progress-i/index.cjs");require("./index.cjs");const L=require("./component-map.cjs"),W=require("./use/helper.cjs");function $(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const te=e.defineComponent({inheritAttrs:!1}),ne=e.defineComponent({...te,__name:"super-form-item",props:{schema:{},formProps:{},allDefaultValues:{},formModel:{},setFormModel:{},updateSchema:{},formActionType:{}},setup(t){const x=oe.useNamespace("super-form"),F=e.computed(()=>{const{mergeDynamicData:n}=t.formProps;return{field:t.schema.field,model:t.formModel,values:{...n,...t.allDefaultValues,...t.formModel},schema:t.schema,elRef:T}}),Y=new Set([r.FormCompEnum.Select,r.FormCompEnum.Radio,r.FormCompEnum.Checkbox,r.FormCompEnum.RadioButton,r.FormCompEnum.CheckboxButton,r.FormCompEnum.Cascader,r.FormCompEnum.AutoComplete]),A=()=>t.schema.type&&Y.has(t.schema.type)?{options:[]}:{},I=e.ref(A());async function K(){const{componentProps:n={}}=t.schema;if(s.isFunction(n)){const o=A();I.value=o;try{const u=n({schema:t.schema,formModel:t.formModel,formActionType:t.formActionType}),a=u instanceof Promise?await u:u;I.value={...o,...a??{}}}catch(u){console.error("componentProps 执行错误:",u),I.value=A()}}else I.value=n}e.watch(()=>t.schema.componentProps,(n,o)=>(n||o)&&K(),{immediate:!0});const R=e.computed(()=>{let n={...I.value};const o=new Map([[r.FormCompEnum.Divider,{type:"horizontal"}],[r.FormCompEnum.Textarea,{type:"textarea"}],[r.FormCompEnum.Password,{type:"password","show-password":!0}],[r.FormCompEnum.InputNumber,{type:"number"}],[r.FormCompEnum.CheckboxButton,{useButton:!0}],[r.FormCompEnum.RadioButton,{useButton:!0}],[r.FormCompEnum.YearPicker,{type:r.FormCompEnum.YearPicker}],[r.FormCompEnum.MonthPicker,{type:r.FormCompEnum.MonthPicker}],[r.FormCompEnum.DatePicker,{type:r.FormCompEnum.DatePicker}],[r.FormCompEnum.DatesPicker,{type:r.FormCompEnum.DatesPicker}],[r.FormCompEnum.DateTimePicker,{type:r.FormCompEnum.DateTimePicker}],[r.FormCompEnum.WeekPicker,{type:r.FormCompEnum.WeekPicker}],[r.FormCompEnum.TimeRangePicker,{type:r.FormCompEnum.TimePicker,"is-range":!0,"start-placeholder":"开始时间","end-placeholder":"结束时间"}],[r.FormCompEnum.DateTimeRangePicker,{type:r.FormCompEnum.DateTimeRangePicker,"start-placeholder":"开始日期","end-placeholder":"结束日期"}],[r.FormCompEnum.DateRangePicker,{type:r.FormCompEnum.DateRangePicker,"start-placeholder":"开始日期","end-placeholder":"结束日期"}],[r.FormCompEnum.MonthRangePicker,{type:r.FormCompEnum.MonthRangePicker,"start-placeholder":"开始月份","end-placeholder":"结束月份"}]]);t.schema.type&&o.has(t.schema.type)&&(n=Object.assign(o.get(t.schema.type)||{},n));const u=n;return t.formProps.inputMaxLength&&t.schema.type===r.FormCompEnum.Input&&!u?.maxlength&&(u.maxlength=t.formProps.inputMaxLength),u}),Q=e.computed(()=>{const{disabled:n}=t.formProps,{dynamicDisabled:o}=t.schema,{disabled:u=!1}=e.unref(R);let a=!!n||u;return s.isBoolean(o)&&(a=o),s.isFunction(o)&&(a=o(e.unref(F))),a});function B(){const{show:n,ifShow:o}=t.schema;let u=!0,a=!0;return s.isBoolean(n)&&(u=n),s.isBoolean(o)&&(a=o),s.isFunction(n)&&(u=n(e.unref(F))),s.isFunction(o)&&(a=o(e.unref(F))),{isShow:u,isIfShow:a}}function G(){const{rules:n=[],type:o=r.FormCompEnum.Input,rulesMessageJoinLabel:u,label:a,title:g,dynamicRule:f,required:h,dynamicRuleAdd:p=!0}=t.schema,d=s.isFunction(h)?h(e.unref(F)):h,P=t.formModel[t.schema.field];if(!d&&s.isNullOrUndefined(P))return[];const C=a||g;if(s.isFunction(f)&&!p)return f(e.unref(F));let i=s.cloneDeep(s.isArray(n)?n:[n]);const{rulesMessageJoinLabel:k}=t.formProps,V=Reflect.has(t.schema,"rulesMessageJoinLabel")?u:k,q=W.createPlaceholderMessage(o,`${V?C:""}`);function E(m,l){const N=m.message||q;return l===void 0||s.isNull(l)||o===r.FormCompEnum.CheckboxSingle&&!l||Array.isArray(l)&&l.length===0||typeof l=="string"&&l.trim()===""||typeof l=="object"&&Reflect.has(l,"checked")&&Reflect.has(l,"halfChecked")&&Array.isArray(l.checked)&&Array.isArray(l.halfChecked)&&l.checked.length===0&&l.halfChecked.length===0?Promise.reject(N):Promise.resolve()}const D=[r.FormCompEnum.Radio,r.FormCompEnum.Select,r.FormCompEnum.RadioSingle,r.FormCompEnum.RadioButton,r.FormCompEnum.Checkbox,r.FormCompEnum.CheckboxSingle,r.FormCompEnum.CheckboxButton,r.FormCompEnum.AutoComplete,r.FormCompEnum.Cascader,r.FormCompEnum.ColorPicker,r.FormCompEnum.Upload,r.FormCompEnum.Slider].includes(o);if(d)!i||i.length===0?i=[{required:d,validator:E,trigger:D?"change":"blur"}]:i.findIndex(l=>Reflect.has(l,"required"))===-1&&i.unshift({required:d,validator:E,trigger:D?"change":"blur"});else return i;const y=i.findIndex(m=>Reflect.has(m,"required")&&!Reflect.has(m,"validator"));if(y!==-1){const m=i[y],{isShow:l}=B();l||(m.required=!1),o&&(m.message=m.message||q)}const c=i.findIndex(m=>m.min),b=i.findIndex(m=>m.max);function S(m,l,N="all"){const w=i[l],z=w.isNumber?isNaN(m)?m?.length||0:Number(m):m?.length||0;return["min","all"].includes(N)&&z<w.min?Promise.reject(`${C}至少为${w.min}位`):["max","all"].includes(N)&&z>w.max?Promise.reject(`${C}最多${w.max}位`):Promise.resolve()}(c!==-1||b!==-1)&&(c!==-1&&b!==-1&&!i[c].validator&&!i[c].message?i[c].validator=(m,l)=>S(l,c):c!==-1&&!i[c].validator&&!i[c].message?i[c].validator=(m,l)=>S(l,c,"min"):b!==-1&&!i[b].validator&&!i[b].message&&(i[b].validator=(m,l)=>S(l,b,"max")));const M=i.findIndex(m=>m.len);if(M!==-1&&(i[M].validator=(m,l)=>l.length!==i[M].len?Promise.reject(`${C}必须是${i[M].len}位`):Promise.resolve()),s.isFunction(f)&&p){let m=f(e.unref(F));m=s.isArray(m)?m:[m],i=i.concat(m)}return i}const T=e.ref(),X=()=>{const{renderComponentContent:n,type:o=r.FormCompEnum.Input,field:u,changeEvent:a="change",valueField:g,label:f,title:h,placeholderJoinLabel:p=!0}=t.schema;let d=a;L.isInput(o)?d="input":L.isDatePicker(o)||o===r.FormCompEnum.TimePicker||o===r.FormCompEnum.InputTag||o===r.FormCompEnum.AutoComplete||o===r.FormCompEnum.Cascader||o===r.FormCompEnum.ColorPicker||o===r.FormCompEnum.Slider?d="update:modelValue":o===r.FormCompEnum.Upload&&(d="update:fileList");const P=`on${s.upperFirst(d)}`,C={[P]:(...c)=>{const[b]=c;q[P]&&q[P](...c);const S=b?b.target:null,M=S?S.value:b;t.setFormModel(u,M,t.schema)}},i=r.getComponent(o),{autoSetPlaceHolder:k,size:V}=t.formProps,q={clearable:!0,...e.unref(R)};if(o!==r.FormCompEnum.Search&&(q.size=e.unref(R)?.size||V,q.disabled=e.unref(Q)),!q.disabled&&k&&!L.isRangePicker(o)&&o){const c=f||h;q.placeholder=e.unref(R)?.placeholder||W.createPlaceholderMessage(o,p&&s.isString(c)?c:"")}const v={[g||"model-value"]:t.formModel[u]},D={...C,...q,...v};if(!n&&o!==r.FormCompEnum.Upload)return e.createVNode(i,e.mergeProps({ref:T},D),null);let y;if(y=s.isFunction(n)?{...n({...e.unref(F),elRef:T})}:{default:()=>n},o===r.FormCompEnum.Upload&&!n){const{drag:c}=e.unref(R);y=c?{default:()=>e.createVNode(e.resolveComponent("vft-icon"),{icon:"icon-arrow-upload"},null)}:{default:()=>e.createVNode(e.resolveComponent("vft-button"),{type:"primary"},{default:()=>[e.createVNode(e.resolveComponent("vft-icon"),{icon:"icon-arrow-upload"},null)]})}}return e.createVNode(i,e.mergeProps({ref:T},D),$(y)?y:{default:()=>[y]})};function j(){const{showLabel:n=!0,label:o,title:u,subLabel:a,labelRequired:g,helpIcon:f,helpTooltip:h}=t.schema;let p=o||u;p=g?e.createVNode("span",null,[e.createVNode("span",{class:"label-required"},[e.createTextVNode("*")]),e.createVNode("span",null,[p])]):p;const d=()=>{if(!f&&!h)return null;const P=e.computed(()=>s.singleAttrToObj(f,"icon",{size:20,pointer:!0,icon:"icon-help"}));if(h){const C=e.computed(()=>s.singleAttrToObj(h,"content",{placement:"right-start"}));return e.createVNode(re.VftTooltip,e.mergeProps({className:"box-item"},C.value),{default:()=>[e.createVNode(H.VftIcon,P.value,null)]})}return e.createVNode(H.VftIcon,P.value,null)};return n&&p?a?e.createVNode("div",{class:"label-content"},[e.createVNode("div",null,[p,e.createTextVNode(" "),e.createVNode("span",{class:"sub-label"},[a])]),d()]):e.createVNode("div",{class:"label-content"},[e.createVNode("div",null,[p]),d()]):void 0}const O=e.useSlots();function U(n,o="default",u){if(!n||!Reflect.has(n,o))return null;if(!s.isFunction(n[o]))return console.error(`${o} is not a function!`),null;const a=n[o];return a?a(u):null}function Z(){const{itemProps:n,slot:o,render:u,field:a,suffix:g,prefix:f,prefixParentStyle:h}=t.schema,{autoCleanErrorMessage:p,compFullWidth:d}=t.formProps,P=()=>o?U(O,o,e.unref(F)):u?u(e.unref(F)):X(),C=!!g,i=!!f,k=s.isFunction(g)?g(e.unref(F)):g,V=s.isFunction(f)?f(e.unref(F)):f,q=()=>{t.updateSchema([{field:a,itemProps:{error:""}}])},E=()=>e.createVNode(ee.VftFormItem,e.mergeProps({style:{marginRight:t.formProps.customLayout?"10px":0},prop:a,class:[{[x.is("suffix")]:C},{[x.is("comp-full-width")]:d},x.e("item")]},n,{label:n?.label||n?.title,"onUpdate:error":p?q:()=>{},rules:G()}),{default:()=>[e.createVNode("div",{class:x.e("container")},[e.createVNode("div",{class:x.e("content")},[P(),C&&e.createVNode("span",{class:x.m("suffix")},[k])])])],label:j()?()=>j():void 0});return i?e.createVNode("div",{style:h},[e.createVNode("span",{class:x.m("prefix")},[V]),E()]):E()}return()=>{let n;const{colProps:o={},colSlot:u,renderColContent:a,type:g=r.FormCompEnum.Input,render:f,quickColSpan:h}=t.schema;if(!r.getComponent(g)&&!a&&!f)return null;const{baseColProps:p={},quickColSpan:d}=t.formProps,P=d?{span:Math.ceil(24/d),...p}:{...p},C=h?{span:Math.ceil(24/h),...o}:{...o},i={...P,...C},{isIfShow:k,isShow:V}=B(),q=e.unref(F),E=()=>u?U(O,u,q):a?a(q):Z();if(g===r.FormCompEnum.Divider){let v;return e.createVNode(J.VftCol,e.mergeProps({span:24},C),{default:()=>[e.createVNode(_.VftDivider,e.unref(R),$(v=j())?v:{default:()=>[v]})]})}return k&&(t.formProps.customLayout?E():e.withDirectives(e.createVNode(J.VftCol,i,$(n=E())?n:{default:()=>[n]}),[[e.vShow,V]]))}}});exports.default=ne;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),Q=require("../col/index.cjs"),X=require("../form/index.cjs"),Y=require("../row/index.cjs"),T=require("@vueuse/core"),c=require("@vft/utils");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");const Z=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const ee=require("./super-form-action.vue2.cjs"),te=require("./super-form-item.vue2.cjs"),oe=require("./use/use-auto-focus.cjs"),ne=require("./use/use-form-context.cjs"),re=require("./use/use-form-events.cjs"),ue=require("./use/use-form-values.cjs"),se=require("./use/helper.cjs"),le=e.defineComponent({name:"vft-super-form"}),ae=e.defineComponent({...le,props:{size:{default:"default"},rowProps:{default:{gutter:20}},baseColProps:{},quickColSpan:{default:3},autoSetPlaceHolder:{type:Boolean,default:!0},schemas:{},autoFocusFirstItem:{type:Boolean,default:!1},submitOnReset:{type:Boolean},mergeDynamicData:{},fieldMapToTime:{},autoSubmitOnEnter:{type:Boolean,default:!0},rulesMessageJoinLabel:{type:Boolean,default:!0},submitOnChange:{type:Boolean},showActionButtonGroup:{type:Boolean,default:!0},autoCleanErrorMessage:{type:Boolean,default:!0},beforeSubmitFunc:{},submitFunc:{},watchDataIsChange:{type:Boolean},compFullWidth:{type:Boolean,default:!1},actionInline:{type:Boolean,default:!1},resetFunc:{},customLayout:{type:Boolean,default:!1},showResetButton:{type:Boolean,default:!1},showSubmitButton:{type:Boolean,default:!0},showCommonButton:{type:Boolean,default:!1},resetButtonOptions:{},submitButtonOptions:{},commonButtonOptions:{},actionRowOptions:{},inputMaxLength:{},submitResetReverse:{type:Boolean},labelPosition:{default:"right"},labelWidth:{default:"auto"},disabled:{type:Boolean},model:{},rules:{},requireAsteriskPosition:{default:"left"},labelSuffix:{},inline:{type:Boolean},inlineMessage:{type:Boolean},statusIcon:{type:Boolean},showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1},scrollToError:{type:Boolean},scrollIntoViewOptions:{type:Boolean}},emits:["register","reset","submit","field-value-change","common-btn-click"],setup(L,{expose:$,emit:N}){const F=L,m=N,k=Z.useNamespace("super-form"),G=e.useAttrs(),s=e.reactive({}),i=e.ref({}),f=e.ref(!1),p=e.ref({}),C=e.ref(),d=e.ref(null),S=e.ref(),o=e.computed(()=>({...F,...e.unref(p)})),l=e.computed(()=>({...G,...F,...e.unref(o)})),r=e.computed(()=>{const t=e.unref(C);return c.cloneDeep(t)}),{handleFormValues:q,initDefault:z}=ue.useFormValues({getProps:o,defaultValueRef:i,getSchema:r,formModel:s});oe.useAutoFocus({getSchema:r,getProps:o,isInitedDefault:f,formElRef:d});const{handleSubmit:a,setFieldsValue:B,clearValidate:R,validate:_,validateField:A,getFieldsValue:h,updateSchema:v,resetSchema:y,appendSchemaByField:E,removeSchemaByField:O,resetFields:g,scrollToField:H,getFieldValue:P,setFormItemError:V}=re.useFormEvents({emit:m,getProps:o,formModel:s,getSchema:r,defaultValueRef:i,formElRef:d,schemaRef:C,handleFormValues:q,initValues:S});ne.createFormContext({resetAction:g,submitAction:a,commonAction:()=>m("common-btn-click")}),e.watch(()=>e.unref(o).model,()=>{const{model:t}=e.unref(o);t&&B(t)},{immediate:!0}),e.watch(()=>e.unref(o).schemas,(t,n)=>{c.isEqual(t,n)||y(t??[])}),e.watch(()=>r.value,t=>{e.nextTick(()=>{}),!e.unref(f)&&t?.length&&(z(),f.value=!0,o.value?.watchDataIsChange&&T.useTimeoutFn(()=>{S.value=h()},40))}),e.watch(()=>s,T.useDebounceFn(()=>{e.unref(o).submitOnChange&&a()},300),{deep:!0});async function x(t){p.value=c.deepMerge(e.unref(p)||{},t)}function j(t,n,u){s[t]=n}function K(t){const{autoSubmitOnEnter:n}=e.unref(o);if(n&&t.key==="Enter"&&t.target&&t.target instanceof HTMLElement){const u=t.target;u&&u.tagName&&u.tagName.toUpperCase()==="INPUT"&&a()}}const M={getFieldsValue:h,getFieldValue:P,setFieldsValue:B,resetFields:g,updateSchema:v,resetSchema:y,setProps:x,removeSchemaByField:O,appendSchemaByField:E,clearValidate:R,validateField:A,setFormItemError:V,validate:_,submit:a,scrollToField:H};m("register",M);const U=e.computed(()=>c.pick(o.value,["showResetButton","showCommonButton","showSubmitButton","resetButtonOptions","submitButtonOptions","commonButtonOptions","actionRowOptions","actionSpan","submitResetReverse"])),W=e.computed(()=>{const{showCommonButton:t,showResetButton:n,showSubmitButton:u}=o.value;return!!(t||n||u)}),I=e.computed(()=>{const t=e.unref(r);if(!t||t.length===0)return!1;try{return se.willFormExceedOneRow(t,o.value,s,i.value).willExceed}catch{return!1}}),b=e.useSlots(),w=t=>t?e.h(ee.default,U.value,{resetBefore:n=>b.resetBefore?.(n),submitBefore:n=>b.submitBefore?.(n),submitAfter:n=>b.submitAfter?.(n)}):null;return $({getFieldsValue:h,getFieldValue:P,setFieldsValue:B,resetFields:g,updateSchema:v,resetSchema:y,setProps:x,removeSchemaByField:O,appendSchemaByField:E,clearValidate:R,validateField:A,validate:_,submit:a,getSchema:r,setFormItemError:V,formModel:e.computed(()=>q(s)),hasActionButton:W,willExceedOneRow:I}),(t,n)=>r.value?.length?(e.openBlock(),e.createBlock(e.unref(X.VftForm),e.mergeProps({key:0},l.value,{ref_key:"formElRef",ref:d,class:[e.unref(k).b(),{[e.unref(k).is("exceed-one-row")]:I.value}],model:s,onSubmit:n[0]||(n[0]=e.withModifiers(()=>{},["prevent"])),onKeypress:e.withKeys(K,["enter"])}),{default:e.withCtx(()=>[r.value?.length?(e.openBlock(),e.createBlock(e.unref(Y.VftRow),e.normalizeProps(e.mergeProps({key:0},l.value?.rowProps)),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"formHeader"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,u=>(e.openBlock(),e.createBlock(te.default,{key:u.field,"form-action-type":M,schema:u,"form-props":o.value,"all-default-values":i.value,"form-model":s,"set-form-model":j,"update-schema":e.unref(v)},e.createSlots({_:2},[e.renderList(Object.keys(t.$slots),D=>({name:D,fn:e.withCtx(J=>[e.renderSlot(t.$slots,D,e.mergeProps({ref_for:!0},J||{}))])}))]),1032,["schema","form-props","all-default-values","form-model","update-schema"]))),128)),o.value?.customLayout?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&o.value?.actionInline)),{key:1})):(e.openBlock(),e.createBlock(e.unref(Q.VftCol),e.normalizeProps(e.mergeProps({key:0},l.value?.quickColSpan?{span:Math.ceil(24/l.value?.quickColSpan),...l.value?.baseColProps}:{})),{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&o.value?.actionInline))))]),_:1},16))]),_:3},16)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&!o.value?.actionInline)))),e.renderSlot(t.$slots,"formFooter")]),_:3},16,["class","model"])):e.createCommentVNode("",!0)}});exports.default=ae;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),X=require("../col/index.cjs"),Y=require("../form/index.cjs"),Z=require("../row/index.cjs"),D=require("@vueuse/core"),c=require("@vft/utils");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");const ee=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const te=require("./super-form-action.vue2.cjs"),oe=require("./super-form-item.vue2.cjs"),ne=require("./use/use-auto-focus.cjs"),re=require("./use/use-form-context.cjs"),ue=require("./use/use-form-events.cjs"),se=require("./use/use-form-values.cjs"),le=require("./use/helper.cjs"),ae=e.defineComponent({name:"vft-super-form"}),ie=e.defineComponent({...ae,props:{size:{default:"default"},rowProps:{default:{gutter:20}},baseColProps:{},quickColSpan:{default:3},autoSetPlaceHolder:{type:Boolean,default:!0},schemas:{},autoFocusFirstItem:{type:Boolean,default:!1},submitOnReset:{type:Boolean},mergeDynamicData:{},fieldMapToTime:{},autoSubmitOnEnter:{type:Boolean,default:!0},rulesMessageJoinLabel:{type:Boolean,default:!0},submitOnChange:{type:Boolean},showActionButtonGroup:{type:Boolean,default:!0},autoCleanErrorMessage:{type:Boolean,default:!0},beforeSubmitFunc:{},submitFunc:{},watchDataIsChange:{type:Boolean},compFullWidth:{type:Boolean,default:!1},actionInline:{type:Boolean,default:!1},resetFunc:{},customLayout:{type:Boolean,default:!1},showResetButton:{type:Boolean,default:!1},showSubmitButton:{type:Boolean,default:!0},showCommonButton:{type:Boolean,default:!1},resetButtonOptions:{},submitButtonOptions:{},commonButtonOptions:{},actionRowOptions:{},inputMaxLength:{},submitResetReverse:{type:Boolean},labelPosition:{default:"right"},labelWidth:{default:"auto"},formatter:{},disabled:{type:Boolean},model:{},rules:{},requireAsteriskPosition:{default:"left"},labelSuffix:{},inline:{type:Boolean},inlineMessage:{type:Boolean},statusIcon:{type:Boolean},showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1},scrollToError:{type:Boolean},scrollIntoViewOptions:{type:Boolean}},emits:["register","reset","submit","field-value-change","common-btn-click"],setup(T,{expose:L,emit:$}){const F=T,m=$,k=ee.useNamespace("super-form"),N=e.useAttrs(),s=e.reactive({}),i=e.ref({}),f=e.ref(!1),p=e.ref({}),C=e.ref(),d=e.ref(null),S=e.ref(),o=e.computed(()=>({...F,...e.unref(p)})),l=e.computed(()=>({...N,...F,...e.unref(o)})),r=e.computed(()=>{const t=e.unref(C);return c.cloneDeep(t)}),{handleFormValues:G,initDefault:z}=se.useFormValues({getProps:o,defaultValueRef:i,getSchema:r,formModel:s});ne.useAutoFocus({getSchema:r,getProps:o,isInitedDefault:f,formElRef:d});const{handleSubmit:a,setFieldsValue:B,clearValidate:q,validate:R,validateField:_,getFieldsValue:h,updateSchema:v,resetSchema:y,appendSchemaByField:A,removeSchemaByField:E,resetFields:g,scrollToField:H,getFieldValue:O,setFormItemError:P,getFormattedFormModel:j}=ue.useFormEvents({emit:m,getProps:o,formModel:s,getSchema:r,defaultValueRef:i,formElRef:d,schemaRef:C,handleFormValues:G,initValues:S});re.createFormContext({resetAction:g,submitAction:a,commonAction:()=>m("common-btn-click")}),e.watch(()=>e.unref(o).model,()=>{const{model:t}=e.unref(o);t&&B(t)},{immediate:!0}),e.watch(()=>e.unref(o).schemas,(t,n)=>{c.isEqual(t,n)||y(t??[])}),e.watch(()=>r.value,t=>{e.nextTick(()=>{}),!e.unref(f)&&t?.length&&(z(),f.value=!0,o.value?.watchDataIsChange&&D.useTimeoutFn(()=>{S.value=h()},40))}),e.watch(()=>s,D.useDebounceFn(()=>{e.unref(o).submitOnChange&&a()},300),{deep:!0});async function M(t){p.value=c.deepMerge(e.unref(p)||{},t)}function K(t,n,u){s[t]=n}function U(t){const{autoSubmitOnEnter:n}=e.unref(o);if(n&&t.key==="Enter"&&t.target&&t.target instanceof HTMLElement){const u=t.target;u&&u.tagName&&u.tagName.toUpperCase()==="INPUT"&&a()}}const V={getFieldsValue:h,getFieldValue:O,setFieldsValue:B,resetFields:g,updateSchema:v,resetSchema:y,setProps:M,removeSchemaByField:E,appendSchemaByField:A,clearValidate:q,validateField:_,setFormItemError:P,validate:R,submit:a,scrollToField:H};m("register",V);const W=e.computed(()=>c.pick(o.value,["showResetButton","showCommonButton","showSubmitButton","resetButtonOptions","submitButtonOptions","commonButtonOptions","actionRowOptions","actionSpan","submitResetReverse"])),J=e.computed(()=>{const{showCommonButton:t,showResetButton:n,showSubmitButton:u}=o.value;return!!(t||n||u)}),x=e.computed(()=>{const t=e.unref(r);if(!t||t.length===0)return!1;try{return le.willFormExceedOneRow(t,o.value,s,i.value).willExceed}catch{return!1}}),b=e.useSlots(),w=t=>t?e.h(te.default,W.value,{resetBefore:n=>b.resetBefore?.(n),submitBefore:n=>b.submitBefore?.(n),submitAfter:n=>b.submitAfter?.(n)}):null;return L({getFieldsValue:h,getFieldValue:O,setFieldsValue:B,resetFields:g,updateSchema:v,resetSchema:y,setProps:M,removeSchemaByField:E,appendSchemaByField:A,clearValidate:q,validateField:_,validate:R,submit:a,getSchema:r,setFormItemError:P,formModel:e.computed(()=>j()),hasActionButton:J,willExceedOneRow:x}),(t,n)=>r.value?.length?(e.openBlock(),e.createBlock(e.unref(Y.VftForm),e.mergeProps({key:0},l.value,{ref_key:"formElRef",ref:d,class:[e.unref(k).b(),{[e.unref(k).is("exceed-one-row")]:x.value}],model:s,onSubmit:n[0]||(n[0]=e.withModifiers(()=>{},["prevent"])),onKeypress:e.withKeys(U,["enter"])}),{default:e.withCtx(()=>[r.value?.length?(e.openBlock(),e.createBlock(e.unref(Z.VftRow),e.normalizeProps(e.mergeProps({key:0},l.value?.rowProps)),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"formHeader"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,u=>(e.openBlock(),e.createBlock(oe.default,{key:u.field,"form-action-type":V,schema:u,"form-props":o.value,"all-default-values":i.value,"form-model":s,"set-form-model":K,"update-schema":e.unref(v)},e.createSlots({_:2},[e.renderList(Object.keys(t.$slots),I=>({name:I,fn:e.withCtx(Q=>[e.renderSlot(t.$slots,I,e.mergeProps({ref_for:!0},Q||{}))])}))]),1032,["schema","form-props","all-default-values","form-model","update-schema"]))),128)),o.value?.customLayout?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&o.value?.actionInline)),{key:1})):(e.openBlock(),e.createBlock(e.unref(X.VftCol),e.normalizeProps(e.mergeProps({key:0},l.value?.quickColSpan?{span:Math.ceil(24/l.value?.quickColSpan),...l.value?.baseColProps}:{})),{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&o.value?.actionInline))))]),_:1},16))]),_:3},16)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o.value?.showActionButtonGroup&&!o.value?.actionInline)))),e.renderSlot(t.$slots,"formFooter")]),_:3},16,["class","model"])):e.createCommentVNode("",!0)}});exports.default=ie;
@@ -1,10 +1,25 @@
1
1
  import type { SwitchProps } from 'vft/es/components';
2
+ import type { AutocompleteProps } from 'vft/es/components/autocomplete/autocomplete.vue';
2
3
  import type { ButtonProps } from 'vft/es/components/button';
4
+ import type { CascaderProps } from 'vft/es/components/cascader-panel';
5
+ import type { CheckboxGroupProps } from 'vft/es/components/checkbox/checkbox-group.vue';
3
6
  import type { ColProps } from 'vft/es/components/col';
7
+ import type { ColorPickerProps } from 'vft/es/components/color-picker/color-picker.vue';
8
+ import type { DatePickerProps } from 'vft/es/components/date-picker';
9
+ import type { DividerProps } from 'vft/es/components/divider/divider.vue';
4
10
  import type { FormItemProp, FormItemProps, FormProps } from 'vft/es/components/form';
5
11
  import type { IconProps } from 'vft/es/components/icon';
12
+ import type { InputProps } from 'vft/es/components/input';
13
+ import type { InputNumberProps } from 'vft/es/components/input-number/input-number.vue';
14
+ import type { InputTagProps } from 'vft/es/components/input-tag';
15
+ import type { RadioGroupProps } from 'vft/es/components/radio/radio-group.vue';
6
16
  import type { RowProps } from 'vft/es/components/row';
17
+ import type { SearchProps } from 'vft/es/components/search';
18
+ import type { SelectV2Props } from 'vft/es/components/select';
19
+ import type { SliderProps } from 'vft/es/components/slider/slider.vue';
20
+ import type { TimePickerDefaultProps } from 'vft/es/components/time-picker';
7
21
  import type { ToolTipProps } from 'vft/es/components/tooltip';
22
+ import type { UploadProps } from 'vft/es/components/upload';
8
23
  import type { ComponentSize } from 'vft/es/constants';
9
24
  import type { Arrayable } from 'vft/es/utils';
10
25
  import { type FormCompEnumType } from 'vft/es/utils';
@@ -40,7 +55,7 @@ type FormItemRule = Omit<RuleItem, 'validator'> & Rule & {
40
55
  } & {
41
56
  isNumber?: boolean;
42
57
  };
43
- export type SchemaCompOptions = SwitchProps | Record<string, any>;
58
+ export type SchemaCompOptions = InputProps | SelectV2Props | RadioGroupProps | CheckboxGroupProps | DatePickerProps | TimePickerDefaultProps | CascaderProps | AutocompleteProps | ColorPickerProps | UploadProps | SliderProps | InputNumberProps | InputTagProps | DividerProps | SearchProps | SwitchProps | Record<string, any>;
44
59
  /** 渲染回调参数接口 */
45
60
  export interface RenderCallbackParams {
46
61
  /** 表单配置模式 */
@@ -180,6 +195,8 @@ export interface SuperFormProps extends FormInnerProps {
180
195
  submitResetReverse?: boolean;
181
196
  labelPosition?: 'left' | 'right' | 'top';
182
197
  labelWidth?: string | number;
198
+ /** 表单值格式化函数,用于格式化 getFieldsValue 的输出值 */
199
+ formatter?: (values: Recordable) => Recordable;
183
200
  }
184
201
  /** 表单配置模式接口 */
185
202
  export interface FormSchema {
@@ -265,6 +282,8 @@ export interface FormSchema {
265
282
  helpIcon?: IconProps | string;
266
283
  /** 帮助提示配置 */
267
284
  helpTooltip?: string | ToolTipProps;
285
+ /** 字段值格式化函数,用于格式化该字段在 getFieldsValue 中的输出值 */
286
+ formatter?: (value: any, field: string, values: Recordable, schema: FormSchema) => any;
268
287
  }
269
288
  /** 表单项属性接口 */
270
289
  export interface SuperFormItemProps {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("../../../utils/form-register.cjs");require("@vueuse/core");const a=require("@vft/utils");require("../../config-provider/hooks/use-global-config.cjs");const i=require("vue"),b=require("lodash-es");require("../../form/index.cjs");const U=require("@vft/utils/date"),$=require("../component-map.cjs"),K=require("./helper.cjs");function C(p,y){const{show:l,ifShow:o}=p;let v=!0,c=!0;return typeof l=="boolean"?v=l:typeof l=="function"&&(v=l({field:p.field,model:y,values:{...y},schema:p})),typeof o=="boolean"?c=o:typeof o=="function"&&(c=o({field:p.field,model:y,values:{...y},schema:p})),v&&c}function R(p,y={}){const l=/^\[(.+)\]$/;if(l.test(p)){const o=p.match(l);if(o&&o[1]){const v=o[1].split(",");if(!v.length)return;const c=[];return v.forEach((F,V)=>{b.set(c,V,y[F.trim()])}),c.filter(Boolean).length?c:void 0}}}function k(p,y={}){const l=/^\{(.+)\}$/;if(l.test(p)){const o=p.match(l);if(o&&o[1]){const v=o[1].split(",");if(!v.length)return;const c={};return v.forEach(F=>{b.set(c,F.trim(),y[F.trim()])}),Object.values(c).filter(Boolean).length?c:void 0}}}function M({emit:p,getProps:y,formModel:l,getSchema:o,defaultValueRef:v,formElRef:c,schemaRef:F,handleFormValues:V,initValues:S}){async function z(e){const{resetFunc:n,submitOnReset:s}=i.unref(y);n&&a.isFunction(n)&&await n();const r=i.unref(c);if(r){if(e?.length)return r.resetFields(e);Object.keys(l).forEach(f=>{const u=i.unref(o).find(d=>d.field===f),t=b.cloneDeep(v.value[f]);l[f]=$.isInput(u?.type)?t||"":t}),i.nextTick(()=>O()),p("reset",i.toRaw(l)),s&&await _()}}async function m(e,n=!0){const s=i.unref(o).map(t=>t.field).filter(Boolean),r=".",f=s.filter(t=>String(t).indexOf(r)>=0),u=[];s.forEach(t=>{const d=i.unref(o).find(h=>h.field===t);let D=b.get(e,t);const A=Reflect.has(e,t);D=K.handleInputNumberValue(d?.type,D);const{componentProps:N}=d||{};let E=N;typeof N=="function"&&(E=E({formModel:i.unref(l)}));const P=R(t,e)||k(t,e);if(A||P){const h=P||D;if(X(t))if(Array.isArray(h)){const w=[];for(const g of h)w.push(g?U.formatToDate(g):null);i.unref(l)[t]=w}else i.unref(l)[t]=h?E?.valueFormat?h:U.formatToDate(h):null;else i.unref(l)[t]=h;E?.onChange&&E?.onChange(h),u.push(t)}else f.forEach(h=>{try{const w=h.split(".").reduce((g,L)=>g[L],e);a.isDef(w)&&(i.unref(l)[h]=i.unref(w),u.push(h))}catch{a.isDef(v.value[h])&&(i.unref(l)[h]=b.cloneDeep(i.unref(v.value[h])))}})}),n&&i.nextTick(async()=>{await T(u).catch(t=>{})})}async function G(e){const n=b.cloneDeep(i.unref(o));if(!e)return;let s=a.isString(e)?[e]:e;a.isString(e)&&(s=[e]);for(const r of s)H(r,n);F.value=n}function H(e,n){if(a.isString(e)){const s=n.findIndex(r=>r.field===e);s!==-1&&(delete l[e],n.splice(s,1))}}async function J(e,n,s=!1){const r=b.cloneDeep(i.unref(o)),f=r.findIndex(t=>t.field===n),u=a.isObject(e)?[e]:e;if(!n||f===-1||s){s?r.unshift(...u):r.push(...u),F.value=r,q(e);return}f!==-1&&r.splice(f+1,0,...u),q(e),F.value=r}async function Q(e){let n=[];if(a.isObject(e)&&n.push(e),a.isArray(e)&&(n=[...e]),!n.every(r=>r.type===B.FormCompEnum.Divider||Reflect.has(r,"field")&&r.field)){console.error("All children of the form Schema array that need to be updated must contain the `field` field");return}F.value=n}async function I(e){let n=[];if(a.isObject(e)&&n.push(e),a.isArray(e)&&(n=[...e]),!n.every(u=>u.type===B.FormCompEnum.Divider||Reflect.has(u,"field")&&u.field)){console.error("All children of the form Schema array that need to be updated must contain the `field` field");return}const r=[],f=[];i.unref(o).forEach(u=>{let t;if(n.forEach(d=>{u.field===d.field&&(t=d),d.defaultValue&&d.field&&r.push(d.field)}),t!==void 0&&u.field===t.field){const d=a.deepMerge(u,t);f.push(d)}else f.push(u)}),q(f,r),F.value=b.uniqBy(f,"field")}function q(e,n,s=!0){if(a.isArray(n)&&n?.length===0)return;let r=[];a.isObject(e)&&r.push(e),a.isArray(e)&&(r=[...e]);const f={},u=j();r.forEach(t=>{t.type!==B.FormCompEnum.Divider&&Reflect.has(t,"field")&&t.field&&!a.isNullOrUndefined(t.defaultValue)&&(!(t.field in u)||a.isNullOrUndefined(u[t.field])||a.isEmpty(u[t.field]))&&(f[t.field]=t.defaultValue)}),a.isEmptyObject(f)||m(f,s)}function j(e=!1){if(!i.unref(c))return{};const s=V(i.toRaw(i.unref(l)));if(e)return s;const r=i.unref(o).filter(u=>C(u,i.unref(l))).map(u=>u.field).filter(Boolean),f={};return r.forEach(u=>{u in s&&(f[u]=s[u])}),f}function W(e){return i.unref(c)?i.toRaw(i.unref(l))[e]:{}}function X(e){return i.unref(o).some(n=>n.field===e?$.isDatePicker(n.type):!1)}async function T(e){return e||(e=i.unref(o).filter(s=>C(s,i.unref(l))).map(s=>s.field).filter(Boolean)),i.unref(c)?.validateField(e)}async function x(e){return e||(e=i.unref(o).filter(s=>C(s,i.unref(l))).map(s=>s.field).filter(Boolean)),await i.unref(c)?.validate(e,()=>{})}async function O(e){await i.unref(c)?.clearValidate(e)}async function Y(e,n){await O(e),await I([{field:e,itemProps:{error:n}}])}async function Z(e,n){await i.unref(c)?.scrollToField(e,n)}async function _(e){const{autoCleanErrorMessage:n,watchDataIsChange:s}=i.unref(y);e&&e.preventDefault(),n&&await O();const{submitFunc:r,beforeSubmitFunc:f}=i.unref(y);if(f&&a.isFunction(f)&&await f(),r&&a.isFunction(r)){await r();return}if(i.unref(c))try{if(!await x())return;const d=j();if(s){const D=b.isEqual(S.value,d),A=a.findDifferentValuesForObj(S.value,d);p("submit",d,!D,A)}else p("submit",d)}catch(t){if(t?.outOfDate===!1&&t?.errorFields)return;throw new Error(t.message)}}return{handleSubmit:_,clearValidate:O,validate:x,validateField:T,getFieldsValue:j,updateSchema:I,resetSchema:Q,appendSchemaByField:J,removeSchemaByField:G,resetFields:z,setFieldsValue:m,scrollToField:Z,getFieldValue:W,setFormItemError:Y}}exports.useFormEvents=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("../../../utils/form-register.cjs");require("@vueuse/core");const a=require("@vft/utils");require("../../config-provider/hooks/use-global-config.cjs");const n=require("vue"),m=require("lodash-es");require("../../form/index.cjs");const U=require("@vft/utils/date"),$=require("../component-map.cjs"),k=require("./helper.cjs");function g(F,y){const{show:f,ifShow:c}=F;let v=!0,d=!0;return typeof f=="boolean"?v=f:typeof f=="function"&&(v=f({field:F.field,model:y,values:{...y},schema:F})),typeof c=="boolean"?d=c:typeof c=="function"&&(d=c({field:F.field,model:y,values:{...y},schema:F})),v&&d}function M(F,y={}){const f=/^\[(.+)\]$/;if(f.test(F)){const c=F.match(f);if(c&&c[1]){const v=c[1].split(",");if(!v.length)return;const d=[];return v.forEach((b,V)=>{m.set(d,V,y[b.trim()])}),d.filter(Boolean).length?d:void 0}}}function ee(F,y={}){const f=/^\{(.+)\}$/;if(f.test(F)){const c=F.match(f);if(c&&c[1]){const v=c[1].split(",");if(!v.length)return;const d={};return v.forEach(b=>{m.set(d,b.trim(),y[b.trim()])}),Object.values(d).filter(Boolean).length?d:void 0}}}function te({emit:F,getProps:y,formModel:f,getSchema:c,defaultValueRef:v,formElRef:d,schemaRef:b,handleFormValues:V,initValues:I}){async function z(e){const{resetFunc:r,submitOnReset:i}=n.unref(y);r&&a.isFunction(r)&&await r();const s=n.unref(d);if(s){if(e?.length)return s.resetFields(e);Object.keys(f).forEach(o=>{const u=n.unref(c).find(l=>l.field===o),t=m.cloneDeep(v.value[o]);f[o]=$.isInput(u?.type)?t||"":t}),n.nextTick(()=>j()),F("reset",n.toRaw(f)),i&&await L()}}async function T(e,r=!0){const i=n.unref(c).map(t=>t.field).filter(Boolean),s=".",o=i.filter(t=>String(t).indexOf(s)>=0),u=[];i.forEach(t=>{const l=n.unref(c).find(p=>p.field===t);let h=m.get(e,t);const D=Reflect.has(e,t);h=k.handleInputNumberValue(l?.type,h);const{componentProps:E}=l||{};let w=E;typeof E=="function"&&(w=w({formModel:n.unref(f)}));const N=M(t,e)||ee(t,e);if(D||N){const p=N||h;if(X(t))if(Array.isArray(p)){const O=[];for(const q of p)O.push(q?U.formatToDate(q):null);n.unref(f)[t]=O}else n.unref(f)[t]=p?w?.valueFormat?p:U.formatToDate(p):null;else n.unref(f)[t]=p;w?.onChange&&w?.onChange(p),u.push(t)}else o.forEach(p=>{try{const O=p.split(".").reduce((q,R)=>q[R],e);a.isDef(O)&&(n.unref(f)[p]=n.unref(O),u.push(p))}catch{a.isDef(v.value[p])&&(n.unref(f)[p]=m.cloneDeep(n.unref(v.value[p])))}})}),r&&n.nextTick(async()=>{await x(u).catch(t=>{})})}async function G(e){const r=m.cloneDeep(n.unref(c));if(!e)return;let i=a.isString(e)?[e]:e;a.isString(e)&&(i=[e]);for(const s of i)H(s,r);b.value=r}function H(e,r){if(a.isString(e)){const i=r.findIndex(s=>s.field===e);i!==-1&&(delete f[e],r.splice(i,1))}}async function J(e,r,i=!1){const s=m.cloneDeep(n.unref(c)),o=s.findIndex(t=>t.field===r),u=a.isObject(e)?[e]:e;if(!r||o===-1||i){i?s.unshift(...u):s.push(...u),b.value=s,A(e);return}o!==-1&&s.splice(o+1,0,...u),A(e),b.value=s}async function P(e){let r=[];if(a.isObject(e)&&r.push(e),a.isArray(e)&&(r=[...e]),!r.every(s=>s.type===C.FormCompEnum.Divider||Reflect.has(s,"field")&&s.field)){console.error("All children of the form Schema array that need to be updated must contain the `field` field");return}b.value=r}async function S(e){let r=[];if(a.isObject(e)&&r.push(e),a.isArray(e)&&(r=[...e]),!r.every(u=>u.type===C.FormCompEnum.Divider||Reflect.has(u,"field")&&u.field)){console.error("All children of the form Schema array that need to be updated must contain the `field` field");return}const s=[],o=[];n.unref(c).forEach(u=>{let t;if(r.forEach(l=>{u.field===l.field&&(t=l),l.defaultValue&&l.field&&s.push(l.field)}),t!==void 0&&u.field===t.field){const l=a.deepMerge(u,t);o.push(l)}else o.push(u)}),A(o,s),b.value=m.uniqBy(o,"field")}function A(e,r,i=!0){if(a.isArray(r)&&r?.length===0)return;let s=[];a.isObject(e)&&s.push(e),a.isArray(e)&&(s=[...e]);const o={},u=B();s.forEach(t=>{t.type!==C.FormCompEnum.Divider&&Reflect.has(t,"field")&&t.field&&!a.isNullOrUndefined(t.defaultValue)&&(!(t.field in u)||a.isNullOrUndefined(u[t.field])||a.isEmpty(u[t.field]))&&(o[t.field]=t.defaultValue)}),a.isEmptyObject(o)||T(o,i)}function B(e=!1){if(!n.unref(d))return{};const i=V(n.toRaw(n.unref(f)));if(e)return i;const s=n.unref(c).filter(h=>g(h,n.unref(f))).map(h=>h.field).filter(Boolean),o={};s.forEach(h=>{h in i&&(o[h]=i[h])});const u=n.unref(c),t={};s.forEach(h=>{if(h in o){const D=u.find(w=>w.field===h);let E=o[h];D?.formatter&&a.isFunction(D.formatter)&&(E=D.formatter(E,h,o,D)),t[h]=E}});const{formatter:l}=n.unref(y);return l&&a.isFunction(l)?l(t):t}function Q(e,r,i){const o=n.unref(c).find(u=>u.field===e);return o?.formatter&&a.isFunction(o.formatter)?o.formatter(r,e,i,o):r}function W(e){if(!n.unref(d))return{};if(!(e in n.unref(f)))return{};const i=V(n.toRaw(n.unref(f))),s=i[e];return Q(e,s,i)}function X(e){return n.unref(c).some(r=>r.field===e?$.isDatePicker(r.type):!1)}async function x(e){return e||(e=n.unref(c).filter(i=>g(i,n.unref(f))).map(i=>i.field).filter(Boolean)),n.unref(d)?.validateField(e)}async function _(e){return e||(e=n.unref(c).filter(i=>g(i,n.unref(f))).map(i=>i.field).filter(Boolean)),await n.unref(d)?.validate(e,()=>{})}async function j(e){await n.unref(d)?.clearValidate(e)}async function Y(e,r){await j(e),await S([{field:e,itemProps:{error:r}}])}async function Z(e,r){await n.unref(d)?.scrollToField(e,r)}async function L(e){const{autoCleanErrorMessage:r,watchDataIsChange:i}=n.unref(y);e&&e.preventDefault(),r&&await j();const{submitFunc:s,beforeSubmitFunc:o}=n.unref(y);if(o&&a.isFunction(o)&&await o(),s&&a.isFunction(s)){await s();return}if(n.unref(d))try{if(!await _())return;const l=B();if(i){const h=m.isEqual(I.value,l),D=a.findDifferentValuesForObj(I.value,l);F("submit",l,!h,D)}else F("submit",l)}catch(t){if(t?.outOfDate===!1&&t?.errorFields)return;throw new Error(t.message)}}function K(){const e=V(n.toRaw(n.unref(f))),r=n.unref(c),i={};Object.keys(e).forEach(o=>{const u=r.find(l=>l.field===o);let t=e[o];u?.formatter&&a.isFunction(u.formatter)&&(t=u.formatter(t,o,e,u)),i[o]=t});const{formatter:s}=n.unref(y);return s&&a.isFunction(s)?s(i):i}return{handleSubmit:L,clearValidate:j,validate:_,validateField:x,getFieldsValue:B,updateSchema:S,resetSchema:P,appendSchemaByField:J,removeSchemaByField:G,resetFields:z,setFieldsValue:T,scrollToField:Z,getFieldValue:W,setFormItemError:Y,getFormattedFormModel:K}}exports.useFormEvents=te;
@@ -27,5 +27,6 @@ export declare function useFormEvents({ emit, getProps, formModel, getSchema, de
27
27
  scrollToField: (name: any, options?: ScrollOptions | undefined) => Promise<void>;
28
28
  getFieldValue: (field: string) => string | number | Recordable;
29
29
  setFormItemError: (field: string, errMess: string) => Promise<void>;
30
+ getFormattedFormModel: () => Recordable;
30
31
  };
31
32
  export {};
@@ -68,7 +68,7 @@ export declare const VftSwitch: import("vft/es/utils").SFCWithInstall<import("vu
68
68
  default: boolean;
69
69
  };
70
70
  beforeChange: {
71
- type: import("vue").PropType<Function>;
71
+ type: import("vue").PropType<() => Promise<boolean> | boolean>;
72
72
  };
73
73
  }>, {
74
74
  focus: () => void;
@@ -147,7 +147,7 @@ export declare const VftSwitch: import("vft/es/utils").SFCWithInstall<import("vu
147
147
  default: boolean;
148
148
  };
149
149
  beforeChange: {
150
- type: import("vue").PropType<Function>;
150
+ type: import("vue").PropType<() => Promise<boolean> | boolean>;
151
151
  };
152
152
  }>> & Readonly<{
153
153
  onInput?: ((...args: any[]) => any) | undefined;
@@ -1,25 +1,46 @@
1
1
  import type { IconProps } from 'vft/es/components/icon';
2
2
  import type { ComponentSize } from 'vft/es/constants';
3
3
  export interface SwitchProps {
4
+ /** 绑定值,必须等于 `active-value` 或 `inactive-value`,默认为 `boolean` 类型 */
4
5
  modelValue?: boolean | string | number;
6
+ /** 绑定值(非受控模式) */
5
7
  value?: boolean | string | number;
8
+ /** 是否禁用 */
6
9
  disabled?: boolean;
10
+ /** switch 的宽度 */
7
11
  width?: string | number;
12
+ /** 无论图标或文本是否显示在点内,只会呈现文本的第一个字符 */
8
13
  inlinePrompt?: boolean;
14
+ /** switch 状态为 `on` 时所显示图标,设置此项会忽略 `active-text` */
9
15
  activeIcon?: IconProps | string;
16
+ /** switch 状态为 `off` 时所显示图标,设置此项会忽略 `inactive-text` */
10
17
  inactiveIcon?: IconProps | string;
18
+ /** switch 打开时的文字描述 */
11
19
  activeText?: string;
20
+ /** switch 的状态为 `off` 时的文字描述 */
12
21
  inactiveText?: string;
22
+ /** 当在 `on` 状态时的背景颜色(已废弃,请使用 CSS var `--vft-switch-on-color`) */
13
23
  activeColor?: string;
24
+ /** `off` 状态时的背景颜色(已废弃,使用 CSS var `--vft-switch-off-color`) */
14
25
  inactiveColor?: string;
26
+ /** 开关的边框颜色(已废弃,使用 CSS var `--vft-switch-border-color`) */
15
27
  borderColor?: string;
28
+ /** switch 状态为 `on` 时的值 */
16
29
  activeValue?: boolean | string | number;
30
+ /** switch 的状态为 `off` 时的值 */
17
31
  inactiveValue?: boolean | string | number;
32
+ /** switch 对应的 name 属性 */
18
33
  name?: string;
34
+ /** 改变 switch 状态时是否触发表单的校验 */
19
35
  validateEvent?: boolean;
36
+ /** id for input */
20
37
  id?: string;
38
+ /** 是否显示加载中 */
21
39
  loading?: boolean;
22
- beforeChange?: Function;
40
+ /** switch 状态改变前的钩子,返回 `false` 或者返回 `Promise` 且被 reject 则停止切换 */
41
+ beforeChange?: () => Promise<boolean> | boolean;
42
+ /** switch 的大小 */
23
43
  size?: ComponentSize;
44
+ /** tabindex for input */
24
45
  tabindex?: string | number;
25
46
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),I=require("@vft/utils/date"),_=require("@vft/utils"),d=require("../button/index.cjs"),F=require("../popconfirm/index.cjs"),f=require("../tag/index.cjs");function l(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!r.isVNode(t)}const L={type:"seq",title:"序号",fixed:"left",width:53},T={type:"checkbox",title:"",minWidth:60,fixed:"left"},M={field:"id",title:"Id",minWidth:100},p={field:"name",title:"名称",minWidth:100},Y=({format:t="YYYY-MM-DD",field:e="date",title:n="时间"}={})=>({minWidth:100,field:e,title:n,formatter:({row:i})=>i[e]?I.formatToDateTime(i[e],t):"-"}),c=({format:t="YYYY-MM-DD HH:mm:ss",field:e="date",title:n="时间"}={})=>({minWidth:190,field:e,title:n,formatter:({row:i})=>i[e]?I.formatToDateTime(i[e],t):"-"}),A=({format:t="YYYY-MM-DD HH:mm:ss",field:e="createTime",title:n="创建时间"}={})=>c({format:t,field:e,title:n}),g=({format:t="YYYY-MM-DD HH:mm:ss",field:e="updateTime",title:n="更新时间"}={})=>c({format:t,field:e,title:n}),N=({field:t="status",title:e="状态",normalText:n="正常",disabledText:i="禁用",strToNumber:a=!0}={})=>({field:t,title:e,minWidth:100,slots:{default:({row:u})=>{let o=u?.[t];return _.isNullOrUndefined(o)?"-":(a&&Number(o)===0&&(o=!1),o?r.createVNode(f.VftTag,null,l(n)?n:{default:()=>[n]}):r.createVNode(f.VftTag,{type:"danger"},l(i)?i:{default:()=>[i]}))}}}),V=({confirmText:t="确认删除?",leftCallback:e,rightCallback:n,leftText:i="编辑",rightText:a="删除",showLeft:u=!0,showRight:o=!0}={})=>({title:"操作栏",minWidth:180,field:"custom-action",fixed:"right",slots:{default:({row:D})=>{const s=r.ref(!1),m=()=>{s.value=!0,n?.(D)?.finally(()=>{s.value=!1})};return r.createVNode(r.Fragment,null,[u?r.createVNode(d.VftButton,{size:"small",type:"primary",onClick:E=>{E.stopPropagation(),e?.(D)}},l(i)?i:{default:()=>[i]}):null,o?r.createVNode(F.VftPopconfirm,{width:"150",onConfirm:m,title:t},{reference:()=>r.createVNode(d.VftButton,{loading:s.value,size:"small",type:"danger",onClick:E=>{E.stopPropagation()}},l(a)?a:{default:()=>[a]})}):null])}}});exports.ACTION_FIELD=V;exports.CHECKED_FIELD=T;exports.CREATE_TIME_FIELD=A;exports.DATE_FIELD=Y;exports.DATE_TIME_FIELD=c;exports.ID_FIELD=M;exports.NAME_FIELD=p;exports.SEQ_FIELD=L;exports.STATUS_FIELD=N;exports.UPDATE_TIME_FIELD=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),F=require("@vft/use"),I=require("@vft/utils/date"),T=require("@vft/utils"),D=require("../button/index.cjs"),M=require("../popconfirm/index.cjs"),d=require("../tag/index.cjs");function s(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!o.isVNode(t)}const p={type:"seq",title:"序号",fixed:"left",width:53},Y={type:"checkbox",title:"",minWidth:60,fixed:"left"},g={field:"id",title:"Id",minWidth:100},A={field:"name",title:"名称",minWidth:100},N=({format:t="YYYY-MM-DD",field:e="date",title:n="时间"}={})=>({minWidth:100,field:e,title:n,formatter:({row:i})=>i[e]?I.formatToDateTime(i[e],t):"-"}),l=({format:t="YYYY-MM-DD HH:mm:ss",field:e="date",title:n="时间"}={})=>({minWidth:190,field:e,title:n,formatter:({row:i})=>i[e]?I.formatToDateTime(i[e],t):"-"}),V=({format:t="YYYY-MM-DD HH:mm:ss",field:e="createTime",title:n="创建时间"}={})=>l({format:t,field:e,title:n}),h=({format:t="YYYY-MM-DD HH:mm:ss",field:e="updateTime",title:n="更新时间"}={})=>l({format:t,field:e,title:n}),y=({field:t="status",title:e="状态",normalText:n="正常",disabledText:i="禁用",strToNumber:a=!0}={})=>({field:t,title:e,minWidth:100,slots:{default:({row:u})=>{let r=u?.[t];return T.isNullOrUndefined(r)?"-":(a&&Number(r)===0&&(r=!1),r?o.createVNode(d.VftTag,null,s(n)?n:{default:()=>[n]}):o.createVNode(d.VftTag,{type:"danger"},s(i)?i:{default:()=>[i]}))}}}),C=({confirmText:t="确认删除?",leftCallback:e,rightCallback:n,leftText:i="编辑",rightText:a="删除",showLeft:u=!0,showRight:r=!0}={})=>({title:"操作栏",minWidth:180,field:"custom-action",fixed:"right",slots:{default:({row:E})=>{const{loading:f,start:m,cancel:_}=F.useLoadingDelay(),L=()=>{m(),n?.(E)?.finally(()=>{_()})};return o.createVNode(o.Fragment,null,[u?o.createVNode(D.VftButton,{size:"small",type:"primary",onClick:c=>{c.stopPropagation(),e?.(E)}},s(i)?i:{default:()=>[i]}):null,r?o.createVNode(M.VftPopconfirm,{width:"150",onConfirm:L,title:t},{reference:()=>o.createVNode(D.VftButton,{loading:f.value,size:"small",type:"danger",onClick:c=>{c.stopPropagation()}},s(a)?a:{default:()=>[a]})}):null])}}});exports.ACTION_FIELD=C;exports.CHECKED_FIELD=Y;exports.CREATE_TIME_FIELD=V;exports.DATE_FIELD=N;exports.DATE_TIME_FIELD=l;exports.ID_FIELD=g;exports.NAME_FIELD=A;exports.SEQ_FIELD=p;exports.STATUS_FIELD=y;exports.UPDATE_TIME_FIELD=h;
@@ -502,7 +502,7 @@ export declare const VftTable: import("vft/es/utils").SFCWithInstall<{
502
502
  emit: (event: "change" | "zoom" | "copy" | "cut" | "keydown" | "paste" | "scroll" | "update:page-size" | "current-change" | "register" | "fetch-success" | "update:data" | "keydown-start" | "keydown-end" | "current-row-change" | "current-row-disabled" | "current-column-change" | "current-column-disabled" | "radio-change" | "checkbox-change" | "checkbox-all" | "checkbox-range-start" | "checkbox-range-change" | "checkbox-range-end" | "checkbox-range-select" | "cell-click" | "cell-dblclick" | "cell-menu" | "cell-mouseenter" | "cell-mouseleave" | "cell-selected" | "cell-delete-value" | "cell-backspace-value" | "header-cell-click" | "header-cell-dblclick" | "header-cell-menu" | "footer-cell-click" | "footer-cell-dblclick" | "footer-cell-menu" | "clear-merge" | "sort-change" | "clear-sort" | "clear-all-sort" | "filter-change" | "filter-visible" | "clear-filter" | "clear-all-filter" | "resizable-change" | "column-resizable-change" | "row-resizable-change" | "toggle-row-group-expand" | "toggle-row-expand" | "toggle-tree-expand" | "menu-click" | "edit-closed" | "row-dragstart" | "row-dragover" | "row-dragend" | "column-dragstart" | "column-dragover" | "column-dragend" | "enter-append-row" | "edit-actived" | "edit-activated" | "edit-disabled" | "valid-error" | "scroll-boundary" | "custom" | "custom-visible-change" | "custom-visible-all" | "custom-fixed-change" | "change-fnr" | "open-fnr" | "show-fnr" | "hide-fnr" | "fnr-change" | "fnr-find" | "fnr-find-all" | "fnr-replace" | "fnr-replace-all" | "cell-area-copy" | "cell-area-cut" | "cell-area-paste" | "cell-area-merge" | "clear-cell-area-selection" | "clear-cell-area-merge" | "header-cell-area-selection" | "cell-area-selection-invalid" | "cell-area-selection-start" | "cell-area-selection-drag" | "cell-area-selection-end" | "cell-area-extension-start" | "cell-area-extension-drag" | "cell-area-extension-end" | "cell-area-selection-all-start" | "cell-area-selection-all-end" | "cell-area-arrows-start" | "cell-area-arrows-end" | "active-cell-change-start" | "active-cell-change-end" | "form-submit" | "form-reset" | "update:page-num" | "page-change" | "form-submit-invalid" | "form-collapse" | "form-toggle-collapse" | "proxy-query" | "proxy-delete" | "proxy-save" | "toolbar-button-click" | "toolbar-tool-click", ...args: any[]) => void;
503
503
  setProps: (props: Partial<import("./types").TableProps>) => void;
504
504
  reload: (opt?: any) => Promise<import("../types").Recordable[] | undefined>;
505
- deleteTableDataRecord: (row: any, rowKey: any) => void;
505
+ deleteTableDataRecord: (row: import("../types").Recordable | import("../types").Recordable[], rowKey?: string | number | string[] | number[]) => void;
506
506
  insertTableDataRecord: (record: import("../types").Recordable | import("../types").Recordable[], index?: number) => import("../types").Recordable[] | undefined;
507
507
  updateTableDataRecord: (rowKey: string | number, record: import("../types").Recordable) => import("../types").Recordable | undefined;
508
508
  updateTableData: (index: number, key: string, value: any) => Promise<import("../types").Recordable>;
@@ -1422,7 +1422,7 @@ export declare const VftTable: import("vft/es/utils").SFCWithInstall<{
1422
1422
  emit: (event: "change" | "zoom" | "copy" | "cut" | "keydown" | "paste" | "scroll" | "update:page-size" | "current-change" | "register" | "fetch-success" | "update:data" | "keydown-start" | "keydown-end" | "current-row-change" | "current-row-disabled" | "current-column-change" | "current-column-disabled" | "radio-change" | "checkbox-change" | "checkbox-all" | "checkbox-range-start" | "checkbox-range-change" | "checkbox-range-end" | "checkbox-range-select" | "cell-click" | "cell-dblclick" | "cell-menu" | "cell-mouseenter" | "cell-mouseleave" | "cell-selected" | "cell-delete-value" | "cell-backspace-value" | "header-cell-click" | "header-cell-dblclick" | "header-cell-menu" | "footer-cell-click" | "footer-cell-dblclick" | "footer-cell-menu" | "clear-merge" | "sort-change" | "clear-sort" | "clear-all-sort" | "filter-change" | "filter-visible" | "clear-filter" | "clear-all-filter" | "resizable-change" | "column-resizable-change" | "row-resizable-change" | "toggle-row-group-expand" | "toggle-row-expand" | "toggle-tree-expand" | "menu-click" | "edit-closed" | "row-dragstart" | "row-dragover" | "row-dragend" | "column-dragstart" | "column-dragover" | "column-dragend" | "enter-append-row" | "edit-actived" | "edit-activated" | "edit-disabled" | "valid-error" | "scroll-boundary" | "custom" | "custom-visible-change" | "custom-visible-all" | "custom-fixed-change" | "change-fnr" | "open-fnr" | "show-fnr" | "hide-fnr" | "fnr-change" | "fnr-find" | "fnr-find-all" | "fnr-replace" | "fnr-replace-all" | "cell-area-copy" | "cell-area-cut" | "cell-area-paste" | "cell-area-merge" | "clear-cell-area-selection" | "clear-cell-area-merge" | "header-cell-area-selection" | "cell-area-selection-invalid" | "cell-area-selection-start" | "cell-area-selection-drag" | "cell-area-selection-end" | "cell-area-extension-start" | "cell-area-extension-drag" | "cell-area-extension-end" | "cell-area-selection-all-start" | "cell-area-selection-all-end" | "cell-area-arrows-start" | "cell-area-arrows-end" | "active-cell-change-start" | "active-cell-change-end" | "form-submit" | "form-reset" | "update:page-num" | "page-change" | "form-submit-invalid" | "form-collapse" | "form-toggle-collapse" | "proxy-query" | "proxy-delete" | "proxy-save" | "toolbar-button-click" | "toolbar-tool-click", ...args: any[]) => void;
1423
1423
  setProps: (props: Partial<import("./types").TableProps>) => void;
1424
1424
  reload: (opt?: any) => Promise<import("../types").Recordable[] | undefined>;
1425
- deleteTableDataRecord: (row: any, rowKey: any) => void;
1425
+ deleteTableDataRecord: (row: import("../types").Recordable | import("../types").Recordable[], rowKey?: string | number | string[] | number[]) => void;
1426
1426
  insertTableDataRecord: (record: import("../types").Recordable | import("../types").Recordable[], index?: number) => import("../types").Recordable[] | undefined;
1427
1427
  updateTableDataRecord: (rowKey: string | number, record: import("../types").Recordable) => import("../types").Recordable | undefined;
1428
1428
  updateTableData: (index: number, key: string, value: any) => Promise<import("../types").Recordable>;
@@ -2226,7 +2226,7 @@ export declare const VftTable: import("vft/es/utils").SFCWithInstall<{
2226
2226
  emit: (event: "change" | "zoom" | "copy" | "cut" | "keydown" | "paste" | "scroll" | "update:page-size" | "current-change" | "register" | "fetch-success" | "update:data" | "keydown-start" | "keydown-end" | "current-row-change" | "current-row-disabled" | "current-column-change" | "current-column-disabled" | "radio-change" | "checkbox-change" | "checkbox-all" | "checkbox-range-start" | "checkbox-range-change" | "checkbox-range-end" | "checkbox-range-select" | "cell-click" | "cell-dblclick" | "cell-menu" | "cell-mouseenter" | "cell-mouseleave" | "cell-selected" | "cell-delete-value" | "cell-backspace-value" | "header-cell-click" | "header-cell-dblclick" | "header-cell-menu" | "footer-cell-click" | "footer-cell-dblclick" | "footer-cell-menu" | "clear-merge" | "sort-change" | "clear-sort" | "clear-all-sort" | "filter-change" | "filter-visible" | "clear-filter" | "clear-all-filter" | "resizable-change" | "column-resizable-change" | "row-resizable-change" | "toggle-row-group-expand" | "toggle-row-expand" | "toggle-tree-expand" | "menu-click" | "edit-closed" | "row-dragstart" | "row-dragover" | "row-dragend" | "column-dragstart" | "column-dragover" | "column-dragend" | "enter-append-row" | "edit-actived" | "edit-activated" | "edit-disabled" | "valid-error" | "scroll-boundary" | "custom" | "custom-visible-change" | "custom-visible-all" | "custom-fixed-change" | "change-fnr" | "open-fnr" | "show-fnr" | "hide-fnr" | "fnr-change" | "fnr-find" | "fnr-find-all" | "fnr-replace" | "fnr-replace-all" | "cell-area-copy" | "cell-area-cut" | "cell-area-paste" | "cell-area-merge" | "clear-cell-area-selection" | "clear-cell-area-merge" | "header-cell-area-selection" | "cell-area-selection-invalid" | "cell-area-selection-start" | "cell-area-selection-drag" | "cell-area-selection-end" | "cell-area-extension-start" | "cell-area-extension-drag" | "cell-area-extension-end" | "cell-area-selection-all-start" | "cell-area-selection-all-end" | "cell-area-arrows-start" | "cell-area-arrows-end" | "active-cell-change-start" | "active-cell-change-end" | "form-submit" | "form-reset" | "update:page-num" | "page-change" | "form-submit-invalid" | "form-collapse" | "form-toggle-collapse" | "proxy-query" | "proxy-delete" | "proxy-save" | "toolbar-button-click" | "toolbar-tool-click", ...args: any[]) => void;
2227
2227
  setProps: (props: Partial<import("./types").TableProps>) => void;
2228
2228
  reload: (opt?: any) => Promise<import("../types").Recordable[] | undefined>;
2229
- deleteTableDataRecord: (row: any, rowKey: any) => void;
2229
+ deleteTableDataRecord: (row: import("../types").Recordable | import("../types").Recordable[], rowKey?: string | number | string[] | number[]) => void;
2230
2230
  insertTableDataRecord: (record: import("../types").Recordable | import("../types").Recordable[], index?: number) => import("../types").Recordable[] | undefined;
2231
2231
  updateTableDataRecord: (rowKey: string | number, record: import("../types").Recordable) => import("../types").Recordable | undefined;
2232
2232
  updateTableData: (index: number, key: string, value: any) => Promise<import("../types").Recordable>;
@@ -14,7 +14,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
14
14
  emit: (event: "change" | "zoom" | "copy" | "cut" | "keydown" | "paste" | "scroll" | "update:page-size" | "current-change" | "register" | "fetch-success" | "update:data" | "keydown-start" | "keydown-end" | "current-row-change" | "current-row-disabled" | "current-column-change" | "current-column-disabled" | "radio-change" | "checkbox-change" | "checkbox-all" | "checkbox-range-start" | "checkbox-range-change" | "checkbox-range-end" | "checkbox-range-select" | "cell-click" | "cell-dblclick" | "cell-menu" | "cell-mouseenter" | "cell-mouseleave" | "cell-selected" | "cell-delete-value" | "cell-backspace-value" | "header-cell-click" | "header-cell-dblclick" | "header-cell-menu" | "footer-cell-click" | "footer-cell-dblclick" | "footer-cell-menu" | "clear-merge" | "sort-change" | "clear-sort" | "clear-all-sort" | "filter-change" | "filter-visible" | "clear-filter" | "clear-all-filter" | "resizable-change" | "column-resizable-change" | "row-resizable-change" | "toggle-row-group-expand" | "toggle-row-expand" | "toggle-tree-expand" | "menu-click" | "edit-closed" | "row-dragstart" | "row-dragover" | "row-dragend" | "column-dragstart" | "column-dragover" | "column-dragend" | "enter-append-row" | "edit-actived" | "edit-activated" | "edit-disabled" | "valid-error" | "scroll-boundary" | "custom" | "custom-visible-change" | "custom-visible-all" | "custom-fixed-change" | "change-fnr" | "open-fnr" | "show-fnr" | "hide-fnr" | "fnr-change" | "fnr-find" | "fnr-find-all" | "fnr-replace" | "fnr-replace-all" | "cell-area-copy" | "cell-area-cut" | "cell-area-paste" | "cell-area-merge" | "clear-cell-area-selection" | "clear-cell-area-merge" | "header-cell-area-selection" | "cell-area-selection-invalid" | "cell-area-selection-start" | "cell-area-selection-drag" | "cell-area-selection-end" | "cell-area-extension-start" | "cell-area-extension-drag" | "cell-area-extension-end" | "cell-area-selection-all-start" | "cell-area-selection-all-end" | "cell-area-arrows-start" | "cell-area-arrows-end" | "active-cell-change-start" | "active-cell-change-end" | "form-submit" | "form-reset" | "update:page-num" | "page-change" | "form-submit-invalid" | "form-collapse" | "form-toggle-collapse" | "proxy-query" | "proxy-delete" | "proxy-save" | "toolbar-button-click" | "toolbar-tool-click", ...args: any[]) => void;
15
15
  setProps: typeof setProps;
16
16
  reload: (opt?: any) => Promise<import("../types").Recordable[] | undefined>;
17
- deleteTableDataRecord: (row: any, rowKey: any) => void;
17
+ deleteTableDataRecord: (row: import("../types").Recordable | import("../types").Recordable[], rowKey?: string | number | string[] | number[]) => void;
18
18
  insertTableDataRecord: (record: import("../types").Recordable | import("../types").Recordable[], index?: number) => import("../types").Recordable[] | undefined;
19
19
  updateTableDataRecord: (rowKey: string | number, record: import("../types").Recordable) => import("../types").Recordable | undefined;
20
20
  updateTableData: (index: number, key: string, value: any) => Promise<import("../types").Recordable>;
@@ -105,8 +105,8 @@ export interface TableActionType {
105
105
  setPagination: (info: Partial<PaginationProps>) => void;
106
106
  /** 更新指定行的数据记录 */
107
107
  updateTableDataRecord: (rowKey: string | number, record: Recordable) => Recordable | void;
108
- /** 删除指定的数据记录,支持单个或多个 rowKey */
109
- deleteTableDataRecord: (row: Recordable, rowKey?: string | number | string[] | number[]) => void;
108
+ /** 删除指定的数据记录,支持单个或多个记录 */
109
+ deleteTableDataRecord: (row: Recordable | Recordable[], rowKey?: string | number | string[] | number[]) => void;
110
110
  /** 插入新的数据记录,可指定插入位置 */
111
111
  insertTableDataRecord: (record: Recordable | Recordable[], index?: number) => Recordable[] | void;
112
112
  /** 根据 rowKey 查找指定的数据记录 */
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../pagination/index.cjs");const i=require("@vft/utils"),T=require("lodash-es"),t=require("vue"),J=require("../constants.cjs");function K(s,{tableData:_,setLoading:O,getPaginationInfo:j,setPagination:o},q){const r=t.ref([]),P=t.ref({});t.watchEffect(()=>{_.value=t.unref(r)}),t.watch(()=>t.unref(s).data,()=>{const{data:e,api:a}=t.unref(s);!a&&e&&(r.value=e)},{immediate:!0});function p(e){o(e),h({})}const R=t.computed(()=>{const e=t.unref(r);return!e||e.length===0,t.unref(r)});async function h(e){const{api:a,fetchSetting:n={},beforeFetch:u,afterFetch:l,pagination:m,delEmptyParams:f,transformParams:V,extraParams:v}=t.unref(s);if(!(!a||!i.isFunction(a)))try{O(!0);const{pageField:w,sizeField:Z,listField:G,totalField:H}=Object.assign({},{pageField:"page",sizeField:"pageSize",listField:"items",totalField:"total"},n);let S={},c=e;const{currentPage:A=1,pageSize:E=J.PageSize}=t.unref(j);if(V){if(i.isBoolean(m)&&!m)S={};else{const g=e&&e.page||A;S[w]=m?.pageIsZero?g-1:g,S[Z]=E}if(c=T.merge(e,S),u&&i.isFunction(u)){const g=await u(c);c={...c,...g}}f&&i.delObjAttrNotExist(c,i.isString(f)?f==="strict":!1)}c&&!i.isEmptyObject(c)&&!i.isNullOrUndefined(v)?i.isObject(c)&&i.isObject(v)&&(c=Object.assign({},c,v)):i.isNullOrUndefined(v)||(c=v);const b=await a(c),N=Array.isArray(b);let d=N?b:T.get(b,G);const F=N?b.length:T.get(b,H);if(Number(F)){const g=Math.ceil(F/E);if(A>g)return o({currentPage:g}),await h(e)}return l&&i.isFunction(l)&&(d=await l(d)||d),r.value=d,P.value=d,o({total:F||0}),e&&e.page&&o({currentPage:e.page||1}),q("fetch-success",{items:t.unref(d),total:F}),d}catch(w){console.log(w),q("fetch-error",w),r.value=[],o({total:0})}finally{t.nextTick(()=>{O(!1)})}}function y(){return P.value}async function k(e){return o({currentPage:e?.page||1}),await h(e)}function x(e){if(!r.value||r.value.length===0)return;const{rowkey:a}=t.unref(s);return(u=>{let l;return u.some(function(f){if(Reflect.has(f,a)&&f[a]===e)return l=f,!0}),l})(r.value)}async function C(e,a,n){return r.value[e]&&(r.value[e][a]=n),r.value[e]}function M(e,a){const n=x(e);if(n){for(const u in n)Reflect.has(a,u)&&(n[u]=a[u]);return n}}function I(e,a=0){const n=i.isPlainObject(e)?[e]:e;return r.value.splice(a,0,...n),t.unref(r)}function U(e,a){if(!r.value||r.value.length===0)return;const{rowkey:n}=t.unref(s),u=r.value.findIndex(m=>m[a||n]===e[a||n]);r.value.splice(u,1);const{total:l}=t.unref(j);i.isNumber(l)&&o({total:l-1})}function D(e){r.value=e}function B(){return R.value}function L(e){const a=String(e).trim().toLowerCase();if(a){const n=y?.()?.filter(u=>{for(const l in u)if(String(u[l]).trim().toLowerCase()?.includes(a))return!0});D(n)}else D(y())}const z=t.ref(!0);return t.onMounted(()=>{t.unref(s).immediate&&h(),z.value=!1}),t.watch(()=>t.unref(s).api,()=>{t.unref(s).watchApiFetch&&!z.value&&t.unref(s).immediate&&h()}),{setTableData:D,updateTableData:C,updateTableDataRecord:M,insertTableDataRecord:I,deleteTableDataRecord:U,reload:k,handleTableChange:p,getDataSourceRef:R,getDataSource:B,getRawDataSource:y,tableSearch:L}}exports.useDataSource=K;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../pagination/index.cjs");const c=require("@vft/utils"),j=require("lodash-es"),a=require("vue"),J=require("../constants.cjs");function Q(o,{tableData:_,setLoading:p,getPaginationInfo:q,setPagination:m},E){const r=a.ref([]),P=a.ref({});a.watchEffect(()=>{_.value=a.unref(r)}),a.watch(()=>a.unref(o).data,()=>{const{data:e,api:t}=a.unref(o);!t&&e&&(r.value=e)},{immediate:!0});function M(e){m(e),b({})}const R=a.computed(()=>{const e=a.unref(r);return!e||e.length===0,a.unref(r)});async function b(e){const{api:t,fetchSetting:u={},beforeFetch:i,afterFetch:s,pagination:f,delEmptyParams:d,transformParams:y,extraParams:g}=a.unref(o);if(!(!t||!c.isFunction(t)))try{p(!0);const{pageField:n,sizeField:S,listField:O,totalField:H}=Object.assign({},{pageField:"page",sizeField:"pageSize",listField:"items",totalField:"total"},u);let D={},l=e;const{currentPage:z=1,pageSize:N=J.PageSize}=a.unref(q);if(y){if(c.isBoolean(f)&&!f)D={};else{const v=e&&e.page||z;D[n]=f?.pageIsZero?v-1:v,D[S]=N}if(l=j.merge(e,D),i&&c.isFunction(i)){const v=await i(l);l={...l,...v}}d&&c.delObjAttrNotExist(l,c.isString(d)?d==="strict":!1)}l&&!c.isEmptyObject(l)&&!c.isNullOrUndefined(g)?c.isObject(l)&&c.isObject(g)&&(l=Object.assign({},l,g)):c.isNullOrUndefined(g)||(l=g);const F=await t(l),C=Array.isArray(F);let h=C?F:j.get(F,O);const T=C?F.length:j.get(F,H);if(Number(T)){const v=Math.ceil(T/N);if(z>v)return m({currentPage:v}),await b(e)}return s&&c.isFunction(s)&&(h=await s(h)||h),r.value=h,P.value=h,m({total:T||0}),e&&e.page&&m({currentPage:e.page||1}),E("fetch-success",{items:a.unref(h),total:T}),h}catch(n){console.log(n),E("fetch-error",n),r.value=[],m({total:0})}finally{a.nextTick(()=>{p(!1)})}}function w(){return P.value}async function U(e){return m({currentPage:e?.page||1}),await b(e)}function x(e){if(!r.value||r.value.length===0)return;const{rowkey:t}=a.unref(o);return(i=>{let s;return i.some(function(d){if(Reflect.has(d,t)&&d[t]===e)return s=d,!0}),s})(r.value)}async function B(e,t,u){return r.value[e]&&(r.value[e][t]=u),r.value[e]}function I(e,t){const u=x(e);if(u){for(const i in u)Reflect.has(t,i)&&(u[i]=t[i]);return u}}function L(e,t=0){const u=c.isPlainObject(e)?[e]:e;return r.value.splice(t,0,...u),a.unref(r)}function V(e,t){if(!r.value||r.value.length===0)return;const{rowkey:u}=a.unref(o),i=u,s=Array.isArray(e)?e:[e];let f=[];if(t!==void 0)if(Array.isArray(t))f=t;else{const n=t;f=s.map(S=>S[n])}else f=s.map(n=>n[i]);const d=t!==void 0&&!Array.isArray(t)?t:i,y=[];for(let n=r.value.length-1;n>=0;n--){const O=r.value[n][d];f.includes(O)&&y.push(n)}const g=y.length;if(y.forEach(n=>{r.value.splice(n,1)}),g>0){const{total:n}=a.unref(q);c.isNumber(n)&&m({total:n-g})}}function A(e){r.value=e}function Z(){return R.value}function G(e){const t=String(e).trim().toLowerCase();if(t){const u=w?.()?.filter(i=>{for(const s in i)if(String(i[s]).trim().toLowerCase()?.includes(t))return!0});A(u)}else A(w())}const k=a.ref(!0);return a.onMounted(()=>{a.unref(o).immediate&&b(),k.value=!1}),a.watch(()=>a.unref(o).api,()=>{a.unref(o).watchApiFetch&&!k.value&&a.unref(o).immediate&&b()}),{setTableData:A,updateTableData:B,updateTableDataRecord:I,insertTableDataRecord:L,deleteTableDataRecord:V,reload:U,handleTableChange:M,getDataSourceRef:R,getDataSource:Z,getRawDataSource:w,tableSearch:G}}exports.useDataSource=Q;
@@ -12,7 +12,7 @@ export declare function useDataSource(propsRef: ComputedRef<TableProps>, { table
12
12
  updateTableData: (index: number, key: string, value: any) => Promise<Recordable>;
13
13
  updateTableDataRecord: (rowKey: string | number, record: Recordable) => Recordable | undefined;
14
14
  insertTableDataRecord: (record: Recordable | Recordable[], index?: number) => Recordable[] | undefined;
15
- deleteTableDataRecord: (row: any, rowKey: any) => void;
15
+ deleteTableDataRecord: (row: Recordable | Recordable[], rowKey?: string | number | string[] | number[]) => void;
16
16
  reload: (opt?: any) => Promise<Recordable[] | undefined>;
17
17
  handleTableChange: (pagination: PaginationProps) => void;
18
18
  getDataSourceRef: ComputedRef<Recordable[]>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");function a(t){const n=e.ref(e.unref(t).loading);e.watch(()=>e.unref(t).loading,o=>{n.value=o});const u=e.computed(()=>e.unref(n));function i(o){n.value=o}return{getLoading:u,setLoading:i}}exports.useLoading=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),g=require("@vft/use");function s(t){const o=e.ref(e.unref(t).loading),{loading:i,start:a,cancel:u}=g.useLoadingDelay(230);e.watch([()=>e.unref(t).loading,i],([n,c])=>{o.value=n||c},{immediate:!0});const d=e.computed(()=>e.unref(o));function r(n){n?a():u()}return{getLoading:d,setLoading:r}}exports.useLoading=s;
@@ -97,6 +97,7 @@ export declare const VftTree: SFCWithInstall<{
97
97
  };
98
98
  }>> & Readonly<{
99
99
  "onCurrent-change"?: (() => any) | undefined;
100
+ onCheck?: (() => any) | undefined;
100
101
  "onNode-drag-start"?: (() => any) | undefined;
101
102
  "onNode-drag-leave"?: (() => any) | undefined;
102
103
  "onNode-drag-enter"?: (() => any) | undefined;
@@ -108,7 +109,6 @@ export declare const VftTree: SFCWithInstall<{
108
109
  "onNode-click"?: (() => any) | undefined;
109
110
  "onNode-contextmenu"?: (() => any) | undefined;
110
111
  "onNode-collapse"?: (() => any) | undefined;
111
- onCheck?: (() => any) | undefined;
112
112
  }>, {
113
113
  filter: (value: any) => void;
114
114
  getNodeKey: (node: import("./model/node").default) => any;
@@ -134,6 +134,7 @@ export declare const VftTree: SFCWithInstall<{
134
134
  updateNode: (data: import("./tree.type").TreeData, refNode: import("./tree.type").TreeKey | import("./tree.type").TreeNodeData | import("./model/node").default) => void;
135
135
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
136
136
  "current-change": () => void;
137
+ check: () => void;
137
138
  "node-drag-start": () => void;
138
139
  "node-drag-leave": () => void;
139
140
  "node-drag-enter": () => void;
@@ -145,7 +146,6 @@ export declare const VftTree: SFCWithInstall<{
145
146
  "node-click": () => void;
146
147
  "node-contextmenu": () => void;
147
148
  "node-collapse": () => void;
148
- check: () => void;
149
149
  }, import("vue").PublicProps, {
150
150
  data: Array<any>;
151
151
  props: import("./tree.type").TreeComponentProps["props"];
@@ -251,6 +251,7 @@ export declare const VftTree: SFCWithInstall<{
251
251
  };
252
252
  }>> & Readonly<{
253
253
  "onCurrent-change"?: (() => any) | undefined;
254
+ onCheck?: (() => any) | undefined;
254
255
  "onNode-drag-start"?: (() => any) | undefined;
255
256
  "onNode-drag-leave"?: (() => any) | undefined;
256
257
  "onNode-drag-enter"?: (() => any) | undefined;
@@ -262,7 +263,6 @@ export declare const VftTree: SFCWithInstall<{
262
263
  "onNode-click"?: (() => any) | undefined;
263
264
  "onNode-contextmenu"?: (() => any) | undefined;
264
265
  "onNode-collapse"?: (() => any) | undefined;
265
- onCheck?: (() => any) | undefined;
266
266
  }>, {
267
267
  filter: (value: any) => void;
268
268
  getNodeKey: (node: import("./model/node").default) => any;
@@ -388,6 +388,7 @@ export declare const VftTree: SFCWithInstall<{
388
388
  };
389
389
  }>> & Readonly<{
390
390
  "onCurrent-change"?: (() => any) | undefined;
391
+ onCheck?: (() => any) | undefined;
391
392
  "onNode-drag-start"?: (() => any) | undefined;
392
393
  "onNode-drag-leave"?: (() => any) | undefined;
393
394
  "onNode-drag-enter"?: (() => any) | undefined;
@@ -399,7 +400,6 @@ export declare const VftTree: SFCWithInstall<{
399
400
  "onNode-click"?: (() => any) | undefined;
400
401
  "onNode-contextmenu"?: (() => any) | undefined;
401
402
  "onNode-collapse"?: (() => any) | undefined;
402
- onCheck?: (() => any) | undefined;
403
403
  }>, {
404
404
  filter: (value: any) => void;
405
405
  getNodeKey: (node: import("./model/node").default) => any;
@@ -425,6 +425,7 @@ export declare const VftTree: SFCWithInstall<{
425
425
  updateNode: (data: import("./tree.type").TreeData, refNode: import("./tree.type").TreeKey | import("./tree.type").TreeNodeData | import("./model/node").default) => void;
426
426
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
427
427
  "current-change": () => void;
428
+ check: () => void;
428
429
  "node-drag-start": () => void;
429
430
  "node-drag-leave": () => void;
430
431
  "node-drag-enter": () => void;
@@ -436,7 +437,6 @@ export declare const VftTree: SFCWithInstall<{
436
437
  "node-click": () => void;
437
438
  "node-contextmenu": () => void;
438
439
  "node-collapse": () => void;
439
- check: () => void;
440
440
  }, string, {
441
441
  data: Array<any>;
442
442
  props: import("./tree.type").TreeComponentProps["props"];
@@ -69,6 +69,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
69
69
  updateNode: (data: TreeData, refNode: TreeKey | TreeNodeData | Node) => void;
70
70
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
71
71
  "current-change": () => void;
72
+ check: () => void;
72
73
  "node-drag-start": () => void;
73
74
  "node-drag-leave": () => void;
74
75
  "node-drag-enter": () => void;
@@ -80,7 +81,6 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
80
81
  "node-click": () => void;
81
82
  "node-contextmenu": () => void;
82
83
  "node-collapse": () => void;
83
- check: () => void;
84
84
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<TreeProps>, {
85
85
  renderAfterExpand: boolean;
86
86
  expandOnClickNode: boolean;
@@ -94,6 +94,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
94
94
  indent: number;
95
95
  }>>> & Readonly<{
96
96
  "onCurrent-change"?: (() => any) | undefined;
97
+ onCheck?: (() => any) | undefined;
97
98
  "onNode-drag-start"?: (() => any) | undefined;
98
99
  "onNode-drag-leave"?: (() => any) | undefined;
99
100
  "onNode-drag-enter"?: (() => any) | undefined;
@@ -105,7 +106,6 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
105
106
  "onNode-click"?: (() => any) | undefined;
106
107
  "onNode-contextmenu"?: (() => any) | undefined;
107
108
  "onNode-collapse"?: (() => any) | undefined;
108
- onCheck?: (() => any) | undefined;
109
109
  }>, {
110
110
  data: Array<any>;
111
111
  props: TreeComponentProps["props"];