skyline-vue-admin 0.0.26 → 0.0.28

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.
@@ -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/form-item/style/css");require("element-plus/es/components/table/style/css");require("element-plus/es/components/table-column/style/css");const e=require("vue"),l=require("element-plus"),g=require("vue-router"),S=require("../can-access/index.cjs");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 N=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");const k=require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const I=require("vue-i18n"),D=require("../data-list-item-input/index.cjs");function f(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const C=e.defineComponent({name:"SkyDataListInput",inheritAttrs:!1,props:{source:{type:String,required:!0},label:String,rules:Object,defaultValue:{type:Array,default:()=>[]},serialize:Function,unserialize:Function},setup(t,{attrs:m,slots:n}){const{t:i}=I.useI18n(),q=g.useRoute().meta,b=e.computed(()=>t.label||t.source),p=k.useFormGrid(),{formData:c,editData:s}=N.useForm(),a=e.ref([]),d=e.computed(()=>n.default?.().filter(r=>r.type===D.SkyDataListItemInput));if(typeof c[t.source]>"u"&&(a.value=t.defaultValue),s.value){const r=s.value[t.source];a.value=t.unserialize?.(r)??r}const y=()=>{const r=e.reactive({});if(d.value){for(const u of d.value)r[u.props.source]=u.props.defaultValue;a.value.push(r)}},v=r=>{a.value.splice(r,1)};return e.watch(a,()=>c[t.source]=t.serialize?.(a.value)??a.value),()=>{let r;return e.createVNode(S.SkyCanAccess,{resource:q.resource,action:["create","edit"],column:t.source},{default:()=>[e.createVNode(l.ElFormItem,{class:"sky-data-list-input",label:b.value,prop:t.source,rules:t.rules,style:p?`grid-area: ${t.source}`:""},{default:()=>[e.createVNode(l.ElTable,e.mergeProps({data:a.value,border:!0,"max-height":"300"},m),{default:()=>[e.createVNode(l.ElTableColumn,{type:"index",label:"#",align:"center"},null),n.default?.().map(u=>e.createVNode(l.ElTableColumn,{label:u.props?.label||u.props.source,align:"center"},{default:({row:o})=>e.h(u,{modelValue:o[u.props.source],"onUpdate:modelValue":V=>o[u.props.source]=V})})),e.createVNode(l.ElTableColumn,{label:i("dataListInput.operate"),align:"center"},{default:({$index:u})=>{let o;return e.createVNode(l.ElButton,{type:"danger",text:!0,onClick:()=>v(u)},f(o=i("button.remove"))?o:{default:()=>[o]})}})]}),e.createVNode(l.ElButton,{class:"sky-data-list-input__button-add",onClick:y},f(r=i("button.add"))?r:{default:()=>[r]})]})]})}}});exports.SkyDataListInput=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/button/style/css");require("element-plus/es/components/form-item/style/css");require("element-plus/es/components/table/style/css");require("element-plus/es/components/table-column/style/css");const e=require("vue"),l=require("element-plus"),g=require("vue-router"),S=require("../can-access/index.cjs");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 N=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");const k=require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");const I=require("vue-i18n"),D=require("../data-list-item-input/index.cjs");function m(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const C=e.defineComponent({name:"SkyDataListInput",inheritAttrs:!1,props:{source:{type:String,required:!0},label:String,rules:Object,defaultValue:{type:Array,default:()=>[]},serialize:Function,unserialize:Function},setup(t,{attrs:f,slots:n}){const{t:i}=I.useI18n(),q=g.useRoute().meta,b=e.computed(()=>t.label||t.source),p=k.useFormGrid(),{formData:c,editData:s}=N.useForm(),a=e.ref([]),d=e.computed(()=>n.default?.().filter(r=>r.type===D.SkyDataListItemInput));if(typeof c[t.source]>"u"&&(a.value=t.defaultValue),s.value){const r=s.value[t.source];a.value=t.unserialize?.(r)??r}const y=()=>{const r=e.reactive({});if(d.value){for(const u of d.value)r[u.props.source]=u.props.defaultValue;a.value.push(r)}},v=r=>{a.value.splice(r,1)};return e.watch(a.value,()=>c[t.source]=t.serialize?.(a.value)??a.value,{deep:!0,immediate:!0}),()=>{let r;return e.createVNode(S.SkyCanAccess,{resource:q.resource,action:["create","edit"],column:t.source},{default:()=>[e.createVNode(l.ElFormItem,{class:"sky-data-list-input",label:b.value,prop:t.source,rules:t.rules,style:p?`grid-area: ${t.source}`:""},{default:()=>[e.createVNode(l.ElTable,e.mergeProps({data:a.value,border:!0,"max-height":"300"},f),{default:()=>[e.createVNode(l.ElTableColumn,{type:"index",label:"#",align:"center"},null),n.default?.().map(u=>e.createVNode(l.ElTableColumn,{label:u.props?.label||u.props.source,align:"center"},{default:({row:o})=>e.h(u,{modelValue:o[u.props.source],"onUpdate:modelValue":V=>o[u.props.source]=V})})),e.createVNode(l.ElTableColumn,{label:i("dataListInput.operate"),align:"center"},{default:({$index:u})=>{let o;return e.createVNode(l.ElButton,{type:"danger",text:!0,onClick:()=>v(u)},m(o=i("button.remove"))?o:{default:()=>[o]})}})]}),e.createVNode(l.ElButton,{class:"sky-data-list-input__button-add",onClick:y},m(r=i("button.add"))?r:{default:()=>[r]})]})]})}}});exports.SkyDataListInput=C;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/data-list-input/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElButton,\n ElFormItem,\n ElTable,\n ElTableColumn,\n type FormItemRule,\n type TableProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, reactive, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport { useForm, useFormGrid } from '@/hooks'\nimport { useI18n } from 'vue-i18n'\nimport { SkyDataListItemInput } from '../data-list-item-input'\n\nexport interface SkyDataListInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\n}\n\nexport const SkyDataListInput = defineComponent<\n SkyDataListInputProps & Partial<TableProps<Record<string, unknown>>>\n>({\n name: 'SkyDataListInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { attrs, slots }) {\n const { t } = useI18n()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const title = computed(() => props.label || props.source)\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const submitData = ref<Array<Record<string, unknown>>>([])\n const itemVNodes = computed(() =>\n slots.default?.().filter((vnode) => vnode.type === SkyDataListItemInput),\n )\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n const onAdd = () => {\n const item: Record<string, unknown> = reactive({})\n if (itemVNodes.value) {\n for (const vnode of itemVNodes.value) {\n item[vnode.props!.source] = vnode.props!.defaultValue\n }\n submitData.value.push(item)\n }\n }\n\n const onDelte = (index: number) => {\n submitData.value.splice(index, 1)\n }\n\n watch(\n submitData,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\n )\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-data-list-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElTable data={submitData.value} border max-height=\"300\" {...attrs}>\n <ElTableColumn type=\"index\" label=\"#\" align=\"center\" />\n {slots.default?.().map((vnode) => (\n <ElTableColumn label={vnode.props?.label || vnode.props!.source} align=\"center\">\n {{\n default: ({ row }: { row: Record<string, unknown> }) =>\n h(vnode, {\n modelValue: row[vnode.props!.source],\n 'onUpdate:modelValue': (v: unknown) => (row[vnode.props!.source] = v),\n }),\n }}\n </ElTableColumn>\n ))}\n <ElTableColumn label={t('dataListInput.operate')} align=\"center\">\n {{\n default: ({ $index }: { $index: number }) => (\n <ElButton type=\"danger\" text onClick={() => onDelte($index)}>\n {t('button.remove')}\n </ElButton>\n ),\n }}\n </ElTableColumn>\n </ElTable>\n <ElButton class=\"sky-data-list-input__button-add\" onClick={onAdd}>\n {t('button.add')}\n </ElButton>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyDataListInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","defaultValue","serialize","unserialize","slots","t","routeMeta","useRoute","title","computed","formGrid","useFormGrid","editData","submitData","ref","item","reactive","vnode","itemVNodes","_slot2","default","attrs","_createVNode","ElTableColumn","row","h","$index","_slot","onDelte"],"mappings":"inCAc8D,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAW9D,MAAAE,EAAAC,EAAAA,gBAAA,CAGEC,KAAAA,mBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,MAAAA,OACAC,aAAAA,CACEJ,KAAAA,sBAGFK,UAAAA,SACAC,YAAAA,2BAEoBC,MAAAA,CAAM,EAAA,OAClBC,EAAAA,eAERC,EADAC,EAAAA,SAAA,EACA,KACAC,EAAAC,EAAAA,SAAA,IAAAd,EAAA,OAAAA,EAAA,MAAA,EACAe,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAC,EAAAA,IAAA,EAAA,yGAMED,EAAAA,MAAAA,EAAAA,8EAMF,cAGE,MAAAE,EAAAC,EAAAA,SAAA,EAAA,cAEE,UAAAC,KAAAC,EAAA,MACEH,EAAAA,EAAAA,MAAAA,MAAAA,EAAAA,EAAAA,MAAAA,aAEFF,EAAAA,MAAAA,KAAAA,CAAAA,CACF,qGAYK,IAAAM,2DACqC,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAAxB,EAAA,MAAsB,EAAA,CAAAyB,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,CAAA,MAAA,gEAKtE,MAAAV,EAAA,cAAAf,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAyB,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,QAAAA,EAAAA,WAAAA,cAEpB,OAAA,GAAA,aAAA,KAAA,EAAAC,CAAA,EAAA,CAAmCD,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,gBAAAA,CAAA,KAAA,QAAA,MAAA,IAAA,MAAA,QAAA,EAAA,IAAA,EAAAhB,EAAA,UAAA,EAAA,IAAAa,GAAAK,EAAAA,YAAAC,gBAAA,sCAGC,MAAA,QAAA,EAAA,CAE3DH,QAAAA,CAAAA,CAAYI,IAAAA,CAAsC,IAAAC,EAAAA,EAAAR,EAAA,4EAI9C,CAAA,CAAA,EAAAK,EAAAA,YAAAC,gBAAA,kCAIsC,MAAA,QAAA,EAAA,CAE5CH,QAAAA,CAAAA,CAAYM,OAAAA,MAA4B,IAAAC,mCAAA,KAAA,SAAA,KAAA,GAAA,QAAA,IAAAC,EAAAF,CAAA,6CAEjB,CAAA,CAAA,CAEtB,CAAA,CAAA,8BAAA,MAAA,oFAKW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAK1B,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/data-list-input/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElButton,\n ElFormItem,\n ElTable,\n ElTableColumn,\n type FormItemRule,\n type TableProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, reactive, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport { useForm, useFormGrid } from '@/hooks'\nimport { useI18n } from 'vue-i18n'\nimport { SkyDataListItemInput } from '../data-list-item-input'\n\nexport interface SkyDataListInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\n}\n\nexport const SkyDataListInput = defineComponent<\n SkyDataListInputProps & Partial<TableProps<Record<string, unknown>>>\n>({\n name: 'SkyDataListInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { attrs, slots }) {\n const { t } = useI18n()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const title = computed(() => props.label || props.source)\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const submitData = ref<Array<Record<string, unknown>>>([])\n const itemVNodes = computed(() =>\n slots.default?.().filter((vnode) => vnode.type === SkyDataListItemInput),\n )\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n const onAdd = () => {\n const item: Record<string, unknown> = reactive({})\n if (itemVNodes.value) {\n for (const vnode of itemVNodes.value) {\n item[vnode.props!.source] = vnode.props!.defaultValue\n }\n submitData.value.push(item)\n }\n }\n\n const onDelte = (index: number) => {\n submitData.value.splice(index, 1)\n }\n\n watch(\n // submitData.value -> Reactive 对象,watch 会自动转成 deep: true 深度监听\n submitData.value,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\n {\n // 当然也可以显示给出 deep: true\n deep: true,\n immediate: true,\n },\n )\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-data-list-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElTable data={submitData.value} border max-height=\"300\" {...attrs}>\n <ElTableColumn type=\"index\" label=\"#\" align=\"center\" />\n {slots.default?.().map((vnode) => (\n <ElTableColumn label={vnode.props?.label || vnode.props!.source} align=\"center\">\n {{\n default: ({ row }: { row: Record<string, unknown> }) =>\n h(vnode, {\n modelValue: row[vnode.props!.source],\n 'onUpdate:modelValue': (v: unknown) => (row[vnode.props!.source] = v),\n }),\n }}\n </ElTableColumn>\n ))}\n <ElTableColumn label={t('dataListInput.operate')} align=\"center\">\n {{\n default: ({ $index }: { $index: number }) => (\n <ElButton type=\"danger\" text onClick={() => onDelte($index)}>\n {t('button.remove')}\n </ElButton>\n ),\n }}\n </ElTableColumn>\n </ElTable>\n <ElButton class=\"sky-data-list-input__button-add\" onClick={onAdd}>\n {t('button.add')}\n </ElButton>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyDataListInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","defaultValue","serialize","unserialize","slots","t","routeMeta","useRoute","title","computed","formGrid","useFormGrid","editData","submitData","ref","item","reactive","vnode","itemVNodes","deep","immediate","_slot2","default","attrs","_createVNode","ElTableColumn","row","h","$index","_slot","onDelte"],"mappings":"inCAc8D,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAW9D,MAAAE,EAAAC,EAAAA,gBAAA,CAGEC,KAAAA,mBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,MAAAA,OACAC,aAAAA,CACEJ,KAAAA,sBAGFK,UAAAA,SACAC,YAAAA,2BAEoBC,MAAAA,CAAM,EAAA,OAClBC,EAAAA,eAERC,EADAC,EAAAA,SAAA,EACA,KACAC,EAAAC,EAAAA,SAAA,IAAAd,EAAA,OAAAA,EAAA,MAAA,EACAe,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAC,EAAAA,IAAA,EAAA,yGAMED,EAAAA,MAAAA,EAAAA,8EAMF,cAGE,MAAAE,EAAAC,EAAAA,SAAA,EAAA,cAEE,UAAAC,KAAAC,EAAA,MACEH,EAAAA,EAAAA,MAAAA,MAAAA,EAAAA,EAAAA,MAAAA,aAEFF,EAAAA,MAAAA,KAAAA,CAAAA,CACF,sGAaEM,KAAAA,GACAC,UAAAA,EACF,CAAA,OAGK,IAAAC,2DACqC,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAA1B,EAAA,MAAsB,EAAA,CAAA2B,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,CAAA,MAAA,gEAKtE,MAAAZ,EAAA,cAAAf,EAAA,MAAA,GAAA,EACiC,EAAA,CAAA2B,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,QAAAA,EAAAA,WAAAA,cAEpB,OAAA,GAAA,aAAA,KAAA,EAAAC,CAAA,EAAA,CAAmCD,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,gBAAAA,CAAA,KAAA,QAAA,MAAA,IAAA,MAAA,QAAA,EAAA,IAAA,EAAAlB,EAAA,UAAA,EAAA,IAAAa,GAAAO,EAAAA,YAAAC,gBAAA,sCAGC,MAAA,QAAA,EAAA,CAE3DH,QAAAA,CAAAA,CAAYI,IAAAA,CAAsC,IAAAC,EAAAA,EAAAV,EAAA,4EAI9C,CAAA,CAAA,EAAAO,EAAAA,YAAAC,gBAAA,kCAIsC,MAAA,QAAA,EAAA,CAE5CH,QAAAA,CAAAA,CAAYM,OAAAA,MAA4B,IAAAC,mCAAA,KAAA,SAAA,KAAA,GAAA,QAAA,IAAAC,EAAAF,CAAA,6CAEjB,CAAA,CAAA,CAEtB,CAAA,CAAA,8BAAA,MAAA,oFAKW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAK1B,CACF,CAAA"}
@@ -24,10 +24,10 @@ import { useFormGrid as N } from "../../hooks/useFormGrid.mjs";
24
24
  import "../../hooks/useReferenceArrayInput.mjs";
