Skip to content

Commit 4aec3c2

Browse files
committed
feat: 编辑器剥离UI组件库
1 parent 2138ac2 commit 4aec3c2

File tree

225 files changed

+1050
-1308
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

225 files changed

+1050
-1308
lines changed

package-lock.json

Lines changed: 6 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/editor/README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
English | [中文说明](./README_CN.md)
44

5-
[![](https://img.shields.io/badge/version-4.1.13-green)](https://www.npmjs.com/package/@simpleform/editor)
5+
[![](https://img.shields.io/badge/version-4.1.14-green)](https://www.npmjs.com/package/@simpleform/editor)
66

77
> Based on `react` implementation of the form designer , support for custom components , template import and export , visual design and other form design features , the secondary development is very simple .
88
99
* [Preview](https://mezhanglei.github.io/simpleform/demo/#/)
1010
* [Guide](https://mezhanglei.github.io/simpleform/docs/#/)
1111
* [UI widgets](https://ant.design/index-cn/) `antd@5.x`, the designer registers the base form control by default.
1212

13+
# Matters
14+
- It is recommended to use version `>=4.2`;
15+
1316
## Introduction
1417
- Designer Composition: The designer consists of six modules
1518
* Configuration context `EditorProvider`: provides the context for the editor

packages/editor/README_CN.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
[English](./README.md) | 中文说明
44

5-
[![](https://img.shields.io/badge/version-4.1.13-green)](https://www.npmjs.com/package/@simpleform/editor)
5+
[![](https://img.shields.io/badge/version-4.1.14-green)](https://www.npmjs.com/package/@simpleform/editor)
66

77
> 基于`react`实现的表单设计器,支持自定义组件,模板导入导出,可视化设计等表单设计功能,二次开发非常简单。
88
99
* [在线预览](https://mezhanglei.github.io/simpleform/demo/#/)
1010
* [开发指南](https://mezhanglei.github.io/simpleform/docs/#/)
1111
* [默认组件库](https://ant.design/index-cn/) `antd@5.x`,设计器默认注册了基础的表单控件.
1212

13+
# 注意
14+
- 建议使用稳定版本`>=4.2`;
15+
1316
## 简介
1417
- 设计器组成:设计器包含六大模块
1518
* 配置上下文`EditorProvider`:提供编辑器的上下文环境

packages/editor/src/defineConfig.ts renamed to packages/editor/example/demo/FormEditor/FormRender/defineConfig.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
import widgets from './components';
1+
import widgets from '../components';
22
import dayjs from 'dayjs';
3+
import { createRequest } from '@simpleform/editor';
4+
5+
// TODO axios请求配置
6+
const axiosConfig = {
7+
8+
};
39

410
// 渲染引擎配置项
511
export default {
612
// 组件内的变量
713
variables: {
8-
dayjs
14+
dayjs,
15+
request: createRequest(axiosConfig)
916
},
1017
// 注册组件
1118
components: widgets,

packages/editor/example/demo/FormRender/index.tsx renamed to packages/editor/example/demo/FormEditor/FormRender/index.tsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
import React from 'react';
2-
import { FormRender as DefaultFormRender, FormChildren as DefaultFormChildren, createRequest, CustomFormChildrenProps, CustomFormRenderProps } from '../../../src';
2+
import DefaultFormRender, { FormChildren as DefaultFormChildren } from '@simpleform/render';
3+
import { CustomFormChildrenProps, CustomFormRenderProps } from '@simpleform/editor';
4+
import '@simpleform/editor/lib/css/main.css';
35
import defineConfig from './defineConfig';
46

5-
export * from '../../../src';
6-
7-
// TODO axios请求配置
8-
const axiosConfig = {
9-
10-
};
7+
export * from '@simpleform/render';
118

129
export function FormChildren(props: CustomFormChildrenProps) {
1310
const { components, variables, ...rest } = props;
1411
return (
1512
<DefaultFormChildren
16-
options={{ props: { autoComplete: 'off' } }}
13+
options={defineConfig.options}
1714
components={{ ...defineConfig.components, ...components }}
18-
variables={{ ...variables, request: createRequest(axiosConfig) }}
15+
variables={{ ...defineConfig.variables, ...variables }}
1916
{...rest}
2017
/>
2118
);
@@ -25,9 +22,9 @@ export default function FormRender(props: CustomFormRenderProps) {
2522
const { components, variables, ...rest } = props;
2623
return (
2724
<DefaultFormRender
28-
options={{ props: { autoComplete: 'off' } }}
25+
options={defineConfig.options}
2926
components={{ ...defineConfig.components, ...components }}
30-
variables={{ ...variables, request: createRequest(axiosConfig) }}
27+
variables={{ ...defineConfig.variables, ...variables }}
3128
{...rest}
3229
/>
3330
);

packages/editor/example/demo/FormEditor/ImportTemplate/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import classnames from 'classnames';
22
import React, { useEffect, useState } from 'react';
33
import { Button, Flex, Tag } from 'antd';
44
import './index.less';
5-
import { CustomOptions, FormDesignData } from '../../FormRender';
6-
import ModalWrapper, { ModalWrapperProps } from '../../../../src/components/common/GlobalModal/modalWrapper';
5+
import { ModalWrapper, ModalWrapperProps, CustomOptions, FormDesignData } from '../';
76
import demo from './demo';
87

98
export interface TemplateItem {

packages/editor/src/components/common/Divider/index.tsx renamed to packages/editor/example/demo/FormEditor/components/Divider/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Divider, DividerProps } from 'antd';
22
import React from 'react';
3-
import { CommonFormProps } from '../../../formrender';
3+
import { CommonFormProps } from '@simpleform/editor';
44

55
// 分割线(在拖拽过程中会出现渲染报错,所以需要移除children属性)
66
export const CustomDivider: React.FC<CommonFormProps<unknown> & DividerProps & { label?: string }> = (props) => {

packages/editor/src/config/pc/divider/setting.ts renamed to packages/editor/example/demo/FormEditor/components/Divider/setting.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const baseSetting = [
3434
const operationSetting = [
3535
{
3636
name: 'hidden',
37-
type: 'OperateCheckbox',
37+
type: 'CheckboxWithRules',
3838
inline: true,
3939
compact: true,
4040
children: '隐藏'

packages/editor/example/demo/FormRender/example/index.tsx renamed to packages/editor/example/demo/FormEditor/components/Example/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useEffect } from 'react';
2-
import FormRender, { useSimpleForm, FormRenderProps, CommonFormProps } from '..';
2+
import FormRender, { useSimpleForm, FormRenderProps } from '../../FormRender';
3+
import { CommonFormProps } from '@simpleform/editor';
34
import data from './data';
45

56
const ExampleGroup = (props: CommonFormProps) => {

packages/editor/src/config/pc/fileUpload/index.ts renamed to packages/editor/example/demo/FormEditor/components/FileUpload/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import FieldSetting from '../../editorConfig/fieldSetting';
12
import Setting from './setting';
2-
import FieldSetting from '../../fieldSetting';
33

44
export default {
55
panel: {

packages/editor/src/components/pc/FileUpload/index.tsx renamed to packages/editor/example/demo/FormEditor/components/FileUpload/index.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ import { RcFile } from 'antd/lib/upload';
33
import React, { useEffect, useState } from 'react';
44
import { UploadFile } from 'antd/lib/upload/interface';
55
import './index.less';
6-
import { objectToFormData } from '../../../utils/object';
7-
import { DOC_MIME_KEYS, DOC_MIME_VALUES, isDocFile } from '../../../utils/mime';
8-
import { CommonFormProps } from '../../../formrender';
6+
import { objectToFormData, DOC_MIME_KEYS, DOC_MIME_VALUES, isDocFile, CommonFormProps } from '@simpleform/editor';
97
import { AxiosInstance } from 'axios';
108

119
// 扩展后的文件类型

packages/editor/src/config/pc/fileUpload/setting.ts renamed to packages/editor/example/demo/FormEditor/components/FileUpload/setting.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ const baseSetting = [
3737
const operationSetting = [
3838
{
3939
name: 'hidden',
40-
type: 'OperateCheckbox',
40+
type: 'CheckboxWithRules',
4141
inline: true,
4242
compact: true,
4343
children: '隐藏'
4444
},
4545
{
4646
name: 'props.disabled',
47-
type: 'OperateCheckbox',
47+
type: 'CheckboxWithRules',
4848
inline: true,
4949
compact: true,
5050
children: '禁用'
@@ -54,7 +54,7 @@ const operationSetting = [
5454
const rulesSetting = [
5555
{
5656
name: 'rules',
57-
type: 'RulesGroup',
57+
type: 'ValidatorSetting',
5858
compact: true,
5959
props: {
6060
includes: ['required']

packages/editor/src/components/common/FormTable/editor/index.tsx renamed to packages/editor/example/demo/FormEditor/components/FormTable/editor/index.tsx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,20 @@ import React from "react";
22
import classnames from "classnames";
33
import './index.less';
44
import { FormTableProps } from "..";
5-
import pickAttrs from '../../../../utils/pickAttrs';
6-
import { CustomFormRenderProps, joinFormPath, renderWidgetItem } from "../../../../formrender";
7-
import BaseDnd from "../../../../view/BaseDnd";
8-
import Icon from '../../SvgIcon';
9-
import { getCommonOptions, getWidgetItem, setWidgetItem } from '../../../../utils/utils';
5+
import {
6+
BaseSelection,
7+
BaseSelectionProps,
8+
SvgIcon,
9+
BaseDnd,
10+
pickAttrs,
11+
CustomFormRenderProps,
12+
joinFormPath,
13+
renderWidgetItem,
14+
getCommonOptions,
15+
getWidgetItem,
16+
setWidgetItem
17+
} from "@simpleform/editor";
1018
import FormTableColSetting from './column-setting';
11-
import BaseSelection, { BaseSelectionProps } from '../../../../view/BaseSelection';
1219

1320
const EditorTable = React.forwardRef<HTMLDivElement, FormTableProps<unknown>>(({
1421
columns = [],
@@ -32,10 +39,10 @@ const EditorTable = React.forwardRef<HTMLDivElement, FormTableProps<unknown>>(({
3239
placeholder: `${prefix}-placeholder`,
3340
};
3441

35-
const { path, formrender, context } = _options || {};
42+
const { path, formrender, editorContext } = _options || {};
3643
const commonOptions = getCommonOptions(_options);
3744
const columnsPath = joinFormPath(path, 'props.columns');
38-
const { settingForm, editorConfig } = context?.state || {};
45+
const { settingForm, editorConfig } = editorContext?.state || {};
3946

4047
// 监听列控件设置值
4148
const columnInputChange: CustomFormRenderProps['onValuesChange'] = ({ value }) => {
@@ -51,7 +58,7 @@ const EditorTable = React.forwardRef<HTMLDivElement, FormTableProps<unknown>>(({
5158
'操作属性': configSetting?.['操作属性'],
5259
'校验规则': configSetting?.['校验规则']
5360
});
54-
context?.dispatch && context?.dispatch((old) => ({
61+
editorContext?.dispatch && editorContext?.dispatch((old) => ({
5562
...old,
5663
selected: Object.assign({ setting: mergeSetting }, nextSelected)
5764
}));
@@ -102,7 +109,7 @@ const EditorTable = React.forwardRef<HTMLDivElement, FormTableProps<unknown>>(({
102109
_options={_childOptions}
103110
configLabel="表格列"
104111
onSelectHandler={onSelectHandler}
105-
tools={[<Icon key="fuzhi" name="fuzhi" onClick={() => copyItem(col, colIndex)} />]}
112+
tools={[<SvgIcon key="fuzhi" name="fuzhi" onClick={() => copyItem(col, colIndex)} />]}
106113
>
107114
<div className={Classes.TableCol}>
108115
<div className={Classes.TableColHead}>

packages/editor/src/components/common/FormTable/index.tsx renamed to packages/editor/example/demo/FormEditor/components/FormTable/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ColumnType, TableProps } from 'antd/lib/table';
22
import React, { CSSProperties } from 'react';
3-
import { CommonFormProps, CustomGenerateWidgetItem } from '../../../formrender';
3+
import { CommonFormProps, CustomGenerateWidgetItem } from '@simpleform/editor';
44
import EditorTable from './editor';
55
import FormTable from './render';
66

packages/editor/src/components/common/FormTable/render/components.tsx renamed to packages/editor/example/demo/FormEditor/components/FormTable/render/components.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22
import classNames from 'classnames';
33
import "./components.less";
4-
import pickAttrs from '../../../../utils/pickAttrs';
4+
import { pickAttrs } from '@simpleform/editor';
55

66
const prefix = "form-table";
77
export const Classes = {

packages/editor/src/components/common/FormTable/render/index.tsx renamed to packages/editor/example/demo/FormEditor/components/FormTable/render/index.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import React, { useEffect, useMemo, useState } from "react";
22
import { Button, message, Table, TableProps } from "antd";
3-
import { renderWidgetItem, joinFormPath } from "../../../../formrender";
3+
import {
4+
renderWidgetItem,
5+
joinFormPath,
6+
defaultGetId,
7+
SvgIcon,
8+
pickAttrs
9+
} from "@simpleform/editor";
410
import './index.less';
5-
import { defaultGetId } from "../../../../utils/utils";
6-
import SvgIcon from '../../SvgIcon';
711
import { FormTableProps } from "..";
8-
import pickAttrs from '../../../../utils/pickAttrs';
912

1013
const FormTable = React.forwardRef<any, FormTableProps>((props, ref) => {
1114
const {

packages/editor/src/config/pc/formTable/setting.ts renamed to packages/editor/example/demo/FormEditor/components/FormTable/setting.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ const baseSetting = [
2121
const operationSetting = [
2222
{
2323
name: 'hidden',
24-
type: 'OperateCheckbox',
24+
type: 'CheckboxWithRules',
2525
inline: true,
2626
compact: true,
2727
children: '隐藏'
2828
},
2929
{
3030
name: 'props.disabled',
31-
type: 'OperateCheckbox',
31+
type: 'CheckboxWithRules',
3232
inline: true,
3333
compact: true,
3434
children: '禁用'
@@ -38,7 +38,7 @@ const operationSetting = [
3838
const rulesSetting = [
3939
{
4040
name: 'rules',
41-
type: 'RulesGroup',
41+
type: 'ValidatorSetting',
4242
compact: true,
4343
props: {
4444
includes: ['required']
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
@form-primary-color: #FF4040; // 全局主色
22

3-
.edit-col {
4-
padding: 1px;
5-
}
6-
73
.col-selection {
84
min-height: 40px;
95
height: 100%;
@@ -14,4 +10,12 @@
1410
word-break: break-all;
1511
box-sizing: border-box;
1612
outline: 1px dashed #b8b8b8;
13+
}
14+
15+
.custom-col {
16+
padding: 10px;
17+
}
18+
19+
.custom-col.edit-col {
20+
padding: 1px;
1721
}

0 commit comments

Comments
 (0)