mt-flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
93 lines (92 loc) • 2.85 kB
JavaScript
import * as z from "zod";
import { commonListInputSchema } from "./_common";
//对应后端的ResFormField表
export const ResFormFieldSchema = z.object({
id: z.string(),
type: z.string().optional(),
name: z.string(),
label: z.string().optional(),
placeHolder: z.string().optional(),
defaultValue: z.string().optional(),
icon: z.string().optional(),
cn: z.string().optional(),
sortNum: z.number().optional(),
editable: z.boolean().optional(),
bindTo: z.string().optional(),
meta: z.any().optional(),
editMode: z.string().optional(),
required: z.boolean().optional(),
min: z.number().optional(),
max: z.number().optional(),
});
//对应后端的ResFormF表
export const ResFormSchema = z.object({
id: z.number(),
//这个字段在前端应该用不上。
resViewID: z.number().optional(),
title: z.string(),
res: z.string(),
//表单的用途,res 表示 跟resView 挂钩的表单,standalone 表示独立用途的表单。
formType: z.string().optional(),
description: z.string().optional(),
//如果表单FormType为res,则使用这个字段区分用途,例如,创建、编辑、查询对话框等。
action: z.string(),
cn: z.string().optional(),
icon: z.string().optional(),
attrs: z.any(),
fields: z.array(ResFormFieldSchema),
});
export const ResActionSchema = z.object({
id: z.number(),
name: z.string(),
actionKind: z.string(),
title: z.string().optional(),
viewType: z.string(),
cn: z.string().optional(),
enabled: z.boolean(),
attrs: z.any().optional(),
});
export const resViewSchema = z.lazy(() => {
return z.object({
id: z.number(),
pid: z.number(),
name: z.string(),
res: z.string().optional(),
subViews: z.array(resViewSchema),
parentIdField: z.string().optional(),
viewType: z.string().optional(),
title: z.string().optional(),
sortNum: z.number().optional(),
description: z.string().optional(),
forms: z.array(ResFormSchema),
formId: z.number(),
actions: z.array(z.any()).optional()
});
});
export const resListSchema = commonListInputSchema.extend({
res: z.string(),
params: z.any()
});
export const resByIdSchema = commonListInputSchema.extend({
res: z.string(),
params: z.object({
id: z.string().or(z.number())
})
});
export const resUpdateSchema = commonListInputSchema.extend({
res: z.string(),
params: z.any()
});
export const resCreateSchema = commonListInputSchema.extend({
res: z.string(),
params: z.any()
});
export const resDeleteSchema = z.object({
res: z.string(),
params: z.object({
id: z.string().or(z.number())
})
});
export const resGetFormSchema = z.object({
res: z.string(),
});