@steroidsjs/core 3.0.0-beta.92 → 3.0.0-beta.93
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/hooks/useSaveCursorPosition.js +3 -0
- package/package.json +3 -3
- package/ui/form/EmailField/EmailField.d.ts +6 -0
- package/ui/form/EmailField/EmailField.js +44 -0
- package/ui/form/EmailField/hooks/useInputTypeEmail.d.ts +5 -0
- package/ui/form/EmailField/hooks/useInputTypeEmail.js +31 -0
- package/ui/form/EmailField/index.d.ts +2 -0
- package/ui/form/EmailField/index.js +7 -0
- package/ui/form/InputField/InputField.d.ts +2 -2
- package/ui/form/InputField/InputField.js +7 -1
- package/ui/form/InputField/hooks/useInputFieldWarningByType.d.ts +3 -0
- package/ui/form/InputField/hooks/useInputFieldWarningByType.js +35 -0
- package/ui/form/NumberField/hooks/useInputTypeNumber.d.ts +1 -1
- package/ui/form/NumberField/hooks/useInputTypeNumber.js +9 -13
- package/ui/form/index.d.ts +3 -1
- package/ui/form/index.js +5 -2
|
@@ -3,6 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
+
/* eslint-disable max-len */
|
|
7
|
+
/* eslint-disable no-unneeded-ternary */
|
|
8
|
+
/* eslint-disable consistent-return */
|
|
6
9
|
/* eslint-disable no-return-assign */
|
|
7
10
|
/* eslint-disable no-unused-expressions */
|
|
8
11
|
var react_1 = __importDefault(require("react"));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steroidsjs/core",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.93",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Vladimir Kozhin <hello@kozhindev.com>",
|
|
6
6
|
"repository": {
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"watch": "tsc -p tsconfig-debug.json"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@maskito/core": "
|
|
29
|
-
"@maskito/kit": "
|
|
28
|
+
"@maskito/core": "1.7.0",
|
|
29
|
+
"@maskito/kit": "1.7.0",
|
|
30
30
|
"@maskito/react": "^0.12.1",
|
|
31
31
|
"@splidejs/react-splide": "^0.7.12",
|
|
32
32
|
"axios": "^0.21.1",
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IBaseFieldProps } from '../InputField/InputField';
|
|
2
|
+
import { IFieldWrapperInputProps } from '../Field/fieldWrapper';
|
|
3
|
+
export interface IEmailFieldProps extends IBaseFieldProps, IFieldWrapperInputProps {
|
|
4
|
+
}
|
|
5
|
+
declare const _default: import("../Field/fieldWrapper").FieldWrapperComponent<IEmailFieldProps>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
exports.__esModule = true;
|
|
17
|
+
/* eslint-disable max-len */
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var hooks_1 = require("../../../hooks");
|
|
20
|
+
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
21
|
+
var useInputTypeEmail_1 = __importDefault(require("./hooks/useInputTypeEmail"));
|
|
22
|
+
/**
|
|
23
|
+
* EmailField
|
|
24
|
+
* Поле для ввода почты
|
|
25
|
+
*/
|
|
26
|
+
function EmailField(props) {
|
|
27
|
+
var components = (0, hooks_1.useComponents)();
|
|
28
|
+
var _a = (0, hooks_1.useSaveCursorPosition)(props.input), currentInputRef = _a.inputRef, onChange = _a.onChange;
|
|
29
|
+
var onInputChange = (0, useInputTypeEmail_1["default"])(currentInputRef, onChange, props.input.value).onInputChange;
|
|
30
|
+
var onClear = react_1["default"].useCallback(function () { return props.input.onChange(''); }, [props.input]);
|
|
31
|
+
var inputProps = react_1["default"].useMemo(function () {
|
|
32
|
+
var _a;
|
|
33
|
+
return (__assign({ name: props.input.name, value: (_a = props.input.value) !== null && _a !== void 0 ? _a : '', onChange: onInputChange, type: 'text', placeholder: props.placeholder, disabled: props.disabled, required: props.required }, props.inputProps));
|
|
34
|
+
}, [onInputChange, props.disabled, props.input.name, props.input.value, props.inputProps, props.placeholder, props.required]);
|
|
35
|
+
return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign({}, props), { inputProps: inputProps, inputRef: currentInputRef, onClear: onClear }));
|
|
36
|
+
}
|
|
37
|
+
EmailField.defaultProps = {
|
|
38
|
+
size: 'md',
|
|
39
|
+
disabled: false,
|
|
40
|
+
required: false,
|
|
41
|
+
showClear: false,
|
|
42
|
+
maskOptions: null
|
|
43
|
+
};
|
|
44
|
+
exports["default"] = (0, fieldWrapper_1["default"])('EmailField', EmailField);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const useInputTypeEmail: (currentInputRef: React.MutableRefObject<HTMLInputElement>, onChange: (event: React.ChangeEvent<HTMLInputElement>, value?: any) => void, currentValue: string | null | undefined) => {
|
|
3
|
+
onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
4
|
+
};
|
|
5
|
+
export default useInputTypeEmail;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
/* eslint-disable max-len */
|
|
7
|
+
/* eslint-disable no-unused-expressions */
|
|
8
|
+
var react_1 = __importDefault(require("react"));
|
|
9
|
+
var DEFAULT_VALIDITY = __('Неправильный формат адреса электронной почты.');
|
|
10
|
+
var useInputTypeEmail = function (currentInputRef, onChange, currentValue) {
|
|
11
|
+
var isValueEmail = function (value) {
|
|
12
|
+
//In that case it's testing if value is empty string or not defined
|
|
13
|
+
if (!value) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
var emailRegexp = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
17
|
+
return emailRegexp.test(value.toLowerCase());
|
|
18
|
+
};
|
|
19
|
+
var errorMessage = isValueEmail(currentValue) ? '' : DEFAULT_VALIDITY;
|
|
20
|
+
react_1["default"].useEffect(function () {
|
|
21
|
+
var _a;
|
|
22
|
+
(_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity(errorMessage);
|
|
23
|
+
}, [currentInputRef, currentValue, errorMessage]);
|
|
24
|
+
var onInputChange = function (event) {
|
|
25
|
+
onChange(event);
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
onInputChange: onInputChange
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports["default"] = useInputTypeEmail;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
var EmailField_1 = __importDefault(require("./EmailField"));
|
|
7
|
+
exports["default"] = EmailField_1["default"];
|
|
@@ -3,7 +3,7 @@ import { InputHTMLAttributes, ReactNode } from 'react';
|
|
|
3
3
|
import { MaskitoOptions } from '@maskito/core';
|
|
4
4
|
import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
|
|
5
5
|
export declare const MASK_PRESETS: {
|
|
6
|
-
date: MaskitoOptions
|
|
6
|
+
date: Required<MaskitoOptions>;
|
|
7
7
|
phone: {
|
|
8
8
|
mask: any[];
|
|
9
9
|
};
|
|
@@ -11,7 +11,7 @@ export declare const MASK_PRESETS: {
|
|
|
11
11
|
mask: any[];
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
|
-
type IElementInputType = 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | string;
|
|
14
|
+
export type IElementInputType = 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | string;
|
|
15
15
|
export interface IBaseFieldProps extends IFieldWrapperInputProps, IUiComponent {
|
|
16
16
|
/**
|
|
17
17
|
* Свойства для элемента input
|
|
@@ -47,12 +47,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
47
47
|
};
|
|
48
48
|
exports.__esModule = true;
|
|
49
49
|
exports.MASK_PRESETS = void 0;
|
|
50
|
+
/* eslint-disable no-unused-expressions */
|
|
51
|
+
/* eslint-disable max-len */
|
|
50
52
|
var React = __importStar(require("react"));
|
|
51
53
|
var react_1 = require("react");
|
|
52
54
|
var react_2 = require("@maskito/react");
|
|
53
55
|
var kit_1 = require("@maskito/kit");
|
|
54
56
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
55
57
|
var hooks_1 = require("../../../hooks");
|
|
58
|
+
var useInputFieldWarningByType_1 = require("./hooks/useInputFieldWarningByType");
|
|
56
59
|
exports.MASK_PRESETS = {
|
|
57
60
|
date: (0, kit_1.maskitoDateOptionsGenerator)({
|
|
58
61
|
mode: 'dd/mm/yyyy'
|
|
@@ -93,6 +96,7 @@ function InputField(props) {
|
|
|
93
96
|
maskedInputRef(inputRef.current);
|
|
94
97
|
}
|
|
95
98
|
}, [inputRef, maskedInputRef]);
|
|
99
|
+
(0, useInputFieldWarningByType_1.useInputFieldWarningByType)(props.type);
|
|
96
100
|
var onClear = React.useCallback(function () { return props.input.onChange(''); }, [props.input]);
|
|
97
101
|
var inputProps = (0, react_1.useMemo)(function () {
|
|
98
102
|
var _a;
|
|
@@ -102,7 +106,9 @@ function InputField(props) {
|
|
|
102
106
|
if (props.type === 'hidden') {
|
|
103
107
|
return null;
|
|
104
108
|
}
|
|
105
|
-
return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps,
|
|
109
|
+
return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps,
|
|
110
|
+
// If type was recognized as unsupported in InputField, then we do not pass ref.
|
|
111
|
+
inputRef: useInputFieldWarningByType_1.INPUT_TYPES_SUPPORTED_SELECTION.includes(props.type) ? inputRef : null, onClear: onClear }));
|
|
106
112
|
}
|
|
107
113
|
InputField.defaultProps = {
|
|
108
114
|
type: 'text',
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.useInputFieldWarningByType = exports.INPUT_TYPES_SUPPORTED_SELECTION = void 0;
|
|
4
|
+
/* eslint-disable max-len */
|
|
5
|
+
/* eslint-disable no-unused-expressions */
|
|
6
|
+
var react_use_1 = require("react-use");
|
|
7
|
+
exports.INPUT_TYPES_SUPPORTED_SELECTION = ['text', 'search', 'tel', 'url', 'password'];
|
|
8
|
+
var INPUT_TYPES_REPLACEMENT_HASH = {
|
|
9
|
+
email: 'EmailField',
|
|
10
|
+
date: 'DateField',
|
|
11
|
+
month: 'DateField',
|
|
12
|
+
week: 'CalendarSystem',
|
|
13
|
+
time: 'DateTimeField',
|
|
14
|
+
'datetime-local': 'DateField',
|
|
15
|
+
number: 'NumberField',
|
|
16
|
+
range: 'SliderField',
|
|
17
|
+
checkbox: 'CheckboxField',
|
|
18
|
+
radio: 'RadioField',
|
|
19
|
+
button: 'Button',
|
|
20
|
+
file: 'FileField',
|
|
21
|
+
submit: 'Button',
|
|
22
|
+
image: 'Button',
|
|
23
|
+
reset: 'Button'
|
|
24
|
+
};
|
|
25
|
+
var useInputFieldWarningByType = function (type) {
|
|
26
|
+
(0, react_use_1.useMount)(function () {
|
|
27
|
+
if (!exports.INPUT_TYPES_SUPPORTED_SELECTION.includes(type)) {
|
|
28
|
+
var recommendedUiComponent = "<".concat(INPUT_TYPES_REPLACEMENT_HASH[type], " />");
|
|
29
|
+
INPUT_TYPES_REPLACEMENT_HASH[type]
|
|
30
|
+
? console.warn("<InputField /> with \"".concat(type, "\" type does not support setSelectionRange() method. Try to use ").concat(recommendedUiComponent, " instead."))
|
|
31
|
+
: console.warn("< InputField /> with \"".concat(type, "\" type does not support setSelectionRange() method.Try to use native <input /> tag."));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.useInputFieldWarningByType = useInputFieldWarningByType;
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
interface IInputTypeNumberProps {
|
|
3
3
|
max: any;
|
|
4
4
|
min: any;
|
|
5
|
-
value:
|
|
5
|
+
value: string | undefined | null;
|
|
6
6
|
}
|
|
7
7
|
declare const useInputTypeNumber: (currentInputRef: React.MutableRefObject<HTMLInputElement>, inputTypeNumberProps: IInputTypeNumberProps, onChange: (event: React.ChangeEvent<HTMLInputElement>, value?: any) => void) => {
|
|
8
8
|
onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
@@ -5,22 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
7
|
var useInputTypeNumber = function (currentInputRef, inputTypeNumberProps, onChange) {
|
|
8
|
-
var setValidity = react_1["default"].useCallback(function (message) {
|
|
9
|
-
var _a;
|
|
10
|
-
(_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity(message);
|
|
11
|
-
}, [currentInputRef]);
|
|
12
|
-
var checkIsValueFalsy = function (value) { return value === '' || value === null || value === undefined; };
|
|
13
8
|
react_1["default"].useEffect(function () {
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
inputTypeNumberProps.value > inputTypeNumberProps.max
|
|
9
|
+
var _a;
|
|
10
|
+
var defaultValidity = 'The number is not valid.';
|
|
11
|
+
var errorMessage = inputTypeNumberProps.value > inputTypeNumberProps.max
|
|
17
12
|
|| inputTypeNumberProps.value < inputTypeNumberProps.min
|
|
18
|
-
||
|
|
19
|
-
?
|
|
20
|
-
:
|
|
21
|
-
|
|
13
|
+
|| !inputTypeNumberProps.value
|
|
14
|
+
? __(defaultValidity)
|
|
15
|
+
: '';
|
|
16
|
+
(_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity(errorMessage);
|
|
17
|
+
}, [currentInputRef, inputTypeNumberProps.value, inputTypeNumberProps.max, inputTypeNumberProps.min]);
|
|
22
18
|
var isValueNumeric = function (value) {
|
|
23
|
-
if (
|
|
19
|
+
if (!value) {
|
|
24
20
|
return true;
|
|
25
21
|
}
|
|
26
22
|
/**
|
package/ui/form/index.d.ts
CHANGED
|
@@ -29,7 +29,8 @@ import TextField from './TextField';
|
|
|
29
29
|
import TimeField from './TimeField';
|
|
30
30
|
import RateField from './RateField';
|
|
31
31
|
import MaskField from './MaskField';
|
|
32
|
-
|
|
32
|
+
import EmailField from './EmailField';
|
|
33
|
+
export { AutoCompleteField, BlankField, Button, CheckboxField, CheckboxListField, DateField, DateRangeField, DateTimeField, DateTimeRangeField, DropDownField, Field, FieldLayout, FieldList, FieldSet, FileField, Form, HtmlField, InputField, NavField, NumberField, PasswordField, RadioField, RadioListField, ReCaptchaField, SliderField, SwitcherField, TextField, TimeField, RateField, MaskField, EmailField, };
|
|
33
34
|
declare const _default: {
|
|
34
35
|
AutoCompleteField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./AutoCompleteField/AutoCompleteField").IAutoCompleteFieldProps>;
|
|
35
36
|
BlankField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./BlankField/BlankField").IBlankFieldProps>;
|
|
@@ -61,5 +62,6 @@ declare const _default: {
|
|
|
61
62
|
TimeField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./TimeField/TimeField").ITimeFieldProps>;
|
|
62
63
|
RateField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./RateField/RateField").IRateFieldProps>;
|
|
63
64
|
MaskField: typeof MaskField;
|
|
65
|
+
EmailField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./EmailField/EmailField").IEmailFieldProps>;
|
|
64
66
|
};
|
|
65
67
|
export default _default;
|
package/ui/form/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.MaskField = exports.RateField = exports.TimeField = exports.TextField = exports.SwitcherField = exports.SliderField = exports.ReCaptchaField = exports.RadioListField = exports.RadioField = exports.PasswordField = exports.NumberField = exports.NavField = exports.InputField = exports.HtmlField = exports.Form = exports.FileField = exports.FieldSet = exports.FieldList = exports.FieldLayout = exports.Field = exports.DropDownField = exports.DateTimeRangeField = exports.DateTimeField = exports.DateRangeField = exports.DateField = exports.CheckboxListField = exports.CheckboxField = exports.Button = exports.BlankField = exports.AutoCompleteField = void 0;
|
|
6
|
+
exports.EmailField = exports.MaskField = exports.RateField = exports.TimeField = exports.TextField = exports.SwitcherField = exports.SliderField = exports.ReCaptchaField = exports.RadioListField = exports.RadioField = exports.PasswordField = exports.NumberField = exports.NavField = exports.InputField = exports.HtmlField = exports.Form = exports.FileField = exports.FieldSet = exports.FieldList = exports.FieldLayout = exports.Field = exports.DropDownField = exports.DateTimeRangeField = exports.DateTimeField = exports.DateRangeField = exports.DateField = exports.CheckboxListField = exports.CheckboxField = exports.Button = exports.BlankField = exports.AutoCompleteField = void 0;
|
|
7
7
|
var AutoCompleteField_1 = __importDefault(require("./AutoCompleteField"));
|
|
8
8
|
exports.AutoCompleteField = AutoCompleteField_1["default"];
|
|
9
9
|
var BlankField_1 = __importDefault(require("./BlankField"));
|
|
@@ -64,6 +64,8 @@ var RateField_1 = __importDefault(require("./RateField"));
|
|
|
64
64
|
exports.RateField = RateField_1["default"];
|
|
65
65
|
var MaskField_1 = __importDefault(require("./MaskField"));
|
|
66
66
|
exports.MaskField = MaskField_1["default"];
|
|
67
|
+
var EmailField_1 = __importDefault(require("./EmailField"));
|
|
68
|
+
exports.EmailField = EmailField_1["default"];
|
|
67
69
|
exports["default"] = {
|
|
68
70
|
AutoCompleteField: AutoCompleteField_1["default"],
|
|
69
71
|
BlankField: BlankField_1["default"],
|
|
@@ -94,5 +96,6 @@ exports["default"] = {
|
|
|
94
96
|
TextField: TextField_1["default"],
|
|
95
97
|
TimeField: TimeField_1["default"],
|
|
96
98
|
RateField: RateField_1["default"],
|
|
97
|
-
MaskField: MaskField_1["default"]
|
|
99
|
+
MaskField: MaskField_1["default"],
|
|
100
|
+
EmailField: EmailField_1["default"]
|
|
98
101
|
};
|