@steroidsjs/core 3.0.0-beta.113 → 3.0.0-beta.115
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 +405 -130
- package/en.json +9 -1
- package/package.json +94 -94
- package/ui/content/Chat/Chat.d.ts +39 -1
- package/ui/content/Chat/Chat.js +32 -12
- package/ui/content/Chat/hooks/useChat.d.ts +2 -2
- package/ui/content/Chat/hooks/useChat.js +23 -6
- package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +1 -1
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +2 -3
- package/ui/form/FileField/FileField.js +5 -0
- package/ui/nav/Tree/Tree.d.ts +1 -1
package/en.json
CHANGED
|
@@ -954,5 +954,13 @@
|
|
|
954
954
|
"Заголовок для колонки таблицы": "",
|
|
955
955
|
"Будет ли отображён item?": "",
|
|
956
956
|
"Устанавливать ли фокус и показывать панель времени сразу после рендера страницы": "",
|
|
957
|
-
"Флаг, определяющий раскрывать вложенные элементы по клику на весь элемент или только на иконку": ""
|
|
957
|
+
"Флаг, определяющий раскрывать вложенные элементы по клику на весь элемент или только на иконку": "",
|
|
958
|
+
"При повторном нажатии на выбранный элемент из дерева, он продолжит отображаться как активный.": "",
|
|
959
|
+
"Дополнительные свойства, которые передаются во view компонента": "",
|
|
960
|
+
"Пропсы для инпута загрузки файлов": "",
|
|
961
|
+
"Переопределение view React компонента для кастомизации отображения элемента инпута": "",
|
|
962
|
+
"Кастомный placeholder для инпута": "",
|
|
963
|
+
"Кастомная иконка, заменяющая иконку раскрытия по умолчанию": "",
|
|
964
|
+
"Показать иконку c лева от элемента": "",
|
|
965
|
+
"Флаг, который позволяет использовать вложенные роуты c указанием вложенного пути": ""
|
|
958
966
|
}
|
package/package.json
CHANGED
|
@@ -1,96 +1,96 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
2
|
+
"name": "@steroidsjs/core",
|
|
3
|
+
"version": "3.0.0-beta.115",
|
|
4
|
+
"description": "",
|
|
5
|
+
"author": "Vladimir Kozhin <hello@kozhindev.com>",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/steroids/react"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/index.ts",
|
|
11
|
+
"types": "dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
"./": "./dist"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"homepage": "https://github.com/steroids/react",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/steroids/react/issues"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"docs": "node docs/docs-autogen.js",
|
|
22
|
+
"test": "jest",
|
|
23
|
+
"lint": "eslint -c ./.eslintrc --ext .js,.jsx,.ts,.tsx ./src ./tests --quiet",
|
|
24
|
+
"build": "tsc && cp ./{package.json,LICENSE,README.md} dist/ && cp src/index.d.ts dist/ && cp docs/docs-autogen-result.json dist/ && cp docs/locales/en.json dist/",
|
|
25
|
+
"watch": "tsc -p tsconfig-debug.json"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@maskito/core": "1.7.0",
|
|
29
|
+
"@maskito/kit": "1.7.0",
|
|
30
|
+
"@maskito/react": "^0.12.1",
|
|
31
|
+
"@splidejs/react-splide": "^0.7.12",
|
|
32
|
+
"axios": "^0.21.1",
|
|
33
|
+
"connected-react-router": "^6.9.3",
|
|
34
|
+
"dayjs": "^1.11.9",
|
|
35
|
+
"domready": "^1.0.8",
|
|
36
|
+
"dot-prop-immutable": "^2.1.0",
|
|
37
|
+
"fileup-core": "^1.2.7",
|
|
38
|
+
"history": "^4.10.1",
|
|
39
|
+
"intl-messageformat": "^10.1.4",
|
|
40
|
+
"js-cookie": "^2.2.1",
|
|
41
|
+
"load-js": "^3.0.3",
|
|
42
|
+
"lodash": "^4.17.21",
|
|
43
|
+
"lodash-es": "^4.17.21",
|
|
44
|
+
"path-to-regexp": "^1.7.0",
|
|
45
|
+
"qs": "^6.9.4",
|
|
46
|
+
"query-string": "^6.14.0",
|
|
47
|
+
"react": "^18.2.0",
|
|
48
|
+
"react-click-outside": "^3.0.1",
|
|
49
|
+
"react-day-picker": "^8.7.1",
|
|
50
|
+
"react-dom": "^18.2.0",
|
|
51
|
+
"react-grid-gallery": "^0.4.8",
|
|
52
|
+
"react-helmet": "^6.1.0",
|
|
53
|
+
"react-image-crop": "^9.0.2",
|
|
54
|
+
"react-redux": "^8.0.5",
|
|
55
|
+
"react-router": "^5.2.0",
|
|
56
|
+
"react-router-dom": "^5.2.0",
|
|
57
|
+
"react-use": "^17.4.0",
|
|
58
|
+
"redux": "^4.0.4",
|
|
59
|
+
"redux-mock-store": "^1.5.4",
|
|
60
|
+
"set-cookie-parser": "^2.4.8"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@babel/cli": "^7.13.14",
|
|
64
|
+
"@babel/core": "^7.13.15",
|
|
65
|
+
"@babel/preset-env": "^7.13.15",
|
|
66
|
+
"@babel/preset-react": "^7.13.13",
|
|
67
|
+
"@babel/preset-typescript": "^7.13.0",
|
|
68
|
+
"@steroidsjs/eslint-config": "^2.1.4",
|
|
69
|
+
"@testing-library/dom": "^8.20.0",
|
|
70
|
+
"@testing-library/jest-dom": "^5.16.5",
|
|
71
|
+
"@testing-library/react": "^13.4.0",
|
|
72
|
+
"@testing-library/user-event": "^14.4.3",
|
|
73
|
+
"@types/enzyme": "^3.10.8",
|
|
74
|
+
"@types/enzyme-adapter-react-16": "^1.0.6",
|
|
75
|
+
"@types/jest": "^26.0.22",
|
|
76
|
+
"@types/markdown-to-jsx": "^7.0.1",
|
|
77
|
+
"@types/reach__router": "^1.3.7",
|
|
78
|
+
"@types/react": "^18.0.20",
|
|
79
|
+
"@types/react-color": "^3.0.4",
|
|
80
|
+
"@types/react-dom": "^18.0.6",
|
|
81
|
+
"@types/react-syntax-highlighter": "^13.5.0",
|
|
82
|
+
"@types/webpack-env": "^1.16.0",
|
|
83
|
+
"@typescript-eslint/eslint-plugin": "^5.51.0",
|
|
84
|
+
"@typescript-eslint/parser": "^4.15.0",
|
|
85
|
+
"@wojtekmaj/enzyme-adapter-react-17": "^0.4.1",
|
|
86
|
+
"enzyme": "^3.11.0",
|
|
87
|
+
"eslint": "^8.34.0",
|
|
88
|
+
"jest": "^26.6.3",
|
|
89
|
+
"jest-environment-jsdom-fifteen": "^1.0.2",
|
|
90
|
+
"jest-enzyme": "^7.1.2",
|
|
91
|
+
"rc-slider": "9.7.4",
|
|
92
|
+
"ts-jest": "^26.5.1",
|
|
93
|
+
"typedoc": "^0.21.0",
|
|
94
|
+
"typescript": "^4.9.5"
|
|
95
|
+
}
|
|
96
96
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { IFileFieldProps } from '../../form/FileField/FileField';
|
|
2
3
|
import { IAvatarProps } from '../Avatar/Avatar';
|
|
3
4
|
import { IGroupedMessagesByDates } from './hooks/useChat';
|
|
4
5
|
export interface IChatUser {
|
|
@@ -7,11 +8,21 @@ export interface IChatUser {
|
|
|
7
8
|
lastName?: string;
|
|
8
9
|
avatar?: IAvatarProps;
|
|
9
10
|
}
|
|
11
|
+
export interface IMessageFile {
|
|
12
|
+
uid?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
size?: number;
|
|
15
|
+
url?: string;
|
|
16
|
+
downloadUrl?: string;
|
|
17
|
+
fullHeight?: number;
|
|
18
|
+
fullWidth?: number;
|
|
19
|
+
}
|
|
10
20
|
export interface IChatMessage {
|
|
11
21
|
id: number;
|
|
12
22
|
user: IChatUser;
|
|
13
23
|
text: string;
|
|
14
24
|
timestamp: Date | string;
|
|
25
|
+
files?: IMessageFile[];
|
|
15
26
|
}
|
|
16
27
|
/**
|
|
17
28
|
* Chat
|
|
@@ -31,6 +42,15 @@ export interface IChatProps extends IUiComponent {
|
|
|
31
42
|
* {
|
|
32
43
|
* id: 1,
|
|
33
44
|
* text: 'Всем привет!',
|
|
45
|
+
* files: [
|
|
46
|
+
* {
|
|
47
|
+
* id: 929,
|
|
48
|
+
* uid: 'c46f3d14-5891-4601-9e98-06f2c1e70a07',
|
|
49
|
+
* title: 'image.jpg',
|
|
50
|
+
* url: 'https://kozhin.dev/files/uploaded/c46f3d14-5891-4601-9e98-06f2c1e70a07.jpg',
|
|
51
|
+
* size: 47305,
|
|
52
|
+
* }
|
|
53
|
+
* ],
|
|
34
54
|
* user: {
|
|
35
55
|
* id: 1,
|
|
36
56
|
* firstName: 'Olga',
|
|
@@ -63,9 +83,27 @@ export interface IChatProps extends IUiComponent {
|
|
|
63
83
|
* Обработчик события отправки сообщения
|
|
64
84
|
*/
|
|
65
85
|
onSendMessage?: (chatId: string, message: IChatMessage) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Переопределение view React компонента для кастомизации отображения элемента инпута
|
|
88
|
+
* @example MyCustomView
|
|
89
|
+
*/
|
|
90
|
+
customChatInputView?: React.ReactNode;
|
|
91
|
+
/**
|
|
92
|
+
* Кастомный placeholder для инпута
|
|
93
|
+
*/
|
|
94
|
+
customInputPlaceholder?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Пропсы для инпута загрузки файлов
|
|
97
|
+
*/
|
|
98
|
+
fileFieldProps?: IFileFieldProps;
|
|
66
99
|
}
|
|
67
|
-
export interface IChatViewProps extends
|
|
100
|
+
export interface IChatViewProps extends Pick<IChatProps, 'currentUser'> {
|
|
68
101
|
groupedMessagesByDates: IGroupedMessagesByDates;
|
|
102
|
+
renderChatInput: () => JSX.Element;
|
|
103
|
+
}
|
|
104
|
+
export interface IChatInputViewProps extends Pick<IChatProps, 'chatId' | 'fileFieldProps'> {
|
|
69
105
|
onSendMessage: (data: any) => void;
|
|
106
|
+
onUploadFiles: (files: any) => void;
|
|
107
|
+
inputPlaceholder: string;
|
|
70
108
|
}
|
|
71
109
|
export default function Chat(props: IChatProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
package/ui/content/Chat/Chat.js
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
12
24
|
};
|
|
13
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
27
|
};
|
|
16
28
|
exports.__esModule = true;
|
|
29
|
+
var react_1 = __importStar(require("react"));
|
|
17
30
|
var hooks_1 = require("../../../hooks");
|
|
18
31
|
var useChat_1 = __importDefault(require("./hooks/useChat"));
|
|
19
32
|
function Chat(props) {
|
|
@@ -23,7 +36,14 @@ function Chat(props) {
|
|
|
23
36
|
messages: props.messages,
|
|
24
37
|
currentUser: props.currentUser,
|
|
25
38
|
onSendMessage: props.onSendMessage
|
|
26
|
-
}), onSendMessage = _a.onSendMessage, groupedMessagesByDates = _a.groupedMessagesByDates;
|
|
27
|
-
|
|
39
|
+
}), onSendMessage = _a.onSendMessage, onUploadFiles = _a.onUploadFiles, groupedMessagesByDates = _a.groupedMessagesByDates;
|
|
40
|
+
var ChatInputView = props.customChatInputView || components.ui.getView('content.ChatInputView');
|
|
41
|
+
var renderChatInput = (0, react_1.useCallback)(function () { return (react_1["default"].createElement(ChatInputView, { chatId: props.chatId, onSendMessage: onSendMessage, onUploadFiles: onUploadFiles, fileFieldProps: props.fileFieldProps, inputPlaceholder: props.customInputPlaceholder || __('Введите сообщение') })); }, [ChatInputView, onSendMessage, onUploadFiles, props.chatId, props.customInputPlaceholder, props.fileFieldProps]);
|
|
42
|
+
return components.ui.renderView(props.view || 'content.ChatView', {
|
|
43
|
+
currentUser: props.currentUser,
|
|
44
|
+
groupedMessagesByDates: groupedMessagesByDates,
|
|
45
|
+
onSendMessage: onSendMessage,
|
|
46
|
+
renderChatInput: renderChatInput
|
|
47
|
+
});
|
|
28
48
|
}
|
|
29
49
|
exports["default"] = Chat;
|
|
@@ -5,8 +5,8 @@ export interface IGroupedMessage extends IChatMessage {
|
|
|
5
5
|
isLastMessage?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export type IGroupedMessagesByDates = Record<string, IGroupedMessage[][]>;
|
|
8
|
-
|
|
8
|
+
export default function useChat(config: IChatConfig): {
|
|
9
9
|
groupedMessagesByDates: {};
|
|
10
10
|
onSendMessage: (rawMessage: any) => void;
|
|
11
|
+
onUploadFiles: (files: any) => void;
|
|
11
12
|
};
|
|
12
|
-
export default useChat;
|
|
@@ -17,25 +17,42 @@ exports.__esModule = true;
|
|
|
17
17
|
var react_1 = require("react");
|
|
18
18
|
var dayjs_1 = __importDefault(require("dayjs"));
|
|
19
19
|
var uniqueId_1 = __importDefault(require("lodash-es/uniqueId"));
|
|
20
|
+
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
21
|
+
var File_1 = __importDefault(require("fileup-core/lib/models/File"));
|
|
20
22
|
var hooks_1 = require("../../../../hooks");
|
|
21
23
|
var form_1 = require("../../../../actions/form");
|
|
22
24
|
var utils_1 = require("../utils");
|
|
23
25
|
var timeTemplatesAndUnits_1 = require("../constants/timeTemplatesAndUnits");
|
|
24
|
-
|
|
26
|
+
function useChat(config) {
|
|
27
|
+
var dispatch = (0, hooks_1.useDispatch)();
|
|
25
28
|
var _a = (0, react_1.useState)({}), groupedMessagesByDates = _a[0], setGroupedMessagesByDates = _a[1];
|
|
29
|
+
var _b = (0, react_1.useState)([]), uploadedFiles = _b[0], setUploadedFiles = _b[1];
|
|
26
30
|
(0, react_1.useEffect)(function () { return setGroupedMessagesByDates((0, utils_1.getMessagesGroupedByDate)(config.messages)); }, [config.messages]);
|
|
27
|
-
var
|
|
31
|
+
var onUploadFiles = (0, react_1.useCallback)(function (files) {
|
|
32
|
+
if (!(0, isEqual_1["default"])(uploadedFiles, files)) {
|
|
33
|
+
setUploadedFiles(files);
|
|
34
|
+
}
|
|
35
|
+
}, [uploadedFiles]);
|
|
28
36
|
var onSendMessage = (0, react_1.useCallback)(function (rawMessage) {
|
|
29
|
-
|
|
37
|
+
if (!rawMessage) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
var newMessage = __assign(__assign({}, rawMessage), { id: (0, uniqueId_1["default"])(), user: config.currentUser, timestamp: (0, dayjs_1["default"])().format(timeTemplatesAndUnits_1.ISO_TIMESTAMP_TEMPLATE), files: (uploadedFiles === null || uploadedFiles === void 0 ? void 0 : uploadedFiles.reduce(function (acc, file) {
|
|
41
|
+
if (file.getResult() !== File_1["default"].RESULT_ERROR) {
|
|
42
|
+
acc.push(__assign({}, file._resultHttpMessage));
|
|
43
|
+
}
|
|
44
|
+
return acc;
|
|
45
|
+
}, [])) || null });
|
|
30
46
|
if (config.onSendMessage) {
|
|
31
47
|
config.onSendMessage(config.chatId, newMessage);
|
|
32
48
|
}
|
|
33
49
|
setGroupedMessagesByDates(function (prevGroupedMessagesByDates) { return (0, utils_1.addNewMessageIntoGroupedMessages)(newMessage, prevGroupedMessagesByDates); });
|
|
34
50
|
dispatch((0, form_1.formReset)(config.chatId));
|
|
35
|
-
}, [config, dispatch]);
|
|
51
|
+
}, [config, dispatch, uploadedFiles]);
|
|
36
52
|
return {
|
|
37
53
|
groupedMessagesByDates: groupedMessagesByDates,
|
|
38
|
-
onSendMessage: onSendMessage
|
|
54
|
+
onSendMessage: onSendMessage,
|
|
55
|
+
onUploadFiles: onUploadFiles
|
|
39
56
|
};
|
|
40
|
-
}
|
|
57
|
+
}
|
|
41
58
|
exports["default"] = useChat;
|
|
@@ -19,7 +19,7 @@ type CheckboxTreeItems = string | ({
|
|
|
19
19
|
*
|
|
20
20
|
* Список с вложенными чекбоксами. Используется в формах для создания иерархической структуры и выбора нескольких значений.
|
|
21
21
|
*/
|
|
22
|
-
export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent, Pick<ITreeProps, 'levelPadding' | 'alwaysOpened' | '
|
|
22
|
+
export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'>, IUiComponent, Pick<ITreeProps, 'levelPadding' | 'alwaysOpened' | 'showIcon' | 'customIcon'> {
|
|
23
23
|
/**
|
|
24
24
|
* Свойства для элемента input
|
|
25
25
|
* @example { onKeyDown: ... }
|
|
@@ -38,8 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
};
|
|
39
39
|
exports.__esModule = true;
|
|
40
40
|
exports.getNestedItemsIds = void 0;
|
|
41
|
-
var
|
|
42
|
-
var react_1 = require("react");
|
|
41
|
+
var react_1 = __importStar(require("react"));
|
|
43
42
|
var react_use_1 = require("react-use");
|
|
44
43
|
var isArray_1 = __importDefault(require("lodash-es/isArray"));
|
|
45
44
|
var hooks_1 = require("../../../hooks");
|
|
@@ -113,7 +112,7 @@ function CheckboxTreeField(props) {
|
|
|
113
112
|
}
|
|
114
113
|
}, [onReset, prevInputValue, props.input.value, selectedIds.length]);
|
|
115
114
|
var CheckboxFieldView = components.ui.getView('form.CheckboxFieldView');
|
|
116
|
-
var renderCheckbox = function (checkboxProps) { return (
|
|
115
|
+
var renderCheckbox = function (checkboxProps) { return (react_1["default"].createElement(CheckboxFieldView, __assign({}, checkboxProps))); };
|
|
117
116
|
return components.ui.renderView(props.view || 'form.CheckboxTreeFieldView', __assign(__assign({}, props), { items: treeItems, onItemSelect: onItemSelect, selectedIds: selectedIds, renderCheckbox: renderCheckbox }));
|
|
118
117
|
}
|
|
119
118
|
CheckboxTreeField.defaultProps = {
|
|
@@ -66,6 +66,11 @@ function FileFieldComponent(props) {
|
|
|
66
66
|
props.onLoad();
|
|
67
67
|
}
|
|
68
68
|
}, [isFilesLoaded, props]);
|
|
69
|
+
(0, react_1.useEffect)(function () {
|
|
70
|
+
if (props.onChange) {
|
|
71
|
+
props.onChange(files);
|
|
72
|
+
}
|
|
73
|
+
}, [files, props]);
|
|
69
74
|
return (React.createElement(FileFieldView, __assign({}, props, { buttonView: props.buttonView, buttonProps: __assign({ label: props.filesLayout === FilesLayout.wall
|
|
70
75
|
? __('Upload')
|
|
71
76
|
: __('Click to Upload'), size: props.size, disabled: props.disabled, onClick: onBrowse }, props.buttonProps), itemView: FileFieldItemView, items: files.map(function (file) {
|
package/ui/nav/Tree/Tree.d.ts
CHANGED