awing-library 2.1.96-beta → 2.1.97-beta
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/lib/ACM-AXN/Page/CreateOrEdit/Components/useListPageView.js +9 -4
- package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +2 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +14 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.d.ts +3 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.js +1 -6
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.d.ts +7 -0
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.js +13 -15
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +23 -2
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +3 -2
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.test.js +2 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/Utils.d.ts +4 -3
- package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +4 -2
- package/lib/ACM-AXN/Page/Types.d.ts +10 -37
- package/lib/ACM-AXN/Page/enums.d.ts +6 -0
- package/lib/ACM-AXN/Page/enums.js +8 -1
- package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
- package/lib/ACM-AXN/Template/Constants.js +1 -0
- package/lib/ACM-AXN/Template/Container.d.ts +2 -0
- package/lib/ACM-AXN/Template/Container.js +74 -0
- package/lib/ACM-AXN/Template/Container.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/Container.test.js +259 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +370 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.d.ts +9 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.js +78 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +150 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +6 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +79 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Script.d.ts +3 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +58 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.js +162 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.d.ts +5 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.js +41 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +20 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +283 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +220 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +25 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +138 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.d.ts +3 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.js +46 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/index.d.ts +3 -0
- package/lib/ACM-AXN/Template/CreateOrEdit/index.js +215 -0
- package/lib/ACM-AXN/Template/Hooks.d.ts +5 -0
- package/lib/ACM-AXN/Template/Hooks.js +13 -0
- package/lib/ACM-AXN/Template/Import.d.ts +2 -0
- package/lib/ACM-AXN/Template/Import.js +123 -0
- package/lib/ACM-AXN/Template/Import.test.d.ts +1 -0
- package/lib/ACM-AXN/Template/Import.test.js +188 -0
- package/lib/ACM-AXN/Template/Types.d.ts +84 -0
- package/lib/ACM-AXN/Template/Types.js +2 -0
- package/lib/ACM-AXN/Template/UploadButton.d.ts +2 -0
- package/lib/ACM-AXN/Template/UploadButton.js +14 -0
- package/lib/ACM-AXN/Template/index.d.ts +5 -0
- package/lib/ACM-AXN/Template/index.js +44 -0
- package/lib/ACM-AXN/ViewTemplate/index.d.ts +2 -1
- package/lib/ACM-AXN/ViewTemplate/interface.d.ts +6 -1
- package/lib/AWING/HOC/Wrapper.d.ts +6 -0
- package/lib/AWING/HOC/Wrapper.js +10 -0
- package/lib/translate/en/translation.json +27 -1
- package/lib/translate/vi/translation.json +27 -1
- package/package.json +1 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.d.ts +0 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.js +0 -326
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { DirectoryRoot } from '../../ACM-AXN/Campaign/Enum';
|
|
2
|
+
import { Directory } from '../../ACM-AXN/Campaign/Types';
|
|
3
|
+
import { IDirectory } from '../../ACM-AXN/Directory/interface';
|
|
4
|
+
import { FileParameter, PhysicalFolder, Template } from '../../ACM-AXN/Page/Types';
|
|
5
|
+
import { PageCode } from '../../ACM-AXN/Page/enums';
|
|
6
|
+
import { FileResponse } from '../../Commons/Types';
|
|
7
|
+
export interface ITemplateType {
|
|
8
|
+
id?: number;
|
|
9
|
+
name?: string;
|
|
10
|
+
templateTypeCode?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ITemplateParameter {
|
|
13
|
+
id?: string;
|
|
14
|
+
templateId?: string;
|
|
15
|
+
fieldName?: string;
|
|
16
|
+
fieldType?: string;
|
|
17
|
+
defaultValue?: string;
|
|
18
|
+
labelName?: string;
|
|
19
|
+
isRequired?: boolean;
|
|
20
|
+
childrens?: ITemplateParameter[];
|
|
21
|
+
isAdvanced?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ITemplateEvent {
|
|
24
|
+
id?: number;
|
|
25
|
+
templateId?: string;
|
|
26
|
+
event?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ITemplateModel {
|
|
29
|
+
template: ITemplate;
|
|
30
|
+
templateParameters: ITemplateParameter[];
|
|
31
|
+
templateEvents: ITemplateEvent[];
|
|
32
|
+
}
|
|
33
|
+
export interface ITemplate {
|
|
34
|
+
id?: string;
|
|
35
|
+
directoryId?: string;
|
|
36
|
+
directoryPath?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
templateHtml?: string;
|
|
39
|
+
layoutId?: string;
|
|
40
|
+
pageCode?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
templateTypeId?: number;
|
|
43
|
+
validation?: string;
|
|
44
|
+
autoField?: string;
|
|
45
|
+
isDeprecated?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface ITemplatesPaging {
|
|
48
|
+
templates?: ITemplate[];
|
|
49
|
+
total?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ITemplateFileService {
|
|
52
|
+
templatesGetDirectories: () => Promise<Directory[]>;
|
|
53
|
+
templateTypesGet: () => Promise<ITemplateType[]>;
|
|
54
|
+
templatesGetByDirectoryId: (directoryId: string) => Promise<Template[]>;
|
|
55
|
+
templatesGet: ITemplateService['templatesGet'];
|
|
56
|
+
pageFilesCreateCreateUpload: (parentDirectoryId: string, code: PageCode, objectId: string, path: string, files: FileParameter[]) => Promise<void>;
|
|
57
|
+
pageFilesUpdateUpload: (code: PageCode, objectId: string, path: string, files: FileParameter[]) => Promise<void>;
|
|
58
|
+
pagesGenerateId: () => Promise<string>;
|
|
59
|
+
pageFilesUpdateGetTreeFolder: (code: PageCode, objectId: string) => Promise<PhysicalFolder>;
|
|
60
|
+
pageFilesCreateGetTreeFolder: (parentDirectoryId: string, code: PageCode, objectId: string) => Promise<PhysicalFolder>;
|
|
61
|
+
pageFilesCreateDownload: (parentDirectoryId: string, code: PageCode, objectId: string, pathFile: string) => Promise<FileResponse>;
|
|
62
|
+
pageFilesUpdateDownload: (code: PageCode, objectId: string, pathFile: string) => Promise<FileResponse>;
|
|
63
|
+
pageFilesUpdateDownloadFolder: (code: PageCode, objectId: string, path: string) => Promise<FileResponse>;
|
|
64
|
+
pageFilesCreateDownloadFolder: (parentDirectoryId: string, code: PageCode, objectId: string, path: string) => Promise<FileResponse>;
|
|
65
|
+
pageFilesCreateCreateFolder: (parentDirectoryId: string, code: PageCode, objectId: string, path: string, name: string) => Promise<void>;
|
|
66
|
+
pageFilesUpdateCreateFolder: (code: PageCode, objectId: string, path: string, name: string) => Promise<void>;
|
|
67
|
+
pageFilesCreateDelete: (parentDirectoryId: string, code: PageCode, objectId: string, path: string) => Promise<void>;
|
|
68
|
+
pageFilesUpdateDelete: (code: PageCode, objectId: string, path: string) => Promise<void>;
|
|
69
|
+
}
|
|
70
|
+
export interface ITemplateService extends ITemplateFileService {
|
|
71
|
+
templatesPaging: (searchString: string | undefined, pageSize: number | undefined, pageIndexc: number | undefined) => Promise<ITemplatesPaging>;
|
|
72
|
+
templatesExport(id: string | undefined): Promise<FileResponse>;
|
|
73
|
+
templatesDelete(id: string): Promise<void>;
|
|
74
|
+
directoriesGetByObjectTypeCode(objectTypeCode: DirectoryRoot): Promise<IDirectory[]>;
|
|
75
|
+
templatesImport(newDirectoryId: string | undefined, id: string | undefined, name: string | undefined, file: FileParameter | undefined): Promise<void>;
|
|
76
|
+
templateTypesGet(): Promise<ITemplateType[]>;
|
|
77
|
+
templatesGet(id: string): Promise<ITemplateModel>;
|
|
78
|
+
directoriesGenerateId(): Promise<string>;
|
|
79
|
+
templatesPut(id: string, body: ITemplateModel): Promise<void>;
|
|
80
|
+
templatesPost(body: ITemplateModel): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export interface TemplateProps {
|
|
83
|
+
service: ITemplateService;
|
|
84
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
var CloudUpload_1 = __importDefault(require("@mui/icons-material/CloudUpload"));
|
|
8
|
+
var material_1 = require("@mui/material");
|
|
9
|
+
var react_i18next_1 = require("react-i18next");
|
|
10
|
+
var UploadButton = function () {
|
|
11
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: t('Common.Upload'), children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", style: { marginTop: '16px' }, children: (0, jsx_runtime_1.jsx)(CloudUpload_1.default, {}) }) }));
|
|
13
|
+
};
|
|
14
|
+
exports.default = UploadButton;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.TemplateFeature = void 0;
|
|
21
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
22
|
+
var Container_1 = __importDefault(require("./Container"));
|
|
23
|
+
var Router_1 = require("../../AWING/Router");
|
|
24
|
+
var react_1 = require("react");
|
|
25
|
+
var Import_1 = __importDefault(require("./Import"));
|
|
26
|
+
var CreateOrEdit_1 = __importDefault(require("./CreateOrEdit"));
|
|
27
|
+
var Constants_1 = require("../../ACM-AXN/GroupUser/Constants");
|
|
28
|
+
var Hooks_1 = require("./Hooks");
|
|
29
|
+
var react_i18next_1 = require("react-i18next");
|
|
30
|
+
var i18n_1 = __importDefault(require("../../i18n"));
|
|
31
|
+
var TemplateFeature = function (props) {
|
|
32
|
+
var paths = [
|
|
33
|
+
{ param: Constants_1.IMPORT_PATH, element: Import_1.default },
|
|
34
|
+
{ param: Constants_1.CREATE_PATH, element: CreateOrEdit_1.default },
|
|
35
|
+
{
|
|
36
|
+
param: Constants_1.EDIT_PATH + '/:templateId',
|
|
37
|
+
element: CreateOrEdit_1.default,
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
return ((0, jsx_runtime_1.jsx)(react_i18next_1.I18nextProvider, { i18n: i18n_1.default, children: (0, jsx_runtime_1.jsxs)(Hooks_1.templatePropsContext.Provider, { value: props, children: [(0, jsx_runtime_1.jsx)(Container_1.default, {}), (0, jsx_runtime_1.jsx)(Router_1.Routes, { children: paths.map(function (p) { return ((0, jsx_runtime_1.jsx)(Router_1.Route, { path: p.param, element: (0, react_1.createElement)(p.element) }, p.param)); }) })] }) }));
|
|
41
|
+
};
|
|
42
|
+
exports.TemplateFeature = TemplateFeature;
|
|
43
|
+
__exportStar(require("./Types"), exports);
|
|
44
|
+
exports.default = exports.TemplateFeature;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { ViewTemplateProps } from "./interface";
|
|
2
|
+
export declare function ViewTemplate(props: ViewTemplateProps): import("react/jsx-runtime").JSX.Element;
|
|
2
3
|
export default ViewTemplate;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PageViewEvent } from "../../ACM-AXN/Page/Types";
|
|
1
2
|
export interface Configs {
|
|
2
3
|
TEMPLATE_FILE_PATH?: string;
|
|
3
4
|
FILE_TEMP_PATH?: string;
|
|
@@ -48,6 +49,9 @@ export interface FieldProps {
|
|
|
48
49
|
onNotifyError: (errorMessage: string) => void;
|
|
49
50
|
onUploadFile: (files: any[]) => Promise<string>;
|
|
50
51
|
}
|
|
52
|
+
export interface ViewTemplateEvents extends Omit<PageViewEvent, 'viewNumber'> {
|
|
53
|
+
protected?: boolean;
|
|
54
|
+
}
|
|
51
55
|
export interface ViewTemplateProps {
|
|
52
56
|
templateDatas: FieldInfo[];
|
|
53
57
|
/**
|
|
@@ -90,5 +94,6 @@ export interface ViewTemplateProps {
|
|
|
90
94
|
* Hiển thị thông báo lỗi
|
|
91
95
|
*/
|
|
92
96
|
onNotifyError?: (errorMessage: string) => void;
|
|
93
|
-
onUploadFile: (files: any[]) => Promise<
|
|
97
|
+
onUploadFile: (files: any[]) => Promise<any>;
|
|
98
|
+
viewEvents?: ViewTemplateEvents[];
|
|
94
99
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const Wrapper: <T extends React.FC<any> = () => JSX.Element, W extends React.FC<any> = () => JSX.Element>(Compoent: T, Parrent: {
|
|
3
|
+
component: W;
|
|
4
|
+
props?: React.ComponentProps<W>;
|
|
5
|
+
}) => React.FC<React.ComponentProps<T>>;
|
|
6
|
+
export default Wrapper;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var Wrapper = function (Compoent, Parrent) {
|
|
5
|
+
var wrapped = function (props) {
|
|
6
|
+
return (0, react_1.createElement)(Parrent.component, Parrent.props, (0, react_1.createElement)(Compoent, props));
|
|
7
|
+
};
|
|
8
|
+
return wrapped;
|
|
9
|
+
};
|
|
10
|
+
exports.default = Wrapper;
|
|
@@ -112,7 +112,10 @@
|
|
|
112
112
|
"GroupName": "Group Name",
|
|
113
113
|
"InvalidChars": "Invalid characters",
|
|
114
114
|
"InvalidLength": "Invalid string length",
|
|
115
|
-
"RequestHasApprove": "Your request have approved"
|
|
115
|
+
"RequestHasApprove": "Your request have approved",
|
|
116
|
+
"Advance": "Advance",
|
|
117
|
+
"Default": "Default",
|
|
118
|
+
"Events": "Events"
|
|
116
119
|
},
|
|
117
120
|
"User": {
|
|
118
121
|
"Username": "Username",
|
|
@@ -132,6 +135,29 @@
|
|
|
132
135
|
"All": "All",
|
|
133
136
|
"TotalSelected": "Total selected"
|
|
134
137
|
},
|
|
138
|
+
"TemplateManagement": {
|
|
139
|
+
"Create": "Create template",
|
|
140
|
+
"Edit": "Edit template",
|
|
141
|
+
"title": "Template Management",
|
|
142
|
+
"TemplateName": "Template name",
|
|
143
|
+
"Page_lgn": "Page Login",
|
|
144
|
+
"Page_wlc": "Page Welcome",
|
|
145
|
+
"TemplateId": "Template ID",
|
|
146
|
+
"ImportTemplate": "Import template",
|
|
147
|
+
"Information": "Information",
|
|
148
|
+
"Template": "Template",
|
|
149
|
+
"Advance": "Advance",
|
|
150
|
+
"Script": "Script",
|
|
151
|
+
"TemplateHtml": "Html",
|
|
152
|
+
"TemplateValidation": "Validation",
|
|
153
|
+
"FieldAutoUpdate": "Field Auto Update",
|
|
154
|
+
"Parameter": "Parameter",
|
|
155
|
+
"FieldName": "Name",
|
|
156
|
+
"fieldType": "Type",
|
|
157
|
+
"NamingFieldNotice": "Do not use period characters (\". \") when naming fields",
|
|
158
|
+
"DuplicateFieldName": "Field name duplicated. Please check again",
|
|
159
|
+
"isDeprecate": "Unsupport"
|
|
160
|
+
},
|
|
135
161
|
"InvalidMessage": {
|
|
136
162
|
"InvalidNotExistedUsername": "Username is invalid or not existed",
|
|
137
163
|
"InvalidAccountConnected": "Account has been added to this domain!"
|
|
@@ -117,7 +117,10 @@
|
|
|
117
117
|
"Copied": "Đã sao chép",
|
|
118
118
|
"InvalidChars": "Ký tự không hợp lệ",
|
|
119
119
|
"InvalidLength": "Độ dài chuỗi không hợp lệ",
|
|
120
|
-
"RequestHasApprove": "Yêu cầu đã được thay đổi"
|
|
120
|
+
"RequestHasApprove": "Yêu cầu đã được thay đổi",
|
|
121
|
+
"Advance": "Nâng cao",
|
|
122
|
+
"Default": "Mặc định",
|
|
123
|
+
"Events": "Sự kiện"
|
|
121
124
|
},
|
|
122
125
|
"InvalidMessage": {
|
|
123
126
|
"InvalidNotExistedUsername": "Tài khoản không tồn tại",
|
|
@@ -462,6 +465,29 @@
|
|
|
462
465
|
"CantBeDelete": "Không thể xoá chiến dịch này",
|
|
463
466
|
"Attributes": "Thuộc tính"
|
|
464
467
|
},
|
|
468
|
+
"TemplateManagement": {
|
|
469
|
+
"Create": "Tạo mới template",
|
|
470
|
+
"Edit": "Sửa template",
|
|
471
|
+
"title": "Quản trị template",
|
|
472
|
+
"TemplateName": "Tên Template",
|
|
473
|
+
"Page_lgn": "Trang Login",
|
|
474
|
+
"Page_wlc": "Trang Welcome",
|
|
475
|
+
"TemplateId": "Template ID",
|
|
476
|
+
"ImportTemplate": "Nhập Template",
|
|
477
|
+
"Information": "Thông tin",
|
|
478
|
+
"Template": "Template",
|
|
479
|
+
"Advance": "Nâng cao",
|
|
480
|
+
"Script": "Kịch bản",
|
|
481
|
+
"TemplateHtml": "Html",
|
|
482
|
+
"TemplateValidation": "Validation",
|
|
483
|
+
"FieldAutoUpdate": "Trường tự động cập nhật",
|
|
484
|
+
"Parameter": "Parameter",
|
|
485
|
+
"FieldName": "Tên",
|
|
486
|
+
"fieldType": "Kiểu",
|
|
487
|
+
"NamingFieldNotice": "Không sử dụng ký tự dấu chấm (\".\") khi đặt tên cho trường",
|
|
488
|
+
"DuplicateFieldName": "Tên trường trùng lặp. Vui lòng kiểm tra lại",
|
|
489
|
+
"isDeprecate": "Không hỗ trợ"
|
|
490
|
+
},
|
|
465
491
|
"DirectoryManagement": {
|
|
466
492
|
"DirectoryName": "Tên thư mục",
|
|
467
493
|
"CreateNewFolder": "Điền tên thư mục để tạo.",
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
-
};
|
|
52
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
54
|
-
/* eslint-disable testing-library/no-wait-for-side-effects */
|
|
55
|
-
/* eslint-disable testing-library/no-wait-for-multiple-assertions */
|
|
56
|
-
/* eslint-disable testing-library/no-unnecessary-act */
|
|
57
|
-
/* eslint-disable testing-library/no-node-access */
|
|
58
|
-
/* eslint-disable testing-library/no-container */
|
|
59
|
-
/* eslint-disable testing-library/no-wait-for-side-effects */
|
|
60
|
-
var react_1 = require("@testing-library/react");
|
|
61
|
-
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
62
|
-
var _1 = __importDefault(require("."));
|
|
63
|
-
var recoil_1 = require("recoil");
|
|
64
|
-
require("@testing-library/jest-dom");
|
|
65
|
-
// Mock Axios client
|
|
66
|
-
var directory = {
|
|
67
|
-
folderChildrens: [
|
|
68
|
-
{
|
|
69
|
-
folderChildrens: [
|
|
70
|
-
{
|
|
71
|
-
folderChildrens: [],
|
|
72
|
-
fileChildrens: [],
|
|
73
|
-
name: 'hu',
|
|
74
|
-
path: '/chào bạn/hu',
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
fileChildrens: [
|
|
78
|
-
{
|
|
79
|
-
name: 'CompressJPEG.online_512x512_image.jpg',
|
|
80
|
-
path: '/chào bạn/CompressJPEG.online_512x512_image.jpg',
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
name: 'chào bạn',
|
|
84
|
-
path: '/chào bạn',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
folderChildrens: [],
|
|
88
|
-
fileChildrens: [],
|
|
89
|
-
name: 'ahihi',
|
|
90
|
-
path: '/ahihi',
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
fileChildrens: [],
|
|
94
|
-
name: '4671435926616395650',
|
|
95
|
-
path: '',
|
|
96
|
-
};
|
|
97
|
-
var clientMethod = {
|
|
98
|
-
pageFilesCreateFolderPUT: function () {
|
|
99
|
-
var params = [];
|
|
100
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
101
|
-
params[_i] = arguments[_i];
|
|
102
|
-
}
|
|
103
|
-
return Promise.resolve();
|
|
104
|
-
},
|
|
105
|
-
pageFilesDelete2: function () {
|
|
106
|
-
var params = [];
|
|
107
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
108
|
-
params[_i] = arguments[_i];
|
|
109
|
-
}
|
|
110
|
-
return Promise.resolve();
|
|
111
|
-
},
|
|
112
|
-
pageFilesUploadPUT: function () {
|
|
113
|
-
var params = [];
|
|
114
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
115
|
-
params[_i] = arguments[_i];
|
|
116
|
-
}
|
|
117
|
-
return Promise.resolve();
|
|
118
|
-
},
|
|
119
|
-
pageFilesDownload2: function () {
|
|
120
|
-
var params = [];
|
|
121
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
122
|
-
params[_i] = arguments[_i];
|
|
123
|
-
}
|
|
124
|
-
return Promise.resolve();
|
|
125
|
-
},
|
|
126
|
-
pageFilesDownloadFolder2: function () {
|
|
127
|
-
var params = [];
|
|
128
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
129
|
-
params[_i] = arguments[_i];
|
|
130
|
-
}
|
|
131
|
-
return Promise.resolve();
|
|
132
|
-
},
|
|
133
|
-
pageFilesCreateGetTreeFolder: function () {
|
|
134
|
-
var params = [];
|
|
135
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
136
|
-
params[_i] = arguments[_i];
|
|
137
|
-
}
|
|
138
|
-
return Promise.resolve(directory);
|
|
139
|
-
},
|
|
140
|
-
pageFilesUpdateGetTreeFolder: function () {
|
|
141
|
-
var params = [];
|
|
142
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
143
|
-
params[_i] = arguments[_i];
|
|
144
|
-
}
|
|
145
|
-
return Promise.resolve(directory);
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
jest.mock('../../Context', function () { return ({
|
|
149
|
-
__esModule: true,
|
|
150
|
-
default: function () { return ({
|
|
151
|
-
service: {
|
|
152
|
-
pageFilesCreateGetTreeFolder: jest.fn(clientMethod.pageFilesCreateGetTreeFolder),
|
|
153
|
-
pageFilesUpdateGetTreeFolder: jest.fn(clientMethod.pageFilesUpdateGetTreeFolder),
|
|
154
|
-
},
|
|
155
|
-
pageCode: 1,
|
|
156
|
-
domainId: 'dat0910jqka',
|
|
157
|
-
configs: {
|
|
158
|
-
CAPTIVE_DOMAIN: 'CAPTIVE_DOMAIN',
|
|
159
|
-
PAGE_LOGIN_PREVIEW: 'PAGE_LOGIN_PREVIEW',
|
|
160
|
-
},
|
|
161
|
-
}); },
|
|
162
|
-
}); });
|
|
163
|
-
var mockFn = {
|
|
164
|
-
confirm: function (ok) {
|
|
165
|
-
ok();
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
jest.mock('../../../../Context', function () { return ({
|
|
169
|
-
__esModule: true,
|
|
170
|
-
useAwing: function () { return ({
|
|
171
|
-
appHelper: {
|
|
172
|
-
confirm: jest.fn(function (ok) { return mockFn.confirm(ok); }),
|
|
173
|
-
snackbar: jest.fn(function (str) { }),
|
|
174
|
-
},
|
|
175
|
-
}); },
|
|
176
|
-
}); });
|
|
177
|
-
jest.mock('./FileUtils', function () { return ({
|
|
178
|
-
__esModule: true,
|
|
179
|
-
useFileUtils: function () {
|
|
180
|
-
var params = [];
|
|
181
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
182
|
-
params[_i] = arguments[_i];
|
|
183
|
-
}
|
|
184
|
-
return ({
|
|
185
|
-
createFolder: jest.fn(function () {
|
|
186
|
-
var params = [];
|
|
187
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
188
|
-
params[_i] = arguments[_i];
|
|
189
|
-
}
|
|
190
|
-
return Promise.resolve(clientMethod.pageFilesCreateFolderPUT.apply(clientMethod, params));
|
|
191
|
-
}),
|
|
192
|
-
delete: jest.fn(function () {
|
|
193
|
-
var params = [];
|
|
194
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
195
|
-
params[_i] = arguments[_i];
|
|
196
|
-
}
|
|
197
|
-
return Promise.resolve(clientMethod.pageFilesDelete2.apply(clientMethod, params));
|
|
198
|
-
}),
|
|
199
|
-
upload: jest.fn(function () {
|
|
200
|
-
var params = [];
|
|
201
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
202
|
-
params[_i] = arguments[_i];
|
|
203
|
-
}
|
|
204
|
-
return Promise.resolve(clientMethod.pageFilesUploadPUT.apply(clientMethod, params));
|
|
205
|
-
}),
|
|
206
|
-
downloadFolder: jest.fn(function () {
|
|
207
|
-
var params = [];
|
|
208
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
209
|
-
params[_i] = arguments[_i];
|
|
210
|
-
}
|
|
211
|
-
return Promise.resolve(clientMethod.pageFilesDownloadFolder2.apply(clientMethod, params));
|
|
212
|
-
}),
|
|
213
|
-
downloadFile: jest.fn(function () {
|
|
214
|
-
var params = [];
|
|
215
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
216
|
-
params[_i] = arguments[_i];
|
|
217
|
-
}
|
|
218
|
-
return Promise.resolve(clientMethod.pageFilesDownload2.apply(clientMethod, params));
|
|
219
|
-
}),
|
|
220
|
-
});
|
|
221
|
-
},
|
|
222
|
-
}); });
|
|
223
|
-
// Mock i18next
|
|
224
|
-
jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
|
|
225
|
-
// Mock DataForm
|
|
226
|
-
jest.mock('../../../../Commons/Components/DeprecatedEnhancedDialog', function () { return function (props) {
|
|
227
|
-
return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("button", { "data-testid": "creatDirectoryCallBack", onClick: function () {
|
|
228
|
-
props.onSubmit('DirectoryName');
|
|
229
|
-
} }) }));
|
|
230
|
-
}; });
|
|
231
|
-
jest.mock('../../../../Commons/Components/FolderTreeView', function () { return function (props) {
|
|
232
|
-
return ((0, jsx_runtime_1.jsx)("div", { children: Object.entries(props).map(function (_a) {
|
|
233
|
-
var key = _a[0], val = _a[1];
|
|
234
|
-
return key === 'rootItem' ? ((0, jsx_runtime_1.jsx)("p", { children: JSON.stringify(props.rootItem) }, key)) : ((0, jsx_runtime_1.jsx)("button", { "data-testid": key, onClick: function () {
|
|
235
|
-
val(key + 'path');
|
|
236
|
-
} }, key));
|
|
237
|
-
}) }));
|
|
238
|
-
}; });
|
|
239
|
-
var renderUi = function (isCreat) {
|
|
240
|
-
if (isCreat === void 0) { isCreat = false; }
|
|
241
|
-
return (0, react_1.render)((0, jsx_runtime_1.jsx)(recoil_1.RecoilRoot, { children: (0, jsx_runtime_1.jsx)(_1.default, { isCreate: isCreat }) }));
|
|
242
|
-
};
|
|
243
|
-
describe('Tab File component', function () {
|
|
244
|
-
it('render without crash', function () {
|
|
245
|
-
renderUi();
|
|
246
|
-
});
|
|
247
|
-
it('trigger Download', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
248
|
-
var pageFilesDownload2Spy, pageFilesDownloadFolder2Spy;
|
|
249
|
-
return __generator(this, function (_a) {
|
|
250
|
-
switch (_a.label) {
|
|
251
|
-
case 0:
|
|
252
|
-
pageFilesDownload2Spy = jest.spyOn(clientMethod, 'pageFilesDownload2');
|
|
253
|
-
pageFilesDownloadFolder2Spy = jest.spyOn(clientMethod, 'pageFilesDownloadFolder2');
|
|
254
|
-
renderUi();
|
|
255
|
-
return [4 /*yield*/, (0, react_1.waitFor)(function () {
|
|
256
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('onDownload'));
|
|
257
|
-
expect(pageFilesDownload2Spy).toHaveBeenCalledWith('onDownloadpath');
|
|
258
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('onDownloadFolder'));
|
|
259
|
-
expect(pageFilesDownloadFolder2Spy).toHaveBeenCalledWith('onDownloadFolderpath');
|
|
260
|
-
})];
|
|
261
|
-
case 1:
|
|
262
|
-
_a.sent();
|
|
263
|
-
return [2 /*return*/];
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}); });
|
|
267
|
-
it('trigger Delete', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
268
|
-
var pageFilesDelete2Spy;
|
|
269
|
-
return __generator(this, function (_a) {
|
|
270
|
-
switch (_a.label) {
|
|
271
|
-
case 0:
|
|
272
|
-
pageFilesDelete2Spy = jest.spyOn(clientMethod, 'pageFilesDelete2');
|
|
273
|
-
renderUi();
|
|
274
|
-
return [4 /*yield*/, (0, react_1.waitFor)(function () {
|
|
275
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('onDelete'));
|
|
276
|
-
expect(pageFilesDelete2Spy).toHaveBeenCalledWith('onDeletepath');
|
|
277
|
-
})];
|
|
278
|
-
case 1:
|
|
279
|
-
_a.sent();
|
|
280
|
-
return [2 /*return*/];
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
}); });
|
|
284
|
-
it('trigger creatDirectoryCallBack', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
285
|
-
var pageFilesCreateFolderPUTSpy;
|
|
286
|
-
return __generator(this, function (_a) {
|
|
287
|
-
switch (_a.label) {
|
|
288
|
-
case 0:
|
|
289
|
-
pageFilesCreateFolderPUTSpy = jest.spyOn(clientMethod, 'pageFilesCreateFolderPUT');
|
|
290
|
-
renderUi(true);
|
|
291
|
-
return [4 /*yield*/, (0, react_1.waitFor)(function () {
|
|
292
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('onCreateDirectory'));
|
|
293
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('creatDirectoryCallBack'));
|
|
294
|
-
expect(pageFilesCreateFolderPUTSpy).toHaveBeenCalledWith('onCreateDirectorypath', 'DirectoryName');
|
|
295
|
-
})];
|
|
296
|
-
case 1:
|
|
297
|
-
_a.sent();
|
|
298
|
-
return [2 /*return*/];
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
}); });
|
|
302
|
-
it('trigger upload file', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
303
|
-
var pageFilesUploadPUTSpy, file, container, input;
|
|
304
|
-
return __generator(this, function (_a) {
|
|
305
|
-
switch (_a.label) {
|
|
306
|
-
case 0:
|
|
307
|
-
pageFilesUploadPUTSpy = jest.spyOn(clientMethod, 'pageFilesUploadPUT');
|
|
308
|
-
file = new File(['abc'], 'test.zip', {
|
|
309
|
-
type: 'application/x-zip-compressed',
|
|
310
|
-
});
|
|
311
|
-
container = renderUi().container;
|
|
312
|
-
input = container.querySelector("input#upload-files");
|
|
313
|
-
return [4 /*yield*/, (0, react_1.waitFor)(function () {
|
|
314
|
-
// Case này fail do không thể mock usref cùng với recoil
|
|
315
|
-
react_1.fireEvent.click(react_1.screen.getByTestId('onUploadFiles'));
|
|
316
|
-
react_1.fireEvent.change(input, { target: { files: undefined } });
|
|
317
|
-
user_event_1.default.upload(input, file);
|
|
318
|
-
expect(pageFilesUploadPUTSpy).toBeCalled();
|
|
319
|
-
})];
|
|
320
|
-
case 1:
|
|
321
|
-
_a.sent();
|
|
322
|
-
return [2 /*return*/];
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
}); });
|
|
326
|
-
});
|