diff --git a/examples/form-generator/src/App/schema.js b/examples/form-generator/src/App/schema.js index c5f904c1..8fd600a1 100644 --- a/examples/form-generator/src/App/schema.js +++ b/examples/form-generator/src/App/schema.js @@ -1,108 +1,6 @@ -// export default { -// validateTime: 'submit', -// type: 'object', -// ui: { -// title: { -// verticalAlign: 'top', -// width: 150, -// }, -// footer: { -// justifyContent: 'right', -// margin: 10, -// onOk: { -// text: '保存', -// type: 'primary', -// size: 'middle', -// shape: 'squash', -// }, -// onCancel: { -// text: '重置', -// type: 'default', -// size: 'middle', -// shape: 'squash', -// }, -// }, -// }, -// theme: 'antd', -// schema: [ -// { -// type: 'array', -// title: '数组容器', -// ui: { -// type: 'array', -// mode: 'normal', -// }, -// items: [ -// { -// validateTime: 'submit', -// type: 'object', -// title: '对象容器', -// ui: { -// type: 'object', -// }, -// schema: [ -// { -// validateTime: 'submit', -// type: 'string', -// title: '输入框', -// ui: { -// type: 'text', -// }, -// }, -// { -// validateTime: 'submit', -// type: 'string', -// title: '输入框', -// ui: { -// type: 'text', -// }, -// }, -// ], -// }, -// ], -// fieldKey: 'array_dk_fFn', -// }, -// { -// validateTime: 'submit', -// type: 'object', -// title: '上传组件', -// ui: { -// type: 'uploader', -// listType: 'picture', -// canDrag: false, -// action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76', -// dimension: { -// width: 516, -// height: 238, -// }, -// }, -// fieldKey: 'uploader_Ux8m6P', -// }, -// ], -// } - export default { validateTime: 'change', - requiredMode: 'default', type: 'object', ui: {}, theme: 'antd', - schema: [ - { - type: 'string', - title: '日期选择框', - ui: { - type: 'datePicker', - }, - fieldKey: 'datePicker_rNWNDU', - }, - { - type: 'string', - title: '时间选择框', - ui: { - type: 'timePicker', - }, - fieldKey: 'timePicker_DhrlL-', - }, - ], } diff --git a/packages/generator/src/fields/formItem/cascader.field.ts b/packages/drip-form-theme-antd/src/CascaderField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/cascader.field.ts rename to packages/drip-form-theme-antd/src/CascaderField/config.ts index 04aad260..0467deeb 100644 --- a/packages/generator/src/fields/formItem/cascader.field.ts +++ b/packages/drip-form-theme-antd/src/CascaderField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 级联选择器配置 */ -const config: Field = { +const config = { icon: 'iconfont icon-cascader', title: '级联选择', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/CascaderField/index.tsx b/packages/drip-form-theme-antd/src/CascaderField/index.tsx index 9ba15b3f..4c22fcd1 100644 --- a/packages/drip-form-theme-antd/src/CascaderField/index.tsx +++ b/packages/drip-form-theme-antd/src/CascaderField/index.tsx @@ -85,3 +85,5 @@ const CascaderField = ({ } export const cascader = memo(CascaderField) + +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/checkbox.field.ts b/packages/drip-form-theme-antd/src/CheckboxField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/checkbox.field.ts rename to packages/drip-form-theme-antd/src/CheckboxField/config.ts index 1d94cf47..b3cbe281 100644 --- a/packages/generator/src/fields/formItem/checkbox.field.ts +++ b/packages/drip-form-theme-antd/src/CheckboxField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 多选框配置 */ -const config: Field = { +const config = { icon: 'iconfont icon-checked-box', title: '多选框', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/CheckboxField/index.tsx b/packages/drip-form-theme-antd/src/CheckboxField/index.tsx index 3a721e77..2bc61eb0 100644 --- a/packages/drip-form-theme-antd/src/CheckboxField/index.tsx +++ b/packages/drip-form-theme-antd/src/CheckboxField/index.tsx @@ -103,3 +103,4 @@ const CheckboxField = ({ } export const checkbox = memo(CheckboxField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/colorpicker.field.ts b/packages/drip-form-theme-antd/src/ColorPickerField/config.ts similarity index 93% rename from packages/generator/src/fields/formItem/colorpicker.field.ts rename to packages/drip-form-theme-antd/src/ColorPickerField/config.ts index f3da39c8..fff21a20 100644 --- a/packages/generator/src/fields/formItem/colorpicker.field.ts +++ b/packages/drip-form-theme-antd/src/ColorPickerField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 颜色选择器配置 */ -const config: Field = { +const config = { icon: 'iconfont icon-colorpicker', title: '颜色选择框', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/ColorPickerField/index.tsx b/packages/drip-form-theme-antd/src/ColorPickerField/index.tsx index c99a205d..124d296f 100644 --- a/packages/drip-form-theme-antd/src/ColorPickerField/index.tsx +++ b/packages/drip-form-theme-antd/src/ColorPickerField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-21 11:25:34 + * @Last Modified time: 2022-03-13 12:28:56 */ import React, { memo, useState } from 'react' // import PropTypes from 'prop-types' @@ -111,3 +111,4 @@ const ColorPickerField = ({ } export const colorPicker = memo(ColorPickerField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/datepicker.field.ts b/packages/drip-form-theme-antd/src/DatePickerField/config.ts similarity index 99% rename from packages/generator/src/fields/formItem/datepicker.field.ts rename to packages/drip-form-theme-antd/src/DatePickerField/config.ts index e266352d..04bbd2f4 100644 --- a/packages/generator/src/fields/formItem/datepicker.field.ts +++ b/packages/drip-form-theme-antd/src/DatePickerField/config.ts @@ -1,4 +1,3 @@ -import { Field } from '../types' import type { OnChange } from '@jdfed/utils' const formatList = { @@ -89,7 +88,7 @@ const changePicker: OnChange = ({ dispatch, getKey, val }) => { /** * 日期选择器 */ -const config: Field = { +const config = { icon: 'iconfont icon-datepicker', title: '日期选择框', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/DatePickerField/index.tsx b/packages/drip-form-theme-antd/src/DatePickerField/index.tsx index 3147bc52..5a939cf2 100644 --- a/packages/drip-form-theme-antd/src/DatePickerField/index.tsx +++ b/packages/drip-form-theme-antd/src/DatePickerField/index.tsx @@ -134,3 +134,4 @@ const DatePickerField = ({ } export const datePicker = memo(DatePickerField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/auxiliary/text.field.ts b/packages/drip-form-theme-antd/src/NullField/config.ts similarity index 90% rename from packages/generator/src/fields/auxiliary/text.field.ts rename to packages/drip-form-theme-antd/src/NullField/config.ts index 12eb3fe3..ef414a6f 100644 --- a/packages/generator/src/fields/auxiliary/text.field.ts +++ b/packages/drip-form-theme-antd/src/NullField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 纯文本组件 */ -const config: Field = { +const config = { icon: 'iconfont icon-sort-alphabetically', title: '文本', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/NullField/index.tsx b/packages/drip-form-theme-antd/src/NullField/index.tsx index ac8494cc..97c225de 100644 --- a/packages/drip-form-theme-antd/src/NullField/index.tsx +++ b/packages/drip-form-theme-antd/src/NullField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2021-04-14 12:19:56 + * @Last Modified time: 2022-03-13 12:29:08 */ import React, { memo } from 'react' @@ -16,3 +16,4 @@ const NullField = ({ style, text }: NullFieldProps) => { } export const nullField = memo(NullField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/number.field.ts b/packages/drip-form-theme-antd/src/NumberField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/number.field.ts rename to packages/drip-form-theme-antd/src/NumberField/config.ts index f049a84f..ecaabdb0 100644 --- a/packages/generator/src/fields/formItem/number.field.ts +++ b/packages/drip-form-theme-antd/src/NumberField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 数组输入框 */ -const config: Field = { +const config = { icon: 'iconfont icon-number', title: '数字输入框', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/NumberField/index.tsx b/packages/drip-form-theme-antd/src/NumberField/index.tsx index f8fa99bc..4707c3a2 100644 --- a/packages/drip-form-theme-antd/src/NumberField/index.tsx +++ b/packages/drip-form-theme-antd/src/NumberField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-20 20:18:36 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-12 15:40:45 + * @Last Modified time: 2022-03-13 12:29:10 */ import React, { memo } from 'react' import { InputNumber } from 'antd' @@ -38,3 +38,4 @@ const NumberField = ({ } export const numberField = memo(NumberField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/radio.field.ts b/packages/drip-form-theme-antd/src/RadioField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/radio.field.ts rename to packages/drip-form-theme-antd/src/RadioField/config.ts index 81c9dfe6..3976a88a 100644 --- a/packages/generator/src/fields/formItem/radio.field.ts +++ b/packages/drip-form-theme-antd/src/RadioField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 单选框 */ -const config: Field = { +const config = { icon: 'iconfont icon-radio', title: '单选', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/RadioField/index.tsx b/packages/drip-form-theme-antd/src/RadioField/index.tsx index df165eb4..d69ff61b 100644 --- a/packages/drip-form-theme-antd/src/RadioField/index.tsx +++ b/packages/drip-form-theme-antd/src/RadioField/index.tsx @@ -55,3 +55,4 @@ const RadioField = ({ } export const radio = memo(RadioField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/select.field.ts b/packages/drip-form-theme-antd/src/SelectField/config.ts similarity index 97% rename from packages/generator/src/fields/formItem/select.field.ts rename to packages/drip-form-theme-antd/src/SelectField/config.ts index d8ab3b4d..2de6ed4b 100644 --- a/packages/generator/src/fields/formItem/select.field.ts +++ b/packages/drip-form-theme-antd/src/SelectField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 下拉选择器 */ -const config: Field = { +const config = { icon: 'iconfont icon-select', title: '选择器', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/SelectField/index.tsx b/packages/drip-form-theme-antd/src/SelectField/index.tsx index 5b100c54..ca65a29b 100644 --- a/packages/drip-form-theme-antd/src/SelectField/index.tsx +++ b/packages/drip-form-theme-antd/src/SelectField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-20 22:17:44 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-12 15:41:03 + * @Last Modified time: 2022-03-13 12:29:22 */ import React, { memo, FC } from 'react' import { Select } from 'antd' @@ -82,3 +82,4 @@ const SelectField: FC = ({ } export const select = memo(SelectField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/slider.field.ts b/packages/drip-form-theme-antd/src/SliderField/config.ts similarity index 98% rename from packages/generator/src/fields/formItem/slider.field.ts rename to packages/drip-form-theme-antd/src/SliderField/config.ts index 739af326..429d40a3 100644 --- a/packages/generator/src/fields/formItem/slider.field.ts +++ b/packages/drip-form-theme-antd/src/SliderField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 滑动输入条 */ -const config: Field = { +const config = { icon: 'iconfont icon-sliders', title: '滑动输入条', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/SliderField/index.tsx b/packages/drip-form-theme-antd/src/SliderField/index.tsx index 26a22127..9aac9aaa 100644 --- a/packages/drip-form-theme-antd/src/SliderField/index.tsx +++ b/packages/drip-form-theme-antd/src/SliderField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2021-08-11 14:44:05 + * @Last Modified time: 2022-03-13 12:29:33 */ import React, { memo, FC, useMemo } from 'react' import { Slider, InputNumber } from 'antd' @@ -86,3 +86,4 @@ const SliderField: FC = ({ } export const slider = memo(SliderField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/switch.field.ts b/packages/drip-form-theme-antd/src/SwitchField/config.ts similarity index 91% rename from packages/generator/src/fields/formItem/switch.field.ts rename to packages/drip-form-theme-antd/src/SwitchField/config.ts index af5e613a..f16aac4a 100644 --- a/packages/generator/src/fields/formItem/switch.field.ts +++ b/packages/drip-form-theme-antd/src/SwitchField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 开关 */ -const config: Field = { +const config = { icon: 'iconfont icon-switch', title: '开关', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/SwitchField/index.tsx b/packages/drip-form-theme-antd/src/SwitchField/index.tsx index 33ee5fca..6477d4f9 100644 --- a/packages/drip-form-theme-antd/src/SwitchField/index.tsx +++ b/packages/drip-form-theme-antd/src/SwitchField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2021-08-11 14:44:22 + * @Last Modified time: 2022-03-13 12:29:35 */ import React, { memo, FC } from 'react' import { Switch } from 'antd' @@ -36,3 +36,4 @@ const SwitchField: FC = ({ } export const switchField = memo(SwitchField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/input.field.ts b/packages/drip-form-theme-antd/src/TextField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/input.field.ts rename to packages/drip-form-theme-antd/src/TextField/config.ts index 8192b13e..961a37e0 100644 --- a/packages/generator/src/fields/formItem/input.field.ts +++ b/packages/drip-form-theme-antd/src/TextField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 输入框 */ -const config: Field = { +const config = { icon: 'iconfont icon-input', title: '输入框', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/TextField/index.tsx b/packages/drip-form-theme-antd/src/TextField/index.tsx index 88e73314..04977a3f 100644 --- a/packages/drip-form-theme-antd/src/TextField/index.tsx +++ b/packages/drip-form-theme-antd/src/TextField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-12 15:41:44 + * @Last Modified time: 2022-03-13 12:21:55 */ import React, { memo, FC } from 'react' import { Input } from 'antd' @@ -61,3 +61,5 @@ const TextField: FC = ({ } export const text = memo(TextField) + +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/timepicker.field.ts b/packages/drip-form-theme-antd/src/TimePickerField/config.ts similarity index 98% rename from packages/generator/src/fields/formItem/timepicker.field.ts rename to packages/drip-form-theme-antd/src/TimePickerField/config.ts index 9da6da6e..c2109cae 100644 --- a/packages/generator/src/fields/formItem/timepicker.field.ts +++ b/packages/drip-form-theme-antd/src/TimePickerField/config.ts @@ -1,4 +1,3 @@ -import { Field } from '../types' import { OnChange } from '@jdfed/utils' const changeUse12Hours: OnChange = ({ dispatch, val, getKey }) => { @@ -44,7 +43,7 @@ const changeUse12Hours: OnChange = ({ dispatch, val, getKey }) => { /** * 时间选择器 */ -const config: Field = { +const config = { icon: 'iconfont icon-clock', title: '时间选择器', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/TimePickerField/index.tsx b/packages/drip-form-theme-antd/src/TimePickerField/index.tsx index 061beb84..ad4e14bb 100644 --- a/packages/drip-form-theme-antd/src/TimePickerField/index.tsx +++ b/packages/drip-form-theme-antd/src/TimePickerField/index.tsx @@ -109,3 +109,4 @@ const TimePickerField: FC = ({ } export const timePicker = memo(TimePickerField) +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/treeselect.field.ts b/packages/drip-form-theme-antd/src/TreeSelectField/config.ts similarity index 96% rename from packages/generator/src/fields/formItem/treeselect.field.ts rename to packages/drip-form-theme-antd/src/TreeSelectField/config.ts index c12be50b..8597e66d 100644 --- a/packages/generator/src/fields/formItem/treeselect.field.ts +++ b/packages/drip-form-theme-antd/src/TreeSelectField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 树形选择器 */ -const config: Field = { +const config = { icon: 'iconfont icon-treeselect', title: '树选择', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/TreeSelectField/index.tsx b/packages/drip-form-theme-antd/src/TreeSelectField/index.tsx index 4143ef5b..bd0e3153 100644 --- a/packages/drip-form-theme-antd/src/TreeSelectField/index.tsx +++ b/packages/drip-form-theme-antd/src/TreeSelectField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-20 22:17:44 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-28 14:46:06 + * @Last Modified time: 2022-03-13 12:29:48 */ import React, { memo, FC, useEffect } from 'react' import { TreeSelect } from 'antd' @@ -143,3 +143,4 @@ export const TreeSelectField: FC = memo( ) TreeSelectField.displayName = 'TreeSelectField' +export { default as config } from './config' diff --git a/packages/generator/src/fields/formItem/upload.field.ts b/packages/drip-form-theme-antd/src/UploaderField/config.ts similarity index 99% rename from packages/generator/src/fields/formItem/upload.field.ts rename to packages/drip-form-theme-antd/src/UploaderField/config.ts index f8eab694..3958ee22 100644 --- a/packages/generator/src/fields/formItem/upload.field.ts +++ b/packages/drip-form-theme-antd/src/UploaderField/config.ts @@ -1,9 +1,7 @@ -import { Field } from '../types' - /** * 上传组件 */ -const config: Field = { +const config = { icon: 'iconfont icon-cloud-storage', title: '上传组件', unitedSchema: { diff --git a/packages/drip-form-theme-antd/src/UploaderField/index.tsx b/packages/drip-form-theme-antd/src/UploaderField/index.tsx index 627bb7b2..e71cc2a3 100644 --- a/packages/drip-form-theme-antd/src/UploaderField/index.tsx +++ b/packages/drip-form-theme-antd/src/UploaderField/index.tsx @@ -2,7 +2,7 @@ * @Author: jiangxiaowei * @Date: 2020-05-14 13:33:14 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-01-10 17:29:06 + * @Last Modified time: 2022-03-13 12:29:52 */ import React, { memo, FC } from 'react' import './index.styl' @@ -60,3 +60,4 @@ const UploaderField: FC = (props) => { } export const uploader = memo(UploaderField) +export { default as config } from './config' diff --git a/packages/drip-form-theme-antd/src/index.ts b/packages/drip-form-theme-antd/src/index.ts index 1919ca5d..878b6198 100644 --- a/packages/drip-form-theme-antd/src/index.ts +++ b/packages/drip-form-theme-antd/src/index.ts @@ -1,17 +1,41 @@ -import { text as TextField } from './TextField' -import { radio as RadioField } from './RadioField' +import { text as TextField, config as textConfig } from './TextField' +import { radio as RadioField, config as radioConfig } from './RadioField' import { radioText as RadioTextField } from './RadioTextField' -import { numberField as NumberField } from './NumberField' -import { select as SelectField } from './SelectField' -import { nullField as NullField } from './NullField' -import { switchField as SwitchField } from './SwitchField' -import { slider as SliderField } from './SliderField' -import { timePicker as TimePickerField } from './TimePickerField' -import { datePicker as DatePickerField } from './DatePickerField' -import { colorPicker as ColorPickerField } from './ColorPickerField' -import { checkbox as CheckboxField } from './CheckboxField' -import { uploader as UploaderField } from './UploaderField' -import { cascader as CascaderField } from './CascaderField' +import { + numberField as NumberField, + config as numberConfig, +} from './NumberField' +import { select as SelectField, config as selectConfig } from './SelectField' +import { nullField as NullField, config as nullConfig } from './NullField' +import { + switchField as SwitchField, + config as switchConfig, +} from './SwitchField' +import { slider as SliderField, config as sliderConfig } from './SliderField' +import { + timePicker as TimePickerField, + config as timepickerConfig, +} from './TimePickerField' +import { + datePicker as DatePickerField, + config as datepicerConfig, +} from './DatePickerField' +import { + colorPicker as ColorPickerField, + config as colorpickerConfig, +} from './ColorPickerField' +import { + checkbox as CheckboxField, + config as checkboxConfig, +} from './CheckboxField' +import { + uploader as UploaderField, + config as uploadConfig, +} from './UploaderField' +import { + cascader as CascaderField, + config as cascaderCofig, +} from './CascaderField' import { selectText as SelectTextField } from './SelectTextField' import { TreeSelectField } from './TreeSelectField' import { default as QuestionCircle } from './Shared/QuestionCircle' @@ -48,3 +72,37 @@ const antdTheme: { // antd的打包改为输出less,需要使用者配置less-loader export default antdTheme + +export const config = { + title: '表单组件', + order: [ + 'checkbox', + 'colorPicker', + 'datePicker', + 'text', + 'number', + 'radio', + 'select', + 'slider', + 'switch', + 'timePicker', + 'uploader', + 'cascader', + 'null', + ], + fields: { + checkbox: checkboxConfig, + colorPicker: colorpickerConfig, + datePicker: datepicerConfig, + text: textConfig, + number: numberConfig, + radio: radioConfig, + select: selectConfig, + slider: sliderConfig, + switch: switchConfig, + timePicker: timepickerConfig, + uploader: uploadConfig, + cascader: cascaderCofig, + null: nullConfig, + }, +} diff --git a/packages/generator/src/App/index.tsx b/packages/generator/src/App/index.tsx index 9a900356..46529da7 100644 --- a/packages/generator/src/App/index.tsx +++ b/packages/generator/src/App/index.tsx @@ -100,12 +100,7 @@ const Generator = forwardRef( // 设置左侧组件 useEffect(() => { if (components) { - setSidebarData((oldSidebarData) => { - return { - ...oldSidebarData, - ...components, - } - }) + setSidebarData(components) } else { if (customComponents) { setSidebarData((oldSidebarData) => { diff --git a/packages/generator/src/components/LeftSideBar/index.tsx b/packages/generator/src/components/LeftSideBar/index.tsx index 5bba6c39..5ff21247 100644 --- a/packages/generator/src/components/LeftSideBar/index.tsx +++ b/packages/generator/src/components/LeftSideBar/index.tsx @@ -16,39 +16,41 @@ const LeftSideBar: React.FC = () => {
{order.map((key) => { return ( - -
-
{category[key].title}
-
- loading...
}> - {category[key].order.map((type) => { - return ( - category[key].fields[type] && ( - + category[key].order.length > 0 && ( + +
+
{category[key].title}
+
+ loading...
}> + {category[key].order.map((type) => { + return ( + category[key].fields[type] && ( + + ) ) - ) - })} - + })} + +
-
- + + ) ) })} diff --git a/packages/generator/src/components/RightSideBar/Check/index.tsx b/packages/generator/src/components/RightSideBar/Check/index.tsx index debdea18..1505f78b 100644 --- a/packages/generator/src/components/RightSideBar/Check/index.tsx +++ b/packages/generator/src/components/RightSideBar/Check/index.tsx @@ -4,7 +4,7 @@ * @Author: jiangxiaowei * @Date: 2021-08-16 11:32:22 * @Last Modified by: jiangxiaowei - * @Last Modified time: 2022-03-11 11:12:39 + * @Last Modified time: 2022-03-13 18:53:18 */ import React, { useMemo, memo, useCallback } from 'react' import { @@ -16,7 +16,6 @@ import { import DripForm from '@jdfed/drip-form' import commonSchema from '../../../fields/common/checkConfig/Common' import typeMap from './type' -import { formItemMap } from '@generator/fields' import useRightSidebar from '../HeadlessComponents' import type { Map, UnitedSchema } from '@jdfed/utils' @@ -25,7 +24,7 @@ const CheckConfig = (): JSX.Element => { generatorContext, selectedFieldKey, dataSchema, - uiSchema, + // uiSchema, uiComponents, } = useRightSidebar() // 业务关键字(包含的关键字被转换为formData.bussiness) @@ -54,9 +53,9 @@ const CheckConfig = (): JSX.Element => { [dataSchema.type] ) // 当前表单uiSchmea的type类型 - const uiType = uiSchema.type as keyof typeof formItemMap + // const uiType = uiSchema.type as keyof typeof formItemMap // 当前表单是否配置需要展示的校验关键字 - const keywords = formItemMap[uiType]?.checkConfig + // const keywords = formItemMap[uiType]?.checkConfig // 隐藏未配置错误类型的错误文案 const vcontrol = useCallback< @@ -82,7 +81,10 @@ const CheckConfig = (): JSX.Element => { } }) // 优先使用用户配置的关键字 - return (keywords?.common || Object.keys(common)).reduce((prev, cur) => { + return Object.keys( + // keywords?.common|| + common + ).reduce((prev, cur) => { commonErrTipSchema.push({ type: 'string', title: common[cur].title, @@ -96,13 +98,7 @@ const CheckConfig = (): JSX.Element => { injectVcontrol(common[cur]) return prev.concat(common[cur] as unknown as ConcatArray) }, []) - }, [ - commonErrTipSchema, - commonKeywords, - keywords?.common, - keywordsMap.common, - vcontrol, - ]) + }, [commonErrTipSchema, commonKeywords, keywordsMap.common, vcontrol]) // 所有类型通用校验配置 const CommonSchema = useMemo(() => { @@ -131,7 +127,10 @@ const CheckConfig = (): JSX.Element => { } }) // 优先使用用户配置的关键字 - return (keywords?.business || Object.keys(business)).reduce((prev, cur) => { + return Object.keys( + // keywords?.business || + business + ).reduce((prev, cur) => { businessErrTipSchema.push({ type: 'string', title: business[cur].title, @@ -145,13 +144,7 @@ const CheckConfig = (): JSX.Element => { injectVcontrol(business[cur]) return prev.concat(business[cur] as unknown as ConcatArray) }, []) - }, [ - businessErrTipSchema, - businessKeywords, - keywords?.business, - keywordsMap.business, - vcontrol, - ]) + }, [businessErrTipSchema, businessKeywords, keywordsMap.business, vcontrol]) // 校验配置schema const unitedSchema = useMemo(() => { diff --git a/packages/generator/src/fields/index.ts b/packages/generator/src/fields/index.ts index ee8d186e..cf8d70c9 100644 --- a/packages/generator/src/fields/index.ts +++ b/packages/generator/src/fields/index.ts @@ -7,58 +7,22 @@ import objectConfig from './container/object.field' import descConfig from './common/propertyConfig/description.schema' import layoutConfig from './common/propertyConfig/layout.schema' import titleConfig from './common/propertyConfig/title.schema' -/** - * 表单组件左侧列表配置及右侧面板schema - */ -// import cascaderConfig from './formItem/cascader.field' -import checkboxConfig from './formItem/checkbox.field' -import colorpickerConfig from './formItem/colorpicker.field' -import datepickerConfig from './formItem/datepicker.field' -import inputConfig from './formItem/input.field' -import numberConfig from './formItem/number.field' -import radioConfig from './formItem/radio.field' -import selectConfig from './formItem/select.field' -import sliderConfig from './formItem/slider.field' -import switchConfig from './formItem/switch.field' -import timepickerConfig from './formItem/timepicker.field' -// import treeselectConfig from './formItem/treeselect.field' -import uploadConfig from './formItem/upload.field' -import textConfig from './auxiliary/text.field' - -/** - * 普通组件 - */ -export const formItemMap = { - // cascader: cascaderConfig, - checkbox: checkboxConfig, - colorPicker: colorpickerConfig, - datePicker: datepickerConfig, - text: inputConfig, - number: numberConfig, - radio: radioConfig, - select: selectConfig, - slider: sliderConfig, - switch: switchConfig, - timePicker: timepickerConfig, - // treeSelect: treeselectConfig, - uploader: uploadConfig, -} - -/** - * 辅助组件 - */ -export const auxiliaryMap = { - null: textConfig, -} /** * 容器组件 */ -export const containerMap = { - array: arrayConfig, - object: objectConfig, +export const containerConfig = { + title: '容器组件', + order: ['array', 'object'], + fields: { + array: arrayConfig, + object: objectConfig, + }, } +/**antd主题组件 */ +export { config as antdConfig } from '@jdfed/drip-form-theme-antd' + /** * 通用配置schema */ diff --git a/packages/generator/src/index.ts b/packages/generator/src/index.ts index 4928a0f6..6617bbd2 100644 --- a/packages/generator/src/index.ts +++ b/packages/generator/src/index.ts @@ -1,3 +1,4 @@ import FormGenerator from './App/recoilContainer' export default FormGenerator +export { containerConfig } from '@generator/fields' export * from './App/types' diff --git a/packages/generator/src/store/leftSidebar/index.ts b/packages/generator/src/store/leftSidebar/index.ts index ec5daceb..3f4339f8 100644 --- a/packages/generator/src/store/leftSidebar/index.ts +++ b/packages/generator/src/store/leftSidebar/index.ts @@ -1,5 +1,5 @@ import { atom, selector } from 'recoil' -import { containerMap, formItemMap, auxiliaryMap } from '@generator/fields' +import { containerConfig, antdConfig } from '@generator/fields' import type { FieldItemMap, Field, @@ -26,35 +26,10 @@ export type ComponentsData = { export const sidebarDataAtom = atom({ key: 'sidebardata', default: { - order: ['formItem', 'auxiliary', 'container', 'business'], + order: ['container', 'antd', 'business'], category: { - formItem: { - title: '表单组件', - order: [ - 'checkbox', - 'colorPicker', - 'datePicker', - 'text', - 'number', - 'radio', - 'select', - 'slider', - 'switch', - 'timePicker', - 'uploader', - ], - fields: formItemMap, - }, - auxiliary: { - title: '辅助组件', - order: ['null'], - fields: auxiliaryMap, - }, - container: { - title: '容器组件', - order: ['array', 'object'], - fields: containerMap, - }, + antd: antdConfig, + container: containerConfig, business: { title: '业务组件', order: [], diff --git "a/website/docs/expert/\350\207\252\345\256\232\344\271\211\344\270\273\351\242\230.md" "b/website/docs/expert/\350\207\252\345\256\232\344\271\211\344\270\273\351\242\230.md" index b17ada3c..2f24f3b6 100644 --- "a/website/docs/expert/\350\207\252\345\256\232\344\271\211\344\270\273\351\242\230.md" +++ "b/website/docs/expert/\350\207\252\345\256\232\344\271\211\344\270\273\351\242\230.md" @@ -4,7 +4,8 @@ title: 自定义主题 --- ## 使用场景 -当Drip-Form主题包的现有的组件无法满足特殊的业务需求时,该特殊组件又在多个项目中需要复用,为了方便开发和使用,可以开发一个自定义主题的npm包。 + +当 Drip-Form 主题包的现有的组件无法满足特殊的业务需求时,该特殊组件又在多个项目中需要复用,为了方便开发和使用,可以开发一个自定义主题的 npm 包。 ## 自定义主题包的核心代码 @@ -24,15 +25,14 @@ const CustomField = props => { export default memo(CustomField) ``` -然后再写一个js文件将自己的自定义组件导出即可,如下所示: +然后再写一个 js 文件将自己的自定义组件导出即可,如下所示: ```js title="index.js" // src/index.js import CustomField from './components/CustomField.js' - const customTheme = { - theme: 'myCustomTheme', - CustomField + theme: 'myCustomTheme', + CustomField, } export default customTheme @@ -41,3 +41,13 @@ export default customTheme ## 主题包的使用 在项目中引入自定义的主题包后,使用方法可以参考[混合主题](../use/uiComponents#混合主题)。 + +## 支持 @jdfed/form-generator + +自定义主题可以导出 `config`,以支持主题在`@jdfed/form-generator` 中拖拽使用。 + +通过配置 `config`,可以配置组件在 generator 的标题、属性配置、校验配置等。更多信息参考[自定义组建区](../generator/props/components) + +drip-form 为京东内部开发者提供主题开发模板,请加入咚咚群:85748626 咨询。 + +后续会为外部用户开放,敬请期待~ diff --git a/website/docs/generator/expert/customComponents.md b/website/docs/generator/expert/customComponents.md deleted file mode 100644 index fe49778e..00000000 --- a/website/docs/generator/expert/customComponents.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: custom_component -title: 添加业务组件 ---- - -当存在自定业务组件需要添加到 generator 中时,可以配置[customComponents prop](../props/customComponents) diff --git a/website/docs/generator/expert/customTheme.md b/website/docs/generator/expert/customTheme.md deleted file mode 100644 index d12d9ab2..00000000 --- a/website/docs/generator/expert/customTheme.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -id: custom_theme -title: 使用drip-form自定义主题 ---- - -:::note - -文档待完善 - -::: diff --git a/website/docs/generator/props/components.md b/website/docs/generator/props/components.md index 60c97ea4..0bc6fb90 100644 --- a/website/docs/generator/props/components.md +++ b/website/docs/generator/props/components.md @@ -1,6 +1,6 @@ --- id: components -title: components +title: components(自定义组件区) --- # 自定义组件 @@ -80,4 +80,32 @@ type Map = { --- -## 示例 +## 自定义组建区 + +```typescript +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 ( + + ) +}) + +App.displayName = 'GeneratorApp' + +export default App +``` + +`containerConfig` 为内部容器组件的配置。 +`antdConfig` 为 antd 主题的配置 diff --git a/website/docs/generator/props/customComponents.md b/website/docs/generator/props/customComponents.md index 36ac293a..54504f9d 100644 --- a/website/docs/generator/props/customComponents.md +++ b/website/docs/generator/props/customComponents.md @@ -1,8 +1,12 @@ --- id: customComponents -title: customComponents +title: customComponents(业务组件) --- +:::note 提示 +不推荐使用,推荐使用 [components](./components) 定制 generator +::: + # 自定义业务组件 `customComponents`配置组件区业务组件 diff --git a/website/docs/generator/props/options.mdx b/website/docs/generator/props/options.mdx index 91dbc78a..a9a2317f 100644 --- a/website/docs/generator/props/options.mdx +++ b/website/docs/generator/props/options.mdx @@ -1,6 +1,6 @@ --- id: options -title: options +title: options(配置) --- import Tabs from '@theme/Tabs' diff --git a/website/docs/generator/props/renderLeftHeader.md b/website/docs/generator/props/renderLeftHeader.md deleted file mode 100644 index 558a2c4e..00000000 --- a/website/docs/generator/props/renderLeftHeader.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -id: renderLeftHeader -title: renderLeftHeader ---- - -自定义header区左侧logo - -```tsx -() => JSX.Element -``` - diff --git a/website/docs/generator/props/schema.md b/website/docs/generator/props/schema.md index ce90aa65..0e4f7bbf 100644 --- a/website/docs/generator/props/schema.md +++ b/website/docs/generator/props/schema.md @@ -1,9 +1,8 @@ --- id: schema -title: schema +title: schema(默认表单) --- -schema配置可视区默认展示的表单 - -schema是一个满足drip-form unitdSchema规范的对象,配置请参考[unitedSchema JSON配置](../../use/unitedSchema) +schema 配置可视区默认展示的表单 +schema 是一个满足 drip-form unitdSchema 规范的对象,配置请参考[unitedSchema JSON 配置](../../use/unitedSchema) diff --git a/website/docs/generator/props/theme.md b/website/docs/generator/props/theme.md index 69241f46..88037598 100644 --- a/website/docs/generator/props/theme.md +++ b/website/docs/generator/props/theme.md @@ -1,11 +1,10 @@ --- id: theme -title: theme +title: theme(自定义主题) --- -generator默认支持antd主题,如果表单中有其他主题,需要配置theme使来使generator适配 +generator 默认支持 antd 主题,如果表单中有其他主题,需要配置 theme 使来使 generator 适配 ## 用法 同[drip-form uiComponents](../../use/uiComponents)配置格式 - diff --git "a/website/docs/generator/start/\345\277\253\351\200\237\344\275\277\347\224\250.md" "b/website/docs/generator/start/\345\277\253\351\200\237\344\275\277\347\224\250.md" index dfd02f98..e789ca58 100644 --- "a/website/docs/generator/start/\345\277\253\351\200\237\344\275\277\347\224\250.md" +++ "b/website/docs/generator/start/\345\277\253\351\200\237\344\275\277\347\224\250.md" @@ -3,7 +3,7 @@ id: use title: 快速使用 --- -`drip-form`提供了generator快速生成表单,并提供了`@jdfed/form-generator`npm包 +`drip-form`提供了 generator 快速生成表单,并提供了`@jdfed/form-generator`npm 包 ```jsx title="例子" import React, { memo } from 'react' @@ -11,7 +11,7 @@ import DripFormGenerator from '@jdfed/form-generator' import '@jdfed/form-generator/dist/index.css' const App = memo(() => { - return + return }) App.displayName = 'GeneratorApp' @@ -23,20 +23,16 @@ export default App ```tsx title="参数" export type GeneratorType = { - // 由外部导入的联合schema,用于初始化 - schema: UnitedSchema - // 自定义导出JSON事件 - customExport: (innerHandle: () => void) => void - // 导出的文案 - exportText?: string - // 是否渲染Header - renderLeftHeader?: () => JSX.Element - //添加的额外主题 - theme?: UiComponents - // 左侧拖拽区域展示控制 - customComponents?: Array + // 由外部导入的联合schema,用于初始化 + schema?: UnitedSchema + //添加的额外主题 + theme?: UiComponents + // 左侧拖拽区域展示控制(若配置了components,该选项无效) + customComponents?: Array + // 组件自定义(自定义左侧组件区域、viewport区域、编辑区域(属性配置、校验配置)) + components?: ComponentsData + options?: Partial } ``` -具体参数请查看api文档 - +具体介绍请查看 props 文档 diff --git a/website/sidebars.js b/website/sidebars.js index 68a4c9fa..556a8ab9 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -80,18 +80,9 @@ module.exports = { items: [ 'generator/props/schema', 'generator/props/theme', - 'generator/props/customComponents', 'generator/props/components', 'generator/props/options', - ], - }, - { - type: 'category', - label: '进阶', - collapsed: true, - items: [ - 'generator/expert/custom_component', - 'generator/expert/custom_theme', + 'generator/props/customComponents', ], }, ],