@steroidsjs/core 3.0.0-beta.15 → 3.0.0-beta.16
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/hoc/bem.d.ts +1 -1
- package/index.d.ts +2 -2
- package/package.json +1 -1
- package/reducers/router.js +2 -2
- package/ui/content/Accordion/Accordion.d.ts +2 -2
- package/ui/content/Alert/Alert.d.ts +2 -2
- package/ui/content/Avatar/AvatarGroup.d.ts +3 -3
- package/ui/content/Badge/Badge.d.ts +2 -2
- package/ui/content/Card/Card.d.ts +2 -2
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +1 -1
- package/ui/content/Detail/Detail.d.ts +1 -1
- package/ui/content/DropDown/DropDown.d.ts +1 -1
- package/ui/content/Icon/Icon.d.ts +2 -2
- package/ui/form/Button/Button.d.ts +2 -2
- package/ui/form/CheckboxField/CheckboxField.d.ts +5 -0
- package/ui/form/CheckboxField/CheckboxField.js +30 -6
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +7 -1
- package/ui/form/CheckboxListField/CheckboxListField.js +32 -7
- package/ui/form/DateField/DateField.d.ts +1 -1
- package/ui/form/DateRangeField/DateRangeField.d.ts +1 -1
- package/ui/form/DateTimeField/DateTimeField.d.ts +1 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +1 -1
- package/ui/form/DropDownField/DropDownField.d.ts +24 -21
- package/ui/form/DropDownField/DropDownField.js +87 -6
- package/ui/form/Field/fieldWrapper.d.ts +1 -1
- package/ui/form/FieldLayout/FieldLayout.d.ts +2 -2
- package/ui/form/FieldList/FieldList.d.ts +3 -3
- package/ui/form/FieldSet/FieldSet.d.ts +1 -1
- package/ui/form/Form/Form.d.ts +2 -2
- package/ui/form/InputField/InputField.d.ts +2 -2
- package/ui/form/RadioField/RadioField.d.ts +35 -0
- package/ui/form/RadioField/RadioField.js +61 -0
- package/ui/form/RadioField/index.d.ts +2 -0
- package/ui/{list/LayoutNames/demo/basic.js → form/RadioField/index.js} +2 -7
- package/ui/form/RadioListField/RadioListField.d.ts +6 -0
- package/ui/form/RadioListField/RadioListField.js +31 -2
- package/ui/form/TimeField/TimeField.d.ts +1 -1
- package/ui/form/index.d.ts +3 -1
- package/ui/form/index.js +4 -1
- package/ui/layout/Header/Header.d.ts +1 -1
- package/ui/layout/Loader/Loader.d.ts +1 -1
- package/ui/layout/Notifications/Notifications.d.ts +1 -1
- package/ui/layout/Skeleton/Skeleton.d.ts +2 -2
- package/ui/list/CheckboxColumn/CheckboxColumn.d.ts +1 -1
- package/ui/list/ControlsColumn/ControlsColumn.d.ts +1 -1
- package/ui/list/Grid/Grid.d.ts +1 -1
- package/ui/list/Grid/demo/sort.js +4 -2
- package/ui/list/Pagination/Pagination.d.ts +16 -6
- package/ui/list/Pagination/Pagination.js +15 -7
- package/ui/list/PaginationSize/demo/basic.js +2 -3
- package/ui/list/PaginationSize/demo/size.js +2 -3
- package/ui/list/SearchForm/demo/basic.js +5 -2
- package/ui/list/Steps/Steps.d.ts +3 -3
- package/ui/modal/TwoFactorModal/TwoFactorModal.d.ts +1 -1
- package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +9 -0
- package/ui/nav/Controls/Controls.d.ts +3 -3
- package/ui/nav/Nav/Nav.d.ts +2 -2
- package/ui/nav/Tree/Tree.d.ts +1 -1
- package/ui/typography/Text/Text.d.ts +2 -2
- package/ui/typography/Title/Title.d.ts +2 -2
- package/ui/form/CheckboxListField/demo/basic.d.ts +0 -9
- package/ui/form/CheckboxListField/demo/basic.js +0 -43
- package/ui/form/CheckboxListField/demo/disabled.d.ts +0 -8
- package/ui/form/CheckboxListField/demo/disabled.js +0 -38
- package/ui/form/CheckboxListField/demo/errors.d.ts +0 -8
- package/ui/form/CheckboxListField/demo/errors.js +0 -38
- package/ui/form/CheckboxListField/demo/required.d.ts +0 -8
- package/ui/form/CheckboxListField/demo/required.js +0 -38
- package/ui/list/LayoutNames/demo/basic.d.ts +0 -7
- package/ui/list/List/demo/basic.d.ts +0 -12
- package/ui/list/List/demo/basic.js +0 -61
- package/ui/list/List/demo/condition.d.ts +0 -8
- package/ui/list/List/demo/condition.js +0 -90
- package/ui/list/List/demo/empty.d.ts +0 -8
- package/ui/list/List/demo/empty.js +0 -36
- package/ui/list/List/demo/layout.d.ts +0 -8
- package/ui/list/List/demo/layout.js +0 -49
- package/ui/list/List/demo/load-more.d.ts +0 -8
- package/ui/list/List/demo/load-more.js +0 -45
- package/ui/list/List/demo/pagination.d.ts +0 -8
- package/ui/list/List/demo/pagination.js +0 -45
- package/ui/list/List/demo/search-form.d.ts +0 -30
- package/ui/list/List/demo/search-form.js +0 -107
- package/ui/list/List/demo/sort.d.ts +0 -17
- package/ui/list/List/demo/sort.js +0 -92
- package/ui/list/Pagination/demo/basic.d.ts +0 -8
- package/ui/list/Pagination/demo/basic.js +0 -45
- package/ui/list/Pagination/demo/load-more.d.ts +0 -8
- package/ui/list/Pagination/demo/load-more.js +0 -41
- package/ui/list/Pagination/demo/sizes.d.ts +0 -8
- package/ui/list/Pagination/demo/sizes.js +0 -48
- package/ui/nav/Breadcrumbs/demo/basic.d.ts +0 -8
- package/ui/nav/Breadcrumbs/demo/basic.js +0 -37
- package/ui/nav/Breadcrumbs/demo/items.d.ts +0 -8
- package/ui/nav/Breadcrumbs/demo/items.js +0 -42
- package/ui/nav/Breadcrumbs/demo/page-title.d.ts +0 -8
- package/ui/nav/Breadcrumbs/demo/page-title.js +0 -37
package/hoc/bem.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { IBem } from '../hooks/useBem';
|
|
|
5
5
|
* Прокидывает утилиту `bem` для правильной генерации CSS классов по методологии БЭМ (блок, элемент, модификатор)
|
|
6
6
|
*/
|
|
7
7
|
export interface IBemHocInput {
|
|
8
|
-
style?:
|
|
8
|
+
style?: CustomStyle;
|
|
9
9
|
}
|
|
10
10
|
export interface IBemHocOutput extends IComponentsHocOutput {
|
|
11
11
|
bem?: IBem;
|
package/index.d.ts
CHANGED
|
@@ -57,8 +57,8 @@ declare type FormLayoutName = 'default' | 'vertical' | 'inline' | string;
|
|
|
57
57
|
*/
|
|
58
58
|
declare type FormLayout = FormLayoutName | boolean | {
|
|
59
59
|
layout?: FormLayoutName | boolean,
|
|
60
|
-
className?:
|
|
61
|
-
style?:
|
|
60
|
+
className?: CssClassName,
|
|
61
|
+
style?: CustomStyle,
|
|
62
62
|
label?: boolean,
|
|
63
63
|
cols?: number[],
|
|
64
64
|
[key: string]: any,
|
package/package.json
CHANGED
package/reducers/router.js
CHANGED
|
@@ -135,13 +135,13 @@ exports.normalizeRoutes = normalizeRoutes;
|
|
|
135
135
|
*/
|
|
136
136
|
var findRecursive = function (item, predicate, pathItems) {
|
|
137
137
|
if (pathItems === void 0) { pathItems = null; }
|
|
138
|
-
if (((0, isFunction_1["default"])(predicate) && predicate(item)) || predicate === item.id) {
|
|
138
|
+
if (((0, isFunction_1["default"])(predicate) && predicate(item)) || predicate === (item === null || item === void 0 ? void 0 : item.id)) {
|
|
139
139
|
if (pathItems) {
|
|
140
140
|
pathItems.push(item);
|
|
141
141
|
}
|
|
142
142
|
return item;
|
|
143
143
|
}
|
|
144
|
-
if (Array.isArray((item.items))) {
|
|
144
|
+
if (Array.isArray((item === null || item === void 0 ? void 0 : item.items))) {
|
|
145
145
|
var foundedItem = item.items.find(function (subItem) { return (0, exports.findRecursive)(subItem, predicate, pathItems); }) || null;
|
|
146
146
|
if (foundedItem && pathItems) {
|
|
147
147
|
pathItems.push(item);
|
|
@@ -4,8 +4,8 @@ export interface IAccordionIcon {
|
|
|
4
4
|
close: React.ReactElement | string;
|
|
5
5
|
}
|
|
6
6
|
export interface IAccordionCommonProps {
|
|
7
|
-
view?:
|
|
8
|
-
style?:
|
|
7
|
+
view?: CustomView;
|
|
8
|
+
style?: CustomStyle;
|
|
9
9
|
children?: any;
|
|
10
10
|
/**
|
|
11
11
|
* Дополнительный CSS-класс
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export interface IAlertProps {
|
|
3
|
-
view?:
|
|
3
|
+
view?: CustomView;
|
|
4
4
|
className?: CssClassName;
|
|
5
5
|
/**
|
|
6
6
|
* Дочерние элементы
|
|
@@ -19,7 +19,7 @@ export interface IAlertProps {
|
|
|
19
19
|
* @example {'Please, check your email.'}
|
|
20
20
|
*/
|
|
21
21
|
description?: string;
|
|
22
|
-
style?:
|
|
22
|
+
style?: CustomStyle;
|
|
23
23
|
/**
|
|
24
24
|
* Нужно ли отображать кнопку, чтобы закрыть Оповещение
|
|
25
25
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
export interface AvatarGroupProps {
|
|
3
|
-
view?:
|
|
3
|
+
view?: CustomView;
|
|
4
4
|
children?: CustomView[];
|
|
5
|
-
style?:
|
|
5
|
+
style?: CustomStyle;
|
|
6
6
|
maxCount?: number;
|
|
7
7
|
}
|
|
8
8
|
export type IAvatarGroupViewProps = AvatarGroupProps;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
interface ICounter {
|
|
3
3
|
isEnable: boolean;
|
|
4
4
|
content: string | number;
|
|
@@ -37,7 +37,7 @@ export interface IBadgeProps {
|
|
|
37
37
|
* Нужно ли отображать счетчик
|
|
38
38
|
*/
|
|
39
39
|
counter: boolean | ICounter;
|
|
40
|
-
style?:
|
|
40
|
+
style?: CustomStyle;
|
|
41
41
|
/**
|
|
42
42
|
* Размер для badge
|
|
43
43
|
*/
|
|
@@ -40,11 +40,11 @@ export interface ICardProps {
|
|
|
40
40
|
* Коллекция ссылок
|
|
41
41
|
* @example {}
|
|
42
42
|
*/
|
|
43
|
-
links
|
|
43
|
+
links?: ILinkProps[];
|
|
44
44
|
/**
|
|
45
45
|
* Коллекция кнопок
|
|
46
46
|
*/
|
|
47
|
-
buttons
|
|
47
|
+
buttons?: IButtonProps[];
|
|
48
48
|
/**
|
|
49
49
|
* Объект CSS стилей
|
|
50
50
|
* @example {width: '30px'}
|
|
@@ -8,7 +8,7 @@ interface ICopyToClipboardProps extends IBemHocOutput, IConnectHocOutput {
|
|
|
8
8
|
level?: string;
|
|
9
9
|
timeOut?: string;
|
|
10
10
|
};
|
|
11
|
-
className?:
|
|
11
|
+
className?: CssClassName;
|
|
12
12
|
children?: any;
|
|
13
13
|
}
|
|
14
14
|
export default function CopyToClipboard(props: ICopyToClipboardProps): any;
|
|
@@ -14,7 +14,7 @@ export interface IDropDownProps extends IAbsolutePositioningInputProps {
|
|
|
14
14
|
* Переопределение view React компонента для кастомизациии отображения
|
|
15
15
|
* @example MyCustomView
|
|
16
16
|
*/
|
|
17
|
-
view?:
|
|
17
|
+
view?: CustomView;
|
|
18
18
|
/**
|
|
19
19
|
* В каком случае закрывать DropDown. По-умолчанию - `click-away`
|
|
20
20
|
* @example click-any
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
/**
|
|
3
3
|
* Install the latest free version of Font Awesome via yarn:
|
|
4
4
|
* ```
|
|
@@ -33,7 +33,7 @@ export interface IIconProps {
|
|
|
33
33
|
* Переопределение view React компонента для кастомизации отображения
|
|
34
34
|
* @example MyCustomView
|
|
35
35
|
*/
|
|
36
|
-
view?:
|
|
36
|
+
view?: CustomView;
|
|
37
37
|
/**
|
|
38
38
|
* Должен ли данный элемент участвовать в последовательной навигации
|
|
39
39
|
*/
|
|
@@ -100,7 +100,7 @@ export interface IButtonProps {
|
|
|
100
100
|
* Объект CSS стилей
|
|
101
101
|
* @example {width: '45%'}
|
|
102
102
|
*/
|
|
103
|
-
style?:
|
|
103
|
+
style?: CustomStyle;
|
|
104
104
|
/**
|
|
105
105
|
* Дополнительный CSS-класс для кнопки или ссылки
|
|
106
106
|
*/
|
|
@@ -109,7 +109,7 @@ export interface IButtonProps {
|
|
|
109
109
|
* Переопределение view React компонента для кастомизации отображения
|
|
110
110
|
* @example MyCustomView
|
|
111
111
|
*/
|
|
112
|
-
view?:
|
|
112
|
+
view?: CustomView;
|
|
113
113
|
/**
|
|
114
114
|
* Вложенные элементы
|
|
115
115
|
*/
|
|
@@ -19,6 +19,11 @@ export interface ICheckboxFieldProps extends IFieldWrapperInputProps {
|
|
|
19
19
|
* @example MyCustomView
|
|
20
20
|
*/
|
|
21
21
|
view?: CustomView;
|
|
22
|
+
/**
|
|
23
|
+
* Флаг определяющий включен ли элемент
|
|
24
|
+
* @example {'true'}
|
|
25
|
+
*/
|
|
26
|
+
checked?: boolean;
|
|
22
27
|
[key: string]: any;
|
|
23
28
|
}
|
|
24
29
|
export interface ICheckboxFieldViewProps extends ICheckboxFieldProps, IFieldWrapperOutputProps {
|
|
@@ -10,22 +10,46 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
13
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
38
|
};
|
|
16
39
|
exports.__esModule = true;
|
|
17
|
-
var
|
|
40
|
+
var React = __importStar(require("react"));
|
|
18
41
|
var react_1 = require("react");
|
|
19
42
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
20
43
|
var hooks_1 = require("../../../hooks");
|
|
21
44
|
function CheckboxField(props) {
|
|
22
45
|
var components = (0, hooks_1.useComponents)();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
var onChangeHandler = React.useCallback(function () {
|
|
47
|
+
props.input.onChange(!props.input.value);
|
|
48
|
+
if (props.onChange) {
|
|
49
|
+
props.onChange();
|
|
26
50
|
}
|
|
27
|
-
});
|
|
28
|
-
var inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, type: 'checkbox', checked: !!props.input.value, onChange:
|
|
51
|
+
}, [props]);
|
|
52
|
+
var inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, type: 'checkbox', checked: !!props.input.value, onChange: onChangeHandler, disabled: props.disabled }, props.inputProps)); }, [onChangeHandler, props.disabled, props.input.name, props.input.value, props.inputProps]);
|
|
29
53
|
return components.ui.renderView(props.view || 'form.CheckboxFieldView', __assign(__assign({}, props), { inputProps: inputProps }));
|
|
30
54
|
}
|
|
31
55
|
CheckboxField.defaultProps = {
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../../../ui/form/Field/fieldWrapper';
|
|
3
3
|
import { IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
4
4
|
import { IDataSelectConfig } from '../../../hooks/useDataSelect';
|
|
5
|
+
import { ICheckboxFieldViewProps } from '../CheckboxField/CheckboxField';
|
|
5
6
|
/**
|
|
6
7
|
* CheckboxListField
|
|
7
8
|
* Список с чекбоксами. Используется в формах для выбора нескольких значений.
|
|
@@ -21,6 +22,10 @@ export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataP
|
|
|
21
22
|
* @example MyCustomView
|
|
22
23
|
*/
|
|
23
24
|
view?: CustomView;
|
|
25
|
+
/**
|
|
26
|
+
* Ориентация списка
|
|
27
|
+
*/
|
|
28
|
+
orientation?: 'horizontal' | 'vertical';
|
|
24
29
|
[key: string]: any;
|
|
25
30
|
}
|
|
26
31
|
export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
|
|
@@ -38,7 +43,8 @@ export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
|
|
|
38
43
|
}[];
|
|
39
44
|
selectedIds: (PrimaryKey | any)[];
|
|
40
45
|
onItemSelect: (id: PrimaryKey | any) => void;
|
|
41
|
-
|
|
46
|
+
orientation?: 'horizontal' | 'vertical';
|
|
47
|
+
renderCheckbox: (checkboxProps: ICheckboxFieldViewProps) => JSX.Element;
|
|
42
48
|
}
|
|
43
49
|
declare const _default: import("../../../ui/form/Field/fieldWrapper").FieldWrapperComponent<ICheckboxListFieldProps>;
|
|
44
50
|
export default _default;
|
|
@@ -10,34 +10,56 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
13
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
38
|
};
|
|
16
39
|
exports.__esModule = true;
|
|
40
|
+
var React = __importStar(require("react"));
|
|
17
41
|
var react_1 = require("react");
|
|
18
42
|
var react_use_1 = require("react-use");
|
|
19
43
|
var hooks_1 = require("../../../hooks");
|
|
20
44
|
var fieldWrapper_1 = __importDefault(require("../../../ui/form/Field/fieldWrapper"));
|
|
21
45
|
function CheckboxListField(props) {
|
|
22
46
|
var components = (0, hooks_1.useComponents)();
|
|
47
|
+
var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
|
|
23
48
|
// Data Provider
|
|
24
49
|
var items = (0, hooks_1.useDataProvider)({
|
|
25
50
|
items: props.items
|
|
26
51
|
}).items;
|
|
27
52
|
// Data select
|
|
28
53
|
var _a = (0, hooks_1.useDataSelect)({
|
|
54
|
+
selectedIds: inputSelectedIds,
|
|
29
55
|
multiple: props.multiple,
|
|
30
|
-
selectedIds: props.selectedIds,
|
|
31
56
|
primaryKey: props.primaryKey,
|
|
32
57
|
items: items,
|
|
33
58
|
inputValue: props.input.value
|
|
34
|
-
}),
|
|
59
|
+
}), selectedIds = _a.selectedIds, setSelectedIds = _a.setSelectedIds;
|
|
35
60
|
var onItemSelect = (0, react_1.useCallback)(function (id) {
|
|
36
61
|
setSelectedIds(id);
|
|
37
62
|
}, [setSelectedIds]);
|
|
38
|
-
var onItemHover = (0, react_1.useCallback)(function (id) {
|
|
39
|
-
setHoveredId(id);
|
|
40
|
-
}, [setHoveredId]);
|
|
41
63
|
var inputProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.inputProps), { type: 'checkbox', name: props.input.name, disabled: props.disabled })); }, [props.disabled, props.input, props.inputProps]);
|
|
42
64
|
// Sync with form
|
|
43
65
|
(0, react_1.useEffect)(function () {
|
|
@@ -54,12 +76,15 @@ function CheckboxListField(props) {
|
|
|
54
76
|
onReset();
|
|
55
77
|
}
|
|
56
78
|
}, [onReset, prevInputValue, props.input.value, selectedIds.length]);
|
|
57
|
-
|
|
79
|
+
var CheckboxFieldView = components.ui.getView('form.CheckboxFieldView');
|
|
80
|
+
var renderCheckbox = function (checkboxProps) { return React.createElement(CheckboxFieldView, __assign({}, checkboxProps)); };
|
|
81
|
+
return components.ui.renderView(props.view || 'form.CheckboxListFieldView', __assign(__assign({}, props), { items: items, inputProps: inputProps, onItemSelect: onItemSelect, selectedIds: selectedIds, renderCheckbox: renderCheckbox }));
|
|
58
82
|
}
|
|
59
83
|
CheckboxListField.defaultProps = {
|
|
60
84
|
disabled: false,
|
|
61
85
|
required: false,
|
|
62
86
|
className: '',
|
|
63
|
-
multiple:
|
|
87
|
+
multiple: false,
|
|
88
|
+
orientation: 'vertical'
|
|
64
89
|
};
|
|
65
90
|
exports["default"] = (0, fieldWrapper_1["default"])('CheckboxListField', CheckboxListField);
|
|
@@ -9,7 +9,7 @@ export interface IDateFieldProps extends IDateInputStateInput {
|
|
|
9
9
|
* Объект CSS стилей
|
|
10
10
|
* @example {width: '45%'}
|
|
11
11
|
*/
|
|
12
|
-
style?:
|
|
12
|
+
style?: CustomStyle;
|
|
13
13
|
/**
|
|
14
14
|
* Переопределение view React компонента для кастомизации отображения
|
|
15
15
|
* @example MyCustomView
|
|
@@ -1,14 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IAccordionCommonViewProps } from 'src/ui/content/Accordion/Accordion';
|
|
2
3
|
import { IDataProviderConfig } from '../../../hooks/useDataProvider';
|
|
3
4
|
import { IDataSelectConfig } from '../../../hooks/useDataSelect';
|
|
4
5
|
import { IFieldWrapperInputProps } from '../../form/Field/fieldWrapper';
|
|
6
|
+
export declare const GROUP_CONTENT_TYPE = "group";
|
|
7
|
+
export declare const CHECKBOX_CONTENT_TYPE = "checkbox";
|
|
8
|
+
export declare const RADIO_CONTENT_TYPE = "radio";
|
|
9
|
+
export declare const ICON_CONTENT_TYPE = "icon";
|
|
10
|
+
export declare const IMG_CONTENT_TYPE = "img";
|
|
5
11
|
export type ContentType = 'checkbox' | 'radio' | 'icon' | 'img';
|
|
12
|
+
export type ItemSwitchType = ContentType | 'group' | string;
|
|
6
13
|
export interface IDropDownFieldItem {
|
|
7
|
-
id: number;
|
|
14
|
+
id: number | string;
|
|
8
15
|
label: string;
|
|
9
16
|
contentType?: ContentType;
|
|
10
17
|
contentSrc?: 'string' | React.ReactElement;
|
|
11
18
|
}
|
|
19
|
+
export interface IDropDownFieldItemViewProps extends IAccordionCommonViewProps, Pick<IDropDownFieldProps, 'itemsContent'> {
|
|
20
|
+
item: IDropDownFieldItem;
|
|
21
|
+
size: Size;
|
|
22
|
+
type: ItemSwitchType;
|
|
23
|
+
selectedIds: (PrimaryKey | any)[];
|
|
24
|
+
groupAttribute: 'string';
|
|
25
|
+
primaryKey: PrimaryKey;
|
|
26
|
+
hoveredId: string;
|
|
27
|
+
onItemSelect: (id: PrimaryKey | any) => void;
|
|
28
|
+
onItemHover: (id: PrimaryKey | any) => void;
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
}
|
|
12
31
|
/**
|
|
13
32
|
* DropDownField
|
|
14
33
|
* Выпадающий список для выбора одного или нескольких значений
|
|
@@ -38,7 +57,7 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IData
|
|
|
38
57
|
* Объект CSS стилей
|
|
39
58
|
* @example {width: '45%'}
|
|
40
59
|
*/
|
|
41
|
-
style?:
|
|
60
|
+
style?: CustomStyle;
|
|
42
61
|
/**
|
|
43
62
|
* Показать иконку сброса для выбранных значений
|
|
44
63
|
* @example true
|
|
@@ -93,28 +112,12 @@ export interface IDropDownFieldViewProps extends IDropDownFieldProps {
|
|
|
93
112
|
isOpened?: boolean;
|
|
94
113
|
isLoading?: boolean;
|
|
95
114
|
onReset: () => void;
|
|
96
|
-
onItemSelect: (id: PrimaryKey | any) => void;
|
|
97
|
-
onItemHover: (id: PrimaryKey | any) => void;
|
|
98
|
-
onItemRemove: (id: PrimaryKey | any) => void;
|
|
99
|
-
onClose: () => void;
|
|
100
115
|
onOpen: () => void;
|
|
116
|
+
renderItem: (item: IDropDownFieldItem) => JSX.Element;
|
|
117
|
+
onItemRemove: (id: PrimaryKey | any) => void;
|
|
101
118
|
isAutoComplete?: boolean;
|
|
102
119
|
isSearchAutoFocus?: boolean;
|
|
103
120
|
primaryKey: string;
|
|
104
121
|
}
|
|
105
|
-
export interface IDropDownItemViewProps extends Pick<IDropDownFieldProps, 'itemsContent'>, Pick<IFieldWrapperInputProps, 'size'> {
|
|
106
|
-
item: {
|
|
107
|
-
id: number;
|
|
108
|
-
label: string;
|
|
109
|
-
contentType?: ContentType;
|
|
110
|
-
contentSrc?: 'string' | React.ReactElement;
|
|
111
|
-
};
|
|
112
|
-
primaryKey: PrimaryKey;
|
|
113
|
-
hoveredId: string;
|
|
114
|
-
selectedIds: (PrimaryKey | any)[];
|
|
115
|
-
onItemSelect: (id: PrimaryKey | any) => void;
|
|
116
|
-
onItemHover: (id: PrimaryKey | any) => void;
|
|
117
|
-
groupAttribute?: string;
|
|
118
|
-
}
|
|
119
122
|
declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDropDownFieldProps>;
|
|
120
123
|
export default _default;
|
|
@@ -10,31 +10,85 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
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
|
+
};
|
|
13
45
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
47
|
};
|
|
16
48
|
exports.__esModule = true;
|
|
17
|
-
|
|
49
|
+
exports.IMG_CONTENT_TYPE = exports.ICON_CONTENT_TYPE = exports.RADIO_CONTENT_TYPE = exports.CHECKBOX_CONTENT_TYPE = exports.GROUP_CONTENT_TYPE = void 0;
|
|
50
|
+
var react_1 = __importStar(require("react"));
|
|
18
51
|
var react_use_1 = require("react-use");
|
|
19
52
|
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
53
|
+
var includes_1 = __importDefault(require("lodash-es/includes"));
|
|
20
54
|
var hooks_1 = require("../../../hooks");
|
|
21
55
|
var fieldWrapper_1 = __importDefault(require("../../form/Field/fieldWrapper"));
|
|
56
|
+
exports.GROUP_CONTENT_TYPE = 'group';
|
|
57
|
+
exports.CHECKBOX_CONTENT_TYPE = 'checkbox';
|
|
58
|
+
exports.RADIO_CONTENT_TYPE = 'radio';
|
|
59
|
+
exports.ICON_CONTENT_TYPE = 'icon';
|
|
60
|
+
exports.IMG_CONTENT_TYPE = 'img';
|
|
22
61
|
function DropDownField(props) {
|
|
23
62
|
var components = (0, hooks_1.useComponents)();
|
|
24
63
|
// Query state
|
|
25
64
|
var _a = (0, react_1.useState)(''), query = _a[0], setQuery = _a[1];
|
|
65
|
+
var hasGroup = !!props.groupAttribute;
|
|
66
|
+
var _b = react_1["default"].useState([]), selectedAccordionItems = _b[0], setSelectedAccordionItems = _b[1];
|
|
67
|
+
var toggleCollapse = function (indexSelected) {
|
|
68
|
+
if (selectedAccordionItems.includes(indexSelected)) {
|
|
69
|
+
var newState = __spreadArray([], selectedAccordionItems, true);
|
|
70
|
+
var indexInArray = selectedAccordionItems.indexOf(indexSelected);
|
|
71
|
+
newState.splice(indexInArray, 1);
|
|
72
|
+
setSelectedAccordionItems(newState);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
var newState = __spreadArray([], selectedAccordionItems, true);
|
|
76
|
+
newState.push(indexSelected);
|
|
77
|
+
setSelectedAccordionItems(newState);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
26
80
|
var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
|
|
27
81
|
// Data provider
|
|
28
|
-
var
|
|
82
|
+
var _c = (0, hooks_1.useDataProvider)({
|
|
29
83
|
items: props.items,
|
|
30
84
|
dataProvider: props.dataProvider,
|
|
31
85
|
autoComplete: props.autoComplete,
|
|
32
86
|
autoFetch: props.autoFetch,
|
|
33
87
|
query: query,
|
|
34
88
|
initialSelectedIds: inputSelectedIds
|
|
35
|
-
}), items =
|
|
89
|
+
}), items = _c.items, isLoading = _c.isLoading, isAutoComplete = _c.isAutoComplete, sourceItems = _c.sourceItems;
|
|
36
90
|
// Data select
|
|
37
|
-
var
|
|
91
|
+
var _d = (0, hooks_1.useDataSelect)({
|
|
38
92
|
multiple: props.multiple,
|
|
39
93
|
selectFirst: props.selectFirst,
|
|
40
94
|
selectedIds: inputSelectedIds,
|
|
@@ -43,7 +97,7 @@ function DropDownField(props) {
|
|
|
43
97
|
items: items,
|
|
44
98
|
sourceItems: sourceItems,
|
|
45
99
|
inputValue: props.input.value
|
|
46
|
-
}), isOpened =
|
|
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;
|
|
47
101
|
var onOpen = (0, react_1.useCallback)(function () {
|
|
48
102
|
setQuery('');
|
|
49
103
|
setIsFocused(true);
|
|
@@ -98,10 +152,37 @@ function DropDownField(props) {
|
|
|
98
152
|
onReset();
|
|
99
153
|
}
|
|
100
154
|
}, [onReset, prevInputValue, props.input.value, selectedIds.length]);
|
|
155
|
+
var renderItemView = function (item, type, src) { return components.ui.renderView('form.DropDownFieldItemView', {
|
|
156
|
+
item: __assign(__assign({}, item), { contentSrc: src, contentType: type }),
|
|
157
|
+
selectedIds: selectedIds,
|
|
158
|
+
size: props.size,
|
|
159
|
+
groupAttribute: props.groupAttribute,
|
|
160
|
+
hoveredId: hoveredId,
|
|
161
|
+
primaryKey: props.primaryKey,
|
|
162
|
+
type: type,
|
|
163
|
+
itemsContent: props.itemsContent,
|
|
164
|
+
onItemHover: onItemHover,
|
|
165
|
+
onItemSelect: onItemSelect,
|
|
166
|
+
isShowMore: (0, includes_1["default"])(selectedAccordionItems || [], item.id),
|
|
167
|
+
childIndex: item.id,
|
|
168
|
+
toggleCollapse: toggleCollapse
|
|
169
|
+
}); };
|
|
170
|
+
var renderItem = function (item) {
|
|
171
|
+
if (hasGroup && Array.isArray(item[props.groupAttribute])) {
|
|
172
|
+
return renderItemView(item, 'group', item[props.groupAttribute]);
|
|
173
|
+
}
|
|
174
|
+
if (item.contentType) {
|
|
175
|
+
return renderItemView(item, item.contentType, item.contentSrc);
|
|
176
|
+
}
|
|
177
|
+
if (props.itemsContent) {
|
|
178
|
+
return renderItemView(item, props.itemsContent.type, props.itemsContent.src);
|
|
179
|
+
}
|
|
180
|
+
return renderItemView(item, 'default', null);
|
|
181
|
+
};
|
|
101
182
|
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,
|
|
102
183
|
// TODO onFocus
|
|
103
184
|
// TODO onBlur
|
|
104
|
-
|
|
185
|
+
onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup }));
|
|
105
186
|
}
|
|
106
187
|
DropDownField.defaultProps = {
|
|
107
188
|
primaryKey: 'id',
|
|
@@ -89,5 +89,5 @@ export interface FieldWrapperComponent<T> {
|
|
|
89
89
|
displayName: any;
|
|
90
90
|
defaultProps: any;
|
|
91
91
|
}
|
|
92
|
-
export default function fieldWrapper<T = any>(componentId:
|
|
92
|
+
export default function fieldWrapper<T = any>(componentId: string, Component: any, optionsConfig?: IFieldWrapperOptions): FieldWrapperComponent<T>;
|
|
93
93
|
export {};
|
|
@@ -52,8 +52,8 @@ export interface IFieldLayoutViewProps {
|
|
|
52
52
|
size: Size;
|
|
53
53
|
layout?: {
|
|
54
54
|
layout: FormLayoutName | boolean;
|
|
55
|
-
className?:
|
|
56
|
-
style?:
|
|
55
|
+
className?: CssClassName;
|
|
56
|
+
style?: CustomStyle;
|
|
57
57
|
label: boolean;
|
|
58
58
|
cols: number[];
|
|
59
59
|
[key: string]: any;
|