@steroidsjs/core 3.0.0 → 3.0.2

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.
Files changed (85) hide show
  1. package/docs-autogen-result.json +144 -47
  2. package/en.json +8 -2
  3. package/hooks/useApplication.d.ts +1 -1
  4. package/package.json +1 -1
  5. package/ui/content/DropDown/DropDown.js +1 -3
  6. package/ui/content/Kanban/Kanban.d.ts +7 -1
  7. package/ui/content/Kanban/Kanban.js +2 -1
  8. package/ui/content/Kanban/hooks/useKanban.d.ts +6 -0
  9. package/ui/content/Kanban/hooks/useKanban.js +2 -1
  10. package/ui/form/AutoCompleteField/AutoCompleteField.d.ts +1 -2
  11. package/ui/form/AutoCompleteField/AutoCompleteField.js +24 -11
  12. package/ui/form/Button/Button.d.ts +1 -1
  13. package/ui/form/Button/Button.js +29 -5
  14. package/ui/form/CheckboxField/CheckboxField.d.ts +1 -1
  15. package/ui/form/CheckboxField/CheckboxField.js +13 -4
  16. package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -1
  17. package/ui/form/CheckboxListField/CheckboxListField.js +13 -4
  18. package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +1 -1
  19. package/ui/form/CheckboxTreeField/CheckboxTreeField.js +9 -1
  20. package/ui/form/DateField/DateField.d.ts +4 -3
  21. package/ui/form/DateField/DateField.js +4 -1
  22. package/ui/form/DateRangeField/DateRangeField.js +18 -13
  23. package/ui/form/DateTimeField/DateTimeField.d.ts +1 -1
  24. package/ui/form/DateTimeField/DateTimeField.js +19 -1
  25. package/ui/form/DateTimeRangeField/DateTimeRangeField.js +20 -1
  26. package/ui/form/DropDownField/DropDownField.js +34 -2
  27. package/ui/form/EmailField/EmailField.js +53 -3
  28. package/ui/form/Field/Field.js +3 -3
  29. package/ui/form/FieldLayout/FieldLayout.js +12 -12
  30. package/ui/form/FieldList/FieldList.d.ts +1 -1
  31. package/ui/form/FieldList/FieldList.js +7 -6
  32. package/ui/form/FieldSet/FieldSet.js +6 -1
  33. package/ui/form/FileField/FileField.js +13 -3
  34. package/ui/form/Form/Form.d.ts +1 -1
  35. package/ui/form/Form/Form.js +12 -14
  36. package/ui/form/HtmlField/HtmlField.d.ts +20 -1
  37. package/ui/form/HtmlField/HtmlField.js +11 -12
  38. package/ui/form/ImageField/ImageField.js +12 -8
  39. package/ui/form/InputField/InputField.js +24 -3
  40. package/ui/form/MaskField/MaskField.js +1 -13
  41. package/ui/form/NavField/NavField.js +12 -2
  42. package/ui/form/NumberField/NumberField.js +16 -3
  43. package/ui/form/PasswordField/PasswordField.js +15 -2
  44. package/ui/form/RadioField/RadioField.d.ts +1 -1
  45. package/ui/form/RadioField/RadioField.js +15 -4
  46. package/ui/form/RadioListField/RadioListField.d.ts +2 -1
  47. package/ui/form/RadioListField/RadioListField.js +14 -4
  48. package/ui/form/RateField/RateField.js +11 -1
  49. package/ui/form/ReCaptchaField/ReCaptchaField.js +6 -12
  50. package/ui/form/SliderField/SliderField.d.ts +1 -1
  51. package/ui/form/SliderField/SliderField.js +5 -3
  52. package/ui/form/SwitcherField/SwitcherField.d.ts +1 -1
  53. package/ui/form/SwitcherField/SwitcherField.js +14 -4
  54. package/ui/form/TextField/TextField.js +2 -1
  55. package/ui/form/TimeField/TimeField.js +3 -1
  56. package/ui/form/TimeRangeField/TimeRangeField.js +4 -1
  57. package/ui/layout/Notifications/Notifications.d.ts +1 -1
  58. package/ui/layout/Notifications/Notifications.js +7 -3
  59. package/ui/layout/ProgressBar/ProgressBar.d.ts +1 -1
  60. package/ui/layout/ProgressBar/ProgressBar.js +24 -24
  61. package/ui/layout/Sidebar/Sidebar.js +16 -12
  62. package/ui/list/ControlsColumn/ControlsColumn.js +7 -1
  63. package/ui/list/Grid/Grid.d.ts +1 -1
  64. package/ui/list/Grid/Grid.js +33 -8
  65. package/ui/list/LayoutNames/LayoutNames.d.ts +1 -1
  66. package/ui/list/LayoutNames/LayoutNames.js +2 -3
  67. package/ui/list/List/List.js +19 -4
  68. package/ui/list/Pagination/Pagination.d.ts +1 -1
  69. package/ui/list/Pagination/Pagination.js +22 -6
  70. package/ui/list/PaginationSize/PaginationSize.d.ts +1 -1
  71. package/ui/list/PaginationSize/PaginationSize.js +10 -4
  72. package/ui/modal/Modal/Modal.d.ts +2 -2
  73. package/ui/modal/Modal/Modal.js +16 -3
  74. package/ui/modal/ModalPortal/ModalPortal.js +2 -3
  75. package/ui/nav/Breadcrumbs/Breadcrumbs.js +10 -12
  76. package/ui/nav/ButtonGroup/ButtonGroup.js +19 -38
  77. package/ui/nav/Controls/Controls.js +6 -1
  78. package/ui/nav/Nav/Nav.d.ts +9 -1
  79. package/ui/nav/Nav/Nav.js +16 -7
  80. package/ui/nav/Router/Router.d.ts +2 -2
  81. package/ui/nav/Router/Router.js +17 -16
  82. package/ui/nav/Router/helpers.d.ts +1 -1
  83. package/ui/nav/Router/helpers.js +19 -16
  84. package/ui/nav/Tree/Tree.d.ts +3 -3
  85. package/ui/nav/Tree/Tree.js +11 -13
