@steroidsjs/core 3.0.0-beta.29 → 3.0.0-beta.31

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/index.d.ts CHANGED
@@ -89,3 +89,22 @@ declare type CustomIcon = string | React.ReactElement;
89
89
  * HTTP метод
90
90
  */
91
91
  declare type HttpMethod = 'get' | 'post' | 'put' | 'delete' | string;
92
+
93
+ declare interface IUiComponent {
94
+ /**
95
+ * Переопределение view React компонента для кастомизации отображения
96
+ * @example MyCustomView
97
+ */
98
+ view?: CustomView;
99
+
100
+ /**
101
+ * Дополнительный CSS-класс для элемента отображения
102
+ */
103
+ className?: CssClassName;
104
+
105
+ /**
106
+ * Объект CSS стилей
107
+ * @example {width: '45%'}
108
+ */
109
+ style?: CustomStyle;
110
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.0-beta.29",
3
+ "version": "3.0.0-beta.31",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { IDataProviderConfig } from '../../../hooks/useDataProvider';
3
3
  import { IDataSelectConfig } from '../../../hooks/useDataSelect';
4
- import { IInputFieldProps } from '../InputField/InputField';
4
+ import { IBaseFieldProps } from '../InputField/InputField';
5
5
  export interface IAutoCompleteItem {
6
6
  id: number | string | boolean;
7
7
  label?: string;
@@ -16,13 +16,12 @@ export interface IAutoCompleteItem {
16
16
  * AutoComplete
17
17
  * Поле ввода текста с подсказками (auto-complete)
18
18
  */
19
- export interface IAutoCompleteFieldProps extends IInputFieldProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'> {
19
+ export interface IAutoCompleteFieldProps extends IBaseFieldProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'> {
20
20
  /**
21
21
  * При фокусировке на поле ввода будет запускаться поиск
22
22
  * @example true
23
23
  */
24
24
  searchOnFocus?: boolean;
25
- [key: string]: any;
26
25
  }
27
26
  export interface IAutoCompleteFieldViewProps extends Omit<IAutoCompleteFieldProps, 'items'> {
28
27
  items: IAutoCompleteItem[];
@@ -100,7 +100,6 @@ AutoCompleteField.defaultProps = {
100
100
  multiple: false,
101
101
  disabled: false,
102
102
  required: false,
103
- className: '',
104
103
  size: 'md'
105
104
  };
106
105
  exports["default"] = (0, fieldWrapper_1["default"])('AutoCompleteField', AutoCompleteField);
@@ -44,6 +44,7 @@ export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
44
44
  selectedIds: (PrimaryKey | any)[];
45
45
  onItemSelect: (id: PrimaryKey | any) => void;
46
46
  orientation?: Orientation;
47
+ disabled?: boolean;
47
48
  renderCheckbox: (checkboxProps: ICheckboxFieldViewProps) => JSX.Element;
48
49
  }
49
50
  declare const _default: import("../../../ui/form/Field/fieldWrapper").FieldWrapperComponent<ICheckboxListFieldProps>;
@@ -84,7 +84,7 @@ CheckboxListField.defaultProps = {
84
84
  disabled: false,
85
85
  required: false,
86
86
  className: '',
87
- multiple: false,
87
+ multiple: true,
88
88
  orientation: 'vertical'
89
89
  };
90
90
  exports["default"] = (0, fieldWrapper_1["default"])('CheckboxListField', CheckboxListField);
@@ -2,48 +2,35 @@ import * as React from 'react';
2
2
  import { ChangeEventHandler, ReactNode } from 'react';
3
3
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
4
4
  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
- /**
6
- * InputField
7
- * Поле ввода текста
8
- */
9
- export interface IInputFieldProps extends IFieldWrapperInputProps {
10
- /**
11
- * HTML Тип
12
- * @example email
13
- */
14
- type?: IElementInputType;
15
- /**
16
- * Placeholder подсказка
17
- * @example Your text...
18
- */
19
- placeholder?: string;
5
+ export interface IBaseFieldProps extends IFieldWrapperInputProps, IUiComponent {
20
6
  /**
21
7
  * Свойства для элемента \<input /\>
22
8
  * @example {onKeyDown: ...}
23
9
  */
24
10
  inputProps?: any;
25
11
  /**
26
- * Дополнительный CSS-класс для элемента отображения
27
- */
28
- className?: CssClassName;
29
- /**
30
- * Переопределение view React компонента для кастомизации отображения
31
- * @example MyCustomView
32
- */
33
- view?: CustomView;
34
- /**
35
- */
36
- viewProps?: any;
12
+ * Показывать иконку очищения поля
13
+ * @example {'true'}
14
+ */
15
+ showClear?: boolean;
37
16
  /**
38
- * Размер Input
39
- * @example 'large'
17
+ * Свойства для компонента отображения
18
+ * @example {customHandler: () => {...}}
40
19
  */
41
- size?: Size;
20
+ viewProps?: {
21
+ [key: string]: any;
22
+ };
23
+ }
24
+ /**
25
+ * InputField
26
+ * Поле ввода текста
27
+ */
28
+ export interface IInputFieldProps extends IBaseFieldProps {
42
29
  /**
43
- * Объект CSS стилей
44
- * @example {width: '45%'}
30
+ * HTML Тип
31
+ * @example email
45
32
  */
46
- style?: CustomStyle;
33
+ type?: IElementInputType;
47
34
  /**
48
35
  * Изображение или React-нода, которая будет отрендерена слева от поля.
49
36
  * @example require('icon.png') | <component/>
@@ -73,18 +60,10 @@ export interface IInputFieldProps extends IFieldWrapperInputProps {
73
60
  maskPlaceholder?: string;
74
61
  alwaysShowMask?: boolean;
75
62
  };
76
- /**
77
- * Показывать иконку очищения поля
78
- * @example {'true'}
79
- */
80
- showClear?: boolean;
81
63
  /**
82
64
  * Пользовательская иконка svg или название иконки
83
65
  */
84
66
  leadIcon?: React.ReactElement | string;
85
- success?: boolean;
86
- failed?: boolean;
87
- [key: string]: any;
88
67
  }
89
68
  export interface IInputFieldViewProps extends IInputFieldProps, IFieldWrapperOutputProps {
90
69
  inputProps: {
@@ -66,14 +66,6 @@ InputField.defaultProps = {
66
66
  size: 'md',
67
67
  disabled: false,
68
68
  required: false,
69
- className: '',
70
- placeholder: '',
71
- errors: null,
72
- showClear: false,
73
- successful: false,
74
- textBefore: null,
75
- textAfter: null,
76
- addonBefore: null,
77
- addonAfter: null
69
+ showClear: false
78
70
  };
79
71
  exports["default"] = (0, fieldWrapper_1["default"])('InputField', InputField);
@@ -1,10 +1,10 @@
1
- import { IInputFieldProps } from '../InputField/InputField';
2
- import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
1
+ import { IBaseFieldProps } from '../InputField/InputField';
2
+ import { IFieldWrapperOutputProps } from '../Field/fieldWrapper';
3
3
  /**
4
4
  * NumberField
5
5
  * Числовое поле ввода
6
6
  */
7
- export interface INumberFieldProps extends IInputFieldProps, IFieldWrapperInputProps {
7
+ export interface INumberFieldProps extends IBaseFieldProps {
8
8
  /**
9
9
  * Минимальное значение
10
10
  * @example 1
@@ -20,7 +20,6 @@ export interface INumberFieldProps extends IInputFieldProps, IFieldWrapperInputP
20
20
  * @example 5
21
21
  */
22
22
  step?: string | number;
23
- [key: string]: any;
24
23
  }
25
24
  export interface INumberFieldViewProps extends INumberFieldProps, IFieldWrapperOutputProps {
26
25
  inputProps: {
@@ -28,12 +28,6 @@ function NumberField(props) {
28
28
  NumberField.defaultProps = {
29
29
  disabled: false,
30
30
  required: false,
31
- className: '',
32
- placeholder: '',
33
- min: null,
34
- max: null,
35
- step: null,
36
- errors: null,
37
31
  size: 'md'
38
32
  };
39
33
  exports["default"] = (0, fieldWrapper_1["default"])('NumberField', NumberField);
@@ -1,11 +1,11 @@
1
- import * as React from 'react';
2
- import { IInputFieldProps } from '../InputField/InputField';
1
+ import { ChangeEvent } from 'react';
2
+ import { IBaseFieldProps } from '../InputField/InputField';
3
3
  import { IFieldWrapperOutputProps } from '../Field/fieldWrapper';
4
4
  /**
5
5
  * PasswordField
6
6
  * Поле ввода пароля
7
7
  */
8
- export interface IPasswordFieldProps extends IInputFieldProps {
8
+ export interface IPasswordFieldProps extends IBaseFieldProps {
9
9
  /**
10
10
  * Если true, то отображается шкала сложности пароля
11
11
  * @example true
@@ -15,19 +15,16 @@ export interface IPasswordFieldProps extends IInputFieldProps {
15
15
  * Если true, то отображается иконка скрытия/показа пароля
16
16
  */
17
17
  showSecurityIcon?: boolean;
18
- [key: string]: any;
19
18
  }
20
19
  export interface IPasswordFieldViewProps extends IPasswordFieldProps, IFieldWrapperOutputProps {
21
20
  inputProps: {
22
21
  type: string;
23
22
  name: string;
24
- onChange: (value: Event | React.ChangeEvent) => void;
23
+ onChange: (value: Event | ChangeEvent) => void;
25
24
  value: string | number;
26
25
  placeholder: string;
27
26
  disabled: boolean;
28
27
  };
29
- errors?: string[];
30
- className?: CssClassName;
31
28
  onClear?: () => void;
32
29
  securityLevel?: 'success' | 'warning' | 'danger';
33
30
  onShowPassword: () => void;
@@ -10,35 +10,11 @@ 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
17
  exports.checkPassword = void 0;
41
- var React = __importStar(require("react"));
42
18
  var react_1 = require("react");
43
19
  var hooks_1 = require("../../../hooks");
44
20
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
@@ -73,7 +49,7 @@ exports.checkPassword = checkPassword;
73
49
  function PasswordField(props) {
74
50
  var _a = (0, react_1.useState)('password'), type = _a[0], setType = _a[1];
75
51
  var components = (0, hooks_1.useComponents)();
76
- var onClear = React.useCallback(function () { return props.input.onChange(''); }, [props.input]);
52
+ var onClear = (0, react_1.useCallback)(function () { return props.input.onChange(''); }, [props.input]);
77
53
  props.inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, value: props.input.value || '', onChange: function (e) { return props.input.onChange(e.target ? e.target.value : e.nativeEvent.text); }, type: type, placeholder: props.placeholder, disabled: props.disabled }, props.inputProps)); }, [props.disabled, props.input, props.inputProps, props.placeholder, type]);
78
54
  props.securityLevel = props.showSecurityBar ? (0, exports.checkPassword)(props.input.value) : null;
79
55
  props.onShowPassword = function () { return setType('text'); };
@@ -86,9 +62,6 @@ PasswordField.defaultProps = {
86
62
  showSecurityBar: false,
87
63
  showSecurityIcon: true,
88
64
  required: false,
89
- className: '',
90
- placeholder: '',
91
- errors: null,
92
65
  size: 'md'
93
66
  };
94
67
  exports["default"] = (0, fieldWrapper_1["default"])('PasswordField', PasswordField);
@@ -44,6 +44,7 @@ export interface IRadioListFieldViewProps extends IFieldWrapperOutputProps {
44
44
  selectedIds: (PrimaryKey | any)[];
45
45
  className?: CssClassName;
46
46
  orientation?: Orientation;
47
+ disabled?: boolean;
47
48
  size?: Size;
48
49
  onItemSelect: (id: PrimaryKey | any) => void;
49
50
  renderRadio: (radioProps: IRadioFieldViewProps) => JSX.Element;
@@ -1,45 +1,21 @@
1
- import * as React from 'react';
2
- import { KeyboardEventHandler } from 'react';
3
- import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
1
+ import { ChangeEvent, KeyboardEventHandler } from 'react';
2
+ import { IFieldWrapperOutputProps } from '../Field/fieldWrapper';
3
+ import { IBaseFieldProps } from '../InputField/InputField';
4
4
  /**
5
5
  * TextField
6
6
  * Поле для ввода нескольких строк теста
7
7
  */
8
- export interface ITextFieldProps extends IFieldWrapperInputProps {
9
- /**
10
- * Placeholder подсказка
11
- * @example Your text...
12
- */
13
- placeholder?: string;
8
+ export interface ITextFieldProps extends IBaseFieldProps {
14
9
  /**
15
10
  * Отправлять форму при нажатии на кнопку `enter`
16
11
  * @example true
17
12
  */
18
13
  submitOnEnter?: boolean;
19
- /**
20
- * Свойства для элемента \<input /\>
21
- * @example {onKeyDown: ...}
22
- */
23
- inputProps?: any;
24
- /**
25
- * Дополнительный CSS-класс для тега \<textarea\>
26
- */
27
- className?: CssClassName;
28
- /**
29
- * Переопределение view React компонента для кастомизации отображения
30
- * @example MyCustomView
31
- */
32
- view?: CustomView;
33
- /**
34
- * Отображение кнопки очищения поля
35
- */
36
- showClear?: boolean;
37
- [key: string]: any;
38
14
  }
39
15
  export interface ITextFieldViewProps extends ITextFieldProps, IFieldWrapperOutputProps {
40
16
  inputProps: {
41
17
  name: string;
42
- onChange: (value: string | React.ChangeEvent) => void;
18
+ onChange: (value: string | ChangeEvent) => void;
43
19
  onKeyUp: KeyboardEventHandler<HTMLTextAreaElement>;
44
20
  value: string | number;
45
21
  placeholder: string;
@@ -10,34 +10,10 @@ 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 = __importStar(require("react"));
41
17
  var react_1 = require("react");
42
18
  var hooks_1 = require("../../../hooks");
43
19
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
@@ -55,16 +31,13 @@ function TextField(props) {
55
31
  }
56
32
  }, [props.formId, props.submitOnEnter]);
57
33
  var onChange = (0, react_1.useCallback)(function (e) { return props.input.onChange.call(null, e.target ? e.target.value : e.nativeEvent.text); }, [props.input.onChange]);
58
- var onClear = React.useCallback(function () { return props.input.onChange(''); }, [props.input]);
34
+ var onClear = (0, react_1.useCallback)(function () { return props.input.onChange(''); }, [props.input]);
59
35
  var inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, value: props.input.value || '', onChange: onChange, onKeyUp: onKeyUp, placeholder: props.placeholder, disabled: props.disabled }, props.inputProps)); }, [onKeyUp, onChange, props.disabled, props.input.name, props.input.value, props.inputProps, props.placeholder]);
60
36
  return components.ui.renderView(props.view || 'form.TextFieldView', __assign(__assign({}, props), { inputProps: inputProps, onClear: onClear }));
61
37
  }
62
38
  TextField.defaultProps = {
63
39
  disabled: false,
64
40
  required: false,
65
- className: '',
66
- placeholder: '',
67
- submitOnEnter: false,
68
- errors: null
41
+ submitOnEnter: false
69
42
  };
70
43
  exports["default"] = (0, fieldWrapper_1["default"])('TextField', TextField);
@@ -34,6 +34,7 @@ export interface IListViewProps extends Omit<IListProps, 'onFetch'>, Omit<IListO
34
34
  }
35
35
  export interface IListItemViewProps {
36
36
  id: PrimaryKey;
37
+ primaryKey: PrimaryKey;
37
38
  item: {
38
39
  id?: PrimaryKey;
39
40
  title?: string | any;
@@ -17,31 +17,31 @@ var hooks_1 = require("../../../hooks");
17
17
  function Controls(props) {
18
18
  var defaultItems = {
19
19
  index: {
20
- icon: 'comeback',
20
+ icon: 'left_12x12',
21
21
  label: __('К списку'),
22
22
  color: 'secondary',
23
23
  outline: true
24
24
  },
25
25
  create: {
26
- icon: 'add1',
26
+ icon: 'add_square',
27
27
  label: __('Добавить'),
28
28
  color: 'success',
29
29
  outline: true
30
30
  },
31
31
  view: {
32
- icon: 'show',
32
+ icon: 'view',
33
33
  label: __('Просмотр'),
34
34
  color: 'secondary',
35
35
  outline: true
36
36
  },
37
37
  update: {
38
- icon: 'edit1',
38
+ icon: 'edit',
39
39
  label: __('Редактировать'),
40
40
  color: 'secondary',
41
41
  outline: true
42
42
  },
43
43
  "delete": {
44
- icon: 'remove',
44
+ icon: 'cancel_ellips',
45
45
  label: __('Удалить'),
46
46
  confirm: __('Удалить запись?'),
47
47
  color: 'danger',