@next-shared/form 0.0.1
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/dist/cjs/Form.js +6 -0
- package/dist/cjs/Form.js.map +1 -0
- package/dist/cjs/FormItemElement.js +116 -0
- package/dist/cjs/FormItemElement.js.map +1 -0
- package/dist/cjs/FormStore.js +215 -0
- package/dist/cjs/FormStore.js.map +1 -0
- package/dist/cjs/PubSub.js +41 -0
- package/dist/cjs/PubSub.js.map +1 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/Form.js +2 -0
- package/dist/esm/Form.js.map +1 -0
- package/dist/esm/FormItemElement.js +108 -0
- package/dist/esm/FormItemElement.js.map +1 -0
- package/dist/esm/FormStore.js +210 -0
- package/dist/esm/FormStore.js.map +1 -0
- package/dist/esm/PubSub.js +48 -0
- package/dist/esm/PubSub.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/Form.d.ts +10 -0
- package/dist/types/FormItemElement.d.ts +18 -0
- package/dist/types/FormStore.d.ts +52 -0
- package/dist/types/PubSub.d.ts +6 -0
- package/dist/types/index.d.ts +3 -0
- package/package.json +45 -0
package/dist/cjs/Form.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.js","names":[],"sources":["../../src/Form.ts"],"sourcesContent":["import type { FormStore } from \"./FormStore.js\";\n\nexport interface AbstractForm extends HTMLElement {\n readonly isFormElement: true;\n formStore: FormStore;\n size?: \"large\" | \"medium\" | \"small\" | \"xs\";\n layout?: \"horizontal\" | \"vertical\" | \"inline\";\n validate(): boolean | Record<string, unknown>;\n validateField(name: string): void;\n resetValidateState(): void;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FormItemElementBase = void 0;
|
|
8
|
+
var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
|
|
9
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
|
|
10
|
+
var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
|
|
11
|
+
var _applyDecs2203R2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecs2203R"));
|
|
12
|
+
var _element = require("@next-core/element");
|
|
13
|
+
var _reactElement = require("@next-core/react-element");
|
|
14
|
+
var _dec, _initProto;
|
|
15
|
+
const {
|
|
16
|
+
method
|
|
17
|
+
} = (0, _element.createDecorators)();
|
|
18
|
+
_dec = method();
|
|
19
|
+
var _A = /*#__PURE__*/new WeakMap();
|
|
20
|
+
var _notRender = /*#__PURE__*/new WeakMap();
|
|
21
|
+
var _B = /*#__PURE__*/new WeakMap();
|
|
22
|
+
var _validate = /*#__PURE__*/new WeakMap();
|
|
23
|
+
var _C = /*#__PURE__*/new WeakMap();
|
|
24
|
+
var _bindFormItem = /*#__PURE__*/new WeakMap();
|
|
25
|
+
class FormItemElementBase extends _reactElement.ReactNextElement {
|
|
26
|
+
constructor(...args) {
|
|
27
|
+
super(...args);
|
|
28
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _bindFormItem, {
|
|
29
|
+
get: _get_bindFormItem,
|
|
30
|
+
set: _set_bindFormItem
|
|
31
|
+
});
|
|
32
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _validate, {
|
|
33
|
+
get: _get_validate,
|
|
34
|
+
set: _set_validate
|
|
35
|
+
});
|
|
36
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _notRender, {
|
|
37
|
+
get: _get__notRender,
|
|
38
|
+
set: _set__notRender
|
|
39
|
+
});
|
|
40
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _A, {
|
|
41
|
+
writable: true,
|
|
42
|
+
value: false
|
|
43
|
+
});
|
|
44
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _B, {
|
|
45
|
+
writable: true,
|
|
46
|
+
value: "normal"
|
|
47
|
+
});
|
|
48
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _C, {
|
|
49
|
+
writable: true,
|
|
50
|
+
value: false
|
|
51
|
+
});
|
|
52
|
+
_initProto(this);
|
|
53
|
+
}
|
|
54
|
+
get isFormItemElement() {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
set validateState(value) {
|
|
58
|
+
(0, _classPrivateFieldSet2.default)(this, _validate, value);
|
|
59
|
+
this._render();
|
|
60
|
+
}
|
|
61
|
+
get validateState() {
|
|
62
|
+
return (0, _classPrivateFieldGet2.default)(this, _validate);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 控制该表单项是否隐藏
|
|
67
|
+
* @default false
|
|
68
|
+
* @group ui
|
|
69
|
+
*/
|
|
70
|
+
set notRender(value) {
|
|
71
|
+
this.hidden = value;
|
|
72
|
+
(0, _classPrivateFieldSet2.default)(this, _notRender, value);
|
|
73
|
+
this._render();
|
|
74
|
+
}
|
|
75
|
+
get notRender() {
|
|
76
|
+
return (0, _classPrivateFieldGet2.default)(this, _notRender);
|
|
77
|
+
}
|
|
78
|
+
get $bindFormItem() {
|
|
79
|
+
return (0, _classPrivateFieldGet2.default)(this, _bindFormItem);
|
|
80
|
+
}
|
|
81
|
+
set $bindFormItem(value) {
|
|
82
|
+
(0, _classPrivateFieldSet2.default)(this, _bindFormItem, value);
|
|
83
|
+
this._render();
|
|
84
|
+
}
|
|
85
|
+
getFormElement() {
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
87
|
+
let element = this;
|
|
88
|
+
while (element = element.parentNode) {
|
|
89
|
+
if (!element || element.isFormElement) {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return element;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.FormItemElementBase = FormItemElementBase;
|
|
97
|
+
function _get__notRender() {
|
|
98
|
+
return (0, _classPrivateFieldGet2.default)(this, _A);
|
|
99
|
+
}
|
|
100
|
+
function _set__notRender(v) {
|
|
101
|
+
(0, _classPrivateFieldSet2.default)(this, _A, v);
|
|
102
|
+
}
|
|
103
|
+
function _get_validate() {
|
|
104
|
+
return (0, _classPrivateFieldGet2.default)(this, _B);
|
|
105
|
+
}
|
|
106
|
+
function _set_validate(v) {
|
|
107
|
+
(0, _classPrivateFieldSet2.default)(this, _B, v);
|
|
108
|
+
}
|
|
109
|
+
function _get_bindFormItem() {
|
|
110
|
+
return (0, _classPrivateFieldGet2.default)(this, _C);
|
|
111
|
+
}
|
|
112
|
+
function _set_bindFormItem(v) {
|
|
113
|
+
(0, _classPrivateFieldSet2.default)(this, _C, v);
|
|
114
|
+
}
|
|
115
|
+
[_initProto] = (0, _applyDecs2203R2.default)(FormItemElementBase, [[_dec, 2, "getFormElement"]], []).e;
|
|
116
|
+
//# sourceMappingURL=FormItemElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormItemElement.js","names":["_element","require","_reactElement","_dec","_initProto","method","createDecorators","_A","WeakMap","_notRender","_B","_validate","_C","_bindFormItem","FormItemElementBase","ReactNextElement","constructor","args","_classPrivateFieldInitSpec2","default","get","_get_bindFormItem","set","_set_bindFormItem","_get_validate","_set_validate","_get__notRender","_set__notRender","writable","value","isFormItemElement","validateState","_classPrivateFieldSet2","_render","_classPrivateFieldGet2","notRender","hidden","$bindFormItem","getFormElement","element","parentNode","isFormElement","exports","v","_applyDecs2203R2","e"],"sources":["../../src/FormItemElement.tsx"],"sourcesContent":["import { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport type { AbstractForm } from \"./Form.js\";\n\nconst { method } = createDecorators();\n\nexport abstract class FormItemElementBase extends ReactNextElement {\n accessor #_notRender = false;\n accessor #validate = \"normal\";\n accessor #bindFormItem = false;\n\n get isFormItemElement(): true {\n return true;\n }\n\n set validateState(value: string) {\n this.#validate = value;\n this._render();\n }\n get validateState() {\n return this.#validate;\n }\n\n /**\n * 控制该表单项是否隐藏\n * @default false\n * @group ui\n */\n set notRender(value: boolean) {\n this.hidden = value;\n this.#_notRender = value;\n this._render();\n }\n get notRender(): boolean {\n return this.#_notRender;\n }\n\n get $bindFormItem() {\n return this.#bindFormItem;\n }\n set $bindFormItem(value: boolean) {\n this.#bindFormItem = value;\n this._render();\n }\n\n @method()\n getFormElement(): AbstractForm | null {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let element: AbstractForm | null = this as unknown as AbstractForm;\n while ((element = element.parentNode as AbstractForm | null)) {\n if (!element || element.isFormElement) {\n break;\n }\n }\n return element as AbstractForm | null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FormStore = void 0;
|
|
8
|
+
var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodInitSpec"));
|
|
9
|
+
var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _classPrivateMethodGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodGet"));
|
|
12
|
+
var _classPrivateFieldGet6 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
|
|
13
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
|
|
14
|
+
var _lodash = require("lodash");
|
|
15
|
+
var _PubSub = require("./PubSub.js");
|
|
16
|
+
let uid = 0;
|
|
17
|
+
class Field {
|
|
18
|
+
field;
|
|
19
|
+
detail;
|
|
20
|
+
constructor(name, detail) {
|
|
21
|
+
this.field = name;
|
|
22
|
+
this.detail = detail;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
var _fields = /*#__PURE__*/new WeakMap();
|
|
26
|
+
var _options = /*#__PURE__*/new WeakMap();
|
|
27
|
+
var _formData = /*#__PURE__*/new WeakMap();
|
|
28
|
+
var _initData = /*#__PURE__*/new WeakMap();
|
|
29
|
+
var _getAllFields = /*#__PURE__*/new WeakSet();
|
|
30
|
+
class FormStore extends _PubSub.PubSub {
|
|
31
|
+
static getInstance(options) {
|
|
32
|
+
if (!this.instance.get(uid)) {
|
|
33
|
+
this.uid = uid;
|
|
34
|
+
this.instance.set(this.uid, new FormStore(options));
|
|
35
|
+
uid += 1;
|
|
36
|
+
}
|
|
37
|
+
return this.instance.get(this.uid);
|
|
38
|
+
}
|
|
39
|
+
constructor(options) {
|
|
40
|
+
super();
|
|
41
|
+
(0, _classPrivateMethodInitSpec2.default)(this, _getAllFields);
|
|
42
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _fields, {
|
|
43
|
+
writable: true,
|
|
44
|
+
value: new Map()
|
|
45
|
+
});
|
|
46
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _options, {
|
|
47
|
+
writable: true,
|
|
48
|
+
value: void 0
|
|
49
|
+
});
|
|
50
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _formData, {
|
|
51
|
+
writable: true,
|
|
52
|
+
value: void 0
|
|
53
|
+
});
|
|
54
|
+
(0, _classPrivateFieldInitSpec2.default)(this, _initData, {
|
|
55
|
+
writable: true,
|
|
56
|
+
value: void 0
|
|
57
|
+
});
|
|
58
|
+
(0, _classPrivateFieldSet2.default)(this, _formData, {});
|
|
59
|
+
(0, _classPrivateFieldSet2.default)(this, _options, options);
|
|
60
|
+
}
|
|
61
|
+
setField(name, detail) {
|
|
62
|
+
(0, _classPrivateFieldGet6.default)(this, _fields).set(name, new Field(name, detail));
|
|
63
|
+
}
|
|
64
|
+
getAllValues() {
|
|
65
|
+
return (0, _classPrivateFieldGet6.default)(this, _formData);
|
|
66
|
+
}
|
|
67
|
+
setInitValue(values, isEmitValuseChange = true) {
|
|
68
|
+
(0, _classPrivateFieldSet2.default)(this, _initData, values);
|
|
69
|
+
this.setFieldsValue(values, isEmitValuseChange);
|
|
70
|
+
}
|
|
71
|
+
setFieldsValueByInitData(name) {
|
|
72
|
+
var _classPrivateFieldGet2;
|
|
73
|
+
const value = (_classPrivateFieldGet2 = (0, _classPrivateFieldGet6.default)(this, _initData)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2[name];
|
|
74
|
+
if (value) {
|
|
75
|
+
(0, _classPrivateFieldGet6.default)(this, _formData)[name] = value;
|
|
76
|
+
this.publish(`${name}.init.value`, value);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
setFieldsValue(values, isEmitValuseChange = true) {
|
|
80
|
+
const allFields = (0, _classPrivateMethodGet2.default)(this, _getAllFields, _getAllFields2).call(this);
|
|
81
|
+
const newFormData = {
|
|
82
|
+
...(0, _classPrivateFieldGet6.default)(this, _formData)
|
|
83
|
+
};
|
|
84
|
+
Object.entries(values).forEach(([k, v]) => {
|
|
85
|
+
if (allFields.includes(k)) {
|
|
86
|
+
newFormData[k] = v;
|
|
87
|
+
(0, _classPrivateFieldGet6.default)(this, _initData) && ((0, _classPrivateFieldGet6.default)(this, _initData)[k] = v);
|
|
88
|
+
this.publish(`${k}.init.value`, v);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, _classPrivateFieldSet2.default)(this, _formData, newFormData);
|
|
92
|
+
if (isEmitValuseChange) {
|
|
93
|
+
var _classPrivateFieldGet3, _classPrivateFieldGet4;
|
|
94
|
+
(_classPrivateFieldGet3 = (0, _classPrivateFieldGet6.default)(this, _options)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : (_classPrivateFieldGet4 = _classPrivateFieldGet3.onValuesChanged) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.call(_classPrivateFieldGet3, {
|
|
95
|
+
changedValues: values,
|
|
96
|
+
allValues: this.getAllValues()
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
resetFields(name) {
|
|
101
|
+
if (name) {
|
|
102
|
+
(0, _classPrivateFieldGet6.default)(this, _formData)[name] = null;
|
|
103
|
+
this.publish(`${name}.reset.fields`, null);
|
|
104
|
+
} else {
|
|
105
|
+
(0, _classPrivateFieldSet2.default)(this, _formData, {});
|
|
106
|
+
this.publish("reset.fields", null);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
getFieldsValue(name) {
|
|
110
|
+
if (name) {
|
|
111
|
+
return (0, _classPrivateFieldGet6.default)(this, _formData)[name];
|
|
112
|
+
}
|
|
113
|
+
return this.getAllValues();
|
|
114
|
+
}
|
|
115
|
+
validateFields(callback) {
|
|
116
|
+
const allFields = (0, _classPrivateMethodGet2.default)(this, _getAllFields, _getAllFields2).call(this);
|
|
117
|
+
const results = [];
|
|
118
|
+
allFields.forEach(name => {
|
|
119
|
+
const field = (0, _classPrivateFieldGet6.default)(this, _fields).get(name);
|
|
120
|
+
if (field) {
|
|
121
|
+
results.push(this.validateField(field.detail));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
if (results.some(result => (result === null || result === void 0 ? void 0 : result.type) !== "normal")) {
|
|
125
|
+
callback(true, results);
|
|
126
|
+
return false;
|
|
127
|
+
} else {
|
|
128
|
+
callback(false, (0, _classPrivateFieldGet6.default)(this, _formData));
|
|
129
|
+
return (0, _classPrivateFieldGet6.default)(this, _formData);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
validateField(field) {
|
|
133
|
+
var _classPrivateFieldGet5;
|
|
134
|
+
const fieldDetail = typeof field === "string" ? (_classPrivateFieldGet5 = (0, _classPrivateFieldGet6.default)(this, _fields).get(field)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.detail : field;
|
|
135
|
+
if (!fieldDetail) return;
|
|
136
|
+
const {
|
|
137
|
+
name,
|
|
138
|
+
label,
|
|
139
|
+
validate
|
|
140
|
+
} = fieldDetail;
|
|
141
|
+
const validateValue = (0, _classPrivateFieldGet6.default)(this, _formData)[name];
|
|
142
|
+
const messageBody = (message, type = "error") => {
|
|
143
|
+
return {
|
|
144
|
+
type,
|
|
145
|
+
message
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
const getName = () => label !== null && label !== void 0 ? label : name;
|
|
149
|
+
const valid = (validate, value) => {
|
|
150
|
+
const {
|
|
151
|
+
required,
|
|
152
|
+
pattern,
|
|
153
|
+
message,
|
|
154
|
+
min,
|
|
155
|
+
max,
|
|
156
|
+
validator
|
|
157
|
+
} = validate;
|
|
158
|
+
const label = getName();
|
|
159
|
+
if (required && (typeof value === "object" ? (0, _lodash.isEmpty)(value) : typeof value === "number" ? false : !value)) {
|
|
160
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.required) || `${label}为必填项`);
|
|
161
|
+
}
|
|
162
|
+
if (pattern) {
|
|
163
|
+
const reg = new RegExp(pattern);
|
|
164
|
+
if (!reg.test(value)) {
|
|
165
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.pattern) || `${label}没有匹配正则 ${pattern}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (min && (!value || value.length < min)) {
|
|
169
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.min) || `${label}至少包含 ${min} 个字符`);
|
|
170
|
+
}
|
|
171
|
+
if (max && value && value.length > max) {
|
|
172
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.max) || `${label}不能超过 ${max} 个字符`);
|
|
173
|
+
}
|
|
174
|
+
if (validator) {
|
|
175
|
+
const result = validator(value);
|
|
176
|
+
if (result) return typeof result === "string" ? messageBody(result, result ? "error" : "normal") : result;
|
|
177
|
+
}
|
|
178
|
+
return messageBody("", "normal");
|
|
179
|
+
};
|
|
180
|
+
const result = valid(validate, validateValue);
|
|
181
|
+
this.publish(`${name}.validate`, result);
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
getValueFromEvent(e) {
|
|
185
|
+
if (!e || !e.target) {
|
|
186
|
+
return e;
|
|
187
|
+
}
|
|
188
|
+
const target = e.target;
|
|
189
|
+
return target.type === "checkbox" ? target.checked : target.value;
|
|
190
|
+
}
|
|
191
|
+
resetValidateState() {
|
|
192
|
+
this.publish(`reset.validate`, null);
|
|
193
|
+
}
|
|
194
|
+
onWatch(name, event, callback, options) {
|
|
195
|
+
const field = (0, _classPrivateFieldGet6.default)(this, _fields).get(name);
|
|
196
|
+
if (field) {
|
|
197
|
+
var _options$needValidate;
|
|
198
|
+
const value = this.getValueFromEvent(event);
|
|
199
|
+
this.setFieldsValue({
|
|
200
|
+
[name]: value
|
|
201
|
+
});
|
|
202
|
+
if ((_options$needValidate = options === null || options === void 0 ? void 0 : options.needValidate) !== null && _options$needValidate !== void 0 ? _options$needValidate : true) {
|
|
203
|
+
this.validateField(field.detail);
|
|
204
|
+
}
|
|
205
|
+
callback === null || callback === void 0 ? void 0 : callback(value);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.FormStore = FormStore;
|
|
210
|
+
function _getAllFields2() {
|
|
211
|
+
return [...(0, _classPrivateFieldGet6.default)(this, _fields).keys()];
|
|
212
|
+
}
|
|
213
|
+
(0, _defineProperty2.default)(FormStore, "uid", void 0);
|
|
214
|
+
(0, _defineProperty2.default)(FormStore, "instance", new Map());
|
|
215
|
+
//# sourceMappingURL=FormStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormStore.js","names":["_lodash","require","_PubSub","uid","Field","field","detail","constructor","name","_fields","WeakMap","_options","_formData","_initData","_getAllFields","WeakSet","FormStore","PubSub","getInstance","options","instance","get","set","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","writable","value","Map","_classPrivateFieldSet2","setField","_classPrivateFieldGet6","getAllValues","setInitValue","values","isEmitValuseChange","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","publish","allFields","_classPrivateMethodGet2","_getAllFields2","call","newFormData","Object","entries","forEach","k","v","includes","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","getFieldsValue","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","isEmpty","reg","RegExp","test","length","getValueFromEvent","e","target","checked","resetValidateState","onWatch","event","_options$needValidate","needValidate","exports","keys","_defineProperty2"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\ninterface FieldDetail {\n name: string;\n label?: string;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()];\n }\n\n getAllValues() {\n return this.#formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (value) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const allFields = this.#getAllFields();\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n if (allFields.includes(k)) {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n }\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n this.#formData[name] = null;\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(true, results);\n return false;\n } else {\n callback(false, this.#formData);\n return this.#formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (validate: Validate, value: string): MessageBody => {\n const { required, pattern, message, min, max, validator } = validate;\n const label = getName();\n\n if (\n required &&\n (typeof value === \"object\"\n ? isEmpty(value)\n : typeof value === \"number\"\n ? false\n : !value)\n ) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(value)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n if (min && (!value || value.length < min)) {\n return messageBody(message?.min || `${label}至少包含 ${min} 个字符`);\n }\n\n if (max && value && value.length > max) {\n return messageBody(message?.max || `${label}不能超过 ${max} 个字符`);\n }\n\n if (validator) {\n const result = validator(value);\n if (result)\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = valid(validate, validateValue as string);\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n onWatch(\n name: string,\n event: React.ChangeEvent,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PubSub = void 0;
|
|
7
|
+
var _lodash = require("lodash");
|
|
8
|
+
class PubSub {
|
|
9
|
+
#topics = {};
|
|
10
|
+
#subUid = 0;
|
|
11
|
+
publish(topic, body) {
|
|
12
|
+
if (!this.#topics[topic]) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const subscribers = this.#topics[topic];
|
|
16
|
+
let len = subscribers ? subscribers.length : 0;
|
|
17
|
+
while (len--) {
|
|
18
|
+
subscribers[len].func(topic, body);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
subscribe(topic, fn) {
|
|
22
|
+
if (!this.#topics[topic]) {
|
|
23
|
+
this.#topics[topic] = [];
|
|
24
|
+
}
|
|
25
|
+
const token = (++this.#subUid).toString();
|
|
26
|
+
this.#topics[topic].push({
|
|
27
|
+
token: token,
|
|
28
|
+
func: fn
|
|
29
|
+
});
|
|
30
|
+
return token;
|
|
31
|
+
}
|
|
32
|
+
unsubscribe(token) {
|
|
33
|
+
for (const m in this.#topics) {
|
|
34
|
+
if (this.#topics[m]) {
|
|
35
|
+
(0, _lodash.remove)(this.#topics[m], item => item.token === token);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.PubSub = PubSub;
|
|
41
|
+
//# sourceMappingURL=PubSub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubSub.js","names":["_lodash","require","PubSub","topics","subUid","publish","topic","body","subscribers","len","length","func","subscribe","fn","token","toString","push","unsubscribe","m","remove","item","exports"],"sources":["../../src/PubSub.ts"],"sourcesContent":["import { remove } from \"lodash\";\n\nexport class PubSub {\n #topics: Record<string, { token: string; func: Function }[]> = {};\n #subUid = 0;\n\n publish(topic: string, body: any): void {\n if (!this.#topics[topic]) {\n return;\n }\n const subscribers = this.#topics[topic];\n let len = subscribers ? subscribers.length : 0;\n while (len--) {\n subscribers[len].func(topic, body);\n }\n }\n\n subscribe(topic: string, fn: (topic: string, detail: any) => void): string {\n if (!this.#topics[topic]) {\n this.#topics[topic] = [];\n }\n const token = (++this.#subUid).toString();\n this.#topics[topic].push({\n token: token,\n func: fn,\n });\n return token;\n }\n\n unsubscribe(token: string): void {\n for (const m in this.#topics) {\n if (this.#topics[m]) {\n remove(this.#topics[m], (item) => item.token === token);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,CAAC;EAClB,CAACC,MAAM,GAAwD,CAAC,CAAC;EACjE,CAACC,MAAM,GAAG,CAAC;EAEXC,OAAOA,CAACC,KAAa,EAAEC,IAAS,EAAQ;IACtC,IAAI,CAAC,IAAI,CAAC,CAACJ,MAAM,CAACG,KAAK,CAAC,EAAE;MACxB;IACF;IACA,MAAME,WAAW,GAAG,IAAI,CAAC,CAACL,MAAM,CAACG,KAAK,CAAC;IACvC,IAAIG,GAAG,GAAGD,WAAW,GAAGA,WAAW,CAACE,MAAM,GAAG,CAAC;IAC9C,OAAOD,GAAG,EAAE,EAAE;MACZD,WAAW,CAACC,GAAG,CAAC,CAACE,IAAI,CAACL,KAAK,EAAEC,IAAI,CAAC;IACpC;EACF;EAEAK,SAASA,CAACN,KAAa,EAAEO,EAAwC,EAAU;IACzE,IAAI,CAAC,IAAI,CAAC,CAACV,MAAM,CAACG,KAAK,CAAC,EAAE;MACxB,IAAI,CAAC,CAACH,MAAM,CAACG,KAAK,CAAC,GAAG,EAAE;IAC1B;IACA,MAAMQ,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAACV,MAAM,EAAEW,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,CAACZ,MAAM,CAACG,KAAK,CAAC,CAACU,IAAI,CAAC;MACvBF,KAAK,EAAEA,KAAK;MACZH,IAAI,EAAEE;IACR,CAAC,CAAC;IACF,OAAOC,KAAK;EACd;EAEAG,WAAWA,CAACH,KAAa,EAAQ;IAC/B,KAAK,MAAMI,CAAC,IAAI,IAAI,CAAC,CAACf,MAAM,EAAE;MAC5B,IAAI,IAAI,CAAC,CAACA,MAAM,CAACe,CAAC,CAAC,EAAE;QACnB,IAAAC,cAAM,EAAC,IAAI,CAAC,CAAChB,MAAM,CAACe,CAAC,CAAC,EAAGE,IAAI,IAAKA,IAAI,CAACN,KAAK,KAAKA,KAAK,CAAC;MACzD;IACF;EACF;AACF;AAACO,OAAA,CAAAnB,MAAA,GAAAA,MAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _Form = require("./Form.js");
|
|
7
|
+
Object.keys(_Form).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _Form[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _Form[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _FormItemElement = require("./FormItemElement.js");
|
|
18
|
+
Object.keys(_FormItemElement).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _FormItemElement[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _FormItemElement[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _FormStore = require("./FormStore.js");
|
|
29
|
+
Object.keys(_FormStore).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _FormStore[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _FormStore[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Form","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_FormItemElement","_FormStore"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\n"],"mappings":";;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,gBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,gBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,gBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,gBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,UAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,UAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,UAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,UAAA,CAAAN,GAAA;IAAA;EAAA;AAAA"}
|
package/dist/esm/Form.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.js","names":[],"sources":["../../src/Form.ts"],"sourcesContent":["import type { FormStore } from \"./FormStore.js\";\n\nexport interface AbstractForm extends HTMLElement {\n readonly isFormElement: true;\n formStore: FormStore;\n size?: \"large\" | \"medium\" | \"small\" | \"xs\";\n layout?: \"horizontal\" | \"vertical\" | \"inline\";\n validate(): boolean | Record<string, unknown>;\n validateField(name: string): void;\n resetValidateState(): void;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
2
|
+
import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
|
|
3
|
+
import _classPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
|
|
4
|
+
import _applyDecs2203R from "@babel/runtime/helpers/applyDecs2203R";
|
|
5
|
+
var _dec, _initProto;
|
|
6
|
+
import { createDecorators } from "@next-core/element";
|
|
7
|
+
import { ReactNextElement } from "@next-core/react-element";
|
|
8
|
+
var {
|
|
9
|
+
method
|
|
10
|
+
} = createDecorators();
|
|
11
|
+
_dec = method();
|
|
12
|
+
var _A = /*#__PURE__*/new WeakMap();
|
|
13
|
+
var _notRender = /*#__PURE__*/new WeakMap();
|
|
14
|
+
var _B = /*#__PURE__*/new WeakMap();
|
|
15
|
+
var _validate = /*#__PURE__*/new WeakMap();
|
|
16
|
+
var _C = /*#__PURE__*/new WeakMap();
|
|
17
|
+
var _bindFormItem = /*#__PURE__*/new WeakMap();
|
|
18
|
+
export class FormItemElementBase extends ReactNextElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
_classPrivateFieldInitSpec(this, _bindFormItem, {
|
|
22
|
+
get: _get_bindFormItem,
|
|
23
|
+
set: _set_bindFormItem
|
|
24
|
+
});
|
|
25
|
+
_classPrivateFieldInitSpec(this, _validate, {
|
|
26
|
+
get: _get_validate,
|
|
27
|
+
set: _set_validate
|
|
28
|
+
});
|
|
29
|
+
_classPrivateFieldInitSpec(this, _notRender, {
|
|
30
|
+
get: _get__notRender,
|
|
31
|
+
set: _set__notRender
|
|
32
|
+
});
|
|
33
|
+
_classPrivateFieldInitSpec(this, _A, {
|
|
34
|
+
writable: true,
|
|
35
|
+
value: false
|
|
36
|
+
});
|
|
37
|
+
_classPrivateFieldInitSpec(this, _B, {
|
|
38
|
+
writable: true,
|
|
39
|
+
value: "normal"
|
|
40
|
+
});
|
|
41
|
+
_classPrivateFieldInitSpec(this, _C, {
|
|
42
|
+
writable: true,
|
|
43
|
+
value: false
|
|
44
|
+
});
|
|
45
|
+
_initProto(this);
|
|
46
|
+
}
|
|
47
|
+
get isFormItemElement() {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
set validateState(value) {
|
|
51
|
+
_classPrivateFieldSet(this, _validate, value);
|
|
52
|
+
this._render();
|
|
53
|
+
}
|
|
54
|
+
get validateState() {
|
|
55
|
+
return _classPrivateFieldGet(this, _validate);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 控制该表单项是否隐藏
|
|
60
|
+
* @default false
|
|
61
|
+
* @group ui
|
|
62
|
+
*/
|
|
63
|
+
set notRender(value) {
|
|
64
|
+
this.hidden = value;
|
|
65
|
+
_classPrivateFieldSet(this, _notRender, value);
|
|
66
|
+
this._render();
|
|
67
|
+
}
|
|
68
|
+
get notRender() {
|
|
69
|
+
return _classPrivateFieldGet(this, _notRender);
|
|
70
|
+
}
|
|
71
|
+
get $bindFormItem() {
|
|
72
|
+
return _classPrivateFieldGet(this, _bindFormItem);
|
|
73
|
+
}
|
|
74
|
+
set $bindFormItem(value) {
|
|
75
|
+
_classPrivateFieldSet(this, _bindFormItem, value);
|
|
76
|
+
this._render();
|
|
77
|
+
}
|
|
78
|
+
getFormElement() {
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
80
|
+
var element = this;
|
|
81
|
+
while (element = element.parentNode) {
|
|
82
|
+
if (!element || element.isFormElement) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return element;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function _get__notRender() {
|
|
90
|
+
return _classPrivateFieldGet(this, _A);
|
|
91
|
+
}
|
|
92
|
+
function _set__notRender(v) {
|
|
93
|
+
_classPrivateFieldSet(this, _A, v);
|
|
94
|
+
}
|
|
95
|
+
function _get_validate() {
|
|
96
|
+
return _classPrivateFieldGet(this, _B);
|
|
97
|
+
}
|
|
98
|
+
function _set_validate(v) {
|
|
99
|
+
_classPrivateFieldSet(this, _B, v);
|
|
100
|
+
}
|
|
101
|
+
function _get_bindFormItem() {
|
|
102
|
+
return _classPrivateFieldGet(this, _C);
|
|
103
|
+
}
|
|
104
|
+
function _set_bindFormItem(v) {
|
|
105
|
+
_classPrivateFieldSet(this, _C, v);
|
|
106
|
+
}
|
|
107
|
+
[_initProto] = _applyDecs2203R(FormItemElementBase, [[_dec, 2, "getFormElement"]], []).e;
|
|
108
|
+
//# sourceMappingURL=FormItemElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormItemElement.js","names":["createDecorators","ReactNextElement","method","_dec","_A","WeakMap","_notRender","_B","_validate","_C","_bindFormItem","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_bindFormItem","set","_set_bindFormItem","_get_validate","_set_validate","_get__notRender","_set__notRender","writable","value","_initProto","isFormItemElement","validateState","_classPrivateFieldSet","_render","_classPrivateFieldGet","notRender","hidden","$bindFormItem","getFormElement","element","parentNode","isFormElement","v","_applyDecs2203R","e"],"sources":["../../src/FormItemElement.tsx"],"sourcesContent":["import { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport type { AbstractForm } from \"./Form.js\";\n\nconst { method } = createDecorators();\n\nexport abstract class FormItemElementBase extends ReactNextElement {\n accessor #_notRender = false;\n accessor #validate = \"normal\";\n accessor #bindFormItem = false;\n\n get isFormItemElement(): true {\n return true;\n }\n\n set validateState(value: string) {\n this.#validate = value;\n this._render();\n }\n get validateState() {\n return this.#validate;\n }\n\n /**\n * 控制该表单项是否隐藏\n * @default false\n * @group ui\n */\n set notRender(value: boolean) {\n this.hidden = value;\n this.#_notRender = value;\n this._render();\n }\n get notRender(): boolean {\n return this.#_notRender;\n }\n\n get $bindFormItem() {\n return this.#bindFormItem;\n }\n set $bindFormItem(value: boolean) {\n this.#bindFormItem = value;\n this._render();\n }\n\n @method()\n getFormElement(): AbstractForm | null {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let element: AbstractForm | null = this as unknown as AbstractForm;\n while ((element = element.parentNode as AbstractForm | null)) {\n if (!element || element.isFormElement) {\n break;\n }\n }\n return element as AbstractForm | null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
+
import _classPrivateMethodInitSpec from "@babel/runtime/helpers/classPrivateMethodInitSpec";
|
|
3
|
+
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
4
|
+
import _classPrivateMethodGet from "@babel/runtime/helpers/classPrivateMethodGet";
|
|
5
|
+
import _classPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
|
|
6
|
+
import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
|
|
7
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
8
|
+
import { isEmpty } from "lodash";
|
|
9
|
+
import { PubSub } from "./PubSub.js";
|
|
10
|
+
var uid = 0;
|
|
11
|
+
class Field {
|
|
12
|
+
constructor(name, detail) {
|
|
13
|
+
_defineProperty(this, "field", void 0);
|
|
14
|
+
_defineProperty(this, "detail", void 0);
|
|
15
|
+
this.field = name;
|
|
16
|
+
this.detail = detail;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
var _fields = /*#__PURE__*/new WeakMap();
|
|
20
|
+
var _options = /*#__PURE__*/new WeakMap();
|
|
21
|
+
var _formData = /*#__PURE__*/new WeakMap();
|
|
22
|
+
var _initData = /*#__PURE__*/new WeakMap();
|
|
23
|
+
var _getAllFields = /*#__PURE__*/new WeakSet();
|
|
24
|
+
export class FormStore extends PubSub {
|
|
25
|
+
static getInstance(options) {
|
|
26
|
+
if (!this.instance.get(uid)) {
|
|
27
|
+
this.uid = uid;
|
|
28
|
+
this.instance.set(this.uid, new FormStore(options));
|
|
29
|
+
uid += 1;
|
|
30
|
+
}
|
|
31
|
+
return this.instance.get(this.uid);
|
|
32
|
+
}
|
|
33
|
+
constructor(options) {
|
|
34
|
+
super();
|
|
35
|
+
_classPrivateMethodInitSpec(this, _getAllFields);
|
|
36
|
+
_classPrivateFieldInitSpec(this, _fields, {
|
|
37
|
+
writable: true,
|
|
38
|
+
value: new Map()
|
|
39
|
+
});
|
|
40
|
+
_classPrivateFieldInitSpec(this, _options, {
|
|
41
|
+
writable: true,
|
|
42
|
+
value: void 0
|
|
43
|
+
});
|
|
44
|
+
_classPrivateFieldInitSpec(this, _formData, {
|
|
45
|
+
writable: true,
|
|
46
|
+
value: void 0
|
|
47
|
+
});
|
|
48
|
+
_classPrivateFieldInitSpec(this, _initData, {
|
|
49
|
+
writable: true,
|
|
50
|
+
value: void 0
|
|
51
|
+
});
|
|
52
|
+
_classPrivateFieldSet(this, _formData, {});
|
|
53
|
+
_classPrivateFieldSet(this, _options, options);
|
|
54
|
+
}
|
|
55
|
+
setField(name, detail) {
|
|
56
|
+
_classPrivateFieldGet(this, _fields).set(name, new Field(name, detail));
|
|
57
|
+
}
|
|
58
|
+
getAllValues() {
|
|
59
|
+
return _classPrivateFieldGet(this, _formData);
|
|
60
|
+
}
|
|
61
|
+
setInitValue(values) {
|
|
62
|
+
var isEmitValuseChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
63
|
+
_classPrivateFieldSet(this, _initData, values);
|
|
64
|
+
this.setFieldsValue(values, isEmitValuseChange);
|
|
65
|
+
}
|
|
66
|
+
setFieldsValueByInitData(name) {
|
|
67
|
+
var _classPrivateFieldGet2;
|
|
68
|
+
var value = (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _initData)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2[name];
|
|
69
|
+
if (value) {
|
|
70
|
+
_classPrivateFieldGet(this, _formData)[name] = value;
|
|
71
|
+
this.publish("".concat(name, ".init.value"), value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
setFieldsValue(values) {
|
|
75
|
+
var isEmitValuseChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
76
|
+
var allFields = _classPrivateMethodGet(this, _getAllFields, _getAllFields2).call(this);
|
|
77
|
+
var newFormData = _objectSpread({}, _classPrivateFieldGet(this, _formData));
|
|
78
|
+
Object.entries(values).forEach(_ref => {
|
|
79
|
+
var [k, v] = _ref;
|
|
80
|
+
if (allFields.includes(k)) {
|
|
81
|
+
newFormData[k] = v;
|
|
82
|
+
_classPrivateFieldGet(this, _initData) && (_classPrivateFieldGet(this, _initData)[k] = v);
|
|
83
|
+
this.publish("".concat(k, ".init.value"), v);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
_classPrivateFieldSet(this, _formData, newFormData);
|
|
87
|
+
if (isEmitValuseChange) {
|
|
88
|
+
var _classPrivateFieldGet3, _classPrivateFieldGet4;
|
|
89
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(this, _options)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : (_classPrivateFieldGet4 = _classPrivateFieldGet3.onValuesChanged) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.call(_classPrivateFieldGet3, {
|
|
90
|
+
changedValues: values,
|
|
91
|
+
allValues: this.getAllValues()
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
resetFields(name) {
|
|
96
|
+
if (name) {
|
|
97
|
+
_classPrivateFieldGet(this, _formData)[name] = null;
|
|
98
|
+
this.publish("".concat(name, ".reset.fields"), null);
|
|
99
|
+
} else {
|
|
100
|
+
_classPrivateFieldSet(this, _formData, {});
|
|
101
|
+
this.publish("reset.fields", null);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
getFieldsValue(name) {
|
|
105
|
+
if (name) {
|
|
106
|
+
return _classPrivateFieldGet(this, _formData)[name];
|
|
107
|
+
}
|
|
108
|
+
return this.getAllValues();
|
|
109
|
+
}
|
|
110
|
+
validateFields(callback) {
|
|
111
|
+
var allFields = _classPrivateMethodGet(this, _getAllFields, _getAllFields2).call(this);
|
|
112
|
+
var results = [];
|
|
113
|
+
allFields.forEach(name => {
|
|
114
|
+
var field = _classPrivateFieldGet(this, _fields).get(name);
|
|
115
|
+
if (field) {
|
|
116
|
+
results.push(this.validateField(field.detail));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
if (results.some(result => (result === null || result === void 0 ? void 0 : result.type) !== "normal")) {
|
|
120
|
+
callback(true, results);
|
|
121
|
+
return false;
|
|
122
|
+
} else {
|
|
123
|
+
callback(false, _classPrivateFieldGet(this, _formData));
|
|
124
|
+
return _classPrivateFieldGet(this, _formData);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
validateField(field) {
|
|
128
|
+
var _classPrivateFieldGet5;
|
|
129
|
+
var fieldDetail = typeof field === "string" ? (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _fields).get(field)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.detail : field;
|
|
130
|
+
if (!fieldDetail) return;
|
|
131
|
+
var {
|
|
132
|
+
name,
|
|
133
|
+
label,
|
|
134
|
+
validate
|
|
135
|
+
} = fieldDetail;
|
|
136
|
+
var validateValue = _classPrivateFieldGet(this, _formData)[name];
|
|
137
|
+
var messageBody = function (message) {
|
|
138
|
+
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "error";
|
|
139
|
+
return {
|
|
140
|
+
type,
|
|
141
|
+
message
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
var getName = () => label !== null && label !== void 0 ? label : name;
|
|
145
|
+
var valid = (validate, value) => {
|
|
146
|
+
var {
|
|
147
|
+
required,
|
|
148
|
+
pattern,
|
|
149
|
+
message,
|
|
150
|
+
min,
|
|
151
|
+
max,
|
|
152
|
+
validator
|
|
153
|
+
} = validate;
|
|
154
|
+
var label = getName();
|
|
155
|
+
if (required && (typeof value === "object" ? isEmpty(value) : typeof value === "number" ? false : !value)) {
|
|
156
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.required) || "".concat(label, "\u4E3A\u5FC5\u586B\u9879"));
|
|
157
|
+
}
|
|
158
|
+
if (pattern) {
|
|
159
|
+
var reg = new RegExp(pattern);
|
|
160
|
+
if (!reg.test(value)) {
|
|
161
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.pattern) || "".concat(label, "\u6CA1\u6709\u5339\u914D\u6B63\u5219 ").concat(pattern));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (min && (!value || value.length < min)) {
|
|
165
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.min) || "".concat(label, "\u81F3\u5C11\u5305\u542B ").concat(min, " \u4E2A\u5B57\u7B26"));
|
|
166
|
+
}
|
|
167
|
+
if (max && value && value.length > max) {
|
|
168
|
+
return messageBody((message === null || message === void 0 ? void 0 : message.max) || "".concat(label, "\u4E0D\u80FD\u8D85\u8FC7 ").concat(max, " \u4E2A\u5B57\u7B26"));
|
|
169
|
+
}
|
|
170
|
+
if (validator) {
|
|
171
|
+
var _result = validator(value);
|
|
172
|
+
if (_result) return typeof _result === "string" ? messageBody(_result, _result ? "error" : "normal") : _result;
|
|
173
|
+
}
|
|
174
|
+
return messageBody("", "normal");
|
|
175
|
+
};
|
|
176
|
+
var result = valid(validate, validateValue);
|
|
177
|
+
this.publish("".concat(name, ".validate"), result);
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
getValueFromEvent(e) {
|
|
181
|
+
if (!e || !e.target) {
|
|
182
|
+
return e;
|
|
183
|
+
}
|
|
184
|
+
var target = e.target;
|
|
185
|
+
return target.type === "checkbox" ? target.checked : target.value;
|
|
186
|
+
}
|
|
187
|
+
resetValidateState() {
|
|
188
|
+
this.publish("reset.validate", null);
|
|
189
|
+
}
|
|
190
|
+
onWatch(name, event, callback, options) {
|
|
191
|
+
var field = _classPrivateFieldGet(this, _fields).get(name);
|
|
192
|
+
if (field) {
|
|
193
|
+
var _options$needValidate;
|
|
194
|
+
var _value = this.getValueFromEvent(event);
|
|
195
|
+
this.setFieldsValue({
|
|
196
|
+
[name]: _value
|
|
197
|
+
});
|
|
198
|
+
if ((_options$needValidate = options === null || options === void 0 ? void 0 : options.needValidate) !== null && _options$needValidate !== void 0 ? _options$needValidate : true) {
|
|
199
|
+
this.validateField(field.detail);
|
|
200
|
+
}
|
|
201
|
+
callback === null || callback === void 0 ? void 0 : callback(_value);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function _getAllFields2() {
|
|
206
|
+
return [..._classPrivateFieldGet(this, _fields).keys()];
|
|
207
|
+
}
|
|
208
|
+
_defineProperty(FormStore, "uid", void 0);
|
|
209
|
+
_defineProperty(FormStore, "instance", new Map());
|
|
210
|
+
//# sourceMappingURL=FormStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormStore.js","names":["isEmpty","PubSub","uid","Field","constructor","name","detail","_defineProperty","field","_fields","WeakMap","_options","_formData","_initData","_getAllFields","WeakSet","FormStore","getInstance","options","instance","get","set","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Map","_classPrivateFieldSet","setField","_classPrivateFieldGet","getAllValues","setInitValue","values","isEmitValuseChange","arguments","length","undefined","setFieldsValue","setFieldsValueByInitData","_classPrivateFieldGet2","publish","concat","allFields","_classPrivateMethodGet","_getAllFields2","call","newFormData","_objectSpread","Object","entries","forEach","_ref","k","v","includes","_classPrivateFieldGet3","_classPrivateFieldGet4","onValuesChanged","changedValues","allValues","resetFields","getFieldsValue","validateFields","callback","results","push","validateField","some","result","type","_classPrivateFieldGet5","fieldDetail","label","validate","validateValue","messageBody","message","getName","valid","required","pattern","min","max","validator","reg","RegExp","test","getValueFromEvent","e","target","checked","resetValidateState","onWatch","event","_options$needValidate","needValidate","keys"],"sources":["../../src/FormStore.ts"],"sourcesContent":["import { isEmpty } from \"lodash\";\nimport { PubSub } from \"./PubSub.js\";\n\ninterface FormStoreOptions {\n onValuesChanged?: (data: any) => void;\n}\n\ninterface FieldDetail {\n name: string;\n label?: string;\n originProps?: Record<string, any>;\n validate: Validate;\n [k: string]: any;\n}\n\nexport interface MessageBody {\n message: string;\n type: string;\n}\n\nexport interface WatchOptions {\n needValidate?: boolean;\n}\n\ninterface Validate {\n required?: boolean;\n pattern?: string;\n min?: number;\n max?: number;\n message?: {\n required?: string;\n pattern?: string;\n min?: string;\n max?: string;\n };\n validator?: (value: any) => MessageBody | string;\n}\n\nlet uid = 0;\n\nclass Field {\n field: string;\n detail: FieldDetail;\n constructor(name: string, detail: FieldDetail) {\n this.field = name;\n this.detail = detail;\n }\n}\n\nexport class FormStore extends PubSub {\n static uid: number;\n static instance: Map<number, FormStore> = new Map();\n static getInstance(options?: FormStoreOptions): FormStore {\n if (!this.instance.get(uid)) {\n this.uid = uid;\n this.instance.set(this.uid, new FormStore(options));\n uid += 1;\n }\n return this.instance.get(this.uid) as FormStore;\n }\n\n #fields: Map<string, Field> = new Map();\n #options: FormStoreOptions | undefined;\n #formData!: Record<string, unknown>;\n #initData: Record<string, unknown> | undefined;\n\n constructor(options?: FormStoreOptions) {\n super();\n this.#formData = {};\n this.#options = options;\n }\n\n setField(name: string, detail: FieldDetail) {\n this.#fields.set(name, new Field(name, detail));\n }\n #getAllFields() {\n return [...this.#fields.keys()];\n }\n\n getAllValues() {\n return this.#formData;\n }\n\n setInitValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n this.#initData = values;\n this.setFieldsValue(values, isEmitValuseChange);\n }\n\n setFieldsValueByInitData(name: string) {\n const value = this.#initData?.[name];\n if (value) {\n this.#formData[name] = value;\n this.publish(`${name}.init.value`, value);\n }\n }\n\n setFieldsValue(values: Record<string, unknown>, isEmitValuseChange = true) {\n const allFields = this.#getAllFields();\n const newFormData: Record<string, unknown> = {\n ...this.#formData,\n };\n Object.entries(values).forEach(([k, v]) => {\n if (allFields.includes(k)) {\n newFormData[k] = v;\n this.#initData && (this.#initData[k] = v);\n this.publish(`${k}.init.value`, v);\n }\n });\n this.#formData = newFormData;\n\n if (isEmitValuseChange) {\n this.#options?.onValuesChanged?.({\n changedValues: values,\n allValues: this.getAllValues(),\n });\n }\n }\n\n resetFields(name?: string) {\n if (name) {\n this.#formData[name] = null;\n this.publish(`${name}.reset.fields`, null);\n } else {\n this.#formData = {};\n this.publish(\"reset.fields\", null);\n }\n }\n\n getFieldsValue(name?: string) {\n if (name) {\n return this.#formData[name];\n }\n return this.getAllValues();\n }\n\n validateFields(\n callback: (err: boolean, value: any) => void\n ): boolean | Record<string, unknown> {\n const allFields = this.#getAllFields();\n const results: Array<MessageBody | undefined> = [];\n allFields.forEach((name) => {\n const field = this.#fields.get(name);\n if (field) {\n results.push(this.validateField(field.detail));\n }\n });\n\n if (results.some((result) => result?.type !== \"normal\")) {\n callback(true, results);\n return false;\n } else {\n callback(false, this.#formData);\n return this.#formData;\n }\n }\n\n validateField(field: string | FieldDetail) {\n const fieldDetail =\n typeof field === \"string\" ? this.#fields.get(field)?.detail : field;\n if (!fieldDetail) return;\n const { name, label, validate } = fieldDetail;\n const validateValue = this.#formData[name];\n\n const messageBody = (message: string, type = \"error\") => {\n return {\n type,\n message,\n };\n };\n\n const getName = () => label ?? name;\n\n const valid = (validate: Validate, value: string): MessageBody => {\n const { required, pattern, message, min, max, validator } = validate;\n const label = getName();\n\n if (\n required &&\n (typeof value === \"object\"\n ? isEmpty(value)\n : typeof value === \"number\"\n ? false\n : !value)\n ) {\n return messageBody(message?.required || `${label}为必填项`);\n }\n\n if (pattern) {\n const reg = new RegExp(pattern);\n if (!reg.test(value)) {\n return messageBody(\n message?.pattern || `${label}没有匹配正则 ${pattern}`\n );\n }\n }\n\n if (min && (!value || value.length < min)) {\n return messageBody(message?.min || `${label}至少包含 ${min} 个字符`);\n }\n\n if (max && value && value.length > max) {\n return messageBody(message?.max || `${label}不能超过 ${max} 个字符`);\n }\n\n if (validator) {\n const result = validator(value);\n if (result)\n return typeof result === \"string\"\n ? messageBody(result, result ? \"error\" : \"normal\")\n : (result as MessageBody);\n }\n\n return messageBody(\"\", \"normal\");\n };\n\n const result = valid(validate, validateValue as string);\n this.publish(`${name}.validate`, result);\n return result;\n }\n\n getValueFromEvent(e: React.ChangeEvent): any {\n if (!e || !e.target) {\n return e;\n }\n const target = e.target as HTMLInputElement;\n return target.type === \"checkbox\" ? target.checked : target.value;\n }\n\n resetValidateState() {\n this.publish(`reset.validate`, null);\n }\n\n onWatch(\n name: string,\n event: React.ChangeEvent,\n callback?: (v: string) => void,\n options?: WatchOptions\n ) {\n const field = this.#fields.get(name);\n\n if (field) {\n const value = this.getValueFromEvent(event);\n\n this.setFieldsValue({\n [name]: value,\n });\n\n if (options?.needValidate ?? true) {\n this.validateField(field.detail);\n }\n callback?.(value);\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,SAASA,OAAO,QAAQ,QAAQ;AAChC,SAASC,MAAM,QAAQ,aAAa;AAqCpC,IAAIC,GAAG,GAAG,CAAC;AAEX,MAAMC,KAAK,CAAC;EAGVC,WAAWA,CAACC,IAAY,EAAEC,MAAmB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC7C,IAAI,CAACC,KAAK,GAAGH,IAAI;IACjB,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;AACF;AAAC,IAAAG,OAAA,oBAAAC,OAAA;AAAA,IAAAC,QAAA,oBAAAD,OAAA;AAAA,IAAAE,SAAA,oBAAAF,OAAA;AAAA,IAAAG,SAAA,oBAAAH,OAAA;AAAA,IAAAI,aAAA,oBAAAC,OAAA;AAED,OAAO,MAAMC,SAAS,SAASf,MAAM,CAAC;EAGpC,OAAOgB,WAAWA,CAACC,OAA0B,EAAa;IACxD,IAAI,CAAC,IAAI,CAACC,QAAQ,CAACC,GAAG,CAAClB,GAAG,CAAC,EAAE;MAC3B,IAAI,CAACA,GAAG,GAAGA,GAAG;MACd,IAAI,CAACiB,QAAQ,CAACE,GAAG,CAAC,IAAI,CAACnB,GAAG,EAAE,IAAIc,SAAS,CAACE,OAAO,CAAC,CAAC;MACnDhB,GAAG,IAAI,CAAC;IACV;IACA,OAAO,IAAI,CAACiB,QAAQ,CAACC,GAAG,CAAC,IAAI,CAAClB,GAAG,CAAC;EACpC;EAOAE,WAAWA,CAACc,OAA0B,EAAE;IACtC,KAAK,CAAC,CAAC;IAACI,2BAAA,OAAAR,aAAA;IAAAS,0BAAA,OAAAd,OAAA;MAAAe,QAAA;MAAAC,KAAA,EANoB,IAAIC,GAAG,CAAC;IAAC;IAAAH,0BAAA,OAAAZ,QAAA;MAAAa,QAAA;MAAAC,KAAA;IAAA;IAAAF,0BAAA,OAAAX,SAAA;MAAAY,QAAA;MAAAC,KAAA;IAAA;IAAAF,0BAAA,OAAAV,SAAA;MAAAW,QAAA;MAAAC,KAAA;IAAA;IAOrCE,qBAAA,KAAI,EAAAf,SAAA,EAAa,CAAC,CAAC;IACnBe,qBAAA,KAAI,EAAAhB,QAAA,EAAYO,OAAO;EACzB;EAEAU,QAAQA,CAACvB,IAAY,EAAEC,MAAmB,EAAE;IAC1CuB,qBAAA,KAAI,EAAApB,OAAA,EAASY,GAAG,CAAChB,IAAI,EAAE,IAAIF,KAAK,CAACE,IAAI,EAAEC,MAAM,CAAC,CAAC;EACjD;EAKAwB,YAAYA,CAAA,EAAG;IACb,OAAAD,qBAAA,CAAO,IAAI,EAAAjB,SAAA;EACb;EAEAmB,YAAYA,CAACC,MAA+B,EAA6B;IAAA,IAA3BC,kBAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACrEP,qBAAA,KAAI,EAAAd,SAAA,EAAamB,MAAM;IACvB,IAAI,CAACK,cAAc,CAACL,MAAM,EAAEC,kBAAkB,CAAC;EACjD;EAEAK,wBAAwBA,CAACjC,IAAY,EAAE;IAAA,IAAAkC,sBAAA;IACrC,IAAMd,KAAK,IAAAc,sBAAA,GAAAV,qBAAA,CAAG,IAAI,EAAAhB,SAAA,eAAA0B,sBAAA,uBAAJA,sBAAA,CAAiBlC,IAAI,CAAC;IACpC,IAAIoB,KAAK,EAAE;MACTI,qBAAA,KAAI,EAAAjB,SAAA,EAAWP,IAAI,CAAC,GAAGoB,KAAK;MAC5B,IAAI,CAACe,OAAO,IAAAC,MAAA,CAAIpC,IAAI,kBAAeoB,KAAK,CAAC;IAC3C;EACF;EAEAY,cAAcA,CAACL,MAA+B,EAA6B;IAAA,IAA3BC,kBAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACvE,IAAMQ,SAAS,GAAAC,sBAAA,CAAG,IAAI,EAAA7B,aAAA,EAAA8B,cAAA,EAAAC,IAAA,CAAJ,IAAI,CAAgB;IACtC,IAAMC,WAAoC,GAAAC,aAAA,KAAAlB,qBAAA,CACrC,IAAI,EAAAjB,SAAA,EACR;IACDoC,MAAM,CAACC,OAAO,CAACjB,MAAM,CAAC,CAACkB,OAAO,CAACC,IAAA,IAAY;MAAA,IAAX,CAACC,CAAC,EAAEC,CAAC,CAAC,GAAAF,IAAA;MACpC,IAAIT,SAAS,CAACY,QAAQ,CAACF,CAAC,CAAC,EAAE;QACzBN,WAAW,CAACM,CAAC,CAAC,GAAGC,CAAC;QAClBxB,qBAAA,KAAI,EAAAhB,SAAA,MAAegB,qBAAA,KAAI,EAAAhB,SAAA,EAAWuC,CAAC,CAAC,GAAGC,CAAC,CAAC;QACzC,IAAI,CAACb,OAAO,IAAAC,MAAA,CAAIW,CAAC,kBAAeC,CAAC,CAAC;MACpC;IACF,CAAC,CAAC;IACF1B,qBAAA,KAAI,EAAAf,SAAA,EAAakC,WAAW;IAE5B,IAAIb,kBAAkB,EAAE;MAAA,IAAAsB,sBAAA,EAAAC,sBAAA;MACtB,CAAAD,sBAAA,GAAA1B,qBAAA,KAAI,EAAAlB,QAAA,eAAA4C,sBAAA,wBAAAC,sBAAA,GAAJD,sBAAA,CAAeE,eAAe,cAAAD,sBAAA,uBAA9BA,sBAAA,CAAAX,IAAA,CAAAU,sBAAA,EAAiC;QAC/BG,aAAa,EAAE1B,MAAM;QACrB2B,SAAS,EAAE,IAAI,CAAC7B,YAAY,CAAC;MAC/B,CAAC,CAAC;IACJ;EACF;EAEA8B,WAAWA,CAACvD,IAAa,EAAE;IACzB,IAAIA,IAAI,EAAE;MACRwB,qBAAA,KAAI,EAAAjB,SAAA,EAAWP,IAAI,CAAC,GAAG,IAAI;MAC3B,IAAI,CAACmC,OAAO,IAAAC,MAAA,CAAIpC,IAAI,oBAAiB,IAAI,CAAC;IAC5C,CAAC,MAAM;MACLsB,qBAAA,KAAI,EAAAf,SAAA,EAAa,CAAC,CAAC;MACnB,IAAI,CAAC4B,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;IACpC;EACF;EAEAqB,cAAcA,CAACxD,IAAa,EAAE;IAC5B,IAAIA,IAAI,EAAE;MACR,OAAOwB,qBAAA,KAAI,EAAAjB,SAAA,EAAWP,IAAI,CAAC;IAC7B;IACA,OAAO,IAAI,CAACyB,YAAY,CAAC,CAAC;EAC5B;EAEAgC,cAAcA,CACZC,QAA4C,EACT;IACnC,IAAMrB,SAAS,GAAAC,sBAAA,CAAG,IAAI,EAAA7B,aAAA,EAAA8B,cAAA,EAAAC,IAAA,CAAJ,IAAI,CAAgB;IACtC,IAAMmB,OAAuC,GAAG,EAAE;IAClDtB,SAAS,CAACQ,OAAO,CAAE7C,IAAI,IAAK;MAC1B,IAAMG,KAAK,GAAGqB,qBAAA,KAAI,EAAApB,OAAA,EAASW,GAAG,CAACf,IAAI,CAAC;MACpC,IAAIG,KAAK,EAAE;QACTwD,OAAO,CAACC,IAAI,CAAC,IAAI,CAACC,aAAa,CAAC1D,KAAK,CAACF,MAAM,CAAC,CAAC;MAChD;IACF,CAAC,CAAC;IAEF,IAAI0D,OAAO,CAACG,IAAI,CAAEC,MAAM,IAAK,CAAAA,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,IAAI,MAAK,QAAQ,CAAC,EAAE;MACvDN,QAAQ,CAAC,IAAI,EAAEC,OAAO,CAAC;MACvB,OAAO,KAAK;IACd,CAAC,MAAM;MACLD,QAAQ,CAAC,KAAK,EAAAlC,qBAAA,CAAE,IAAI,EAAAjB,SAAA,CAAU,CAAC;MAC/B,OAAAiB,qBAAA,CAAO,IAAI,EAAAjB,SAAA;IACb;EACF;EAEAsD,aAAaA,CAAC1D,KAA2B,EAAE;IAAA,IAAA8D,sBAAA;IACzC,IAAMC,WAAW,GACf,OAAO/D,KAAK,KAAK,QAAQ,IAAA8D,sBAAA,GAAGzC,qBAAA,KAAI,EAAApB,OAAA,EAASW,GAAG,CAACZ,KAAK,CAAC,cAAA8D,sBAAA,uBAAvBA,sBAAA,CAAyBhE,MAAM,GAAGE,KAAK;IACrE,IAAI,CAAC+D,WAAW,EAAE;IAClB,IAAM;MAAElE,IAAI;MAAEmE,KAAK;MAAEC;IAAS,CAAC,GAAGF,WAAW;IAC7C,IAAMG,aAAa,GAAG7C,qBAAA,KAAI,EAAAjB,SAAA,EAAWP,IAAI,CAAC;IAE1C,IAAMsE,WAAW,GAAG,SAAAA,CAACC,OAAe,EAAqB;MAAA,IAAnBP,IAAI,GAAAnC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,OAAO;MAClD,OAAO;QACLmC,IAAI;QACJO;MACF,CAAC;IACH,CAAC;IAED,IAAMC,OAAO,GAAGA,CAAA,KAAML,KAAK,aAALA,KAAK,cAALA,KAAK,GAAInE,IAAI;IAEnC,IAAMyE,KAAK,GAAGA,CAACL,QAAkB,EAAEhD,KAAa,KAAkB;MAChE,IAAM;QAAEsD,QAAQ;QAAEC,OAAO;QAAEJ,OAAO;QAAEK,GAAG;QAAEC,GAAG;QAAEC;MAAU,CAAC,GAAGV,QAAQ;MACpE,IAAMD,KAAK,GAAGK,OAAO,CAAC,CAAC;MAEvB,IACEE,QAAQ,KACP,OAAOtD,KAAK,KAAK,QAAQ,GACtBzB,OAAO,CAACyB,KAAK,CAAC,GACd,OAAOA,KAAK,KAAK,QAAQ,GACzB,KAAK,GACL,CAACA,KAAK,CAAC,EACX;QACA,OAAOkD,WAAW,CAAC,CAAAC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,QAAQ,QAAAtC,MAAA,CAAO+B,KAAK,6BAAM,CAAC;MACzD;MAEA,IAAIQ,OAAO,EAAE;QACX,IAAMI,GAAG,GAAG,IAAIC,MAAM,CAACL,OAAO,CAAC;QAC/B,IAAI,CAACI,GAAG,CAACE,IAAI,CAAC7D,KAAK,CAAC,EAAE;UACpB,OAAOkD,WAAW,CAChB,CAAAC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,OAAO,QAAAvC,MAAA,CAAO+B,KAAK,2CAAA/B,MAAA,CAAUuC,OAAO,CAC/C,CAAC;QACH;MACF;MAEA,IAAIC,GAAG,KAAK,CAACxD,KAAK,IAAIA,KAAK,CAACU,MAAM,GAAG8C,GAAG,CAAC,EAAE;QACzC,OAAON,WAAW,CAAC,CAAAC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,GAAG,QAAAxC,MAAA,CAAO+B,KAAK,+BAAA/B,MAAA,CAAQwC,GAAG,wBAAM,CAAC;MAC/D;MAEA,IAAIC,GAAG,IAAIzD,KAAK,IAAIA,KAAK,CAACU,MAAM,GAAG+C,GAAG,EAAE;QACtC,OAAOP,WAAW,CAAC,CAAAC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,GAAG,QAAAzC,MAAA,CAAO+B,KAAK,+BAAA/B,MAAA,CAAQyC,GAAG,wBAAM,CAAC;MAC/D;MAEA,IAAIC,SAAS,EAAE;QACb,IAAMf,OAAM,GAAGe,SAAS,CAAC1D,KAAK,CAAC;QAC/B,IAAI2C,OAAM,EACR,OAAO,OAAOA,OAAM,KAAK,QAAQ,GAC7BO,WAAW,CAACP,OAAM,EAAEA,OAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,GAC/CA,OAAsB;MAC/B;MAEA,OAAOO,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;IAClC,CAAC;IAED,IAAMP,MAAM,GAAGU,KAAK,CAACL,QAAQ,EAAEC,aAAuB,CAAC;IACvD,IAAI,CAAClC,OAAO,IAAAC,MAAA,CAAIpC,IAAI,gBAAa+D,MAAM,CAAC;IACxC,OAAOA,MAAM;EACf;EAEAmB,iBAAiBA,CAACC,CAAoB,EAAO;IAC3C,IAAI,CAACA,CAAC,IAAI,CAACA,CAAC,CAACC,MAAM,EAAE;MACnB,OAAOD,CAAC;IACV;IACA,IAAMC,MAAM,GAAGD,CAAC,CAACC,MAA0B;IAC3C,OAAOA,MAAM,CAACpB,IAAI,KAAK,UAAU,GAAGoB,MAAM,CAACC,OAAO,GAAGD,MAAM,CAAChE,KAAK;EACnE;EAEAkE,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACnD,OAAO,mBAAmB,IAAI,CAAC;EACtC;EAEAoD,OAAOA,CACLvF,IAAY,EACZwF,KAAwB,EACxB9B,QAA8B,EAC9B7C,OAAsB,EACtB;IACA,IAAMV,KAAK,GAAGqB,qBAAA,KAAI,EAAApB,OAAA,EAASW,GAAG,CAACf,IAAI,CAAC;IAEpC,IAAIG,KAAK,EAAE;MAAA,IAAAsF,qBAAA;MACT,IAAMrE,MAAK,GAAG,IAAI,CAAC8D,iBAAiB,CAACM,KAAK,CAAC;MAE3C,IAAI,CAACxD,cAAc,CAAC;QAClB,CAAChC,IAAI,GAAGoB;MACV,CAAC,CAAC;MAEF,KAAAqE,qBAAA,GAAI5E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6E,YAAY,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,IAAI,EAAE;QACjC,IAAI,CAAC5B,aAAa,CAAC1D,KAAK,CAACF,MAAM,CAAC;MAClC;MACAyD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGtC,MAAK,CAAC;IACnB;EACF;AACF;AAAC,SAAAmB,eAAA,EAlLiB;EACd,OAAO,CAAC,GAAGf,qBAAA,KAAI,EAAApB,OAAA,EAASuF,IAAI,CAAC,CAAC,CAAC;AACjC;AAACzF,eAAA,CA5BUS,SAAS;AAAAT,eAAA,CAATS,SAAS,cAEsB,IAAIU,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
2
|
+
import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
|
|
3
|
+
import _classPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
|
|
4
|
+
import { remove } from "lodash";
|
|
5
|
+
var _topics = /*#__PURE__*/new WeakMap();
|
|
6
|
+
var _subUid = /*#__PURE__*/new WeakMap();
|
|
7
|
+
export class PubSub {
|
|
8
|
+
constructor() {
|
|
9
|
+
_classPrivateFieldInitSpec(this, _topics, {
|
|
10
|
+
writable: true,
|
|
11
|
+
value: {}
|
|
12
|
+
});
|
|
13
|
+
_classPrivateFieldInitSpec(this, _subUid, {
|
|
14
|
+
writable: true,
|
|
15
|
+
value: 0
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
publish(topic, body) {
|
|
19
|
+
if (!_classPrivateFieldGet(this, _topics)[topic]) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
var subscribers = _classPrivateFieldGet(this, _topics)[topic];
|
|
23
|
+
var len = subscribers ? subscribers.length : 0;
|
|
24
|
+
while (len--) {
|
|
25
|
+
subscribers[len].func(topic, body);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
subscribe(topic, fn) {
|
|
29
|
+
var _this$subUid;
|
|
30
|
+
if (!_classPrivateFieldGet(this, _topics)[topic]) {
|
|
31
|
+
_classPrivateFieldGet(this, _topics)[topic] = [];
|
|
32
|
+
}
|
|
33
|
+
var token = _classPrivateFieldSet(this, _subUid, (_this$subUid = _classPrivateFieldGet(this, _subUid), ++_this$subUid)).toString();
|
|
34
|
+
_classPrivateFieldGet(this, _topics)[topic].push({
|
|
35
|
+
token: token,
|
|
36
|
+
func: fn
|
|
37
|
+
});
|
|
38
|
+
return token;
|
|
39
|
+
}
|
|
40
|
+
unsubscribe(token) {
|
|
41
|
+
for (var m in _classPrivateFieldGet(this, _topics)) {
|
|
42
|
+
if (_classPrivateFieldGet(this, _topics)[m]) {
|
|
43
|
+
remove(_classPrivateFieldGet(this, _topics)[m], item => item.token === token);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=PubSub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubSub.js","names":["remove","_topics","WeakMap","_subUid","PubSub","constructor","_classPrivateFieldInitSpec","writable","value","publish","topic","body","_classPrivateFieldGet","subscribers","len","length","func","subscribe","fn","_this$subUid","token","_classPrivateFieldSet","toString","push","unsubscribe","m","item"],"sources":["../../src/PubSub.ts"],"sourcesContent":["import { remove } from \"lodash\";\n\nexport class PubSub {\n #topics: Record<string, { token: string; func: Function }[]> = {};\n #subUid = 0;\n\n publish(topic: string, body: any): void {\n if (!this.#topics[topic]) {\n return;\n }\n const subscribers = this.#topics[topic];\n let len = subscribers ? subscribers.length : 0;\n while (len--) {\n subscribers[len].func(topic, body);\n }\n }\n\n subscribe(topic: string, fn: (topic: string, detail: any) => void): string {\n if (!this.#topics[topic]) {\n this.#topics[topic] = [];\n }\n const token = (++this.#subUid).toString();\n this.#topics[topic].push({\n token: token,\n func: fn,\n });\n return token;\n }\n\n unsubscribe(token: string): void {\n for (const m in this.#topics) {\n if (this.#topics[m]) {\n remove(this.#topics[m], (item) => item.token === token);\n }\n }\n }\n}\n"],"mappings":";;;AAAA,SAASA,MAAM,QAAQ,QAAQ;AAAC,IAAAC,OAAA,oBAAAC,OAAA;AAAA,IAAAC,OAAA,oBAAAD,OAAA;AAEhC,OAAO,MAAME,MAAM,CAAC;EAAAC,YAAA;IAAAC,0BAAA,OAAAL,OAAA;MAAAM,QAAA;MAAAC,KAAA,EAC6C,CAAC;IAAC;IAAAF,0BAAA,OAAAH,OAAA;MAAAI,QAAA;MAAAC,KAAA,EACvD;IAAC;EAAA;EAEXC,OAAOA,CAACC,KAAa,EAAEC,IAAS,EAAQ;IACtC,IAAI,CAACC,qBAAA,KAAI,EAAAX,OAAA,EAASS,KAAK,CAAC,EAAE;MACxB;IACF;IACA,IAAMG,WAAW,GAAGD,qBAAA,KAAI,EAAAX,OAAA,EAASS,KAAK,CAAC;IACvC,IAAII,GAAG,GAAGD,WAAW,GAAGA,WAAW,CAACE,MAAM,GAAG,CAAC;IAC9C,OAAOD,GAAG,EAAE,EAAE;MACZD,WAAW,CAACC,GAAG,CAAC,CAACE,IAAI,CAACN,KAAK,EAAEC,IAAI,CAAC;IACpC;EACF;EAEAM,SAASA,CAACP,KAAa,EAAEQ,EAAwC,EAAU;IAAA,IAAAC,YAAA;IACzE,IAAI,CAACP,qBAAA,KAAI,EAAAX,OAAA,EAASS,KAAK,CAAC,EAAE;MACxBE,qBAAA,KAAI,EAAAX,OAAA,EAASS,KAAK,CAAC,GAAG,EAAE;IAC1B;IACA,IAAMU,KAAK,GAAGC,qBAAA,CAAG,IAAI,EAAAlB,OAAA,GAAAgB,YAAA,GAAAP,qBAAA,CAAJ,IAAI,EAAAT,OAAA,KAAAgB,YAAA,GAAUG,QAAQ,CAAC,CAAC;IACzCV,qBAAA,KAAI,EAAAX,OAAA,EAASS,KAAK,CAAC,CAACa,IAAI,CAAC;MACvBH,KAAK,EAAEA,KAAK;MACZJ,IAAI,EAAEE;IACR,CAAC,CAAC;IACF,OAAOE,KAAK;EACd;EAEAI,WAAWA,CAACJ,KAAa,EAAQ;IAC/B,KAAK,IAAMK,CAAC,IAAAb,qBAAA,CAAI,IAAI,EAAAX,OAAA,GAAU;MAC5B,IAAIW,qBAAA,KAAI,EAAAX,OAAA,EAASwB,CAAC,CAAC,EAAE;QACnBzB,MAAM,CAACY,qBAAA,KAAI,EAAAX,OAAA,EAASwB,CAAC,CAAC,EAAGC,IAAI,IAAKA,IAAI,CAACN,KAAK,KAAKA,KAAK,CAAC;MACzD;IACF;EACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,sBAAsB;AACpC,cAAc,gBAAgB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FormStore } from "./FormStore.js";
|
|
2
|
+
export interface AbstractForm extends HTMLElement {
|
|
3
|
+
readonly isFormElement: true;
|
|
4
|
+
formStore: FormStore;
|
|
5
|
+
size?: "large" | "medium" | "small" | "xs";
|
|
6
|
+
layout?: "horizontal" | "vertical" | "inline";
|
|
7
|
+
validate(): boolean | Record<string, unknown>;
|
|
8
|
+
validateField(name: string): void;
|
|
9
|
+
resetValidateState(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNextElement } from "@next-core/react-element";
|
|
2
|
+
import type { AbstractForm } from "./Form.js";
|
|
3
|
+
export declare abstract class FormItemElementBase extends ReactNextElement {
|
|
4
|
+
#private;
|
|
5
|
+
get isFormItemElement(): true;
|
|
6
|
+
set validateState(value: string);
|
|
7
|
+
get validateState(): string;
|
|
8
|
+
/**
|
|
9
|
+
* 控制该表单项是否隐藏
|
|
10
|
+
* @default false
|
|
11
|
+
* @group ui
|
|
12
|
+
*/
|
|
13
|
+
set notRender(value: boolean);
|
|
14
|
+
get notRender(): boolean;
|
|
15
|
+
get $bindFormItem(): boolean;
|
|
16
|
+
set $bindFormItem(value: boolean);
|
|
17
|
+
getFormElement(): AbstractForm | null;
|
|
18
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PubSub } from "./PubSub.js";
|
|
3
|
+
interface FormStoreOptions {
|
|
4
|
+
onValuesChanged?: (data: any) => void;
|
|
5
|
+
}
|
|
6
|
+
interface FieldDetail {
|
|
7
|
+
name: string;
|
|
8
|
+
label?: string;
|
|
9
|
+
originProps?: Record<string, any>;
|
|
10
|
+
validate: Validate;
|
|
11
|
+
[k: string]: any;
|
|
12
|
+
}
|
|
13
|
+
export interface MessageBody {
|
|
14
|
+
message: string;
|
|
15
|
+
type: string;
|
|
16
|
+
}
|
|
17
|
+
export interface WatchOptions {
|
|
18
|
+
needValidate?: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface Validate {
|
|
21
|
+
required?: boolean;
|
|
22
|
+
pattern?: string;
|
|
23
|
+
min?: number;
|
|
24
|
+
max?: number;
|
|
25
|
+
message?: {
|
|
26
|
+
required?: string;
|
|
27
|
+
pattern?: string;
|
|
28
|
+
min?: string;
|
|
29
|
+
max?: string;
|
|
30
|
+
};
|
|
31
|
+
validator?: (value: any) => MessageBody | string;
|
|
32
|
+
}
|
|
33
|
+
export declare class FormStore extends PubSub {
|
|
34
|
+
#private;
|
|
35
|
+
static uid: number;
|
|
36
|
+
static instance: Map<number, FormStore>;
|
|
37
|
+
static getInstance(options?: FormStoreOptions): FormStore;
|
|
38
|
+
constructor(options?: FormStoreOptions);
|
|
39
|
+
setField(name: string, detail: FieldDetail): void;
|
|
40
|
+
getAllValues(): Record<string, unknown>;
|
|
41
|
+
setInitValue(values: Record<string, unknown>, isEmitValuseChange?: boolean): void;
|
|
42
|
+
setFieldsValueByInitData(name: string): void;
|
|
43
|
+
setFieldsValue(values: Record<string, unknown>, isEmitValuseChange?: boolean): void;
|
|
44
|
+
resetFields(name?: string): void;
|
|
45
|
+
getFieldsValue(name?: string): unknown;
|
|
46
|
+
validateFields(callback: (err: boolean, value: any) => void): boolean | Record<string, unknown>;
|
|
47
|
+
validateField(field: string | FieldDetail): MessageBody | undefined;
|
|
48
|
+
getValueFromEvent(e: React.ChangeEvent): any;
|
|
49
|
+
resetValidateState(): void;
|
|
50
|
+
onWatch(name: string, event: React.ChangeEvent, callback?: (v: string) => void, options?: WatchOptions): void;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@next-shared/form",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"homepage": "https://github.com/easyops-cn/next-bricks/tree/master/shared/form",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git@github.com:easyops-cn/next-bricks.git"
|
|
8
|
+
},
|
|
9
|
+
"license": "GPL-3.0",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"type": "module",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/types/index.d.ts",
|
|
18
|
+
"import": "./dist/esm/index.js",
|
|
19
|
+
"require": "./dist/cjs/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"clean": "rimraf dist",
|
|
25
|
+
"prestart": "npm run clean",
|
|
26
|
+
"start": "concurrently -k -n types,main \"npm run start:types\" \"npm run start:main\"",
|
|
27
|
+
"start:main": "cross-env NODE_ENV=development build-next-libs --watch",
|
|
28
|
+
"start:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types --project tsconfig.build.json --watch",
|
|
29
|
+
"prebuild": "npm run clean",
|
|
30
|
+
"build": "npm run build:types && npm run build:main",
|
|
31
|
+
"build:main": "cross-env NODE_ENV=production build-next-libs",
|
|
32
|
+
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types --project tsconfig.build.json"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@next-core/element": "^1.0.6",
|
|
36
|
+
"@next-core/react-element": "^1.0.7",
|
|
37
|
+
"lodash": "^4.17.21"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@next-core/build-next-libs": "^1.0.5",
|
|
41
|
+
"@next-core/test-next": "^1.0.6",
|
|
42
|
+
"concurrently": "^8.0.1"
|
|
43
|
+
},
|
|
44
|
+
"gitHead": "e0b6af107201669c9582d59553d8ef4316ce64f0"
|
|
45
|
+
}
|