@@ -34,9 +34,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
34
34
  return result;
35
35
  };
36
36
  exports.__esModule = true;
37
- var React = __importStar(require("react"));
37
+ var react_1 = __importStar(require("react"));
38
38
  var react_redux_1 = require("react-redux");
39
- var react_1 = require("react");
40
39
  var router_1 = require("../../../actions/router");
41
40
  var router_2 = require("../../../reducers/router");
42
41
  var hooks_1 = require("../../../hooks");
@@ -56,7 +55,7 @@ function Button(props) {
56
55
  isLoading: false,
57
56
  isFailed: false
58
57
  }), _b = _a[0], isLoading = _b.isLoading, isFailed = _b.isFailed, setStateFlags = _a[1];
59
- React.useEffect(function () {
58
+ react_1["default"].useEffect(function () {
60
59
  setStateFlags({
61
60
  isLoading: props.isLoading,
62
61
  isFailed: props.isFailed
@@ -126,8 +125,33 @@ function Button(props) {
126
125
  }
127
126
  }
128
127
  }, [dispatch, props, tag]);
129
- var button = components.ui.renderView(props.view || 'form.ButtonView', __assign(__assign({}, props), { badge: badge, isFailed: isFailed, isLoading: isLoading, disabled: disabled, submitting: submitting, tag: tag, formId: (context === null || context === void 0 ? void 0 : context.formId) || null, url: url || (tag === 'a' ? '#' : null), onClick: !disabled ? onClick : undefined, children: props.label || props.children }));
130
- return button;
128
+ var viewProps = (0, react_1.useMemo)(function () { return ({
129
+ badge: badge,
130
+ isFailed: isFailed,
131
+ isLoading: isLoading,
132
+ disabled: disabled,
133
+ submitting: submitting,
134
+ tag: tag,
135
+ label: props.label,
136
+ hint: props.hint,
137
+ icon: props.icon,
138
+ link: props.link,
139
+ outline: props.outline,
140
+ color: props.color,
141
+ block: props.block,
142
+ target: props.target,
143
+ type: props.type,
144
+ size: props.size,
145
+ formId: (context === null || context === void 0 ? void 0 : context.formId) || null,
146
+ url: url || (tag === 'a' ? '#' : null),
147
+ onClick: !disabled ? onClick : undefined,
148
+ children: props.label || props.children,
149
+ className: props.className,
150
+ style: props.style
151
+ }); }, [badge, context === null || context === void 0 ? void 0 : context.formId, disabled, isFailed, isLoading, onClick, props.block,
152
+ props.children, props.className, props.color, props.hint, props.icon, props.label,
153
+ props.link, props.outline, props.size, props.style, props.target, props.type, submitting, tag, url]);
154
+ return components.ui.renderView(props.view || 'form.ButtonView', viewProps);
131
155
  }
132
156
  Button.defaultProps = {
133
157
  type: 'button',
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
3
3
  /**
4
4
  * CheckboxField
@@ -37,14 +37,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  exports.__esModule = true;
40
- var React = __importStar(require("react"));
41
- var react_1 = require("react");
40
+ var react_1 = __importStar(require("react"));
42
41
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
43
42
  var hooks_1 = require("../../../hooks");
44
43
  function CheckboxField(props) {
45
44
  var _a, _b;
46
45
  var components = (0, hooks_1.useComponents)();
47
- var onChangeHandler = React.useCallback(function () {
46
+ var onChangeHandler = react_1["default"].useCallback(function () {
48
47
  var _a;
49
48
  props.input.onChange(!((_a = props.input) === null || _a === void 0 ? void 0 : _a.value));
50
49
  if (props.onChange) {
@@ -55,7 +54,17 @@ function CheckboxField(props) {
55
54
  var _a, _b;
56
55
  return (__assign({ name: (_a = props.input) === null || _a === void 0 ? void 0 : _a.name, type: 'checkbox', checked: !!((_b = props.input) === null || _b === void 0 ? void 0 : _b.value), onChange: onChangeHandler, disabled: props.disabled, required: props.required }, props.inputProps));
57
56
  }, [onChangeHandler, props.disabled, (_a = props.input) === null || _a === void 0 ? void 0 : _a.name, (_b = props.input) === null || _b === void 0 ? void 0 : _b.value, props.inputProps, props.required]);
58
- return components.ui.renderView(props.view || 'form.CheckboxFieldView', __assign(__assign({}, props), { inputProps: inputProps }));
57
+ var viewProps = (0, react_1.useMemo)(function () { return ({
58
+ inputProps: inputProps,
59
+ color: props.color,
60
+ size: props.size,
61
+ errors: props.errors,
62
+ className: props.className,
63
+ style: props.style,
64
+ id: props.id,
65
+ label: props.label
66
+ }); }, [inputProps, props.className, props.color, props.errors, props.id, props.label, props.size, props.style]);
67
+ return components.ui.renderView(props.view || 'form.CheckboxFieldView', viewProps);
59
68
  }
60
69
  CheckboxField.defaultProps = {
61
70
  disabled: false,
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import Enum from '../../../base/Enum';
3
3
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../../../ui/form/Field/fieldWrapper';
4
4
  import { IDataProviderConfig } from '../../../hooks/useDataProvider';
@@ -63,6 +63,7 @@ export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
63
63
  isSelected: boolean;
64
64
  isHovered: boolean;
65
65
  color?: string;
66
+ required?: boolean;
66
67
  }[];
67
68
  selectedIds: (PrimaryKey | any)[];
68
69
  onItemSelect: (id: PrimaryKey | any) => void;
@@ -37,8 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  exports.__esModule = true;
40
- var React = __importStar(require("react"));
41
- var react_1 = require("react");
40
+ var react_1 = __importStar(require("react"));
42
41
  var react_use_1 = require("react-use");
43
42
  var hooks_1 = require("../../../hooks");
44
43
  var fieldWrapper_1 = __importDefault(require("../../../ui/form/Field/fieldWrapper"));
@@ -80,8 +79,18 @@ function CheckboxListField(props) {
80
79
  }
81
80
  }, [onReset, prevInputValue, props.input.value, selectedIds.length]);
82
81
  var CheckboxFieldView = props.itemView || components.ui.getView('form.CheckboxFieldView');
83
- var renderCheckbox = function (checkboxProps) { return (React.createElement(CheckboxFieldView, __assign({}, checkboxProps))); };
84
- return components.ui.renderView(props.view || 'form.CheckboxListFieldView', __assign(__assign({}, props), { items: items, inputProps: inputProps, onItemSelect: onItemSelect, selectedIds: selectedIds, renderCheckbox: renderCheckbox }));
82
+ var renderCheckbox = function (checkboxProps) { return (react_1["default"].createElement(CheckboxFieldView, __assign({}, checkboxProps))); };
83
+ var viewProps = (0, react_1.useMemo)(function () { return ({
84
+ items: items,
85
+ inputProps: inputProps,
86
+ onItemSelect: onItemSelect,
87
+ selectedIds: selectedIds,
88
+ renderCheckbox: renderCheckbox,
89
+ orientation: props.orientation,
90
+ size: props.size,
91
+ disabled: props.disabled
92
+ }); }, [inputProps, items, onItemSelect, props.disabled, props.orientation, props.size, renderCheckbox, selectedIds]);
93
+ return components.ui.renderView(props.view || 'form.CheckboxListFieldView', viewProps);
85
94
  }
86
95
  CheckboxListField.defaultProps = {
87
96
  disabled: false,
@@ -19,7 +19,7 @@ type CheckboxTreeItems = string | ({
19
19
  *
20
20
  * Список с вложенными чекбоксами. Используется в формах для создания иерархической структуры и выбора нескольких значений.
21
21
  */
22
- export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent, Pick<ITreeProps, 'levelPadding' | 'alwaysOpened' | 'showIcon' | 'customIcon'> {
22
+ export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent, Pick<ITreeProps, 'levelPadding' | 'alwaysOpened' | 'customIcon'> {
23
23
  /**
24
24
  * Свойства для элемента input
25
25
  * @example { onKeyDown: ... }
@@ -113,7 +113,15 @@ function CheckboxTreeField(props) {
113
113
  }, [onReset, prevInputValue, props.input.value, selectedIds.length]);
114
114
  var CheckboxFieldView = components.ui.getView('form.CheckboxFieldView');
115
115
  var renderCheckbox = function (checkboxProps) { return (react_1["default"].createElement(CheckboxFieldView, __assign({}, checkboxProps))); };
116
- return components.ui.renderView(props.view || 'form.CheckboxTreeFieldView', __assign(__assign({}, props), { items: treeItems, onItemSelect: onItemSelect, selectedIds: selectedIds, renderCheckbox: renderCheckbox }));
116
+ var viewProps = (0, react_1.useMemo)(function () { return ({
117
+ items: treeItems,
118
+ onItemSelect: onItemSelect,
119
+ selectedIds: selectedIds,
120
+ renderCheckbox: renderCheckbox,
121
+ size: props.size,
122
+ levelPadding: props.levelPadding
123
+ }); }, [onItemSelect, props.levelPadding, props.size, renderCheckbox, selectedIds, treeItems]);
124
+ return components.ui.renderView(props.view || 'form.CheckboxTreeFieldView', viewProps);
117
125
  }
118
126
  CheckboxTreeField.defaultProps = {
119
127
  disabled: false,
@@ -1,5 +1,6 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { MaskitoOptions } from '@maskito/core';
3
+ import { IAbsolutePositioningInputProps } from '@steroidsjs/core/hooks/useAbsolutePositioning';
3
4
  import { ICalendarProps } from '../../content/Calendar/Calendar';
4
5
  import { IDateInputStateInput, IDateInputStateOutput } from './useDateInputState';
5
6
  /**
@@ -11,7 +12,7 @@ import { IDateInputStateInput, IDateInputStateOutput } from './useDateInputState
11
12
  * Он предоставляет пользователю удобный интерфейс для выбора даты с помощью календаря,
12
13
  * а также поддерживает настройку формата отображения даты и другие параметры.
13
14
  */
14
- export interface IDateFieldProps extends IDateInputStateInput, IUiComponent {
15
+ export interface IDateFieldProps extends IDateInputStateInput, IUiComponent, Pick<IAbsolutePositioningInputProps, 'autoPositioning'> {
15
16
  /**
16
17
  * Свойства для view компонента
17
18
  */
@@ -26,7 +27,7 @@ export interface IDateFieldProps extends IDateInputStateInput, IUiComponent {
26
27
  maskOptions?: MaskitoOptions;
27
28
  [key: string]: any;
28
29
  }
29
- export interface IDateFieldViewProps extends IDateInputStateOutput, Pick<IDateFieldProps, 'size' | 'icon' | 'errors' | 'showRemove' | 'className' | 'calendarProps'> {
30
+ export interface IDateFieldViewProps extends IDateInputStateOutput, Pick<IDateFieldProps, 'size' | 'icon' | 'errors' | 'showRemove' | 'className' | 'calendarProps' | 'autoPositioning'> {
30
31
  /**
31
32
  * Ref для input элемента, который накладывает маску
32
33
  */
@@ -39,7 +39,9 @@ function DateField(props) {
39
39
  }), onClear = _a.onClear, onClose = _a.onClose, isOpened = _a.isOpened, inputProps = _a.inputProps;
40
40
  // Calendar props
41
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]);
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 }));
42
+ var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { calendarProps: calendarProps, onClear: onClear, onClose: onClose, isOpened: isOpened, inputProps: inputProps, size: props.size, icon: props.icon, errors: props.errors, label: props.label, disabled: props.disabled, className: props.className, showRemove: props.showRemove, style: props.style, autoPositioning: props.autoPositioning, maskInputRef: maskInputRef })); }, [calendarProps, inputProps, isOpened, maskInputRef, onClear, onClose, props.className,
43
+ props.disabled, props.errors, props.icon, props.label, props.showRemove, props.size, props.style, props.viewProps]);
44
+ return components.ui.renderView(props.view || 'form.DateFieldView', viewProps);
43
45
  }
