@steroidsjs/core 3.0.56 → 3.0.59
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/actions/router.d.ts +1 -0
- package/actions/router.js +3 -2
- package/components/MetaComponent.js +17 -16
- package/docs-autogen-result.json +707 -1612
- package/en.json +6 -0
- package/enums/FieldEnum.d.ts +68 -0
- package/enums/FieldEnum.js +96 -0
- package/enums/index.d.ts +3 -0
- package/enums/index.js +8 -0
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +3 -1
- package/hooks/useDataSelect.js +1 -0
- package/hooks/useListField.d.ts +32 -0
- package/hooks/useListField.js +103 -0
- package/package.json +1 -1
- package/ui/content/Calendar/Calendar.d.ts +6 -2
- package/ui/content/Calendar/Calendar.js +5 -3
- package/ui/form/AutoCompleteField/AutoCompleteField.js +2 -1
- package/ui/form/BlankField/BlankField.js +2 -1
- package/ui/form/Button/Button.js +13 -4
- package/ui/form/CheckboxField/CheckboxField.d.ts +5 -5
- package/ui/form/CheckboxField/CheckboxField.js +11 -5
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -1
- package/ui/form/CheckboxListField/CheckboxListField.js +16 -93
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +2 -1
- package/ui/form/DateField/DateField.js +7 -4
- package/ui/form/DateField/useDateRange.js +2 -0
- package/ui/form/DateRangeField/DateRangeField.d.ts +27 -11
- package/ui/form/DateRangeField/DateRangeField.js +33 -13
- package/ui/form/DateRangeField/useOnDayClick.d.ts +10 -0
- package/ui/form/DateRangeField/useOnDayClick.js +41 -0
- package/ui/form/DateTimeField/DateTimeField.js +6 -3
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +15 -12
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +10 -5
- package/ui/form/DropDownField/DropDownField.d.ts +10 -1
- package/ui/form/DropDownField/DropDownField.js +14 -12
- package/ui/form/EmailField/EmailField.js +2 -1
- package/ui/form/Field/Field.js +2 -1
- package/ui/form/Field/fieldWrapper.d.ts +2 -1
- package/ui/form/FieldList/FieldList.js +4 -3
- package/ui/form/FileField/FileField.js +2 -1
- package/ui/form/Form/Form.js +37 -22
- package/ui/form/HtmlField/HtmlField.js +2 -1
- package/ui/form/ImageField/ImageField.js +2 -1
- package/ui/form/InputField/InputField.js +2 -1
- package/ui/form/InputField/hooks/useInputFieldWarningByType.js +16 -14
- package/ui/form/NavField/NavField.js +2 -1
- package/ui/form/NumberField/NumberField.js +10 -19
- package/ui/form/NumberField/hooks/useInputTypeNumber.d.ts +1 -1
- package/ui/form/NumberField/hooks/useInputTypeNumber.js +12 -3
- package/ui/form/PasswordField/PasswordField.js +2 -1
- package/ui/form/RadioField/RadioField.d.ts +3 -26
- package/ui/form/RadioField/RadioField.js +9 -53
- package/ui/form/RadioListField/RadioListField.d.ts +3 -42
- package/ui/form/RadioListField/RadioListField.js +8 -83
- package/ui/form/RateField/RateField.js +2 -1
- package/ui/form/ReCaptchaField/ReCaptchaField.js +2 -1
- package/ui/form/SliderField/SliderField.js +2 -1
- package/ui/form/SwitcherField/SwitcherField.d.ts +3 -39
- package/ui/form/SwitcherField/SwitcherField.js +4 -80
- package/ui/form/SwitcherListField/SwitcherListField.d.ts +3 -0
- package/ui/form/SwitcherListField/SwitcherListField.js +22 -0
- package/ui/form/SwitcherListField/index.d.ts +2 -0
- package/ui/form/SwitcherListField/index.js +7 -0
- package/ui/form/TextField/TextField.js +2 -1
- package/ui/form/TimeField/TimeField.js +2 -1
- package/ui/form/TimeRangeField/TimeRangeField.js +2 -1
- package/ui/form/index.d.ts +7 -5
- package/ui/form/index.js +8 -5
package/ui/form/Field/Field.js
CHANGED
|
@@ -43,6 +43,7 @@ var isString_1 = __importDefault(require("lodash-es/isString"));
|
|
|
43
43
|
var isFunction_1 = __importDefault(require("lodash-es/isFunction"));
|
|
44
44
|
var hooks_1 = require("../../../hooks");
|
|
45
45
|
var Form_1 = require("../Form/Form");
|
|
46
|
+
var enums_1 = require("../../../enums");
|
|
46
47
|
function Field(props) {
|
|
47
48
|
var components = (0, hooks_1.useComponents)();
|
|
48
49
|
// Get model
|
|
@@ -58,7 +59,7 @@ function Field(props) {
|
|
|
58
59
|
var component = props.component
|
|
59
60
|
|| fieldModel.searchField
|
|
60
61
|
|| fieldModel.field
|
|
61
|
-
||
|
|
62
|
+
|| enums_1.FieldEnum.INPUT_FIELD;
|
|
62
63
|
var ComponentField = (0, isString_1["default"])(component)
|
|
63
64
|
? components.ui.getField("form.".concat(component))
|
|
64
65
|
: component;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { FieldEnumType } from '@steroidsjs/core/enums';
|
|
2
3
|
export interface IFieldWrapperInputProps {
|
|
3
4
|
/**
|
|
4
5
|
* Префикс, который добавится к аттрибуту (названию) поля в форме
|
|
@@ -114,5 +115,5 @@ export interface FieldWrapperComponent<T> {
|
|
|
114
115
|
displayName: any;
|
|
115
116
|
defaultProps: any;
|
|
116
117
|
}
|
|
117
|
-
export default function fieldWrapper<T = any>(componentId:
|
|
118
|
+
export default function fieldWrapper<T = any>(componentId: FieldEnumType, Component: any, optionsConfig?: IFieldWrapperOptions): FieldWrapperComponent<T>;
|
|
118
119
|
export {};
|
|
@@ -48,10 +48,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
48
48
|
exports.__esModule = true;
|
|
49
49
|
var react_1 = __importStar(require("react"));
|
|
50
50
|
var isBoolean_1 = __importDefault(require("lodash-es/isBoolean"));
|
|
51
|
-
var range_1 = __importDefault(require("lodash-es/range"));
|
|
52
|
-
var concat_1 = __importDefault(require("lodash-es/concat"));
|
|
53
51
|
var last_1 = __importDefault(require("lodash-es/last"));
|
|
52
|
+
var range_1 = __importDefault(require("lodash-es/range"));
|
|
54
53
|
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
54
|
+
var concat_1 = __importDefault(require("lodash-es/concat"));
|
|
55
55
|
var get_1 = __importDefault(require("lodash-es/get"));
|
|
56
56
|
var react_use_1 = require("react-use");
|
|
57
57
|
var hooks_1 = require("../../../hooks");
|
|
@@ -59,6 +59,7 @@ var Form_1 = require("../../form/Form/Form");
|
|
|
59
59
|
var form_1 = require("../../../actions/form");
|
|
60
60
|
var tableNavigationHandler_1 = __importStar(require("./tableNavigationHandler"));
|
|
61
61
|
var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
|
|
62
|
+
var enums_1 = require("../../../enums");
|
|
62
63
|
function FieldList(props) {
|
|
63
64
|
var _a;
|
|
64
65
|
var components = (0, hooks_1.useComponents)();
|
|
@@ -152,4 +153,4 @@ FieldList.defaultProps = {
|
|
|
152
153
|
initialRowsCount: 1,
|
|
153
154
|
enableKeyboardNavigation: true
|
|
154
155
|
};
|
|
155
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
156
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.FIELD_LIST, FieldList, { list: true });
|
|
@@ -45,6 +45,7 @@ var react_1 = __importStar(require("react"));
|
|
|
45
45
|
var useFile_1 = __importDefault(require("../../../hooks/useFile"));
|
|
46
46
|
var hooks_1 = require("../../../hooks");
|
|
47
47
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
48
|
+
var enums_1 = require("../../../enums");
|
|
48
49
|
var FilesLayout;
|
|
49
50
|
(function (FilesLayout) {
|
|
50
51
|
FilesLayout["list"] = "list";
|
|
@@ -147,4 +148,4 @@ FileField.defaultProps = {
|
|
|
147
148
|
},
|
|
148
149
|
multiple: false
|
|
149
150
|
};
|
|
150
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
151
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.FILE_FIELD, FileField);
|
package/ui/form/Form/Form.js
CHANGED
|
@@ -78,6 +78,9 @@ exports.FormContext = void 0;
|
|
|
78
78
|
var react_1 = __importStar(require("react"));
|
|
79
79
|
var get_1 = __importDefault(require("lodash-es/get"));
|
|
80
80
|
var isUndefined_1 = __importDefault(require("lodash-es/isUndefined"));
|
|
81
|
+
var isNil_1 = __importDefault(require("lodash-es/isNil"));
|
|
82
|
+
var isString_1 = __importDefault(require("lodash-es/isString"));
|
|
83
|
+
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
81
84
|
var set_1 = __importDefault(require("lodash-es/set"));
|
|
82
85
|
var cloneDeep_1 = __importDefault(require("lodash-es/cloneDeep"));
|
|
83
86
|
var react_use_1 = require("react-use");
|
|
@@ -88,6 +91,8 @@ var hooks_1 = require("../../../hooks");
|
|
|
88
91
|
var form_1 = require("../../../utils/form");
|
|
89
92
|
var validate_1 = __importDefault(require("../validate"));
|
|
90
93
|
var form_2 = require("../../../actions/form");
|
|
94
|
+
var enums_1 = require("../../../enums");
|
|
95
|
+
var _isEmptyString = function (value) { return (0, isString_1["default"])(value) && (0, isEmpty_1["default"])(value); };
|
|
91
96
|
exports.FormContext = react_1["default"].createContext({});
|
|
92
97
|
var getCaptchaToken = function (params) {
|
|
93
98
|
var googleCaptcha = params.googleCaptcha, siteKey = params.siteKey, _a = params.actionName, actionName = _a === void 0 ? 'submit' : _a;
|
|
@@ -167,7 +172,7 @@ function Form(props) {
|
|
|
167
172
|
var onSubmit = (0, react_1.useCallback)(function (e) {
|
|
168
173
|
if (e === void 0) { e = null; }
|
|
169
174
|
return __awaiter(_this, void 0, void 0, function () {
|
|
170
|
-
var cleanedValues, submitResult, captchaAttribute, googleCaptcha, captchaToken, options, response, requestError_1, data;
|
|
175
|
+
var cleanedValues, registeredFields, submitResult, captchaAttribute, googleCaptcha, captchaToken, options, response, requestError_1, data;
|
|
171
176
|
var _a;
|
|
172
177
|
var _this = this;
|
|
173
178
|
return __generator(this, function (_b) {
|
|
@@ -178,30 +183,40 @@ function Form(props) {
|
|
|
178
183
|
e.preventDefault();
|
|
179
184
|
}
|
|
180
185
|
cleanedValues = (0, cloneDeep_1["default"])(values);
|
|
186
|
+
registeredFields = components.ui.getRegisteredFields(props.formId) || {};
|
|
181
187
|
// Append non touched fields to values object
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (keyParts.length > 0 && Array.isArray((0, get_1["default"])(cleanedValues, keyParts))) {
|
|
190
|
-
keyParts.push(keyPart);
|
|
191
|
-
arrayKey = keyParts.join('.');
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
188
|
+
Object.keys(registeredFields)
|
|
189
|
+
.forEach(function (key) {
|
|
190
|
+
// Don't set null values for keys in empty array items
|
|
191
|
+
var keyParts = [];
|
|
192
|
+
var arrayKey;
|
|
193
|
+
key.split('.').find(function (keyPart) {
|
|
194
|
+
if (keyParts.length > 0 && Array.isArray((0, get_1["default"])(cleanedValues, keyParts))) {
|
|
194
195
|
keyParts.push(keyPart);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (arrayKey && !(0, get_1["default"])(cleanedValues, arrayKey)) {
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
if ((0, isUndefined_1["default"])((0, get_1["default"])(cleanedValues, key))) {
|
|
201
|
-
(0, set_1["default"])(cleanedValues, key, null);
|
|
196
|
+
arrayKey = keyParts.join('.');
|
|
197
|
+
return true;
|
|
202
198
|
}
|
|
199
|
+
keyParts.push(keyPart);
|
|
200
|
+
return false;
|
|
203
201
|
});
|
|
204
|
-
|
|
202
|
+
if (arrayKey && !(0, get_1["default"])(cleanedValues, arrayKey)) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if ((0, isUndefined_1["default"])((0, get_1["default"])(cleanedValues, key))) {
|
|
206
|
+
(0, set_1["default"])(cleanedValues, key, null);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
// Convert NumberField values to Number
|
|
210
|
+
Object.entries(registeredFields).forEach(function (_a) {
|
|
211
|
+
var key = _a[0], fieldType = _a[1];
|
|
212
|
+
if (fieldType === enums_1.FieldEnum.NUMBER_FIELD) {
|
|
213
|
+
var value = (0, get_1["default"])(cleanedValues, key);
|
|
214
|
+
if ((0, isNil_1["default"])(value) || _isEmptyString(value)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
(0, set_1["default"])(cleanedValues, key, Number(value));
|
|
218
|
+
}
|
|
219
|
+
});
|
|
205
220
|
// Clean
|
|
206
221
|
cleanedValues = (0, form_1.cleanEmptyObject)(cleanedValues);
|
|
207
222
|
// Event onBeforeSubmit
|
|
@@ -222,7 +237,7 @@ function Form(props) {
|
|
|
222
237
|
captchaAttribute = null;
|
|
223
238
|
Object.entries(components.ui.getRegisteredFields(props.formId) || {}).forEach(function (_a) {
|
|
224
239
|
var attribute = _a[0], fieldType = _a[1];
|
|
225
|
-
if (fieldType ===
|
|
240
|
+
if (fieldType === enums_1.FieldEnum.RE_CAPTCHA_FIELD) {
|
|
226
241
|
captchaAttribute = attribute;
|
|
227
242
|
}
|
|
228
243
|
});
|
|
@@ -7,6 +7,7 @@ var react_1 = require("react");
|
|
|
7
7
|
var merge_1 = __importDefault(require("lodash-es/merge"));
|
|
8
8
|
var hooks_1 = require("../../../hooks");
|
|
9
9
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
10
|
+
var enums_1 = require("../../../enums");
|
|
10
11
|
function HtmlField(props) {
|
|
11
12
|
var components = (0, hooks_1.useComponents)();
|
|
12
13
|
var onFocus = (0, react_1.useCallback)(function (event) {
|
|
@@ -51,4 +52,4 @@ HtmlField.defaultProps = {
|
|
|
51
52
|
disabled: false,
|
|
52
53
|
className: ''
|
|
53
54
|
};
|
|
54
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
55
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.HTML_FIELD, HtmlField);
|
|
@@ -49,6 +49,7 @@ var useDispatch_1 = __importDefault(require("../../../hooks/useDispatch"));
|
|
|
49
49
|
var useFile_1 = __importDefault(require("../../../hooks/useFile"));
|
|
50
50
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
51
51
|
var modal_1 = require("../../../actions/modal");
|
|
52
|
+
var enums_1 = require("../../../enums");
|
|
52
53
|
function ImageField(props) {
|
|
53
54
|
var _a;
|
|
54
55
|
var components = (0, hooks_1.useComponents)();
|
|
@@ -155,4 +156,4 @@ ImageField.defaultProps = {
|
|
|
155
156
|
outline: true
|
|
156
157
|
}
|
|
157
158
|
};
|
|
158
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
159
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.IMAGE_FIELD, ImageField);
|
|
@@ -56,6 +56,7 @@ var kit_1 = require("@maskito/kit");
|
|
|
56
56
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
57
57
|
var hooks_1 = require("../../../hooks");
|
|
58
58
|
var useInputFieldWarningByType_1 = require("./hooks/useInputFieldWarningByType");
|
|
59
|
+
var enums_1 = require("../../../enums");
|
|
59
60
|
exports.MASK_PRESETS = {
|
|
60
61
|
date: (0, kit_1.maskitoDateOptionsGenerator)({
|
|
61
62
|
mode: 'dd/mm/yyyy'
|
|
@@ -149,4 +150,4 @@ InputField.defaultProps = {
|
|
|
149
150
|
showClear: false,
|
|
150
151
|
maskOptions: null
|
|
151
152
|
};
|
|
152
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
153
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.INPUT_FIELD, InputField);
|
|
@@ -5,23 +5,25 @@ exports.useInputFieldWarningByType = exports.INPUT_TYPES_SUPPORTED_SELECTION = v
|
|
|
5
5
|
/* eslint-disable max-len */
|
|
6
6
|
/* eslint-disable no-unused-expressions */
|
|
7
7
|
var react_use_1 = require("react-use");
|
|
8
|
+
var enums_1 = require("../../../../enums");
|
|
8
9
|
exports.INPUT_TYPES_SUPPORTED_SELECTION = ['text', 'search', 'tel', 'url', 'password'];
|
|
10
|
+
var BUTTON_COMPONENT = 'Button';
|
|
9
11
|
var INPUT_TYPES_REPLACEMENT_HASH = {
|
|
10
|
-
email:
|
|
11
|
-
date:
|
|
12
|
-
month:
|
|
12
|
+
email: enums_1.FieldEnum.EMAIL_FIELD,
|
|
13
|
+
date: enums_1.FieldEnum.DATE_FIELD,
|
|
14
|
+
month: enums_1.FieldEnum.DATE_FIELD,
|
|
13
15
|
week: 'CalendarSystem',
|
|
14
|
-
time:
|
|
15
|
-
'datetime-local':
|
|
16
|
-
number:
|
|
17
|
-
range:
|
|
18
|
-
checkbox:
|
|
19
|
-
radio:
|
|
20
|
-
button:
|
|
21
|
-
file:
|
|
22
|
-
submit:
|
|
23
|
-
image:
|
|
24
|
-
reset:
|
|
16
|
+
time: enums_1.FieldEnum.DATE_TIME_FIELD,
|
|
17
|
+
'datetime-local': enums_1.FieldEnum.DATE_FIELD,
|
|
18
|
+
number: enums_1.FieldEnum.NUMBER_FIELD,
|
|
19
|
+
range: enums_1.FieldEnum.SLIDER_FIELD,
|
|
20
|
+
checkbox: enums_1.FieldEnum.CHECKBOX_FIELD,
|
|
21
|
+
radio: enums_1.FieldEnum.PASSWORD_FIELD,
|
|
22
|
+
button: BUTTON_COMPONENT,
|
|
23
|
+
file: enums_1.FieldEnum.FILE_FIELD,
|
|
24
|
+
submit: BUTTON_COMPONENT,
|
|
25
|
+
image: BUTTON_COMPONENT,
|
|
26
|
+
reset: BUTTON_COMPONENT
|
|
25
27
|
};
|
|
26
28
|
var useInputFieldWarningByType = function (type) {
|
|
27
29
|
(0, react_use_1.useMount)(function () {
|
|
@@ -41,6 +41,7 @@ var react_1 = __importStar(require("react"));
|
|
|
41
41
|
var Nav_1 = __importDefault(require("../../nav/Nav/Nav"));
|
|
42
42
|
var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
|
|
43
43
|
var hooks_1 = require("../../../hooks");
|
|
44
|
+
var enums_1 = require("../../../enums");
|
|
44
45
|
function NavField(props) {
|
|
45
46
|
var items = (0, hooks_1.useDataProvider)({
|
|
46
47
|
items: props.items
|
|
@@ -62,4 +63,4 @@ NavField.defaultProps = {
|
|
|
62
63
|
layout: 'button'
|
|
63
64
|
}
|
|
64
65
|
};
|
|
65
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
66
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.NAV_FIELD, NavField);
|
|
@@ -42,6 +42,7 @@ var react_1 = __importStar(require("react"));
|
|
|
42
42
|
var hooks_1 = require("../../../hooks");
|
|
43
43
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
44
44
|
var useInputTypeNumber_1 = __importDefault(require("./hooks/useInputTypeNumber"));
|
|
45
|
+
var enums_1 = require("../../../enums");
|
|
45
46
|
var DEFAULT_STEP = 1;
|
|
46
47
|
function NumberField(props) {
|
|
47
48
|
var _a;
|
|
@@ -69,26 +70,16 @@ function NumberField(props) {
|
|
|
69
70
|
else {
|
|
70
71
|
newValue = fixToDecimal(currentValue - step);
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
}, [currentInputRef,
|
|
74
|
-
var onStepUp = (0, react_1.useCallback)(function () {
|
|
75
|
-
if (!(Number(currentInputRef.current.value) + step > props.max)) {
|
|
76
|
-
onStep(true);
|
|
77
|
-
}
|
|
78
|
-
}, [currentInputRef, onStep, props.max, step]);
|
|
79
|
-
var onStepDown = (0, react_1.useCallback)(function () {
|
|
80
|
-
if (!(Number(currentInputRef.current.value) - step < props.min)) {
|
|
81
|
-
onStep(false);
|
|
82
|
-
}
|
|
83
|
-
}, [currentInputRef, onStep, props.min, step]);
|
|
73
|
+
onInputChange(null, String(newValue));
|
|
74
|
+
}, [currentInputRef, onInputChange, props.decimal, step]);
|
|
84
75
|
var onKeyDown = (0, react_1.useCallback)(function (event) {
|
|
85
76
|
if (event.key === 'ArrowUp') {
|
|
86
|
-
|
|
77
|
+
onStep(true);
|
|
87
78
|
}
|
|
88
79
|
else if (event.key === 'ArrowDown') {
|
|
89
|
-
|
|
80
|
+
onStep(false);
|
|
90
81
|
}
|
|
91
|
-
}, [
|
|
82
|
+
}, [onStep]);
|
|
92
83
|
var inputProps = (0, react_1.useMemo)(function () {
|
|
93
84
|
var _a;
|
|
94
85
|
return (__assign(__assign({}, props.inputProps), { name: props.input.name, value: (_a = props.input.value) !== null && _a !== void 0 ? _a : '', onChange: onInputChange, type: 'text', min: props.min, max: props.max, step: props.step, placeholder: props.placeholder, disabled: props.disabled, autoComplete: 'off', onKeyDown: onKeyDown }));
|
|
@@ -96,8 +87,8 @@ function NumberField(props) {
|
|
|
96
87
|
var viewProps = (0, react_1.useMemo)(function () { return ({
|
|
97
88
|
viewProps: props.viewProps,
|
|
98
89
|
inputProps: inputProps,
|
|
99
|
-
onStepUp:
|
|
100
|
-
onStepDown:
|
|
90
|
+
onStepUp: function () { return onStep(true); },
|
|
91
|
+
onStepDown: function () { return onStep(false); },
|
|
101
92
|
input: props.input,
|
|
102
93
|
inputRef: currentInputRef,
|
|
103
94
|
size: props.size,
|
|
@@ -105,7 +96,7 @@ function NumberField(props) {
|
|
|
105
96
|
className: props.className,
|
|
106
97
|
disabled: props.disabled,
|
|
107
98
|
id: props.id
|
|
108
|
-
}); }, [currentInputRef, inputProps,
|
|
99
|
+
}); }, [currentInputRef, inputProps, onStep, props.className, props.disabled, props.errors, props.id, props.input, props.size, props.viewProps]);
|
|
109
100
|
return components.ui.renderView(props.view || 'form.NumberFieldView', viewProps);
|
|
110
101
|
}
|
|
111
102
|
NumberField.defaultProps = {
|
|
@@ -113,4 +104,4 @@ NumberField.defaultProps = {
|
|
|
113
104
|
required: false,
|
|
114
105
|
isCanBeNegative: true
|
|
115
106
|
};
|
|
116
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
107
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.NUMBER_FIELD, NumberField);
|
|
@@ -6,6 +6,6 @@ interface IInputTypeNumberProps {
|
|
|
6
6
|
required?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare const useInputTypeNumber: (currentInputRef: React.MutableRefObject<HTMLInputElement>, inputTypeNumberProps: IInputTypeNumberProps, onChange: (event: React.ChangeEvent<HTMLInputElement>, value?: any) => void, decimal: number, isCanBeNegative?: boolean) => {
|
|
9
|
-
onInputChange: (event: React.ChangeEvent<HTMLInputElement
|
|
9
|
+
onInputChange: (event: React.ChangeEvent<HTMLInputElement>, newValue?: string) => void;
|
|
10
10
|
};
|
|
11
11
|
export default useInputTypeNumber;
|
|
@@ -46,11 +46,20 @@ var useInputTypeNumber = function (currentInputRef, inputTypeNumberProps, onChan
|
|
|
46
46
|
: new RegExp('^\\d+$');
|
|
47
47
|
return decimal ? numericFloatRegExp.test(value) : numericRegExp.test(value);
|
|
48
48
|
};
|
|
49
|
-
var onInputChange = function (event) {
|
|
49
|
+
var onInputChange = function (event, newValue) {
|
|
50
50
|
var _a;
|
|
51
|
-
var value = (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
51
|
+
var value = newValue || ((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value);
|
|
52
52
|
if (isValueNumeric(value)) {
|
|
53
|
-
|
|
53
|
+
if (value !== '') {
|
|
54
|
+
var numericValue = Number(value);
|
|
55
|
+
if (numericValue > inputTypeNumberProps.max) {
|
|
56
|
+
value = inputTypeNumberProps.max;
|
|
57
|
+
}
|
|
58
|
+
else if (numericValue < inputTypeNumberProps.min) {
|
|
59
|
+
value = inputTypeNumberProps.min;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
onChange(event, value);
|
|
54
63
|
}
|
|
55
64
|
};
|
|
56
65
|
return {
|
|
@@ -17,6 +17,7 @@ exports.__esModule = true;
|
|
|
17
17
|
exports.checkPassword = exports.InputType = void 0;
|
|
18
18
|
/* eslint-disable no-unused-expressions */
|
|
19
19
|
var react_1 = require("react");
|
|
20
|
+
var enums_1 = require("../../../enums");
|
|
20
21
|
var hooks_1 = require("../../../hooks");
|
|
21
22
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
22
23
|
var InputType;
|
|
@@ -94,4 +95,4 @@ PasswordField.defaultProps = {
|
|
|
94
95
|
showSecurityIcon: true,
|
|
95
96
|
required: false
|
|
96
97
|
};
|
|
97
|
-
exports["default"] = (0, fieldWrapper_1["default"])(
|
|
98
|
+
exports["default"] = (0, fieldWrapper_1["default"])(enums_1.FieldEnum.PASSWORD_FIELD, PasswordField);
|
|
@@ -1,31 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ICheckboxFieldProps } from '../CheckboxField/CheckboxField';
|
|
3
3
|
/**
|
|
4
4
|
* RadioField
|
|
5
5
|
*
|
|
6
6
|
* Компонент RadioField представляет собой элемент выбора типа "radio". Он позволяет пользователю выбрать один вариант из нескольких предложенных.
|
|
7
7
|
**/
|
|
8
|
-
export
|
|
9
|
-
/**
|
|
10
|
-
* Свойства для элемента input
|
|
11
|
-
* @example {onKeyDown: ...}
|
|
12
|
-
*/
|
|
13
|
-
inputProps?: any;
|
|
14
|
-
/**
|
|
15
|
-
* Флаг определяющий включен ли элемент
|
|
16
|
-
* @example {'true'}
|
|
17
|
-
*/
|
|
18
|
-
checked?: boolean;
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
}
|
|
21
|
-
export interface IRadioFieldViewProps extends IRadioFieldProps, IFieldWrapperOutputProps {
|
|
22
|
-
inputProps: {
|
|
23
|
-
name: string;
|
|
24
|
-
type: string;
|
|
25
|
-
checked: boolean;
|
|
26
|
-
onChange: (value: string | React.ChangeEvent) => void;
|
|
27
|
-
disabled: boolean;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
declare const _default: import("../Field/fieldWrapper").FieldWrapperComponent<IRadioFieldProps>;
|
|
31
|
-
export default _default;
|
|
8
|
+
export default function RadioField(props: ICheckboxFieldProps): JSX.Element;
|
|
@@ -10,62 +10,18 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
15
|
};
|
|
39
16
|
exports.__esModule = true;
|
|
40
|
-
var react_1 =
|
|
41
|
-
var
|
|
42
|
-
|
|
17
|
+
var react_1 = __importDefault(require("react"));
|
|
18
|
+
var CheckboxField_1 = __importDefault(require("../CheckboxField/CheckboxField"));
|
|
19
|
+
/**
|
|
20
|
+
* RadioField
|
|
21
|
+
*
|
|
22
|
+
* Компонент RadioField представляет собой элемент выбора типа "radio". Он позволяет пользователю выбрать один вариант из нескольких предложенных.
|
|
23
|
+
**/
|
|
43
24
|
function RadioField(props) {
|
|
44
|
-
|
|
45
|
-
var onChangeHandler = react_1["default"].useCallback(function () {
|
|
46
|
-
props.input.onChange(!props.input.value);
|
|
47
|
-
if (props.onChange) {
|
|
48
|
-
props.onChange();
|
|
49
|
-
}
|
|
50
|
-
}, [props]);
|
|
51
|
-
var inputProps = react_1["default"].useMemo(function () { return (__assign({ name: props.input.name, type: 'radio', checked: !!props.input.value, onChange: onChangeHandler, disabled: props.disabled }, props.inputProps)); }, [onChangeHandler, props.disabled, props.input.name, props.input.value, props.inputProps]);
|
|
52
|
-
var viewProps = (0, react_1.useMemo)(function () { return ({
|
|
53
|
-
inputProps: inputProps,
|
|
54
|
-
errors: props.errors,
|
|
55
|
-
size: props.size,
|
|
56
|
-
className: props.className,
|
|
57
|
-
onChange: props.onChange,
|
|
58
|
-
checked: props.checked,
|
|
59
|
-
disabled: props.disabled,
|
|
60
|
-
required: props.required,
|
|
61
|
-
label: props.label
|
|
62
|
-
}); }, [inputProps, props.checked, props.className, props.disabled, props.errors, props.label, props.onChange, props.required, props.size]);
|
|
63
|
-
return components.ui.renderView(props.view || 'form.RadioFieldView', viewProps);
|
|
25
|
+
return (react_1["default"].createElement(CheckboxField_1["default"], __assign({ multiply: false, view: "form.RadioFieldView" }, props)));
|
|
64
26
|
}
|
|
65
|
-
|
|
66
|
-
disabled: false,
|
|
67
|
-
required: false,
|
|
68
|
-
className: '',
|
|
69
|
-
inputProps: {}
|
|
70
|
-
};
|
|
71
|
-
exports["default"] = (0, fieldWrapper_1["default"])('RadioField', RadioField);
|
|
27
|
+
exports["default"] = RadioField;
|
|
@@ -1,46 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
4
|
-
import { IDataSelectConfig } from '../../../hooks/useDataSelect';
|
|
5
|
-
import { IRadioFieldViewProps } from '../RadioField/RadioField';
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ICheckboxListFieldProps } from '../CheckboxListField/CheckboxListField';
|
|
6
3
|
/**
|
|
7
4
|
* RadioListField
|
|
8
5
|
* Список с радиокнопками. Используется в формах для выбора одного значения.
|
|
9
6
|
*/
|
|
10
|
-
export
|
|
11
|
-
/**
|
|
12
|
-
* Свойства для элемента input
|
|
13
|
-
* @example {onKeyDown: ...}
|
|
14
|
-
*/
|
|
15
|
-
inputProps?: any;
|
|
16
|
-
/**
|
|
17
|
-
* Ориентация списка
|
|
18
|
-
*/
|
|
19
|
-
orientation?: Orientation;
|
|
20
|
-
}
|
|
21
|
-
export interface IRadioListFieldViewProps extends IFieldWrapperOutputProps {
|
|
22
|
-
inputProps: {
|
|
23
|
-
name: string;
|
|
24
|
-
type: string;
|
|
25
|
-
disabled?: boolean;
|
|
26
|
-
onChange: (value: string | React.ChangeEvent) => void;
|
|
27
|
-
};
|
|
28
|
-
items: {
|
|
29
|
-
id: number | string | boolean;
|
|
30
|
-
label?: string;
|
|
31
|
-
disabled?: boolean;
|
|
32
|
-
isSelected: boolean;
|
|
33
|
-
isHovered: boolean;
|
|
34
|
-
required?: boolean;
|
|
35
|
-
size?: Size;
|
|
36
|
-
}[];
|
|
37
|
-
selectedIds: (PrimaryKey | any)[];
|
|
38
|
-
className?: CssClassName;
|
|
39
|
-
orientation?: Orientation;
|
|
40
|
-
disabled?: boolean;
|
|
41
|
-
size?: Size;
|
|
42
|
-
onItemSelect: (id: PrimaryKey | any) => void;
|
|
43
|
-
renderRadio: (radioProps: IRadioFieldViewProps) => JSX.Element;
|
|
44
|
-
}
|
|
45
|
-
declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IRadioListFieldProps>;
|
|
46
|
-
export default _default;
|
|
7
|
+
export default function RadioListField(props: ICheckboxListFieldProps): JSX.Element;
|
|
@@ -10,92 +10,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
15
|
};
|
|
39
16
|
exports.__esModule = true;
|
|
40
|
-
var react_1 =
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
17
|
+
var react_1 = __importDefault(require("react"));
|
|
18
|
+
var CheckboxListField_1 = __importDefault(require("../CheckboxListField/CheckboxListField"));
|
|
19
|
+
/**
|
|
20
|
+
* RadioListField
|
|
21
|
+
* Список с радиокнопками. Используется в формах для выбора одного значения.
|
|
22
|
+
*/
|
|
45
23
|
function RadioListField(props) {
|
|
46
|
-
|
|
47
|
-
var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
|
|
48
|
-
// Data provider
|
|
49
|
-
var items = (0, hooks_1.useDataProvider)({
|
|
50
|
-
items: props.items,
|
|
51
|
-
initialSelectedIds: inputSelectedIds,
|
|
52
|
-
dataProvider: props.dataProvider
|
|
53
|
-
}).items;
|
|
54
|
-
// Data select
|
|
55
|
-
var _a = (0, hooks_1.useDataSelect)({
|
|
56
|
-
multiple: props.multiple,
|
|
57
|
-
selectedIds: inputSelectedIds,
|
|
58
|
-
selectFirst: props.selectFirst,
|
|
59
|
-
primaryKey: props.primaryKey,
|
|
60
|
-
items: items,
|
|
61
|
-
inputValue: props.input.value
|
|
62
|
-
}), selectedIds = _a.selectedIds, setSelectedIds = _a.setSelectedIds;
|
|
63
|
-
var onItemSelect = (0, react_1.useCallback)(function (id) {
|
|
64
|
-
setSelectedIds(id);
|
|
65
|
-
}, [setSelectedIds]);
|
|
66
|
-
var inputProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.inputProps), { type: 'radio', name: props.input.name, disabled: props.disabled, onChange: function (value) { return props.input.onChange(value); } })); }, [props.disabled, props.input, props.inputProps]);
|
|
67
|
-
// Sync with form
|
|
68
|
-
var prevSelectedIds = (0, react_use_1.usePrevious)(selectedIds);
|
|
69
|
-
(0, react_1.useEffect)(function () {
|
|
70
|
-
if (!(0, isEqual_1["default"])(prevSelectedIds || [], selectedIds)) {
|
|
71
|
-
props.input.onChange.call(null, selectedIds[0]);
|
|
72
|
-
if (props.onChange) {
|
|
73
|
-
props.onChange.call(null, selectedIds[0]);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
|
-
}, [props.input.onChange, selectedIds]);
|
|
78
|
-
var RadioFieldView = components.ui.getView('form.RadioFieldView');
|
|
79
|
-
var renderRadio = (0, react_1.useCallback)(function (radioProps) { return react_1["default"].createElement(RadioFieldView, __assign({}, radioProps)); }, [RadioFieldView]);
|
|
80
|
-
var viewProps = (0, react_1.useMemo)(function () { return ({
|
|
81
|
-
items: items,
|
|
82
|
-
inputProps: inputProps,
|
|
83
|
-
onItemSelect: onItemSelect,
|
|
84
|
-
selectedIds: selectedIds,
|
|
85
|
-
renderRadio: renderRadio,
|
|
86
|
-
orientation: props.orientation,
|
|
87
|
-
className: props.className,
|
|
88
|
-
disabled: props.disabled,
|
|
89
|
-
size: props.size
|
|
90
|
-
}); }, [inputProps, items, onItemSelect, props.className, props.disabled, props.orientation, props.size, renderRadio, selectedIds]);
|
|
91
|
-
return components.ui.renderView(props.view || 'form.RadioListFieldView', viewProps);
|
|
24
|
+
return (react_1["default"].createElement(CheckboxListField_1["default"], __assign({ multiple: false, view: 'form.RadioListFieldView' }, props)));
|
|
92
25
|
}
|
|
93
|
-
|
|
94
|
-
disabled: false,
|
|
95
|
-
required: false,
|
|
96
|
-
className: '',
|
|
97
|
-
multiple: false,
|
|
98
|
-
errors: null,
|
|
99
|
-
orientation: 'vertical'
|
|
100
|
-
};
|
|
101
|
-
exports["default"] = (0, fieldWrapper_1["default"])('RadioListField', RadioListField);
|
|
26
|
+
exports["default"] = RadioListField;
|