@steroidsjs/core 3.0.0-beta.41 → 3.0.0-beta.43
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 +966 -995
- package/hooks/useApplication.d.ts +2 -1
- package/hooks/useApplication.js +1 -1
- package/hooks/useDataSelect.d.ts +3 -1
- package/hooks/useDataSelect.js +37 -23
- package/hooks/useFile.d.ts +28 -0
- package/hooks/useList.d.ts +6 -0
- package/package.json +2 -2
- package/ui/content/Accordion/Accordion.d.ts +11 -13
- package/ui/content/Alert/Alert.d.ts +13 -10
- package/ui/content/Avatar/Avatar.d.ts +13 -23
- package/ui/content/Badge/Badge.d.ts +14 -12
- package/ui/content/Calendar/Calendar.d.ts +1 -10
- package/ui/content/Card/Card.d.ts +31 -18
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +19 -6
- package/ui/content/Detail/Detail.d.ts +1 -10
- package/ui/content/DropDown/DropDown.d.ts +9 -9
- package/ui/content/Icon/Icon.d.ts +4 -7
- package/ui/content/Menu/Menu.d.ts +2 -10
- package/ui/crud/Crud/Crud.d.ts +62 -0
- package/ui/form/BlankField/BlankField.d.ts +8 -1
- package/ui/form/Button/Button.d.ts +2 -16
- package/ui/form/CheckboxField/CheckboxField.d.ts +3 -12
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -11
- package/ui/form/DateRangeField/DateRangeField.d.ts +6 -0
- package/ui/form/DropDownField/DropDownField.d.ts +19 -16
- package/ui/form/DropDownField/DropDownField.js +26 -5
- package/ui/form/Field/fieldWrapper.d.ts +18 -4
- package/ui/form/FieldLayout/FieldLayout.d.ts +2 -11
- package/ui/form/FieldList/FieldList.d.ts +2 -20
- package/ui/form/FileField/FileField.d.ts +1 -11
- package/ui/form/Form/Form.d.ts +27 -15
- package/ui/form/HtmlField/HtmlField.d.ts +1 -10
- package/ui/form/ImageField/ImageField.d.ts +1 -10
- package/ui/form/InputField/InputField.d.ts +2 -2
- package/ui/form/NavField/NavField.d.ts +1 -1
- package/ui/form/RadioField/RadioField.d.ts +2 -11
- package/ui/form/RadioListField/RadioListField.d.ts +2 -11
- package/ui/form/RateField/RateField.d.ts +1 -10
- package/ui/form/ReCaptchaField/ReCaptchaField.d.ts +1 -6
- package/ui/form/SliderField/SliderField.d.ts +3 -12
- package/ui/form/SliderField/SliderField.js +1 -1
- package/ui/form/SwitcherField/SwitcherField.d.ts +1 -1
- package/ui/form/TimeField/TimeField.d.ts +1 -15
- package/ui/format/BooleanFormatter/BooleanFormatter.d.ts +7 -0
- package/ui/format/DateFormatter/DateFormatter.d.ts +5 -1
- package/ui/format/DateTimeFormatter/DateTimeFormatter.d.ts +5 -1
- package/ui/format/EnumFormatter/EnumFormatter.d.ts +4 -0
- package/ui/format/FileSize/FileSize.d.ts +1 -2
- package/ui/format/MoneyFormatter/MoneyFormatter.d.ts +3 -1
- package/ui/layout/Header/Header.d.ts +7 -3
- package/ui/layout/Loader/Loader.d.ts +6 -1
- package/ui/layout/Skeleton/Skeleton.d.ts +19 -0
- package/ui/list/Pagination/Pagination.d.ts +3 -0
- package/ui/list/SearchForm/SearchForm.d.ts +3 -0
- package/ui/modal/TwoFactorModal/TwoFactorModal.d.ts +7 -2
- package/ui/nav/ButtonGroup/ButtonGroup.d.ts +35 -0
- package/ui/nav/ButtonGroup/ButtonGroup.js +31 -0
- package/ui/nav/ButtonGroup/index.d.ts +2 -0
- package/ui/nav/ButtonGroup/index.js +7 -0
- package/ui/nav/index.d.ts +2 -1
- package/ui/nav/index.js +3 -1
- package/ui/typography/Text/Text.d.ts +5 -8
- package/ui/typography/Title/Title.d.ts +5 -8
- package/ui/form/SliderField/demo/basic.d.ts +0 -8
- package/ui/form/SliderField/demo/basic.js +0 -37
- package/ui/form/SliderField/demo/disabled.d.ts +0 -8
- package/ui/form/SliderField/demo/disabled.js +0 -37
- package/ui/form/SliderField/demo/errors.d.ts +0 -8
- package/ui/form/SliderField/demo/errors.js +0 -37
- package/ui/form/SliderField/demo/marks.d.ts +0 -3
- package/ui/form/SliderField/demo/marks.js +0 -49
- package/ui/form/SliderField/demo/min-max.d.ts +0 -8
- package/ui/form/SliderField/demo/min-max.js +0 -37
- package/ui/form/SliderField/demo/onAfterChange.d.ts +0 -8
- package/ui/form/SliderField/demo/onAfterChange.js +0 -43
- package/ui/form/SliderField/demo/onChange.d.ts +0 -8
- package/ui/form/SliderField/demo/onChange.js +0 -43
- package/ui/form/SliderField/demo/range.d.ts +0 -8
- package/ui/form/SliderField/demo/range.js +0 -37
- package/ui/nav/Tree/demo/auto-open-levels.d.ts +0 -8
- package/ui/nav/Tree/demo/auto-open-levels.js +0 -38
- package/ui/nav/Tree/demo/basic.d.ts +0 -32
- package/ui/nav/Tree/demo/basic.js +0 -72
- package/ui/nav/Tree/demo/level.d.ts +0 -8
- package/ui/nav/Tree/demo/level.js +0 -38
- package/ui/nav/Tree/demo/routes.d.ts +0 -8
- package/ui/nav/Tree/demo/routes.js +0 -37
- package/ui/nav/Tree/demo/selected-item.d.ts +0 -8
- package/ui/nav/Tree/demo/selected-item.js +0 -38
|
@@ -3,14 +3,28 @@ import { IShowNotificationParameters } from '../../../actions/notifications';
|
|
|
3
3
|
export interface ICopyToClipboardProps extends IUiComponent {
|
|
4
4
|
/**
|
|
5
5
|
* Значение, которое будет использоваться при копировании
|
|
6
|
-
* @example
|
|
6
|
+
* @example 'Steroids.js'
|
|
7
7
|
*/
|
|
8
8
|
value: string;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
10
|
+
* Переводит состояние компонента в выключенное
|
|
11
|
+
* @example true
|
|
12
12
|
*/
|
|
13
13
|
disabled?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Параметры для уведомления, которое появляется после копирования
|
|
16
|
+
* @example
|
|
17
|
+
* 'Some value has been copied to buffer'
|
|
18
|
+
* @example
|
|
19
|
+
* {
|
|
20
|
+
* message: 'Some value has been copied to buffer',
|
|
21
|
+
* level: 'info',
|
|
22
|
+
* params: {
|
|
23
|
+
* position: 'top-left',
|
|
24
|
+
* timeOut: 100,
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
14
28
|
notification?: string | {
|
|
15
29
|
message?: string;
|
|
16
30
|
level?: string;
|
|
@@ -18,7 +32,7 @@ export interface ICopyToClipboardProps extends IUiComponent {
|
|
|
18
32
|
};
|
|
19
33
|
/**
|
|
20
34
|
* Позволяет включить или выключить отображение иконки
|
|
21
|
-
* @example
|
|
35
|
+
* @example false
|
|
22
36
|
*/
|
|
23
37
|
showCopyIcon?: boolean;
|
|
24
38
|
/**
|
|
@@ -32,8 +46,7 @@ export interface ICopyToClipboardProps extends IUiComponent {
|
|
|
32
46
|
*/
|
|
33
47
|
children?: React.ReactNode;
|
|
34
48
|
/**
|
|
35
|
-
* Callback
|
|
36
|
-
* @example {}
|
|
49
|
+
* Callback который вызывается при копировании
|
|
37
50
|
*/
|
|
38
51
|
onCopy?: VoidFunction;
|
|
39
52
|
}
|
|
@@ -31,7 +31,7 @@ export interface IDetailResponsive {
|
|
|
31
31
|
*/
|
|
32
32
|
media: IDetailMedia[];
|
|
33
33
|
}
|
|
34
|
-
export interface IDetailProps {
|
|
34
|
+
export interface IDetailProps extends IUiComponent {
|
|
35
35
|
/**
|
|
36
36
|
* Размер ячеек в таблице
|
|
37
37
|
* @example 'sm'
|
|
@@ -62,15 +62,6 @@ export interface IDetailProps {
|
|
|
62
62
|
* @example [{label: __(('Edit')), onClick: () => props.onClick()}]
|
|
63
63
|
*/
|
|
64
64
|
controls?: IControlItem[];
|
|
65
|
-
/**
|
|
66
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
67
|
-
* @example MyCustomView
|
|
68
|
-
*/
|
|
69
|
-
view?: CustomView;
|
|
70
|
-
/**
|
|
71
|
-
* Дополнительный CSS-класс для таблицы
|
|
72
|
-
*/
|
|
73
|
-
className?: CssClassName;
|
|
74
65
|
/**
|
|
75
66
|
* Дочерние компоненты
|
|
76
67
|
*/
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { IAbsolutePositioningInputProps, IAbsolutePositioningOutputProps } from '../../../hooks/useAbsolutePositioning';
|
|
3
3
|
export interface IDropDownProps extends IAbsolutePositioningInputProps {
|
|
4
|
-
/**
|
|
5
|
-
* Дополнительный CSS-класс
|
|
6
|
-
*/
|
|
7
|
-
className?: CssClassName;
|
|
8
4
|
/**
|
|
9
5
|
* Содержимое DropDown (компонент или jsx-код)
|
|
10
6
|
* @example () => Component
|
|
11
7
|
*/
|
|
12
8
|
content?: () => React.ReactNode;
|
|
13
|
-
/**
|
|
14
|
-
* Переопределение view React компонента для кастомизациии отображения
|
|
15
|
-
* @example MyCustomView
|
|
16
|
-
*/
|
|
17
|
-
view?: CustomView;
|
|
18
9
|
/**
|
|
19
10
|
* В каком случае закрывать DropDown. По-умолчанию - `click-away`
|
|
20
11
|
* @example click-any
|
|
21
12
|
*/
|
|
22
13
|
closeMode?: 'click-away' | 'click-any';
|
|
14
|
+
/**
|
|
15
|
+
* Переопределение view React компонента для кастомизациии отображения
|
|
16
|
+
* @example MyCustomView
|
|
17
|
+
*/
|
|
18
|
+
view?: CustomView;
|
|
19
|
+
/**
|
|
20
|
+
* Дополнительный CSS-класс
|
|
21
|
+
*/
|
|
22
|
+
className?: CssClassName;
|
|
23
23
|
}
|
|
24
24
|
export interface IDropDownViewProps extends IDropDownProps, IAbsolutePositioningOutputProps {
|
|
25
25
|
/**
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* That get the icon used <Icon name={'icon-name'} />
|
|
19
19
|
*/
|
|
20
|
-
export interface IIconProps {
|
|
20
|
+
export interface IIconProps extends IUiComponent {
|
|
21
21
|
/**
|
|
22
22
|
* Имя иконки (латиницей). Импорт иконок происходит на старте приложения.
|
|
23
23
|
* @example create
|
|
@@ -28,16 +28,13 @@ export interface IIconProps {
|
|
|
28
28
|
* @example Добавить запись
|
|
29
29
|
*/
|
|
30
30
|
title?: string;
|
|
31
|
-
className?: CssClassName;
|
|
32
|
-
/**
|
|
33
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
34
|
-
* @example MyCustomView
|
|
35
|
-
*/
|
|
36
|
-
view?: CustomView;
|
|
37
31
|
/**
|
|
38
32
|
* Должен ли данный элемент участвовать в последовательной навигации
|
|
39
33
|
*/
|
|
40
34
|
tabIndex?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Функция которая вызывается при клике по иконке
|
|
37
|
+
*/
|
|
41
38
|
onClick?: any;
|
|
42
39
|
[key: string]: any;
|
|
43
40
|
}
|
|
@@ -6,7 +6,7 @@ export interface IMenuItem {
|
|
|
6
6
|
*/
|
|
7
7
|
label: string;
|
|
8
8
|
/**
|
|
9
|
-
* Функция при клике
|
|
9
|
+
* Функция вызываемая при клике
|
|
10
10
|
*/
|
|
11
11
|
onClick: VoidFunction;
|
|
12
12
|
/**
|
|
@@ -18,7 +18,7 @@ export interface IMenuItem {
|
|
|
18
18
|
*/
|
|
19
19
|
hasBorder?: boolean;
|
|
20
20
|
}
|
|
21
|
-
export interface IMenuProps {
|
|
21
|
+
export interface IMenuProps extends IUiComponent {
|
|
22
22
|
/**
|
|
23
23
|
* Элементы меню
|
|
24
24
|
*/
|
|
@@ -27,10 +27,6 @@ export interface IMenuProps {
|
|
|
27
27
|
* Кастомная иконка, по клику на которую открывается меню
|
|
28
28
|
*/
|
|
29
29
|
icon?: string | React.ReactElement;
|
|
30
|
-
/**
|
|
31
|
-
* Дополнительный CSS-класс
|
|
32
|
-
*/
|
|
33
|
-
className?: CssClassName;
|
|
34
30
|
/**
|
|
35
31
|
* Пропсы для DropDown
|
|
36
32
|
*/
|
|
@@ -39,10 +35,6 @@ export interface IMenuProps {
|
|
|
39
35
|
* Переопределение view React элемента меню для кастомизации отображения
|
|
40
36
|
*/
|
|
41
37
|
itemView?: CustomView | any;
|
|
42
|
-
/**
|
|
43
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
44
|
-
*/
|
|
45
|
-
view?: CustomView;
|
|
46
38
|
}
|
|
47
39
|
export type IMenuViewProps = IMenuProps;
|
|
48
40
|
declare function Menu(props: IMenuProps): JSX.Element;
|
package/ui/crud/Crud/Crud.d.ts
CHANGED
|
@@ -35,26 +35,88 @@ export interface ICrudClickProps {
|
|
|
35
35
|
errorHandler?: (error: any, dispatch: any) => void;
|
|
36
36
|
}
|
|
37
37
|
export interface ICrudProps {
|
|
38
|
+
/**
|
|
39
|
+
* Id для Crud
|
|
40
|
+
*/
|
|
38
41
|
crudId?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Режим работы Crud
|
|
44
|
+
*/
|
|
39
45
|
mode?: 'page' | 'modal';
|
|
46
|
+
/**
|
|
47
|
+
* Ссылка на rest
|
|
48
|
+
*/
|
|
40
49
|
restUrl?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Методы rest api
|
|
52
|
+
* @example {}
|
|
53
|
+
*/
|
|
41
54
|
restApi?: IApiRest;
|
|
55
|
+
/**
|
|
56
|
+
* Первичный ключ
|
|
57
|
+
*/
|
|
42
58
|
primaryKey?: 'id' | string;
|
|
59
|
+
/**
|
|
60
|
+
* Ключ запроса
|
|
61
|
+
* @example {}
|
|
62
|
+
*/
|
|
43
63
|
queryKey?: 'id' | string;
|
|
64
|
+
/**
|
|
65
|
+
* Модель
|
|
66
|
+
* @example {}
|
|
67
|
+
*/
|
|
44
68
|
model?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Модель используемая для поиска
|
|
71
|
+
*/
|
|
45
72
|
searchModel?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Параметры для колонки index
|
|
75
|
+
*/
|
|
46
76
|
index?: boolean | ICrudItem;
|
|
77
|
+
/**
|
|
78
|
+
* Параметры для колонки create
|
|
79
|
+
*/
|
|
47
80
|
create?: boolean | ICrudItem;
|
|
81
|
+
/**
|
|
82
|
+
* Параметры для колонки update
|
|
83
|
+
*/
|
|
48
84
|
update?: boolean | ICrudItem;
|
|
85
|
+
/**
|
|
86
|
+
* Представление
|
|
87
|
+
*/
|
|
49
88
|
view?: boolean | ICrudItem;
|
|
89
|
+
/**
|
|
90
|
+
* Параметры для колонки delete
|
|
91
|
+
*/
|
|
50
92
|
delete?: boolean | ICrudItem;
|
|
93
|
+
/**
|
|
94
|
+
* Коллекция элементов
|
|
95
|
+
*/
|
|
51
96
|
items?: ICrudItem[] | {
|
|
52
97
|
[key: string]: ICrudItem;
|
|
53
98
|
};
|
|
99
|
+
/**
|
|
100
|
+
* Параметры Grid
|
|
101
|
+
*/
|
|
54
102
|
grid?: IGridProps | React.ReactNode;
|
|
103
|
+
/**
|
|
104
|
+
* Параметры формы
|
|
105
|
+
*/
|
|
55
106
|
form?: IFormProps | React.ReactNode;
|
|
107
|
+
/**
|
|
108
|
+
* Параметры для колонки detail
|
|
109
|
+
*/
|
|
56
110
|
detail?: any;
|
|
111
|
+
/**
|
|
112
|
+
* Представление для Crud
|
|
113
|
+
*/
|
|
57
114
|
crudView?: CustomView;
|
|
115
|
+
/**
|
|
116
|
+
* Функция-обработчик ошибок
|
|
117
|
+
* @param error - ошибка
|
|
118
|
+
* @param dispatch - диспатч
|
|
119
|
+
*/
|
|
58
120
|
errorHandler?: (error: any, dispatch: any) => void;
|
|
59
121
|
[key: string]: any;
|
|
60
122
|
}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { IFieldWrapperInputProps } from '../Field/fieldWrapper';
|
|
3
|
-
export interface IBlankFieldProps extends IFieldWrapperInputProps {
|
|
3
|
+
export interface IBlankFieldProps extends IFieldWrapperInputProps, IUiComponent {
|
|
4
|
+
/**
|
|
5
|
+
* Текст для отображения
|
|
6
|
+
* @example 'Hello World!'
|
|
7
|
+
*/
|
|
4
8
|
text?: string | React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Дочерние элементы
|
|
11
|
+
*/
|
|
5
12
|
children?: React.ReactNode;
|
|
6
13
|
}
|
|
7
14
|
declare const _default: import("../Field/fieldWrapper").FieldWrapperComponent<IBlankFieldProps>;
|
|
@@ -10,7 +10,7 @@ export interface IButtonBadge {
|
|
|
10
10
|
* Кнопка или ссылка. Используется в интерфейсе для выполнения какого-либо действия по клику (onClick),
|
|
11
11
|
* смена страницы в рамках роутинга (goToRoute), переход по внешней ссылке (url) или отправки формы (submit form)
|
|
12
12
|
*/
|
|
13
|
-
export interface IButtonProps {
|
|
13
|
+
export interface IButtonProps extends IUiComponent {
|
|
14
14
|
/**
|
|
15
15
|
* Текст кнопки или ссылки
|
|
16
16
|
* @example Save
|
|
@@ -71,7 +71,7 @@ export interface IButtonProps {
|
|
|
71
71
|
target?: string;
|
|
72
72
|
/**
|
|
73
73
|
* Ссылка на внешнюю страницу, используется совместно с свойством `link`
|
|
74
|
-
* @example https://
|
|
74
|
+
* @example https://kozhindev.com
|
|
75
75
|
*/
|
|
76
76
|
url?: string;
|
|
77
77
|
/**
|
|
@@ -96,20 +96,6 @@ export interface IButtonProps {
|
|
|
96
96
|
* @example true
|
|
97
97
|
*/
|
|
98
98
|
block?: boolean;
|
|
99
|
-
/**
|
|
100
|
-
* Объект CSS стилей
|
|
101
|
-
* @example {width: '45%'}
|
|
102
|
-
*/
|
|
103
|
-
style?: CustomStyle;
|
|
104
|
-
/**
|
|
105
|
-
* Дополнительный CSS-класс для кнопки или ссылки
|
|
106
|
-
*/
|
|
107
|
-
className?: CssClassName;
|
|
108
|
-
/**
|
|
109
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
110
|
-
* @example MyCustomView
|
|
111
|
-
*/
|
|
112
|
-
view?: CustomView;
|
|
113
99
|
/**
|
|
114
100
|
* Вложенные элементы
|
|
115
101
|
*/
|
|
@@ -4,24 +4,15 @@ import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fiel
|
|
|
4
4
|
* CheckboxField
|
|
5
5
|
* Одиночный чекбокс. Используется в формах для отметки булевого значения.
|
|
6
6
|
*/
|
|
7
|
-
export interface ICheckboxFieldProps extends IFieldWrapperInputProps {
|
|
7
|
+
export interface ICheckboxFieldProps extends IFieldWrapperInputProps, IUiComponent {
|
|
8
8
|
/**
|
|
9
|
-
* Свойства для элемента
|
|
9
|
+
* Свойства для элемента input
|
|
10
10
|
* @example {onKeyDown: ...}
|
|
11
11
|
*/
|
|
12
12
|
inputProps?: any;
|
|
13
|
-
/**
|
|
14
|
-
* Дополнительный CSS-класс для элемента \<input /\>
|
|
15
|
-
*/
|
|
16
|
-
className?: CssClassName;
|
|
17
|
-
/**
|
|
18
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
19
|
-
* @example MyCustomView
|
|
20
|
-
*/
|
|
21
|
-
view?: CustomView;
|
|
22
13
|
/**
|
|
23
14
|
* Флаг определяющий включен ли элемент
|
|
24
|
-
* @example
|
|
15
|
+
* @example true
|
|
25
16
|
*/
|
|
26
17
|
checked?: boolean;
|
|
27
18
|
[key: string]: any;
|
|
@@ -7,21 +7,12 @@ import { ICheckboxFieldViewProps } from '../CheckboxField/CheckboxField';
|
|
|
7
7
|
* CheckboxListField
|
|
8
8
|
* Список с чекбоксами. Используется в формах для выбора нескольких значений.
|
|
9
9
|
*/
|
|
10
|
-
export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'
|
|
10
|
+
export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'>, IUiComponent {
|
|
11
11
|
/**
|
|
12
|
-
* Свойства для элемента
|
|
12
|
+
* Свойства для элемента input
|
|
13
13
|
* @example {onKeyDown: ...}
|
|
14
14
|
*/
|
|
15
15
|
inputProps?: any;
|
|
16
|
-
/**
|
|
17
|
-
* Дополнительный CSS-класс для элемента отображения
|
|
18
|
-
*/
|
|
19
|
-
className?: CssClassName;
|
|
20
|
-
/**
|
|
21
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
22
|
-
* @example MyCustomView
|
|
23
|
-
*/
|
|
24
|
-
view?: CustomView;
|
|
25
16
|
/**
|
|
26
17
|
* Ориентация списка
|
|
27
18
|
*/
|
|
@@ -46,7 +46,13 @@ export interface IDateRangeFieldProps extends IDateInputStateInput, Omit<IFieldW
|
|
|
46
46
|
* @example true
|
|
47
47
|
*/
|
|
48
48
|
showRemove?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Свойства для input элемента from
|
|
51
|
+
*/
|
|
49
52
|
inputPropsFrom?: any;
|
|
53
|
+
/**
|
|
54
|
+
* Свойства для input элемента to
|
|
55
|
+
*/
|
|
50
56
|
inputPropsTo?: any;
|
|
51
57
|
/**
|
|
52
58
|
* Свойства для компонента Calendar
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { IAccordionItemViewProps } from '
|
|
2
|
+
import { IAccordionItemViewProps } from '../../../ui/content/Accordion/Accordion';
|
|
3
3
|
import { DataProviderItems, IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
4
4
|
import { IDataSelectConfig } from '../../../hooks/useDataSelect';
|
|
5
5
|
import { IFieldWrapperInputProps } from '../../form/Field/fieldWrapper';
|
|
@@ -26,13 +26,15 @@ export interface IDropDownFieldItemViewProps extends IAccordionItemViewProps, Pi
|
|
|
26
26
|
hoveredId: string;
|
|
27
27
|
onItemSelect: (id: PrimaryKey | any) => void;
|
|
28
28
|
onItemHover: (id: PrimaryKey | any) => void;
|
|
29
|
+
isItemToSelectAll: boolean;
|
|
30
|
+
isSelectedAll: boolean;
|
|
29
31
|
[key: string]: any;
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* DropDownField
|
|
33
35
|
* Выпадающий список для выбора одного или нескольких значений
|
|
34
36
|
*/
|
|
35
|
-
export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'
|
|
37
|
+
export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent {
|
|
36
38
|
/**
|
|
37
39
|
* Placeholder подсказка
|
|
38
40
|
* @example Your text...
|
|
@@ -48,26 +50,15 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
48
50
|
* @example true
|
|
49
51
|
*/
|
|
50
52
|
outline?: boolean;
|
|
51
|
-
inputProps?: any;
|
|
52
|
-
/**
|
|
53
|
-
* Дополнительный CSS-класс
|
|
54
|
-
*/
|
|
55
|
-
className?: CssClassName;
|
|
56
53
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @example {width: '45%'}
|
|
54
|
+
* Параметры для элемента input
|
|
59
55
|
*/
|
|
60
|
-
|
|
56
|
+
inputProps?: any;
|
|
61
57
|
/**
|
|
62
58
|
* Показать иконку сброса для выбранных значений
|
|
63
59
|
* @example true
|
|
64
60
|
*/
|
|
65
61
|
showReset?: boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
68
|
-
* @example MyCustomView
|
|
69
|
-
*/
|
|
70
|
-
view?: CustomView;
|
|
71
62
|
/**
|
|
72
63
|
* Атрибут, в котором должны лежать дочерние элементы списка (для группировки)
|
|
73
64
|
* Если аттрибут не задан - группировка не производится
|
|
@@ -89,9 +80,17 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
89
80
|
items?: IDropDownFieldItem[] | DataProviderItems;
|
|
90
81
|
/**
|
|
91
82
|
* Нужно ли использовать троеточие при переполнении DropDownField
|
|
92
|
-
* @example
|
|
83
|
+
* @example true
|
|
93
84
|
*/
|
|
94
85
|
showEllipses?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Добавляет кнопку при нажатии на которую выбираются все элементы, работает только при multiple: true
|
|
88
|
+
* @example {label: 'All', id: 'all'}
|
|
89
|
+
*/
|
|
90
|
+
itemToSelectAll?: boolean | {
|
|
91
|
+
label: string;
|
|
92
|
+
id: string;
|
|
93
|
+
};
|
|
95
94
|
[key: string]: any;
|
|
96
95
|
}
|
|
97
96
|
export interface IDropDownFieldViewProps extends IDropDownFieldProps {
|
|
@@ -119,6 +118,10 @@ export interface IDropDownFieldViewProps extends IDropDownFieldProps {
|
|
|
119
118
|
isSearchAutoFocus?: boolean;
|
|
120
119
|
primaryKey: string;
|
|
121
120
|
items: IDropDownFieldItem[];
|
|
121
|
+
itemToSelectAll: null | {
|
|
122
|
+
label: string;
|
|
123
|
+
id: string;
|
|
124
|
+
};
|
|
122
125
|
}
|
|
123
126
|
declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDropDownFieldProps>;
|
|
124
127
|
export default _default;
|
|
@@ -51,6 +51,7 @@ var react_1 = __importStar(require("react"));
|
|
|
51
51
|
var react_use_1 = require("react-use");
|
|
52
52
|
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
53
53
|
var includes_1 = __importDefault(require("lodash-es/includes"));
|
|
54
|
+
var isPlainObject_1 = __importDefault(require("lodash-es/isPlainObject"));
|
|
54
55
|
var hooks_1 = require("../../../hooks");
|
|
55
56
|
var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
|
|
56
57
|
exports.GROUP_CONTENT_TYPE = 'group';
|
|
@@ -58,12 +59,25 @@ exports.CHECKBOX_CONTENT_TYPE = 'checkbox';
|
|
|
58
59
|
exports.RADIO_CONTENT_TYPE = 'radio';
|
|
59
60
|
exports.ICON_CONTENT_TYPE = 'icon';
|
|
60
61
|
exports.IMG_CONTENT_TYPE = 'img';
|
|
62
|
+
var normalizeItemToSelectAll = function (itemToSelectAll) {
|
|
63
|
+
if (!itemToSelectAll) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (typeof itemToSelectAll !== 'boolean' && (0, isPlainObject_1["default"])(itemToSelectAll)) {
|
|
67
|
+
return itemToSelectAll;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
id: 'all',
|
|
71
|
+
label: __('Все')
|
|
72
|
+
};
|
|
73
|
+
};
|
|
61
74
|
function DropDownField(props) {
|
|
62
75
|
var components = (0, hooks_1.useComponents)();
|
|
63
76
|
// Query state
|
|
64
77
|
var _a = (0, react_1.useState)(''), query = _a[0], setQuery = _a[1];
|
|
65
78
|
var hasGroup = !!props.groupAttribute;
|
|
66
79
|
var _b = react_1["default"].useState([]), selectedAccordionItems = _b[0], setSelectedAccordionItems = _b[1];
|
|
80
|
+
var normalizedItemToSelectAll = react_1["default"].useMemo(function () { return normalizeItemToSelectAll(props.itemToSelectAll); }, [props.itemToSelectAll]);
|
|
67
81
|
var toggleCollapse = function (indexSelected) {
|
|
68
82
|
if (selectedAccordionItems.includes(indexSelected)) {
|
|
69
83
|
var newState = __spreadArray([], selectedAccordionItems, true);
|
|
@@ -97,7 +111,7 @@ function DropDownField(props) {
|
|
|
97
111
|
items: items,
|
|
98
112
|
sourceItems: sourceItems,
|
|
99
113
|
inputValue: props.input.value
|
|
100
|
-
}), isOpened = _d.isOpened, setIsOpened = _d.setIsOpened, setIsFocused = _d.setIsFocused, hoveredId = _d.hoveredId, setHoveredId = _d.setHoveredId, selectedIds = _d.selectedIds, setSelectedIds = _d.setSelectedIds, selectedItems = _d.selectedItems;
|
|
114
|
+
}), isOpened = _d.isOpened, setIsOpened = _d.setIsOpened, setIsFocused = _d.setIsFocused, hoveredId = _d.hoveredId, setHoveredId = _d.setHoveredId, selectedIds = _d.selectedIds, setSelectedIds = _d.setSelectedIds, selectedItems = _d.selectedItems, setSelectedAll = _d.setSelectedAll, isSelectedAll = _d.isSelectedAll;
|
|
101
115
|
var onOpen = (0, react_1.useCallback)(function () {
|
|
102
116
|
setQuery('');
|
|
103
117
|
setIsFocused(true);
|
|
@@ -108,8 +122,12 @@ function DropDownField(props) {
|
|
|
108
122
|
setHoveredId(id);
|
|
109
123
|
}, [setHoveredId]);
|
|
110
124
|
var onItemSelect = (0, react_1.useCallback)(function (id) {
|
|
125
|
+
if (id === (normalizedItemToSelectAll === null || normalizedItemToSelectAll === void 0 ? void 0 : normalizedItemToSelectAll.id)) {
|
|
126
|
+
setSelectedAll();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
111
129
|
setSelectedIds(id);
|
|
112
|
-
}, [setSelectedIds]);
|
|
130
|
+
}, [normalizedItemToSelectAll, setSelectedAll, setSelectedIds]);
|
|
113
131
|
var onItemRemove = (0, react_1.useCallback)(function (id) {
|
|
114
132
|
setSelectedIds(selectedIds.filter(function (i) { return i !== id; }));
|
|
115
133
|
}, [selectedIds, setSelectedIds]);
|
|
@@ -165,7 +183,9 @@ function DropDownField(props) {
|
|
|
165
183
|
onItemSelect: onItemSelect,
|
|
166
184
|
isShowMore: (0, includes_1["default"])(selectedAccordionItems || [], item.id),
|
|
167
185
|
childIndex: item.id,
|
|
168
|
-
toggleCollapse: toggleCollapse
|
|
186
|
+
toggleCollapse: toggleCollapse,
|
|
187
|
+
isItemToSelectAll: item.id === (normalizedItemToSelectAll === null || normalizedItemToSelectAll === void 0 ? void 0 : normalizedItemToSelectAll.id),
|
|
188
|
+
isSelectedAll: isSelectedAll
|
|
169
189
|
}); };
|
|
170
190
|
var renderItem = function (item) {
|
|
171
191
|
if (hasGroup && Array.isArray(item[props.groupAttribute])) {
|
|
@@ -182,7 +202,7 @@ function DropDownField(props) {
|
|
|
182
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,
|
|
183
203
|
// TODO onFocus
|
|
184
204
|
// TODO onBlur
|
|
185
|
-
onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup }));
|
|
205
|
+
onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup, itemToSelectAll: normalizedItemToSelectAll }));
|
|
186
206
|
}
|
|
187
207
|
DropDownField.defaultProps = {
|
|
188
208
|
primaryKey: 'id',
|
|
@@ -195,6 +215,7 @@ DropDownField.defaultProps = {
|
|
|
195
215
|
autoComplete: false,
|
|
196
216
|
showReset: false,
|
|
197
217
|
multiple: false,
|
|
198
|
-
isSearchAutoFocus: true
|
|
218
|
+
isSearchAutoFocus: true,
|
|
219
|
+
itemToSelectAll: false
|
|
199
220
|
};
|
|
200
221
|
exports["default"] = (0, fieldWrapper_1["default"])('DropDownField', DropDownField);
|
|
@@ -44,7 +44,13 @@ export interface IFieldWrapperInputProps {
|
|
|
44
44
|
* Input ID для связи поля с label
|
|
45
45
|
*/
|
|
46
46
|
id?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Значение для поля
|
|
49
|
+
*/
|
|
47
50
|
value?: any;
|
|
51
|
+
/**
|
|
52
|
+
* Callback-функция, которая вызывается при изменении данных
|
|
53
|
+
*/
|
|
48
54
|
onChange?: (...args: any[]) => any;
|
|
49
55
|
/**
|
|
50
56
|
* Ошибки в поле
|
|
@@ -52,10 +58,6 @@ export interface IFieldWrapperInputProps {
|
|
|
52
58
|
*/
|
|
53
59
|
errors?: string[];
|
|
54
60
|
date?: any;
|
|
55
|
-
/**
|
|
56
|
-
* Темная тема
|
|
57
|
-
*/
|
|
58
|
-
dark?: boolean;
|
|
59
61
|
/**
|
|
60
62
|
* Размер поля
|
|
61
63
|
*/
|
|
@@ -71,9 +73,21 @@ export interface IFieldWrapperInputProps {
|
|
|
71
73
|
[key: string]: any;
|
|
72
74
|
}
|
|
73
75
|
export interface IFieldWrapperOutputProps {
|
|
76
|
+
/**
|
|
77
|
+
* Id формы
|
|
78
|
+
*/
|
|
74
79
|
formId?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Id компонента
|
|
82
|
+
*/
|
|
75
83
|
componentId?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Коллекция ошибок
|
|
86
|
+
*/
|
|
76
87
|
errors?: string[];
|
|
88
|
+
/**
|
|
89
|
+
* Параметры для input элемента
|
|
90
|
+
*/
|
|
77
91
|
input?: {
|
|
78
92
|
name?: string;
|
|
79
93
|
value?: any;
|
|
@@ -3,11 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
* FieldLayout
|
|
4
4
|
* Специальный шаблон для поля, который настраивает его расположение внутри формы, рендерит лейбл, подсказки и ошибки
|
|
5
5
|
*/
|
|
6
|
-
export interface IFieldLayoutProps {
|
|
7
|
-
/**
|
|
8
|
-
* Дополнительный CSS-класс
|
|
9
|
-
*/
|
|
10
|
-
className?: CssClassName;
|
|
6
|
+
export interface IFieldLayoutProps extends IUiComponent {
|
|
11
7
|
/**
|
|
12
8
|
* Название поля либо отмена отображение поля (false)
|
|
13
9
|
* @example 'Visible'
|
|
@@ -31,14 +27,9 @@ export interface IFieldLayoutProps {
|
|
|
31
27
|
errors?: string[];
|
|
32
28
|
/**
|
|
33
29
|
* Отображать ли состояние successful на поле
|
|
34
|
-
* @example
|
|
30
|
+
* @example 'true'
|
|
35
31
|
*/
|
|
36
32
|
successful?: boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Переопределение view React компонента для кастомизации отображения
|
|
39
|
-
* @example MyCustomView
|
|
40
|
-
*/
|
|
41
|
-
view?: CustomView;
|
|
42
33
|
[key: string]: any;
|
|
43
34
|
}
|
|
44
35
|
export interface IFieldLayoutViewProps {
|