44
46
  DateField.defaultProps = {
45
47
  disabled: false,
@@ -47,6 +49,7 @@ DateField.defaultProps = {
47
49
  icon: true,
48
50
  required: false,
49
51
  showRemove: true,
52
+ autoPositioning: true,
50
53
  valueFormat: 'YYYY-MM-DD',
51
54
  maskOptions: (0, kit_1.maskitoDateOptionsGenerator)({
52
55
  mode: 'dd/mm/yyyy',
@@ -1,15 +1,4 @@
1
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
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -115,7 +104,24 @@ function DateRangeField(props) {
115
104
  showFooter: false
116
105
  }); }, [focus, props.inputFrom.onChange, props.inputFrom.value, props.inputTo.onChange,
117
106
  props.inputTo.value, props.valueFormat]);
118
- return components.ui.renderView(props.view || 'form.DateRangeFieldView', __assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, calendarProps: calendarProps, icon: props.icon, size: props.size, errorsTo: props.errorsTo, disabled: props.disabled, noBorder: props.noBorder, className: props.className, showRemove: props.showRemove, errorsFrom: props.errorsFrom, inputPropsTo: extendedInputPropsTo, inputPropsFrom: extendedInputPropsFrom, isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo, style: props.style }));
107
+ var viewProps = (0, react_1.useMemo)(function () { return ({
108
+ onClear: onClear,
109
+ onClose: onClose,
110
+ calendarProps: calendarProps,
111
+ icon: props.icon,
112
+ size: props.size,
113
+ disabled: props.disabled,
114
+ className: props.className,
115
+ showRemove: props.showRemove,
116
+ errorsFrom: props.errorsFrom,
117
+ errorsTo: props.errorsTo,
118
+ inputPropsTo: extendedInputPropsTo,
119
+ inputPropsFrom: extendedInputPropsFrom,
120
+ isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo,
121
+ style: props.style
122
+ }); }, [calendarProps, extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom, isOpenedTo, onClear,
123
+ onClose, props.className, props.disabled, props.errorsFrom, props.errorsTo, props.icon, props.showRemove, props.size, props.style]);
124
+ return components.ui.renderView(props.view || 'form.DateRangeFieldView', viewProps);
119
125
  }
