vap1 0.1.4 → 0.1.6

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 (130) hide show
  1. package/components/SearchBar/ByField.js +7 -1
  2. package/components/SearchBar/ByKeyword.js +52 -10
  3. package/components/Tables/STable.d.ts +9 -1
  4. package/components/Tables/STable.js +20 -5
  5. package/components/Tables/VTable.js +18 -10
  6. package/components/Trees/ActionTree.js +0 -1
  7. package/components/Trees/COTree/COSelect.d.ts +45 -0
  8. package/components/Trees/COTree/COSelect.js +107 -0
  9. package/components/Trees/COTree/COTree.d.ts +74 -0
  10. package/components/Trees/COTree/COTree.js +207 -0
  11. package/components/Trees/COTree/COTreeUtil.d.ts +17 -0
  12. package/components/Trees/COTree/COTreeUtil.js +187 -0
  13. package/components/UForm/UForm.js +0 -1
  14. package/components/UForm/UFormModal.js +1 -1
  15. package/components/UForm/_FieldType.d.ts +1 -1
  16. package/components/UForm/_FieldType.js +10 -2
  17. package/components/UForm/index.d.ts +10 -0
  18. package/components/_adapt/Drawer.js +1 -1
  19. package/components/_adapt/Dropdown.d.ts +12 -3
  20. package/components/_adapt/Dropdown.js +10 -2
  21. package/components/_adapt/Modal.js +1 -1
  22. package/components/_adapt/Radio.js +6 -6
  23. package/components/_common/Upagination.js +4 -4
  24. package/components/_setup/UForm/UFormCOTree.d.ts +1 -0
  25. package/components/_setup/UForm/UFormCOTree.js +23 -0
  26. package/components/_setup/UForm/UFormDate.js +99 -24
  27. package/components/_setup/UForm/UFormJSONTable.d.ts +1 -0
  28. package/components/_setup/UForm/UFormJSONTable.js +157 -0
  29. package/components/_setup/UForm/UFormSelect.js +19 -0
  30. package/components/_setup/index.d.ts +1 -0
  31. package/components/_setup/index.js +1 -0
  32. package/hooks/_list.js +2 -1
  33. package/hooks/useArray.d.ts +2 -3
  34. package/hooks/useArray.js +34 -67
  35. package/index.d.ts +1 -1
  36. package/package.json +1 -1
  37. package/uform/FormEditor.d.ts +21 -0
  38. package/uform/FormEditor.js +101 -0
  39. package/uform/FormViewer.d.ts +12 -0
  40. package/uform/FormViewer.js +71 -0
  41. package/uform/hooks/useEditor.d.ts +28 -0
  42. package/uform/hooks/useEditor.js +144 -0
  43. package/uform/hooks/useForm.d.ts +4 -0
  44. package/uform/hooks/useForm.js +7 -0
  45. package/uform/index.d.ts +5 -0
  46. package/uform/index.js +35 -0
  47. package/uform/inputs/_advance.d.ts +2 -0
  48. package/uform/inputs/_advance.js +57 -0
  49. package/uform/inputs/_date.d.ts +2 -0
  50. package/uform/inputs/_date.js +178 -0
  51. package/uform/inputs/_input.d.ts +6 -0
  52. package/uform/inputs/_input.js +139 -0
  53. package/uform/inputs/_select.d.ts +2 -0
  54. package/uform/inputs/_select.js +241 -0
  55. package/uform/inputs/_specific.d.ts +2 -0
  56. package/uform/inputs/_specific.js +107 -0
  57. package/uform/inputs/index.d.ts +6 -0
  58. package/uform/inputs/index.js +18 -0
  59. package/uform/inputs/register.d.ts +25 -0
  60. package/uform/inputs/register.js +47 -0
  61. package/uform/panel/Editor/GroupEditor.d.ts +7 -0
  62. package/uform/panel/Editor/GroupEditor.js +126 -0
  63. package/uform/panel/Editor/ListEditor.d.ts +4 -0
  64. package/uform/panel/Editor/ListEditor.js +77 -0
  65. package/uform/panel/Editor/_FieldItems.d.ts +5 -0
  66. package/uform/panel/Editor/_FieldItems.js +45 -0
  67. package/uform/panel/Editor/_GroupCollapse.d.ts +3 -0
  68. package/uform/panel/Editor/_GroupCollapse.js +24 -0
  69. package/uform/panel/Editor/_GroupDefault.d.ts +3 -0
  70. package/uform/panel/Editor/_GroupDefault.js +24 -0
  71. package/uform/panel/Editor/_GroupStep.d.ts +3 -0
  72. package/uform/panel/Editor/_GroupStep.js +49 -0
  73. package/uform/panel/Editor/_GroupTab.d.ts +3 -0
  74. package/uform/panel/Editor/_GroupTab.js +41 -0
  75. package/uform/panel/Editor/index.d.ts +3 -0
  76. package/uform/panel/Editor/index.js +83 -0
  77. package/uform/panel/Items/index.d.ts +3 -0
  78. package/uform/panel/Items/index.js +23 -0
  79. package/uform/panel/Propreties/CanvasProperties.d.ts +3 -0
  80. package/uform/panel/Propreties/CanvasProperties.js +42 -0
  81. package/uform/panel/Propreties/Component/FieldPlugin.d.ts +12 -0
  82. package/uform/panel/Propreties/Component/FieldPlugin.js +39 -0
  83. package/uform/panel/Propreties/Component/LinkAsyncFunction.d.ts +8 -0
  84. package/uform/panel/Propreties/Component/LinkAsyncFunction.js +171 -0
  85. package/uform/panel/Propreties/Component/LinkSyncFunction.d.ts +8 -0
  86. package/uform/panel/Propreties/Component/LinkSyncFunction.js +149 -0
  87. package/uform/panel/Propreties/Component/Links.d.ts +3 -0
  88. package/uform/panel/Propreties/Component/Links.js +114 -0
  89. package/uform/panel/Propreties/Component/OptionTable.d.ts +3 -0
  90. package/uform/panel/Propreties/Component/OptionTable.js +144 -0
  91. package/uform/panel/Propreties/Component/RegexpModal.d.ts +5 -0
  92. package/uform/panel/Propreties/Component/RegexpModal.js +74 -0
  93. package/uform/panel/Propreties/Component/Validate.d.ts +3 -0
  94. package/uform/panel/Propreties/Component/Validate.js +93 -0
  95. package/uform/panel/Propreties/Component/ValidateAsyncFunction.d.ts +3 -0
  96. package/uform/panel/Propreties/Component/ValidateAsyncFunction.js +83 -0
  97. package/uform/panel/Propreties/Component/ValidateSyncFunction.d.ts +3 -0
  98. package/uform/panel/Propreties/Component/ValidateSyncFunction.js +77 -0
  99. package/uform/panel/Propreties/FieldOptions.d.ts +6 -0
  100. package/uform/panel/Propreties/FieldOptions.js +131 -0
  101. package/uform/panel/Propreties/FieldProperties.d.ts +3 -0
  102. package/uform/panel/Propreties/FieldProperties.js +60 -0
  103. package/uform/panel/Propreties/GroupProperties.d.ts +3 -0
  104. package/uform/panel/Propreties/GroupProperties.js +17 -0
  105. package/uform/panel/Propreties/_ItemAdvance.d.ts +4 -0
  106. package/uform/panel/Propreties/_ItemAdvance.js +140 -0
  107. package/uform/panel/Propreties/_ItemBase.d.ts +4 -0
  108. package/uform/panel/Propreties/_ItemBase.js +34 -0
  109. package/uform/panel/Propreties/_ItemLink.d.ts +4 -0
  110. package/uform/panel/Propreties/_ItemLink.js +15 -0
  111. package/uform/panel/Propreties/_ItemValidate.d.ts +4 -0
  112. package/uform/panel/Propreties/_ItemValidate.js +67 -0
  113. package/uform/panel/Propreties/_util.d.ts +9 -0
  114. package/uform/panel/Propreties/_util.js +2 -0
  115. package/uform/plugins/index.d.ts +15 -0
  116. package/uform/plugins/index.js +47 -0
  117. package/uform/schema.d.ts +155 -0
  118. package/uform/schema.js +2 -0
  119. package/uform/utils/Const.d.ts +20 -0
  120. package/uform/utils/Const.js +24 -0
  121. package/uform/utils/Convert.d.ts +3 -0
  122. package/uform/utils/Convert.js +274 -0
  123. package/uform/utils/SchemaConvert.d.ts +6 -0
  124. package/uform/utils/SchemaConvert.js +169 -0
  125. package/uform/utils/arr.d.ts +12 -0
  126. package/uform/utils/arr.js +175 -0
  127. package/utils/ArrayUtil.js +8 -1
  128. package/utils/Global.d.ts +0 -1
  129. package/utils/index.d.ts +32 -1
  130. package/widget/index.d.ts +0 -4
