skyline-vue-admin 0.0.15 → 0.0.17

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 (75) hide show
  1. package/dist/components/auto-complete-array-input/index.cjs +1 -1
  2. package/dist/components/auto-complete-array-input/index.cjs.map +1 -1
  3. package/dist/components/auto-complete-array-input/index.mjs +25 -22
  4. package/dist/components/auto-complete-array-input/index.mjs.map +1 -1
  5. package/dist/components/avatar-input/index.cjs +1 -1
  6. package/dist/components/avatar-input/index.cjs.map +1 -1
  7. package/dist/components/avatar-input/index.d.ts +0 -4
  8. package/dist/components/avatar-input/index.mjs +72 -104
  9. package/dist/components/avatar-input/index.mjs.map +1 -1
  10. package/dist/components/can-access/index.cjs +1 -1
  11. package/dist/components/can-access/index.mjs +1 -1
  12. package/dist/components/create/index.cjs +1 -1
  13. package/dist/components/create/index.mjs +4 -4
  14. package/dist/components/data-table/index.cjs +1 -1
  15. package/dist/components/data-table/index.mjs +4 -4
  16. package/dist/components/data-table-col/index.cjs +1 -1
  17. package/dist/components/data-table-col/index.cjs.map +1 -1
  18. package/dist/components/data-table-col/index.mjs +5 -4
  19. package/dist/components/data-table-col/index.mjs.map +1 -1
  20. package/dist/components/edit/index.cjs +1 -1
  21. package/dist/components/edit/index.mjs +1 -1
  22. package/dist/components/file-multiple-input/index.cjs +1 -1
  23. package/dist/components/file-multiple-input/index.cjs.map +1 -1
  24. package/dist/components/file-multiple-input/index.d.ts +2 -8
  25. package/dist/components/file-multiple-input/index.mjs +38 -146
  26. package/dist/components/file-multiple-input/index.mjs.map +1 -1
  27. package/dist/components/file-multiple-model-input/index.cjs +2 -0
  28. package/dist/components/file-multiple-model-input/index.cjs.map +1 -0
  29. package/dist/components/file-multiple-model-input/index.d.ts +72 -0
  30. package/dist/components/file-multiple-model-input/index.mjs +154 -0
  31. package/dist/components/file-multiple-model-input/index.mjs.map +1 -0
  32. package/dist/components/filter/index.cjs +1 -1
  33. package/dist/components/filter/index.mjs +6 -6
  34. package/dist/components/image-field/index.cjs +1 -1
  35. package/dist/components/image-field/index.cjs.map +1 -1
  36. package/dist/components/image-field/index.mjs +3 -2
  37. package/dist/components/image-field/index.mjs.map +1 -1
  38. package/dist/components/link-field/index.cjs +1 -1
  39. package/dist/components/link-field/index.cjs.map +1 -1
  40. package/dist/components/link-field/index.mjs +3 -2
  41. package/dist/components/link-field/index.mjs.map +1 -1
  42. package/dist/components/radio-button-group-input/index.cjs +1 -1
  43. package/dist/components/radio-button-group-input/index.cjs.map +1 -1
  44. package/dist/components/radio-button-group-input/index.mjs +3 -2
  45. package/dist/components/radio-button-group-input/index.mjs.map +1 -1
  46. package/dist/components/reference-field/index.cjs +1 -1
  47. package/dist/components/reference-field/index.mjs +1 -1
  48. package/dist/components/show-simple-layout/index.cjs +1 -1
  49. package/dist/components/show-simple-layout/index.cjs.map +1 -1
  50. package/dist/components/show-simple-layout/index.mjs +4 -2
  51. package/dist/components/show-simple-layout/index.mjs.map +1 -1
  52. package/dist/components/simple-form/index.cjs +1 -1
  53. package/dist/components/simple-form/index.cjs.map +1 -1
  54. package/dist/components/simple-form/index.mjs +3 -2
  55. package/dist/components/simple-form/index.mjs.map +1 -1
  56. package/dist/components/text-field/index.cjs +1 -1
  57. package/dist/components/text-field/index.cjs.map +1 -1
  58. package/dist/components/text-field/index.mjs +6 -4
  59. package/dist/components/text-field/index.mjs.map +1 -1
  60. package/dist/components/text-input/index.cjs +1 -1
  61. package/dist/components/text-input/index.cjs.map +1 -1
  62. package/dist/components/text-input/index.mjs +7 -6
  63. package/dist/components/text-input/index.mjs.map +1 -1
  64. package/dist/hooks/useUpload.cjs +1 -1
  65. package/dist/hooks/useUpload.cjs.map +1 -1
  66. package/dist/hooks/useUpload.d.ts +9 -3
  67. package/dist/hooks/useUpload.mjs +20 -5
  68. package/dist/hooks/useUpload.mjs.map +1 -1
  69. package/dist/layouts/default.cjs +1 -1
  70. package/dist/layouts/default.mjs +14 -14
  71. package/dist/provides/dataProvider.d.ts +2 -6
  72. package/dist/styles/components/file-multiple-input.css +1 -1
  73. package/dist/styles/components/file-multiple-model-input.css +1 -0
  74. package/dist/styles/index.css +1 -1
  75. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/button/style/css");require("element-plus/es/components/card/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");const k=require("../../hooks/useTab.cjs"),C=require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const N=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const T=require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const D=require("../../icons/EpDocumentAdd.cjs"),R=require("../../setup/index.cjs"),V=require("@vueuse/core"),l=require("element-plus"),P=require("vue-i18n"),d=require("vue-router"),_=require("../can-access/index.cjs");function h(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const j=e.defineComponent({name:"SkyCreate",inheritAttrs:!1,setup(t,{slots:m,attrs:q}){const{t:f}=P.useI18n(),o=d.useRoute(),v=d.useRouter(),{removeTab:p,lastTab:u}=k.useTab(),{formData:y,formRef:a}=N.useProvideForm(),s=T.useTreeWithDetails(),{removeKeepAlive:b}=C.useRouteKeepAlive(),i=o.meta;let n;const{isLoading:S,execute:A}=V.useAsyncState(async r=>(n=new AbortController,R.skyConfig.dataProvider?.create?.(o.meta.resource,{data:r,signal:n.signal})),void 0,{immediate:!1}),g=async()=>{if(!a.value||!await a.value.validate())return;const c=await A(0,{...y});c&&(s?.createSuccess?s.createSuccess(c):(i.keepAliveName&&b(i.keepAliveName),p(o.name),u.value&&v.replace({name:u.value.routeName,params:u.value.routeParams})))};return()=>e.createVNode("div",{class:"sky-create"},[e.createVNode(_.SkyCanAccess,{resource:i.resource,action:"create"},{default:()=>[e.createVNode(l.ElCard,q,{default:m.default,footer:()=>{let r;return e.createVNode("div",{class:"sky-create__footer"},[e.createVNode(l.ElButton,{type:"primary",icon:D.EpDocumentAdd,loading:S.value,onClick:g},h(r=f("button.submit"))?r:{default:()=>[r]})])}})]})])}});exports.SkyCreate=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/button/style/css");require("element-plus/es/components/card/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");const k=require("../../hooks/useTab.cjs"),C=require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const N=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const T=require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const D=require("../../setup/index.cjs"),R=require("../../icons/EpDocumentAdd.cjs"),V=require("@vueuse/core"),l=require("element-plus"),P=require("vue-i18n"),d=require("vue-router"),_=require("../can-access/index.cjs");function h(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const j=e.defineComponent({name:"SkyCreate",inheritAttrs:!1,setup(t,{slots:m,attrs:q}){const{t:f}=P.useI18n(),o=d.useRoute(),v=d.useRouter(),{removeTab:p,lastTab:u}=k.useTab(),{formData:y,formRef:a}=N.useProvideForm(),s=T.useTreeWithDetails(),{removeKeepAlive:b}=C.useRouteKeepAlive(),i=o.meta;let n;const{isLoading:S,execute:A}=V.useAsyncState(async r=>(n=new AbortController,D.skyConfig.dataProvider?.create?.(o.meta.resource,{data:r,signal:n.signal})),void 0,{immediate:!1}),g=async()=>{if(!a.value||!await a.value.validate())return;const c=await A(0,{...y});c&&(s?.createSuccess?s.createSuccess(c):(i.keepAliveName&&b(i.keepAliveName),p(o.name),u.value&&v.replace({name:u.value.routeName,params:u.value.routeParams})))};return()=>e.createVNode("div",{class:"sky-create"},[e.createVNode(_.SkyCanAccess,{resource:i.resource,action:"create"},{default:()=>[e.createVNode(l.ElCard,q,{default:m.default,footer:()=>{let r;return e.createVNode("div",{class:"sky-create__footer"},[e.createVNode(l.ElButton,{type:"primary",icon:R.EpDocumentAdd,loading:S.value,onClick:g},h(r=f("button.submit"))?r:{default:()=>[r]})])}})]})])}});exports.SkyCreate=j;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -17,8 +17,8 @@ import "../../hooks/useReferenceArrayField.mjs";
17
17
  import { useTreeWithDetails as D } from "../../hooks/useTreeWithDetails.mjs";
18
18
  import "../../hooks/useFormGrid.mjs";
19
19
  import "../../hooks/useReferenceArrayInput.mjs";
20
- import { EpDocumentAdd as R } from "../../icons/EpDocumentAdd.mjs";
21
- import { skyConfig as T } from "../../setup/index.mjs";
20
+ import { skyConfig as R } from "../../setup/index.mjs";
21
+ import { EpDocumentAdd as T } from "../../icons/EpDocumentAdd.mjs";
22
22
  import { useAsyncState as h } from "@vueuse/core";
23
23
  import { ElCard as j, ElButton as w } from "element-plus";
24
24
  import { useI18n as E } from "vue-i18n";
@@ -49,7 +49,7 @@ const ne = /* @__PURE__ */ A({
49
49
  const {
50
50
  isLoading: b,
51
51
  execute: S
52
- } = h(async (e) => (n = new AbortController(), T.dataProvider?.create?.(r.meta.resource, {
52
+ } = h(async (e) => (n = new AbortController(), R.dataProvider?.create?.(r.meta.resource, {
53
53
  data: e,
54
54
  signal: n.signal
55
55
  })), void 0, {
@@ -79,7 +79,7 @@ const ne = /* @__PURE__ */ A({
79
79
  class: "sky-create__footer"
80
80
  }, [t(w, {
81
81
  type: "primary",
82
- icon: R,
82
+ icon: T,
83
83
  loading: b.value,
84
84
  onClick: k
85
85
  }, L(e = l("button.submit")) ? e : {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/alert/style/css");require("element-plus/es/components/button/style/css");require("element-plus/es/components/popconfirm/style/css");require("element-plus/es/components/skeleton/style/css");require("element-plus/es/components/table/style/css");require("element-plus/es/components/table-column/style/css");require("element-plus/es/components/text/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");const V=require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const E=require("../../icons/EpDelete.cjs"),T=require("../../setup/index.cjs"),k=require("@vueuse/core"),r=require("element-plus"),C=require("vue-i18n"),x=require("vue-router"),D=require("../can-access/index.cjs");function R(a){return typeof a=="function"||Object.prototype.toString.call(a)==="[object Object]"&&!e.isVNode(a)}const h=e.defineComponent({name:"SkyDataTable",inheritAttrs:!1,props:{id:{type:String,default:"id"}},setup(a,{slots:d,attrs:q}){const{t:o}=C.useI18n(),i=x.useRoute(),{getList:f,listLoading:m,listData:p}=V.useList(),y=i.meta,b=e.useTemplateRef("tableRef"),l=e.shallowRef([]),u=t=>{l.value=t},s=()=>{l.value=[],b.value?.clearSelection()},g=async()=>{await S(),await f(),s()};let c;const{isLoading:v,execute:S}=k.useAsyncState(async()=>{if(l.value.map(n=>String(n[a.id])).length)return c=new AbortController,T.skyConfig.dataProvider?.deleteMany?.(i.meta.resource,{ids:l.value.map(n=>String(n[a.id])),signal:c.signal})},void 0,{immediate:!1}),N=e.computed(()=>!!(v.value||m.value));return()=>e.createVNode(r.ElSkeleton,{loading:N.value,animated:!0},{default:()=>[e.createVNode("div",{class:"sky-data-table"},[e.createVNode(D.SkyCanAccess,{resource:y.resource,action:"delete"},{default:()=>[l.value.length>0&&e.createVNode(r.ElAlert,{class:"sky-data-table__alert",type:"primary",onClose:s},{default:()=>[e.createVNode(r.ElText,{type:"primary"},{default:()=>[l.value.length,e.createTextVNode(" "),o("selectedItems")]}),e.createVNode(r.ElPopconfirm,{title:o("popconfirm.remove"),onConfirm:g},{reference:()=>{let t;return e.createVNode(r.ElButton,{text:!0,type:"danger",icon:E.EpDelete},R(t=o("button.remove"))?t:{default:()=>[t]})}})]})]}),e.createVNode(r.ElTable,e.mergeProps({ref:"tableRef",class:"sky-data-table__main",data:p.value?.data,border:!0,onSelect:t=>u(t),"onSelect-all":t=>u(t)},q),{default:()=>[e.createVNode(r.ElTableColumn,{type:"selection"},null),e.createVNode(r.ElTableColumn,{type:"index",label:"#",width:"50"},null),d.default?.()]})])]})}});exports.SkyDataTable=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/alert/style/css");require("element-plus/es/components/button/style/css");require("element-plus/es/components/popconfirm/style/css");require("element-plus/es/components/skeleton/style/css");require("element-plus/es/components/table/style/css");require("element-plus/es/components/table-column/style/css");require("element-plus/es/components/text/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");const V=require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const E=require("../../setup/index.cjs"),T=require("../../icons/EpDelete.cjs"),k=require("@vueuse/core"),r=require("element-plus"),C=require("vue-i18n"),x=require("vue-router"),D=require("../can-access/index.cjs");function R(a){return typeof a=="function"||Object.prototype.toString.call(a)==="[object Object]"&&!e.isVNode(a)}const h=e.defineComponent({name:"SkyDataTable",inheritAttrs:!1,props:{id:{type:String,default:"id"}},setup(a,{slots:d,attrs:q}){const{t:o}=C.useI18n(),i=x.useRoute(),{getList:f,listLoading:m,listData:p}=V.useList(),y=i.meta,b=e.useTemplateRef("tableRef"),l=e.shallowRef([]),u=t=>{l.value=t},s=()=>{l.value=[],b.value?.clearSelection()},g=async()=>{await S(),await f(),s()};let c;const{isLoading:v,execute:S}=k.useAsyncState(async()=>{if(l.value.map(n=>String(n[a.id])).length)return c=new AbortController,E.skyConfig.dataProvider?.deleteMany?.(i.meta.resource,{ids:l.value.map(n=>String(n[a.id])),signal:c.signal})},void 0,{immediate:!1}),N=e.computed(()=>!!(v.value||m.value));return()=>e.createVNode(r.ElSkeleton,{loading:N.value,animated:!0},{default:()=>[e.createVNode("div",{class:"sky-data-table"},[e.createVNode(D.SkyCanAccess,{resource:y.resource,action:"delete"},{default:()=>[l.value.length>0&&e.createVNode(r.ElAlert,{class:"sky-data-table__alert",type:"primary",onClose:s},{default:()=>[e.createVNode(r.ElText,{type:"primary"},{default:()=>[l.value.length,e.createTextVNode(" "),o("selectedItems")]}),e.createVNode(r.ElPopconfirm,{title:o("popconfirm.remove"),onConfirm:g},{reference:()=>{let t;return e.createVNode(r.ElButton,{text:!0,type:"danger",icon:T.EpDelete},R(t=o("button.remove"))?t:{default:()=>[t]})}})]})]}),e.createVNode(r.ElTable,e.mergeProps({ref:"tableRef",class:"sky-data-table__main",data:p.value?.data,border:!0,onSelect:t=>u(t),"onSelect-all":t=>u(t)},q),{default:()=>[e.createVNode(r.ElTableColumn,{type:"selection"},null),e.createVNode(r.ElTableColumn,{type:"index",label:"#",width:"50"},null),d.default?.()]})])]})}});exports.SkyDataTable=h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -22,8 +22,8 @@ import "../../hooks/useReferenceArrayField.mjs";
22
22
  import "../../hooks/useTreeWithDetails.mjs";
23
23
  import "../../hooks/useFormGrid.mjs";
24
24
  import "../../hooks/useReferenceArrayInput.mjs";
25
- import { EpDelete as D } from "../../icons/EpDelete.mjs";
26
- import { skyConfig as L } from "../../setup/index.mjs";
25
+ import { skyConfig as D } from "../../setup/index.mjs";
26
+ import { EpDelete as L } from "../../icons/EpDelete.mjs";
27
27
  import { useAsyncState as j } from "@vueuse/core";
28
28
  import { ElSkeleton as I, ElAlert as N, ElText as P, ElPopconfirm as V, ElButton as B, ElTable as M, ElTableColumn as p } from "element-plus";
29
29
  import { useI18n as O } from "vue-i18n";
@@ -64,7 +64,7 @@ const ke = /* @__PURE__ */ E({
64
64
  execute: k
65
65
  } = j(async () => {
66
66
  if (r.value.map((l) => String(l[o.id])).length)
67
- return s = new AbortController(), L.dataProvider?.deleteMany?.(i.meta.resource, {
67
+ return s = new AbortController(), D.dataProvider?.deleteMany?.(i.meta.resource, {
68
68
  ids: r.value.map((l) => String(l[o.id])),
69
69
  signal: s.signal
70
70
  });
@@ -99,7 +99,7 @@ const ke = /* @__PURE__ */ E({
99
99
  return t(B, {
100
100
  text: !0,
101
101
  type: "danger",
102
- icon: D
102
+ icon: L
103
103
  }, F(e = a("button.remove")) ? e : {
104
104
  default: () => [e]
105
105
  });
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/table-column/style/css");const r=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");const q=require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const d=require("element-plus"),m=require("vue-router"),b=require("../can-access/index.cjs"),f=r.defineComponent({name:"SkyDataTableCol",inheritAttrs:!1,props:{source:String,label:String},setup(e,{slots:i,attrs:l}){const n=m.useRoute(),{addExportColumn:a}=q.useList(),u=i.default?.(),t=r.computed(()=>e.label||e.source||""),c=n.meta;return e.source&&a({[e.source]:t.value}),()=>r.createVNode(b.SkyCanAccess,{resource:c.resource,action:"list",column:e.source},{default:()=>[r.createVNode(d.ElTableColumn,r.mergeProps({prop:e.source,label:t.value},l),{default:o=>{if(u&&o.$index>-1)return u.map(s=>r.cloneVNode(s,{row:o.row}))}})]})}});exports.SkyDataTableCol=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/table-column/style/css");const r=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");const q=require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");require("vue-i18n");const d=require("element-plus"),m=require("vue-router"),b=require("../can-access/index.cjs"),f=r.defineComponent({name:"SkyDataTableCol",inheritAttrs:!1,props:{source:String,label:String},setup(e,{slots:i,attrs:l}){const n=m.useRoute(),{addExportColumn:a}=q.useList(),u=i.default?.(),t=r.computed(()=>e.label||e.source||""),c=n.meta;return e.source&&a({[e.source]:t.value}),()=>r.createVNode(b.SkyCanAccess,{resource:c.resource,action:"list",column:e.source},{default:()=>[r.createVNode(d.ElTableColumn,r.mergeProps({prop:e.source,label:t.value},l),{default:o=>{if(u&&o.$index>-1)return u.map(s=>r.cloneVNode(s,{row:o.row}))}})]})}});exports.SkyDataTableCol=f;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/data-table-col/index.tsx"],"sourcesContent":["import { useList } from '@/hooks'\r\nimport { ElTableColumn, type TableColumnCtx } from 'element-plus'\r\nimport { cloneVNode, computed, defineComponent, type Reactive } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface DateTableProps {\r\n source?: string\r\n label?: string\r\n}\r\n\r\nexport interface ElTableColumnScope {\r\n row: Reactive<Record<string, unknown>>\r\n column: TableColumnCtx\r\n $index: number\r\n}\r\n\r\nexport const SkyDataTableCol = defineComponent<DateTableProps>({\r\n name: 'SkyDataTableCol',\r\n inheritAttrs: false,\r\n props: {\r\n source: String,\r\n label: String,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const { addExportColumn } = useList()!\r\n const children = slots.default?.()\r\n const title = computed<string>(() => props.label || props.source || '')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n if (props.source) {\r\n addExportColumn({ [props.source]: title.value })\r\n }\r\n\r\n // h(vnode.type as Component, { key: i, scope, ...vnode.props }) 等效于 cloneVNode(vnode, { row... })\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"list\" column={props.source}>\r\n <ElTableColumn prop={props.source} label={title.value} {...attrs}>\r\n {(scope: ElTableColumnScope) => {\r\n if (children && scope.$index > -1) {\r\n return children.map((vnode) => cloneVNode(vnode, { row: scope['row'] }))\r\n }\r\n }}\r\n </ElTableColumn>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyDataTableCol","defineComponent","name","inheritAttrs","props","source","label","attrs","route","useRoute","addExportColumn","children","slots","title","computed","routeMeta","default"],"mappings":"63BAkBAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,kBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,OACAC,MAAAA,yBAEoBC,MAAAA,CAAM,EAAA,CAC1B,MAAAC,EAAAC,EAAAA,SAAA,GACQC,gBAAAA,eACRC,EAAAC,EAAA,UAAA,EACAC,EAAAC,EAAAA,SAAA,IAAAV,EAAA,OAAAA,EAAA,QAAA,EAAA,EACAW,EAAAP,EAAA,sBAEEE,EAAAA,CAAkB,CAAAN,EAAA,MAAA,EAAAS,EAAA,KAA4B,CAAA,wDAKJ,OAAA,OAAA,OAAAT,EAAA,MAAoC,EAAA,CAAAY,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,cAAAA,EAAAA,WAAAA,eAC3C,MAAAH,EAAA,KAAoB,EAAAN,CAAA,EAAA,wEAGsB,CAAA,CAAA,CAEzE,CAAC,CAAA,CAAA,GAIT,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/data-table-col/index.tsx"],"sourcesContent":["import { useList } from '@/hooks'\r\nimport { ElTableColumn, type TableColumnCtx } from 'element-plus'\r\nimport { cloneVNode, computed, defineComponent, type Reactive } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface DateTableProps {\r\n source?: string\r\n label?: string\r\n}\r\n\r\nexport interface ElTableColumnScope {\r\n row: Reactive<Record<string, unknown>>\r\n column: TableColumnCtx\r\n $index: number\r\n}\r\n\r\nexport const SkyDataTableCol = defineComponent<DateTableProps>({\r\n name: 'SkyDataTableCol',\r\n inheritAttrs: false,\r\n props: {\r\n source: String,\r\n label: String,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const { addExportColumn } = useList()!\r\n const children = slots.default?.()\r\n const title = computed<string>(() => props.label || props.source || '')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n if (props.source) {\r\n addExportColumn({ [props.source]: title.value })\r\n }\r\n\r\n // h(vnode.type as Component, { key: i, scope, ...vnode.props }) 等效于 cloneVNode(vnode, { row... })\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"list\" column={props.source}>\r\n <ElTableColumn prop={props.source} label={title.value} {...attrs}>\r\n {(scope: ElTableColumnScope) => {\r\n if (children && scope.$index > -1) {\r\n return children.map((vnode) => cloneVNode(vnode, { row: scope['row'] }))\r\n }\r\n }}\r\n </ElTableColumn>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyDataTableCol","defineComponent","name","inheritAttrs","props","source","label","attrs","route","useRoute","addExportColumn","children","slots","title","computed","routeMeta","default"],"mappings":"i5BAkBAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,kBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,OACAC,MAAAA,yBAEoBC,MAAAA,CAAM,EAAA,CAC1B,MAAAC,EAAAC,EAAAA,SAAA,GACQC,gBAAAA,eACRC,EAAAC,EAAA,UAAA,EACAC,EAAAC,EAAAA,SAAA,IAAAV,EAAA,OAAAA,EAAA,QAAA,EAAA,EACAW,EAAAP,EAAA,sBAEEE,EAAAA,CAAkB,CAAAN,EAAA,MAAA,EAAAS,EAAA,KAA4B,CAAA,wDAKJ,OAAA,OAAA,OAAAT,EAAA,MAAoC,EAAA,CAAAY,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,cAAAA,EAAAA,WAAAA,eAC3C,MAAAH,EAAA,KAAoB,EAAAN,CAAA,EAAA,wEAGsB,CAAA,CAAA,CAEzE,CAAC,CAAA,CAAA,GAIT,CACF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import "element-plus/es/components/table-column/style/css";
2
- import { defineComponent as p, computed as s, createVNode as m, mergeProps as f, cloneVNode as d } from "vue";
2
+ import { defineComponent as c, computed as s, createVNode as m, mergeProps as f, cloneVNode as d } from "vue";
3
3
  import "../../hooks/useUser.mjs";
4
4
  import "../../hooks/usePermission.mjs";
5
5
  import "../../hooks/useMenu.mjs";
@@ -16,10 +16,11 @@ import "../../hooks/useReferenceArrayField.mjs";
16
16
  import "../../hooks/useTreeWithDetails.mjs";
17
17
  import "../../hooks/useFormGrid.mjs";
18
18
  import "../../hooks/useReferenceArrayInput.mjs";
19
+ import "vue-i18n";
19
20
  import { ElTableColumn as C } from "element-plus";
20
21
  import { useRoute as S } from "vue-router";
21
22
  import { SkyCanAccess as g } from "../can-access/index.mjs";
22
- const F = /* @__PURE__ */ p({
23
+ const G = /* @__PURE__ */ c({
23
24
  name: "SkyDataTableCol",
24
25
  inheritAttrs: !1,
25
26
  props: {
@@ -46,7 +47,7 @@ const F = /* @__PURE__ */ p({
46
47
  }, l), {
47
48
  default: (e) => {
48
49
  if (t && e.$index > -1)
49
- return t.map((c) => d(c, {
50
+ return t.map((p) => d(p, {
50
51
  row: e.row
51
52
  }));
52
53
  }
@@ -55,6 +56,6 @@ const F = /* @__PURE__ */ p({
55
56
  }
56
57
  });
57
58
  export {
58
- F as SkyDataTableCol
59
+ G as SkyDataTableCol
59
60
  };
60
61
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/data-table-col/index.tsx"],"sourcesContent":["import { useList } from '@/hooks'\r\nimport { ElTableColumn, type TableColumnCtx } from 'element-plus'\r\nimport { cloneVNode, computed, defineComponent, type Reactive } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface DateTableProps {\r\n source?: string\r\n label?: string\r\n}\r\n\r\nexport interface ElTableColumnScope {\r\n row: Reactive<Record<string, unknown>>\r\n column: TableColumnCtx\r\n $index: number\r\n}\r\n\r\nexport const SkyDataTableCol = defineComponent<DateTableProps>({\r\n name: 'SkyDataTableCol',\r\n inheritAttrs: false,\r\n props: {\r\n source: String,\r\n label: String,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const { addExportColumn } = useList()!\r\n const children = slots.default?.()\r\n const title = computed<string>(() => props.label || props.source || '')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n if (props.source) {\r\n addExportColumn({ [props.source]: title.value })\r\n }\r\n\r\n // h(vnode.type as Component, { key: i, scope, ...vnode.props }) 等效于 cloneVNode(vnode, { row... })\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"list\" column={props.source}>\r\n <ElTableColumn prop={props.source} label={title.value} {...attrs}>\r\n {(scope: ElTableColumnScope) => {\r\n if (children && scope.$index > -1) {\r\n return children.map((vnode) => cloneVNode(vnode, { row: scope['row'] }))\r\n }\r\n }}\r\n </ElTableColumn>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyDataTableCol","defineComponent","name","inheritAttrs","props","source","label","attrs","route","useRoute","addExportColumn","children","slots","title","computed","routeMeta","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkBA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,IACAC,OAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;AAC1B,UAAAC,IAAAC,EAAA;MACQC,iBAAAA;AAAAA,aACRC,IAAAC,EAAA,UAAA,GACAC,IAAAC,EAAA,MAAAV,EAAA,SAAAA,EAAA,UAAA,EAAA,GACAW,IAAAP,EAAA;uBAEEE,EAAAA;AAAAA,MAAkB,CAAAN,EAAA,MAAA,GAAAS,EAAA;AAAA,IAA4B,CAAA;;MAKJ,QAAA;AAAA,MAAA,QAAAT,EAAA;AAAA,IAAoC,GAAA;AAAA,MAAAY,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;QAC3C,OAAAH,EAAA;AAAA,MAAoB,GAAAN,CAAA,GAAA;AAAA;;;;YAGsB,CAAA,CAAA;AAAA,QAEzE;AAAA,MAAC,CAAA,CAAA;AAAA;EAIT;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/data-table-col/index.tsx"],"sourcesContent":["import { useList } from '@/hooks'\r\nimport { ElTableColumn, type TableColumnCtx } from 'element-plus'\r\nimport { cloneVNode, computed, defineComponent, type Reactive } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface DateTableProps {\r\n source?: string\r\n label?: string\r\n}\r\n\r\nexport interface ElTableColumnScope {\r\n row: Reactive<Record<string, unknown>>\r\n column: TableColumnCtx\r\n $index: number\r\n}\r\n\r\nexport const SkyDataTableCol = defineComponent<DateTableProps>({\r\n name: 'SkyDataTableCol',\r\n inheritAttrs: false,\r\n props: {\r\n source: String,\r\n label: String,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const { addExportColumn } = useList()!\r\n const children = slots.default?.()\r\n const title = computed<string>(() => props.label || props.source || '')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n if (props.source) {\r\n addExportColumn({ [props.source]: title.value })\r\n }\r\n\r\n // h(vnode.type as Component, { key: i, scope, ...vnode.props }) 等效于 cloneVNode(vnode, { row... })\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"list\" column={props.source}>\r\n <ElTableColumn prop={props.source} label={title.value} {...attrs}>\r\n {(scope: ElTableColumnScope) => {\r\n if (children && scope.$index > -1) {\r\n return children.map((vnode) => cloneVNode(vnode, { row: scope['row'] }))\r\n }\r\n }}\r\n </ElTableColumn>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyDataTableCol","defineComponent","name","inheritAttrs","props","source","label","attrs","route","useRoute","addExportColumn","children","slots","title","computed","routeMeta","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,IACAC,OAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;AAC1B,UAAAC,IAAAC,EAAA;MACQC,iBAAAA;AAAAA,aACRC,IAAAC,EAAA,UAAA,GACAC,IAAAC,EAAA,MAAAV,EAAA,SAAAA,EAAA,UAAA,EAAA,GACAW,IAAAP,EAAA;uBAEEE,EAAAA;AAAAA,MAAkB,CAAAN,EAAA,MAAA,GAAAS,EAAA;AAAA,IAA4B,CAAA;;MAKJ,QAAA;AAAA,MAAA,QAAAT,EAAA;AAAA,IAAoC,GAAA;AAAA,MAAAY,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;QAC3C,OAAAH,EAAA;AAAA,MAAoB,GAAAN,CAAA,GAAA;AAAA;;;;YAGsB,CAAA,CAAA;AAAA,QAEzE;AAAA,MAAC,CAAA,CAAA;AAAA;EAIT;AACF,CAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/button/style/css");require("element-plus/es/components/card/style/css");require("element-plus/es/components/popconfirm/style/css");require("element-plus/es/components/skeleton/style/css");const t=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");const R=require("../../hooks/useTab.cjs"),I=require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const _=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const h=require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const j=require("../../icons/EpDelete.cjs"),M=require("../../icons/EpDocumentAdd.cjs"),m=require("../../setup/index.cjs"),f=require("@vueuse/core"),o=require("element-plus"),K=require("vue-i18n"),b=require("vue-router"),W=require("../can-access/index.cjs");function S(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!t.isVNode(r)}const B=t.defineComponent({name:"SkyEdit",inheritAttrs:!1,props:{dataId:[String,Number]},setup(r,{slots:A,attrs:E}){const{t:u}=K.useI18n(),k=b.useRouter(),i=b.useRoute(),{removeTab:C,lastTab:s}=R.useTab(),l=t.computed(()=>r.dataId?r.dataId:i.params.id),{formData:N,formRef:v,editData:c}=_.useProvideForm(),n=h.useTreeWithDetails(),{removeKeepAlive:D}=I.useRouteKeepAlive(),d=i.meta;let q;const{isLoading:V,execute:w}=f.useAsyncState(async()=>{q=new AbortController;const e=await m.skyConfig.dataProvider?.getOne?.(i.meta.resource,{id:l.value,signal:q.signal});if(e?.data)return c.value=e.data,e},void 0,{immediate:!0});let g;const{isLoading:x,execute:P}=f.useAsyncState(async e=>(g=new AbortController,m.skyConfig.dataProvider?.update?.(i.meta.resource,{id:l.value,data:e,signal:g.signal})),void 0,{immediate:!1}),O=async()=>{if(!v.value||!await v.value.validate())return;const a=await P(0,{...N});a&&(n?.editSuccess?n.editSuccess(a):(o.ElMessage.success(u("submit.success")),c.value=null,await w()))};let p;const{isLoading:y,execute:T}=f.useAsyncState(async()=>(p=new AbortController,m.skyConfig.dataProvider?.deleteMany?.(i.meta.resource,{ids:[l.value],signal:p.signal})),void 0,{immediate:!1}),L=async()=>{const e=await T();e&&(n?.deleteSuccess?n.deleteSuccess(e):(d.keepAliveName&&D(d.keepAliveName),C(i.name),s.value&&k.replace({name:s.value.routeName,params:s.value.routeParams})))};return()=>t.createVNode("div",{class:"sky-edit"},[t.createVNode(W.SkyCanAccess,{resource:d.resource,action:"edit"},{default:()=>[t.createVNode(o.ElCard,E,{default:()=>t.createVNode(o.ElSkeleton,{loading:V.value,animated:!0},{default:()=>[c.value&&A.default?.()]}),footer:()=>{let e;return t.createVNode("div",{class:"sky-edit__footer"},[t.createVNode(o.ElButton,{type:"primary",icon:M.EpDocumentAdd,loading:x.value,onClick:O,disabled:y.value},S(e=u("button.submit"))?e:{default:()=>[e]}),t.createVNode(o.ElPopconfirm,{title:u("popconfirm.remove"),onConfirm:L},{reference:()=>{let a;return t.createVNode(o.ElButton,{type:"danger",text:!0,icon:j.EpDelete,disabled:y.value},S(a=u("button.remove"))?a:{default:()=>[a]})}})])}})]})])}});exports.SkyEdit=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/button/style/css");require("element-plus/es/components/card/style/css");require("element-plus/es/components/popconfirm/style/css");require("element-plus/es/components/skeleton/style/css");const t=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");const R=require("../../hooks/useTab.cjs"),I=require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const _=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const h=require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const m=require("../../setup/index.cjs"),j=require("../../icons/EpDelete.cjs"),M=require("../../icons/EpDocumentAdd.cjs"),f=require("@vueuse/core"),o=require("element-plus"),K=require("vue-i18n"),b=require("vue-router"),W=require("../can-access/index.cjs");function S(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!t.isVNode(r)}const B=t.defineComponent({name:"SkyEdit",inheritAttrs:!1,props:{dataId:[String,Number]},setup(r,{slots:A,attrs:E}){const{t:u}=K.useI18n(),k=b.useRouter(),i=b.useRoute(),{removeTab:C,lastTab:s}=R.useTab(),l=t.computed(()=>r.dataId?r.dataId:i.params.id),{formData:N,formRef:v,editData:c}=_.useProvideForm(),n=h.useTreeWithDetails(),{removeKeepAlive:D}=I.useRouteKeepAlive(),d=i.meta;let q;const{isLoading:V,execute:w}=f.useAsyncState(async()=>{q=new AbortController;const e=await m.skyConfig.dataProvider?.getOne?.(i.meta.resource,{id:l.value,signal:q.signal});if(e?.data)return c.value=e.data,e},void 0,{immediate:!0});let g;const{isLoading:x,execute:P}=f.useAsyncState(async e=>(g=new AbortController,m.skyConfig.dataProvider?.update?.(i.meta.resource,{id:l.value,data:e,signal:g.signal})),void 0,{immediate:!1}),O=async()=>{if(!v.value||!await v.value.validate())return;const a=await P(0,{...N});a&&(n?.editSuccess?n.editSuccess(a):(o.ElMessage.success(u("submit.success")),c.value=null,await w()))};let p;const{isLoading:y,execute:T}=f.useAsyncState(async()=>(p=new AbortController,m.skyConfig.dataProvider?.deleteMany?.(i.meta.resource,{ids:[l.value],signal:p.signal})),void 0,{immediate:!1}),L=async()=>{const e=await T();e&&(n?.deleteSuccess?n.deleteSuccess(e):(d.keepAliveName&&D(d.keepAliveName),C(i.name),s.value&&k.replace({name:s.value.routeName,params:s.value.routeParams})))};return()=>t.createVNode("div",{class:"sky-edit"},[t.createVNode(W.SkyCanAccess,{resource:d.resource,action:"edit"},{default:()=>[t.createVNode(o.ElCard,E,{default:()=>t.createVNode(o.ElSkeleton,{loading:V.value,animated:!0},{default:()=>[c.value&&A.default?.()]}),footer:()=>{let e;return t.createVNode("div",{class:"sky-edit__footer"},[t.createVNode(o.ElButton,{type:"primary",icon:M.EpDocumentAdd,loading:x.value,onClick:O,disabled:y.value},S(e=u("button.submit"))?e:{default:()=>[e]}),t.createVNode(o.ElPopconfirm,{title:u("popconfirm.remove"),onConfirm:L},{reference:()=>{let a;return t.createVNode(o.ElButton,{type:"danger",text:!0,icon:j.EpDelete,disabled:y.value},S(a=u("button.remove"))?a:{default:()=>[a]})}})])}})]})])}});exports.SkyEdit=B;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -19,9 +19,9 @@ import "../../hooks/useReferenceArrayField.mjs";
19
19
  import { useTreeWithDetails as V } from "../../hooks/useTreeWithDetails.mjs";
20
20
  import "../../hooks/useFormGrid.mjs";
21
21
  import "../../hooks/useReferenceArrayInput.mjs";
22
+ import { skyConfig as d } from "../../setup/index.mjs";
22
23
  import { EpDelete as W } from "../../icons/EpDelete.mjs";
23
24
  import { EpDocumentAdd as B } from "../../icons/EpDocumentAdd.mjs";
24
- import { skyConfig as d } from "../../setup/index.mjs";
25
25
  import { useAsyncState as c } from "@vueuse/core";
26
26
  import { ElCard as F, ElButton as y, ElPopconfirm as q, ElSkeleton as z, ElMessage as G } from "element-plus";
27
27
  import { useI18n as H } from "vue-i18n";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/dialog/style/css");require("element-plus/es/components/form-item/style/css");require("element-plus/es/components/icon/style/css");require("element-plus/es/components/upload/style/css");const e=require("vue"),L=require("../../icons/EpPlus.cjs"),u=require("element-plus"),x=require("vue-router"),M=require("@vueuse/core");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const _=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");const A=require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const h=require("../../setup/index.cjs"),D=require("../can-access/index.cjs"),T=require("../../icons/EpUploadFilled.cjs"),G=require("vue-i18n"),$=e.defineComponent({name:"SkyFileMultipleInput",inheritAttrs:!1,props:{reference:{type:String,required:!0},source:{type:String,required:!0},type:{type:String,default:"file"},dataId:{type:String,default:"id"},dataName:{type:String,default:"name"},dataUrl:{type:String,default:"url"},label:String,rules:Object,limit:{type:Number,default:1},fileList:{type:Array,default:()=>[]},autoUpload:{type:Boolean,default:!0}},setup(t,{slots:c,attrs:S}){const{t:s}=G.useI18n(),N=x.useRoute(),w=A.useFormGrid(),{formData:n,editData:f}=_.useForm(),U=e.computed(()=>t.label||t.source),r=e.shallowRef(t.fileList),d=e.useTemplateRef("uploadRef"),V=N.meta;f.value&&(n[t.source]=f.value[t.source]);const F=l=>{if(t.limit===1){d.value?.clearFiles();const a=l[0];a.uid=u.genFileId(),d.value?.handleStart(a),t.autoUpload&&d.value?.submit()}},E=()=>{const l=[];for(const a of r.value)if(a.id)l.push(a.id);else{const i=a.raw;i?.data?.id&&(a.id=i.data.id,l.push(i.data.id))}n[t.source]=l},o=e.ref(!1),m=e.ref(),b=l=>{m.value=l.url,o.value=!0};let v;const{isLoading:k}=M.useAsyncState(async()=>{const l=n[t.source];if(l){v=new AbortController;const a=await h.skyConfig.dataProvider?.getMany?.(t.reference,{ids:l,signal:v.signal});if(a?.data)return r.value=a.data.map(i=>({id:i[t.dataId],name:i[t.dataName],url:i[t.dataUrl]})),a}},void 0,{immediate:!0}),y=e.ref(""),g=e.shallowRef(),q=e.shallowRef(),p=e.ref(),I=e.ref(),P=async l=>{const a=await h.skyConfig.dataProvider?.getUploadConfig?.({file:l});a?.data&&(y.value=a.data.action,g.value=a.data.data,q.value=a.data.headers,p.value=a.data.method,I.value=a.data.name,l.data={id:a.data.file.id,name:a.data.file.name,url:a.data.file.url})},R=e.computed(()=>t.type==="image"?"image/*":void 0),C=e.computed(()=>t.type==="image"?"picture-card":"text");return()=>e.createVNode(D.SkyCanAccess,{resource:V.resource,action:["create","edit"],column:t.source},{default:()=>[e.createVNode(u.ElFormItem,{class:["sky-file-multiple-input",`is-${t.type}`],label:U.value,prop:t.source,rules:t.rules,style:w?`grid-area: ${t.source}`:""},{default:()=>[e.createVNode(u.ElUpload,e.mergeProps({ref:"uploadRef",action:y.value,method:p.value,name:t.name,withCredentials:t.withCredentials,multiple:t.limit>1,limit:t.limit,beforeUpload:P,onSuccess:E,onExceed:F,headers:q.value,data:g.value,listType:C.value,fileList:r.value,"onUpdate:file-list":l=>r.value=l,autoUpload:t.autoUpload,drag:t.type==="file",showFileList:!0,onPreview:b,accept:R.value},S),{default:()=>t.type==="image"?e.createVNode(u.ElIcon,null,{default:()=>[e.createVNode(L.EpPlus,null,null)]}):e.createVNode(e.Fragment,null,[e.createVNode(u.ElIcon,{class:"sky-file-multiple-input__icon"},{default:()=>[e.createVNode(T.EpUploadFilled,null,null)]}),e.createVNode("div",{class:"sky-file-multiple-input__text"},[s("upload.drop"),e.createVNode("em",null,[s("upload.click")])])]),file:l=>{if(c.default){const a=c.default();return e.withDirectives(e.h(e.Fragment,a.map(i=>e.cloneVNode(i,{...l}))),[[u.ElLoadingDirective,k.value]])}}}),e.createVNode(u.ElDialog,{appendToBody:!0,modelValue:o.value,"onUpdate:modelValue":l=>o.value=l},{default:()=>[e.createVNode("img",{class:"sky-file-multiple-input__img",src:m.value},null)]})]})]})}});exports.SkyFileMultipleInput=$;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/form-item/style/css");const t=require("vue"),s=require("element-plus"),m=require("vue-router");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");const q=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");const y=require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");require("vue-i18n");const f=require("../can-access/index.cjs"),S=require("../file-multiple-model-input/index.cjs"),g=t.defineComponent({name:"SkyFileMultipleInput",inheritAttrs:!1,props:{source:{type:String,required:!0},label:String,rules:Object,type:{type:String,default:"file"},dataName:{type:String,default:"name"},dataUrl:{type:String,default:"url"},limit:{type:Number,default:1},autoUpload:{type:Boolean,default:!0}},setup(e,{slots:i,attrs:l}){const a=m.useRoute(),o=y.useFormGrid(),{formData:r,editData:u}=q.useForm(),n=t.computed(()=>e.label||e.source),d=a.meta;return u.value&&(r[e.source]=u.value[e.source]),()=>t.createVNode(f.SkyCanAccess,{resource:d.resource,action:["create","edit"],column:e.source},{default:()=>[t.createVNode(s.ElFormItem,{class:["sky-file-multiple-input",`is-${e.type}`],label:n.value,prop:e.source,rules:e.rules,style:o?`grid-area: ${e.source}`:""},{default:()=>[t.createVNode(S.SkyFileMultipleModelInput,t.mergeProps({modelValue:r[e.source],"onUpdate:modelValue":c=>r[e.source]=c,type:e.type,dataName:e.dataName,dataUrl:e.dataUrl,limit:e.limit,autoUpload:e.autoUpload},l),{default:()=>[i.default?.()]})]})]})}});exports.SkyFileMultipleInput=g;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElDialog,\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useAsyncState } from '@vueuse/core'\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\nimport { useI18n } from 'vue-i18n'\n\nexport interface SkyFileMultipleInputProps {\n reference: string\n source: string\n type?: 'file' | 'image'\n dataId?: string\n dataName?: string\n dataUrl?: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n name?: string\n withCredentials?: boolean\n limit?: number\n fileList?: SkyUploadUserFile[]\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n type: {\n type: String,\n default: 'file',\n },\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n label: String,\n rules: Object,\n limit: {\n type: Number,\n default: 1,\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = (files: File[]) => {\n if (props.limit === 1) {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n if (props.autoUpload) {\n uploadRef.value?.submit()\n }\n }\n }\n\n const onSuccess = () => {\n const ids: Identifier[] = []\n for (const fl of fileList.value) {\n if (fl.id) {\n ids.push(fl.id as Identifier)\n } else {\n const raw = fl.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n fl.id = raw.data.id as Identifier\n ids.push(raw.data.id as Identifier)\n }\n }\n }\n formData[props.source] = ids\n }\n\n const preview = ref(false)\n const previewUrl = ref<string>()\n const onPreview = (file: UploadFile) => {\n previewUrl.value = file.url\n preview.value = true\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n const ids = formData[props.source]\n if (ids) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: ids as Identifier[],\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = res.data.map((d) => ({\n id: d[props.dataId!] as Identifier,\n name: d[props.dataName!] as string,\n url: d[props.dataUrl!] as string,\n }))\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={props.name}\n withCredentials={props.withCredentials}\n multiple={props.limit! > 1}\n limit={props.limit}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType={listType.value}\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={props.autoUpload}\n drag={props.type === 'file'}\n showFileList\n onPreview={onPreview}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={accept.value}\n {...attrs}\n >\n {{\n default: () =>\n props.type === 'image' ? (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ) : (\n <>\n <ElIcon class=\"sky-file-multiple-input__icon\">\n <EpUploadFilled />\n </ElIcon>\n <div class=\"sky-file-multiple-input__text\">\n {t('upload.drop')}\n <em>{t('upload.click')}</em>\n </div>\n </>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return withDirectives(\n h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n ),\n [[ElLoadingDirective, isLoading.value]],\n )\n }\n },\n }}\n </ElUpload>\n <ElDialog\n appendToBody\n modelValue={preview.value}\n onUpdate:modelValue={(v) => (preview.value = v)}\n >\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\n </ElDialog>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { ElFormItem, type FormItemRule, type UploadProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid, type FormContext } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { SkyFileMultipleModelInput } from '../file-multiple-model-input'\n\nexport interface SkyFileMultipleInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n type?: 'file' | 'image'\n dataName?: string\n dataUrl?: string\n limit?: number\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n type: {\n type: String,\n default: 'file',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n limit: {\n type: Number,\n default: 1,\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()! as FormContext<\n Record<string, Array<Record<string, unknown>>>\n >\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source] as Array<Record<string, unknown>>\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <SkyFileMultipleModelInput\n modelValue={formData[props.source]}\n onUpdate:modelValue={(v) => (formData[props.source] = v)}\n type={props.type}\n dataName={props.dataName}\n dataUrl={props.dataUrl}\n limit={props.limit}\n autoUpload={props.autoUpload}\n {...attrs}\n >\n {slots.default?.()}\n </SkyFileMultipleModelInput>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","default","dataName","dataUrl","limit","autoUpload","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","routeMeta","formData"],"mappings":"08BAmBAA,EAAAC,EAAAA,gBAAA,CAGEC,KAAAA,uBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,MAAAA,OACAH,KAAAA,CACEA,KAAAA,OACAI,QAAAA,QAEFC,SAAAA,CACEL,KAAAA,OACAI,QAAAA,QAEFE,QAAAA,CACEN,KAAAA,OACAI,QAAAA,OAEFG,MAAAA,CACEP,KAAAA,OACAI,QAAAA,GAEFI,WAAAA,CACER,KAAAA,QACAI,QAAAA,EACF,oBAEoBK,MAAAA,CAAM,EAAA,CAC1B,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAGlBC,EAAAC,EAAAA,SAAA,IAAAlB,EAAA,OAAAA,EAAA,MAAA,EAEAmB,EAAAP,EAAA,sBAGEQ,EAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,EAAAA,MAAAA,yDAI0C,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAApB,EAAA,MAAsB,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,4FAKtE,MAAAQ,EAAA,cAAAd,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,0BAAAA,EAAAA,WAAAA,CAAA,WAAAc,EAAApB,EAAA,MAAA,yGAQ/B,WAAAA,EAAA,UACU,EAAAW,CAAA,EAAA,CACnBL,QAAAA,IAAAA,CAAAA,EAAAA,UAAAA,CAAAA,CAES,CAAA,CAAA,CAAA,CAAA,CAAA,GAK5B,CACF,CAAA"}
@@ -1,18 +1,12 @@
1
1
  import { FormItemRule, UploadProps } from 'element-plus';
2
- import { SkyUploadUserFile } from '../../hooks';
3
2
  export interface SkyFileMultipleInputProps {
4
- reference: string;
5
3
  source: string;
4
+ label?: string;
5
+ rules?: FormItemRule | FormItemRule[];
6
6
  type?: 'file' | 'image';
7
- dataId?: string;
8
7
  dataName?: string;
9
8
  dataUrl?: string;
10
- label?: string;
11
- rules?: FormItemRule | FormItemRule[];
12
- name?: string;
13
- withCredentials?: boolean;
14
9
  limit?: number;
15
- fileList?: SkyUploadUserFile[];
16
10
  autoUpload?: UploadProps['autoUpload'];
17
11
  }
18
12
  export declare const SkyFileMultipleInput: import('vue').DefineComponent<SkyFileMultipleInputProps & Partial<UploadProps>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<SkyFileMultipleInputProps & Partial<UploadProps>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,12 +1,7 @@
1
- import "element-plus/es/components/dialog/style/css";
2
1
  import "element-plus/es/components/form-item/style/css";
3
- import "element-plus/es/components/icon/style/css";
4
- import "element-plus/es/components/upload/style/css";
5
- import { defineComponent as T, computed as m, shallowRef as s, useTemplateRef as V, ref as o, createVNode as l, mergeProps as q, withDirectives as B, h as G, Fragment as w, cloneVNode as $ } from "vue";
6
- import { EpPlus as j } from "../../icons/EpPlus.mjs";
7
- import { ElFormItem as O, ElUpload as z, ElLoadingDirective as H, ElIcon as b, ElDialog as J, genFileId as K } from "element-plus";
8
- import { useRoute as Q } from "vue-router";
9
- import { useAsyncState as W } from "@vueuse/core";
2
+ import { defineComponent as c, computed as p, createVNode as r, mergeProps as f } from "vue";
3
+ import { ElFormItem as s } from "element-plus";
4
+ import { useRoute as y } from "vue-router";
10
5
  import "../../hooks/useUser.mjs";
11
6
  import "../../hooks/usePermission.mjs";
12
7
  import "../../hooks/useMenu.mjs";
@@ -17,36 +12,29 @@ import "../../hooks/useLang.mjs";
17
12
  import "../../hooks/useTheme.mjs";
18
13
  import "../../hooks/useList.mjs";
19
14
  import "../../hooks/useHiddenTitle.mjs";
20
- import { useForm as X } from "../../hooks/useForm.mjs";
15
+ import { useForm as S } from "../../hooks/useForm.mjs";
21
16
  import "../../hooks/useShow.mjs";
22
17
  import "../../hooks/useReferenceArrayField.mjs";
23
18
  import "../../hooks/useTreeWithDetails.mjs";
24
- import { useFormGrid as Y } from "../../hooks/useFormGrid.mjs";
19
+ import { useFormGrid as g } from "../../hooks/useFormGrid.mjs";
25
20
  import "../../hooks/useReferenceArrayInput.mjs";
26
- import { skyConfig as k } from "../../setup/index.mjs";
27
- import { SkyCanAccess as Z } from "../can-access/index.mjs";
28
- import { EpUploadFilled as ee } from "../../icons/EpUploadFilled.mjs";
29
- import { useI18n as te } from "vue-i18n";
30
- const _e = /* @__PURE__ */ T({
21
+ import "vue-i18n";
22
+ import { SkyCanAccess as U } from "../can-access/index.mjs";
23
+ import { SkyFileMultipleModelInput as F } from "../file-multiple-model-input/index.mjs";
24
+ const H = /* @__PURE__ */ c({
31
25
  name: "SkyFileMultipleInput",
32
26
  inheritAttrs: !1,
33
27
  props: {
34
- reference: {
35
- type: String,
36
- required: !0
37
- },
38
28
  source: {
39
29
  type: String,
40
30
  required: !0
41
31
  },
32
+ label: String,
33
+ rules: Object,
42
34
  type: {
43
35
  type: String,
44
36
  default: "file"
45
37
  },
46
- dataId: {
47
- type: String,
48
- default: "id"
49
- },
50
38
  dataName: {
51
39
  type: String,
52
40
  default: "name"
@@ -55,147 +43,51 @@ const _e = /* @__PURE__ */ T({
55
43
  type: String,
56
44
  default: "url"
57
45
  },
58
- label: String,
59
- rules: Object,
60
46
  limit: {
61
47
  type: Number,
62
48
  default: 1
63
49
  },
64
- fileList: {
65
- type: Array,
66
- default: () => []
67
- },
68
50
  autoUpload: {
69
51
  type: Boolean,
70
52
  default: !0
71
53
  }
72
54
  },
73
- setup(e, {
74
- slots: c,
75
- attrs: E
55
+ setup(t, {
56
+ slots: i,
57
+ attrs: a
76
58
  }) {
77
- const {
78
- t: f
79
- } = te(), F = Q(), I = Y(), {
80
- formData: r,
81
- editData: p
82
- } = X(), C = m(() => e.label || e.source), u = s(e.fileList), d = V("uploadRef"), L = F.meta;
83
- p.value && (r[e.source] = p.value[e.source]);
84
- const P = (a) => {
85
- if (e.limit === 1) {
86
- d.value?.clearFiles();
87
- const t = a[0];
88
- t.uid = K(), d.value?.handleStart(t), e.autoUpload && d.value?.submit();
89
- }
90
- }, R = () => {
91
- const a = [];
92
- for (const t of u.value)
93
- if (t.id)
94
- a.push(t.id);
95
- else {
96
- const i = t.raw;
97
- i?.data?.id && (t.id = i.data.id, a.push(i.data.id));
98
- }
99
- r[e.source] = a;
100
- }, n = o(!1), v = o(), _ = (a) => {
101
- v.value = a.url, n.value = !0;
102
- };
103
- let y;
104
- const {
105
- isLoading: x
106
- } = W(async () => {
107
- const a = r[e.source];
108
- if (a) {
109
- y = new AbortController();
110
- const t = await k.dataProvider?.getMany?.(e.reference, {
111
- ids: a,
112
- signal: y.signal
113
- });
114
- if (t?.data)
115
- return u.value = t.data.map((i) => ({
116
- id: i[e.dataId],
117
- name: i[e.dataName],
118
- url: i[e.dataUrl]
119
- })), t;
120
- }
121
- }, void 0, {
122
- immediate: !0
123
- }), g = o(""), h = s(), S = s(), U = o(), A = o(), D = async (a) => {
124
- const t = await k.dataProvider?.getUploadConfig?.({
125
- file: a
126
- });
127
- t?.data && (g.value = t.data.action, h.value = t.data.data, S.value = t.data.headers, U.value = t.data.method, A.value = t.data.name, a.data = {
128
- id: t.data.file.id,
129
- name: t.data.file.name,
130
- url: t.data.file.url
131
- });
132
- }, N = m(() => e.type === "image" ? "image/*" : void 0), M = m(() => e.type === "image" ? "picture-card" : "text");
133
- return () => l(Z, {
134
- resource: L.resource,
59
+ const l = y(), u = g(), {
60
+ formData: e,
61
+ editData: o
62
+ } = S(), m = p(() => t.label || t.source), d = l.meta;
63
+ return o.value && (e[t.source] = o.value[t.source]), () => r(U, {
64
+ resource: d.resource,
135
65
  action: ["create", "edit"],
136
- column: e.source
66
+ column: t.source
137
67
  }, {
138
- default: () => [l(O, {
139
- class: ["sky-file-multiple-input", `is-${e.type}`],
140
- label: C.value,
141
- prop: e.source,
142
- rules: e.rules,
143
- style: I ? `grid-area: ${e.source}` : ""
68
+ default: () => [r(s, {
69
+ class: ["sky-file-multiple-input", `is-${t.type}`],
70
+ label: m.value,
71
+ prop: t.source,
72
+ rules: t.rules,
73
+ style: u ? `grid-area: ${t.source}` : ""
144
74
  }, {
145
- default: () => [l(z, q({
146
- ref: "uploadRef",
147
- action: g.value,
148
- method: U.value,
149
- name: e.name,
150
- withCredentials: e.withCredentials,
151
- multiple: e.limit > 1,
152
- limit: e.limit,
153
- beforeUpload: D,
154
- onSuccess: R,
155
- onExceed: P,
156
- headers: S.value,
157
- data: h.value,
158
- listType: M.value,
159
- fileList: u.value,
160
- "onUpdate:file-list": (a) => u.value = a,
161
- autoUpload: e.autoUpload,
162
- drag: e.type === "file",
163
- showFileList: !0,
164
- onPreview: _,
165
- accept: N.value
166
- }, E), {
167
- default: () => e.type === "image" ? l(b, null, {
168
- default: () => [l(j, null, null)]
169
- }) : l(w, null, [l(b, {
170
- class: "sky-file-multiple-input__icon"
171
- }, {
172
- default: () => [l(ee, null, null)]
173
- }), l("div", {
174
- class: "sky-file-multiple-input__text"
175
- }, [f("upload.drop"), l("em", null, [f("upload.click")])])]),
176
- file: (a) => {
177
- if (c.default) {
178
- const t = c.default();
179
- return B(G(w, t.map((i) => $(i, {
180
- ...a
181
- }))), [[H, x.value]]);
182
- }
183
- }
184
- }), l(J, {
185
- appendToBody: !0,
186
- modelValue: n.value,
187
- "onUpdate:modelValue": (a) => n.value = a
188
- }, {
189
- default: () => [l("img", {
190
- class: "sky-file-multiple-input__img",
191
- src: v.value
192
- }, null)]
75
+ default: () => [r(F, f({
76
+ modelValue: e[t.source],
77
+ "onUpdate:modelValue": (n) => e[t.source] = n,
78
+ type: t.type,
79
+ dataName: t.dataName,
80
+ dataUrl: t.dataUrl,
81
+ limit: t.limit,
82
+ autoUpload: t.autoUpload
83
+ }, a), {
84
+ default: () => [i.default?.()]
193
85
  })]
194
86
  })]
195
87
  });
196
88
  }
197
89
  });
198
90
  export {
199
- _e as SkyFileMultipleInput
91
+ H as SkyFileMultipleInput
200
92
  };
201
93
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElDialog,\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useAsyncState } from '@vueuse/core'\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\nimport { useI18n } from 'vue-i18n'\n\nexport interface SkyFileMultipleInputProps {\n reference: string\n source: string\n type?: 'file' | 'image'\n dataId?: string\n dataName?: string\n dataUrl?: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n name?: string\n withCredentials?: boolean\n limit?: number\n fileList?: SkyUploadUserFile[]\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n type: {\n type: String,\n default: 'file',\n },\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n label: String,\n rules: Object,\n limit: {\n type: Number,\n default: 1,\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = (files: File[]) => {\n if (props.limit === 1) {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n if (props.autoUpload) {\n uploadRef.value?.submit()\n }\n }\n }\n\n const onSuccess = () => {\n const ids: Identifier[] = []\n for (const fl of fileList.value) {\n if (fl.id) {\n ids.push(fl.id as Identifier)\n } else {\n const raw = fl.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n fl.id = raw.data.id as Identifier\n ids.push(raw.data.id as Identifier)\n }\n }\n }\n formData[props.source] = ids\n }\n\n const preview = ref(false)\n const previewUrl = ref<string>()\n const onPreview = (file: UploadFile) => {\n previewUrl.value = file.url\n preview.value = true\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n const ids = formData[props.source]\n if (ids) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: ids as Identifier[],\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = res.data.map((d) => ({\n id: d[props.dataId!] as Identifier,\n name: d[props.dataName!] as string,\n url: d[props.dataUrl!] as string,\n }))\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={props.name}\n withCredentials={props.withCredentials}\n multiple={props.limit! > 1}\n limit={props.limit}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType={listType.value}\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={props.autoUpload}\n drag={props.type === 'file'}\n showFileList\n onPreview={onPreview}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={accept.value}\n {...attrs}\n >\n {{\n default: () =>\n props.type === 'image' ? (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ) : (\n <>\n <ElIcon class=\"sky-file-multiple-input__icon\">\n <EpUploadFilled />\n </ElIcon>\n <div class=\"sky-file-multiple-input__text\">\n {t('upload.drop')}\n <em>{t('upload.click')}</em>\n </div>\n </>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return withDirectives(\n h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n ),\n [[ElLoadingDirective, isLoading.value]],\n )\n }\n },\n }}\n </ElUpload>\n <ElDialog\n appendToBody\n modelValue={preview.value}\n onUpdate:modelValue={(v) => (preview.value = v)}\n >\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\n </ElDialog>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { ElFormItem, type FormItemRule, type UploadProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid, type FormContext } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { SkyFileMultipleModelInput } from '../file-multiple-model-input'\n\nexport interface SkyFileMultipleInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n type?: 'file' | 'image'\n dataName?: string\n dataUrl?: string\n limit?: number\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n type: {\n type: String,\n default: 'file',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n limit: {\n type: Number,\n default: 1,\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()! as FormContext<\n Record<string, Array<Record<string, unknown>>>\n >\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source] as Array<Record<string, unknown>>\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <SkyFileMultipleModelInput\n modelValue={formData[props.source]}\n onUpdate:modelValue={(v) => (formData[props.source] = v)}\n type={props.type}\n dataName={props.dataName}\n dataUrl={props.dataUrl}\n limit={props.limit}\n autoUpload={props.autoUpload}\n {...attrs}\n >\n {slots.default?.()}\n </SkyFileMultipleModelInput>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","default","dataName","dataUrl","limit","autoUpload","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","routeMeta","formData"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EAGEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAH,MAAAA;AAAAA,MACEA,MAAAA;AAAAA,MACAI,SAAAA;AAAAA;IAEFC,UAAAA;AAAAA,MACEL,MAAAA;AAAAA,MACAI,SAAAA;AAAAA;IAEFE,SAAAA;AAAAA,MACEN,MAAAA;AAAAA,MACAI,SAAAA;AAAAA;IAEFG,OAAAA;AAAAA,MACEP,MAAAA;AAAAA,MACAI,SAAAA;AAAAA;IAEFI,YAAAA;AAAAA,MACER,MAAAA;AAAAA,MACAI,SAAAA;AAAAA,IACF;AAAA;;;IAEoBK,OAAAA;AAAAA,EAAM,GAAA;AAC1B,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAGlBC,IAAAC,EAAA,MAAAlB,EAAA,SAAAA,EAAA,MAAA,GAEAmB,IAAAP,EAAA;uBAGEQ,EAAAA,EAAAA,MAAAA,IAAAA,EAAAA,MAAAA,EAAAA,MAAAA;;MAI0C,QAAA,CAAA,UAAA,MAAA;AAAA,MAA4B,QAAApB,EAAA;AAAA,IAAsB,GAAA;AAAA,MAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;;;;QAKtE,OAAAQ,IAAA,cAAAd,EAAA,MAAA,KAAA;AAAA,MACiC,GAAA;AAAA,QAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,UAAA,YAAAc,EAAApB,EAAA,MAAA;AAAA;;;;;UAQ/B,YAAAA,EAAA;AAAA,QACU,GAAAW,CAAA,GAAA;AAAA,UACnBL,SAAAA,MAAAA,CAAAA,EAAAA,UAAAA,CAAAA;AAAAA,QAES,CAAA,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA;EAK5B;AACF,CAAA;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/dialog/style/css");require("element-plus/es/components/icon/style/css");require("element-plus/es/components/upload/style/css");const e=require("vue"),E=require("../../icons/EpPlus.cjs"),a=require("element-plus");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const k=require("../../hooks/useUpload.cjs"),I=require("../../icons/EpUploadFilled.cjs"),w=require("vue-i18n"),M=e.defineComponent({name:"SkyFileMultipleModelInput",inheritAttrs:!1,props:{type:{type:String,default:"file"},dataName:{type:String,default:"name"},dataUrl:{type:String,default:"url"},limit:{type:Number,default:1},autoUpload:{type:Boolean,default:!0},modelValue:{type:Array,default:()=>[]}},emits:{"update:modelValue":t=>t},setup(t,{slots:n,attrs:p,emit:m}){const{t:c}=w.useI18n(),{fileList:i,action:f,data:v,headers:q,method:y,name:g,beforeUpload:V}=k.useUpload(),o=e.useTemplateRef("uploadRef");i.value=t.modelValue.map(l=>({upload:l,name:l[t.dataName],url:l[t.dataUrl]}));const U=l=>{if(t.limit===1){o.value?.clearFiles();const u=l[0];u.uid=a.genFileId(),o.value?.handleStart(u),t.autoUpload&&o.value?.submit()}},N=()=>{const l=[];for(const u of i.value)if(u.upload)l.push(u.upload);else{const r=u.raw;r?.upload&&l.push(r.upload)}m("update:modelValue",l)},d=e.ref(!1),s=e.ref(),F=l=>{s.value=l.url,d.value=!0},S=e.computed(()=>t.type==="image"?"image/*":void 0),h=e.computed(()=>t.type==="image"?"picture-card":"text");return()=>e.createVNode(e.Fragment,null,[e.createVNode(a.ElUpload,e.mergeProps({class:"sky-file-multiple-model-input",ref:"uploadRef",action:f.value,method:y.value,name:g.value,multiple:t.limit>1,limit:t.limit,beforeUpload:V,onSuccess:N,onExceed:U,headers:q.value,data:v.value,listType:h.value,fileList:i.value,"onUpdate:file-list":l=>i.value=l,autoUpload:t.autoUpload,drag:t.type==="file",showFileList:!0,onPreview:F,accept:S.value},p),{default:()=>t.type==="image"?e.createVNode(a.ElIcon,null,{default:()=>[e.createVNode(E.EpPlus,null,null)]}):e.createVNode(e.Fragment,null,[e.createVNode(a.ElIcon,{class:"sky-file-multiple-model-input__icon"},{default:()=>[e.createVNode(I.EpUploadFilled,null,null)]}),e.createVNode("div",{class:"sky-file-multiple-model-input__text"},[c("upload.drop"),e.createVNode("em",null,[c("upload.click")])])]),file:l=>{if(n.default){const u=n.default();return e.h(e.Fragment,u.map(r=>e.cloneVNode(r,{...l})))}}}),e.createVNode(a.ElDialog,{appendToBody:!0,modelValue:d.value,"onUpdate:modelValue":l=>d.value=l},{default:()=>[e.createVNode("img",{class:"sky-file-multiple-model-input__img",src:s.value},null)]})])}});exports.SkyFileMultipleModelInput=M;
2
+ //# sourceMappingURL=index.cjs.map