跳到主要内容

自定义组件

components prop 可以配置整个组件区展示的组件。

通过配置 components 可以支持以下功能

  • 组件区配置
    • 组件分类
    • 组件排序
  • 编辑区配置
    • 属性配置
    • 校验配置

type ComponentsData = {
// 左侧分类顺序(只有order中的分类才展示)
order: Array<string>
// 每个分类中表单配置
category: Record<
string,
{
// 分类标题
title: string
// 分类中组件的顺序
order: Array<string>
// 组件配置
fields: Record<string, Field>
}
>
}
type Field = {
// 组件区组件的宽高等样式设置
customBarStyle?: CSSProperties
// 左侧列表对应的icon
icon: string
// 表单对应的title(不填,默认使用unitedSchema.title)
title?: string
// 渲染所需的基础属性,用于拖拽到中间区域的渲染
unitedSchema: UnitedSchemaAtom
propertyConfig?: PropertyConfig
checkConfig?: CheckConfig
}
type UnitedSchemaAtom = {
type: string | string[]
title: string
ui: {
type: string
} & Map
} & Map

// 属性配置
type PropertyConfig = {
// 样式配置自定义(若定义了schema,当前设置无效)
styleSchema?: UnitedSchema['schema']
// 整个属性配置面板自定义
schema?: UnitedSchema['schema']
}

// 校验配置
type CheckConfig = {
// 通用校验关键字
common?: Array<string>
// 业务校验关键字
business?: Array<string>
}
type Map = {
[key: string]: any
}

自定义组建区

import React, { memo } from 'react'
import DripFormGenerator, { containerConfig } from '@jdfed/form-generator'
import { config as antdConfig } from '@jdfed/drip-form-theme-antd'
import '@jdfed/form-generator/dist/index.css'

const App = memo(() => {
return (
<DripFormGenerator
components={{
order: ['container', 'antd'],
category: {
container: containerConfig,
antd: antdConfig,
},
}}
/>
)
})

App.displayName = 'GeneratorApp'

export default App

containerConfig 为内部容器组件的配置。 antdConfig 为 antd 主题的配置