120
126
  DateRangeField.defaultProps = {
121
127
  disabled: false,
@@ -126,7 +132,6 @@ DateRangeField.defaultProps = {
126
132
  showRemove: true,
127
133
  hasInitialFocus: false,
128
134
  icon: true,
129
- noBorder: false,
130
135
  size: 'md',
131
136
  maskOptions: {
132
137
  from: (0, kit_1.maskitoDateOptionsGenerator)({
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { MaskitoOptions } from '@maskito/core';
3
3
  import { ICalendarProps } from '../../content/Calendar/Calendar';
4
4
  import { IDateInputStateInput, IDateInputStateOutput } from '../../form/DateField/useDateInputState';
@@ -59,7 +59,25 @@ function DateTimeField(props) {
59
59
  value: timeValue,
60
60
  onSelect: onTimeSelect
61
61
  }); }, [onClose, onTimeSelect, timeValue]);
62
- return components.ui.renderView(props.view || 'form.DateTimeFieldView', __assign(__assign({}, props.viewProps), { isOpened: isOpened, onClear: onClear, onClose: onClose, inputProps: inputProps, calendarProps: calendarProps, timePanelViewProps: timePanelViewProps, size: props.size, icon: props.icon, label: props.label, errors: props.errors, className: props.className, showRemove: props.showRemove, isInvalid: props.isInvalid, disabled: props.disabled, style: props.style, maskInputRef: maskInputRef }));
62
+ var viewProps = (0, react_1.useMemo)(function () { return ({
63
+ isOpened: isOpened,
64
+ onClear: onClear,
65
+ onClose: onClose,
66
+ maskInputRef: maskInputRef,
67
+ inputProps: inputProps,
68
+ calendarProps: calendarProps,
69
+ timePanelViewProps: timePanelViewProps,
70
+ placeholder: props.placeholder,
71
+ size: props.size,
72
+ icon: props.icon,
73
+ errors: props.errors,
74
+ className: props.className,
75
+ showRemove: props.showRemove,
76
+ disabled: props.disabled,
77
+ style: props.style
78
+ }); }, [calendarProps, inputProps, isOpened, maskInputRef, onClear, onClose, props.className, props.disabled, props.errors, props.icon,
79
+ props.placeholder, props.showRemove, props.size, props.style, timePanelViewProps]);
80
+ return components.ui.renderView(props.view || 'form.DateTimeFieldView', viewProps);
63
81
  }
64
82
  DateTimeField.defaultProps = {
65
83
  disabled: false,
@@ -141,7 +141,26 @@ function DateTimeRangeField(props) {
141
141
  timeValueFrom,
142
142
  timeValueTo,
143
143
  ]);
144
- return components.ui.renderView(props.view || 'form.DateTimeRangeFieldView', __assign(__assign({}, props.viewProps), { onClear: onClear, onClose: onClose, calendarProps: calendarProps, timePanelViewProps: timePanelViewProps, icon: props.icon, size: props.size, errorsTo: props.errorsTo, className: props.className, showRemove: props.showRemove, errorsFrom: props.errorsFrom, inputPropsTo: extendedInputPropsTo, inputPropsFrom: extendedInputPropsFrom, isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo, disabled: props.disabled, noBorder: props.noBorder, style: props.style }));
144
+ var viewProps = (0, react_1.useMemo)(function () { return ({
145
+ onClear: onClear,
146
+ onClose: onClose,
147
+ calendarProps: calendarProps,
148
+ timePanelViewProps: timePanelViewProps,
149
+ icon: props.icon,
150
+ size: props.size,
151
+ errorsFrom: props.errorsFrom,
152
+ errorsTo: props.errorsTo,
153
+ className: props.className,
154
+ showRemove: props.showRemove,
155
+ inputPropsTo: extendedInputPropsTo,
156
+ inputPropsFrom: extendedInputPropsFrom,
157
+ isOpened: focus === 'from' ? isOpenedFrom : isOpenedTo,
158
+ disabled: props.disabled,
159
+ style: props.style
160
+ }); }, [calendarProps, extendedInputPropsFrom, extendedInputPropsTo, focus, isOpenedFrom, isOpenedTo, onClear, onClose,
161
+ props.className, props.disabled, props.errorsFrom, props.errorsTo, props.icon, props.showRemove, props.size,
162
+ props.style, timePanelViewProps]);
163
+ return components.ui.renderView(props.view || 'form.DateTimeRangeFieldView', viewProps);
145
164
  }
