跳到主要内容

自定义 generator

options prop 支持自定义功能。


type Options = Partial<{
// header区 相关配置
headerConfig: HeaderConfig
// 可视区 相关配置
viewportConfig: ViewportConfig
// 新增表单 fieldKey 生成函数
fieldKeyFn: (unitedSchema: UnitedSchemaAtom) => string
// 未选中表单时,点击左侧组件,新增表单的位置
addFieldLocation: 'top' | 'bottom'
}>
type HeaderConfig = Partial<{
// 是否展示header区域
showHeader: boolean
// 是否展示logo组件
showLogo: boolean
// 是否展示 导入JSON 按钮
showUploadJSON: boolean
// 是否展示 JSON编辑 按钮
showEditJSON: boolean
// 是否展示 表单预览 按钮
showPreviewForm: boolean
// 是否展示 导出JSON 按钮
showExportJSON: boolean
// 导出json自定义文案
exportText: string
// 自定义exportjson函数
customExport: (exportJsonFn: () => void) => void
// 自定义左侧logo组件
renderLeftHeader: () => JSX.Element
}>

type ViewportConfig = Partial<
Record<ViewportConfigKey, ViewportConfigItem> & {
pointerEvents: 'none' | 'auto'
}
>

type ViewportConfigItem =
| boolean
| ((param: { type: string; selectedFieldKey: string | null }) => boolean)

type ViewportConfigKey = 'showActionBar' | 'showDeleteIcon'

header 区配置​

showHeader​

是否展示头部

是否展示 logo

showUploadJSON​

是否展示导入 JSON 按钮

showEditJSON​

是否展示 JSON 编辑按钮

showPreviewForm​

是否展示表单预览按钮

showExportJSON​

是否展示导出 JSON 按钮

exportText​

自定义导出 JOSN 按钮文案

customExport​

自定义导出 JSON 按钮回调函数

renderLeftHeader​

自定义左侧 logo 组件

可视区配置​

pointerEvents​

viewport区域表单是否可以点击

'none'(默认): 不可点击 'auto': 可以点击

showActionBar​

是否展示操作栏

用来配置 viewport 区域操作栏(图片红色区域)

操作栏
import React, { memo } from 'react'
import DripFormGenerator from '@jdfed/form-generator'
import '@jdfed/form-generator/dist/index.css'

const App = memo(() => {
return (
<DripFormGenerator
viewportConfig={{
showActionBar: false,
/* 也可使用函数形式,以下配置会导致 text 类型的不展示操作栏
showActionBar: ({ selectedFieldKey, type }) => {
return type !== 'text'
},
*/
}}
/>
)
})

App.displayName = 'GeneratorApp'

export default App

showDeleteIcon​

是否展示删除按钮

编辑区属性配置​

可自定义属性配置的展示

除了在components中配置属性配置之外,支持用户不修改components的基础上直接修改属性配置

control​

由于属性配置区域也是一个drip-form表单。所以,用户可以配置全局联动来配置属性配置

<DripFormGenerator
options={{
propertyConfig: {
control: ({ merge, formData }) => {
// 当组件的fieldKey是abc时
if (formData?.$fieldKey === 'abc') {
//禁止修改fieldKey
merge('$fieldKey', 'uiSchema', { disabled: true })
//禁止切换组件类型
merge('type', 'uiSchema', { disabled: true })
}
// 当组件是输入框时
if (formData?.type === 'text') {
//禁止修改fieldKey
merge('$fieldKey', 'uiSchema', { disabled: true })
//禁止切换组件类型
merge('type', 'uiSchema', { disabled: true })
}
},
},
}}
/>

其它​

fieldKeyFn​

自定义新增表单的生成规则函数

addFieldLocation​

自定义未选中任何表单时,点击新增表单的默认位置。

bottom 添加到最下方(默认)

top 添加到最上方