@steroidsjs/core 3.0.0-beta.104 → 3.0.0-beta.106
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/docs-autogen-result.json +3192 -1582
- package/hooks/useDataProvider.d.ts +17 -2
- package/hooks/useList.d.ts +53 -8
- package/hooks/useList.js +1 -1
- package/hooks/useSaveCursorPosition.js +4 -2
- package/package.json +1 -1
- package/ui/content/Accordion/Accordion.d.ts +5 -2
- package/ui/content/Alert/Alert.d.ts +5 -2
- package/ui/content/Badge/Badge.d.ts +5 -1
- package/ui/content/Calendar/Calendar.d.ts +6 -1
- package/ui/content/Card/Card.d.ts +31 -25
- package/ui/content/Chart/Chart.d.ts +10 -2
- package/ui/content/Chat/Chat.d.ts +24 -22
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
- package/ui/content/Detail/Detail.d.ts +15 -2
- package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +14 -2
- package/ui/form/DateField/useDateRange.d.ts +1 -0
- package/ui/form/DateField/useDateRange.js +8 -1
- package/ui/form/DateRangeField/DateRangeField.d.ts +11 -1
- package/ui/form/DateRangeField/DateRangeField.js +2 -0
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +11 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +2 -0
- package/ui/form/DropDownField/DropDownField.d.ts +19 -3
- 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 +5 -1
- package/ui/form/Form/Form.d.ts +21 -3
- package/ui/form/ImageField/ImageField.d.ts +9 -1
- package/ui/form/InputField/InputField.d.ts +5 -2
- package/ui/form/InputField/InputField.js +10 -3
- 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/layout/Tooltip/Tooltip.d.ts +4 -1
- package/ui/list/ControlsColumn/ControlsColumn.d.ts +16 -2
- package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
- package/ui/list/Grid/Grid.d.ts +42 -6
- package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
- package/ui/list/TreeTable/TreeTable.d.ts +39 -15
- package/ui/list/TreeTable/TreeTable.js +6 -3
- 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/Nav/Nav.d.ts +15 -2
- package/ui/nav/Tree/Tree.d.ts +16 -2
|
@@ -85,6 +85,7 @@ function DateTimeRangeField(props) {
|
|
|
85
85
|
inputFrom: props.inputFrom,
|
|
86
86
|
inputTo: props.inputTo,
|
|
87
87
|
useSmartFocus: false,
|
|
88
|
+
hasInitialFocus: props.hasInitialFocus,
|
|
88
89
|
displayFormat: props.displayFormat,
|
|
89
90
|
valueFormat: props.valueFormat
|
|
90
91
|
}), focus = _e.focus, onClose = _e.onClose, onClear = _e.onClear, extendedInputPropsFrom = _e.extendedInputPropsFrom, extendedInputPropsTo = _e.extendedInputPropsTo;
|
|
@@ -110,6 +111,7 @@ DateTimeRangeField.defaultProps = {
|
|
|
110
111
|
displayFormat: 'DD.MM.YYYY' + DATE_TIME_SEPARATOR + 'HH:mm',
|
|
111
112
|
valueFormat: 'YYYY-MM-DD' + DATE_TIME_SEPARATOR + 'HH:mm',
|
|
112
113
|
showRemove: true,
|
|
114
|
+
hasInitialFocus: false,
|
|
113
115
|
useUTC: false,
|
|
114
116
|
dateInUTC: false,
|
|
115
117
|
icon: true,
|
|
@@ -86,7 +86,11 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
86
86
|
groupAttribute?: string;
|
|
87
87
|
/**
|
|
88
88
|
* Свойство, которое устанавливает один type и src контента для всех пунктов
|
|
89
|
-
* @example
|
|
89
|
+
* @example
|
|
90
|
+
* {
|
|
91
|
+
* type: 'icon',
|
|
92
|
+
* src: 'user'
|
|
93
|
+
* }
|
|
90
94
|
*/
|
|
91
95
|
itemsContent?: {
|
|
92
96
|
type: ContentType | string;
|
|
@@ -94,7 +98,15 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
94
98
|
};
|
|
95
99
|
/**
|
|
96
100
|
* Элементы вложенные внутрь DropDownField
|
|
97
|
-
* @example
|
|
101
|
+
* @example
|
|
102
|
+
* [
|
|
103
|
+
* {
|
|
104
|
+
* id: 1,
|
|
105
|
+
* label: 'Ivan Ivanov',
|
|
106
|
+
* type: 'icon',
|
|
107
|
+
* typeSrc: 'user'
|
|
108
|
+
* }
|
|
109
|
+
* ]
|
|
98
110
|
*/
|
|
99
111
|
items?: IDropDownFieldItem[] | DataProviderItems;
|
|
100
112
|
/**
|
|
@@ -104,7 +116,11 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
104
116
|
showEllipses?: boolean;
|
|
105
117
|
/**
|
|
106
118
|
* Добавляет кнопку при нажатии на которую выбираются все элементы, работает только при multiple: true
|
|
107
|
-
* @example
|
|
119
|
+
* @example
|
|
120
|
+
* {
|
|
121
|
+
* label: 'All',
|
|
122
|
+
* id: 'all'
|
|
123
|
+
* }
|
|
108
124
|
*/
|
|
109
125
|
itemToSelectAll?: boolean | {
|
|
110
126
|
label: string;
|
package/ui/form/Field/Field.d.ts
CHANGED
|
@@ -16,7 +16,15 @@ export interface IFieldProps extends IFieldWrapperInputProps {
|
|
|
16
16
|
attribute?: any;
|
|
17
17
|
/**
|
|
18
18
|
* Модель с полями формы
|
|
19
|
-
* @example
|
|
19
|
+
* @example
|
|
20
|
+
* {
|
|
21
|
+
* attributes: [
|
|
22
|
+
* {
|
|
23
|
+
* attribute: 'category',
|
|
24
|
+
* field: 'DropDownField'
|
|
25
|
+
* }
|
|
26
|
+
* ]
|
|
27
|
+
* }
|
|
20
28
|
*/
|
|
21
29
|
model?: Model;
|
|
22
30
|
/**
|
package/ui/form/Field/Field.js
CHANGED
|
@@ -50,7 +50,7 @@ function Field(props) {
|
|
|
50
50
|
var fieldModel = (0, react_1.useMemo)(function () {
|
|
51
51
|
var _a;
|
|
52
52
|
var model = props.model || context.model;
|
|
53
|
-
var modelAttributes = (((_a = components.meta.getModel(model)) === null || _a === void 0 ? void 0 : _a.attributes) || []);
|
|
53
|
+
var modelAttributes = (((_a = components.meta.getModel(model)) === null || _a === void 0 ? void 0 : _a.attributes) || (model === null || model === void 0 ? void 0 : model.attributes) || []);
|
|
54
54
|
var result = modelAttributes
|
|
55
55
|
.find(function (field) { return field.attribute === props.attribute; });
|
|
56
56
|
return result || {};
|
|
@@ -16,7 +16,15 @@ export interface IFieldWrapperInputProps {
|
|
|
16
16
|
attribute?: string;
|
|
17
17
|
/**
|
|
18
18
|
* Модель с полями формы
|
|
19
|
-
* @example
|
|
19
|
+
* @example
|
|
20
|
+
* {
|
|
21
|
+
* attributes: [
|
|
22
|
+
* {
|
|
23
|
+
* attribute: 'category',
|
|
24
|
+
* field: 'DropDownField'
|
|
25
|
+
* }
|
|
26
|
+
* ]
|
|
27
|
+
* }
|
|
20
28
|
*/
|
|
21
29
|
model?: string | ((...args: any[]) => any) | any;
|
|
22
30
|
/**
|
|
@@ -34,7 +34,11 @@ export interface IFieldListItem extends IFieldWrapperInputProps, IUiComponent {
|
|
|
34
34
|
export interface IFieldListProps extends IFieldWrapperInputProps, IUiComponent {
|
|
35
35
|
/**
|
|
36
36
|
* Начальные значения в полях
|
|
37
|
-
* @example
|
|
37
|
+
* @example
|
|
38
|
+
* {
|
|
39
|
+
* name: 'Ivan',
|
|
40
|
+
* amount: 5
|
|
41
|
+
* }
|
|
38
42
|
*/
|
|
39
43
|
initialValues?: {
|
|
40
44
|
[key: string]: any;
|
package/ui/form/Form/Form.d.ts
CHANGED
|
@@ -19,7 +19,15 @@ export interface IFormProps extends IUiComponent {
|
|
|
19
19
|
prefix?: string;
|
|
20
20
|
/**
|
|
21
21
|
* Модель с полями формы
|
|
22
|
-
* @example
|
|
22
|
+
* @example
|
|
23
|
+
* {
|
|
24
|
+
* attributes: [
|
|
25
|
+
* {
|
|
26
|
+
* attribute: 'category',
|
|
27
|
+
* field: 'DropDownField'
|
|
28
|
+
* }
|
|
29
|
+
* ]
|
|
30
|
+
* }
|
|
23
31
|
*/
|
|
24
32
|
model?: string | ((...args: any[]) => any) | any;
|
|
25
33
|
/**
|
|
@@ -45,7 +53,11 @@ export interface IFormProps extends IUiComponent {
|
|
|
45
53
|
/**
|
|
46
54
|
* Набор с правилами для проверки соответствия значений полей формы определенному формату.
|
|
47
55
|
* Проверка запускается в момент отправки формы (в обработчике onSubmit).
|
|
48
|
-
* @example
|
|
56
|
+
* @example
|
|
57
|
+
* [
|
|
58
|
+
* ['name', 'required'],
|
|
59
|
+
* ['age', 'integer']
|
|
60
|
+
* ]
|
|
49
61
|
*/
|
|
50
62
|
validators?: any[];
|
|
51
63
|
/**
|
|
@@ -97,7 +109,13 @@ export interface IFormProps extends IUiComponent {
|
|
|
97
109
|
viewProps?: any;
|
|
98
110
|
/**
|
|
99
111
|
* Поля, которые необходимо поместить в форму
|
|
100
|
-
* @example
|
|
112
|
+
* @example
|
|
113
|
+
* [
|
|
114
|
+
* {
|
|
115
|
+
* attribute: 'category',
|
|
116
|
+
* component: 'DropDownField'
|
|
117
|
+
* }
|
|
118
|
+
* ]
|
|
101
119
|
*/
|
|
102
120
|
fields?: (string | IFieldProps)[];
|
|
103
121
|
/**
|
|
@@ -6,7 +6,15 @@ import { IButtonProps } from '../Button/Button';
|
|
|
6
6
|
export interface ICropConfig {
|
|
7
7
|
/**
|
|
8
8
|
* Изначальные параметры обрезки изображения
|
|
9
|
-
* @example
|
|
9
|
+
* @example
|
|
10
|
+
* {
|
|
11
|
+
* unit: 'px',
|
|
12
|
+
* aspect: 1,
|
|
13
|
+
* x: 0,
|
|
14
|
+
* y: 0,
|
|
15
|
+
* width: 200,
|
|
16
|
+
* height: 200
|
|
17
|
+
* }
|
|
10
18
|
*/
|
|
11
19
|
initialValues?: Crop;
|
|
12
20
|
/**
|
|
@@ -15,7 +15,7 @@ export type IElementInputType = 'button' | 'checkbox' | 'color' | 'date' | 'date
|
|
|
15
15
|
export interface IBaseFieldProps extends IFieldWrapperInputProps, IUiComponent {
|
|
16
16
|
/**
|
|
17
17
|
* Свойства для элемента input
|
|
18
|
-
* @example {onKeyDown: ...}
|
|
18
|
+
* @example { onKeyDown: ... }
|
|
19
19
|
*/
|
|
20
20
|
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
|
21
21
|
/**
|
|
@@ -25,7 +25,10 @@ export interface IBaseFieldProps extends IFieldWrapperInputProps, IUiComponent {
|
|
|
25
25
|
showClear?: boolean;
|
|
26
26
|
/**
|
|
27
27
|
* Свойства для компонента отображения
|
|
28
|
-
* @example
|
|
28
|
+
* @example
|
|
29
|
+
* {
|
|
30
|
+
* customHandler: () => {...}
|
|
31
|
+
* }
|
|
29
32
|
*/
|
|
30
33
|
viewProps?: {
|
|
31
34
|
[key: string]: any;
|
|
@@ -97,11 +97,18 @@ function InputField(props) {
|
|
|
97
97
|
}
|
|
98
98
|
}, [inputRef, maskedInputRef]);
|
|
99
99
|
(0, useInputFieldWarningByType_1.useInputFieldWarningByType)(props.type);
|
|
100
|
-
var
|
|
100
|
+
var onChangeHandle = (0, react_1.useCallback)(function (e, value) {
|
|
101
|
+
var _a;
|
|
102
|
+
var currentValue = value !== null && value !== void 0 ? value : (_a = e.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
103
|
+
if (props.onChange) {
|
|
104
|
+
props.onChange(e, currentValue);
|
|
105
|
+
}
|
|
106
|
+
}, [props]);
|
|
107
|
+
var onClear = React.useCallback(function () { return onChangeHandle(null, ''); }, [onChangeHandle]);
|
|
101
108
|
var inputProps = (0, react_1.useMemo)(function () {
|
|
102
109
|
var _a;
|
|
103
|
-
return (__assign({ type: props.type, name: props.input.name, value: (_a = props.input.value) !== null && _a !== void 0 ? _a : '', onInput:
|
|
104
|
-
}, [
|
|
110
|
+
return (__assign({ type: props.type, name: props.input.name, value: (_a = props.input.value) !== null && _a !== void 0 ? _a : '', onInput: onChangeHandle, placeholder: props.placeholder, disabled: props.disabled }, props.inputProps));
|
|
111
|
+
}, [onChangeHandle, props.disabled, props.input.name, props.input.value, props.inputProps, props.placeholder, props.type]);
|
|
105
112
|
// No render for hidden input
|
|
106
113
|
if (props.type === 'hidden') {
|
|
107
114
|
return null;
|
|
@@ -43,7 +43,12 @@ export interface ISliderFieldProps extends IFieldWrapperInputProps, IUiComponent
|
|
|
43
43
|
* Метки на ползунке. В объекте '{'key: value'}' key определяет положение, а value определяет, что будет отображаться.
|
|
44
44
|
* Если вы хотите задать стиль определенной точки метки, значением должен быть объект,
|
|
45
45
|
* содержащий свойства style и label.
|
|
46
|
-
* @example
|
|
46
|
+
* @example
|
|
47
|
+
* {
|
|
48
|
+
* min: 20,
|
|
49
|
+
* 40: 40,
|
|
50
|
+
* max: 100
|
|
51
|
+
* }
|
|
47
52
|
*/
|
|
48
53
|
marks?: Record<string, {
|
|
49
54
|
style: {
|
|
@@ -54,7 +59,10 @@ export interface ISliderFieldProps extends IFieldWrapperInputProps, IUiComponent
|
|
|
54
59
|
/**
|
|
55
60
|
* Функция, вызываемая после отпускания tip'а у слайдера (при событии onmouseup)
|
|
56
61
|
* @see https://github.com/schrodinger/rc-slider
|
|
57
|
-
* @example
|
|
62
|
+
* @example
|
|
63
|
+
* {
|
|
64
|
+
* () => console.log('Slider handler is released')
|
|
65
|
+
* }
|
|
58
66
|
*/
|
|
59
67
|
onAfterChange?: (value: any) => void;
|
|
60
68
|
[key: string]: any;
|
|
@@ -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,
|
|
@@ -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
|
/**
|
package/ui/list/Grid/Grid.d.ts
CHANGED
|
@@ -18,7 +18,11 @@ export interface IGridColumn {
|
|
|
18
18
|
attribute?: string;
|
|
19
19
|
/**
|
|
20
20
|
* Свойства для компонента форматирования
|
|
21
|
-
* @example
|
|
21
|
+
* @example
|
|
22
|
+
* {
|
|
23
|
+
* component: DateFormatter,
|
|
24
|
+
* format: 'DD MMMM'
|
|
25
|
+
* }
|
|
22
26
|
*/
|
|
23
27
|
formatter?: Record<string, any>;
|
|
24
28
|
/**
|
|
@@ -74,7 +78,12 @@ export interface IGridColumn {
|
|
|
74
78
|
subtitleAttribute?: string;
|
|
75
79
|
/**
|
|
76
80
|
* Параметры для ссылки в колонке
|
|
77
|
-
* @example
|
|
81
|
+
* @example
|
|
82
|
+
* {
|
|
83
|
+
* attribute: 'name',
|
|
84
|
+
* linkProps: {target: 'blank'},
|
|
85
|
+
* url: 'https://kozhindev.com'
|
|
86
|
+
* }
|
|
78
87
|
*/
|
|
79
88
|
link?: {
|
|
80
89
|
attribute: string;
|
|
@@ -83,7 +92,11 @@ export interface IGridColumn {
|
|
|
83
92
|
};
|
|
84
93
|
/**
|
|
85
94
|
* Параметры для иконки в колонке
|
|
86
|
-
* @example
|
|
95
|
+
* @example
|
|
96
|
+
* {
|
|
97
|
+
* attribute: 'icon',
|
|
98
|
+
* isLeft: true
|
|
99
|
+
* }
|
|
87
100
|
*/
|
|
88
101
|
icon?: {
|
|
89
102
|
attribute: string;
|
|
@@ -91,7 +104,11 @@ export interface IGridColumn {
|
|
|
91
104
|
};
|
|
92
105
|
/**
|
|
93
106
|
* Параметры для картинки в колонке
|
|
94
|
-
* @example
|
|
107
|
+
* @example
|
|
108
|
+
* {
|
|
109
|
+
* attribute: 'icon',
|
|
110
|
+
* isLeft: true
|
|
111
|
+
* }
|
|
95
112
|
*/
|
|
96
113
|
picture?: {
|
|
97
114
|
attribute: string;
|
|
@@ -122,13 +139,32 @@ export interface IGridProps extends IListConfig {
|
|
|
122
139
|
view?: CustomView;
|
|
123
140
|
/**
|
|
124
141
|
* Коллекция с наименованиями и свойствами колонок в таблице
|
|
125
|
-
* @example
|
|
142
|
+
* @example
|
|
143
|
+
* [
|
|
144
|
+
* {
|
|
145
|
+
* label: 'Name',
|
|
146
|
+
* attribute: 'name'
|
|
147
|
+
* },
|
|
148
|
+
* {
|
|
149
|
+
* label: 'Work',
|
|
150
|
+
* attribute: 'work'
|
|
151
|
+
* }
|
|
152
|
+
* ]
|
|
126
153
|
*/
|
|
127
154
|
columns: (string | IGridColumn)[];
|
|
128
155
|
/**
|
|
129
156
|
* Коллекция с элементами управления. Данная коллекция отобразится в колонке рядом с каждой записью в таблице.
|
|
130
157
|
* Например, кнопки для удаления и детального просмотра записи.
|
|
131
|
-
* @example
|
|
158
|
+
* @example
|
|
159
|
+
* [
|
|
160
|
+
* {
|
|
161
|
+
* id: 'delete'
|
|
162
|
+
* },
|
|
163
|
+
* {
|
|
164
|
+
* id: 'view',
|
|
165
|
+
* position: 'left'
|
|
166
|
+
* }
|
|
167
|
+
* ]
|
|
132
168
|
*/
|
|
133
169
|
controls?: IControlItem[] | ((item: any, primaryKey: string) => IControlItem[]);
|
|
134
170
|
/**
|
|
@@ -34,7 +34,17 @@ export interface ILayoutNamesProps {
|
|
|
34
34
|
position?: ListControlPosition;
|
|
35
35
|
/**
|
|
36
36
|
* Коллекция с шаблонами
|
|
37
|
-
* @example
|
|
37
|
+
* @example
|
|
38
|
+
* [
|
|
39
|
+
* {
|
|
40
|
+
* id: 'list',
|
|
41
|
+
* label: 'List'
|
|
42
|
+
* },
|
|
43
|
+
* {
|
|
44
|
+
* id: 'grid',
|
|
45
|
+
* label: 'Grid'
|
|
46
|
+
* }
|
|
47
|
+
* ]
|
|
38
48
|
*/
|
|
39
49
|
items?: INavItem[];
|
|
40
50
|
/**
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { IColumnViewProps, IGridColumn, IGridProps } from '../Grid/Grid';
|
|
3
3
|
export interface ITreeColumnViewProps extends IColumnViewProps {
|
|
4
|
-
item: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
item: ITreeTableItem & {
|
|
5
|
+
uniqueId: string;
|
|
6
|
+
level: number;
|
|
7
|
+
isOpened: boolean;
|
|
8
|
+
hasItems: boolean;
|
|
9
|
+
onClick: () => void;
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
12
|
export interface ITreeTableItem {
|
|
@@ -15,14 +16,15 @@ export interface ITreeTableItem {
|
|
|
15
16
|
id?: string | number;
|
|
16
17
|
/**
|
|
17
18
|
* Вложенные элементы
|
|
18
|
-
* @example
|
|
19
|
+
* @example
|
|
20
|
+
* items: [
|
|
21
|
+
* {
|
|
22
|
+
* id: 3,
|
|
23
|
+
* name: 'Ivan'
|
|
24
|
+
* }
|
|
25
|
+
* ]
|
|
19
26
|
*/
|
|
20
|
-
items?:
|
|
21
|
-
/**
|
|
22
|
-
* Уникальный идентификатор,
|
|
23
|
-
* используется для сохранения состояния открыта или закрыта ячейка
|
|
24
|
-
*/
|
|
25
|
-
uniqueId?: string;
|
|
27
|
+
items?: ITreeTableItem[];
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
28
30
|
* TreeTable
|
|
@@ -32,9 +34,31 @@ export interface ITreeTableItem {
|
|
|
32
34
|
export interface ITreeTableProps extends Omit<IGridProps, 'items'> {
|
|
33
35
|
/**
|
|
34
36
|
* Элементы коллекции
|
|
35
|
-
* @example
|
|
37
|
+
* @example
|
|
38
|
+
* [
|
|
39
|
+
* {
|
|
40
|
+
* id: 1,
|
|
41
|
+
* name: 'Jane'
|
|
42
|
+
* },
|
|
43
|
+
* {
|
|
44
|
+
* id: 2,
|
|
45
|
+
* name: 'John',
|
|
46
|
+
* items: [...]
|
|
47
|
+
* }
|
|
48
|
+
* ]
|
|
36
49
|
*/
|
|
37
50
|
items?: ITreeTableItem[];
|
|
51
|
+
/**
|
|
52
|
+
* Расстояние вложенных элементов от родителя для каждого уровня
|
|
53
|
+
* @example 32
|
|
54
|
+
*/
|
|
55
|
+
levelPadding?: number | string;
|
|
56
|
+
}
|
|
57
|
+
export declare const addTreeColumnFieldsToFirstColumn: (columns: IGridColumn[], levelPadding: string | number) => IGridColumn[];
|
|
58
|
+
declare function TreeTable(props: ITreeTableProps): JSX.Element;
|
|
59
|
+
declare namespace TreeTable {
|
|
60
|
+
var defaultProps: {
|
|
61
|
+
levelPadding: number;
|
|
62
|
+
};
|
|
38
63
|
}
|
|
39
|
-
export
|
|
40
|
-
export default function TreeTable(props: ITreeTableProps): JSX.Element;
|
|
64
|
+
export default TreeTable;
|
|
@@ -55,15 +55,18 @@ var TREE_COLUMN_VIEW_FIELDS = {
|
|
|
55
55
|
valueView: 'TreeColumnView',
|
|
56
56
|
headerClassName: 'TreeColumnHeader'
|
|
57
57
|
};
|
|
58
|
-
var addTreeColumnFieldsToFirstColumn = function (columns) {
|
|
58
|
+
var addTreeColumnFieldsToFirstColumn = function (columns, levelPadding) {
|
|
59
59
|
var newColumns = __spreadArray([], columns, true);
|
|
60
60
|
// Add tree view to the first column
|
|
61
|
-
(0, merge_1["default"])(newColumns[0], TREE_COLUMN_VIEW_FIELDS);
|
|
61
|
+
(0, merge_1["default"])(newColumns[0], __assign(__assign({}, TREE_COLUMN_VIEW_FIELDS), { levelPadding: levelPadding }));
|
|
62
62
|
return newColumns;
|
|
63
63
|
};
|
|
64
64
|
exports.addTreeColumnFieldsToFirstColumn = addTreeColumnFieldsToFirstColumn;
|
|
65
65
|
function TreeTable(props) {
|
|
66
|
-
var columns = (0, react_1.useMemo)(function () { return (0, exports.addTreeColumnFieldsToFirstColumn)(props.columns); }, [props.columns]);
|
|
66
|
+
var columns = (0, react_1.useMemo)(function () { return (0, exports.addTreeColumnFieldsToFirstColumn)(props.columns, props.levelPadding); }, [props.columns, props.levelPadding]);
|
|
67
67
|
return (React.createElement(Grid_1["default"], __assign({}, props, { columns: columns, items: props.items, itemsIndexing: false, hasTreeItems: true })));
|
|
68
68
|
}
|
|
69
69
|
exports["default"] = TreeTable;
|
|
70
|
+
TreeTable.defaultProps = {
|
|
71
|
+
levelPadding: 32
|
|
72
|
+
};
|
|
@@ -21,7 +21,13 @@ export interface IModalProps {
|
|
|
21
21
|
componentProps?: any;
|
|
22
22
|
/**
|
|
23
23
|
* Коллекция кнопок, которая отобразится в нижней секции Modal
|
|
24
|
-
* @example
|
|
24
|
+
* @example
|
|
25
|
+
* [
|
|
26
|
+
* {
|
|
27
|
+
* label: __(('Закрыть')),
|
|
28
|
+
* onClick: () => props.onClose()
|
|
29
|
+
* }
|
|
30
|
+
* ]
|
|
25
31
|
*/
|
|
26
32
|
buttons?: IButtonProps[];
|
|
27
33
|
/**
|
|
@@ -13,7 +13,17 @@ export interface IBreadcrumbsProps {
|
|
|
13
13
|
className?: CssClassName;
|
|
14
14
|
/**
|
|
15
15
|
* Коллекция элементов навигационной цепочки
|
|
16
|
-
* @example
|
|
16
|
+
* @example
|
|
17
|
+
* [
|
|
18
|
+
* {
|
|
19
|
+
* id: 'root',
|
|
20
|
+
* title: 'Home'
|
|
21
|
+
* },
|
|
22
|
+
* {
|
|
23
|
+
* id: 'catalog',
|
|
24
|
+
* title: 'Catalog'
|
|
25
|
+
* }
|
|
26
|
+
* ]
|
|
17
27
|
*/
|
|
18
28
|
items?: IRouteItem[];
|
|
19
29
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import { IButtonProps } from '../../form/Button/Button';
|
|
3
3
|
import { DataProviderItems } from '../../../hooks/useDataProvider';
|
|
4
4
|
/**
|
|
@@ -9,14 +9,19 @@ import { DataProviderItems } from '../../../hooks/useDataProvider';
|
|
|
9
9
|
export interface IButtonGroupProps extends IUiComponent {
|
|
10
10
|
/**
|
|
11
11
|
* Элементы для группы кнопок
|
|
12
|
-
* @example
|
|
12
|
+
* @example
|
|
13
|
+
* [
|
|
14
|
+
* 'button1',
|
|
15
|
+
* 'button2',
|
|
16
|
+
* 'button3'
|
|
17
|
+
* ]
|
|
13
18
|
*/
|
|
14
19
|
items: DataProviderItems;
|
|
15
20
|
/**
|
|
16
21
|
* Функция, которая будет вызываться при клике по кнопке
|
|
17
22
|
* @example setActiveTab
|
|
18
23
|
*/
|
|
19
|
-
onClick: (value: number | string | boolean) => void
|
|
24
|
+
onClick: ((value: number | string | boolean) => void) | Dispatch<SetStateAction<string | number | boolean>>;
|
|
20
25
|
/**
|
|
21
26
|
* При указании в связке с onClick предоставляет возможность реализовать two-way binding
|
|
22
27
|
* @example 'button1'
|
|
@@ -28,7 +33,11 @@ export interface IButtonGroupProps extends IUiComponent {
|
|
|
28
33
|
defaultActiveButton?: number | string;
|
|
29
34
|
/**
|
|
30
35
|
* Общие свойства для всех кнопок группы
|
|
31
|
-
* @example
|
|
36
|
+
* @example
|
|
37
|
+
* {
|
|
38
|
+
* outline: true,
|
|
39
|
+
* color: 'secondary'
|
|
40
|
+
* }
|
|
32
41
|
*/
|
|
33
42
|
buttonProps?: IButtonProps;
|
|
34
43
|
}
|
|
@@ -27,7 +27,13 @@ export interface IControlItem extends IButtonProps {
|
|
|
27
27
|
export interface IControlsProps {
|
|
28
28
|
/**
|
|
29
29
|
* Коллекция контролов
|
|
30
|
-
* @example
|
|
30
|
+
* @example
|
|
31
|
+
* [
|
|
32
|
+
* {
|
|
33
|
+
* id: 'delete',
|
|
34
|
+
* onClick: () => alert("It's deleted")
|
|
35
|
+
* }
|
|
36
|
+
* ]
|
|
31
37
|
*/
|
|
32
38
|
items?: IControlItem[];
|
|
33
39
|
/**
|