@@ -0,0 +1,149 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.LinkSyncFunction = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const dayjs_1 = __importDefault(require("dayjs"));
33
+ const index_1 = require("../../../../index");
34
+ const CodeTip = () => react_1.default.createElement(index_1.Popover, { overlayStyle: { width: 540 }, content: react_1.default.createElement(react_1.default.Fragment, null,
35
+ react_1.default.createElement("h5", null, "\u793A\u4F8B\u4EE3\u78011\uFF0C\u6570\u5B57\u7C7B\u578B"),
36
+ react_1.default.createElement("pre", { style: { border: '1px solid #ccc', padding: '6px 12px 2px', backgroundColor: '#f1e8af' }, dangerouslySetInnerHTML: {
37
+ __html: `//示例1: 只联动值
38
+ // 打印值,用于调试,不影响结果
39
+ console.log(value);
40
+ // 支持 lodash: 变量名 : _
41
+ _.map([1,2,3,4],console.log);
42
+ // 打印结果
43
+ print(value > 10 && value <= 100);
44
+ //说明:必须使用 print(true/false) 打印出结果`
45
+ } }),
46
+ react_1.default.createElement("h5", null, "\u793A\u4F8B\u4EE3\u78012\uFF0C\u5B57\u7B26\u4E32\u7C7B\u578B"),
47
+ react_1.default.createElement("pre", { style: { border: '1px solid #ccc', padding: '6px 12px 2px', backgroundColor: '#f1e8af' }, dangerouslySetInnerHTML: {
48
+ __html: `//示例2: 联动值,选项,显示状态,置灰状态,必选状态
49
+ // 说明:不能使用 return 语句,使用 if/else 控制
50
+ if( value=='' || value==null ){
51
+ print(false)
52
+ }else if(value.length < 8){
53
+ print(false);
54
+ }else if(_.endsWith(value,'.jpg')){
55
+ print(true);
56
+ }else if(/xxoo/.test(value)){
57
+ print(true);
58
+ }else if(value.substring(3).indexOf('abc')){
59
+ print(true)
60
+ }else{
61
+ print(false)
62
+ }`
63
+ } })) },
64
+ react_1.default.createElement("a", null, "\u53C2\u8003\u793A\u4F8B"));
65
+ const LinkSyncFunction = props => {
66
+ const targetOptions = (0, react_1.useMemo)(() => {
67
+ let options = [];
68
+ const used = new Set();
69
+ used.add(props.field.field);
70
+ (props.field._links || []).map(item => used.add(item.field));
71
+ if (props.isGroup) {
72
+ props.fields.map((group) => group.fields.map(f => {
73
+ if (used.has(f.field))
74
+ return;
75
+ options.push({ label: react_1.default.createElement("span", null,
76
+ f.title,
77
+ " ",
78
+ react_1.default.createElement("small", null,
79
+ "(",
80
+ f.field,
81
+ ")")), value: f.field });
82
+ }));
83
+ }
84
+ else {
85
+ props.fields.map(f => {
86
+ if (used.has(f.field))
87
+ return;
88
+ options.push({ label: react_1.default.createElement("span", null,
89
+ f.title,
90
+ " ",
91
+ react_1.default.createElement("small", null,
92
+ "(",
93
+ f.field,
94
+ ")")), value: f.field });
95
+ });
96
+ }
97
+ return options;
98
+ }, [props.field._links, props.fields]);
99
+ return react_1.default.createElement(index_1.UFormModal, { tip: react_1.default.createElement(index_1.Alert, { type: "info", message: react_1.default.createElement("ul", { style: { padding: 0, margin: 0 } },
100
+ react_1.default.createElement("li", { style: { listStyle: 'none' } },
101
+ "\u8054\u52A8\u65B9\u6CD5\u8BF4\u660E\uFF1A",
102
+ react_1.default.createElement(CodeTip, null)),
103
+ react_1.default.createElement("li", { style: { listStyle: 'none' } },
104
+ "\u8054\u52A8\u503C\u4E3A\u53D8\u91CF ",
105
+ react_1.default.createElement("b", null, "value")),
106
+ react_1.default.createElement("li", { style: { listStyle: 'none' } },
107
+ "\u8054\u52A8\u8868\u5355\u53D8\u91CF ",
108
+ react_1.default.createElement("b", null, "from")),
109
+ react_1.default.createElement("li", { style: { listStyle: 'none' } },
110
+ "\u65B9\u6CD5\u6269\u5C55\u4F9D\u8D56 \uFF1Alodash : ",
111
+ react_1.default.createElement("b", null, "_"),
112
+ " , dayjs:",
113
+ react_1.default.createElement("b", null, "dayjs")),
114
+ react_1.default.createElement("li", { style: { listStyle: 'none' } },
115
+ "\u65B9\u6CD5\u8FD4\u56DE\u6253\u5370 \uFF1A",
116
+ react_1.default.createElement("b", null, "print"))) }), title: props.isEdit ? '编辑联动方法' : '添加联动方法', fields: [
117
+ { field: 'field', title: '被联动字段', required: true, options: targetOptions, type: 'select' },
118
+ { field: 'code', title: '联动代码', required: true, type: 'textarea', ignore: true, config: { rows: 8 } },
119
+ ], data: props.data, isEdit: props.isEdit, open: props.open, onCancel: props.onCancel, onOk: data => {
120
+ const fn = `<%
121
+ ${data.code}
122
+ %>`;
123
+ try {
124
+ var compiled = lodash_1.default.template(fn, { imports: { _: lodash_1.default, dayjs: dayjs_1.default } });
125
+ let result = compiled({ value: '199', form: {}, extra: null });
126
+ if (typeof result != 'string')
127
+ throw (new Error());
128
+ if (result === '')
129
+ throw (new Error('没有检测到返回值'));
130
+ try {
131
+ const test = JSON.parse(result);
132
+ if (lodash_1.default.isPlainObject(test)) {
133
+ index_1.message.success('测试结果 为返回对象: ' + result);
134
+ }
135
+ else {
136
+ throw (new Error());
137
+ }
138
+ }
139
+ catch (e) {
140
+ index_1.message.success('测试结果 为单返回值: ' + result);
141
+ }
142
+ props.onOk(data);
143
+ }
144
+ catch (e) {
145
+ index_1.message.error('代码测试失败');
146
+ }
147
+ } });
148
+ };
149
+ exports.LinkSyncFunction = LinkSyncFunction;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ItemPanelProps } from '../_util';
3
+ export declare const Links: (props: ItemPanelProps) => React.JSX.Element;
@@ -0,0 +1,114 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Links = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const index_1 = require("../../../../index");
33
+ const hooks_1 = require("../../../../hooks");
34
+ const useEditor_1 = require("../../../hooks/useEditor");
35
+ const utils_1 = require("../../../../utils");
36
+ const LinkSyncFunction_1 = require("./LinkSyncFunction");
37
+ const LinkAsyncFunction_1 = require("./LinkAsyncFunction");
38
+ const callRender = (rule) => {
39
+ if (rule.async) {
40
+ return react_1.default.createElement("span", null,
41
+ react_1.default.createElement(index_1.Tag, { color: "cyan-inverse" }, "\u8BF7\u6C42"),
42
+ " ",
43
+ rule.method,
44
+ " ",
45
+ rule.url);
46
+ }
47
+ return react_1.default.createElement("span", null,
48
+ react_1.default.createElement(index_1.Tag, { color: "magenta-inverse" }, "\u65B9\u6CD5"));
49
+ };
50
+ const Links = (props) => {
51
+ const { form: { fields, isGroup } } = (0, useEditor_1.useEditor)();
52
+ const fieldsCount = (0, react_1.useMemo)(() => {
53
+ if (fields == null || fields.length == 0)
54
+ return 0;
55
+ if (!isGroup)
56
+ return fields.length;
57
+ return lodash_1.default.sum(fields.map(group => group.fields.length));
58
+ }, [fields]);
59
+ const { field, setFieldProperties } = props;
60
+ const syncFn = (0, hooks_1.useOpenState)();
61
+ const asyncFn = (0, hooks_1.useOpenState)();
62
+ const addLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.add(field._links, data)), [field._links]);
63
+ const editLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.update(field._links, data)), [field._links]);
64
+ const delLink = (0, react_1.useCallback)((data) => setFieldProperties('_links', utils_1.ArrayUtil.del(field._links, data.id)), [field._links]);
65
+ return react_1.default.createElement(react_1.default.Fragment, null,
66
+ react_1.default.createElement(index_1.STable, { list: field._links || [], actionBar: [
67
+ {
68
+ label: '异步联动', icon: 'plus', onClick: () => {
69
+ if (fieldsCount <= 1) {
70
+ index_1.message.warning('没有可以被联动的字段');
71
+ return;
72
+ }
73
+ asyncFn.show(null, false);
74
+ }
75
+ },
76
+ {
77
+ label: '同步联动', type: 'primary', icon: 'plus', onClick: () => {
78
+ if (fieldsCount <= 1) {
79
+ index_1.message.warning('没有可以被联动的字段');
80
+ return;
81
+ }
82
+ syncFn.show(null, false);
83
+ }
84
+ },
85
+ ], showIndex: false, pagination: false, columns: [
86
+ { title: '目标字段', dataIndex: 'field' },
87
+ { title: '方法', render: callRender },
88
+ index_1.STable.COL_OPERACTION((record) => [
89
+ react_1.default.createElement(index_1.STable.EDIT, { onClick: () => {
90
+ record.async ? asyncFn.show(record, true) : syncFn.show(record, true);
91
+ } }),
92
+ react_1.default.createElement(index_1.STable.DELETE, { onClick: () => delLink(record) }),
93
+ ])
94
+ ] }),
95
+ react_1.default.createElement(LinkSyncFunction_1.LinkSyncFunction, { open: syncFn.open, onCancel: syncFn.hide, isEdit: syncFn.extra, field: field, fields: fields, isGroup: isGroup, data: syncFn.data, onOk: (data) => {
96
+ syncFn.hide();
97
+ if (syncFn.extra) {
98
+ editLink(data);
99
+ }
100
+ else {
101
+ addLink(Object.assign(Object.assign({}, data), { async: false, id: utils_1.StringUtil.genKey() }));
102
+ }
103
+ } }),
104
+ react_1.default.createElement(LinkAsyncFunction_1.LinkAsyncFunction, { open: asyncFn.open, onCancel: asyncFn.hide, isEdit: asyncFn.extra, field: field, fields: fields, isGroup: isGroup, data: asyncFn.data, onOk: (data) => {
105
+ asyncFn.hide();
106
+ if (asyncFn.extra) {
107
+ editLink(data);
108
+ }
109
+ else {
110
+ addLink(Object.assign(Object.assign({}, data), { async: true, id: utils_1.StringUtil.genKey() }));
111
+ }
112
+ } }));
113
+ };
114
+ exports.Links = Links;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ItemPanelProps } from '../_util';
3
+ export declare const OptionTable: (props: ItemPanelProps) => React.JSX.Element;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OptionTable = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const utils_1 = require("../../../../utils");
9
+ const index_1 = require("../../../../index");
10
+ const hooks_1 = require("../../../../hooks");
11
+ const Const_1 = require("../../../utils/Const");
12
+ const OptionTable = (props) => {
13
+ const { field, setFieldProperties } = props;
14
+ const { modalState, showAdd, showEdit, hide, showDetail } = (0, hooks_1.useModals)();
15
+ const converInputType = (_isNumber, force = false) => {
16
+ if (field.options == null || field.options.length == 0) {
17
+ setFieldProperties('_isNumber', _isNumber);
18
+ return;
19
+ }
20
+ if (!_isNumber) {
21
+ setFieldProperties({
22
+ _isNumber,
23
+ options: field.options.map(item => (Object.assign(Object.assign({}, item), { value: item.value + '' }))),
24
+ }, null);
25
+ return;
26
+ }
27
+ let options = [];
28
+ for (let option of field.options) {
29
+ try {
30
+ if (isNaN(option.value))
31
+ throw (option);
32
+ options.push(Object.assign(Object.assign({}, option), { value: parseInt(option.value) }));
33
+ }
34
+ catch (option) {
35
+ if (force)
36
+ continue;
37
+ index_1.Modal.confirm({
38
+ content: '选项中有不能转换为数字类型的选项,点击确定后将会丢失',
39
+ onOk: () => converInputType(_isNumber, true),
40
+ });
41
+ return;
42
+ }
43
+ }
44
+ setFieldProperties({ _isNumber, options, }, null);
45
+ };
46
+ const add = (option) => {
47
+ if (field._isNumber && isNaN(option.value)) {
48
+ index_1.message.error('说明:取值不是一有效的数字');
49
+ return;
50
+ }
51
+ hide();
52
+ if (field._isNumber) {
53
+ setFieldProperties('options', utils_1.ArrayUtil.add(field.options, Object.assign(Object.assign({}, option), { id: utils_1.StringUtil.genKey(), value: parseInt(option.value) })));
54
+ }
55
+ else {
56
+ setFieldProperties('options', utils_1.ArrayUtil.add(field.options, Object.assign(Object.assign({}, option), { id: utils_1.StringUtil.genKey(), value: option.value + '' })));
57
+ }
58
+ };
59
+ const addByDict = (options) => {
60
+ hide();
61
+ if (!field._isNumber) {
62
+ setFieldProperties('options', options);
63
+ return;
64
+ }
65
+ let errCount = 0;
66
+ let opts = [];
67
+ for (let item of options) {
68
+ if (isNaN(item.value)) {
69
+ errCount++;
70
+ continue;
71
+ }
72
+ opts.push(Object.assign(Object.assign({}, item), { value: parseInt(item.value) }));
73
+ }
74
+ if (errCount > 0) {
75
+ index_1.message.warning('说明:由于当前值为数字类型,已经过滤掉不可转换为数字的选项');
76
+ }
77
+ setFieldProperties('options', opts);
78
+ };
79
+ const update = (option) => {
80
+ if (field._isNumber && isNaN(option.value)) {
81
+ index_1.message.error('说明:取值不是一有效的数字');
82
+ return;
83
+ }
84
+ hide();
85
+ if (field._isNumber) {
86
+ setFieldProperties('options', utils_1.ArrayUtil.update(field.options, Object.assign(Object.assign({}, option), { value: parseInt(option.value) })));
87
+ }
88
+ else {
89
+ setFieldProperties('options', utils_1.ArrayUtil.update(field.options, Object.assign(Object.assign({}, option), { value: option.value + '' })));
90
+ }
91
+ };
92
+ const del = (option) => {
93
+ setFieldProperties('options', utils_1.ArrayUtil.del(field.options, option.value, 'value'));
94
+ };
95
+ return react_1.default.createElement(react_1.default.Fragment, null,
96
+ react_1.default.createElement(index_1.Divider, { orientation: "left" }, "\u9009\u9879"),
97
+ !Const_1.MUST_STRING.has(field.type) && react_1.default.createElement(index_1.Form.Item, { label: "\u6570\u5B57" },
98
+ react_1.default.createElement(index_1.Checkbox, { checked: field._isNumber, onChange: (evt) => converInputType(evt.target.checked) }, "\u5C06\u9009\u9879\u503C\u8F6C\u6362\u4E3A Number \u7C7B\u578B")),
99
+ field.type == 'switch' ? react_1.default.createElement(index_1.STable, { list: field.options || [], pagination: false, columns: [
100
+ { dataIndex: 'label', title: '选项名称' },
101
+ { dataIndex: 'value', title: '选项值' },
102
+ index_1.STable.COL_OPERACTION(record => [
103
+ react_1.default.createElement(index_1.STable.EDIT, { onClick: () => showEdit(record) }),
104
+ ])
105
+ ] }) : react_1.default.createElement(index_1.STable, { list: field.options || [], pagination: false, actionBar: [
106
+ { label: '使用字典', onClick: showDetail },
107
+ index_1.STable.BUTTON_ADD(showAdd),
108
+ ], columns: [
109
+ { dataIndex: 'label', title: '选项名称' },
110
+ { dataIndex: 'value', title: '选项值' },
111
+ index_1.STable.COL_OPERACTION(record => [
112
+ react_1.default.createElement(index_1.STable.EDIT, { onClick: () => showEdit(record) }),
113
+ react_1.default.createElement(index_1.STable.DELETE, { onClick: () => del(record) }),
114
+ ])
115
+ ] }),
116
+ react_1.default.createElement(index_1.UFormModal, Object.assign({}, modalState.modalProps, { autoTitle: { label: '选项', field: 'label' }, onOk: (data) => {
117
+ if (modalState.isEdit) {
118
+ update(data);
119
+ }
120
+ else {
121
+ add(data);
122
+ }
123
+ }, fields: [
124
+ { field: 'label', title: '展示名称', required: true },
125
+ {
126
+ field: 'value', title: '选项值', required: true,
127
+ // type: field._isNumber ? 'number' : 'text'
128
+ },
129
+ { field: 'ik', title: '国际化 I18N Key' },
130
+ ] })),
131
+ react_1.default.createElement(index_1.UFormModal, { open: modalState.openDetail, title: "\u4F7F\u7528\u5B57\u5178",
132
+ // tip={<Alert type="info" message="使用" />}
133
+ fields: [
134
+ {
135
+ field: 'dict', title: '选择字典', type: 'select', options: utils_1.Renders.DICT.DICTS, required: true,
136
+ // config: { showSearch: true }
137
+ }
138
+ ], onCancel: hide, onOk: (data) => {
139
+ let info = utils_1.Renders.DICT.DICT_MAP.get(data.dict);
140
+ hide();
141
+ addByDict(info.nodes);
142
+ } }));
143
+ };
144
+ exports.OptionTable = OptionTable;
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import type { ModalProps } from '../../../../index';
3
+ export declare const RegexpModal: React.FC<ModalProps & {
4
+ data: string;
5
+ }>;
@@ -0,0 +1,74 @@
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.RegexpModal = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const index_1 = require("../../../../index");
29
+ exports.RegexpModal = (0, react_1.memo)(props => {
30
+ const ref = (0, react_1.useRef)(props.data);
31
+ const onOk = () => {
32
+ if (ref.current == '') {
33
+ props.onOk(null);
34
+ return;
35
+ }
36
+ try {
37
+ new RegExp(ref.current);
38
+ props.onOk(ref.current);
39
+ }
40
+ catch (_a) {
41
+ index_1.message.error(`不是一个有效的正则 :${ref.current}`);
42
+ }
43
+ };
44
+ return react_1.default.createElement(index_1.Modal, { open: props.open, title: "\u8BF7\u8F93\u5165\u6B63\u5219\u8868\u8FBE\u5F0F", onCancel: props.onCancel, onOk: onOk, footer: null, width: 540, bodyStyle: { padding: 12 } },
45
+ react_1.default.createElement(index_1.Row, { style: { height: 32, lineHeight: '32px', marginBottom: 6 } },
46
+ react_1.default.createElement(index_1.Col, { span: 6, style: { textAlign: 'right', paddingRight: 6 } }, "\u6B63\u5219\u8868\u8FBE\u5F0F"),
47
+ react_1.default.createElement(index_1.Col, { span: 17 },
48
+ react_1.default.createElement(index_1.Input, { defaultValue: props.data, onChange: evt => ref.current = evt.target.value }))),
49
+ react_1.default.createElement(index_1.Row, { style: { height: 64, lineHeight: '32px', marginBottom: 6 } },
50
+ react_1.default.createElement(index_1.Col, { span: 6, style: { textAlign: 'right', paddingRight: 6 } }, "\u5FEB\u901F\u6D4B\u8BD5"),
51
+ react_1.default.createElement(index_1.Col, { span: 17 },
52
+ react_1.default.createElement(index_1.Input.TextArea, { placeholder: "\u9700\u8981\u6D4B\u8BD5\u7684\u5B57\u7B26\u4E32", onChange: evt => {
53
+ if (evt.target.value == '' || ref.current == '' || ref.current == null)
54
+ return;
55
+ try {
56
+ const reg = new RegExp(ref.current);
57
+ let result = reg.test(evt.target.value);
58
+ if (result) {
59
+ index_1.message.success('测试通过');
60
+ }
61
+ else {
62
+ index_1.message.warning('测试未通过');
63
+ }
64
+ }
65
+ catch (_a) {
66
+ index_1.message.error('正则表达式语法有误');
67
+ }
68
+ } }))),
69
+ react_1.default.createElement(index_1.Row, null,
70
+ react_1.default.createElement(index_1.Col, { span: 6 }),
71
+ react_1.default.createElement(index_1.Col, { span: 18 },
72
+ react_1.default.createElement(index_1.Button, { onClick: onOk, type: "primary", style: { marginRight: 6 } }, "\u786E\u5B9A"),
73
+ react_1.default.createElement(index_1.Button, { onClick: props.onCancel }, "\u53D6\u6D88"))));
74
+ }, (prev, next) => prev.open === next.open);
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ItemPanelProps } from '../_util';
3
+ export declare const Validates: (props: ItemPanelProps) => React.JSX.Element;
@@ -0,0 +1,93 @@
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.Validates = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const index_1 = require("../../../../index");
29
+ const hooks_1 = require("../../../../hooks");
30
+ const utils_1 = require("../../../../utils");
31
+ const ValidateSyncFunction_1 = require("./ValidateSyncFunction");
32
+ const ValidateAsyncFunction_1 = require("./ValidateAsyncFunction");
33
+ const ruleRender = (rule) => {
34
+ if (rule.async) {
35
+ return react_1.default.createElement("span", null,
36
+ react_1.default.createElement(index_1.Tag, { color: "cyan-inverse" }, "\u8BF7\u6C42"),
37
+ " ",
38
+ rule.method,
39
+ " ",
40
+ rule.url);
41
+ }
42
+ return react_1.default.createElement("span", null,
43
+ react_1.default.createElement(index_1.Tag, { color: "magenta-inverse" }, "\u65B9\u6CD5"),
44
+ " ",
45
+ rule.message);
46
+ };
47
+ const Validates = (props) => {
48
+ const { field, setFieldProperties } = props;
49
+ const syncFn = (0, hooks_1.useOpenState)();
50
+ const asyncFn = (0, hooks_1.useOpenState)();
51
+ const addRule = (0, react_1.useCallback)((data) => {
52
+ setFieldProperties('_rules', utils_1.ArrayUtil.add(field._rules, data));
53
+ }, [field._rules]);
54
+ const editRule = (0, react_1.useCallback)((data) => {
55
+ setFieldProperties('_rules', utils_1.ArrayUtil.update(field._rules, data));
56
+ }, [field._rules]);
57
+ const delRule = (0, react_1.useCallback)((data) => {
58
+ setFieldProperties('_rules', utils_1.ArrayUtil.del(field._rules, data.id));
59
+ }, [field._rules]);
60
+ return react_1.default.createElement(react_1.default.Fragment, null,
61
+ react_1.default.createElement(index_1.Divider, { orientation: "left" }, "\u65B9\u6CD5\u9A8C\u8BC1"),
62
+ react_1.default.createElement(index_1.STable, { list: field._rules || [], actionBar: [
63
+ { label: '异步请求', icon: 'plus', onClick: () => asyncFn.show(null, false) },
64
+ { label: '同步方法', type: 'primary', icon: 'plus', onClick: () => syncFn.show(null, false) },
65
+ ], showIndex: false, pagination: false, columns: [
66
+ { title: '验证', render: ruleRender },
67
+ index_1.STable.COL_OPERACTION((record) => [
68
+ react_1.default.createElement(index_1.STable.EDIT, { onClick: () => {
69
+ record.async ? asyncFn.show(record, true) : syncFn.show(record, true);
70
+ } }),
71
+ react_1.default.createElement(index_1.STable.DELETE, { onClick: () => delRule(record) }),
72
+ ])
73
+ ] }),
74
+ react_1.default.createElement(ValidateSyncFunction_1.ValidateSyncFunction, { open: syncFn.open, onCancel: syncFn.hide, isEdit: syncFn.extra, data: syncFn.data, onOk: (data) => {
75
+ syncFn.hide();
76
+ if (syncFn.extra) {
77
+ editRule(data);
78
+ }
79
+ else {
80
+ addRule(Object.assign(Object.assign({}, data), { async: false, id: utils_1.StringUtil.genKey() }));
81
+ }
82
+ } }),
83
+ react_1.default.createElement(ValidateAsyncFunction_1.ValidateAsyncFunction, { open: asyncFn.open, onCancel: asyncFn.hide, isEdit: asyncFn.extra, data: asyncFn.data, onOk: (data) => {
84
+ asyncFn.hide();
85
+ if (asyncFn.extra) {
86
+ editRule(data);
87
+ }
88
+ else {
89
+ addRule(Object.assign(Object.assign({}, data), { async: true, id: utils_1.StringUtil.genKey() }));
90
+ }
91
+ } }));
92
+ };
93
+ exports.Validates = Validates;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { UModalProps } from '../../../../index';
3
+ export declare const ValidateAsyncFunction: React.FC<Omit<UModalProps, 'fields'>>;