146
165
  DateTimeRangeField.defaultProps = {
147
166
  disabled: false,
@@ -199,10 +199,42 @@ function DropDownField(props) {
199
199
  }
200
200
  return renderItemView(item, 'default', null);
201
201
  };
202
- return components.ui.renderView(props.view || 'form.DropDownFieldView', __assign(__assign({}, props), { isAutoComplete: isAutoComplete, items: items, hoveredId: hoveredId, selectedIds: selectedIds, forwardedRef: forwardedRef, searchInputProps: searchInputProps, isOpened: isOpened, isLoading: isLoading, onOpen: onOpen, selectedItems: selectedItems,
202
+ var viewProps = (0, react_1.useMemo)(function () { return ({
203
+ isAutoComplete: isAutoComplete,
204
+ items: items,
205
+ hoveredId: hoveredId,
206
+ selectedIds: selectedIds,
207
+ forwardedRef: forwardedRef,
208
+ searchInputProps: searchInputProps,
209
+ isOpened: isOpened,
210
+ isLoading: isLoading,
211
+ onOpen: onOpen,
212
+ selectedItems: selectedItems,
203
213
  // TODO onFocus
204
214
  // TODO onBlur
205
- onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup, itemToSelectAll: normalizedItemToSelectAll }));
215
+ onReset: onReset,
216
+ onClose: onClose,
217
+ renderItem: renderItem,
218
+ onItemRemove: onItemRemove,
219
+ hasGroup: hasGroup,
220
+ multiple: props.multiple,
221
+ isSearchAutoFocus: props.isSearchAutoFocus,
222
+ itemToSelectAll: normalizedItemToSelectAll,
223
+ className: props.className,
224
+ style: props.style,
225
+ size: props.size,
226
+ color: props.color,
227
+ outline: props.outline,
228
+ placeholder: props.placeholder,
229
+ showReset: props.showReset,
230
+ showEllipses: props.showEllipses,
231
+ errors: props.errors,
232
+ disabled: props.disabled
233
+ }); }, [isAutoComplete, items, hoveredId, selectedIds, searchInputProps, isOpened, isLoading, onOpen,
234
+ selectedItems, onReset, onClose, renderItem, onItemRemove, hasGroup, props.multiple, props.isSearchAutoFocus,
235
+ props.className, props.style, props.size, props.color, props.outline, props.placeholder, props.showReset, props.showEllipses,
236
+ props.errors, props.disabled, normalizedItemToSelectAll]);
237
+ return components.ui.renderView(props.view || 'form.DropDownFieldView', viewProps);
206
238
  }
