skyline-vue-admin 0.0.13 → 0.0.14
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/card/style/css");require("element-plus/es/components/col/style/css");require("element-plus/es/components/row/style/css");require("element-plus/es/components/skeleton/style/css");require("element-plus/es/components/tree/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("element-plus/es/components/card/style/css");require("element-plus/es/components/col/style/css");require("element-plus/es/components/row/style/css");require("element-plus/es/components/skeleton/style/css");require("element-plus/es/components/tree/style/css");const e=require("vue");require("../../hooks/useUser.cjs");require("../../hooks/usePermission.cjs");require("../../hooks/useMenu.cjs");require("../../hooks/useTab.cjs");require("../../hooks/useRouteKeepAlive.cjs");require("../../hooks/useSize.cjs");require("../../hooks/useLang.cjs");require("../../hooks/useTheme.cjs");require("../../hooks/useList.cjs");require("../../hooks/useHiddenTitle.cjs");require("../../hooks/useForm.cjs");require("../../hooks/useShow.cjs");require("../../hooks/useReferenceArrayField.cjs");const h=require("../../hooks/useTreeWithDetails.cjs");require("../../hooks/useFormGrid.cjs");const m=require("../../hooks/useReferenceArrayInput.cjs"),C=require("../../setup/index.cjs"),S=require("@vueuse/core"),n=require("element-plus"),k=require("vue-router"),E=e.defineComponent({name:"SkyTreeWithDetails",inheritAttrs:!1,props:{create:Object,edit:Object,optionChildren:{type:String,default:"children"},optionName:{type:String,default:"name"},nodeKey:{type:String,default:"id"},size:{type:Number,default:30}},setup(t,{attrs:v}){const d=k.useRoute();let o;const{state:s,isLoading:c,execute:i}=S.useAsyncState(async a=>(o=new AbortController,C.skyConfig.dataProvider?.getList?.(d.meta.resource,{pagination:{page:1,perPage:t.size},filter:a,signal:o.signal})),void 0,{immediate:!0}),y=a=>{r.value===a[t.nodeKey]?r.value=void 0:r.value=a[t.nodeKey]},q=a=>{u.value=void 0,l.value=a[t.nodeKey]},g=()=>{l.value=void 0},r=e.ref(),u=e.ref(),l=e.ref(),f=e.ref(0);h.useProvideTreeWithDetails({createSuccess:async a=>{await i(),f.value++,a.data?.[t.nodeKey]&&(u.value=a.data[t.nodeKey])},editSuccess:async()=>{await i()},deleteSuccess:async()=>{await i(),r.value===u.value&&(u.value=void 0),r.value=void 0}}),m.useProvideReferenceArrayInput({reference:d.meta.resource,getList:a=>i(0,a),listData:s,listLoading:c});const N=e.computed(()=>r.value?[r.value]:u.value?[u.value]:l.value?[l.value]:[]);return()=>e.createVNode("div",{class:"sky-tree-with-details"},[e.createVNode(n.ElRow,null,{default:()=>[e.createVNode(n.ElCol,{span:8},{default:()=>[e.createVNode(n.ElCard,null,{default:()=>[e.createVNode(n.ElSkeleton,{loading:c.value,animated:!0},{default:()=>[e.createVNode(n.ElTree,e.mergeProps({data:s.value?.data,props:{children:t.optionChildren,label:t.optionName},defaultExpandAll:!1,accordion:!0,expandOnClickNode:!1,nodeKey:t.nodeKey,"onNode-click":y,"onNode-expand":q,"onNode-collapse":g,highlightCurrent:!0,currentNodeKey:r.value,defaultExpandedKeys:N.value},v),null)]})]})]}),e.createVNode(n.ElCol,{offset:1,span:15},{default:()=>[r.value?t.edit?e.h(t.edit,{key:r.value,dataId:r.value}):null:t.create?e.h(t.create,{key:f.value}):null]})]})])}});exports.SkyTreeWithDetails=E;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/tree-with-details/index.tsx"],"sourcesContent":["import { useProvideReferenceArrayInput, useProvideTreeWithDetails } from '@/hooks'\nimport type { CreateResult, GetListResult, Identifier } from '@/provides'\nimport { skyConfig, type SkyComponent } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElCard, ElCol, ElRow, ElSkeleton, ElTree } from 'element-plus'\nimport { computed, defineComponent, h, ref } from 'vue'\nimport { useRoute } from 'vue-router'\n\nexport interface SkyTreeWithDetailsProps {\n create?: SkyComponent\n edit?: SkyComponent\n optionChildren?: string\n optionName?: string\n nodeKey?: string\n size?: number\n}\n\nexport const SkyTreeWithDetails = defineComponent<SkyTreeWithDetailsProps>({\n name: 'SkyTreeWithDetails',\n inheritAttrs: false,\n props: {\n create: Object,\n edit: Object,\n optionChildren: {\n type: String,\n default: 'children',\n },\n optionName: {\n type: String,\n default: 'name',\n },\n nodeKey: {\n type: String,\n default: 'id',\n },\n size: {\n type: Number,\n default: 30,\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n\n let controller: AbortController | undefined\n const { state, isLoading, execute } = useAsyncState<\n GetListResult | undefined,\n [filter?: Record<string, unknown>]\n >(\n async (filter) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.getList?.(route.meta.resource as string, {\n pagination: { page: 1, perPage: props.size! },\n filter,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const onNodeClick = (node: Record<string, unknown>) => {\n if (editId.value === node[props.nodeKey!]) {\n // 再次点击选中的节点,退出编辑\n editId.value = undefined\n } else {\n editId.value = node[props.nodeKey!] as Identifier\n }\n }\n\n const editId = ref<Identifier>()\n const lastCreateId = ref<Identifier>()\n const createNum = ref(0)\n\n useProvideTreeWithDetails({\n createSuccess: async (result: CreateResult) => {\n await execute()\n createNum.value++\n if (result.data?.[props.nodeKey!]) {\n lastCreateId.value = result.data[props.nodeKey!] as Identifier\n }\n },\n editSuccess: async () => {\n await execute()\n },\n deleteSuccess: async () => {\n await execute()\n editId.value = undefined\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/tree-with-details/index.tsx"],"sourcesContent":["import { useProvideReferenceArrayInput, useProvideTreeWithDetails } from '@/hooks'\nimport type { CreateResult, GetListResult, Identifier } from '@/provides'\nimport { skyConfig, type SkyComponent } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElCard, ElCol, ElRow, ElSkeleton, ElTree } from 'element-plus'\nimport { computed, defineComponent, h, ref } from 'vue'\nimport { useRoute } from 'vue-router'\n\nexport interface SkyTreeWithDetailsProps {\n create?: SkyComponent\n edit?: SkyComponent\n optionChildren?: string\n optionName?: string\n nodeKey?: string\n size?: number\n}\n\nexport const SkyTreeWithDetails = defineComponent<SkyTreeWithDetailsProps>({\n name: 'SkyTreeWithDetails',\n inheritAttrs: false,\n props: {\n create: Object,\n edit: Object,\n optionChildren: {\n type: String,\n default: 'children',\n },\n optionName: {\n type: String,\n default: 'name',\n },\n nodeKey: {\n type: String,\n default: 'id',\n },\n size: {\n type: Number,\n default: 30,\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n\n let controller: AbortController | undefined\n const { state, isLoading, execute } = useAsyncState<\n GetListResult | undefined,\n [filter?: Record<string, unknown>]\n >(\n async (filter) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.getList?.(route.meta.resource as string, {\n pagination: { page: 1, perPage: props.size! },\n filter,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const onNodeClick = (node: Record<string, unknown>) => {\n if (editId.value === node[props.nodeKey!]) {\n // 再次点击选中的节点,退出编辑\n editId.value = undefined\n } else {\n editId.value = node[props.nodeKey!] as Identifier\n }\n }\n\n const onNodeExpand = (node: Record<string, unknown>) => {\n // 以最新的展开为准,取消创建时候的展开效果\n lastCreateId.value = undefined\n lastExpandId.value = node[props.nodeKey!] as Identifier\n }\n\n const onNodeCollapse = () => {\n lastExpandId.value = undefined\n }\n\n const editId = ref<Identifier>()\n const lastCreateId = ref<Identifier>()\n const lastExpandId = ref<Identifier>()\n const createNum = ref(0)\n\n useProvideTreeWithDetails({\n createSuccess: async (result: CreateResult) => {\n await execute()\n createNum.value++\n if (result.data?.[props.nodeKey!]) {\n lastCreateId.value = result.data[props.nodeKey!] as Identifier\n }\n },\n editSuccess: async () => {\n await execute()\n },\n deleteSuccess: async () => {\n await execute()\n if (editId.value === lastCreateId.value) {\n lastCreateId.value = undefined\n }\n editId.value = undefined\n },\n })\n\n // 自动注入一次关联数据\n useProvideReferenceArrayInput({\n reference: route.meta.resource as string,\n getList: (filter?: Record<string, unknown>) => execute(0, filter),\n listData: state,\n listLoading: isLoading,\n })\n\n const defaultExpandedKeys = computed(() => {\n if (editId.value) {\n return [editId.value]\n } else if (lastCreateId.value) {\n return [lastCreateId.value]\n } else if (lastExpandId.value) {\n return [lastExpandId.value]\n }\n return []\n })\n\n return () => (\n <div class=\"sky-tree-with-details\">\n <ElRow>\n <ElCol span={8}>\n <ElCard>\n <ElSkeleton loading={isLoading.value} animated>\n <ElTree\n data={state.value?.data}\n props={{ children: props.optionChildren, label: props.optionName }}\n defaultExpandAll={false}\n accordion={true}\n expandOnClickNode={false}\n nodeKey={props.nodeKey}\n onNode-click={onNodeClick}\n onNode-expand={onNodeExpand}\n onNode-collapse={onNodeCollapse}\n highlightCurrent\n currentNodeKey={editId.value}\n defaultExpandedKeys={defaultExpandedKeys.value}\n {...attrs}\n ></ElTree>\n </ElSkeleton>\n </ElCard>\n </ElCol>\n <ElCol offset={1} span={15}>\n {editId.value\n ? props.edit\n ? h(props.edit, { key: editId.value, dataId: editId.value })\n : null\n : props.create\n ? h(props.create, { key: createNum.value })\n : null}\n </ElCol>\n </ElRow>\n </div>\n )\n },\n})\n"],"names":["SkyTreeWithDetails","defineComponent","name","inheritAttrs","props","create","edit","optionChildren","type","default","optionName","nodeKey","size","attrs","route","useRoute","controller","execute","useAsyncState","filter","pagination","page","immediate","editId","ref","lastCreateId","lastExpandId","createNum","useProvideTreeWithDetails","useProvideReferenceArrayInput","reference","listData","listLoading","defaultExpandedKeys","computed","_createVNode","state","onNodeClick","onNodeExpand","onNodeCollapse","h"],"mappings":"qmCAiBAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,qBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,OACAC,KAAAA,OACAC,eAAAA,CACEC,KAAAA,OACAC,QAAAA,YAEFC,WAAAA,CACEF,KAAAA,OACAC,QAAAA,QAEFE,QAAAA,CACEH,KAAAA,OACAC,QAAAA,MAEFG,KAAAA,CACEJ,KAAAA,OACAC,QAAAA,EACF,YAEaI,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAAA,SAAA,EAEA,IAAAC,4BAC0BC,QAAAA,CAAQ,EAAAC,EAAAA,cAAA,MAAAC,IAK9BH,EAAAA,IAAAA,qEAEEI,WAAAA,CAAcC,KAAAA,0CAGhB,CAAA,WAIAC,UAAAA,EACF,CAAA,sIAsBFC,EAAAC,EAAAA,IAAA,EACAC,EAAAD,EAAAA,IAAA,EACAE,EAAAF,EAAAA,IAAA,EACAG,EAAAH,EAAAA,IAAA,CAAA,EAEAI,4BAAAA,kKAaIL,EAAA,QAAAE,EAAA,sCAIF,CACF,CAAA,EAGAI,gCAAAA,CACEC,UAAAA,EAAAA,KAAAA,2BAEAC,SAAAA,EACAC,YAAAA,CACF,CAAA,EAEA,MAAAC,EAAAC,EAAAA,SAAA,YAEI,CAAAX,EAAA,KAAA,EACFE,EAAA,MACE,CAAAA,EAAA,KAAA,EACFC,EAAA,MACE,CAAAA,EAAA,KAAA,EAEF,CAAA,CACF,EAEA,MAAA,IAAAS,EAAAA,YAAA,MAAA,CAAO,MAAA,sDAAA1B,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,QAAAA,OAGa,EAAA,CAAAA,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,OAAAA,KAAAA,CAAAA,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,iBAE0B,SAAA,EAAA,EAAA,CAAAA,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,OAAAA,EAAAA,WAAAA,CAAA,KAAA2B,EAAA,OAAA,0DAGkC,iBAAA,GAC3C,UAAA,GACR,kBAAA,qBAEO,eAAAC,EACG,gBAAAC,EACE,kBAAAC,EACI,iBAAA,0BAEH,oBAAAN,EAAA,KACkB,EAAApB,CAAA,EAAA,IAAA,CAAA,CACrC,CAAA,CAAA,CAAA,CAAA,CAAA,2BAAA,OAAA,SAKS,EAAA,CAAAJ,QAAAA,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAAA,EAAAA,KAAAA,2BAGsC,CAAA,EAAA,KAAAL,EAAA,OAAAoC,EAAAA,EAAApC,EAAA,OAAA,oBAIpD,CAAA,CAAA,KAKpB,CACF,CAAA"}
|
|
@@ -3,7 +3,7 @@ import "element-plus/es/components/col/style/css";
|
|
|
3
3
|
import "element-plus/es/components/row/style/css";
|
|
4
4
|
import "element-plus/es/components/skeleton/style/css";
|
|
5
5
|
import "element-plus/es/components/tree/style/css";
|
|
6
|
-
import { defineComponent as
|
|
6
|
+
import { defineComponent as C, ref as r, computed as K, createVNode as n, mergeProps as k, h as f } from "vue";
|
|
7
7
|
import "../../hooks/useUser.mjs";
|
|
8
8
|
import "../../hooks/usePermission.mjs";
|
|
9
9
|
import "../../hooks/useMenu.mjs";
|
|
@@ -17,14 +17,14 @@ import "../../hooks/useHiddenTitle.mjs";
|
|
|
17
17
|
import "../../hooks/useForm.mjs";
|
|
18
18
|
import "../../hooks/useShow.mjs";
|
|
19
19
|
import "../../hooks/useReferenceArrayField.mjs";
|
|
20
|
-
import { useProvideTreeWithDetails as
|
|
20
|
+
import { useProvideTreeWithDetails as E } from "../../hooks/useTreeWithDetails.mjs";
|
|
21
21
|
import "../../hooks/useFormGrid.mjs";
|
|
22
|
-
import { useProvideReferenceArrayInput as
|
|
23
|
-
import { skyConfig as
|
|
24
|
-
import { useAsyncState as
|
|
25
|
-
import { ElRow as
|
|
26
|
-
import { useRoute as
|
|
27
|
-
const
|
|
22
|
+
import { useProvideReferenceArrayInput as S } from "../../hooks/useReferenceArrayInput.mjs";
|
|
23
|
+
import { skyConfig as x } from "../../setup/index.mjs";
|
|
24
|
+
import { useAsyncState as w } from "@vueuse/core";
|
|
25
|
+
import { ElRow as b, ElCol as p, ElCard as A, ElSkeleton as I, ElTree as P } from "element-plus";
|
|
26
|
+
import { useRoute as D } from "vue-router";
|
|
27
|
+
const ie = /* @__PURE__ */ C({
|
|
28
28
|
name: "SkyTreeWithDetails",
|
|
29
29
|
inheritAttrs: !1,
|
|
30
30
|
props: {
|
|
@@ -48,56 +48,60 @@ const te = /* @__PURE__ */ g({
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
setup(e, {
|
|
51
|
-
attrs:
|
|
51
|
+
attrs: v
|
|
52
52
|
}) {
|
|
53
|
-
const
|
|
54
|
-
let
|
|
53
|
+
const d = D();
|
|
54
|
+
let u;
|
|
55
55
|
const {
|
|
56
|
-
state:
|
|
57
|
-
isLoading:
|
|
58
|
-
execute:
|
|
59
|
-
} =
|
|
56
|
+
state: s,
|
|
57
|
+
isLoading: c,
|
|
58
|
+
execute: l
|
|
59
|
+
} = w(async (a) => (u = new AbortController(), x.dataProvider?.getList?.(d.meta.resource, {
|
|
60
60
|
pagination: {
|
|
61
61
|
page: 1,
|
|
62
62
|
perPage: e.size
|
|
63
63
|
},
|
|
64
64
|
filter: a,
|
|
65
|
-
signal:
|
|
65
|
+
signal: u.signal
|
|
66
66
|
})), void 0, {
|
|
67
67
|
immediate: !0
|
|
68
68
|
}), y = (a) => {
|
|
69
69
|
t.value === a[e.nodeKey] ? t.value = void 0 : t.value = a[e.nodeKey];
|
|
70
|
-
},
|
|
71
|
-
|
|
70
|
+
}, g = (a) => {
|
|
71
|
+
i.value = void 0, o.value = a[e.nodeKey];
|
|
72
|
+
}, h = () => {
|
|
73
|
+
o.value = void 0;
|
|
74
|
+
}, t = r(), i = r(), o = r(), m = r(0);
|
|
75
|
+
E({
|
|
72
76
|
createSuccess: async (a) => {
|
|
73
|
-
await
|
|
77
|
+
await l(), m.value++, a.data?.[e.nodeKey] && (i.value = a.data[e.nodeKey]);
|
|
74
78
|
},
|
|
75
79
|
editSuccess: async () => {
|
|
76
|
-
await
|
|
80
|
+
await l();
|
|
77
81
|
},
|
|
78
82
|
deleteSuccess: async () => {
|
|
79
|
-
await
|
|
83
|
+
await l(), t.value === i.value && (i.value = void 0), t.value = void 0;
|
|
80
84
|
}
|
|
81
|
-
}),
|
|
82
|
-
reference:
|
|
83
|
-
getList: (a) =>
|
|
84
|
-
listData:
|
|
85
|
-
listLoading:
|
|
85
|
+
}), S({
|
|
86
|
+
reference: d.meta.resource,
|
|
87
|
+
getList: (a) => l(0, a),
|
|
88
|
+
listData: s,
|
|
89
|
+
listLoading: c
|
|
86
90
|
});
|
|
87
|
-
const
|
|
88
|
-
return () =>
|
|
91
|
+
const N = K(() => t.value ? [t.value] : i.value ? [i.value] : o.value ? [o.value] : []);
|
|
92
|
+
return () => n("div", {
|
|
89
93
|
class: "sky-tree-with-details"
|
|
90
|
-
}, [
|
|
91
|
-
default: () => [
|
|
94
|
+
}, [n(b, null, {
|
|
95
|
+
default: () => [n(p, {
|
|
92
96
|
span: 8
|
|
93
97
|
}, {
|
|
94
|
-
default: () => [
|
|
95
|
-
default: () => [
|
|
96
|
-
loading:
|
|
98
|
+
default: () => [n(A, null, {
|
|
99
|
+
default: () => [n(I, {
|
|
100
|
+
loading: c.value,
|
|
97
101
|
animated: !0
|
|
98
102
|
}, {
|
|
99
|
-
default: () => [
|
|
100
|
-
data:
|
|
103
|
+
default: () => [n(P, k({
|
|
104
|
+
data: s.value?.data,
|
|
101
105
|
props: {
|
|
102
106
|
children: e.optionChildren,
|
|
103
107
|
label: e.optionName
|
|
@@ -107,27 +111,29 @@ const te = /* @__PURE__ */ g({
|
|
|
107
111
|
expandOnClickNode: !1,
|
|
108
112
|
nodeKey: e.nodeKey,
|
|
109
113
|
"onNode-click": y,
|
|
114
|
+
"onNode-expand": g,
|
|
115
|
+
"onNode-collapse": h,
|
|
110
116
|
highlightCurrent: !0,
|
|
111
117
|
currentNodeKey: t.value,
|
|
112
|
-
defaultExpandedKeys:
|
|
113
|
-
},
|
|
118
|
+
defaultExpandedKeys: N.value
|
|
119
|
+
}, v), null)]
|
|
114
120
|
})]
|
|
115
121
|
})]
|
|
116
|
-
}),
|
|
122
|
+
}), n(p, {
|
|
117
123
|
offset: 1,
|
|
118
124
|
span: 15
|
|
119
125
|
}, {
|
|
120
|
-
default: () => [t.value ? e.edit ?
|
|
126
|
+
default: () => [t.value ? e.edit ? f(e.edit, {
|
|
121
127
|
key: t.value,
|
|
122
128
|
dataId: t.value
|
|
123
|
-
}) : null : e.create ?
|
|
124
|
-
key:
|
|
129
|
+
}) : null : e.create ? f(e.create, {
|
|
130
|
+
key: m.value
|
|
125
131
|
}) : null]
|
|
126
132
|
})]
|
|
127
133
|
})]);
|
|
128
134
|
}
|
|
129
135
|
});
|
|
130
136
|
export {
|
|
131
|
-
|
|
137
|
+
ie as SkyTreeWithDetails
|
|
132
138
|
};
|
|
133
139
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/components/tree-with-details/index.tsx"],"sourcesContent":["import { useProvideReferenceArrayInput, useProvideTreeWithDetails } from '@/hooks'\nimport type { CreateResult, GetListResult, Identifier } from '@/provides'\nimport { skyConfig, type SkyComponent } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElCard, ElCol, ElRow, ElSkeleton, ElTree } from 'element-plus'\nimport { computed, defineComponent, h, ref } from 'vue'\nimport { useRoute } from 'vue-router'\n\nexport interface SkyTreeWithDetailsProps {\n create?: SkyComponent\n edit?: SkyComponent\n optionChildren?: string\n optionName?: string\n nodeKey?: string\n size?: number\n}\n\nexport const SkyTreeWithDetails = defineComponent<SkyTreeWithDetailsProps>({\n name: 'SkyTreeWithDetails',\n inheritAttrs: false,\n props: {\n create: Object,\n edit: Object,\n optionChildren: {\n type: String,\n default: 'children',\n },\n optionName: {\n type: String,\n default: 'name',\n },\n nodeKey: {\n type: String,\n default: 'id',\n },\n size: {\n type: Number,\n default: 30,\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n\n let controller: AbortController | undefined\n const { state, isLoading, execute } = useAsyncState<\n GetListResult | undefined,\n [filter?: Record<string, unknown>]\n >(\n async (filter) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.getList?.(route.meta.resource as string, {\n pagination: { page: 1, perPage: props.size! },\n filter,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const onNodeClick = (node: Record<string, unknown>) => {\n if (editId.value === node[props.nodeKey!]) {\n // 再次点击选中的节点,退出编辑\n editId.value = undefined\n } else {\n editId.value = node[props.nodeKey!] as Identifier\n }\n }\n\n const editId = ref<Identifier>()\n const lastCreateId = ref<Identifier>()\n const createNum = ref(0)\n\n useProvideTreeWithDetails({\n createSuccess: async (result: CreateResult) => {\n await execute()\n createNum.value++\n if (result.data?.[props.nodeKey!]) {\n lastCreateId.value = result.data[props.nodeKey!] as Identifier\n }\n },\n editSuccess: async () => {\n await execute()\n },\n deleteSuccess: async () => {\n await execute()\n editId.value = undefined\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/components/tree-with-details/index.tsx"],"sourcesContent":["import { useProvideReferenceArrayInput, useProvideTreeWithDetails } from '@/hooks'\nimport type { CreateResult, GetListResult, Identifier } from '@/provides'\nimport { skyConfig, type SkyComponent } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElCard, ElCol, ElRow, ElSkeleton, ElTree } from 'element-plus'\nimport { computed, defineComponent, h, ref } from 'vue'\nimport { useRoute } from 'vue-router'\n\nexport interface SkyTreeWithDetailsProps {\n create?: SkyComponent\n edit?: SkyComponent\n optionChildren?: string\n optionName?: string\n nodeKey?: string\n size?: number\n}\n\nexport const SkyTreeWithDetails = defineComponent<SkyTreeWithDetailsProps>({\n name: 'SkyTreeWithDetails',\n inheritAttrs: false,\n props: {\n create: Object,\n edit: Object,\n optionChildren: {\n type: String,\n default: 'children',\n },\n optionName: {\n type: String,\n default: 'name',\n },\n nodeKey: {\n type: String,\n default: 'id',\n },\n size: {\n type: Number,\n default: 30,\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n\n let controller: AbortController | undefined\n const { state, isLoading, execute } = useAsyncState<\n GetListResult | undefined,\n [filter?: Record<string, unknown>]\n >(\n async (filter) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.getList?.(route.meta.resource as string, {\n pagination: { page: 1, perPage: props.size! },\n filter,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const onNodeClick = (node: Record<string, unknown>) => {\n if (editId.value === node[props.nodeKey!]) {\n // 再次点击选中的节点,退出编辑\n editId.value = undefined\n } else {\n editId.value = node[props.nodeKey!] as Identifier\n }\n }\n\n const onNodeExpand = (node: Record<string, unknown>) => {\n // 以最新的展开为准,取消创建时候的展开效果\n lastCreateId.value = undefined\n lastExpandId.value = node[props.nodeKey!] as Identifier\n }\n\n const onNodeCollapse = () => {\n lastExpandId.value = undefined\n }\n\n const editId = ref<Identifier>()\n const lastCreateId = ref<Identifier>()\n const lastExpandId = ref<Identifier>()\n const createNum = ref(0)\n\n useProvideTreeWithDetails({\n createSuccess: async (result: CreateResult) => {\n await execute()\n createNum.value++\n if (result.data?.[props.nodeKey!]) {\n lastCreateId.value = result.data[props.nodeKey!] as Identifier\n }\n },\n editSuccess: async () => {\n await execute()\n },\n deleteSuccess: async () => {\n await execute()\n if (editId.value === lastCreateId.value) {\n lastCreateId.value = undefined\n }\n editId.value = undefined\n },\n })\n\n // 自动注入一次关联数据\n useProvideReferenceArrayInput({\n reference: route.meta.resource as string,\n getList: (filter?: Record<string, unknown>) => execute(0, filter),\n listData: state,\n listLoading: isLoading,\n })\n\n const defaultExpandedKeys = computed(() => {\n if (editId.value) {\n return [editId.value]\n } else if (lastCreateId.value) {\n return [lastCreateId.value]\n } else if (lastExpandId.value) {\n return [lastExpandId.value]\n }\n return []\n })\n\n return () => (\n <div class=\"sky-tree-with-details\">\n <ElRow>\n <ElCol span={8}>\n <ElCard>\n <ElSkeleton loading={isLoading.value} animated>\n <ElTree\n data={state.value?.data}\n props={{ children: props.optionChildren, label: props.optionName }}\n defaultExpandAll={false}\n accordion={true}\n expandOnClickNode={false}\n nodeKey={props.nodeKey}\n onNode-click={onNodeClick}\n onNode-expand={onNodeExpand}\n onNode-collapse={onNodeCollapse}\n highlightCurrent\n currentNodeKey={editId.value}\n defaultExpandedKeys={defaultExpandedKeys.value}\n {...attrs}\n ></ElTree>\n </ElSkeleton>\n </ElCard>\n </ElCol>\n <ElCol offset={1} span={15}>\n {editId.value\n ? props.edit\n ? h(props.edit, { key: editId.value, dataId: editId.value })\n : null\n : props.create\n ? h(props.create, { key: createNum.value })\n : null}\n </ElCol>\n </ElRow>\n </div>\n )\n },\n})\n"],"names":["SkyTreeWithDetails","defineComponent","name","inheritAttrs","props","create","edit","optionChildren","type","default","optionName","nodeKey","size","attrs","route","useRoute","controller","execute","useAsyncState","filter","pagination","page","immediate","editId","ref","lastCreateId","lastExpandId","createNum","useProvideTreeWithDetails","useProvideReferenceArrayInput","reference","listData","listLoading","defaultExpandedKeys","computed","_createVNode","state","onNodeClick","onNodeExpand","onNodeCollapse","h"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAAA,KAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,IACAC,MAAAA;AAAAA,IACAC,gBAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFC,YAAAA;AAAAA,MACEF,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFE,SAAAA;AAAAA,MACEH,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFG,MAAAA;AAAAA,MACEJ,MAAAA;AAAAA,MACAC,SAAAA;AAAAA,IACF;AAAA;;IAEaI,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA;AAEA,QAAAC;;;;MAC0BC,SAAAA;AAAAA,IAAQ,IAAAC,EAAA,OAAAC,OAK9BH,IAAAA,IAAAA,gBAAAA;MAEEI,YAAAA;AAAAA,QAAcC,MAAAA;AAAAA;;;;IAGhB,CAAA;MAIAC,WAAAA;AAAAA,IACF,CAAA;;;;;;OAsBFC,IAAAC,EAAA,GACAC,IAAAD,EAAA,GACAE,IAAAF,EAAA,GACAG,IAAAH,EAAA,CAAA;AAEAI,IAAAA,EAAAA;AAAAA;;;;;;;mBAaIL,EAAA,UAAAE,EAAA;MAIF;AAAA,IACF,CAAA,GAGAI,EAAAA;AAAAA,MACEC,WAAAA,EAAAA,KAAAA;AAAAA;MAEAC,UAAAA;AAAAA,MACAC,aAAAA;AAAAA,IACF,CAAA;AAEA,UAAAC,IAAAC,EAAA,gBAEI,CAAAX,EAAA,KAAA,IACFE,EAAA,QACE,CAAAA,EAAA,KAAA,IACFC,EAAA,QACE,CAAAA,EAAA,KAAA,IAEF,CAAA,CACF;AAEA,WAAA,MAAAS,EAAA,OAAA;AAAA,MAAO,OAAA;AAAA;MAAA1B,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;MAGa,GAAA;AAAA,QAAAA,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,MAAAA;AAAAA,UAAAA,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;YAE0B,UAAA;AAAA,UAAA,GAAA;AAAA,YAAAA,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,cAAA,MAAA2B,EAAA,OAAA;AAAA;;;;cAGkC,kBAAA;AAAA,cAC3C,WAAA;AAAA,cACR,mBAAA;AAAA;cAEO,gBAAAC;AAAA,cACG,iBAAAC;AAAA,cACE,mBAAAC;AAAA,cACI,kBAAA;AAAA;cAEH,qBAAAN,EAAA;AAAA,YACkB,GAAApB,CAAA,GAAA,IAAA,CAAA;AAAA,UACrC,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;AAAA;QAAA,QAAA;AAAA;MAKS,GAAA;AAAA,QAAAJ,SAAAA,MAAAA,CAAAA,EAAAA,QAAAA,EAAAA,OAAAA,EAAAA,EAAAA,MAAAA;AAAAA;;QAGsC,CAAA,IAAA,OAAAL,EAAA,SAAAoC,EAAApC,EAAA,QAAA;AAAA;;MAIpD,CAAA,CAAA;AAAA;EAKpB;AACF,CAAA;"}
|