@steroidsjs/core 3.0.0-beta.47 → 3.0.0-beta.49

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.0-beta.47",
3
+ "version": "3.0.0-beta.49",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -25,6 +25,9 @@
25
25
  "watch": "tsc -p tsconfig-debug.json"
26
26
  },
27
27
  "dependencies": {
28
+ "@maskito/core": "^0.12.1",
29
+ "@maskito/kit": "^0.12.1",
30
+ "@maskito/react": "^0.12.1",
28
31
  "axios": "^0.21.1",
29
32
  "connected-react-router": "^6.9.3",
30
33
  "domready": "^1.0.8",
@@ -47,7 +50,6 @@
47
50
  "react-grid-gallery": "^0.4.8",
48
51
  "react-helmet": "^6.1.0",
49
52
  "react-image-crop": "^9.0.2",
50
- "react-input-mask": "^3.0.0-alpha.2",
51
53
  "react-redux": "^8.0.5",
52
54
  "react-router": "^5.2.0",
53
55
  "react-router-dom": "^5.2.0",
@@ -1,3 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { MaskitoOptions } from '@maskito/core';
1
3
  import { ICalendarProps } from '../../content/Calendar/Calendar';
2
4
  import { IDateInputStateInput, IDateInputStateOutput } from './useDateInputState';
3
5
  export interface IDateFieldProps extends IDateInputStateInput, IUiComponent {
@@ -9,9 +11,17 @@ export interface IDateFieldProps extends IDateInputStateInput, IUiComponent {
9
11
  * Свойства для компонента Calendar
10
12
  */
11
13
  calendarProps?: ICalendarProps;
14
+ /**
15
+ * Опции маски для поля ввода
16
+ */
17
+ maskOptions?: MaskitoOptions;
12
18
  [key: string]: any;
13
19
  }
14
20
  export interface IDateFieldViewProps extends IDateInputStateOutput, Pick<IDateFieldProps, 'size' | 'icon' | 'errors' | 'showRemove' | 'className' | 'calendarProps'> {
21
+ /**
22
+ * Ref для input элемента, который накладывает маску
23
+ */
24
+ maskInputRef?: React.RefCallback<HTMLElement>;
15
25
  [key: string]: any;
16
26
  }
17
27
  declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDateFieldProps>;
@@ -15,6 +15,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  exports.__esModule = true;
17
17
  var react_1 = require("react");
18
+ var react_2 = require("@maskito/react");
19
+ var kit_1 = require("@maskito/kit");
18
20
  var hooks_1 = require("../../../hooks");
19
21
  var useDateInputState_1 = __importDefault(require("./useDateInputState"));
20
22
  var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
@@ -24,6 +26,7 @@ var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
24
26
  */
25
27
  function DateField(props) {
26
28
  var components = (0, hooks_1.useComponents)();
29
+ var maskInputRef = (0, react_2.useMaskito)({ options: props.maskOptions });
27
30
  var _a = (0, useDateInputState_1["default"])({
28
31
  input: props.input,
29
32
  disabled: props.disabled,
@@ -36,7 +39,7 @@ function DateField(props) {
36
39
  }), onClear = _a.onClear, onClose = _a.onClose, isOpened = _a.isOpened, inputProps = _a.inputProps;
37
40
  // Calendar props
38
41
  var calendarProps = (0, react_1.useMemo)(function () { return (__assign({ value: props.input.value, onChange: props.input.onChange, valueFormat: props.valueFormat }, props.calendarProps)); }, [props.calendarProps, props.input.onChange, props.input.value, props.valueFormat]);
39
- return components.ui.renderView(props.view || 'form.DateFieldView', __assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, calendarProps: calendarProps, size: props.size, icon: props.icon, errors: props.errors, label: props.label, disabled: props.disabled, className: props.className, showRemove: props.showRemove, style: props.style }));
42
+ return components.ui.renderView(props.view || 'form.DateFieldView', __assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, calendarProps: calendarProps, size: props.size, icon: props.icon, errors: props.errors, label: props.label, disabled: props.disabled, className: props.className, showRemove: props.showRemove, style: props.style, maskInputRef: maskInputRef }));
40
43
  }