207
239
  DropDownField.defaultProps = {
208
240
  primaryKey: 'id',
@@ -10,12 +10,34 @@ 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
+ };
13
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
38
  };
16
39
  exports.__esModule = true;
17
- /* eslint-disable max-len */
18
- var react_1 = __importDefault(require("react"));
40
+ var react_1 = __importStar(require("react"));
19
41
  var hooks_1 = require("../../../hooks");
20
42
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
21
43
  var useInputTypeEmail_1 = __importDefault(require("./hooks/useInputTypeEmail"));
@@ -28,7 +50,35 @@ function EmailField(props) {
28
50
  var _a;
29
51
  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));
30
52
  }, [onInputChange, props.disabled, props.input.name, props.input.value, props.inputProps, props.placeholder, props.required]);
31
- return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign({}, props), { inputProps: inputProps, inputRef: currentInputRef, onClear: onClear }));
53
+ var viewProps = (0, react_1.useMemo)(function () { return ({
54
+ inputProps: inputProps,
55
+ inputRef: currentInputRef,
56
+ onClear: onClear,
57
+ size: props.size,
58
+ errors: props.errors,
59
+ leadIcon: props.leadIcon,
60
+ showClear: props.showClear,
61
+ disabled: props.disabled,
62
+ input: props.input,
63
+ addonAfter: props.addonAfter,
64
+ addonBefore: props.addonBefore,
65
+ textAfter: props.textAfter,
66
+ textBefore: props.textBefore,
67
+ placeholder: props.placeholder,
68
+ required: props.required,
69
+ id: props.id,
70
+ maskOptions: props.maskOptions,
71
+ maskProps: props.maskProps,
72
+ onBlur: props.onBlur,
73
+ onFocus: props.onFocus,
74
+ onMouseDown: props.onMouseDown,
75
+ className: props.className,
76
+ style: props.style
77
+ }); }, [inputProps, currentInputRef, onClear, props.size, props.errors, props.leadIcon, props.showClear,
78
+ props.disabled, props.input, props.addonAfter, props.addonBefore, props.textAfter, props.textBefore,
79
+ props.placeholder, props.required, props.id, props.maskOptions, props.maskProps, props.onBlur, props.onFocus,
80
+ props.onMouseDown, props.className, props.style]);
81
+ return components.ui.renderView(props.view || 'form.InputFieldView', viewProps);
32
82
  }
33
83
  EmailField.defaultProps = {
34
84
  size: 'md',
@@ -62,10 +62,10 @@ function Field(props) {
62
62
  var ComponentField = (0, isString_1["default"])(component)
63
63
  ? components.ui.getField("form.".concat(component))
64
64
  : component;
65
- var componentProps = __assign(__assign(__assign(__assign({}, fieldModel), props), fieldModel.fieldProps), fieldModel.searchFieldProps);
65
+ var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign(__assign(__assign({}, fieldModel), props), fieldModel.fieldProps), fieldModel.searchFieldProps)); }, [fieldModel, props]);
66
66
  // Render
67
67
  return (0, isFunction_1["default"])(ComponentField)
68
- ? ComponentField(componentProps)
69
- : React.createElement(ComponentField, __assign({}, componentProps));
68
+ ? ComponentField(viewProps)
69
+ : React.createElement(ComponentField, __assign({}, viewProps));
70
70
  }
71
71
  exports["default"] = React.memo(Field);
@@ -1,15 +1,4 @@
1
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
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -39,11 +28,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
28
  exports.__esModule = true;
40
29
  var React = __importStar(require("react"));
41
30
  var get_1 = __importDefault(require("lodash-es/get"));
31
+ var react_1 = require("react");
42
32
  var hooks_1 = require("../../../hooks");
43
33
  function FieldLayout(props) {
44
34
  var components = (0, hooks_1.useComponents)();
45
35
  // Error from state
46
36
  var errors = (0, hooks_1.useForm)().formSelector(function (state) { return (0, get_1["default"])(state, 'errors.' + props.attribute); });
47
- return components.ui.renderView(props.view || 'form.FieldLayoutView', __assign(__assign({}, props), { errors: props.errors || errors }));
37
+ var viewProps = (0, react_1.useMemo)(function () { return ({
38
+ errors: props.errors || errors,
39
+ className: props.className,
40
+ label: props.label,
41
+ id: props.id,
42
+ required: props.required,
43
+ size: props.size,
44
+ children: props.children,
45
+ hint: props.hint
46
+ }); }, [errors, props.children, props.className, props.errors, props.hint, props.id, props.label, props.required, props.size]);
47
+ return components.ui.renderView(props.view || 'form.FieldLayoutView', viewProps);
48
48
  }
