@firedesktop/react-base 1.16.0 → 1.17.0
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/dist/components/Toaster.d.ts +13 -0
- package/dist/components/Toaster.js +32 -0
- package/dist/components/Toaster.js.map +1 -0
- package/dist/styles/toaster.css +50 -0
- package/dist/utils/fetch/Types.d.ts +1 -0
- package/dist/utils/fetch/fetchWrapper.d.ts +8 -7
- package/dist/utils/fetch/fetchWrapper.js +31 -17
- package/dist/utils/fetch/fetchWrapper.js.map +1 -1
- package/package.json +4 -3
- package/src/App.tsx +14 -5
- package/src/lib/components/Toaster.tsx +61 -0
- package/src/lib/styles/toaster.css +50 -0
- package/src/lib/utils/fetch/Types.ts +1 -0
- package/src/lib/utils/fetch/fetchWrapper.ts +32 -19
- package/debug.log +0 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import '../styles/toaster.css';
|
|
3
|
+
export declare type Toaster_Type = 'Error' | 'Information' | 'Success' | 'Warning';
|
|
4
|
+
export declare type Toaster_Prop_Type = {
|
|
5
|
+
content: string;
|
|
6
|
+
title: string;
|
|
7
|
+
type: Toaster_Type;
|
|
8
|
+
};
|
|
9
|
+
declare type Toaster_Props = {
|
|
10
|
+
propertiesObject: Toaster_Prop_Type;
|
|
11
|
+
};
|
|
12
|
+
declare const Toaster: ({ propertiesObject }: Toaster_Props) => JSX.Element;
|
|
13
|
+
export default Toaster;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ToastComponent } from '@syncfusion/ej2-react-notifications';
|
|
2
|
+
import React, { createRef, useEffect } from 'react';
|
|
3
|
+
import '../styles/toaster.css';
|
|
4
|
+
var Toaster = function (_a) {
|
|
5
|
+
var propertiesObject = _a.propertiesObject;
|
|
6
|
+
var toastObj = createRef();
|
|
7
|
+
var position = { X: 'Right' };
|
|
8
|
+
useEffect(function () {
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
|
+
if (propertiesObject && propertiesObject.title && propertiesObject.title !== '') {
|
|
11
|
+
toastObj.current.showCloseButton = true;
|
|
12
|
+
toastObj.current.showProgressBar = true;
|
|
13
|
+
if (propertiesObject.type === 'Information')
|
|
14
|
+
toastObj.current.show({ title: propertiesObject.title, content: (_a = propertiesObject.content) !== null && _a !== void 0 ? _a : '', cssClass: 'e-toast-info', icon: 'e-info toast-icons' });
|
|
15
|
+
else if (propertiesObject.type === 'Error')
|
|
16
|
+
toastObj.current.show({
|
|
17
|
+
title: propertiesObject.title,
|
|
18
|
+
content: (_b = propertiesObject.content) !== null && _b !== void 0 ? _b : '',
|
|
19
|
+
cssClass: 'e-toast-danger', icon: 'e-error toast-icons',
|
|
20
|
+
timeOut: 4000
|
|
21
|
+
});
|
|
22
|
+
else if (propertiesObject.type === 'Success')
|
|
23
|
+
toastObj.current.show({ title: propertiesObject.title, content: (_c = propertiesObject.content) !== null && _c !== void 0 ? _c : '', cssClass: 'e-toast-success', icon: 'e-success toast-icons' });
|
|
24
|
+
else if (propertiesObject.type === 'Warning')
|
|
25
|
+
toastObj.current.show({ title: propertiesObject.title, content: (_d = propertiesObject.content) !== null && _d !== void 0 ? _d : '', cssClass: 'e-toast-warning', icon: 'e-warning toast-icons' });
|
|
26
|
+
}
|
|
27
|
+
}, [propertiesObject]);
|
|
28
|
+
return (React.createElement(React.Fragment, null,
|
|
29
|
+
React.createElement(ToastComponent, { ref: toastObj, id: 'toast_default', position: position })));
|
|
30
|
+
};
|
|
31
|
+
export default Toaster;
|
|
32
|
+
//# sourceMappingURL=Toaster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toaster.js","sourceRoot":"","sources":["../../src/lib/components/Toaster.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,uBAAuB,CAAC;AAsB/B,IAAM,OAAO,GAAG,UAAC,EAAmC;QAAjC,gBAAgB,sBAAA;IAC/B,IAAM,QAAQ,GAAG,SAAS,EAAO,CAAC;IAClC,IAAM,QAAQ,GAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;IAEnD,SAAS,CAAC;;QACN,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,KAAK,EAAE,EAAE;YAC7E,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,QAAQ,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAExC,IAAI,gBAAgB,CAAC,IAAI,KAAK,aAAa;gBACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,QAAE,gBAAgB,CAAC,OAAO,mCAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;iBACvJ,IAAI,gBAAgB,CAAC,IAAI,KAAK,OAAO;gBACtC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE,gBAAgB,CAAC,KAAK;oBAAE,OAAO,QAAE,gBAAgB,CAAC,OAAO,mCAAI,EAAE;oBAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,qBAAqB;oBAC/H,OAAO,EAAE,IAAI;iBAChB,CAAC,CAAC;iBACF,IAAI,gBAAgB,CAAC,IAAI,KAAK,SAAS;gBACxC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,QAAE,gBAAgB,CAAC,OAAO,mCAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;iBAC7J,IAAI,gBAAgB,CAAC,IAAI,KAAK,SAAS;gBACxC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,QAAE,gBAAgB,CAAC,OAAO,mCAAI,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;SACrK;IAEL,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,CACH,oBAAC,KAAK,CAAC,QAAQ;QACX,oBAAC,cAAc,IACX,GAAG,EAAE,QAAQ,EACb,EAAE,EAAC,eAAe,EAClB,QAAQ,EAAE,QAAQ,GAAmB,CAC5B,CACpB,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'Toast_icons';
|
|
3
|
+
src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype');
|
|
4
|
+
font-weight: normal;
|
|
5
|
+
font-style: normal;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
#toast_types button {
|
|
9
|
+
margin: 5px;
|
|
10
|
+
min-width: 160px;
|
|
11
|
+
max-width: 160px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#toast_types {
|
|
15
|
+
text-align: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.toast-icons {
|
|
19
|
+
font-family: 'Toast_icons' !important;
|
|
20
|
+
speak: none;
|
|
21
|
+
font-size: 55px;
|
|
22
|
+
font-style: normal;
|
|
23
|
+
font-weight: normal;
|
|
24
|
+
font-variant: normal;
|
|
25
|
+
text-transform: none;
|
|
26
|
+
line-height: 1;
|
|
27
|
+
-webkit-font-smoothing: antialiased;
|
|
28
|
+
-moz-osx-font-smoothing: grayscale;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#toast_type .e-toast-icon.e-icons {
|
|
32
|
+
height: auto;
|
|
33
|
+
font-size: 30px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.toast-icons.e-success::before {
|
|
37
|
+
content: "\e701";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.toast-icons.e-error::before {
|
|
41
|
+
content: "\e700";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.toast-icons.e-info::before {
|
|
45
|
+
content: "\e704";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.toast-icons.e-warning::before {
|
|
49
|
+
content: "\e703";
|
|
50
|
+
}
|
|
@@ -2,12 +2,13 @@ import * as Types from './Types';
|
|
|
2
2
|
declare class FetchWrapper {
|
|
3
3
|
apiVersion?: string;
|
|
4
4
|
labels?: Types.ILabels;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
status_401?: () => void;
|
|
6
|
+
status_403?: () => void;
|
|
7
|
+
constructor(apiVersion?: string, labels?: Types.ILabels, status_401?: () => void, status_403?: () => void);
|
|
8
|
+
get: (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile?: boolean, isBlob?: boolean) => Promise<any>;
|
|
9
|
+
post: (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile?: boolean, isBlob?: boolean, additionalParams?: Types.AdditionalParamsType[]) => Promise<any>;
|
|
10
|
+
put: (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile?: boolean, isBlob?: boolean) => Promise<any>;
|
|
11
|
+
delete: (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile?: boolean, isBlob?: boolean) => Promise<any>;
|
|
12
|
+
generic: (method: string, url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile?: boolean, isBlob?: boolean, version?: string, additionalParams?: Types.AdditionalParamsType[]) => Promise<any>;
|
|
12
13
|
}
|
|
13
14
|
export default FetchWrapper;
|
|
@@ -2,6 +2,7 @@ var Constants = (function () {
|
|
|
2
2
|
function Constants() {
|
|
3
3
|
}
|
|
4
4
|
Constants.labels = {
|
|
5
|
+
errorBadRequest: 'Request is not in a valid format',
|
|
5
6
|
errorGeneric: 'Sorry we have errors on the remote server',
|
|
6
7
|
errorServerNotAvailable: 'Server not available',
|
|
7
8
|
errorSessionExpired: 'Your session has expired, please login.',
|
|
@@ -9,30 +10,30 @@ var Constants = (function () {
|
|
|
9
10
|
return Constants;
|
|
10
11
|
}());
|
|
11
12
|
var FetchWrapper = (function () {
|
|
12
|
-
function FetchWrapper(apiVersion, labels,
|
|
13
|
+
function FetchWrapper(apiVersion, labels, status_401, status_403) {
|
|
13
14
|
var _this = this;
|
|
14
|
-
this.get = function (url, token, params, isFile, isBlob) {
|
|
15
|
+
this.get = function (url, token, onGenericServerError, params, isFile, isBlob) {
|
|
15
16
|
if (isFile === void 0) { isFile = false; }
|
|
16
17
|
if (isBlob === void 0) { isBlob = false; }
|
|
17
|
-
return _this.generic('GET', url, token, params, isFile, isBlob);
|
|
18
|
+
return _this.generic('GET', url, token, onGenericServerError, params, isFile, isBlob);
|
|
18
19
|
};
|
|
19
|
-
this.post = function (url, token, params, isFile, isBlob, additionalParams) {
|
|
20
|
+
this.post = function (url, token, onGenericServerError, params, isFile, isBlob, additionalParams) {
|
|
20
21
|
if (isFile === void 0) { isFile = false; }
|
|
21
22
|
if (isBlob === void 0) { isBlob = false; }
|
|
22
23
|
if (additionalParams === void 0) { additionalParams = []; }
|
|
23
|
-
return _this.generic('POST', url, token, params, isFile, isBlob, _this.apiVersion, additionalParams);
|
|
24
|
+
return _this.generic('POST', url, token, onGenericServerError, params, isFile, isBlob, _this.apiVersion, additionalParams);
|
|
24
25
|
};
|
|
25
|
-
this.put = function (url, token, params, isFile, isBlob) {
|
|
26
|
+
this.put = function (url, token, onGenericServerError, params, isFile, isBlob) {
|
|
26
27
|
if (isFile === void 0) { isFile = false; }
|
|
27
28
|
if (isBlob === void 0) { isBlob = false; }
|
|
28
|
-
return _this.generic('PUT', url, token, params, isFile, isBlob);
|
|
29
|
+
return _this.generic('PUT', url, token, onGenericServerError, params, isFile, isBlob);
|
|
29
30
|
};
|
|
30
|
-
this.delete = function (url, token, params, isFile, isBlob) {
|
|
31
|
+
this.delete = function (url, token, onGenericServerError, params, isFile, isBlob) {
|
|
31
32
|
if (isFile === void 0) { isFile = false; }
|
|
32
33
|
if (isBlob === void 0) { isBlob = false; }
|
|
33
|
-
return _this.generic('DELETE', url, token, params, isFile, isBlob);
|
|
34
|
+
return _this.generic('DELETE', url, token, onGenericServerError, params, isFile, isBlob);
|
|
34
35
|
};
|
|
35
|
-
this.generic = function (method, url, token, params, isFile, isBlob, version, additionalParams) {
|
|
36
|
+
this.generic = function (method, url, token, onGenericServerError, params, isFile, isBlob, version, additionalParams) {
|
|
36
37
|
if (isFile === void 0) { isFile = false; }
|
|
37
38
|
if (isBlob === void 0) { isBlob = false; }
|
|
38
39
|
if (version === void 0) { version = _this.apiVersion; }
|
|
@@ -70,7 +71,8 @@ var FetchWrapper = (function () {
|
|
|
70
71
|
headers: headers
|
|
71
72
|
};
|
|
72
73
|
var labels = _this.labels;
|
|
73
|
-
var
|
|
74
|
+
var status_401 = _this.status_401;
|
|
75
|
+
var status_403 = _this.status_403;
|
|
74
76
|
return fetch(url, requestInit)
|
|
75
77
|
.then(function (response) {
|
|
76
78
|
if (response.status < 200 || response.status >= 300)
|
|
@@ -84,14 +86,25 @@ var FetchWrapper = (function () {
|
|
|
84
86
|
console.error("Error on fetch url: " + url);
|
|
85
87
|
if (!error || error.message === 'Failed to fetch')
|
|
86
88
|
throw new Error(labels.errorServerNotAvailable);
|
|
87
|
-
if (error.
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
if (error.status === 401 && status_401) {
|
|
90
|
+
status_401();
|
|
91
|
+
}
|
|
92
|
+
else if (error.status === 403 && status_401) {
|
|
93
|
+
status_403();
|
|
94
|
+
}
|
|
95
|
+
else if (error.status === 400 && onGenericServerError) {
|
|
96
|
+
onGenericServerError(error.status);
|
|
97
|
+
}
|
|
98
|
+
if (!error.text) {
|
|
99
|
+
if (error.status === 400) {
|
|
100
|
+
throw new Error(labels.errorBadRequest);
|
|
101
|
+
}
|
|
102
|
+
else if (error.status === 401 || error.status === 403) {
|
|
90
103
|
throw new Error(labels.errorSessionExpired);
|
|
91
104
|
}
|
|
92
|
-
else
|
|
93
|
-
return error.text();
|
|
94
105
|
}
|
|
106
|
+
else
|
|
107
|
+
return error.text();
|
|
95
108
|
if (error.message && error.message !== '')
|
|
96
109
|
throw error.message;
|
|
97
110
|
throw new Error(labels.errorGeneric);
|
|
@@ -105,7 +118,8 @@ var FetchWrapper = (function () {
|
|
|
105
118
|
});
|
|
106
119
|
};
|
|
107
120
|
this.apiVersion = apiVersion;
|
|
108
|
-
this.
|
|
121
|
+
this.status_401 = status_401;
|
|
122
|
+
this.status_403 = status_403;
|
|
109
123
|
if (labels && labels !== null && labels.errorGeneric && labels.errorServerNotAvailable && labels.errorSessionExpired)
|
|
110
124
|
this.labels = labels;
|
|
111
125
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWrapper.js","sourceRoot":"","sources":["../../../src/lib/utils/fetch/fetchWrapper.ts"],"names":[],"mappings":"AAEA;IAAA;
|
|
1
|
+
{"version":3,"file":"fetchWrapper.js","sourceRoot":"","sources":["../../../src/lib/utils/fetch/fetchWrapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firedesktop/react-base",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"description": "This is the FireDesktop base package used to support every React Project in this Company.",
|
|
7
7
|
"author": "alessandro.gambaro",
|
|
8
8
|
"repository": "https://firedesktopDevOps@dev.azure.com/firedesktopDevOps/baseFEComponents/_git/baseFEComponents",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@syncfusion/ej2-
|
|
10
|
+
"@syncfusion/ej2-react-notifications": "18.3.47",
|
|
11
|
+
"@syncfusion/ej2-popups": "^18.3.50",
|
|
11
12
|
"react": "^16.14.0",
|
|
12
13
|
"react-dom": "^16.14.0",
|
|
13
14
|
"react-redux": "^7.2.1"
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
"peerDependencies": {},
|
|
37
38
|
"scripts": {
|
|
38
39
|
"distribute_not_working": "rmdir /s /q dist & mkdir dist && npx babel src/lib --out-dir dist --extensions \".js,.ts,.tsx\" --source-maps inline",
|
|
39
|
-
"start": "react-scripts start
|
|
40
|
+
"start": "react-scripts start",
|
|
40
41
|
"distribute": "rmdir /s /q dist & mkdir dist\\styles && tsc && copyfiles -f src/lib/styles/* dist/styles"
|
|
41
42
|
},
|
|
42
43
|
"eslintConfig": {
|
package/src/App.tsx
CHANGED
|
@@ -31,16 +31,26 @@ function App() {
|
|
|
31
31
|
const [options, setOptions] = useState<{ value: string }[]>([]);
|
|
32
32
|
const [spinning, setSpinning] = useState(false);
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
|
|
35
|
+
function onGenericServerError(status: number) {
|
|
36
|
+
alert(`Error, Status: ${status}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function status_401() {
|
|
40
|
+
alert('Log Out 401');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function status_403() {
|
|
44
|
+
alert('Log Out 403');
|
|
36
45
|
}
|
|
37
46
|
|
|
38
47
|
const textFetch = () => {
|
|
39
48
|
const labels = { errorGeneric: 'Errore generiro', errorServerNotAvailable: 'No serviziooo', errorSessionExpired: 'Sessione scadurta' } as Utils.Fetch.Types.ILabels;
|
|
40
49
|
|
|
41
|
-
const runner = new Utils.Fetch.FetchWrapper(null, labels,
|
|
50
|
+
const runner = new Utils.Fetch.FetchWrapper(null, labels, status_401, status_403);
|
|
51
|
+
|
|
42
52
|
setSpinning(true);
|
|
43
|
-
runner.get('https://my-json-server.typicode.com/typicode/demo/posts', null, null, false, false).then(response => {
|
|
53
|
+
runner.get('https://my-json-server.typicode.com/typicode/demo/posts', null, onGenericServerError, null, false, false).then(response => {
|
|
44
54
|
// @ts-ignore
|
|
45
55
|
const values = response.map(x => {
|
|
46
56
|
return { value: x.id, label: x.title };
|
|
@@ -52,7 +62,6 @@ function App() {
|
|
|
52
62
|
if (errorMessage)
|
|
53
63
|
console.log(errorMessage);
|
|
54
64
|
});
|
|
55
|
-
|
|
56
65
|
};
|
|
57
66
|
|
|
58
67
|
const updateAppState = (name: string, value: object) => {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ToastComponent } from '@syncfusion/ej2-react-notifications';
|
|
2
|
+
import { PositionDataModel } from '@syncfusion/ej2-popups';
|
|
3
|
+
import React, { createRef, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
import '../styles/toaster.css';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export type Toaster_Type =
|
|
9
|
+
| 'Error'
|
|
10
|
+
| 'Information'
|
|
11
|
+
| 'Success'
|
|
12
|
+
| 'Warning';
|
|
13
|
+
|
|
14
|
+
export type Toaster_Prop_Type = {
|
|
15
|
+
content: string,
|
|
16
|
+
title: string,
|
|
17
|
+
type: Toaster_Type
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type Toaster_Props = {
|
|
21
|
+
propertiesObject: Toaster_Prop_Type
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* https://ej2.syncfusion.com/react/demos/?_ga=2.216203862.1349101002.1605820787-2080297629.1605485687#/material/toast/default
|
|
26
|
+
*/
|
|
27
|
+
const Toaster = ({ propertiesObject }: Toaster_Props) => {
|
|
28
|
+
const toastObj = createRef<any>();
|
|
29
|
+
const position: PositionDataModel = { X: 'Right' };
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (propertiesObject && propertiesObject.title && propertiesObject.title !== '') {
|
|
33
|
+
toastObj.current.showCloseButton = true;
|
|
34
|
+
toastObj.current.showProgressBar = true;
|
|
35
|
+
|
|
36
|
+
if (propertiesObject.type === 'Information')
|
|
37
|
+
toastObj.current.show({ title: propertiesObject.title, content: propertiesObject.content ?? '', cssClass: 'e-toast-info', icon: 'e-info toast-icons' });
|
|
38
|
+
else if (propertiesObject.type === 'Error')
|
|
39
|
+
toastObj.current.show({
|
|
40
|
+
title: propertiesObject.title, content: propertiesObject.content ?? '', cssClass: 'e-toast-danger', icon: 'e-error toast-icons',
|
|
41
|
+
timeOut: 4000
|
|
42
|
+
});
|
|
43
|
+
else if (propertiesObject.type === 'Success')
|
|
44
|
+
toastObj.current.show({ title: propertiesObject.title, content: propertiesObject.content ?? '', cssClass: 'e-toast-success', icon: 'e-success toast-icons' });
|
|
45
|
+
else if (propertiesObject.type === 'Warning')
|
|
46
|
+
toastObj.current.show({ title: propertiesObject.title, content: propertiesObject.content ?? '', cssClass: 'e-toast-warning', icon: 'e-warning toast-icons' });
|
|
47
|
+
}
|
|
48
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
|
+
}, [propertiesObject]);
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<React.Fragment>
|
|
53
|
+
<ToastComponent
|
|
54
|
+
ref={toastObj}
|
|
55
|
+
id='toast_default'
|
|
56
|
+
position={position}></ToastComponent>
|
|
57
|
+
</React.Fragment>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export default Toaster;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'Toast_icons';
|
|
3
|
+
src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype');
|
|
4
|
+
font-weight: normal;
|
|
5
|
+
font-style: normal;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
#toast_types button {
|
|
9
|
+
margin: 5px;
|
|
10
|
+
min-width: 160px;
|
|
11
|
+
max-width: 160px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#toast_types {
|
|
15
|
+
text-align: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.toast-icons {
|
|
19
|
+
font-family: 'Toast_icons' !important;
|
|
20
|
+
speak: none;
|
|
21
|
+
font-size: 55px;
|
|
22
|
+
font-style: normal;
|
|
23
|
+
font-weight: normal;
|
|
24
|
+
font-variant: normal;
|
|
25
|
+
text-transform: none;
|
|
26
|
+
line-height: 1;
|
|
27
|
+
-webkit-font-smoothing: antialiased;
|
|
28
|
+
-moz-osx-font-smoothing: grayscale;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#toast_type .e-toast-icon.e-icons {
|
|
32
|
+
height: auto;
|
|
33
|
+
font-size: 30px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.toast-icons.e-success::before {
|
|
37
|
+
content: "\e701";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.toast-icons.e-error::before {
|
|
41
|
+
content: "\e700";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.toast-icons.e-info::before {
|
|
45
|
+
content: "\e704";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.toast-icons.e-warning::before {
|
|
49
|
+
content: "\e703";
|
|
50
|
+
}
|
|
@@ -2,6 +2,7 @@ import * as Types from './Types';
|
|
|
2
2
|
|
|
3
3
|
class Constants {
|
|
4
4
|
static labels = {
|
|
5
|
+
errorBadRequest: 'Request is not in a valid format',
|
|
5
6
|
errorGeneric: 'Sorry we have errors on the remote server',
|
|
6
7
|
errorServerNotAvailable: 'Server not available',
|
|
7
8
|
errorSessionExpired: 'Your session has expired, please login.',
|
|
@@ -11,11 +12,13 @@ class Constants {
|
|
|
11
12
|
class FetchWrapper {
|
|
12
13
|
apiVersion?: string;
|
|
13
14
|
labels?: Types.ILabels;
|
|
14
|
-
|
|
15
|
+
status_401?: () => void;
|
|
16
|
+
status_403?: () => void;
|
|
15
17
|
|
|
16
|
-
constructor(apiVersion?: string, labels?: Types.ILabels,
|
|
18
|
+
constructor(apiVersion?: string, labels?: Types.ILabels, status_401?: () => void, status_403?: () => void) {
|
|
17
19
|
this.apiVersion = apiVersion;
|
|
18
|
-
this.
|
|
20
|
+
this.status_401 = status_401;
|
|
21
|
+
this.status_403 = status_403;
|
|
19
22
|
|
|
20
23
|
if (labels && labels !== null && labels.errorGeneric && labels.errorServerNotAvailable && labels.errorSessionExpired)
|
|
21
24
|
this.labels = labels;
|
|
@@ -23,23 +26,23 @@ class FetchWrapper {
|
|
|
23
26
|
this.labels = Constants.labels;
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
get = (url: string, token?: string, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
27
|
-
return this.generic('GET', url, token, params, isFile, isBlob);
|
|
29
|
+
get = (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
30
|
+
return this.generic('GET', url, token, onGenericServerError, params, isFile, isBlob);
|
|
28
31
|
}
|
|
29
32
|
|
|
30
|
-
post = (url: string, token?: string, params?: Blob | any, isFile = false, isBlob = false, additionalParams: Types.AdditionalParamsType[] = []) => {
|
|
31
|
-
return this.generic('POST', url, token, params, isFile, isBlob, this.apiVersion, additionalParams);
|
|
33
|
+
post = (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile = false, isBlob = false, additionalParams: Types.AdditionalParamsType[] = []) => {
|
|
34
|
+
return this.generic('POST', url, token, onGenericServerError, params, isFile, isBlob, this.apiVersion, additionalParams);
|
|
32
35
|
}
|
|
33
36
|
|
|
34
|
-
put = (url: string, token?: string, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
35
|
-
return this.generic('PUT', url, token, params, isFile, isBlob);
|
|
37
|
+
put = (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
38
|
+
return this.generic('PUT', url, token, onGenericServerError, params, isFile, isBlob);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
delete = (url: string, token?: string, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
39
|
-
return this.generic('DELETE', url, token, params, isFile, isBlob);
|
|
41
|
+
delete = (url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile = false, isBlob = false) => {
|
|
42
|
+
return this.generic('DELETE', url, token, onGenericServerError, params, isFile, isBlob);
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
generic = (method: string, url: string, token?: string, params?: Blob | any, isFile = false, isBlob = false, version = this.apiVersion, additionalParams: Types.AdditionalParamsType[] = []) => {
|
|
45
|
+
generic = (method: string, url: string, token?: string, onGenericServerError?: (status: number) => void, params?: Blob | any, isFile = false, isBlob = false, version = this.apiVersion, additionalParams: Types.AdditionalParamsType[] = []) => {
|
|
43
46
|
// Headers & Body
|
|
44
47
|
let body: BodyInit;
|
|
45
48
|
const headers = new Headers();
|
|
@@ -76,7 +79,8 @@ class FetchWrapper {
|
|
|
76
79
|
} as RequestInit;
|
|
77
80
|
|
|
78
81
|
const labels = this.labels;
|
|
79
|
-
const
|
|
82
|
+
const status_401 = this.status_401;
|
|
83
|
+
const status_403 = this.status_403;
|
|
80
84
|
|
|
81
85
|
return fetch(url, requestInit)
|
|
82
86
|
.then(response => {
|
|
@@ -95,15 +99,24 @@ class FetchWrapper {
|
|
|
95
99
|
if (!error || error.message === 'Failed to fetch')
|
|
96
100
|
throw new Error(labels.errorServerNotAvailable);
|
|
97
101
|
|
|
98
|
-
// This is an error coming from
|
|
99
|
-
if (error.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
// This is an error coming from BE
|
|
103
|
+
if (error.status === 401 && status_401) {
|
|
104
|
+
status_401();
|
|
105
|
+
} else if (error.status === 403 && status_401) {
|
|
106
|
+
status_403();
|
|
107
|
+
} else if (error.status === 400 && onGenericServerError) {
|
|
108
|
+
onGenericServerError(error.status);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!error.text) {
|
|
112
|
+
if (error.status === 400) {
|
|
113
|
+
throw new Error(labels.errorBadRequest);
|
|
114
|
+
} else if (error.status === 401 || error.status === 403) {
|
|
102
115
|
throw new Error(labels.errorSessionExpired);
|
|
103
116
|
}
|
|
104
|
-
else
|
|
105
|
-
return error.text();
|
|
106
117
|
}
|
|
118
|
+
else
|
|
119
|
+
return error.text();
|
|
107
120
|
|
|
108
121
|
if (error.message && error.message !== '')
|
|
109
122
|
throw error.message;
|
package/debug.log
DELETED