vap1 0.3.2 → 0.3.4

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.
Files changed (52) hide show
  1. package/components/SearchBar/_register.d.ts +1 -1
  2. package/components/SearchBar/_register.js +1 -1
  3. package/components/TreeSelect/BaseTreeSelect.js +0 -1
  4. package/components/TreeSelect/DTreeSelect.js +1 -5
  5. package/components/TreeSelect/FTreeSelect.js +1 -3
  6. package/components/TreeSelect/STreeSelect.js +1 -1
  7. package/components/Trees/COTree/COButton.js +1 -1
  8. package/components/Trees/COTree/COSelect.js +1 -1
  9. package/components/UForm/UForm.js +12 -13
  10. package/components/UForm/_input.d.ts +1 -1
  11. package/components/UForm/index.d.ts +2 -2
  12. package/components/_common/Upagination.js +0 -1
  13. package/hooks/useApiBase.d.ts +36 -1
  14. package/hooks/useApiBase.js +21 -10
  15. package/package.json +1 -1
  16. package/uform/FormEditor.d.ts +20 -3
  17. package/uform/FormEditor.js +5 -5
  18. package/uform/FormViewer.d.ts +10 -1
  19. package/uform/FormViewer.js +10 -1
  20. package/uform/hooks/useEditor.d.ts +5 -2
  21. package/uform/hooks/useEditor.js +33 -1
  22. package/uform/index.js +31 -21
  23. package/uform/panel/Editor/GroupEditor.d.ts +3 -1
  24. package/uform/panel/Editor/GroupEditor.js +8 -2
  25. package/uform/panel/Editor/ListEditor.d.ts +3 -1
  26. package/uform/panel/Editor/ListEditor.js +7 -1
  27. package/uform/panel/Editor/index.js +55 -14
  28. package/uform/panel/Items/Fields.d.ts +3 -0
  29. package/uform/panel/Items/Fields.js +42 -0
  30. package/uform/panel/Items/InputSelector.d.ts +6 -0
  31. package/uform/panel/Items/InputSelector.js +122 -0
  32. package/uform/panel/Items/Inputs.d.ts +4 -0
  33. package/uform/panel/Items/Inputs.js +38 -0
  34. package/uform/panel/Items/index.d.ts +2 -1
  35. package/uform/panel/Items/index.js +8 -28
  36. package/uform/panel/Propreties/_ItemBase.js +4 -1
  37. package/uform/plugins/index.js +1 -1
  38. package/uform/schema.d.ts +5 -1
  39. package/uform/utils/arr.d.ts +2 -2
  40. package/uform/utils/arr.js +6 -1
  41. package/utils/Const.d.ts +10 -11
  42. package/utils/Const.js +43 -29
  43. package/utils/CustomApp.d.ts +96 -83
  44. package/utils/Renders/ApiGetRender.js +4 -4
  45. package/utils/Renders/ApiPostRender.js +2 -2
  46. package/utils/Renders/StringRender.d.ts +1 -1
  47. package/utils/Renders/_define.d.ts +5 -1
  48. package/utils/Renders/_define.js +12 -2
  49. package/utils/VAP.d.ts +1 -0
  50. package/utils/VAP.js +7 -1
  51. package/utils/index.d.ts +2 -0
  52. package/utils/index.js +7 -1
@@ -41,7 +41,7 @@ export type SearchFieldOptions = {
41
41
  /**
42
42
  * 字段个数, 默认为 1
43
43
  */
44
- filedNum?: number;
44
+ fieldNum?: number;
45
45
  /**
46
46
  * 默认占格 , 默认为 1
47
47
  */
@@ -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, filedNum: 1, defaultSpan: 1, };
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
@@ -64,7 +64,6 @@ var lodash_1 = __importStar(require("lodash"));
64
64
  var react_1 = __importStar(require("react"));
65
65
  var antd_1 = require("antd");
66
66
  var HighLight_1 = require("../_common/HighLight");
67
- ;
68
67
  var Icon_1 = require("../_adapt/Icon");
69
68
  var utils_1 = require("../../utils");
70
69
  var hooks_1 = require("../../hooks");
@@ -224,8 +224,6 @@ var _DTreeSelect = function (props) {
224
224
  var key = treeState.treeData[0][treeState.keyField];
225
225
  treeProps.treeDefaultExpandedKeys = [key];
226
226
  }
227
- if (treeState.valueField == null)
228
- treeProps.value = value;
229
227
  var loadData = function (dataNode) { return __awaiter(void 0, void 0, void 0, function () {
230
228
  var data, children;
231
229
  return __generator(this, function (_a) {
@@ -241,9 +239,7 @@ var _DTreeSelect = function (props) {
241
239
  }
242
240
  });
243
241
  }); };
244
- if (!treeState.inited)
245
- return utils_1.Const.NONE;
246
- return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, treeProps, extraProps, { disabled: props.disabled, loadData: loadData }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
242
+ return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, treeProps, extraProps, { value: value == null ? undefined : value, disabled: props.disabled, loadData: loadData }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
247
243
  };
248
244
  var DTreeSelect = function (props) { return react_1.default.createElement(BaseTreeSelect_1.BaseTreeSelect, __assign({}, props),
249
245
  react_1.default.createElement(_DTreeSelect, __assign({}, props))); };
@@ -80,11 +80,9 @@ var _FTreeSelect = function (props) {
80
80
  // 如果根节点只有一个,则自动展开这个根结点
81
81
  if (treeState.treeData.length == 1)
82
82
  treeProps.treeDefaultExpandedKeys = [treeState.treeData[0][treeState.keyField]];
83
- if (treeState.valueField == null)
84
- treeProps.value = value;
85
83
  if (!treeState.inited)
86
84
  return utils_1.Const.NONE;
87
- return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, treeProps, extraProps, { disabled: props.disabled }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
85
+ return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, treeProps, extraProps, { value: value == null ? undefined : value, disabled: props.disabled }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
88
86
  };
89
87
  var FTreeSelect = function (props) { return react_1.default.createElement(BaseTreeSelect_1.BaseTreeSelect, __assign({}, props),
90
88
  react_1.default.createElement(_FTreeSelect, __assign({}, props))); };