49
49
  exports["default"] = React.memo(FieldLayout);
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../../form/Field/fieldWrapper';
3
3
  export interface IFieldListItem extends IFieldWrapperInputProps, IUiComponent {
4
4
  /**
@@ -46,7 +46,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
46
46
  return (mod && mod.__esModule) ? mod : { "default": mod };
47
47
  };
48
48
  exports.__esModule = true;
49
- var React = __importStar(require("react"));
49
+ var react_1 = __importStar(require("react"));
50
50
  var isBoolean_1 = __importDefault(require("lodash-es/isBoolean"));
51
51
  var range_1 = __importDefault(require("lodash-es/range"));
52
52
  var concat_1 = __importDefault(require("lodash-es/concat"));
@@ -54,7 +54,6 @@ var last_1 = __importDefault(require("lodash-es/last"));
54
54
  var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
55
55
  var get_1 = __importDefault(require("lodash-es/get"));
56
56
  var react_use_1 = require("react-use");
57
- var react_1 = require("react");
58
57
  var hooks_1 = require("../../../hooks");
59
58
  var Form_1 = require("../../form/Form/Form");
60
59
  var form_1 = require("../../../actions/form");
@@ -120,7 +119,7 @@ function FieldList(props) {
120
119
  provider: context.provider,
121
120
  reducer: context.reducer
122
121
  }); }, [context.provider, context.reducer, props.formId, props.model, props.prefix, props.size]);
123
- var commonProps = {
122
+ var commonProps = (0, react_1.useMemo)(function () { return ({
124
123
  showAdd: props.showAdd,
125
124
  showRemove: props.showRemove,
126
125
  size: props.size,
@@ -129,11 +128,13 @@ function FieldList(props) {
129
128
  className: props.className,
130
129
  tableClassName: props.tableClassName,
131
130
  items: items
132
- };
131
+ }); }, [items, props.className, props.disabled, props.required, props.showAdd, props.showRemove, props.size, props.tableClassName]);
132
+ var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign(__assign({}, commonProps), props.viewProps), { forwardedRef: nodeRef, onAdd: onAdd, hasAlternatingColors: props.hasAlternatingColors, style: props.style, children: props.children })); }, [commonProps, onAdd, props.children, props.hasAlternatingColors, props.style, props.viewProps]);
133
+ var itemViewProps = (0, react_1.useMemo)(function () { return (__assign(__assign(__assign({}, commonProps), props.itemViewProps), { onRemove: onRemove })); }, [commonProps, onRemove, props.itemViewProps]);
133
134
  var FieldListView = props.view || components.ui.getView('form.FieldListView');
134
135
  var FieldListItemView = props.itemView || components.ui.getView('form.FieldListItemView');
135
- return (React.createElement(Form_1.FormContext.Provider, { value: contextValue },
136
- React.createElement(FieldListView, __assign({}, props.viewProps, commonProps, { forwardedRef: nodeRef, onAdd: onAdd, hasAlternatingColors: props.hasAlternatingColors }), !(0, isEmpty_1["default"])(storeToRowIndexMap) && (0, range_1["default"])(props.input.value || 0).map(function (index) { return (React.createElement(FieldListItemView, __assign({}, props.itemViewProps, commonProps, { key: isWithReduxForm ? storeToRowIndexMap[index] : index, onRemove: onRemove, prefix: props.input.name + '.' + index, rowIndex: index }))); }))));
136
+ return (react_1["default"].createElement(Form_1.FormContext.Provider, { value: contextValue },
137
+ react_1["default"].createElement(FieldListView, __assign({}, viewProps), !(0, isEmpty_1["default"])(storeToRowIndexMap) && (0, range_1["default"])(props.input.value || 0).map(function (index) { return (react_1["default"].createElement(FieldListItemView, __assign({}, itemViewProps, { key: isWithReduxForm ? storeToRowIndexMap[index] : index, prefix: props.input.name + '.' + index, rowIndex: index }))); }))));
137
138
  }
138
139
  FieldList.defaultProps = {
139
140
  initialValues: null,
@@ -56,9 +56,14 @@ function FieldSet(props) {
56
56
  reducer: context.reducer
57
57
  }); }, [context.formId, context.model, context.prefix, context.provider, context.reducer,
58
58
  context.size, props.formId, props.model, props.prefix, props.size]);
59
+ var viewProps = (0, react_1.useMemo)(function () { return ({
60
+ className: props.className,
61
+ label: props.label,
62
+ children: props.children
63
+ }); }, [props]);
59
64
  var FieldSetView = props.view || components.ui.getView('form.FieldSetView');
60
65
  return (react_1["default"].createElement(Form_1.FormContext.Provider, { value: contextValue },
61
- react_1["default"].createElement(FieldSetView, __assign({ className: props.className, label: props.label }, props),
66
+ react_1["default"].createElement(FieldSetView, __assign({}, viewProps),
62
67
  props.children,
63
68
  (props.fields || []).map(function (field, index) { return (react_1["default"].createElement(Field_1["default"], __assign({ key: index }, ((0, isString_1["default"])(field) ? { attribute: field } : field), { prefix: contextValue.prefix }))); }))));
64
69
  }
@@ -71,9 +71,16 @@ function FileFieldComponent(props) {
71
71
  props.onChange(files);
72
72
  }
73
73
  }, [files, props]);
74
- return (React.createElement(FileFieldView, __assign({}, props, { buttonView: props.buttonView, buttonProps: __assign({ label: props.filesLayout === FilesLayout.wall
74
+ var viewProps = (0, react_1.useMemo)(function () { return ({
75
+ buttonView: props.buttonView,
76
+ buttonProps: __assign({ label: props.filesLayout === FilesLayout.wall
75
77
  ? __('Upload')
76
- : __('Click to Upload'), size: props.size, disabled: props.disabled, onClick: onBrowse }, props.buttonProps), itemView: FileFieldItemView, items: files.map(function (file) {
78
+ : __('Click to Upload'), size: props.size, disabled: props.disabled, onClick: onBrowse }, props.buttonProps),
79
+ itemView: FileFieldItemView,
80
+ filesLayout: props.filesLayout,
81
+ className: props.className,
82
+ itemProps: props.itemProps,
83
+ items: files.map(function (file) {
77
84
  var data = file.getResultHttpMessage() || {};
78
85
  var item = {
79
86
  uid: file.getUid(),
@@ -115,7 +122,10 @@ function FileFieldComponent(props) {
115
122
  };
116
123
  }
117
124
  return item;
118
- }) })));
125
+ })
126
+ }); }, [FileFieldItemView, files, onBrowse, onRemove, props.buttonProps, props.buttonView, props.className, props.disabled,
127
+ props.filesLayout, props.imagesOnly, props.imagesProcessor, props.itemProps, props.showRemove, props.size]);
128
+ return (React.createElement(FileFieldView, __assign({}, viewProps)));
119
129
  }
120
130
  function FileField(props) {
121
131
  if (process.env.IS_SSR) {
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { IAddressBarConfig } from '../../../hooks/useAddressBar';
3
3
  import { IFieldProps } from '../Field/Field';
4
4
  /**