41
44
  DateField.defaultProps = {
42
45
  disabled: false,
@@ -45,6 +48,7 @@ DateField.defaultProps = {
45
48
  required: false,
46
49
  showRemove: true,
47
50
  valueFormat: 'YYYY-MM-DD',
51
+ maskOptions: (0, kit_1.maskitoDateOptionsGenerator)({ mode: 'dd/mm/yyyy', separator: '.' }),
48
52
  size: 'md'
49
53
  };
50
54
  exports["default"] = (0, fieldWrapper_1["default"])('DateField', DateField);
@@ -1,6 +1,16 @@
1
1
  import * as React from 'react';
2
- import { ChangeEventHandler, ReactNode } from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { MaskitoOptions } from '@maskito/core';
3
4
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
5
+ export declare const MASK_PRESETS: {
6
+ date: MaskitoOptions;
7
+ phone: {
8
+ mask: (string | RegExp)[];
9
+ };
10
+ card: {
11
+ mask: any[];
12
+ };
13
+ };
4
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;
5
15
  export interface IBaseFieldProps extends IFieldWrapperInputProps, IUiComponent {
6
16
  /**
@@ -53,13 +63,19 @@ export interface IInputFieldProps extends IBaseFieldProps {
53
63
  addonAfter?: ReactNode | string;
54
64
  /**
55
65
  * Конфигурация маски
56
- * @example { mask: '+7 (999) 999-99-99' }
66
+ * @example: {
67
+ mask: [
68
+ ...Array(4).fill(/\d/),
69
+ '-',
70
+ ...Array(4).fill(/\d/),
71
+ '-',
72
+ ...Array(4).fill(/\d/),
73
+ '-',
74
+ ...Array(4).fill(/\d/),
75
+ ],
76
+ }
57
77
  */
58
- maskProps?: {
59
- mask?: string;
60
- maskPlaceholder?: string;
61
- alwaysShowMask?: boolean;
62
- };
78
+ maskOptions?: MaskitoOptions;
63
79
  /**
64
80
  * Пользовательская иконка svg или название иконки
65
81
  */
@@ -69,7 +85,7 @@ export interface IInputFieldViewProps extends IInputFieldProps, IFieldWrapperOut
69
85
  inputProps: {
70
86
  type: string;
71
87
  name: string;
72
- onChange: ChangeEventHandler<Element>;
88
+ onChange: (value: any) => void;
73
89
  value: string | number;
74
90
  placeholder: string;
75
91
  disabled: string;
@@ -78,6 +94,8 @@ export interface IInputFieldViewProps extends IInputFieldProps, IFieldWrapperOut
78
94
  onFocus?: (e: Event | React.FocusEvent) => void;
79
95
  onBlur?: (e: Event | React.FocusEvent) => void;
80
96
  onMouseDown?: (e: Event | React.MouseEvent) => void;
97
+ maskedInputRef?: React.RefCallback<HTMLElement>;
98
+ defaultValue?: string;
81
99
  }
82
100
  declare const _default: import("../Field/fieldWrapper").FieldWrapperComponent<IInputFieldProps>;
83
101
  export default _default;
@@ -33,17 +33,48 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
33
  __setModuleDefault(result, mod);
34
34
  return result;
35
35
  };
36
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
37
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
38
+ if (ar || !(i in from)) {
39
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
40
+ ar[i] = from[i];
41
+ }
42
+ }
43
+ return to.concat(ar || Array.prototype.slice.call(from));
44
+ };
36
45
  var __importDefault = (this && this.__importDefault) || function (mod) {
37
46
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
47
  };
39
48
  exports.__esModule = true;
49
+ exports.MASK_PRESETS = void 0;
40
50
  var React = __importStar(require("react"));
41
- var react_input_mask_1 = __importDefault(require("react-input-mask"));
42
51
  var react_1 = require("react");
52
+ var react_2 = require("@maskito/react");
53
+ var kit_1 = require("@maskito/kit");
43
54
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
44
55
  var hooks_1 = require("../../../hooks");
56
+ exports.MASK_PRESETS = {
57
+ date: (0, kit_1.maskitoDateOptionsGenerator)({
58
+ mode: 'dd/mm/yyyy'
59
+ }),
60
+ phone: {
61
+ mask: ['+', '7', ' ', '(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
62
+ },
63
+ card: {
64
+ mask: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], Array(4).fill(/\d/), true), [
65
+ '-'
66
+ ], false), Array(4).fill(/\d/), true), [
67
+ '-'
68
+ ], false), Array(4).fill(/\d/), true), [
69
+ '-'
70
+ ], false), Array(4).fill(/\d/), true)
71
+ }
72
+ };
45
73
  function InputField(props) {
46
74
  var components = (0, hooks_1.useComponents)();
75
+ var maskedInputRef = (0, react_2.useMaskito)({
76
+ options: props.maskOptions
77
+ });
47
78
  var onClear = React.useCallback(function () { return props.input.onChange(''); }, [props.input]);
48
79
  props.onClear = onClear;
49
80
  var inputProps = (0, react_1.useMemo)(function () {
@@ -54,12 +85,7 @@ function InputField(props) {
54
85
  if (props.type === 'hidden') {
55
86
  return null;
56
87
  }
57
- // react-input-mask HOC for mask
58
- if (props.maskProps) {
59
- var maskOnChange = function (e) { return props.input.onChange(e.target.value); };
60
- return (React.createElement(react_input_mask_1["default"], __assign({}, inputProps, props.maskProps, { onChange: maskOnChange }), components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps, onChange: maskOnChange }))));
61
- }
62
- return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps }));
88
+ return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps, maskedInputRef: maskedInputRef }));
63
89
  }
64
90
  InputField.defaultProps = {
65
91
  type: 'text',
@@ -1,7 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { IInputFieldProps } from '../InputField/InputField';
3
- export interface IMaskFieldProps extends IInputFieldProps {
4
- mask?: string;
5
- }
3
+ export type IMaskFieldProps = IInputFieldProps;
6
4
  declare function MaskField(props: IMaskFieldProps): JSX.Element;
7
5
  export default MaskField;
@@ -29,6 +29,6 @@ var react_1 = __importDefault(require("react"));
29
29
  var InputField_1 = __importDefault(require("../InputField/InputField"));
30
30
  function MaskField(props) {
31
31
  var mask = props.mask, maskProps = props.maskProps, inputProps = __rest(props, ["mask", "maskProps"]);
32
- return (react_1["default"].createElement(InputField_1["default"], __assign({}, inputProps, { maskProps: __assign({ mask: mask }, maskProps) })));
32
+ return (react_1["default"].createElement(InputField_1["default"], __assign({}, inputProps, { maskOptions: props.maskOptions })));
33
33
  }
34
34
  exports["default"] = MaskField;