25
25
  import { useI18n as O } from "vue-i18n";
26
26
  import { SkyDataListItemInput as G } from "../data-list-item-input/index.mjs";
27
- function f(t) {
28
- return typeof t == "function" || Object.prototype.toString.call(t) === "[object Object]" && !_(t);
27
+ function f(e) {
28
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !_(e);
29
29
  }
30
- const mt = /* @__PURE__ */ D({
30
+ const se = /* @__PURE__ */ D({
31
31
  name: "SkyDataListInput",
32
32
  inheritAttrs: !1,
33
33
  props: {
@@ -44,46 +44,55 @@ const mt = /* @__PURE__ */ D({
44
44
  serialize: Function,
45
45
  unserialize: Function
46
46
  },
47
- setup(t, {
47
+ setup(e, {
48
48
  attrs: b,
49
49
  slots: n
50
50
  }) {
51
51
  const {
52
52
  t: l
53
- } = O(), y = A().meta, v = p(() => t.label || t.source), g = N(), {
54
- formData: s,
55
- editData: m
56
- } = L(), r = I([]), c = p(() => n.default?.().filter((e) => e.type === G));
57
- if (typeof s[t.source] > "u" && (r.value = t.defaultValue), m.value) {
58
- const e = m.value[t.source];
59
- r.value = t.unserialize?.(e) ?? e;
53
+ } = O(), y = A().meta, v = p(() => e.label || e.source), g = N(), {
54
+ formData: m,
55
+ editData: s
56
+ } = L(), o = I([]), c = p(() => n.default?.().filter((t) => t.type === G));
57
+ if (typeof m[e.source] > "u" && (o.value = e.defaultValue), s.value) {
58
+ const t = s.value[e.source];
59
+ o.value = e.unserialize?.(t) ?? t;
60
60
  }
61
61
  const k = () => {
62
- const e = j({});
62
+ const t = j({});
63
63
  if (c.value) {
64
- for (const o of c.value)
65
- e[o.props.source] = o.props.defaultValue;
66
- r.value.push(e);
64
+ for (const r of c.value)
65
+ t[r.props.source] = r.props.defaultValue;
66
+ o.value.push(t);
67
67
  }
68
- }, S = (e) => {
69
- r.value.splice(e, 1);
68
+ }, S = (t) => {
69
+ o.value.splice(t, 1);
70
70
  };
71
- return h(r, () => s[t.source] = t.serialize?.(r.value) ?? r.value), () => {
72
- let e;
71
+ return h(
72
+ // submitData.value -> Reactive 对象,watch 会自动转成 deep: true 深度监听
73
+ o.value,
74
+ () => m[e.source] = e.serialize?.(o.value) ?? o.value,
75
+ {
76
+ // 当然也可以显示给出 deep: true
77
+ deep: !0,
78
+ immediate: !0
79
+ }
80
+ ), () => {
81
+ let t;
73
82
  return a(E, {
74
83
  resource: y.resource,
75
84
  action: ["create", "edit"],
76
- column: t.source
85
+ column: e.source
77
86
  }, {
78
87
  default: () => [a(x, {
79
88
  class: "sky-data-list-input",
80
89
  label: v.value,
81
- prop: t.source,
82
- rules: t.rules,
83
- style: g ? `grid-area: ${t.source}` : ""
90
+ prop: e.source,
91
+ rules: e.rules,
92
+ style: g ? `grid-area: ${e.source}` : ""
84
93
  }, {
85
94
  default: () => [a(z, C({
86
- data: r.value,
95
+ data: o.value,
87
96
  border: !0,
88
97
  "max-height": "300"
89
98
  }, b), {
@@ -91,28 +100,28 @@ const mt = /* @__PURE__ */ D({
91
100
  type: "index",
92
101
  label: "#",
93
102
  align: "center"
94
- }, null), n.default?.().map((o) => a(i, {
95
- label: o.props?.label || o.props.source,
103
+ }, null), n.default?.().map((r) => a(i, {
104
+ label: r.props?.label || r.props.source,
96
105
  align: "center"
97
106
  }, {
98
107
  default: ({
99
108
  row: u
100
- }) => F(o, {
101
- modelValue: u[o.props.source],
102
- "onUpdate:modelValue": (V) => u[o.props.source] = V
109
+ }) => F(r, {
110
+ modelValue: u[r.props.source],
111
+ "onUpdate:modelValue": (V) => u[r.props.source] = V
103
112
  })
104
113
  })), a(i, {
105
114
  label: l("dataListInput.operate"),
106
115
  align: "center"
107
116
  }, {
108
117
  default: ({
109
- $index: o
118
+ $index: r
110
119
  }) => {
111
120
  let u;
112
121
  return a(d, {
113
122
  type: "danger",
114
123
  text: !0,
115
- onClick: () => S(o)
124
+ onClick: () => S(r)
116
125
  }, f(u = l("button.remove")) ? u : {
117
126
  default: () => [u]
118
127
  });
@@ -121,8 +130,8 @@ const mt = /* @__PURE__ */ D({
121
130
  }), a(d, {
122
131
  class: "sky-data-list-input__button-add",
123
132
  onClick: k
124
- }, f(e = l("button.add")) ? e : {
125
- default: () => [e]
133
+ }, f(t = l("button.add")) ? t : {
134
+ default: () => [t]
126
135
  })]
127
136
  })]
128
137
  });
@@ -130,6 +139,6 @@ const mt = /* @__PURE__ */ D({
130
139
  }
131
140
  });
132
141
  export {
133
- mt as SkyDataListInput
142
+ se as SkyDataListInput
134
143
  };
135
144
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/data-list-input/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElButton,\n ElFormItem,\n ElTable,\n ElTableColumn,\n type FormItemRule,\n type TableProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, reactive, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport { useForm, useFormGrid } from '@/hooks'\nimport { useI18n } from 'vue-i18n'\nimport { SkyDataListItemInput } from '../data-list-item-input'\n\nexport interface SkyDataListInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\n}\n\nexport const SkyDataListInput = defineComponent<\n SkyDataListInputProps & Partial<TableProps<Record<string, unknown>>>\n>({\n name: 'SkyDataListInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { attrs, slots }) {\n const { t } = useI18n()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const title = computed(() => props.label || props.source)\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const submitData = ref<Array<Record<string, unknown>>>([])\n const itemVNodes = computed(() =>\n slots.default?.().filter((vnode) => vnode.type === SkyDataListItemInput),\n )\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n const onAdd = () => {\n const item: Record<string, unknown> = reactive({})\n if (itemVNodes.value) {\n for (const vnode of itemVNodes.value) {\n item[vnode.props!.source] = vnode.props!.defaultValue\n }\n submitData.value.push(item)\n }\n }\n\n const onDelte = (index: number) => {\n submitData.value.splice(index, 1)\n }\n\n watch(\n submitData,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\n )\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-data-list-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElTable data={submitData.value} border max-height=\"300\" {...attrs}>\n <ElTableColumn type=\"index\" label=\"#\" align=\"center\" />\n {slots.default?.().map((vnode) => (\n <ElTableColumn label={vnode.props?.label || vnode.props!.source} align=\"center\">\n {{\n default: ({ row }: { row: Record<string, unknown> }) =>\n h(vnode, {\n modelValue: row[vnode.props!.source],\n 'onUpdate:modelValue': (v: unknown) => (row[vnode.props!.source] = v),\n }),\n }}\n </ElTableColumn>\n ))}\n <ElTableColumn label={t('dataListInput.operate')} align=\"center\">\n {{\n default: ({ $index }: { $index: number }) => (\n <ElButton type=\"danger\" text onClick={() => onDelte($index)}>\n {t('button.remove')}\n </ElButton>\n ),\n }}\n </ElTableColumn>\n </ElTable>\n <ElButton class=\"sky-data-list-input__button-add\" onClick={onAdd}>\n {t('button.add')}\n </ElButton>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyDataListInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","defaultValue","serialize","unserialize","slots","t","routeMeta","useRoute","title","computed","formGrid","useFormGrid","editData","submitData","ref","item","reactive","vnode","itemVNodes","_slot2","default","attrs","_createVNode","ElTableColumn","row","h","$index","_slot","onDelte"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAc8D,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAW9D,MAAAE,KAAA,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,IACAC,cAAAA;AAAAA,MACEJ,MAAAA;AAAAA;;IAGFK,WAAAA;AAAAA,IACAC,aAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;;MAClBC,GAAAA;AAAAA,aAERC,IADAC,EAAA,EACA,MACAC,IAAAC,EAAA,MAAAd,EAAA,SAAAA,EAAA,MAAA,GACAe,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAC,EAAA,EAAA;qCAMED,EAAAA,QAAAA,EAAAA;;;IAMF;;AAGE,YAAAE,IAAAC,EAAA,EAAA;;AAEE,mBAAAC,KAAAC,EAAA;AACEH,UAAAA,EAAAA,EAAAA,MAAAA,MAAAA,IAAAA,EAAAA,MAAAA;AAEFF,QAAAA,EAAAA,MAAAA,KAAAA,CAAAA;AAAAA,MACF;AAAA;;;;AAYK,UAAAM;;;QACqC,QAAA,CAAA,UAAA,MAAA;AAAA,QAA4B,QAAAxB,EAAA;AAAA,MAAsB,GAAA;AAAA,QAAAyB,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA,UAAA,OAAA;AAAA;;;UAKtE,OAAAV,IAAA,cAAAf,EAAA,MAAA,KAAA;AAAA,QACiC,GAAA;AAAA,UAAAyB,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;YAEpB,QAAA;AAAA,YAAA,cAAA;AAAA,UAAA,GAAAC,CAAA,GAAA;AAAA,YAAmCD,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA,cAAA,MAAA;AAAA,cAAA,OAAA;AAAA,cAAA,OAAA;AAAA,YAAA,GAAA,IAAA,GAAAhB,EAAA,UAAA,EAAA,IAAA,CAAAa,MAAAK,EAAAC,GAAA;AAAA;cAGC,OAAA;AAAA,YAAA,GAAA;AAAA,cAE3DH,SAAAA,CAAAA;AAAAA,gBAAYI,KAAAA;AAAAA,cAAsC,MAAAC,EAAAR,GAAA;AAAA;;;YAI9C,CAAA,CAAA,GAAAK,EAAAC,GAAA;AAAA;cAIsC,OAAA;AAAA,YAAA,GAAA;AAAA,cAE5CH,SAAAA,CAAAA;AAAAA,gBAAYM,QAAAA;AAAAA;AAA4B,oBAAAC;;kBAAA,MAAA;AAAA,kBAAA,MAAA;AAAA,kBAAA,SAAA,MAAAC,EAAAF,CAAA;AAAA;;gBAEjB,CAAA;AAAA,cAAA;AAAA,YAEtB,CAAA,CAAA;AAAA;YAAA,OAAA;AAAA;;;UAKW,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAK1B;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/data-list-input/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElButton,\n ElFormItem,\n ElTable,\n ElTableColumn,\n type FormItemRule,\n type TableProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, reactive, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport { useForm, useFormGrid } from '@/hooks'\nimport { useI18n } from 'vue-i18n'\nimport { SkyDataListItemInput } from '../data-list-item-input'\n\nexport interface SkyDataListInputProps {\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\n}\n\nexport const SkyDataListInput = defineComponent<\n SkyDataListInputProps & Partial<TableProps<Record<string, unknown>>>\n>({\n name: 'SkyDataListInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { attrs, slots }) {\n const { t } = useI18n()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const title = computed(() => props.label || props.source)\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const submitData = ref<Array<Record<string, unknown>>>([])\n const itemVNodes = computed(() =>\n slots.default?.().filter((vnode) => vnode.type === SkyDataListItemInput),\n )\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n const onAdd = () => {\n const item: Record<string, unknown> = reactive({})\n if (itemVNodes.value) {\n for (const vnode of itemVNodes.value) {\n item[vnode.props!.source] = vnode.props!.defaultValue\n }\n submitData.value.push(item)\n }\n }\n\n const onDelte = (index: number) => {\n submitData.value.splice(index, 1)\n }\n\n watch(\n // submitData.value -> Reactive 对象,watch 会自动转成 deep: true 深度监听\n submitData.value,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\n {\n // 当然也可以显示给出 deep: true\n deep: true,\n immediate: true,\n },\n )\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-data-list-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElTable data={submitData.value} border max-height=\"300\" {...attrs}>\n <ElTableColumn type=\"index\" label=\"#\" align=\"center\" />\n {slots.default?.().map((vnode) => (\n <ElTableColumn label={vnode.props?.label || vnode.props!.source} align=\"center\">\n {{\n default: ({ row }: { row: Record<string, unknown> }) =>\n h(vnode, {\n modelValue: row[vnode.props!.source],\n 'onUpdate:modelValue': (v: unknown) => (row[vnode.props!.source] = v),\n }),\n }}\n </ElTableColumn>\n ))}\n <ElTableColumn label={t('dataListInput.operate')} align=\"center\">\n {{\n default: ({ $index }: { $index: number }) => (\n <ElButton type=\"danger\" text onClick={() => onDelte($index)}>\n {t('button.remove')}\n </ElButton>\n ),\n }}\n </ElTableColumn>\n </ElTable>\n <ElButton class=\"sky-data-list-input__button-add\" onClick={onAdd}>\n {t('button.add')}\n </ElButton>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyDataListInput","defineComponent","name","inheritAttrs","props","source","type","required","label","rules","defaultValue","serialize","unserialize","slots","t","routeMeta","useRoute","title","computed","formGrid","useFormGrid","editData","submitData","ref","item","reactive","vnode","itemVNodes","deep","immediate","_slot2","default","attrs","_createVNode","ElTableColumn","row","h","$index","_slot","onDelte"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAc8D,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAW9D,MAAAE,KAAA,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,IACAC,cAAAA;AAAAA,MACEJ,MAAAA;AAAAA;;IAGFK,WAAAA;AAAAA,IACAC,aAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;;MAClBC,GAAAA;AAAAA,aAERC,IADAC,EAAA,EACA,MACAC,IAAAC,EAAA,MAAAd,EAAA,SAAAA,EAAA,MAAA,GACAe,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAC,EAAA,EAAA;qCAMED,EAAAA,QAAAA,EAAAA;;;IAMF;;AAGE,YAAAE,IAAAC,EAAA,EAAA;;AAEE,mBAAAC,KAAAC,EAAA;AACEH,UAAAA,EAAAA,EAAAA,MAAAA,MAAAA,IAAAA,EAAAA,MAAAA;AAEFF,QAAAA,EAAAA,MAAAA,KAAAA,CAAAA;AAAAA,MACF;AAAA;;;;;;;;;QAaEM,MAAAA;AAAAA,QACAC,WAAAA;AAAAA,MACF;AAAA,IAAA;AAGK,UAAAC;;;QACqC,QAAA,CAAA,UAAA,MAAA;AAAA,QAA4B,QAAA1B,EAAA;AAAA,MAAsB,GAAA;AAAA,QAAA2B,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA,UAAA,OAAA;AAAA;;;UAKtE,OAAAZ,IAAA,cAAAf,EAAA,MAAA,KAAA;AAAA,QACiC,GAAA;AAAA,UAAA2B,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;YAEpB,QAAA;AAAA,YAAA,cAAA;AAAA,UAAA,GAAAC,CAAA,GAAA;AAAA,YAAmCD,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA,cAAA,MAAA;AAAA,cAAA,OAAA;AAAA,cAAA,OAAA;AAAA,YAAA,GAAA,IAAA,GAAAlB,EAAA,UAAA,EAAA,IAAA,CAAAa,MAAAO,EAAAC,GAAA;AAAA;cAGC,OAAA;AAAA,YAAA,GAAA;AAAA,cAE3DH,SAAAA,CAAAA;AAAAA,gBAAYI,KAAAA;AAAAA,cAAsC,MAAAC,EAAAV,GAAA;AAAA;;;YAI9C,CAAA,CAAA,GAAAO,EAAAC,GAAA;AAAA;cAIsC,OAAA;AAAA,YAAA,GAAA;AAAA,cAE5CH,SAAAA,CAAAA;AAAAA,gBAAYM,QAAAA;AAAAA;AAA4B,oBAAAC;;kBAAA,MAAA;AAAA,kBAAA,MAAA;AAAA,kBAAA,SAAA,MAAAC,EAAAF,CAAA;AAAA;;gBAEjB,CAAA;AAAA,cAAA;AAAA,YAEtB,CAAA,CAAA;AAAA;YAAA,OAAA;AAAA;;;UAKW,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAK1B;AACF,CAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/form-item/style/css");const t=require("vue"),m=require("element-plus"),f=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 v=require("../can-access/index.cjs"),S=require("../file-multiple-model-input/index.cjs"),F=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},defaultValue:{type:Array,default:()=>[]},serialize:Function,unserialize:Function},setup(e,{slots:i,attrs:n}){const o=f.useRoute(),d=y.useFormGrid(),{formData:a,editData:l}=q.useForm(),c=t.computed(()=>e.label||e.source),s=o.meta,u=t.ref([]);if(typeof a[e.source]>"u"&&(u.value=e.defaultValue),l.value){const r=l.value[e.source];u.value=e.unserialize?.(r)??r}return t.watch(u,()=>a[e.source]=e.serialize?.(u.value)??u.value),()=>t.createVNode(v.SkyCanAccess,{resource:s.resource,action:["create","edit"],column:e.source},{default:()=>[t.createVNode(m.ElFormItem,{class:["sky-file-multiple-input",`is-${e.type}`],label:c.value,prop:e.source,rules:e.rules,style:d?`grid-area: ${e.source}`:""},{default:()=>[t.createVNode(S.SkyFileMultipleModelInput,t.mergeProps({modelValue:u.value,"onUpdate:modelValue":r=>u.value=r,type:e.type,dataName:e.dataName,dataUrl:e.dataUrl,limit:e.limit,autoUpload:e.autoUpload},n),{default:()=>[i.default?.()]})]})]})}});exports.SkyFileMultipleInput=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/form-item/style/css");const t=require("vue"),f=require("element-plus"),q=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 y=require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");require("../../hooks/useTreeWithDetails.cjs");const S=require("../../hooks/useFormGrid.cjs");require("../../hooks/useReferenceArrayInput.cjs");require("vue-i18n");const F=require("../can-access/index.cjs"),g=require("../file-multiple-model-input/index.cjs"),v=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},defaultValue:{type:Array,default:()=>[]},serialize:Function,unserialize:Function},setup(e,{slots:a,attrs:n}){const o=q.useRoute(),d=S.useFormGrid(),{formData:i,editData:l}=y.useForm(),c=t.computed(()=>e.label||e.source),r=t.ref([]),s=o.meta;if(typeof i[e.source]>"u"&&(r.value=e.defaultValue),l.value){const u=l.value[e.source];r.value=e.unserialize?.(u)??u}const m=u=>i[e.source]=e.serialize?.(u)??u;return()=>t.createVNode(F.SkyCanAccess,{resource:s.resource,action:["create","edit"],column:e.source},{default:()=>[t.createVNode(f.ElFormItem,{class:["sky-file-multiple-input",`is-${e.type}`],label:c.value,prop:e.source,rules:e.rules,style:d?`grid-area: ${e.source}`:""},{default:()=>[t.createVNode(g.SkyFileMultipleModelInput,t.mergeProps({modelValue:r.value,"onUpdate:modelValue":m,type:e.type,dataName:e.dataName,dataUrl:e.dataUrl,limit:e.limit,autoUpload:e.autoUpload},n),{default:()=>[a.default?.()]})]})]})}});exports.SkyFileMultipleInput=v;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
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, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid } 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 defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\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 defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { slots, attrs }) {\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 routeMeta = route.meta as SkyLayoutRouteMeta\n const submitData = ref<Array<Record<string, unknown>>>([])\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n watch(\n submitData,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\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={submitData.value}\n onUpdate:modelValue={(v) => (submitData.value = 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","defaultValue","serialize","unserialize","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","routeMeta","submitData","ref","v"],"mappings":"08BAsBAA,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,IAEFK,aAAAA,CACET,KAAAA,sBAGFU,UAAAA,SACAC,YAAAA,2BAEoBC,MAAAA,CAAM,EAAA,CAC1B,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAC,EAAAA,SAAA,IAAArB,EAAA,OAAAA,EAAA,MAAA,EAEAsB,EAAAP,EAAA,KACAQ,EAAAC,EAAAA,IAAA,EAAA,8BAGED,EAAAA,MAAAA,EAAAA,8EAMF,yHAQ4C,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAAvB,EAAA,MAAsB,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,4FAKtE,MAAAW,EAAA,cAAAjB,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,0BAAAA,EAAAA,WAAAA,oBAGrB,sBAAAmB,GAAAF,EAAA,MAAAE,kEAKV,WAAAzB,EAAA,UACU,EAAAc,CAAA,EAAA,CACnBR,QAAAA,IAAAA,CAAAA,EAAAA,UAAAA,CAAAA,CAES,CAAA,CAAA,CAAA,CAAA,CAAA,GAK5B,CACF,CAAA"}
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, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid } 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 defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\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 defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { slots, attrs }) {\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 给 modelValue 仅仅是初始化的作用,不依赖它的双向绑定\n const fileList = ref<Array<Record<string, unknown>>>([])\n const routeMeta = route.meta as SkyLayoutRouteMeta\n // const submitData = ref<Array<Record<string, unknown>>>([])\n\n if (typeof formData[props.source] === 'undefined') {\n fileList.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n fileList.value = props.unserialize?.(ed) ?? ed\n }\n\n const onUpdate = (v: Array<Record<string, unknown>>) =>\n (formData[props.source] = props.serialize?.(v) ?? v)\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={fileList.value}\n onUpdate:modelValue={onUpdate}\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","defaultValue","serialize","unserialize","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","fileList","ref","routeMeta","onUpdate","v","formData"],"mappings":"08BAsBAA,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,IAEFK,aAAAA,CACET,KAAAA,sBAGFU,UAAAA,SACAC,YAAAA,2BAEoBC,MAAAA,CAAM,EAAA,CAC1B,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAC,EAAAA,SAAA,IAAArB,EAAA,OAAAA,EAAA,MAAA,EAEAsB,EAAAC,EAAAA,IAAA,EAAA,EACAC,EAAAT,EAAA,iCAIEO,EAAAA,MAAAA,EAAAA,8EAMF,CAEA,MAAAG,EAAAC,GAAAC,EAAA3B,EAAA,MAAA,EAAAA,EAAA,YAAA0B,CAAA,GAAAA,8DAI4C,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAA1B,EAAA,MAAsB,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,4FAKtE,MAAAW,EAAA,cAAAjB,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAM,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,0BAAAA,EAAAA,WAAAA,oBAGvB,sBAAAmB,kEAKR,WAAAzB,EAAA,UACU,EAAAc,CAAA,EAAA,CACnBR,QAAAA,IAAAA,CAAAA,EAAAA,UAAAA,CAAAA,CAES,CAAA,CAAA,CAAA,CAAA,CAAA,GAK5B,CACF,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import "element-plus/es/components/form-item/style/css";
2
- import { defineComponent as f, computed as s, ref as p, watch as y, createVNode as l, mergeProps as v } from "vue";
3
- import { ElFormItem as S } from "element-plus";
4
- import { useRoute as F } from "vue-router";
2
+ import { defineComponent as s, computed as p, ref as y, createVNode as r, mergeProps as S } from "vue";
3
+ import { ElFormItem as F } from "element-plus";
4
+ import { useRoute as U } from "vue-router";
5
5
  import "../../hooks/useUser.mjs";
6
6
  import "../../hooks/usePermission.mjs";
7
7
  import "../../hooks/useMenu.mjs";
@@ -16,12 +16,12 @@ import { useForm as g } from "../../hooks/useForm.mjs";
16
16
  import "../../hooks/useShow.mjs";
17
17
  import "../../hooks/useReferenceArrayField.mjs";
18
18
  import "../../hooks/useTreeWithDetails.mjs";
19
- import { useFormGrid as U } from "../../hooks/useFormGrid.mjs";
19
+ import { useFormGrid as b } from "../../hooks/useFormGrid.mjs";
20
20
  import "../../hooks/useReferenceArrayInput.mjs";
21
21
  import "vue-i18n";
22
- import { SkyCanAccess as b } from "../can-access/index.mjs";
23
- import { SkyFileMultipleModelInput as k } from "../file-multiple-model-input/index.mjs";
24
- const L = /* @__PURE__ */ f({
22
+ import { SkyCanAccess as k } from "../can-access/index.mjs";
23
+ import { SkyFileMultipleModelInput as v } from "../file-multiple-model-input/index.mjs";
24
+ const K = /* @__PURE__ */ s({
25
25
  name: "SkyFileMultipleInput",
26
26
  inheritAttrs: !1,
27
27
  props: {
@@ -59,45 +59,46 @@ const L = /* @__PURE__ */ f({
59
59
  unserialize: Function
60
60
  },
61
61
  setup(e, {
62
- slots: u,
63
- attrs: o
62
+ slots: o,
63
+ attrs: u
64
64
  }) {
65
- const m = F(), d = U(), {
66
- formData: r,
67
- editData: i
68
- } = g(), n = s(() => e.label || e.source), c = m.meta, t = p([]);
69
- if (typeof r[e.source] > "u" && (t.value = e.defaultValue), i.value) {
70
- const a = i.value[e.source];
71
- t.value = e.unserialize?.(a) ?? a;
65
+ const m = U(), n = b(), {
66
+ formData: a,
67
+ editData: l
68
+ } = g(), d = p(() => e.label || e.source), i = y([]), f = m.meta;
69
+ if (typeof a[e.source] > "u" && (i.value = e.defaultValue), l.value) {
70
+ const t = l.value[e.source];
71
+ i.value = e.unserialize?.(t) ?? t;
72
72
  }
73
- return y(t, () => r[e.source] = e.serialize?.(t.value) ?? t.value), () => l(b, {
74
- resource: c.resource,
73
+ const c = (t) => a[e.source] = e.serialize?.(t) ?? t;
74
+ return () => r(k, {
75
+ resource: f.resource,
75
76
  action: ["create", "edit"],
76
77
  column: e.source
77
78
  }, {
78
- default: () => [l(S, {
79
+ default: () => [r(F, {
79
80
  class: ["sky-file-multiple-input", `is-${e.type}`],
80
- label: n.value,
81
+ label: d.value,
81
82
  prop: e.source,
82
83
  rules: e.rules,
83
- style: d ? `grid-area: ${e.source}` : ""
84
+ style: n ? `grid-area: ${e.source}` : ""
84
85
  }, {
85
- default: () => [l(k, v({
86
- modelValue: t.value,
87
- "onUpdate:modelValue": (a) => t.value = a,
86
+ default: () => [r(v, S({
87
+ modelValue: i.value,
88
+ "onUpdate:modelValue": c,
88
89
  type: e.type,
89
90
  dataName: e.dataName,
90
91
  dataUrl: e.dataUrl,
91
92
  limit: e.limit,
92
93
  autoUpload: e.autoUpload
93
- }, o), {
94
- default: () => [u.default?.()]
94
+ }, u), {
95
+ default: () => [o.default?.()]
95
96
  })]
96
97
  })]
97
98
  });
98
99
  }
99
100
  });
100
101
  export {
101
- L as SkyFileMultipleInput
102
+ K as SkyFileMultipleInput
102
103
  };
103
104
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
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, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid } 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 defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\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 defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { slots, attrs }) {\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 routeMeta = route.meta as SkyLayoutRouteMeta\n const submitData = ref<Array<Record<string, unknown>>>([])\n\n if (typeof formData[props.source] === 'undefined') {\n submitData.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n submitData.value = props.unserialize?.(ed) ?? ed\n }\n\n watch(\n submitData,\n () => (formData[props.source] = props.serialize?.(submitData.value) ?? submitData.value),\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={submitData.value}\n onUpdate:modelValue={(v) => (submitData.value = 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","defaultValue","serialize","unserialize","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","routeMeta","submitData","ref","v"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBA,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;IAEFK,cAAAA;AAAAA,MACET,MAAAA;AAAAA;;IAGFU,WAAAA;AAAAA,IACAC,aAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;AAC1B,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAC,EAAA,MAAArB,EAAA,SAAAA,EAAA,MAAA,GAEAsB,IAAAP,EAAA,MACAQ,IAAAC,EAAA,EAAA;qCAGED,EAAAA,QAAAA,EAAAA;;;IAMF;;;MAQ4C,QAAA,CAAA,UAAA,MAAA;AAAA,MAA4B,QAAAvB,EAAA;AAAA,IAAsB,GAAA;AAAA,MAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;;;;QAKtE,OAAAW,IAAA,cAAAjB,EAAA,MAAA,KAAA;AAAA,MACiC,GAAA;AAAA,QAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;UAGrB,uBAAA,CAAAmB,MAAAF,EAAA,QAAAE;AAAA;;;;UAKV,YAAAzB,EAAA;AAAA,QACU,GAAAc,CAAA,GAAA;AAAA,UACnBR,SAAAA,MAAAA,CAAAA,EAAAA,UAAAA,CAAAA;AAAAA,QAES,CAAA,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA;EAK5B;AACF,CAAA;"}
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, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid } 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 defaultValue?: Array<Record<string, unknown>>\n serialize?: (v: Array<Record<string, unknown>>) => unknown\n unserialize?: (v: unknown) => Array<Record<string, unknown>>\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 defaultValue: {\n type: Array,\n default: () => [],\n },\n serialize: Function,\n unserialize: Function,\n },\n setup(props, { slots, attrs }) {\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 给 modelValue 仅仅是初始化的作用,不依赖它的双向绑定\n const fileList = ref<Array<Record<string, unknown>>>([])\n const routeMeta = route.meta as SkyLayoutRouteMeta\n // const submitData = ref<Array<Record<string, unknown>>>([])\n\n if (typeof formData[props.source] === 'undefined') {\n fileList.value = props.defaultValue!\n }\n\n if (editData.value) {\n const ed = editData.value[props.source] as Array<Record<string, unknown>>\n fileList.value = props.unserialize?.(ed) ?? ed\n }\n\n const onUpdate = (v: Array<Record<string, unknown>>) =>\n (formData[props.source] = props.serialize?.(v) ?? v)\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={fileList.value}\n onUpdate:modelValue={onUpdate}\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","defaultValue","serialize","unserialize","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","fileList","ref","routeMeta","onUpdate","v","formData"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBA,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;IAEFK,cAAAA;AAAAA,MACET,MAAAA;AAAAA;;IAGFU,WAAAA;AAAAA,IACAC,aAAAA;AAAAA;;;IAEoBC,OAAAA;AAAAA,EAAM,GAAA;AAC1B,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAC,EAAA,MAAArB,EAAA,SAAAA,EAAA,MAAA,GAEAsB,IAAAC,EAAA,EAAA,GACAC,IAAAT,EAAA;qCAIEO,EAAAA,QAAAA,EAAAA;;;IAMF;AAEA,UAAAG,IAAA,CAAAC,MAAAC,EAAA3B,EAAA,MAAA,IAAAA,EAAA,YAAA0B,CAAA,KAAAA;;;MAI4C,QAAA,CAAA,UAAA,MAAA;AAAA,MAA4B,QAAA1B,EAAA;AAAA,IAAsB,GAAA;AAAA,MAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;;;;QAKtE,OAAAW,IAAA,cAAAjB,EAAA,MAAA,KAAA;AAAA,MACiC,GAAA;AAAA,QAAAM,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA;UAGvB,uBAAAmB;AAAA;;;;UAKR,YAAAzB,EAAA;AAAA,QACU,GAAAc,CAAA,GAAA;AAAA,UACnBR,SAAAA,MAAAA,CAAAA,EAAAA,UAAAA,CAAAA;AAAAA,QAES,CAAA,CAAA;AAAA,MAAA,CAAA,CAAA;AAAA;EAK5B;AACF,CAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skyline-vue-admin",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },