Skip to content

Commit

Permalink
fix: 配置
Browse files Browse the repository at this point in the history
  • Loading branch information
bietiaop committed Jan 20, 2025
1 parent 1df3ee2 commit aa6d02d
Show file tree
Hide file tree
Showing 14 changed files with 1,299 additions and 2,052 deletions.
738 changes: 377 additions & 361 deletions packages/core/src/server/api/file/get.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/core/src/server/api/file/set.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,4 @@ const setFileRouter: RequestHandler = async (req, res) => {
}
}

router.post('/set_file', setFileRouter)
router.post('/config/set', setFileRouter)
302 changes: 116 additions & 186 deletions packages/core/src/types/Components/index.ts
Original file line number Diff line number Diff line change
@@ -1,238 +1,168 @@
/** 组件类型 */
export type ComponentType = 'input' |
'number' |
'switch' |
'select' |
'section' |
'divider' |
'title' |
'array' |
'colorPicker' |
'radio' |
'checkbox'

interface BaseComponent {
/** 组件类型 */
type: ComponentType
export type Option = {
label: string
value: string | number
disabled?: boolean
}

/** 标题 */
export interface TitleComponent extends BaseComponent {
type: 'title'
/** 标题文本 */
text: string
}
/** 组件类型 */
export type FieldType =
| 'text'
| 'number'
| 'switch'
| 'select'
| 'object'
| 'divider'
| 'array'
| 'objectArray'
| 'colorPicker'
| 'radio'
| 'checkbox'
| 'section'
| 'title'

/** 文本输入框 */
export interface InputComponent extends BaseComponent {
type: 'input'
/** 值类型 */
export type ValueType = 'string' | 'number' | 'boolean' | 'object'

interface BaseField {
/** 组件类型 */
type: FieldType
/** 字段 */
key: string
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 输入框内容 */
value?: string
/** 描述 */
description?: string
/** 是否必填 */
required?: boolean
/** 描述 */
description?: string
}

/** 文本组件 */
export interface TextField extends BaseField {
type: 'text'
/** 默认值 */
defaultValue?: string
/** 最小长度 */
minLength?: number
/** 最大长度 */
maxLength?: number
/** 是否可编辑 */
editable?: boolean
/** 是否可删除 */
removable?: boolean
/** 尺寸: 大、默认、小,高度分别为 40px、32px 和 24px */
size?: 'large' | 'middle' | 'small'
/** 是否允许清空 */
allowClear?: boolean
/** 是否显示计数 */
showCount?: boolean
}

/** 数字输入框 */
export interface NumberComponent extends BaseComponent {
export interface NumberField extends BaseField {
type: 'number'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 输入框内容 */
value?: number
/** 描述 */
description?: string
/** 是否必填 */
required?: boolean
/** 默认值 */
defaultValue?: number
/** 最小值 */
min?: number
/** 最大值 */
max?: number
/** 步长 */
step?: number
/** 允许鼠标滚轮改变数值 */
changeOnWheel?: boolean
/** 尺寸: 大、默认、小,高度分别为 40px、32px 和 24px */
size?: 'large' | 'middle' | 'small'
}

/** 开关 */
export interface SwitchComponent extends BaseComponent {
export interface SwitchField extends BaseField {
type: 'switch'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 描述 */
description?: string
/** 选中时的内容 */
checkedChildren?: string
/** 未选中时的内容 */
unCheckedChildren?: string
/** 开关大小,可选值:default small */
size?: 'default' | 'small'
/** 是否选中 */
checked?: boolean
/** 是否禁用 */
disabled?: boolean
/** 默认值 */
defaultValue?: boolean
}

/** 下拉框选择器 */
export interface SelectComponent extends BaseComponent {
export interface SelectField extends BaseField {
type: 'select'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 描述 */
description?: string
/** 是否为多选 */
/** 是否多选 */
multiple?: boolean
/** 是否展开下拉菜单 */
open?: boolean
/** 选择框默认文本 */
placeholder?: string
/** 是否显示搜索框 */
showSearch?: boolean
/** 是否显示清除按钮 */
allowClear?: boolean
/** 尺寸: 大、默认、小 */
size?: 'large' | 'middle' | 'small'
/** 选项 */
options?: {
/** 选项文本 */
label: string
/** 选项值 */
value: string | number | boolean
/** 是否禁用 */
disabled?: boolean
}[]
options?: Option[]
/** 默认值 */
defaultValue?: string | number
}

/** 分隔符 */
export interface DividerComponent extends BaseComponent {
export interface DividerField extends BaseField {
type: 'divider'
/** 是否为虚线 */
dashed?: boolean
/** 分割线是虚线、点线还是实线 */
variant?: 'dashed' | 'dotted' | 'solid'
}

/** 颜色选择器 */
export interface ColorPickerComponent extends BaseComponent {
type: 'colorPicker'
/** 显示文本 */
label?: string
/** 允许清除选择的颜色 */
allowClear?: boolean
/** 默认值 */
defaultValue?: string
/** 默认格式 */
defaultFormat?: 'rgb' | 'hex' | 'hsb'
/** 颜色格式 默认hex */
format?: 'rgb' | 'hex' | 'hsb'
/** 是否展开颜色选择器 */
open?: boolean
/** 颜色值 */
value?: string
/** 选择器模式,用于配置单色与渐变 */
mode?: 'single' | 'gradient' | ('single' | 'gradient')[]
/** 是否禁用透明度选择 */
disabledAlpha?: boolean
}
// /** 颜色选择器 */
// export interface ColorPickerField extends BaseField {
// type: 'colorPicker'
// /** 显示文本 */
// label?: string
// /** 允许清除选择的颜色 */
// allowClear?: boolean
// /** 默认值 */
// defaultValue?: string
// /** 默认格式 */
// defaultFormat?: 'rgb' | 'hex' | 'hsb'
// /** 颜色格式 默认hex */
// format?: 'rgb' | 'hex' | 'hsb'
// /** 是否展开颜色选择器 */
// open?: boolean
// /** 颜色值 */
// value?: string
// /** 选择器模式,用于配置单色与渐变 */
// mode?: 'single' | 'gradient' | ('single' | 'gradient')[]
// /** 是否禁用透明度选择 */
// disabledAlpha?: boolean
// }

/** 单选框 */
export interface RadioComponent extends BaseComponent {
export interface RadioField extends BaseField {
type: 'radio'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 垂直布局 默认false */
vertical?: boolean
/** 选项 */
options?: {
/** 选项文本 */
label: string
/** 选项值 */
value: string | number | boolean
/** 是否选中 */
checked?: boolean
/** 是否禁用 */
disabled?: boolean
}[]
options: Option[]
/** 默认值 */
defaultValue?: string | number
}

/** 多选框 */
export interface CheckboxComponent extends BaseComponent {
export interface CheckboxField extends BaseField {
type: 'checkbox'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 是否垂直布局 默认false */
vertical?: boolean
/** 选项 */
options?: {
/** 选项文本 */
label: string
/** 选项值 */
value: string | number | boolean
/** 是否选中 */
checked?: boolean
/** 是否禁用 */
disabled?: boolean
}[]
options: Option[]
/** 默认值 */
defaultValue?: string[] | number[]
}

/** 数组 */
export interface ArrayComponent extends BaseComponent {
export interface ArrayField extends BaseField {
type: 'array'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 子组件 */
items?: Component[]
/** 值类型 */
elementType: 'text' | 'number'
/** 默认值 */
defaultValue?: string | number
}

/** 对象 */
export interface ObjectField extends BaseField {
type: 'object'
/** 子组件配置 */
fields: FormField[]
}

/** 对象数组 */
export interface ObjectArrayField extends BaseField {
type: 'objectArray'
/** 子组件配置 */
fields: FormField[]
}

/** 分组 */
export interface SectionComponent extends BaseComponent {
export interface SectionField extends BaseField {
type: 'section'
/** 显示文本 */
label?: string
/** 字段名 */
field?: string
/** 是否展开 */
open?: boolean
/** 子组件 */
children?: Component[]
children: FormField[]
}

/** 标题 */
export interface TitleField extends BaseField {
type: 'title'
/** 显示文本 */
text: string
}

/** 组件 */
export type Component = TitleComponent | InputComponent | NumberComponent | SwitchComponent | SelectComponent | DividerComponent | ColorPickerComponent | RadioComponent | CheckboxComponent | ArrayComponent | SectionComponent
export type FormField =
| TextField
| NumberField
| SwitchField
| SelectField
| RadioField
| CheckboxField
| ArrayField
| ObjectField
| ObjectArrayField
| SectionField
| TitleField
| DividerField
// | ColorPickerField
8 changes: 5 additions & 3 deletions packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
"preview": "vite preview"
},
"dependencies": {
"@heroui/accordion": "^2.2.8",
"@heroui/button": "2.2.9",
"@heroui/card": "^2.2.9",
"@heroui/checkbox": "^2.3.9",
"@heroui/chip": "^2.2.6",
"@heroui/code": "2.2.6",
"@heroui/divider": "^2.2.6",
"@heroui/dropdown": "2.3.9",
"@heroui/form": "^2.1.8",
"@heroui/image": "^2.2.5",
Expand All @@ -22,6 +25,8 @@
"@heroui/link": "2.2.7",
"@heroui/modal": "^2.2.7",
"@heroui/navbar": "2.2.8",
"@heroui/popover": "^2.3.10",
"@heroui/radio": "^2.3.9",
"@heroui/select": "^2.4.10",
"@heroui/snippet": "2.2.10",
"@heroui/spinner": "^2.2.6",
Expand All @@ -30,14 +35,11 @@
"@heroui/tabs": "^2.2.8",
"@heroui/theme": "2.4.5",
"@heroui/tooltip": "^2.2.7",
"@heroui/popover": "^2.3.10",
"@hookform/resolvers": "^3.10.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-types/shared": "3.27.0",
"@reduxjs/toolkit": "^2.5.0",
"ahooks": "^3.8.4",
"antd": "^5.23.1",
"@ant-design/icons": "^5.0.0",
"axios": "1.7.9",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
Expand Down
Binary file modified packages/web/src/.DS_Store
Binary file not shown.
Loading

0 comments on commit aa6d02d

Please sign in to comment.