vap1 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/SearchBar/_register.d.ts +1 -1
- package/components/SearchBar/_register.js +1 -1
- package/components/Trees/COTree/COButton.js +1 -1
- package/components/Trees/COTree/COSelect.js +1 -1
- package/components/UForm/_input.d.ts +1 -1
- package/components/UForm/index.d.ts +2 -2
- package/hooks/useApiBase.d.ts +36 -1
- package/hooks/useApiBase.js +21 -10
- package/package.json +1 -1
- package/uform/FormEditor.d.ts +20 -3
- package/uform/FormEditor.js +5 -5
- package/uform/FormViewer.d.ts +10 -1
- package/uform/FormViewer.js +10 -1
- package/uform/hooks/useEditor.d.ts +5 -2
- package/uform/hooks/useEditor.js +33 -1
- package/uform/index.js +31 -21
- package/uform/panel/Editor/GroupEditor.d.ts +3 -1
- package/uform/panel/Editor/GroupEditor.js +8 -2
- package/uform/panel/Editor/ListEditor.d.ts +3 -1
- package/uform/panel/Editor/ListEditor.js +7 -1
- package/uform/panel/Editor/index.js +55 -14
- package/uform/panel/Items/Fields.d.ts +3 -0
- package/uform/panel/Items/Fields.js +42 -0
- package/uform/panel/Items/InputSelector.d.ts +6 -0
- package/uform/panel/Items/InputSelector.js +122 -0
- package/uform/panel/Items/Inputs.d.ts +4 -0
- package/uform/panel/Items/Inputs.js +38 -0
- package/uform/panel/Items/index.d.ts +2 -1
- package/uform/panel/Items/index.js +8 -28
- package/uform/panel/Propreties/_ItemBase.js +4 -1
- package/uform/plugins/index.js +1 -1
- package/uform/schema.d.ts +5 -1
- package/uform/utils/arr.d.ts +2 -2
- package/uform/utils/arr.js +6 -1
- package/utils/Renders/ApiGetRender.js +4 -4
- package/utils/Renders/ApiPostRender.js +2 -2
- package/utils/Renders/StringRender.d.ts +1 -1
- package/utils/Renders/_define.d.ts +5 -1
- package/utils/Renders/_define.js +12 -2
|
@@ -4,7 +4,7 @@ exports.getSearchField = exports.registerSearchField = void 0;
|
|
|
4
4
|
var _Support_1 = require("../../utils/_Support");
|
|
5
5
|
var StringUtil_1 = require("../../utils/StringUtil");
|
|
6
6
|
var _RegisterUtil_1 = require("../_RegisterUtil");
|
|
7
|
-
var DEFAULT = { outside: false,
|
|
7
|
+
var DEFAULT = { outside: false, fieldNum: 1, defaultSpan: 1, };
|
|
8
8
|
var _C_SEARCH_FIELD = (0, _Support_1.globalDefault)('_C_SEARCH_FIELD', new Map());
|
|
9
9
|
/**
|
|
10
10
|
* @param type
|
|
@@ -66,7 +66,7 @@ var COButton = function (props) {
|
|
|
66
66
|
var orgCodeRender = (0, react_1.useMemo)(function () { return utils_1.Renders.ApiPostRender({
|
|
67
67
|
api: props.api || utils_1.GLOBAL.CONFIG.BASIC.ORG_API,
|
|
68
68
|
nameField: props.titleField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[1],
|
|
69
|
-
|
|
69
|
+
valueField: props.keyField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[0],
|
|
70
70
|
render: function (info) {
|
|
71
71
|
if (info.label)
|
|
72
72
|
return react_1.default.createElement("span", { title: info.label }, info.label);
|
|
@@ -49,7 +49,7 @@ var SelectedTable = function (props) {
|
|
|
49
49
|
var orgCodeRender = (0, react_1.useMemo)(function () { return utils_1.Renders.ApiPostRender({
|
|
50
50
|
api: props.api || utils_1.GLOBAL.CONFIG.BASIC.ORG_API,
|
|
51
51
|
nameField: props.titleField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[1],
|
|
52
|
-
|
|
52
|
+
valueField: props.keyField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[0],
|
|
53
53
|
render: function (info) {
|
|
54
54
|
if (info.label)
|
|
55
55
|
return react_1.default.createElement("span", { title: info.label }, info.label);
|
|
@@ -16,7 +16,7 @@ import type { ValidationRule } from 'antd/es/form/Form';
|
|
|
16
16
|
* 2. 大于8个字段时,默认使用 common
|
|
17
17
|
*/
|
|
18
18
|
export type UFormLayout = 'common' | 'simple' | 'compress';
|
|
19
|
-
export type FieldDataType = 'string' | 'array' | 'object';
|
|
19
|
+
export type FieldDataType = 'string' | 'number' | 'boolean' | 'array' | 'object';
|
|
20
20
|
/**
|
|
21
21
|
* 分组展示的方式 default = 默认 | tabs = 标签 | collapse = 折叠风琴
|
|
22
22
|
*/
|
|
@@ -66,7 +66,7 @@ export type Link = {
|
|
|
66
66
|
/**
|
|
67
67
|
* 联动事件
|
|
68
68
|
* 返回值为 string | number | boolean 时,改变目标field 的 value
|
|
69
|
-
* 返回值为 LinkResult, 类型时,根据返回结果改变目标
|
|
69
|
+
* 返回值为 LinkResult, 类型时,根据返回结果改变目标 field 的 显示/置灰/选项集/值的状态
|
|
70
70
|
* 支持 返回 Promise 对象,返回Promise时,resolve也必须为一个LinkResult
|
|
71
71
|
*
|
|
72
72
|
* 参数
|
package/hooks/useApiBase.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { Key, PlainObject } from '../basetype';
|
|
2
2
|
import type { ListInit, ApiListState, ListQueryState } from './_list';
|
|
3
|
+
type VList = {
|
|
4
|
+
list?: PlainObject[];
|
|
5
|
+
total?: number;
|
|
6
|
+
totalAcc?: number;
|
|
7
|
+
};
|
|
3
8
|
/**
|
|
4
9
|
* 自定义 单个 Api 的AOP行为
|
|
5
10
|
*
|
|
@@ -13,15 +18,45 @@ import type { ListInit, ApiListState, ListQueryState } from './_list';
|
|
|
13
18
|
*
|
|
14
19
|
*/
|
|
15
20
|
export type AOP = {
|
|
21
|
+
/**
|
|
22
|
+
* 查询前,可修改请求参数
|
|
23
|
+
*/
|
|
16
24
|
beforeQuery?: (queryParam: PlainObject) => PlainObject;
|
|
17
|
-
|
|
25
|
+
/**
|
|
26
|
+
* 查询后,可自定义行为,也可修改响应结果,
|
|
27
|
+
*/
|
|
28
|
+
afterQuery?: (isSuccess: boolean, queryParam: PlainObject, response: PlainObject) => void | VList;
|
|
29
|
+
/**
|
|
30
|
+
* 添加前,可修改请求参数
|
|
31
|
+
*/
|
|
18
32
|
beforeAdd?: (queryParam: PlainObject) => PlainObject;
|
|
33
|
+
/**
|
|
34
|
+
* 添加后,可自定义行为,如:清理缓存等
|
|
35
|
+
*/
|
|
19
36
|
afterAdd?: (isSuccess: boolean, data: PlainObject, response: PlainObject) => void;
|
|
37
|
+
/**
|
|
38
|
+
* 修改前,可修改请求参数
|
|
39
|
+
*/
|
|
20
40
|
beforeUpdate?: (queryParam: PlainObject) => PlainObject;
|
|
41
|
+
/**
|
|
42
|
+
* 修改后,可自定义行为,如:清理缓存等
|
|
43
|
+
*/
|
|
21
44
|
afterUpdate?: (isSuccess: boolean, data: PlainObject, response: PlainObject) => void;
|
|
45
|
+
/**
|
|
46
|
+
* 删除前,可修改请求参数
|
|
47
|
+
*/
|
|
22
48
|
beforeDelete?: (queryParam: PlainObject | PlainObject[] | Key | Key[]) => PlainObject | PlainObject[] | Key | Key[];
|
|
49
|
+
/**
|
|
50
|
+
* 删除后,可自定义行为,如:清理缓存等
|
|
51
|
+
*/
|
|
23
52
|
afterDelete?: (isSuccess: boolean, data: PlainObject | PlainObject[] | Key | Key[], response: PlainObject) => void;
|
|
53
|
+
/**
|
|
54
|
+
* 添加/修改 前,可修改请求参数
|
|
55
|
+
*/
|
|
24
56
|
beforeAll?: (queryParam: PlainObject) => PlainObject;
|
|
57
|
+
/**
|
|
58
|
+
* 添加/修改/删除 后,可自定义行为,如:清理缓存等
|
|
59
|
+
*/
|
|
25
60
|
afterAll?: (action: 'ADD' | 'UPDATE' | 'DELETE', isSuccess: boolean, data: PlainObject, response: PlainObject) => void;
|
|
26
61
|
};
|
|
27
62
|
export type ApiOption = ListInit & {
|
package/hooks/useApiBase.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -151,7 +162,7 @@ var useApiBase = function (config, state, doLoad, mode) {
|
|
|
151
162
|
}
|
|
152
163
|
}, [param, pageNo, pageSize]);
|
|
153
164
|
var _query = function (param) { return __awaiter(void 0, void 0, void 0, function () {
|
|
154
|
-
var _start, queryParam, response;
|
|
165
|
+
var _start, queryParam, response, rtnData;
|
|
155
166
|
return __generator(this, function (_a) {
|
|
156
167
|
switch (_a.label) {
|
|
157
168
|
case 0:
|
|
@@ -160,22 +171,22 @@ var useApiBase = function (config, state, doLoad, mode) {
|
|
|
160
171
|
return [4 /*yield*/, utils_1.Ajax.POST(config.api, queryParam)];
|
|
161
172
|
case 1:
|
|
162
173
|
response = _a.sent();
|
|
174
|
+
rtnData = null;
|
|
175
|
+
if (lodash_1.default.isFunction(AOP.afterQuery)) {
|
|
176
|
+
rtnData = AOP.afterQuery(response.code == '0', queryParam, response);
|
|
177
|
+
}
|
|
178
|
+
if (rtnData != null && lodash_1.default.isPlainObject(rtnData)) {
|
|
179
|
+
doLoad(__assign({ list: response.list || [], total: response.total || 0, totalAcc: response.totalAcc || response.total || 0, cost: Date.now() - _start, isQuerying: false }, rtnData));
|
|
180
|
+
return [2 /*return*/];
|
|
181
|
+
}
|
|
163
182
|
if (response.code != '0') {
|
|
164
|
-
doLoad({ isQuerying: false, cost: 0 }
|
|
165
|
-
if (lodash_1.default.isFunction(AOP.afterQuery)) {
|
|
166
|
-
AOP.afterQuery(false, queryParam, response);
|
|
167
|
-
}
|
|
168
|
-
});
|
|
183
|
+
doLoad({ isQuerying: false, cost: 0 });
|
|
169
184
|
throw response;
|
|
170
185
|
}
|
|
171
186
|
doLoad({
|
|
172
187
|
list: response.list, total: response.total, totalAcc: response.totalAcc || response.total,
|
|
173
188
|
cost: Date.now() - _start,
|
|
174
189
|
isQuerying: false
|
|
175
|
-
}, function () {
|
|
176
|
-
if (lodash_1.default.isFunction(AOP.afterQuery)) {
|
|
177
|
-
AOP.afterQuery(true, queryParam, response);
|
|
178
|
-
}
|
|
179
190
|
});
|
|
180
191
|
return [2 /*return*/];
|
|
181
192
|
}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"vap1","version":"0.3.
|
|
1
|
+
{"name":"vap1","version":"0.3.3","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
|
package/uform/FormEditor.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { FormSchema } from './schema';
|
|
2
|
+
import type { FormSchema, FixField } from './schema';
|
|
3
3
|
/**
|
|
4
4
|
* TODO
|
|
5
5
|
* 1. input-with-select
|
|
@@ -11,11 +11,28 @@ import type { FormSchema } from './schema';
|
|
|
11
11
|
* 5. dtree-select
|
|
12
12
|
* 6. 所有日期:日期格式设置
|
|
13
13
|
* */
|
|
14
|
-
type FormEditorProps = {
|
|
14
|
+
export type FormEditorProps = {
|
|
15
|
+
/**
|
|
16
|
+
* schema 数据,可以为 FormSchema 或 FormSchema序列化后的 JSON
|
|
17
|
+
*/
|
|
15
18
|
data?: string | FormSchema;
|
|
19
|
+
/**
|
|
20
|
+
* 表单名称
|
|
21
|
+
*/
|
|
16
22
|
name?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 保存方法,
|
|
25
|
+
* isCtrls = true 时,代码使用快捷键保存
|
|
26
|
+
*/
|
|
17
27
|
onSave: (schema: string, isCtrlS?: boolean) => void;
|
|
28
|
+
/**
|
|
29
|
+
* 传 onBack 方法时,编辑器上会多出一个返回按钮
|
|
30
|
+
*/
|
|
18
31
|
onBack?: () => void;
|
|
32
|
+
/**
|
|
33
|
+
* 当传 fields 时,切换为字段模式
|
|
34
|
+
* 字段模式时,为字段选择,字段不可变
|
|
35
|
+
*/
|
|
36
|
+
fields?: FixField[];
|
|
19
37
|
};
|
|
20
38
|
export declare const FormEditor: React.FC<FormEditorProps>;
|
|
21
|
-
export {};
|
package/uform/FormEditor.js
CHANGED
|
@@ -46,8 +46,8 @@ exports.FormEditor = void 0;
|
|
|
46
46
|
var react_1 = __importStar(require("react"));
|
|
47
47
|
var lodash_1 = __importDefault(require("lodash"));
|
|
48
48
|
var index_1 = require("../index");
|
|
49
|
-
var
|
|
50
|
-
var
|
|
49
|
+
var Items_1 = __importDefault(require("./panel/Items"));
|
|
50
|
+
var index_2 = __importDefault(require("./panel/Editor/index"));
|
|
51
51
|
var useForm_1 = require("./hooks/useForm");
|
|
52
52
|
var FormViewer_1 = require("./FormViewer");
|
|
53
53
|
var CanvasProperties_1 = __importDefault(require("./panel/Propreties/CanvasProperties"));
|
|
@@ -57,7 +57,7 @@ var useEditor_1 = require("./hooks/useEditor");
|
|
|
57
57
|
var FormViewer_2 = require("./FormViewer");
|
|
58
58
|
var FormEditor = function (props) {
|
|
59
59
|
var schema = (0, react_1.useMemo)(function () { return (0, FormViewer_2.initSchama)(props.data); }, [props.data]);
|
|
60
|
-
var editor = (0, useEditor_1.useFormEditor)(schema);
|
|
60
|
+
var editor = (0, useEditor_1.useFormEditor)(schema, props.fields);
|
|
61
61
|
var _a = __read((0, react_1.useState)(false), 2), open = _a[0], setOpen = _a[1];
|
|
62
62
|
var save = function (isCtrlS) {
|
|
63
63
|
if (isCtrlS === void 0) { isCtrlS = false; }
|
|
@@ -78,7 +78,7 @@ var FormEditor = function (props) {
|
|
|
78
78
|
react_1.default.createElement(useEditor_1.FORM_EDITOR.Provider, { value: editor },
|
|
79
79
|
react_1.default.createElement(index_1.Row, { className: 'uform-editor' },
|
|
80
80
|
react_1.default.createElement(index_1.Col, { style: { width: 210, flexShrink: 0 } },
|
|
81
|
-
react_1.default.createElement(
|
|
81
|
+
react_1.default.createElement(Items_1.default, { fields: props.fields })),
|
|
82
82
|
react_1.default.createElement(index_1.Col, { style: { flexGrow: 1 } },
|
|
83
83
|
react_1.default.createElement("div", { className: 'panel-title' },
|
|
84
84
|
"\u8868\u5355 ",
|
|
@@ -94,7 +94,7 @@ var FormEditor = function (props) {
|
|
|
94
94
|
index_1.message.error('至少添加一个字段');
|
|
95
95
|
}
|
|
96
96
|
} }, "\u9884\u89C8"))),
|
|
97
|
-
react_1.default.createElement(
|
|
97
|
+
react_1.default.createElement(index_2.default, null)),
|
|
98
98
|
react_1.default.createElement(index_1.Col, { style: { width: 320, flexShrink: 0 }, className: "uform-prperties" },
|
|
99
99
|
react_1.default.createElement("div", { className: 'panel-title' },
|
|
100
100
|
"\u5C5E\u6027",
|
package/uform/FormViewer.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { FormSchema } from './schema';
|
|
2
2
|
import type { RefAttributes, ForwardRefExoticComponent, FC } from 'react';
|
|
3
3
|
import type { UModalProps, UFormRef, PlainObject } from '../index';
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* ˵���� �༭���� UFormϵ����� ����Ӧ��ϵ����
|
|
6
|
+
* InfoViewer �൱�� UInfo
|
|
7
|
+
* FormViewer �൱�� UForm
|
|
8
|
+
* FormModal �൱�� UFormModal
|
|
9
|
+
* InfoModal �൱�� UInfoModal
|
|
10
|
+
* FormInfoModal �൱�� UModal
|
|
11
|
+
*/
|
|
12
|
+
type ModalProps = Pick<UModalProps, 'open' | 'onOk' | 'onCancel' | 'title' | 'data' | 'isEdit' | 'autoTitle'>;
|
|
5
13
|
type FormViewProps = {
|
|
6
14
|
schema: FormSchema | string;
|
|
7
15
|
data?: PlainObject;
|
|
@@ -9,4 +17,5 @@ type FormViewProps = {
|
|
|
9
17
|
export declare const initSchama: (data: string | FormSchema) => FormSchema;
|
|
10
18
|
export declare const FormViewer: ForwardRefExoticComponent<FormViewProps & RefAttributes<UFormRef>>;
|
|
11
19
|
export declare const FormModal: FC<FormViewProps & ModalProps>;
|
|
20
|
+
export declare const FormInfoModal: FC<FormViewProps & ModalProps>;
|
|
12
21
|
export {};
|
package/uform/FormViewer.js
CHANGED
|
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
38
|
};
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.FormModal = exports.FormViewer = exports.initSchama = void 0;
|
|
40
|
+
exports.FormInfoModal = exports.FormModal = exports.FormViewer = exports.initSchama = void 0;
|
|
41
41
|
var lodash_1 = __importDefault(require("lodash"));
|
|
42
42
|
var react_1 = __importStar(require("react"));
|
|
43
43
|
var index_1 = require("../index");
|
|
@@ -70,6 +70,10 @@ var _ModalRender = function (props) {
|
|
|
70
70
|
modalProps.title = props.title || props.schema.title || '';
|
|
71
71
|
return react_1.default.createElement(index_1.UFormModal, __assign({}, uformProps, modalProps, { data: props.data, open: props.open, onOk: props.onOk, onCancel: props.onCancel }));
|
|
72
72
|
};
|
|
73
|
+
var _UModalRender = function (props) {
|
|
74
|
+
var uformProps = (0, react_1.useMemo)(function () { return (0, Convert_1.schemaToForm)(props.schema); }, [props]);
|
|
75
|
+
return react_1.default.createElement(index_1.UModal, __assign({}, props, uformProps));
|
|
76
|
+
};
|
|
73
77
|
exports.FormViewer = (0, react_1.forwardRef)(function (props, ref) {
|
|
74
78
|
var schema = (0, react_1.useMemo)(function () { return (0, exports.initSchama)(props.schema); }, [props.schema]);
|
|
75
79
|
return react_1.default.createElement(_FormRender, { schema: schema, data: props.data, ref: ref });
|
|
@@ -79,3 +83,8 @@ var FormModal = function (props) {
|
|
|
79
83
|
return react_1.default.createElement(_ModalRender, __assign({}, props, { schema: schema }));
|
|
80
84
|
};
|
|
81
85
|
exports.FormModal = FormModal;
|
|
86
|
+
var FormInfoModal = function (props) {
|
|
87
|
+
var schema = (0, react_1.useMemo)(function () { return (0, exports.initSchama)(props.schema); }, [props.schema]);
|
|
88
|
+
return react_1.default.createElement(_UModalRender, __assign({}, props, { schema: schema }));
|
|
89
|
+
};
|
|
90
|
+
exports.FormInfoModal = FormInfoModal;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { FormGroup, FormItem, FormSchema, Cursor } from '../schema';
|
|
2
|
+
import type { FormGroup, FormItem, FormSchema, Cursor, FixField } from '../schema';
|
|
3
3
|
type CurrentSelected = {
|
|
4
4
|
group?: string;
|
|
5
5
|
field?: string;
|
|
6
6
|
};
|
|
7
7
|
type FormEditorContext = {
|
|
8
8
|
form: FormSchema;
|
|
9
|
+
fieldFixed: false | FixField[];
|
|
10
|
+
fieldUsed: Set<string>;
|
|
9
11
|
selected: CurrentSelected;
|
|
10
12
|
baseSpan: number;
|
|
11
13
|
getForm: () => FormSchema;
|
|
@@ -19,10 +21,11 @@ type FormEditorContext = {
|
|
|
19
21
|
getSelect: () => FormItem | FormGroup;
|
|
20
22
|
sortField: (itemId: string, targetPos: any, groupId?: string) => void;
|
|
21
23
|
addField: (type: string, pointer?: Cursor, groupId?: string) => void;
|
|
24
|
+
addFixedField: (field: FixField, pointer?: Cursor, groupId?: string) => void;
|
|
22
25
|
setFormProperties: (param: Partial<FormSchema>) => void;
|
|
23
26
|
setFieldProperties: (properties: string, value: any) => void;
|
|
24
27
|
};
|
|
25
28
|
export declare const FORM_EDITOR: import("react").Context<FormEditorContext>;
|
|
26
29
|
export declare const useEditor: () => FormEditorContext;
|
|
27
|
-
export declare const useFormEditor: (dataJson: FormSchema) => FormEditorContext;
|
|
30
|
+
export declare const useFormEditor: (dataJson: FormSchema, fixFields?: FixField[]) => FormEditorContext;
|
|
28
31
|
export {};
|
package/uform/hooks/useEditor.js
CHANGED
|
@@ -49,8 +49,25 @@ exports.FORM_EDITOR = (0, react_1.createContext)(null);
|
|
|
49
49
|
var useEditor = function () { return (0, react_1.useContext)(exports.FORM_EDITOR); };
|
|
50
50
|
exports.useEditor = useEditor;
|
|
51
51
|
var BASESPAN_MAP = new Map([['simple', 24], ['compress', 8], ['common', 12]]);
|
|
52
|
-
var useFormEditor = function (dataJson) {
|
|
52
|
+
var useFormEditor = function (dataJson, fixFields) {
|
|
53
53
|
var _a = __read((0, hooks_1.useSetState)(dataJson), 2), form = _a[0], setForm = _a[1];
|
|
54
|
+
var fieldFixed = (0, react_1.useMemo)(function () {
|
|
55
|
+
if (!lodash_1.default.isArray(fixFields) || fixFields.length == 0)
|
|
56
|
+
return false;
|
|
57
|
+
return fixFields;
|
|
58
|
+
}, [fixFields]);
|
|
59
|
+
var fieldUsed = (0, react_1.useMemo)(function () {
|
|
60
|
+
if (fieldFixed == false)
|
|
61
|
+
return null;
|
|
62
|
+
var used = new Set();
|
|
63
|
+
if (form.isGroup) {
|
|
64
|
+
form.fields.map(function (group) { return group.fields.map(function (field) { return used.add(field.field); }); });
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
form.fields.map(function (field) { return used.add(field.field); });
|
|
68
|
+
}
|
|
69
|
+
return used;
|
|
70
|
+
}, [fieldFixed, form]);
|
|
54
71
|
var FORM_REF = (0, react_1.useRef)(form);
|
|
55
72
|
var layout = form.layout, isGroup = form.isGroup, fields = form.fields;
|
|
56
73
|
(0, react_1.useLayoutEffect)(function () { FORM_REF.current = form; }, [form]);
|
|
@@ -65,6 +82,18 @@ var useFormEditor = function (dataJson) {
|
|
|
65
82
|
return len >= 8 ? 12 : 24;
|
|
66
83
|
}, [isGroup, layout, fields === null || fields === void 0 ? void 0 : fields.length]);
|
|
67
84
|
// 添加字段
|
|
85
|
+
var addFixedField = function (field, temPosition, groupId) {
|
|
86
|
+
if (groupId) {
|
|
87
|
+
// setFields(insertInGroup(type, fields as FormGroup[], groupId, temPosition))
|
|
88
|
+
// } else {
|
|
89
|
+
// setFields(insertInList(type, fields as FormItem[], temPosition))
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(field);
|
|
93
|
+
setFields((0, arr_1.insertInList)(field.type, fields, temPosition, field));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
// 添加字段
|
|
68
97
|
var addField = function (type, temPosition, groupId) {
|
|
69
98
|
if (groupId) {
|
|
70
99
|
setFields((0, arr_1.insertInGroup)(type, fields, groupId, temPosition));
|
|
@@ -163,6 +192,8 @@ var useFormEditor = function (dataJson) {
|
|
|
163
192
|
// const getForm = useCallback(()=>{})
|
|
164
193
|
return {
|
|
165
194
|
form: form,
|
|
195
|
+
fieldFixed: fieldFixed,
|
|
196
|
+
fieldUsed: fieldUsed,
|
|
166
197
|
selected: selected,
|
|
167
198
|
baseSpan: baseSpan,
|
|
168
199
|
getForm: function () { return FORM_REF.current; },
|
|
@@ -173,6 +204,7 @@ var useFormEditor = function (dataJson) {
|
|
|
173
204
|
sortField: sortField,
|
|
174
205
|
addGroup: addGroup,
|
|
175
206
|
addField: addField,
|
|
207
|
+
addFixedField: addFixedField,
|
|
176
208
|
setFormProperties: setForm,
|
|
177
209
|
setFieldProperties: setFieldProperties,
|
|
178
210
|
};
|
package/uform/index.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.registerCustom = exports.registerGroupPlugin = exports.registerFieldPlugin = exports.registerEditorPlugin = exports.FormModal = exports.FormViewer = exports.FormEditor = void 0;
|
|
7
|
-
var react_1 = __importDefault(require("react"));
|
|
8
|
-
var index_1 = require("../index");
|
|
9
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
10
4
|
var FormEditor_1 = require("./FormEditor");
|
|
11
5
|
Object.defineProperty(exports, "FormEditor", { enumerable: true, get: function () { return FormEditor_1.FormEditor; } });
|
|
12
6
|
var FormViewer_1 = require("./FormViewer");
|
|
@@ -18,18 +12,34 @@ Object.defineProperty(exports, "registerFieldPlugin", { enumerable: true, get: f
|
|
|
18
12
|
Object.defineProperty(exports, "registerGroupPlugin", { enumerable: true, get: function () { return plugins_1.registerGroupPlugin; } });
|
|
19
13
|
var register_1 = require("./inputs/register");
|
|
20
14
|
Object.defineProperty(exports, "registerCustom", { enumerable: true, get: function () { return register_1.registerCustom; } });
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
15
|
+
// const picOptions = _.range(1, 17).map((key) => ({ label: key, value: `/data/images/dashboard/${key}.png` }));
|
|
16
|
+
// registerCustom({
|
|
17
|
+
// type: 'dashboard-cover',
|
|
18
|
+
// title: '快速图片选择',
|
|
19
|
+
// icon: 'text.png',
|
|
20
|
+
// Component: () => {
|
|
21
|
+
// const width = 144, height = 81;
|
|
22
|
+
// return <div>
|
|
23
|
+
// <Upload
|
|
24
|
+
// name="file"
|
|
25
|
+
// withCredentials={true}
|
|
26
|
+
// listType="picture"
|
|
27
|
+
// showUploadList={false}
|
|
28
|
+
// onChange={() => { }}
|
|
29
|
+
// accept="image/*"
|
|
30
|
+
// className={'upload-icon-empty'}
|
|
31
|
+
// data={{ namespace: 'app-data', }}
|
|
32
|
+
// >{<div style={{ width, height, marginRight: 6, textAlign: 'center', paddingTop: 12, cursor: 'pointer', borderRadius: 4, marginBottom: 6, border: '1px solid rgb(24 144 255 / 24%)' }}>
|
|
33
|
+
// <Icon type={'plus'} />
|
|
34
|
+
// <div className="ant-upload-text">上传</div>
|
|
35
|
+
// </div>}</Upload >
|
|
36
|
+
// <Row style={{ height: 140, width: 436, overflowX: 'hidden', overflowY: 'auto', flexWrap: 'wrap' }} gutter={8}>
|
|
37
|
+
// {picOptions.map((img) => <Col span={6} style={{ height: 64, marginBottom: 6, cursor: 'pointer' }}><img
|
|
38
|
+
// style={{ height: '100%', width: '100%', borderWidth: 1, borderStyle: 'solid', borderRadius: 6, borderColor: 'transparent' }}
|
|
39
|
+
// src={img.value}
|
|
40
|
+
// // onClick={() => onChange(img.value)}
|
|
41
|
+
// /></Col>)}
|
|
42
|
+
// </Row>
|
|
43
|
+
// </div>
|
|
44
|
+
// }
|
|
45
|
+
// },)
|
|
@@ -3,5 +3,7 @@ export declare const getFieldInGroup: (el: HTMLElement) => {
|
|
|
3
3
|
group: HTMLElement;
|
|
4
4
|
field?: HTMLElement;
|
|
5
5
|
};
|
|
6
|
-
declare const _default: (
|
|
6
|
+
declare const _default: ({ showSelector }: {
|
|
7
|
+
showSelector: any;
|
|
8
|
+
}) => React.JSX.Element;
|
|
7
9
|
export default _default;
|
|
@@ -37,12 +37,13 @@ var getFieldInGroup = function (el) {
|
|
|
37
37
|
exports.getFieldInGroup = getFieldInGroup;
|
|
38
38
|
var temPosition = null;
|
|
39
39
|
var gid = null;
|
|
40
|
-
exports.default = (function () {
|
|
40
|
+
exports.default = (function (_a) {
|
|
41
|
+
var showSelector = _a.showSelector;
|
|
41
42
|
var editor = (0, useEditor_1.useEditor)();
|
|
42
43
|
if (!editor.form.isGroup) {
|
|
43
44
|
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
44
45
|
}
|
|
45
|
-
var
|
|
46
|
+
var _b = editor.form, groupType = _b.groupType, baseSpan = _b.baseSpan;
|
|
46
47
|
var Editor = function () {
|
|
47
48
|
switch (groupType) {
|
|
48
49
|
case 'collapse':
|
|
@@ -69,6 +70,11 @@ exports.default = (function () {
|
|
|
69
70
|
editor.sortField(data, temPosition, gid);
|
|
70
71
|
return;
|
|
71
72
|
}
|
|
73
|
+
if (editor.fieldFixed) {
|
|
74
|
+
var fieldType = evt.dataTransfer.getData('field');
|
|
75
|
+
showSelector(fieldType, temPosition, gid);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
72
78
|
var viewType = evt.dataTransfer.getData('view');
|
|
73
79
|
editor.addField(viewType, temPosition, gid);
|
|
74
80
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export declare const getFieldInList: (el: HTMLElement) => HTMLElement;
|
|
3
|
-
declare const _default: (
|
|
3
|
+
declare const _default: ({ showSelector }: {
|
|
4
|
+
showSelector: any;
|
|
5
|
+
}) => React.JSX.Element;
|
|
4
6
|
export default _default;
|
|
@@ -18,7 +18,8 @@ var getFieldInList = function (el) {
|
|
|
18
18
|
return (0, exports.getFieldInList)(el.parentElement);
|
|
19
19
|
};
|
|
20
20
|
exports.getFieldInList = getFieldInList;
|
|
21
|
-
exports.default = (function () {
|
|
21
|
+
exports.default = (function (_a) {
|
|
22
|
+
var showSelector = _a.showSelector;
|
|
22
23
|
var editor = (0, useEditor_1.useEditor)();
|
|
23
24
|
var fields = editor.form.fields, baseSpan = editor.baseSpan;
|
|
24
25
|
var onDrop = function (evt) {
|
|
@@ -30,6 +31,11 @@ exports.default = (function () {
|
|
|
30
31
|
editor.sortField(data, temPosition);
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
34
|
+
if (editor.fieldFixed) {
|
|
35
|
+
var fieldType = evt.dataTransfer.getData('field');
|
|
36
|
+
showSelector(fieldType, temPosition);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
33
39
|
var viewType = evt.dataTransfer.getData('view');
|
|
34
40
|
editor.addField(viewType, temPosition);
|
|
35
41
|
};
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
14
|
if (k2 === undefined) k2 = k;
|
|
4
15
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -26,14 +37,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
38
|
};
|
|
28
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
var react_1 =
|
|
40
|
+
var react_1 = __importStar(require("react"));
|
|
41
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
30
42
|
var useEditor_1 = require("../../hooks/useEditor");
|
|
31
43
|
var index_1 = require("../../../index");
|
|
32
44
|
var ListEditor_1 = __importStar(require("./ListEditor"));
|
|
33
45
|
var GroupEditor_1 = __importStar(require("./GroupEditor"));
|
|
46
|
+
var hooks_1 = require("../../../hooks");
|
|
47
|
+
var InputSelector_1 = require("../Items/InputSelector");
|
|
34
48
|
exports.default = (function () {
|
|
35
49
|
var editor = (0, useEditor_1.useEditor)();
|
|
36
|
-
var _a =
|
|
50
|
+
var _a = (0, hooks_1.useOpenState)(), open = _a.open, data = _a.data, show = _a.show, hide = _a.hide;
|
|
51
|
+
var _b = editor.form, isGroup = _b.isGroup, tip = _b.tip;
|
|
52
|
+
var typeRef = (0, react_1.useRef)('text');
|
|
37
53
|
var clazz = ['panel-content', 'uform-canvas'];
|
|
38
54
|
if (editor.baseSpan == 24) {
|
|
39
55
|
clazz.push('uform-canvas-single');
|
|
@@ -41,11 +57,27 @@ exports.default = (function () {
|
|
|
41
57
|
else {
|
|
42
58
|
clazz.push('uform-canvas-multi');
|
|
43
59
|
}
|
|
44
|
-
var
|
|
45
|
-
if (
|
|
46
|
-
|
|
60
|
+
var showSelector = function (field, pos, groupId) {
|
|
61
|
+
if (editor.fieldUsed.has(field)) {
|
|
62
|
+
index_1.message.error("\u5B57\u6BB5: ".concat(field, " \u5DF2\u7ECF\u88AB\u4F7F\u7528\u4E86"));
|
|
63
|
+
return;
|
|
47
64
|
}
|
|
48
|
-
|
|
65
|
+
var f = lodash_1.default.find(editor.fieldFixed, { field: field });
|
|
66
|
+
if (f == null) {
|
|
67
|
+
index_1.message.error("\u6CA1\u6709\u5B9A\u4E49\u5B57\u6BB5: ".concat(field, " "));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
typeRef.current = f.type || 'text';
|
|
71
|
+
show({ field: __assign(__assign({}, f), { type: typeRef.current }), pos: pos, groupId: groupId });
|
|
72
|
+
};
|
|
73
|
+
var onSelector = function () {
|
|
74
|
+
hide();
|
|
75
|
+
editor.addFixedField(__assign(__assign({}, data.field), { type: typeRef.current }), data.pos, data.groupId);
|
|
76
|
+
};
|
|
77
|
+
var CanvasEditor = function () {
|
|
78
|
+
if (isGroup)
|
|
79
|
+
return react_1.default.createElement(GroupEditor_1.default, { showSelector: showSelector });
|
|
80
|
+
return react_1.default.createElement(ListEditor_1.default, { showSelector: showSelector });
|
|
49
81
|
};
|
|
50
82
|
var onClick = function (evt) {
|
|
51
83
|
evt.preventDefault();
|
|
@@ -72,12 +104,21 @@ exports.default = (function () {
|
|
|
72
104
|
editor.setSelected({ group: el.group.id });
|
|
73
105
|
}
|
|
74
106
|
};
|
|
75
|
-
return react_1.default.createElement(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
107
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
108
|
+
react_1.default.createElement(index_1.Form, { labelCol: { sm: 6 }, wrapperCol: { sm: 18 }, onClick: onClick, className: clazz.join(' ') },
|
|
109
|
+
(tip && tip.text) && react_1.default.createElement("div", { onClick: function (evt) {
|
|
110
|
+
evt.preventDefault();
|
|
111
|
+
evt.stopPropagation();
|
|
112
|
+
editor.setSelected(null);
|
|
113
|
+
} },
|
|
114
|
+
react_1.default.createElement(index_1.Alert, { type: tip.type || 'info', message: tip.text })),
|
|
115
|
+
react_1.default.createElement(CanvasEditor, null)),
|
|
116
|
+
open && react_1.default.createElement(index_1.Modal, { onCancel: hide, open: true, title: react_1.default.createElement("span", null,
|
|
117
|
+
"\u8BF7\u9009\u62E9\u5B57\u6BB5\u7C7B\u578B ",
|
|
118
|
+
open && react_1.default.createElement("span", null,
|
|
119
|
+
data.field.title,
|
|
120
|
+
" / ",
|
|
121
|
+
react_1.default.createElement("small", null,
|
|
122
|
+
react_1.default.createElement("i", null, data.field.field)))), width: 960, bodyStyle: { maxHeight: 520, overflow: 'auto' }, onOk: onSelector },
|
|
123
|
+
react_1.default.createElement(InputSelector_1.InputSelector, { field: data.field, onChange: function (type) { return typeRef.current = type; } })));
|
|
83
124
|
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Fields = void 0;
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var useEditor_1 = require("../../hooks/useEditor");
|
|
29
|
+
var Fields = function (props) {
|
|
30
|
+
var _a = (0, useEditor_1.useEditor)(), fieldFixed = _a.fieldFixed, fieldUsed = _a.fieldUsed;
|
|
31
|
+
var fields = (0, react_1.useMemo)(function () {
|
|
32
|
+
if (fieldFixed == false)
|
|
33
|
+
return [];
|
|
34
|
+
return fieldFixed.filter(function (item) { return !fieldUsed.has(item.field); });
|
|
35
|
+
}, [fieldFixed, fieldUsed]);
|
|
36
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
|
+
react_1.default.createElement("ul", { className: 'uform-editor-fields' }, fields.map(function (item) { return react_1.default.createElement("li", { key: item.field, draggable: true, onDragStart: function (evt) { return evt.dataTransfer.setData("field", item.field); } },
|
|
38
|
+
react_1.default.createElement("span", null, item.field),
|
|
39
|
+
" ",
|
|
40
|
+
react_1.default.createElement("small", null, item.title)); })));
|
|
41
|
+
};
|
|
42
|
+
exports.Fields = Fields;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
+
if (!m) return o;
|
|
39
|
+
var i = m.call(o), r, ar = [], e;
|
|
40
|
+
try {
|
|
41
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
+
}
|
|
43
|
+
catch (error) { e = { error: error }; }
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
+
}
|
|
48
|
+
finally { if (e) throw e.error; }
|
|
49
|
+
}
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
var __values = (this && this.__values) || function(o) {
|
|
53
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
54
|
+
if (m) return m.call(o);
|
|
55
|
+
if (o && typeof o.length === "number") return {
|
|
56
|
+
next: function () {
|
|
57
|
+
if (o && i >= o.length) o = void 0;
|
|
58
|
+
return { value: o && o[i++], done: !o };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
62
|
+
};
|
|
63
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
|
+
exports.InputSelector = void 0;
|
|
65
|
+
var react_1 = __importStar(require("react"));
|
|
66
|
+
var inputs_1 = require("../../inputs");
|
|
67
|
+
var index_1 = require("../../../index");
|
|
68
|
+
var Inputs_1 = require("./Inputs");
|
|
69
|
+
var InputSelector = function (props) {
|
|
70
|
+
var _a = __read((0, react_1.useState)(props.field.type || 'text'), 2), currentType = _a[0], setCurrentType = _a[1];
|
|
71
|
+
var currentGroup = (0, react_1.useMemo)(function () {
|
|
72
|
+
var e_1, _a, e_2, _b;
|
|
73
|
+
try {
|
|
74
|
+
for (var Groups_1 = __values(inputs_1.Groups), Groups_1_1 = Groups_1.next(); !Groups_1_1.done; Groups_1_1 = Groups_1.next()) {
|
|
75
|
+
var group = Groups_1_1.value;
|
|
76
|
+
try {
|
|
77
|
+
for (var _c = (e_2 = void 0, __values(group.inputs)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
78
|
+
var input = _d.value;
|
|
79
|
+
if (input.type == currentType) {
|
|
80
|
+
return group.title;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
85
|
+
finally {
|
|
86
|
+
try {
|
|
87
|
+
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
88
|
+
}
|
|
89
|
+
finally { if (e_2) throw e_2.error; }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
94
|
+
finally {
|
|
95
|
+
try {
|
|
96
|
+
if (Groups_1_1 && !Groups_1_1.done && (_a = Groups_1.return)) _a.call(Groups_1);
|
|
97
|
+
}
|
|
98
|
+
finally { if (e_1) throw e_1.error; }
|
|
99
|
+
}
|
|
100
|
+
return inputs_1.Groups[0].title;
|
|
101
|
+
}, []);
|
|
102
|
+
(0, react_1.useLayoutEffect)(function () {
|
|
103
|
+
props.onChange(currentType);
|
|
104
|
+
}, [currentType]);
|
|
105
|
+
return react_1.default.createElement(index_1.Collapse, { className: 'uform-editor-item uform-editor-item-fields',
|
|
106
|
+
// size="small"
|
|
107
|
+
bordered: false, defaultActiveKey: currentGroup }, inputs_1.Groups.map(function (group) {
|
|
108
|
+
var inputs = group.inputs.filter(function (item) {
|
|
109
|
+
var ipt = (0, inputs_1.getInput)(item.type);
|
|
110
|
+
if (ipt.fieldCount && ipt.fieldCount > 1)
|
|
111
|
+
return false;
|
|
112
|
+
return true;
|
|
113
|
+
});
|
|
114
|
+
// const
|
|
115
|
+
if (inputs.length == 0)
|
|
116
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
117
|
+
return react_1.default.createElement(index_1.Collapse.Panel, { key: group.title, header: group.title },
|
|
118
|
+
react_1.default.createElement("ul", null, inputs.map(function (item) { return react_1.default.createElement("li", { className: item.type == currentType ? 'uform-editor-item-field-active' : undefined, key: item.type, onClick: function () { return setCurrentType(item.type); } },
|
|
119
|
+
react_1.default.createElement(Inputs_1.Item, __assign({}, item))); })));
|
|
120
|
+
}));
|
|
121
|
+
};
|
|
122
|
+
exports.InputSelector = InputSelector;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Inputs = exports.Item = void 0;
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var inputs_1 = require("../../inputs");
|
|
20
|
+
var utils_1 = require("../../../utils");
|
|
21
|
+
var index_1 = require("../../../index");
|
|
22
|
+
var Item = function (props) { return react_1.default.createElement("div", { className: 'field-type-item' },
|
|
23
|
+
react_1.default.createElement("img", { src: utils_1.PageUtil.resolveURL('/images/vform/' + props.icon) }),
|
|
24
|
+
react_1.default.createElement("span", null, props.title)); };
|
|
25
|
+
exports.Item = Item;
|
|
26
|
+
var Inputs = function () { return react_1.default.createElement(react_1.default.Fragment, null,
|
|
27
|
+
react_1.default.createElement("div", { className: 'panel-title' }, "\u8F93\u5165"),
|
|
28
|
+
react_1.default.createElement("div", { className: 'panel-content uform-editor-item' },
|
|
29
|
+
react_1.default.createElement(index_1.Collapse, { accordion: true, defaultActiveKey: inputs_1.Groups[0].title }, inputs_1.Groups.map(function (group) {
|
|
30
|
+
var inputs = group.inputs;
|
|
31
|
+
if (inputs.length == 0) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
return react_1.default.createElement(index_1.Collapse.Panel, { key: group.title, header: group.title },
|
|
35
|
+
react_1.default.createElement("ul", null, inputs.map(function (item) { return react_1.default.createElement("li", { key: item.type, draggable: true, onDragStart: function (evt) { return evt.dataTransfer.setData("view", item.type); } },
|
|
36
|
+
react_1.default.createElement(exports.Item, __assign({}, item))); })));
|
|
37
|
+
})))); };
|
|
38
|
+
exports.Inputs = Inputs;
|
|
@@ -1,34 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
4
|
};
|
|
16
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
6
|
var react_1 = __importDefault(require("react"));
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
react_1.default.createElement(
|
|
25
|
-
|
|
26
|
-
react_1.default.createElement(index_1.Collapse, { accordion: true, defaultActiveKey: inputs_1.Groups[0].title }, inputs_1.Groups.map(function (group) {
|
|
27
|
-
var inputs = group.inputs;
|
|
28
|
-
if (inputs.length == 0) {
|
|
29
|
-
return [];
|
|
30
|
-
}
|
|
31
|
-
return react_1.default.createElement(index_1.Collapse.Panel, { key: group.title, header: group.title },
|
|
32
|
-
react_1.default.createElement("ul", null, inputs.map(function (item) { return react_1.default.createElement("li", { key: item.type, draggable: true, onDragStart: function (evt) { return evt.dataTransfer.setData("view", item.type); } },
|
|
33
|
-
react_1.default.createElement(Item, __assign({}, item))); })));
|
|
34
|
-
})))); });
|
|
7
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
var Fields_1 = require("./Fields");
|
|
9
|
+
var Inputs_1 = require("./Inputs");
|
|
10
|
+
exports.default = (function (props) {
|
|
11
|
+
if (lodash_1.default.isArray(props.fields) && props.fields.length)
|
|
12
|
+
return react_1.default.createElement(Fields_1.Fields, { fields: props.fields });
|
|
13
|
+
return react_1.default.createElement(Inputs_1.Inputs, null);
|
|
14
|
+
});
|
|
@@ -41,8 +41,11 @@ var plugins_1 = require("../../plugins");
|
|
|
41
41
|
var FieldPlugin_1 = require("./Component/FieldPlugin");
|
|
42
42
|
var OptionTable_1 = require("./Component/OptionTable");
|
|
43
43
|
var _register_1 = require("../../../components/UForm/_register");
|
|
44
|
+
var useEditor_1 = require("../../hooks/useEditor");
|
|
44
45
|
exports.default = (function (props) {
|
|
45
46
|
var _a, _b;
|
|
47
|
+
var fieldFixed = (0, useEditor_1.useEditor)().fieldFixed;
|
|
48
|
+
var disabled = fieldFixed !== false;
|
|
46
49
|
var setFieldProperties = props.setFieldProperties, field = props.field, input = props.input, baseSpan = props.baseSpan;
|
|
47
50
|
var config = field.config || {};
|
|
48
51
|
var setConfig = function (key, value) {
|
|
@@ -55,7 +58,7 @@ exports.default = (function (props) {
|
|
|
55
58
|
};
|
|
56
59
|
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
57
60
|
react_1.default.createElement(index_1.Form.Item, { label: "\u5B57\u6BB5\u540D", required: true },
|
|
58
|
-
react_1.default.createElement(index_1.Input, { size: 'small', value: field.field, onChange: function (evt) { return setFieldProperties('field', evt.target.value); } })),
|
|
61
|
+
react_1.default.createElement(index_1.Input, { disabled: disabled, size: 'small', value: field.field, onChange: function (evt) { return setFieldProperties('field', evt.target.value); } })),
|
|
59
62
|
react_1.default.createElement(index_1.Form.Item, { label: "\u6807\u9898", required: true },
|
|
60
63
|
react_1.default.createElement(index_1.Input, { size: 'small', value: field.title, onChange: function (evt) { return setFieldProperties('title', evt.target.value); } })),
|
|
61
64
|
input.defaultPlaceholder && react_1.default.createElement(index_1.Form.Item, { label: "\u7A7A\u503C\u5360\u4F4D" },
|
package/uform/plugins/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var PluginSlot;
|
|
|
18
18
|
// 字段属性 - 高级
|
|
19
19
|
PluginSlot[PluginSlot["FIELD_ADVANCE"] = 6] = "FIELD_ADVANCE";
|
|
20
20
|
})(PluginSlot || (exports.PluginSlot = PluginSlot = {}));
|
|
21
|
-
// const
|
|
21
|
+
// const FieldPlugins = new Map()
|
|
22
22
|
var FieldPlugins = new Map();
|
|
23
23
|
var registerFieldPlugin = function (slot, type) {
|
|
24
24
|
return [];
|
package/uform/schema.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export type Link = FunctionCode & {
|
|
|
49
49
|
* 说明:为了保证兼容性,所有字段尽量与VAP UFormField 一致。以保证 schema Json 可以支持使用。
|
|
50
50
|
* 如果有 点 _开头的属性,说明需要使用转换工具进行转换
|
|
51
51
|
*/
|
|
52
|
-
export type FormItem = Pick<UFormField, 'field' | 'title' | 'span' | 'placeholder' | 'roleCode' | 'ik' | 'required' | 'tip' | 'extra' | 'help' | 'options' | 'ignore' | 'show' | 'disabled' | 'config' | 'columns'> & {
|
|
52
|
+
export type FormItem = Pick<UFormField, 'field' | 'title' | 'span' | 'placeholder' | 'roleCode' | 'ik' | 'dataType' | 'required' | 'tip' | 'extra' | 'help' | 'options' | 'ignore' | 'show' | 'disabled' | 'config' | 'columns'> & {
|
|
53
53
|
/**
|
|
54
54
|
* itemId 唯一标识
|
|
55
55
|
* */
|
|
@@ -157,4 +157,8 @@ type BaseForm = {
|
|
|
157
157
|
[properties: string]: any;
|
|
158
158
|
};
|
|
159
159
|
export type FormSchema = BaseForm & (_ListSchema | _GroupSchema);
|
|
160
|
+
/**
|
|
161
|
+
* 固定字段定义,用于字段接取模式
|
|
162
|
+
*/
|
|
163
|
+
export type FixField = Pick<UFormField, 'field' | 'title' | 'type' | 'dataType' | 'config'>;
|
|
160
164
|
export {};
|
package/uform/utils/arr.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { FormItem, FormGroup, Cursor } from "../schema";
|
|
1
|
+
import type { FormItem, FormGroup, Cursor, FixField } from "../schema";
|
|
2
2
|
import type { PlainObject } from '../../basetype';
|
|
3
|
-
export declare const insertInList: (fieldType: string, list: FormItem[], pos?: Cursor) => FormItem[];
|
|
3
|
+
export declare const insertInList: (fieldType: string, list: FormItem[], pos?: Cursor, fixField?: FixField) => FormItem[];
|
|
4
4
|
export declare const insertInGroup: (fieldType: string, list: FormGroup[], groupId: string, pos?: Cursor) => FormGroup[];
|
|
5
5
|
export declare const sortList: (id: string, fields: FormItem[], pos: Cursor) => FormItem[];
|
|
6
6
|
export declare const sortListInGroup: (id: string, fields: FormGroup[], groupId: string, pos?: Cursor) => FormGroup[];
|
package/uform/utils/arr.js
CHANGED
|
@@ -58,9 +58,10 @@ var insertFieldInList = function (field, list, pos) {
|
|
|
58
58
|
return __spreadArray(__spreadArray(__spreadArray([], __read(lodash_1.default.slice(list, 0, inSertPos)), false), [field], false), __read(lodash_1.default.slice(list, inSertPos)), false);
|
|
59
59
|
};
|
|
60
60
|
// 插入一个字段到列表指定位置
|
|
61
|
-
var insertInList = function (fieldType, list, pos) {
|
|
61
|
+
var insertInList = function (fieldType, list, pos, fixField) {
|
|
62
62
|
var _a;
|
|
63
63
|
if (pos === void 0) { pos = null; }
|
|
64
|
+
if (fixField === void 0) { fixField = null; }
|
|
64
65
|
var info = (0, inputs_1.getInput)(fieldType);
|
|
65
66
|
if (info == null) {
|
|
66
67
|
antd_1.message.error('无此类型');
|
|
@@ -68,6 +69,10 @@ var insertInList = function (fieldType, list, pos) {
|
|
|
68
69
|
}
|
|
69
70
|
var key = utils_1.StringUtil.genKey();
|
|
70
71
|
var field = { id: key, type: fieldType, title: info.title, field: key };
|
|
72
|
+
if (fixField) {
|
|
73
|
+
field.field = fixField.field;
|
|
74
|
+
field.title = fixField.title;
|
|
75
|
+
}
|
|
71
76
|
if (info.defaultProperties)
|
|
72
77
|
lodash_1.default.assign(field, info.defaultProperties);
|
|
73
78
|
if (info.defaultConfig)
|
|
@@ -122,7 +122,7 @@ var loadApi = function (option) { return __awaiter(void 0, void 0, void 0, funct
|
|
|
122
122
|
result = _a.sent();
|
|
123
123
|
if (!cache.loaded) {
|
|
124
124
|
arr = (0, _define_1.getList)(result);
|
|
125
|
-
arr.map(function (item) { return cache.map.set(item[option.
|
|
125
|
+
arr.map(function (item) { return cache.map.set(item[option.valueField] + '', item[option.nameField]); });
|
|
126
126
|
cache.loaded = true;
|
|
127
127
|
}
|
|
128
128
|
return [2 /*return*/, true];
|
|
@@ -234,7 +234,7 @@ var ApiGetRender = function (options) {
|
|
|
234
234
|
}
|
|
235
235
|
arr = (0, _define_1.getList)(result);
|
|
236
236
|
arr.map(function (item) {
|
|
237
|
-
apiOptions.push({ label: item[options.nameField], value: format(item[options.
|
|
237
|
+
apiOptions.push({ label: item[options.nameField], value: format(item[options.valueField]) });
|
|
238
238
|
});
|
|
239
239
|
setState(apiOptions);
|
|
240
240
|
return [2 /*return*/];
|
|
@@ -255,7 +255,7 @@ var ApiGetRender = function (options) {
|
|
|
255
255
|
var resp = (0, XHR_1.GETSYNC)(options.api);
|
|
256
256
|
var map = new Map();
|
|
257
257
|
var arr = (0, _define_1.getList)(resp);
|
|
258
|
-
arr.map(function (item) { return map.set(item[options.
|
|
258
|
+
arr.map(function (item) { return map.set(item[options.valueField] + '', item[options.nameField]); });
|
|
259
259
|
API_CACHES.set(options.api, {
|
|
260
260
|
fetcher: index_1.Ajax.GET(options.api),
|
|
261
261
|
loaded: true,
|
|
@@ -276,4 +276,4 @@ var ApiGetRender = function (options) {
|
|
|
276
276
|
return fn;
|
|
277
277
|
};
|
|
278
278
|
exports.ApiGetRender = ApiGetRender;
|
|
279
|
-
// export const roleRender = ApiGetRender({ api: GLOBAL.CONFIG.ADMIN.ROLE, nameField: 'name',
|
|
279
|
+
// export const roleRender = ApiGetRender({ api: GLOBAL.CONFIG.ADMIN.ROLE, nameField: 'name', valueField: 'id', });
|
|
@@ -141,7 +141,7 @@ var _ApiPostRender = function (props) {
|
|
|
141
141
|
cache[cacheKey] = true;
|
|
142
142
|
index_1.CacheUtil.set(KEY, cache);
|
|
143
143
|
update();
|
|
144
|
-
return [4 /*yield*/, index_1.Ajax.POST(props.api, __assign(__assign({}, props.param), (_a = {}, _a[props.
|
|
144
|
+
return [4 /*yield*/, index_1.Ajax.POST(props.api, __assign(__assign({}, props.param), (_a = {}, _a[props.valueField] = props.value, _a)), { process: false })];
|
|
145
145
|
case 5:
|
|
146
146
|
resp = _b.sent();
|
|
147
147
|
result = getLabel(props, resp, cacheKey);
|
|
@@ -203,7 +203,7 @@ var ApiPostRender = function (options) {
|
|
|
203
203
|
var _a;
|
|
204
204
|
var result = getInCache(KEY, key);
|
|
205
205
|
if (result === null) {
|
|
206
|
-
var resp = (0, XHR_1.POSTSYNC)(options.api, __assign(__assign({}, options.param), (_a = {}, _a[options.
|
|
206
|
+
var resp = (0, XHR_1.POSTSYNC)(options.api, __assign(__assign({}, options.param), (_a = {}, _a[options.valueField] = key, _a)));
|
|
207
207
|
result = getLabel(options, resp, key);
|
|
208
208
|
}
|
|
209
209
|
if (result == false)
|
|
@@ -4,13 +4,17 @@ export type BaseRenderOptions = {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
default?: React.ReactNode;
|
|
6
6
|
onlyText?: boolean;
|
|
7
|
+
bold?: boolean;
|
|
8
|
+
underline?: boolean;
|
|
9
|
+
italic?: boolean;
|
|
10
|
+
color?: string;
|
|
7
11
|
format?: (param: string) => string;
|
|
8
12
|
len?: number;
|
|
9
13
|
};
|
|
10
14
|
export type ApiRenderOptions = BaseRenderOptions & {
|
|
11
15
|
api: string;
|
|
12
16
|
nameField: string;
|
|
13
|
-
|
|
17
|
+
valueField: string;
|
|
14
18
|
render?: (info: BaseOption) => React.ReactNode;
|
|
15
19
|
};
|
|
16
20
|
export declare const getValue: (txt: string, options: BaseRenderOptions) => string | React.ReactNode;
|
package/utils/Renders/_define.js
CHANGED
|
@@ -24,9 +24,19 @@ var getValue = function (txt, options) {
|
|
|
24
24
|
if (options.len && str.length > options.len) {
|
|
25
25
|
str = str.substring(0, options.len) + '...';
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
var clazz = [];
|
|
28
|
+
if (options.className)
|
|
29
|
+
clazz.push(options.className);
|
|
30
|
+
if (options.bold)
|
|
31
|
+
clazz.push('font-bold');
|
|
32
|
+
if (options.italic)
|
|
33
|
+
clazz.push('font-italic');
|
|
34
|
+
if (options.underline)
|
|
35
|
+
clazz.push('font-underline');
|
|
36
|
+
var style = options.color ? { color: options.color } : undefined;
|
|
37
|
+
if (options.onlyText || (clazz.length == 0 && style == undefined))
|
|
28
38
|
return str;
|
|
29
|
-
return react_1.default.createElement("span", { className:
|
|
39
|
+
return react_1.default.createElement("span", { className: clazz.join(' '), style: style, title: txt }, str);
|
|
30
40
|
};
|
|
31
41
|
exports.getValue = getValue;
|
|
32
42
|
var convertValue = function (value, config) {
|