@@ -26,7 +26,7 @@ var _STreeSelect = function (props) {
26
26
  // 说明,等待数据处理好了再绑定,让 defaultExpand 之类的默认属性能生效
27
27
  if (!treeState.inited)
28
28
  return utils_1.Const.NONE;
29
- return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, extraProps, { value: treeState.valueField ? undefined : value, disabled: props.disabled }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
29
+ return react_1.default.createElement(antd_1.TreeSelect, __assign({}, baseProps, extraProps, { value: value == null ? undefined : value, disabled: props.disabled }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
30
30
  };
31
31
  var STreeSelect = function (props) { return react_1.default.createElement(BaseTreeSelect_1.BaseTreeSelect, __assign({}, props),
32
32
  react_1.default.createElement(_STreeSelect, __assign({}, props))); };
@@ -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
- valueFiled: props.keyField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[0],
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
- valueFiled: props.keyField || utils_1.GLOBAL.CONFIG.BASIC.ORG_FIELDS[0],
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);
@@ -137,12 +137,12 @@ var onChangeEvent = function (state, field, form, update, values, extra) {
137
137
  var needUpdate = false;
138
138
  var pushBus = function (targetField, result) {
139
139
  if (result === null) {
140
- value[targetField] = undefined;
140
+ lodash_1.default.unset(value, targetField);
141
141
  }
142
142
  else if (lodash_1.default.isPlainObject(result)) {
143
143
  var data = result;
144
144
  if (lodash_1.default.has(data, 'value'))
145
- value[targetField] = data.value;
145
+ lodash_1.default.set(value, targetField, data.value);
146
146
  if (lodash_1.default.has(data, 'required')) {
147
147
  if (!requireFields.current.has(targetField)) {
148
148
  needUpdate = true;
@@ -191,7 +191,7 @@ var onChangeEvent = function (state, field, form, update, values, extra) {
191
191
  }
192
192
  }
193
193
  else {
194
- value[targetField] = result;
194
+ lodash_1.default.set(value, targetField, result);
195
195
  }
196
196
  size++;
197
197
  if (size == field.link.length) {
@@ -380,11 +380,11 @@ var getValue = function (multipleFields, values, initRef) {
380
380
  var RTNData = __assign(__assign({}, initRef === null || initRef === void 0 ? void 0 : initRef.current), values);
381
381
  lodash_1.default.keys(RTNData).map(function (property) {
382
382
  if (multipleFields.has(property)) {
383
- var conbined_1 = RTNData[property];
383
+ var conbined_1 = lodash_1.default.get(RTNData, property);
384
384
  var fields = property.split(',').map(lodash_1.default.trim);
385
385
  fields.map(function (field) {
386
386
  if (lodash_1.default.has(conbined_1, field))
387
- data[field] = conbined_1[field];
387
+ lodash_1.default.set(data, field, lodash_1.default.get(conbined_1, field));
388
388
  });
389
389
  return;
390
390
  }
@@ -405,14 +405,13 @@ var initValue = function (props) {
405
405
  var e_1, _a;
406
406
  var values = __assign(__assign({}, props.default), props.data);
407
407
  var _loop_1 = function (key) {
408
- var _d;
409
408
  var fields = key.split(',').map(lodash_1.default.trim);
410
409
  if (fields.length == 1) {
411
410
  if (lodash_1.default.has(values, key)) {
412
- values[key] = (_d = {}, _d[key] = values[key], _d);
411
+ lodash_1.default.set(values, key, lodash_1.default.get(values, key));
413
412
  }
414
413
  else {
415
- values[key] = {};
414
+ lodash_1.default.set(values, key, {});
416
415
  }
417
416
  }
418
417
  else {
@@ -420,7 +419,7 @@ var initValue = function (props) {
420
419
  if (lodash_1.default.has(values, item)) {
421
420
  if (!lodash_1.default.has(values, key))
422
421
  values[key] = {};
423
- values[key][item] = values[item];
422
+ lodash_1.default.set(values[key], item, lodash_1.default.get(values, item));
424
423
  }
425
424
  });
426
425
  }
@@ -451,11 +450,11 @@ var _FormField = function (props) {
451
450
  props.fields.map(function (field) {
452
451
  if (field == null || field == false)
453
452
  return;
454
- if (!lodash_1.default.has(values, field.field) || values[field.field] === null || values[field.field] === undefined)
453
+ if (!lodash_1.default.has(values, field.field) || lodash_1.default.get(values, field.field) === null || lodash_1.default.get(values, field.field) === undefined)
455
454
  return;
456
455
  // setFieldsValue 要 render 后才能get ,延时执行 link事件
457
456
  if (lodash_1.default.isArray(field.link) && field.link.length > 0)
458
- setTimeout(function () { return onChangeEvent(props.state, field, form, update, values[field.field]); }, 2);
457
+ setTimeout(function () { return onChangeEvent(props.state, field, form, update, lodash_1.default.get(values, field.field)); }, 2);
459
458
  });
460
459
  update();
461
460
  }, []);
@@ -481,11 +480,11 @@ var _FormGroup = function (props) {
481
480
  // @ts-ignore
482
481
  if (field == null || field == false)
483
482
  return;
484
- if (!lodash_1.default.has(values, field.field) || values[field.field] === null || values[field.field] === undefined)
483
+ if (!lodash_1.default.has(values, field.field) || lodash_1.default.get(values, field.field) === null || lodash_1.default.get(values, field.field) === undefined)
485
484
  return;
486
485
  // setFieldsValue 要 render 后才能get ,延时执行 link事件
487
486
  if (lodash_1.default.isArray(field.link) && field.link.length > 0)
488
- setTimeout(function () { return onChangeEvent(props.state, field, form, update, values[field.field]); }, 2);
487
+ setTimeout(function () { return onChangeEvent(props.state, field, form, update, lodash_1.default.get(values, field.field)); }, 2);
489
488
  });
490
489
  });
491
490
  update();
@@ -36,7 +36,7 @@ type ApiTableBuilderOptions = {
36
36
  /**
37
37
  * 支持连带返回的字段
38
38
  * 1. 字段为数据本身的字段,支持一至多个
39
- * 2. Field 配置里面,filed 参数
39
+ * 2. Field 配置里面,field 参数
40
40
  */
41
41
  itemFields: string[];
42
42
  /**
@@ -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, 类型时,根据返回结果改变目标 filed 的 显示/置灰/选项集/值的状态
69
+ * 返回值为 LinkResult, 类型时,根据返回结果改变目标 field 的 显示/置灰/选项集/值的状态
70
70
  * 支持 返回 Promise 对象,返回Promise时,resolve也必须为一个LinkResult
71
71
  *
72
72
  * 参数
@@ -16,7 +16,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.UPagination = void 0;
18
18
  var react_1 = __importDefault(require("react"));
19
- // import { Pagination } from '../_adapt/Pagination';
20
19
  var antd_1 = require("antd");
21
20
  var utils_1 = require("../../utils");
22
21
  var i18n_1 = require("../../utils/i18n");
@@ -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
- afterQuery?: (isSuccess: boolean, queryParam: PlainObject, response: PlainObject) => void;
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 & {
@@ -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 }, function () {
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.2","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
1
+ {"name":"vap1","version":"0.3.4","description":"vap1, Both support MicroService and SAP FrameWork, Support IE>9","main":"index.js","author":"Xiang da","license":"ISC"}
@@ -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 {};
@@ -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 index_2 = __importDefault(require("./panel/Items/index"));
50
- var index_3 = __importDefault(require("./panel/Editor/index"));
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(index_2.default, null)),
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(index_3.default, null)),
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",
@@ -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
- type ModalProps = Pick<UModalProps, 'open' | 'onOk' | 'onCancel' | 'title' | 'data'>;
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 {};
@@ -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 {};
@@ -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
- var picOptions = lodash_1.default.range(1, 17).map(function (key) { return ({ label: key, value: "/data/images/dashboard/".concat(key, ".png") }); });
22
- (0, register_1.registerCustom)({
23
- type: 'dashboard-cover',
24
- title: '快速图片选择',
25
- icon: 'text.png',
26
- Component: function () {
27
- var width = 144, height = 81;
28
- return react_1.default.createElement("div", null,
29
- react_1.default.createElement(index_1.Upload, { name: "file", withCredentials: true, listType: "picture", showUploadList: false, onChange: function () { }, accept: "image/*", className: 'upload-icon-empty', data: { namespace: 'app-data', } }, react_1.default.createElement("div", { style: { width: width, height: height, marginRight: 6, textAlign: 'center', paddingTop: 12, cursor: 'pointer', borderRadius: 4, marginBottom: 6, border: '1px solid rgb(24 144 255 / 24%)' } },
30
- react_1.default.createElement(index_1.Icon, { type: 'plus' }),
31
- react_1.default.createElement("div", { className: "ant-upload-text" }, "\u4E0A\u4F20"))),
32
- react_1.default.createElement(index_1.Row, { style: { height: 140, width: 436, overflowX: 'hidden', overflowY: 'auto', flexWrap: 'wrap' }, gutter: 8 }, picOptions.map(function (img) { return react_1.default.createElement(index_1.Col, { span: 6, style: { height: 64, marginBottom: 6, cursor: 'pointer' } },
33
- react_1.default.createElement("img", { style: { height: '100%', width: '100%', borderWidth: 1, borderStyle: 'solid', borderRadius: 6, borderColor: 'transparent' }, src: img.value })); })));
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: () => React.JSX.Element;
6
+ declare const _default: ({ showSelector }: {
7
+ showSelector: any;
8
+ }) => React.JSX.Element;
7
9
  export default _default;