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.
- package/dist/components/data-list-input/index.cjs +1 -1
- package/dist/components/data-list-input/index.cjs.map +1 -1
- package/dist/components/data-list-input/index.mjs +43 -34
- package/dist/components/data-list-input/index.mjs.map +1 -1
- package/dist/components/file-multiple-input/index.cjs +1 -1
- package/dist/components/file-multiple-input/index.cjs.map +1 -1
- package/dist/components/file-multiple-input/index.mjs +28 -27
- package/dist/components/file-multiple-input/index.mjs.map +1 -1
- 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/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
|
|
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,
|
|
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(
|
|
28
|
-
return typeof
|
|
27
|
+
function f(e) {
|
|
28
|
+
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !_(e);
|
|
29
29
|
}
|
|
30
|
-
const
|
|
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(
|
|
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(() =>
|
|
54
|
-
formData:
|
|
55
|
-
editData:
|
|
56
|
-
} = L(),
|
|
57
|
-
if (typeof
|
|
58
|
-
const
|
|
59
|
-
|
|
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
|
|
62
|
+
const t = j({});
|
|
63
63
|
if (c.value) {
|
|
64
|
-
for (const
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
for (const r of c.value)
|
|
65
|
+
t[r.props.source] = r.props.defaultValue;
|
|
66
|
+
o.value.push(t);
|
|
67
67
|
}
|
|
68
|
-
}, S = (
|
|
69
|
-
|
|
68
|
+
}, S = (t) => {
|
|
69
|
+
o.value.splice(t, 1);
|
|
70
70
|
};
|
|
71
|
-
return h(
|
|
72
|
-
|
|
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:
|
|
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:
|
|
82
|
-
rules:
|
|
83
|
-
style: g ? `grid-area: ${
|
|
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:
|
|
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((
|
|
95
|
-
label:
|
|
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(
|
|
101
|
-
modelValue: u[
|
|
102
|
-
"onUpdate:modelValue": (V) => u[
|
|
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:
|
|
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(
|
|
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(
|
|
125
|
-
default: () => [
|
|
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
|
-
|
|
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
|
|
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"),
|
|
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
|
|
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
|
|
3
|
-
import { ElFormItem as
|
|
4
|
-
import { useRoute as
|
|
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
|
|
19
|
+
import { useFormGrid as b } from "../../hooks/useFormGrid.mjs";
|
|
20
20
|
import "../../hooks/useReferenceArrayInput.mjs";
|
|
21
21
|
import "vue-i18n";
|
|
22
|
-
import { SkyCanAccess as
|
|
23
|
-
import { SkyFileMultipleModelInput as
|
|
24
|
-
const
|
|
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:
|
|
63
|
-
attrs:
|
|
62
|
+
slots: o,
|
|
63
|
+
attrs: u
|
|
64
64
|
}) {
|
|
65
|
-
const m =
|
|
66
|
-
formData:
|
|
67
|
-
editData:
|
|
68
|
-
} = g(),
|
|
69
|
-
if (typeof
|
|
70
|
-
const
|
|
71
|
-
|
|
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
|
-
|
|
74
|
-
|
|
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: () => [
|
|
79
|
+
default: () => [r(F, {
|
|
79
80
|
class: ["sky-file-multiple-input", `is-${e.type}`],
|
|
80
|
-
label:
|
|
81
|
+
label: d.value,
|
|
81
82
|
prop: e.source,
|
|
82
83
|
rules: e.rules,
|
|
83
|
-
style:
|
|
84
|
+
style: n ? `grid-area: ${e.source}` : ""
|
|
84
85
|
}, {
|
|
85
|
-
default: () => [
|
|
86
|
-
modelValue:
|
|
87
|
-
"onUpdate:modelValue":
|
|
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
|
-
},
|
|
94
|
-
default: () => [
|
|
94
|
+
}, u), {
|
|
95
|
+
default: () => [o.default?.()]
|
|
95
96
|
})]
|
|
96
97
|
})]
|
|
97
98
|
});
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
export {
|
|
101
|
-
|
|
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
|
|
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;"}
|