diff --git a/package.json b/package.json index 1c9614d..8bb5200 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "lint:eslint": "eslint \"./src/**/*.{vue,ts,tsx}\" --fix" }, "dependencies": { - "@cool-vue/crud": "^7.1.14", - "@element-plus/icons-vue": "^2.1.0", + "@cool-vue/crud": "^7.1.15", + "@element-plus/icons-vue": "^2.3.1", "@vueuse/core": "^10.4.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", @@ -19,7 +19,7 @@ "core-js": "^3.32.1", "dayjs": "^1.11.10", "echarts": "^5.4.3", - "element-plus": "^2.5.4", + "element-plus": "^2.5.6", "file-saver": "^2.0.5", "lodash-es": "^4.17.21", "marked": "^11.1.1", diff --git a/packages/crud/index.d.ts b/packages/crud/index.d.ts index d5d7f0f..6b0f2a6 100644 --- a/packages/crud/index.d.ts +++ b/packages/crud/index.d.ts @@ -104,7 +104,9 @@ declare namespace Render { options?: DictOptions | Vue.Ref; props?: Props | Vue.Ref; style?: obj; - functionSlot?: boolean; + slots?: { + [key: string]: (data?: any) => any; + }; vm?: any; [key: string]: any; } @@ -718,11 +720,6 @@ declare interface Config { events: { [key: string]: (...args: any[]) => any; }; - render: { - functionSlots: { - exclude: string[]; - }; - }; style: { size: ElementPlus.Size; colors: string[]; diff --git a/packages/crud/package.json b/packages/crud/package.json index 2db9d68..807ecf5 100644 --- a/packages/crud/package.json +++ b/packages/crud/package.json @@ -1,6 +1,6 @@ { "name": "@cool-vue/crud", - "version": "7.1.14", + "version": "7.1.15", "private": false, "main": "./dist/index.umd.min.js", "typings": "types/index.d.ts", diff --git a/packages/crud/src/provide.ts b/packages/crud/src/provide.ts index 0c9cd77..17afe7c 100644 --- a/packages/crud/src/provide.ts +++ b/packages/crud/src/provide.ts @@ -68,12 +68,7 @@ function setConfig(app: App, options: Options = {}) { } } }, - events: {}, - render: { - functionSlots: { - exclude: ["el-date-picker", "el-cascader", "el-time-select"] - } - } + events: {} }, options || {} ); diff --git a/packages/crud/src/utils/vnode.tsx b/packages/crud/src/utils/vnode.tsx index b73a829..91f40df 100644 --- a/packages/crud/src/utils/vnode.tsx +++ b/packages/crud/src/utils/vnode.tsx @@ -31,9 +31,6 @@ const regs: Map = new Map(); // 解析节点 export function parseNode(vnode: any, options: Options): VNode { const { scope, prop, slots, children, _data } = options || []; - const { - render: { functionSlots } - } = useConfig(); // 渲染后组件 let comp: VNode | null = null; @@ -85,17 +82,13 @@ export function parseNode(vnode: any, options: Options): VNode { if (vnode.vm) { comp = h(regs.get(vnode.name), props); } else { - // 是否函数式插槽 - const isFunctionSlot = - !functionSlots.exclude?.includes(vnode.name) && - (vnode.functionSlot === undefined ? true : vnode.functionSlot); - // 渲染组件 - comp = h( - toRaw(resolveComponent(vnode.name)), - props, - isFunctionSlot ? () => children : children - ); + comp = h(toRaw(resolveComponent(vnode.name)), props, { + default() { + return children; + }, + ...vnode.slots + }); } // 挂载到 refs 中 diff --git a/packages/crud/types/components/form/helper/index.d.ts b/packages/crud/types/components/form/helper/index.d.ts index c8f74c9..eda7e13 100644 --- a/packages/crud/types/components/form/helper/index.d.ts +++ b/packages/crud/types/components/form/helper/index.d.ts @@ -97,7 +97,9 @@ export declare function useForm(): { }; } | undefined; style?: obj | undefined; - functionSlot?: boolean | undefined; + slots?: { + [key: string]: (data?: any) => any; + } | undefined; vm?: any; } | undefined; component?: { @@ -128,7 +130,9 @@ export declare function useForm(): { }; } | undefined; style?: obj | undefined; - functionSlot?: boolean | undefined; + slots?: { + [key: string]: (data?: any) => any; + } | undefined; vm?: any; } | undefined; append?: { @@ -159,7 +163,9 @@ export declare function useForm(): { }; } | undefined; style?: obj | undefined; - functionSlot?: boolean | undefined; + slots?: { + [key: string]: (data?: any) => any; + } | undefined; vm?: any; } | undefined; rules?: { diff --git a/packages/crud/types/components/table/helper/index.d.ts b/packages/crud/types/components/table/helper/index.d.ts index 749a6ca..74d3490 100644 --- a/packages/crud/types/components/table/helper/index.d.ts +++ b/packages/crud/types/components/table/helper/index.d.ts @@ -36,7 +36,9 @@ export declare function useTable(props: any): { }; } | undefined; style?: obj | undefined; - functionSlot?: boolean | undefined; + slots?: { + [key: string]: (data?: any) => any; + } | undefined; vm?: any; }; search: { @@ -73,7 +75,9 @@ export declare function useTable(props: any): { }; } | undefined; style?: obj | undefined; - functionSlot?: boolean | undefined; + slots?: { + [key: string]: (data?: any) => any; + } | undefined; vm?: any; }; }; diff --git a/src/modules/base/components/avatar/index.tsx b/src/modules/base/components/avatar/index.tsx index 20dcec0..1aaaa46 100644 --- a/src/modules/base/components/avatar/index.tsx +++ b/src/modules/base/components/avatar/index.tsx @@ -12,7 +12,10 @@ export default defineComponent({ default: UserFilled }, size: [String, Number] as PropType<"large" | "default" | "small" | number>, - shape: String as PropType<"circle" | "square">, + shape: { + type: String as PropType<"circle" | "square">, + default: "square" + }, fit: { type: String as PropType<"fill" | "contain" | "cover" | "none" | "scale-down">, default: "cover" @@ -24,6 +27,8 @@ export default defineComponent({ return (