@steroidsjs/core 3.0.0-beta.99 → 3.0.0
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/notifications.js +7 -1
- package/actions/router.js +16 -2
- package/components/HttpComponent.d.ts +7 -7
- package/components/JwtHttpComponent.d.ts +2 -2
- package/components/LocaleComponent.d.ts +6 -6
- package/components/MetaComponent.d.ts +90 -1
- package/components/MetricsComponent.js +2 -1
- package/components/ResourceComponent.d.ts +4 -4
- package/components/UiComponent.d.ts +7 -7
- package/components/WebSocketComponent.d.ts +11 -11
- package/docs-autogen-result.json +15147 -6371
- package/en.json +151 -92
- package/hooks/index.d.ts +4 -3
- package/hooks/index.js +7 -5
- package/hooks/useAbsolutePositioning.js +0 -1
- package/hooks/useAddressBar.js +0 -1
- package/hooks/useApplication.js +8 -1
- package/hooks/useDataProvider.d.ts +17 -2
- package/hooks/useDataSelect.js +21 -4
- package/hooks/useFetch.js +6 -1
- package/hooks/useFile.d.ts +1 -0
- package/hooks/useFile.js +2 -0
- package/hooks/useList.d.ts +53 -14
- package/hooks/useList.js +31 -70
- package/hooks/useTree.d.ts +104 -0
- package/hooks/useTree.js +169 -0
- package/index.d.ts +3 -3
- package/package.json +94 -93
- package/reducers/router.d.ts +2 -1
- package/ui/content/Accordion/Accordion.d.ts +8 -5
- package/ui/content/Accordion/Accordion.js +6 -1
- package/ui/content/Accordion/AccordionItem.d.ts +2 -2
- package/ui/content/Accordion/AccordionItem.js +1 -12
- package/ui/content/Alert/Alert.d.ts +5 -2
- package/ui/content/Alert/Alert.js +13 -12
- package/ui/content/Avatar/Avatar.js +18 -12
- package/ui/content/Badge/Badge.d.ts +5 -1
- package/ui/content/Badge/Badge.js +14 -12
- package/ui/content/Calendar/Calendar.d.ts +6 -1
- package/ui/content/Calendar/Calendar.js +19 -12
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +40 -18
- package/ui/content/CalendarSystem/CalendarSystem.js +65 -76
- package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +1 -2
- package/ui/content/CalendarSystem/hooks/useCalendarControls.js +14 -17
- package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.js +11 -3
- package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +2 -2
- package/ui/content/CalendarSystem/hooks/useCalendarType.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useCalendarType.js +22 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +49 -0
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.d.ts → useMonthGrid.d.ts} +4 -5
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.js → useMonthGrid.js} +24 -15
- package/ui/content/CalendarSystem/hooks/{useWeekCalendar.d.ts → useWeekGrid.d.ts} +6 -5
- package/ui/content/CalendarSystem/hooks/useWeekGrid.js +72 -0
- package/ui/content/CalendarSystem/utils/utils.d.ts +8 -0
- package/ui/content/CalendarSystem/utils/utils.js +27 -1
- package/ui/content/Card/Card.d.ts +33 -27
- package/ui/content/Card/Card.js +1 -12
- package/ui/content/Chart/Chart.d.ts +38 -8
- package/ui/content/Chart/Chart.js +16 -12
- package/ui/content/Chat/Chat.d.ts +90 -5
- package/ui/content/Chat/Chat.js +40 -14
- package/ui/content/Chat/constants/timeTemplatesAndUnits.d.ts +1 -0
- package/ui/content/Chat/constants/timeTemplatesAndUnits.js +2 -1
- package/ui/content/Chat/hooks/useChat.d.ts +5 -6
- package/ui/content/Chat/hooks/useChat.js +49 -3
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.d.ts +5 -0
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.js +61 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.d.ts +1 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.js +3 -2
- package/ui/content/Chat/utils/index.d.ts +4 -2
- package/ui/content/Chat/utils/index.js +6 -1
- package/ui/content/Chat/utils/isTodayMessage.d.ts +1 -0
- package/ui/content/Chat/utils/isTodayMessage.js +13 -0
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
- package/ui/content/CopyToClipboard/CopyToClipboard.js +10 -12
- package/ui/content/Dashboard/Dashboard.d.ts +5 -2
- package/ui/content/Dashboard/Dashboard.js +27 -3
- package/ui/content/Detail/Detail.d.ts +15 -2
- package/ui/content/Detail/Detail.js +12 -1
- package/ui/content/DropDown/DropDown.d.ts +1 -1
- package/ui/content/DropDown/DropDown.js +16 -4
- package/ui/content/Icon/Icon.js +13 -15
- package/ui/content/Kanban/Kanban.d.ts +15 -4
- package/ui/content/Kanban/Kanban.js +8 -12
- package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
- package/ui/content/Menu/Menu.js +10 -12
- package/ui/content/Slider/Slider.js +1 -12
- package/ui/crud/index.d.ts +3 -0
- package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -1
- package/ui/form/Button/Button.js +8 -2
- package/ui/form/CheckboxField/CheckboxField.d.ts +1 -0
- package/ui/form/CheckboxField/CheckboxField.js +2 -2
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +18 -2
- package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
- package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +67 -0
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +126 -0
- package/ui/form/CheckboxTreeField/index.d.ts +2 -0
- package/ui/form/CheckboxTreeField/index.js +7 -0
- package/ui/form/DateField/DateField.js +4 -1
- package/ui/form/DateField/useDateRange.d.ts +1 -0
- package/ui/form/DateField/useDateRange.js +13 -2
- package/ui/form/DateRangeField/DateRangeField.d.ts +34 -1
- package/ui/form/DateRangeField/DateRangeField.js +59 -8
- package/ui/form/DateTimeField/DateTimeField.d.ts +10 -0
- package/ui/form/DateTimeField/DateTimeField.js +11 -3
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +25 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +66 -13
- package/ui/form/DropDownField/DropDownField.d.ts +23 -3
- package/ui/form/DropDownField/DropDownField.js +1 -1
- package/ui/form/EmailField/EmailField.d.ts +6 -0
- package/ui/form/EmailField/EmailField.js +0 -4
- package/ui/form/Field/Field.d.ts +9 -1
- package/ui/form/Field/Field.js +1 -1
- package/ui/form/Field/fieldWrapper.d.ts +9 -1
- package/ui/form/FieldList/FieldList.d.ts +13 -7
- package/ui/form/FieldList/FieldList.js +30 -4
- package/ui/form/FileField/FileField.js +5 -0
- package/ui/form/Form/Form.d.ts +26 -3
- package/ui/form/Form/Form.js +5 -3
- package/ui/form/ImageField/ImageField.d.ts +9 -1
- package/ui/form/InputField/InputField.d.ts +5 -2
- package/ui/form/InputField/hooks/useInputFieldWarningByType.js +1 -0
- package/ui/form/NumberField/NumberField.js +34 -7
- package/ui/form/SliderField/SliderField.d.ts +10 -2
- package/ui/form/TimeRangeField/TimeRangeField.d.ts +10 -1
- package/ui/form/TimeRangeField/TimeRangeField.js +3 -1
- package/ui/form/WizardForm/WizardForm.d.ts +119 -0
- package/ui/form/WizardForm/WizardForm.js +167 -0
- package/ui/form/WizardForm/index.d.ts +2 -0
- package/ui/form/WizardForm/index.js +7 -0
- package/ui/form/WizardForm/utils.d.ts +12 -0
- package/ui/form/WizardForm/utils.js +111 -0
- package/ui/form/index.d.ts +3 -1
- package/ui/form/index.js +4 -1
- package/ui/layout/ProgressBar/ProgressBar.js +8 -2
- package/ui/layout/Skeleton/Skeleton.d.ts +3 -1
- package/ui/layout/Tooltip/Tooltip.d.ts +4 -1
- package/ui/list/ControlsColumn/ControlsColumn.d.ts +17 -3
- package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
- package/ui/list/Grid/Grid.d.ts +42 -6
- package/ui/list/Grid/Grid.js +1 -2
- package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
- package/ui/list/Steps/Steps.d.ts +19 -7
- package/ui/list/Steps/Steps.js +46 -26
- package/ui/list/TreeTable/TreeTable.d.ts +34 -33
- package/ui/list/TreeTable/TreeTable.js +19 -8
- package/ui/modal/Modal/Modal.d.ts +7 -1
- package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +11 -1
- package/ui/nav/ButtonGroup/ButtonGroup.d.ts +13 -4
- package/ui/nav/Controls/Controls.d.ts +7 -1
- package/ui/nav/Link/Link.d.ts +1 -1
- package/ui/nav/Nav/Nav.d.ts +19 -4
- package/ui/nav/Router/Router.d.ts +19 -3
- package/ui/nav/Router/Router.js +11 -6
- package/ui/nav/Router/helpers.d.ts +2 -2
- package/ui/nav/Router/helpers.js +39 -7
- package/ui/nav/Tree/Tree.d.ts +32 -62
- package/ui/nav/Tree/Tree.js +18 -165
- package/utils/calculateComponentAbsolutePosition.js +74 -24
- package/utils/calendar.d.ts +8 -0
- package/utils/calendar.js +76 -1
- package/utils/data.js +1 -0
- package/utils/form.d.ts +1 -0
- package/utils/form.js +16 -1
- package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +0 -86
- package/utils/list.d.ts +0 -1
- package/utils/list.js +0 -5
|
@@ -40,9 +40,18 @@ export interface ITimeRangeFieldProps extends IDateInputStateInput, Omit<IFieldW
|
|
|
40
40
|
placeholder?: any;
|
|
41
41
|
/**
|
|
42
42
|
* Свойства для компонента DayPickerInput
|
|
43
|
-
* @example
|
|
43
|
+
* @example
|
|
44
|
+
* {
|
|
45
|
+
* dayPickerProps: {
|
|
46
|
+
* showWeekNumbers: true
|
|
47
|
+
* }
|
|
44
48
|
*/
|
|
45
49
|
pickerProps?: any;
|
|
50
|
+
/**
|
|
51
|
+
* Устанавливать ли фокус и показывать панель времени сразу после рендера страницы
|
|
52
|
+
* @example true
|
|
53
|
+
*/
|
|
54
|
+
hasInitialFocus?: boolean;
|
|
46
55
|
[key: string]: any;
|
|
47
56
|
}
|
|
48
57
|
export interface ITimeRangeFieldViewProps extends IDateInputStateOutput, Pick<ITimeRangeFieldProps, 'size' | 'errors' | 'showRemove' | 'className' | 'timePanelViewProps' | 'disabled' | 'style' | 'icon'>, Omit<IFieldWrapperOutputProps, 'input'> {
|
|
@@ -62,7 +62,8 @@ function TimeRangeField(props) {
|
|
|
62
62
|
inputPropsTo: inputPropsTo,
|
|
63
63
|
inputFrom: props.inputFrom,
|
|
64
64
|
inputTo: props.inputTo,
|
|
65
|
-
useSmartFocus:
|
|
65
|
+
useSmartFocus: false,
|
|
66
|
+
hasInitialFocus: props.hasInitialFocus
|
|
66
67
|
}), focus = _c.focus, onClose = _c.onClose, onClear = _c.onClear, extendedInputPropsFrom = _c.extendedInputPropsFrom, extendedInputPropsTo = _c.extendedInputPropsTo;
|
|
67
68
|
var timePanelFromViewProps = (0, react_1.useMemo)(function () { return (__assign({ onNow: onNowFrom, onClose: onCloseFrom, value: inputPropsFrom.value, onSelect: inputPropsFrom.onChange }, props.timePanelViewProps)); }, [inputPropsFrom.onChange, inputPropsFrom.value, onCloseFrom, onNowFrom, props.timePanelViewProps]);
|
|
68
69
|
var timePanelToViewProps = (0, react_1.useMemo)(function () { return (__assign({ onNow: onNowTo, onClose: onCloseTo, value: inputPropsTo.value, onSelect: inputPropsTo.onChange }, props.timePanelViewProps)); }, [inputPropsTo.onChange, inputPropsTo.value, onCloseTo, onNowTo, props.timePanelViewProps]);
|
|
@@ -73,6 +74,7 @@ TimeRangeField.defaultProps = {
|
|
|
73
74
|
displayFormat: 'HH:mm',
|
|
74
75
|
required: false,
|
|
75
76
|
showRemove: true,
|
|
77
|
+
hasInitialFocus: false,
|
|
76
78
|
type: 'text',
|
|
77
79
|
valueFormat: 'HH:mm',
|
|
78
80
|
useUTC: true,
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IFieldProps } from '@steroidsjs/core/ui/form/Field/Field';
|
|
3
|
+
import { IStepsProps, IStepItem } from '../../list/Steps/Steps';
|
|
4
|
+
import { IButtonProps } from '../Button/Button';
|
|
5
|
+
import { IFormProps } from '../Form/Form';
|
|
6
|
+
export interface IWizardStepItem extends Partial<IStepItem> {
|
|
7
|
+
fields?: IFieldProps[];
|
|
8
|
+
component?: React.ReactNode;
|
|
9
|
+
stepLabel?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* WizardForm
|
|
13
|
+
*
|
|
14
|
+
* Компонент для создания пошаговой формы. Предоставляет управление и синхронизацию состояния формы,
|
|
15
|
+
* а также список шагов формы для удобной навигации.
|
|
16
|
+
* Поля для шагов можно передавать как в виде компонентов, так и в виде объекта с названием поля.
|
|
17
|
+
* Позволяет выполнять отправку данных формы на сервер с возможностью валидации и перехода к неверно заполненным полям.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export interface IWizardFormProps extends IUiComponent {
|
|
21
|
+
/**
|
|
22
|
+
* Идентификатор формы
|
|
23
|
+
* @example WizardForm
|
|
24
|
+
*/
|
|
25
|
+
formId: string;
|
|
26
|
+
/**
|
|
27
|
+
* Коллекция полей и аттрибутов для каждого шага формы. Можно передавать как компонент, так и объект с полями.
|
|
28
|
+
* Главное, чтобы внутри шага использовался один из способов.
|
|
29
|
+
* @example
|
|
30
|
+
* [
|
|
31
|
+
* {
|
|
32
|
+
* title: 'Step 1',
|
|
33
|
+
* fields: [
|
|
34
|
+
* {
|
|
35
|
+
* attribute: 'category',
|
|
36
|
+
* component: 'DropDownField'
|
|
37
|
+
* },
|
|
38
|
+
* ],
|
|
39
|
+
* },
|
|
40
|
+
* {
|
|
41
|
+
* title: 'Step 2',
|
|
42
|
+
* component: (
|
|
43
|
+
* <InputField
|
|
44
|
+
* attribute='address'
|
|
45
|
+
* />
|
|
46
|
+
* )
|
|
47
|
+
* }
|
|
48
|
+
* ]
|
|
49
|
+
*/
|
|
50
|
+
steps: IWizardStepItem[];
|
|
51
|
+
/**
|
|
52
|
+
* Свойства для Form
|
|
53
|
+
*/
|
|
54
|
+
formProps: Omit<IFormProps, 'formId' | 'fields' | 'useRedux'> & {
|
|
55
|
+
submitButtonLabel: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Обработчик, который вызывается после перехода на следующий шаг формы
|
|
59
|
+
* @param {number} value
|
|
60
|
+
* @return {void}
|
|
61
|
+
*/
|
|
62
|
+
onNextStep?: (nextStep: number) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Обработчик, который вызывается после возврата на предыдущий шаг формы
|
|
65
|
+
* @param {number} value
|
|
66
|
+
* @return {void}
|
|
67
|
+
*/
|
|
68
|
+
onPrevStep?: (prevStep: number) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Свойства для кнопки возврата
|
|
71
|
+
*/
|
|
72
|
+
prevStepButtonProps?: IButtonProps;
|
|
73
|
+
/**
|
|
74
|
+
* Свойства для кнопки продолжить/отправить
|
|
75
|
+
*/
|
|
76
|
+
nextStepButtonProps?: IButtonProps;
|
|
77
|
+
/**
|
|
78
|
+
* Свойства для Steps
|
|
79
|
+
*/
|
|
80
|
+
stepsProps?: Pick<IStepsProps, 'stepItems'>;
|
|
81
|
+
/**
|
|
82
|
+
* Ориентация списка шагов формы
|
|
83
|
+
* @example 'horizontal'
|
|
84
|
+
*/
|
|
85
|
+
stepTitleOrientation?: Orientation;
|
|
86
|
+
/**
|
|
87
|
+
* Показывать ли шаги
|
|
88
|
+
* @example true
|
|
89
|
+
*/
|
|
90
|
+
showSteps?: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface IWizardFormViewProps extends Pick<IWizardFormProps, 'prevStepButtonProps' | 'nextStepButtonProps' | 'stepsProps' | 'showSteps'> {
|
|
93
|
+
currentStep: number;
|
|
94
|
+
stepTitle: string;
|
|
95
|
+
stepItems: IStepItem[];
|
|
96
|
+
renderStep: (header: React.ReactNode, buttons: React.ReactNode, viewProps?: IUiComponent) => JSX.Element;
|
|
97
|
+
isLastStep?: boolean;
|
|
98
|
+
onPrevStep?: () => void;
|
|
99
|
+
totalSteps?: number;
|
|
100
|
+
}
|
|
101
|
+
declare function WizardForm(props: IWizardFormProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
102
|
+
declare namespace WizardForm {
|
|
103
|
+
var defaultProps: {
|
|
104
|
+
formProps: {
|
|
105
|
+
label: string;
|
|
106
|
+
};
|
|
107
|
+
prevStepButtonProps: {
|
|
108
|
+
color: string;
|
|
109
|
+
icon: string;
|
|
110
|
+
outline: boolean;
|
|
111
|
+
label: string;
|
|
112
|
+
};
|
|
113
|
+
nextStepButtonProps: {
|
|
114
|
+
label: string;
|
|
115
|
+
};
|
|
116
|
+
showSteps: boolean;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export default WizardForm;
|
|
@@ -0,0 +1,167 @@
|
|
|
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 __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
|
+
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
|
+
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
exports.__esModule = true;
|
|
49
|
+
var react_1 = __importStar(require("react"));
|
|
50
|
+
var has_1 = __importDefault(require("lodash-es/has"));
|
|
51
|
+
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
52
|
+
var indexOf_1 = __importDefault(require("lodash-es/indexOf"));
|
|
53
|
+
var Steps_1 = require("../../list/Steps/Steps");
|
|
54
|
+
var hooks_1 = require("../../../hooks");
|
|
55
|
+
var Form_1 = __importDefault(require("../Form/Form"));
|
|
56
|
+
var utils_1 = require("./utils");
|
|
57
|
+
var INITIAL_STEP = 0;
|
|
58
|
+
function WizardForm(props) {
|
|
59
|
+
var components = (0, hooks_1.useComponents)();
|
|
60
|
+
var _a = (0, react_1.useState)(INITIAL_STEP), currentStep = _a[0], setCurrentStep = _a[1];
|
|
61
|
+
var _b = (0, react_1.useState)([]), errorSteps = _b[0], setErrorSteps = _b[1];
|
|
62
|
+
var _c = (0, react_1.useState)((0, utils_1.normalizeSteps)(props.steps)), steps = _c[0], setSteps = _c[1];
|
|
63
|
+
var totalSteps = (0, react_1.useMemo)(function () { return props.steps.length || 0; }, [props.steps.length]);
|
|
64
|
+
var isLastStep = (0, react_1.useMemo)(function () { return currentStep === totalSteps - 1; }, [currentStep, totalSteps]);
|
|
65
|
+
var activeStep = (0, react_1.useMemo)(function () { return props.steps[currentStep]; }, [currentStep, props.steps]);
|
|
66
|
+
var fieldStepMap = (0, react_1.useMemo)(function () { return (0, utils_1.generateFieldStepMap)(props.steps || []); }, [props.steps]);
|
|
67
|
+
(0, react_1.useEffect)(function () {
|
|
68
|
+
if (!(0, isEmpty_1["default"])(errorSteps)) {
|
|
69
|
+
setCurrentStep(errorSteps[0]);
|
|
70
|
+
}
|
|
71
|
+
}, [errorSteps]);
|
|
72
|
+
var onNextStep = (0, react_1.useCallback)(function () {
|
|
73
|
+
var nextStep = Math.min(currentStep + 1, totalSteps - 1);
|
|
74
|
+
if (props.onNextStep) {
|
|
75
|
+
props.onNextStep(nextStep);
|
|
76
|
+
}
|
|
77
|
+
setSteps(function (prevStepsState) { return (0, utils_1.getModifiedSteps)(prevStepsState, errorSteps, currentStep, nextStep); });
|
|
78
|
+
setCurrentStep(nextStep);
|
|
79
|
+
}, [currentStep, totalSteps, props, errorSteps]);
|
|
80
|
+
var onPrevStep = (0, react_1.useCallback)(function () {
|
|
81
|
+
var prevStep = Math.max(currentStep - 1, INITIAL_STEP);
|
|
82
|
+
if (props.onPrevStep) {
|
|
83
|
+
props.onPrevStep(prevStep);
|
|
84
|
+
}
|
|
85
|
+
setSteps(function (prevStepsState) { return (0, utils_1.getModifiedSteps)(prevStepsState, errorSteps, currentStep, prevStep); });
|
|
86
|
+
setCurrentStep(prevStep);
|
|
87
|
+
}, [currentStep, props, errorSteps]);
|
|
88
|
+
var onSubmit = (0, react_1.useCallback)(function (data) {
|
|
89
|
+
if (isLastStep) {
|
|
90
|
+
return props.formProps.onSubmit ? props.formProps.onSubmit(data) : null;
|
|
91
|
+
}
|
|
92
|
+
return onNextStep();
|
|
93
|
+
}, [isLastStep, onNextStep, props.formProps]);
|
|
94
|
+
var onAfterSubmit = (0, react_1.useCallback)(function (cleanedValues, data, response) {
|
|
95
|
+
if (props.formProps.onAfterSubmit && !!props.formProps.onAfterSubmit(cleanedValues, data, response)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (data.errors) {
|
|
99
|
+
var stepsIdsWithErrorFields_1 = Object.keys(data.errors)
|
|
100
|
+
.reduce(function (acc, errorField) {
|
|
101
|
+
if ((0, has_1["default"])(fieldStepMap, errorField)) {
|
|
102
|
+
acc.push(fieldStepMap[errorField]);
|
|
103
|
+
}
|
|
104
|
+
return acc;
|
|
105
|
+
}, [])
|
|
106
|
+
.sort();
|
|
107
|
+
if (!(0, isEmpty_1["default"])(stepsIdsWithErrorFields_1)) {
|
|
108
|
+
var firstStepErrorField_1 = stepsIdsWithErrorFields_1[0];
|
|
109
|
+
setSteps(function (prevStepsState) { return __spreadArray([], prevStepsState, true).map(function (step) {
|
|
110
|
+
if ((0, indexOf_1["default"])(stepsIdsWithErrorFields_1, step.id) !== -1) {
|
|
111
|
+
step.status = step.id === firstStepErrorField_1 ? Steps_1.ACTIVE_STATUS : Steps_1.ERROR_STATUS;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
step.status = Steps_1.FINISH_STATUS;
|
|
115
|
+
}
|
|
116
|
+
return step;
|
|
117
|
+
}); });
|
|
118
|
+
setErrorSteps(stepsIdsWithErrorFields_1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
}, [fieldStepMap, props.formProps]);
|
|
123
|
+
var commonFormProps = (0, react_1.useMemo)(function () {
|
|
124
|
+
var _a;
|
|
125
|
+
return ({
|
|
126
|
+
formId: props.formId,
|
|
127
|
+
onSubmit: (!isLastStep || props.formProps.onSubmit) && onSubmit,
|
|
128
|
+
onAfterSubmit: onAfterSubmit,
|
|
129
|
+
fields: (_a = activeStep === null || activeStep === void 0 ? void 0 : activeStep.fields) !== null && _a !== void 0 ? _a : null,
|
|
130
|
+
useRedux: true
|
|
131
|
+
});
|
|
132
|
+
}, [activeStep === null || activeStep === void 0 ? void 0 : activeStep.fields, isLastStep, onAfterSubmit, onSubmit, props.formProps.onSubmit, props.formId]);
|
|
133
|
+
var renderStep = (0, react_1.useCallback)(function (header, buttons, viewProps) { return (react_1["default"].createElement(Form_1["default"], __assign({}, props.formProps, viewProps, commonFormProps, { buttons: buttons }),
|
|
134
|
+
header,
|
|
135
|
+
(activeStep === null || activeStep === void 0 ? void 0 : activeStep.component) && props.steps[currentStep].component)); }, [activeStep === null || activeStep === void 0 ? void 0 : activeStep.component, commonFormProps, currentStep, props.formProps, props.steps]);
|
|
136
|
+
var viewProps = (0, react_1.useMemo)(function () { return ({
|
|
137
|
+
renderStep: renderStep,
|
|
138
|
+
currentStep: currentStep,
|
|
139
|
+
isLastStep: isLastStep,
|
|
140
|
+
totalSteps: totalSteps,
|
|
141
|
+
onPrevStep: onPrevStep,
|
|
142
|
+
prevStepButtonProps: props.prevStepButtonProps,
|
|
143
|
+
nextStepButtonProps: __assign(__assign({}, props.nextStepButtonProps), { label: isLastStep ? props.formProps.submitButtonLabel : props.nextStepButtonProps.label }),
|
|
144
|
+
showSteps: props.showSteps,
|
|
145
|
+
stepsProps: __assign(__assign({}, props.stepsProps), { stepTitleOrientation: props.stepTitleOrientation }),
|
|
146
|
+
stepItems: steps,
|
|
147
|
+
stepTitle: activeStep.title
|
|
148
|
+
}); }, [renderStep, currentStep, isLastStep, totalSteps, onPrevStep, props.prevStepButtonProps, props.nextStepButtonProps,
|
|
149
|
+
props.formProps.submitButtonLabel, props.showSteps, props.stepsProps, props.stepTitleOrientation, steps, activeStep.title]);
|
|
150
|
+
return components.ui.renderView(props.view || 'form.WizardFormView', viewProps);
|
|
151
|
+
}
|
|
152
|
+
exports["default"] = WizardForm;
|
|
153
|
+
WizardForm.defaultProps = {
|
|
154
|
+
formProps: {
|
|
155
|
+
label: __('Отправить')
|
|
156
|
+
},
|
|
157
|
+
prevStepButtonProps: {
|
|
158
|
+
color: 'primary',
|
|
159
|
+
icon: 'left_12x12',
|
|
160
|
+
outline: true,
|
|
161
|
+
label: __('Назад')
|
|
162
|
+
},
|
|
163
|
+
nextStepButtonProps: {
|
|
164
|
+
label: __('Далее')
|
|
165
|
+
},
|
|
166
|
+
showSteps: true
|
|
167
|
+
};
|
|
@@ -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 WizardForm_1 = __importDefault(require("./WizardForm"));
|
|
7
|
+
exports["default"] = WizardForm_1["default"];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IWizardStepItem } from '@steroidsjs/core/ui/form/WizardForm/WizardForm';
|
|
3
|
+
export declare const generateFieldStepMap: (arr?: any[]) => any;
|
|
4
|
+
export declare const normalizeSteps: (steps: IWizardStepItem[]) => {
|
|
5
|
+
id: number;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
subtitle: string;
|
|
9
|
+
icon: string | number | true | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment;
|
|
10
|
+
status: string;
|
|
11
|
+
}[];
|
|
12
|
+
export declare const getModifiedSteps: (prevStepsState: any, errorSteps: any, currentStep: number, nextStep: number) => any[];
|
|
@@ -0,0 +1,111 @@
|
|
|
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
exports.__esModule = true;
|
|
26
|
+
exports.getModifiedSteps = exports.normalizeSteps = exports.generateFieldStepMap = void 0;
|
|
27
|
+
var has_1 = __importDefault(require("lodash-es/has"));
|
|
28
|
+
var get_1 = __importDefault(require("lodash-es/get"));
|
|
29
|
+
var assign_1 = __importDefault(require("lodash-es/assign"));
|
|
30
|
+
var isArray_1 = __importDefault(require("lodash-es/isArray"));
|
|
31
|
+
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
32
|
+
var indexOf_1 = __importDefault(require("lodash-es/indexOf"));
|
|
33
|
+
var Steps_1 = require("../../list/Steps/Steps");
|
|
34
|
+
var getComponentAttributes = function (component, index) {
|
|
35
|
+
var componentAttributesStepMap = {};
|
|
36
|
+
if (Array.isArray(component)) {
|
|
37
|
+
component.forEach(function (field) {
|
|
38
|
+
(0, assign_1["default"])(componentAttributesStepMap, getComponentAttributes(field, index));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
var attribute = (0, get_1["default"])(component, ['props', 'attribute']) || (0, get_1["default"])(component, ['attribute']) || null;
|
|
43
|
+
if (attribute) {
|
|
44
|
+
componentAttributesStepMap[attribute] = index;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
var children = (0, get_1["default"])(component, ['props', 'children']) || null;
|
|
48
|
+
if ((0, isArray_1["default"])(children)) {
|
|
49
|
+
children.forEach(function (field) { return (0, assign_1["default"])(componentAttributesStepMap, getComponentAttributes(field, index)); });
|
|
50
|
+
}
|
|
51
|
+
else if (children) {
|
|
52
|
+
(0, assign_1["default"])(componentAttributesStepMap, getComponentAttributes(children, index));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return componentAttributesStepMap;
|
|
57
|
+
};
|
|
58
|
+
var getFieldsAttributes = function (fields, index) {
|
|
59
|
+
var fieldAttributesStepMap = {};
|
|
60
|
+
if ((0, isArray_1["default"])(fields)) {
|
|
61
|
+
fields.forEach(function (field) { return (0, assign_1["default"])(fieldAttributesStepMap, getFieldsAttributes(field, index)); });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
var attribute = (0, get_1["default"])(fields, ['attribute']) || null;
|
|
65
|
+
if (attribute) {
|
|
66
|
+
fieldAttributesStepMap[attribute] = index;
|
|
67
|
+
}
|
|
68
|
+
if ((0, has_1["default"])(fields, ['attributeFrom']) && (0, has_1["default"])(fields, ['attributeTo'])) {
|
|
69
|
+
fieldAttributesStepMap[(0, get_1["default"])(fields, 'attributeFrom')] = index;
|
|
70
|
+
fieldAttributesStepMap[(0, get_1["default"])(fields, 'attributeFrom')] = index;
|
|
71
|
+
}
|
|
72
|
+
if ((0, has_1["default"])(fields, ['items'])) {
|
|
73
|
+
var children = (0, get_1["default"])(fields, ['items']) || null;
|
|
74
|
+
if (children) {
|
|
75
|
+
(0, assign_1["default"])(fieldAttributesStepMap, getFieldsAttributes(children, index));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return fieldAttributesStepMap;
|
|
80
|
+
};
|
|
81
|
+
var generateFieldStepMap = function (arr) {
|
|
82
|
+
if (arr === void 0) { arr = []; }
|
|
83
|
+
return arr.reduce(function (fieldStepMap, step, index) {
|
|
84
|
+
if ((0, has_1["default"])(step, 'fields')) {
|
|
85
|
+
return __assign(__assign({}, fieldStepMap), getFieldsAttributes(step.fields, index));
|
|
86
|
+
}
|
|
87
|
+
if ((0, has_1["default"])(step, 'component')) {
|
|
88
|
+
return __assign(__assign({}, fieldStepMap), getComponentAttributes(step.component, index));
|
|
89
|
+
}
|
|
90
|
+
return fieldStepMap;
|
|
91
|
+
}, {});
|
|
92
|
+
};
|
|
93
|
+
exports.generateFieldStepMap = generateFieldStepMap;
|
|
94
|
+
var normalizeSteps = function (steps) { return steps.map(function (step, index) { return ({
|
|
95
|
+
id: index,
|
|
96
|
+
title: step.stepLabel || null,
|
|
97
|
+
description: step.description || null,
|
|
98
|
+
subtitle: step.subtitle || null,
|
|
99
|
+
icon: step.icon || null,
|
|
100
|
+
status: index === 0 ? Steps_1.ACTIVE_STATUS : Steps_1.WAIT_STATUS
|
|
101
|
+
}); }); };
|
|
102
|
+
exports.normalizeSteps = normalizeSteps;
|
|
103
|
+
var getModifiedSteps = function (prevStepsState, errorSteps, currentStep, nextStep) {
|
|
104
|
+
var newStepsState = __spreadArray([], prevStepsState, true);
|
|
105
|
+
newStepsState[currentStep].status = (0, isEmpty_1["default"])(errorSteps)
|
|
106
|
+
? Steps_1.WAIT_STATUS
|
|
107
|
+
: ((0, indexOf_1["default"])(errorSteps, currentStep) !== -1 ? Steps_1.ERROR_STATUS : Steps_1.FINISH_STATUS);
|
|
108
|
+
newStepsState[nextStep].status = Steps_1.ACTIVE_STATUS;
|
|
109
|
+
return newStepsState;
|
|
110
|
+
};
|
|
111
|
+
exports.getModifiedSteps = getModifiedSteps;
|
package/ui/form/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import BlankField from './BlankField';
|
|
|
4
4
|
import Button from './Button';
|
|
5
5
|
import CheckboxField from './CheckboxField';
|
|
6
6
|
import CheckboxListField from './CheckboxListField';
|
|
7
|
+
import CheckboxTreeField from './CheckboxTreeField';
|
|
7
8
|
import DateField from './DateField';
|
|
8
9
|
import DateRangeField from './DateRangeField';
|
|
9
10
|
import DateTimeField from './DateTimeField';
|
|
@@ -30,13 +31,14 @@ import TimeField from './TimeField';
|
|
|
30
31
|
import RateField from './RateField';
|
|
31
32
|
import MaskField from './MaskField';
|
|
32
33
|
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, };
|
|
34
|
+
export { AutoCompleteField, BlankField, Button, CheckboxField, CheckboxListField, CheckboxTreeField, 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, };
|
|
34
35
|
declare const _default: {
|
|
35
36
|
AutoCompleteField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./AutoCompleteField/AutoCompleteField").IAutoCompleteFieldProps>;
|
|
36
37
|
BlankField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./BlankField/BlankField").IBlankFieldProps>;
|
|
37
38
|
Button: typeof Button;
|
|
38
39
|
CheckboxField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./CheckboxField/CheckboxField").ICheckboxFieldProps>;
|
|
39
40
|
CheckboxListField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./CheckboxListField/CheckboxListField").ICheckboxListFieldProps>;
|
|
41
|
+
CheckboxTreeField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./CheckboxTreeField/CheckboxTreeField").ICheckboxTreeFieldProps>;
|
|
40
42
|
DateField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./DateField/DateField").IDateFieldProps>;
|
|
41
43
|
DateRangeField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./DateRangeField/DateRangeField").IDateRangeFieldProps>;
|
|
42
44
|
DateTimeField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./DateTimeField/DateTimeField").IDateTimeFieldProps>;
|
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.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;
|
|
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.CheckboxTreeField = 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"));
|
|
@@ -14,6 +14,8 @@ var CheckboxField_1 = __importDefault(require("./CheckboxField"));
|
|
|
14
14
|
exports.CheckboxField = CheckboxField_1["default"];
|
|
15
15
|
var CheckboxListField_1 = __importDefault(require("./CheckboxListField"));
|
|
16
16
|
exports.CheckboxListField = CheckboxListField_1["default"];
|
|
17
|
+
var CheckboxTreeField_1 = __importDefault(require("./CheckboxTreeField"));
|
|
18
|
+
exports.CheckboxTreeField = CheckboxTreeField_1["default"];
|
|
17
19
|
var DateField_1 = __importDefault(require("./DateField"));
|
|
18
20
|
exports.DateField = DateField_1["default"];
|
|
19
21
|
var DateRangeField_1 = __importDefault(require("./DateRangeField"));
|
|
@@ -72,6 +74,7 @@ exports["default"] = {
|
|
|
72
74
|
Button: Button_1["default"],
|
|
73
75
|
CheckboxField: CheckboxField_1["default"],
|
|
74
76
|
CheckboxListField: CheckboxListField_1["default"],
|
|
77
|
+
CheckboxTreeField: CheckboxTreeField_1["default"],
|
|
75
78
|
DateField: DateField_1["default"],
|
|
76
79
|
DateRangeField: DateRangeField_1["default"],
|
|
77
80
|
DateTimeField: DateTimeField_1["default"],
|
|
@@ -47,9 +47,15 @@ function ProgressBar(props) {
|
|
|
47
47
|
return props.label(props.percent);
|
|
48
48
|
});
|
|
49
49
|
if (props.type === 'line') {
|
|
50
|
-
return components.ui.renderView('layout.LineProgressBarView', { percent: props.percent,
|
|
50
|
+
return components.ui.renderView('layout.LineProgressBarView', { percent: props.percent,
|
|
51
|
+
status: props.status,
|
|
52
|
+
size: props.size,
|
|
53
|
+
label: getLabel() });
|
|
51
54
|
}
|
|
52
|
-
return components.ui.renderView('layout.CircleProgressBarView', { percent: props.percent,
|
|
55
|
+
return components.ui.renderView('layout.CircleProgressBarView', { percent: props.percent,
|
|
56
|
+
status: props.status,
|
|
57
|
+
size: props.size,
|
|
58
|
+
label: getLabel() });
|
|
53
59
|
}
|
|
54
60
|
ProgressBar.defaultProps = {
|
|
55
61
|
status: 'normal',
|
|
@@ -8,7 +8,9 @@ export interface ISkeletonViewProps {
|
|
|
8
8
|
width?: string | number;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Skeleton
|
|
12
|
+
*
|
|
13
|
+
* Компонент `Skeleton` представляет собой заглушку для отображения временных данных
|
|
12
14
|
* во время загрузки или ожидания загрузки реальных данных.
|
|
13
15
|
**/
|
|
14
16
|
export interface ISkeletonProps {
|
|
@@ -8,7 +8,7 @@ export interface IControlsColumnItem extends IButtonProps {
|
|
|
8
8
|
/**
|
|
9
9
|
* ControlsColumn
|
|
10
10
|
*
|
|
11
|
-
* Компонент ControlsColumn предоставляет колонку с контролами.
|
|
11
|
+
* Компонент `ControlsColumn` предоставляет колонку с контролами.
|
|
12
12
|
**/
|
|
13
13
|
export interface IControlsColumnProps {
|
|
14
14
|
/**
|
|
@@ -17,13 +17,27 @@ export interface IControlsColumnProps {
|
|
|
17
17
|
primaryKey?: string;
|
|
18
18
|
/**
|
|
19
19
|
* Коллекция с контролами
|
|
20
|
-
* @example
|
|
20
|
+
* @example
|
|
21
|
+
* [
|
|
22
|
+
* {
|
|
23
|
+
* id: 'delete'
|
|
24
|
+
* },
|
|
25
|
+
* {
|
|
26
|
+
* id: 'view',
|
|
27
|
+
* position: 'left'
|
|
28
|
+
* }
|
|
29
|
+
* ]
|
|
21
30
|
*/
|
|
22
31
|
controls?: IControlItem[] | ((item: any, primaryKey: string) => IControlItem[]);
|
|
23
32
|
/**
|
|
24
33
|
* Элемент, для которого будет отображаться список с контролами, в нём можно задать видимость контрола
|
|
25
34
|
* с помощью свойства 'can' + _upperFirst(control.id)
|
|
26
|
-
* @example
|
|
35
|
+
* @example
|
|
36
|
+
* {
|
|
37
|
+
* name: 'Ivan',
|
|
38
|
+
* work: 'development',
|
|
39
|
+
* canView: false
|
|
40
|
+
* }
|
|
27
41
|
*/
|
|
28
42
|
item?: any;
|
|
29
43
|
/**
|
|
@@ -36,7 +36,17 @@ export interface IFlexGridItem {
|
|
|
36
36
|
export interface IFlexGridProps extends IUiComponent {
|
|
37
37
|
/**
|
|
38
38
|
* Элементы FlexGrid
|
|
39
|
-
* @example
|
|
39
|
+
* @example
|
|
40
|
+
* [
|
|
41
|
+
* {
|
|
42
|
+
* content: 'Block1',
|
|
43
|
+
* col: 4
|
|
44
|
+
* },
|
|
45
|
+
* {
|
|
46
|
+
* content: 'Block2',
|
|
47
|
+
* col: 6
|
|
48
|
+
* }
|
|
49
|
+
* ]
|
|
40
50
|
*/
|
|
41
51
|
items?: IFlexGridItem[];
|
|
42
52
|
/**
|