@steroidsjs/core 2.1.0-beta.2 → 2.1.0-beta.20
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/actions/form.d.ts +9 -0
- package/actions/form.js +11 -1
- package/actions/list.d.ts +1 -0
- package/actions/list.js +1 -0
- package/components/ClientStorageComponent.d.ts +3 -3
- package/components/ClientStorageComponent.js +28 -22
- package/components/HttpComponent.js +32 -15
- package/components/LocaleComponent.js +9 -9
- package/components/MetricsComponent.js +3 -1
- package/components/StoreComponent.d.ts +6 -0
- package/components/StoreComponent.js +6 -7
- package/components/UiComponent.d.ts +1 -1
- package/components/WebSocketComponent.d.ts +1 -1
- package/hoc/components.d.ts +1 -1
- package/hoc/components.js +1 -1
- package/hoc/file.d.ts +1 -0
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +3 -1
- package/hooks/useAbsolutePositioning.d.ts +5 -0
- package/hooks/useAbsolutePositioning.js +6 -6
- package/hooks/useApplication.d.ts +29 -26
- package/hooks/useApplication.js +17 -82
- package/hooks/useComponents.d.ts +1 -14
- package/hooks/useComponents.js +5 -5
- package/hooks/useDataProvider.js +4 -2
- package/hooks/useDataSelect.d.ts +12 -6
- package/hooks/useDataSelect.js +5 -3
- package/hooks/useFetch.d.ts +11 -3
- package/hooks/useFetch.js +34 -31
- package/hooks/useFile.js +14 -2
- package/hooks/useLayout.d.ts +9 -0
- package/hooks/useLayout.js +64 -44
- package/hooks/useList.d.ts +45 -0
- package/hooks/useList.js +83 -53
- package/hooks/useModel.js +1 -1
- package/hooks/useScreen.d.ts +1 -1
- package/hooks/useScreen.js +2 -2
- package/hooks/useSsr.d.ts +2 -0
- package/hooks/useSsr.js +8 -0
- package/index.d.ts +8 -2
- package/package.json +6 -3
- package/providers/ComponentsProvider.d.ts +26 -0
- package/providers/ComponentsProvider.js +28 -0
- package/providers/ScreenProvider.d.ts +20 -0
- package/providers/ScreenProvider.js +87 -0
- package/providers/SsrProvider.d.ts +17 -0
- package/providers/SsrProvider.js +32 -0
- package/providers/index.d.ts +4 -0
- package/providers/index.js +12 -0
- package/reducers/form.d.ts +1 -1
- package/reducers/form.js +3 -1
- package/reducers/index.js +1 -1
- package/reducers/list.js +1 -3
- package/reducers/router.js +1 -1
- package/ui/content/Alert/Alert.d.ts +50 -0
- package/ui/content/Alert/Alert.js +39 -0
- package/ui/content/Alert/index.d.ts +2 -0
- package/ui/content/Alert/index.js +7 -0
- package/ui/content/Avatar/Avatar.d.ts +53 -12
- package/ui/content/Avatar/Avatar.js +25 -4
- package/ui/content/Avatar/index.d.ts +6 -1
- package/ui/content/Avatar/index.js +4 -0
- package/ui/content/Card/Card.d.ts +61 -13
- package/ui/content/Card/Card.js +3 -2
- package/ui/content/Collapse/Collapse.d.ts +63 -0
- package/ui/content/Collapse/Collapse.js +75 -0
- package/ui/content/Collapse/CollapseItem.d.ts +67 -0
- package/ui/content/Collapse/CollapseItem.js +22 -0
- package/ui/content/Collapse/index.d.ts +7 -0
- package/ui/content/Collapse/index.js +8 -0
- package/ui/content/Detail/Detail.d.ts +102 -0
- package/ui/content/Detail/Detail.js +155 -0
- package/ui/content/Detail/DetailItem.d.ts +43 -0
- package/ui/content/Detail/DetailItem.js +10 -0
- package/ui/content/Detail/demo/basic.d.ts +8 -0
- package/ui/content/Detail/demo/basic.js +56 -0
- package/ui/content/Detail/demo/controls.d.ts +8 -0
- package/ui/content/Detail/demo/controls.js +56 -0
- package/ui/content/Detail/demo/layout.d.ts +8 -0
- package/ui/content/Detail/demo/layout.js +56 -0
- package/ui/content/Detail/demo/responsive.d.ts +8 -0
- package/ui/content/Detail/demo/responsive.js +71 -0
- package/ui/content/Detail/demo/sizes.d.ts +8 -0
- package/ui/content/Detail/demo/sizes.js +61 -0
- package/ui/content/Detail/index.d.ts +3 -0
- package/ui/content/Detail/index.js +10 -0
- package/ui/content/DropDown/DropDown.d.ts +1 -0
- package/ui/content/DropDown/DropDown.js +1 -0
- package/ui/content/index.d.ts +13 -0
- package/ui/content/index.js +22 -0
- package/ui/crud/Crud/Crud.d.ts +1 -1
- package/ui/crud/Crud/Crud.js +1 -1
- package/ui/crud/index.d.ts +1 -0
- package/ui/form/Button/Button.d.ts +1 -0
- package/ui/form/Button/Button.js +1 -0
- package/ui/form/DateField/useDateInputState.d.ts +4 -0
- package/ui/form/DateField/useDateInputState.js +3 -3
- package/ui/form/DateField/useDateTime.js +9 -7
- package/ui/form/DateTimeField/DateTimeField.js +2 -1
- package/ui/form/DropDownField/DropDownField.js +10 -3
- package/ui/form/Form/Form.js +118 -106
- package/ui/form/ImageField/ImageField.d.ts +87 -0
- package/ui/form/ImageField/ImageField.js +145 -0
- package/ui/form/ImageField/index.d.ts +2 -0
- package/ui/form/ImageField/index.js +7 -0
- package/ui/form/InputField/InputField.d.ts +7 -0
- package/ui/form/InputField/InputField.js +26 -22
- package/ui/form/TextField/TextField.d.ts +2 -1
- package/ui/form/TextField/TextField.js +1 -1
- package/ui/icon/Icon/Icon.js +3 -0
- package/ui/layout/Meta/Meta.d.ts +56 -0
- package/ui/layout/Meta/Meta.js +38 -0
- package/ui/layout/Meta/index.d.ts +2 -0
- package/ui/layout/Meta/index.js +7 -0
- package/ui/layout/Notifications/Notifications.js +1 -1
- package/ui/layout/Portal.js +3 -0
- package/ui/layout/ProgressBar/ProgressBar.d.ts +55 -0
- package/ui/layout/ProgressBar/ProgressBar.js +52 -0
- package/ui/layout/ProgressBar/index.d.ts +2 -0
- package/ui/layout/ProgressBar/index.js +7 -0
- package/ui/layout/Skeleton/Skeleton.d.ts +25 -0
- package/ui/layout/Skeleton/Skeleton.js +11 -0
- package/ui/layout/Skeleton/index.d.ts +2 -0
- package/ui/layout/Skeleton/index.js +7 -0
- package/ui/list/Steps/Steps.d.ts +32 -0
- package/ui/list/Steps/Steps.js +23 -0
- package/ui/list/Steps/index.d.ts +2 -0
- package/ui/list/Steps/index.js +7 -0
- package/ui/nav/Router/Router.d.ts +13 -0
- package/ui/nav/Router/Router.js +1 -1
- package/utils/calendar.d.ts +1 -1
- package/utils/calendar.js +8 -1
- package/ui/content/Avatar/SizeContext.d.ts +0 -1
- package/ui/content/Avatar/SizeContext.js +0 -14
- package/ui/nav/Router/SsrProvider.d.ts +0 -15
- package/ui/nav/Router/SsrProvider.js +0 -55
package/actions/form.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export declare const FORM_INITIALIZE = "@form/initialize";
|
|
|
2
2
|
export declare const FORM_CHANGE = "@form/change";
|
|
3
3
|
export declare const FORM_RESET = "@form/reset";
|
|
4
4
|
export declare const FORM_SET_ERRORS = "@form/set_errors";
|
|
5
|
+
export declare const FORM_SUBMIT = "@form/submit";
|
|
5
6
|
export declare const FORM_ARRAY_ADD = "@form/array_add";
|
|
6
7
|
export declare const FORM_ARRAY_REMOVE = "@form/array_remove";
|
|
7
8
|
/**
|
|
@@ -36,6 +37,14 @@ export declare const formSetErrors: (formId: any, errors: any) => {
|
|
|
36
37
|
formId: any;
|
|
37
38
|
errors: any;
|
|
38
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* Сабмит формы
|
|
42
|
+
* @param formId
|
|
43
|
+
*/
|
|
44
|
+
export declare const formSubmit: (formId: any) => {
|
|
45
|
+
type: string;
|
|
46
|
+
formId: any;
|
|
47
|
+
};
|
|
39
48
|
/**
|
|
40
49
|
* Сброс данных формы к первоначальному состоянию (к initialValues)
|
|
41
50
|
* @param formId
|
package/actions/form.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
exports.__esModule = true;
|
|
3
|
-
exports.formArrayRemove = exports.formArrayAdd = exports.formReset = exports.formSetErrors = exports.formChange = exports.formInitialize = exports.FORM_ARRAY_REMOVE = exports.FORM_ARRAY_ADD = exports.FORM_SET_ERRORS = exports.FORM_RESET = exports.FORM_CHANGE = exports.FORM_INITIALIZE = void 0;
|
|
3
|
+
exports.formArrayRemove = exports.formArrayAdd = exports.formReset = exports.formSubmit = exports.formSetErrors = exports.formChange = exports.formInitialize = exports.FORM_ARRAY_REMOVE = exports.FORM_ARRAY_ADD = exports.FORM_SUBMIT = exports.FORM_SET_ERRORS = exports.FORM_RESET = exports.FORM_CHANGE = exports.FORM_INITIALIZE = void 0;
|
|
4
4
|
exports.FORM_INITIALIZE = '@form/initialize';
|
|
5
5
|
exports.FORM_CHANGE = '@form/change';
|
|
6
6
|
exports.FORM_RESET = '@form/reset';
|
|
7
7
|
exports.FORM_SET_ERRORS = '@form/set_errors';
|
|
8
|
+
exports.FORM_SUBMIT = '@form/submit';
|
|
8
9
|
exports.FORM_ARRAY_ADD = '@form/array_add';
|
|
9
10
|
exports.FORM_ARRAY_REMOVE = '@form/array_remove';
|
|
10
11
|
/**
|
|
@@ -42,6 +43,15 @@ var formSetErrors = function (formId, errors) { return ({
|
|
|
42
43
|
errors: errors
|
|
43
44
|
}); };
|
|
44
45
|
exports.formSetErrors = formSetErrors;
|
|
46
|
+
/**
|
|
47
|
+
* Сабмит формы
|
|
48
|
+
* @param formId
|
|
49
|
+
*/
|
|
50
|
+
var formSubmit = function (formId) { return ({
|
|
51
|
+
type: exports.FORM_SUBMIT,
|
|
52
|
+
formId: formId
|
|
53
|
+
}); };
|
|
54
|
+
exports.formSubmit = formSubmit;
|
|
45
55
|
/**
|
|
46
56
|
* Сброс данных формы к первоначальному состоянию (к initialValues)
|
|
47
57
|
* @param formId
|
package/actions/list.d.ts
CHANGED
|
@@ -51,6 +51,7 @@ export declare const listInit: (listId: any, payload: any) => {
|
|
|
51
51
|
};
|
|
52
52
|
export declare const listSetItems: (listId: any, items: any) => {
|
|
53
53
|
type: string;
|
|
54
|
+
listId: any;
|
|
54
55
|
items: any;
|
|
55
56
|
};
|
|
56
57
|
export declare const listSetLayout: (listId: any, layoutName: any) => {
|
package/actions/list.js
CHANGED
|
@@ -133,6 +133,7 @@ var listInit = function (listId, payload) { return ({
|
|
|
133
133
|
exports.listInit = listInit;
|
|
134
134
|
var listSetItems = function (listId, items) { return ({
|
|
135
135
|
type: exports.LIST_SET_ITEMS,
|
|
136
|
+
listId: listId,
|
|
136
137
|
items: items
|
|
137
138
|
}); };
|
|
138
139
|
exports.listSetItems = listSetItems;
|
|
@@ -6,16 +6,16 @@ export default class ClientStorageComponent {
|
|
|
6
6
|
STORAGE_COOKIE: string;
|
|
7
7
|
STORAGE_LOCAL: any;
|
|
8
8
|
STORAGE_SESSION: any;
|
|
9
|
-
cookieAvailable: any;
|
|
10
9
|
localStorageAvailable: boolean;
|
|
11
10
|
sessionStorageAvailable: boolean;
|
|
12
|
-
|
|
11
|
+
private _ssrCookie;
|
|
12
|
+
constructor(components: any, config: any);
|
|
13
13
|
/**
|
|
14
14
|
* @param {string} name
|
|
15
15
|
* @param {string} [storageName]
|
|
16
16
|
* @returns {*}
|
|
17
17
|
*/
|
|
18
|
-
get(name: any, storageName: any):
|
|
18
|
+
get(name: any, storageName: any): any;
|
|
19
19
|
/**
|
|
20
20
|
* @param {string} name
|
|
21
21
|
* @param {*} value
|
|
@@ -18,17 +18,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
18
18
|
__setModuleDefault(result, mod);
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
21
24
|
exports.__esModule = true;
|
|
22
25
|
var cookie = __importStar(require("js-cookie"));
|
|
26
|
+
var moment_1 = __importDefault(require("moment"));
|
|
23
27
|
/**
|
|
24
28
|
* Client Storage Component
|
|
25
29
|
* Слой хранения данных в браузере (cookie, local/session storage) или ReactNative
|
|
26
30
|
*/
|
|
27
31
|
var ClientStorageComponent = /** @class */ (function () {
|
|
28
|
-
function ClientStorageComponent(components) {
|
|
32
|
+
function ClientStorageComponent(components, config) {
|
|
29
33
|
this.localStorageAvailable = !process.env.IS_SSR;
|
|
30
34
|
this.sessionStorageAvailable = !process.env.IS_SSR;
|
|
31
|
-
this.cookieAvailable = !process.env.IS_SSR;
|
|
32
35
|
this.STORAGE_SESSION = 'session';
|
|
33
36
|
this.STORAGE_LOCAL = 'local';
|
|
34
37
|
this.STORAGE_COOKIE = 'cookie';
|
|
@@ -52,6 +55,7 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
52
55
|
this.sessionStorageAvailable = false;
|
|
53
56
|
}
|
|
54
57
|
}
|
|
58
|
+
this._ssrCookie = config === null || config === void 0 ? void 0 : config.ssrCookie;
|
|
55
59
|
}
|
|
56
60
|
/**
|
|
57
61
|
* @param {string} name
|
|
@@ -63,14 +67,11 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
63
67
|
if (this.localStorageAvailable && storageName === this.STORAGE_LOCAL) {
|
|
64
68
|
return window.localStorage.getItem(name);
|
|
65
69
|
}
|
|
66
|
-
|
|
67
|
-
storageName === this.STORAGE_SESSION) {
|
|
70
|
+
if (this.sessionStorageAvailable
|
|
71
|
+
&& storageName === this.STORAGE_SESSION) {
|
|
68
72
|
return window.sessionStorage.getItem(name);
|
|
69
73
|
}
|
|
70
|
-
|
|
71
|
-
return cookie.get(name);
|
|
72
|
-
}
|
|
73
|
-
return null;
|
|
74
|
+
return process.env.IS_SSR ? this._ssrCookie.get(name) : cookie.get(name);
|
|
74
75
|
};
|
|
75
76
|
/**
|
|
76
77
|
* @param {string} name
|
|
@@ -84,15 +85,19 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
84
85
|
if (this.localStorageAvailable && storageName === this.STORAGE_LOCAL) {
|
|
85
86
|
window.localStorage.setItem(name, value);
|
|
86
87
|
}
|
|
87
|
-
else if (this.sessionStorageAvailable
|
|
88
|
-
storageName === this.STORAGE_SESSION) {
|
|
88
|
+
else if (this.sessionStorageAvailable
|
|
89
|
+
&& storageName === this.STORAGE_SESSION) {
|
|
89
90
|
window.sessionStorage.setItem(name, value);
|
|
90
91
|
}
|
|
91
|
-
else
|
|
92
|
-
|
|
92
|
+
else {
|
|
93
|
+
var options = {
|
|
93
94
|
expires: expires,
|
|
94
95
|
domain: this._getDomain()
|
|
95
|
-
}
|
|
96
|
+
};
|
|
97
|
+
if (expires && process.env.IS_SSR) {
|
|
98
|
+
options.expires = moment_1["default"]().add(options.expires).utc().toDate();
|
|
99
|
+
}
|
|
100
|
+
process.env.IS_SSR ? this._ssrCookie.set(name, value, options) : cookie.set(name, value, options);
|
|
96
101
|
}
|
|
97
102
|
};
|
|
98
103
|
/**
|
|
@@ -105,24 +110,25 @@ var ClientStorageComponent = /** @class */ (function () {
|
|
|
105
110
|
if (this.localStorageAvailable && storageName === this.STORAGE_LOCAL) {
|
|
106
111
|
window.localStorage.removeItem(name);
|
|
107
112
|
}
|
|
108
|
-
else if (this.sessionStorageAvailable
|
|
109
|
-
storageName === this.STORAGE_SESSION) {
|
|
113
|
+
else if (this.sessionStorageAvailable
|
|
114
|
+
&& storageName === this.STORAGE_SESSION) {
|
|
110
115
|
window.sessionStorage.removeItem(name);
|
|
111
116
|
}
|
|
112
|
-
else
|
|
113
|
-
|
|
117
|
+
else {
|
|
118
|
+
var options = {
|
|
114
119
|
domain: this._getDomain()
|
|
115
|
-
}
|
|
120
|
+
};
|
|
121
|
+
process.env.IS_SSR ? this._ssrCookie.remove(name, options) : cookie.remove(name, options);
|
|
116
122
|
}
|
|
117
123
|
};
|
|
118
124
|
ClientStorageComponent.prototype._getDomain = function () {
|
|
119
125
|
var host = (typeof location !== 'undefined' && location.hostname) || '';
|
|
120
|
-
return ((!/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(host)
|
|
121
|
-
host
|
|
126
|
+
return ((!/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(host)
|
|
127
|
+
&& host
|
|
122
128
|
.split('.')
|
|
123
129
|
.slice(-2)
|
|
124
|
-
.join('.'))
|
|
125
|
-
host);
|
|
130
|
+
.join('.'))
|
|
131
|
+
|| host);
|
|
126
132
|
};
|
|
127
133
|
return ClientStorageComponent;
|
|
128
134
|
}());
|
|
@@ -52,6 +52,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
52
52
|
exports.__esModule = true;
|
|
53
53
|
var trimStart_1 = __importDefault(require("lodash-es/trimStart"));
|
|
54
54
|
var trimEnd_1 = __importDefault(require("lodash-es/trimEnd"));
|
|
55
|
+
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
56
|
+
var set_cookie_parser_1 = __importDefault(require("set-cookie-parser"));
|
|
55
57
|
var axios_1 = __importDefault(require("axios"));
|
|
56
58
|
var notifications_1 = require("../actions/notifications");
|
|
57
59
|
/**
|
|
@@ -65,13 +67,12 @@ var HttpComponent = /** @class */ (function () {
|
|
|
65
67
|
this._components = components;
|
|
66
68
|
this.apiUrl = config.apiUrl
|
|
67
69
|
//|| process.env.APP_BACKEND_URL
|
|
68
|
-
|| (
|
|
70
|
+
|| (!process.env.IS_SSR ? window.location.protocol + '//' + window.location.host : '');
|
|
69
71
|
this.accessTokenKey = config.accessTokenKey || 'accessToken';
|
|
70
72
|
this._lazyRequests = {};
|
|
71
73
|
this._axios = null;
|
|
72
74
|
this._csrfToken = null;
|
|
73
75
|
this._accessToken = false;
|
|
74
|
-
this._promises = [];
|
|
75
76
|
}
|
|
76
77
|
HttpComponent.prototype.getAxiosConfig = function () {
|
|
77
78
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -191,7 +192,7 @@ var HttpComponent = /** @class */ (function () {
|
|
|
191
192
|
});
|
|
192
193
|
};
|
|
193
194
|
HttpComponent.prototype.getUrl = function (method) {
|
|
194
|
-
if (method === null &&
|
|
195
|
+
if (method === null && !process.env.IS_SSR) {
|
|
195
196
|
method = window.location.pathname;
|
|
196
197
|
}
|
|
197
198
|
if (method.indexOf('://') === -1) {
|
|
@@ -236,7 +237,21 @@ var HttpComponent = /** @class */ (function () {
|
|
|
236
237
|
};
|
|
237
238
|
HttpComponent.prototype._send = function (method, config, options) {
|
|
238
239
|
var _this = this;
|
|
240
|
+
var _a;
|
|
239
241
|
var axiosConfig = __assign(__assign({}, config), { url: this.getUrl(method) });
|
|
242
|
+
// Manual send cookies for preload data in ssr
|
|
243
|
+
if (process.env.IS_SSR && axiosConfig.url.indexOf(this.apiUrl) !== -1) {
|
|
244
|
+
var clientStorage = this._components.clientStorage;
|
|
245
|
+
axiosConfig.headers = __assign(__assign({}, axiosConfig.headers), { Cookie: Object
|
|
246
|
+
.entries(clientStorage.get(null, clientStorage.STORAGE_COOKIE) || {})
|
|
247
|
+
.map(function (_a) {
|
|
248
|
+
var key = _a[0], value = _a[1];
|
|
249
|
+
return key + "=" + value;
|
|
250
|
+
})
|
|
251
|
+
.concat([(_a = axiosConfig.headers) === null || _a === void 0 ? void 0 : _a.Cookie])
|
|
252
|
+
.filter(Boolean)
|
|
253
|
+
.join(';') });
|
|
254
|
+
}
|
|
240
255
|
if (options.cancelToken) {
|
|
241
256
|
axiosConfig.cancelToken = options.cancelToken;
|
|
242
257
|
}
|
|
@@ -258,25 +273,27 @@ var HttpComponent = /** @class */ (function () {
|
|
|
258
273
|
};
|
|
259
274
|
HttpComponent.prototype._sendAxios = function (config, options) {
|
|
260
275
|
var _this = this;
|
|
261
|
-
|
|
276
|
+
return this.getAxiosInstance()
|
|
262
277
|
.then(function (instance) { return instance(config); })
|
|
263
278
|
.then(function (response) { return _this.afterRequest(response, config, options).then(function (newResponse) { return newResponse || response; }); })["catch"](function (error) {
|
|
264
279
|
console.error('Error, request/response: ', config, String(error)); // eslint-disable-line no-console
|
|
265
280
|
throw error;
|
|
266
281
|
});
|
|
267
|
-
// Store promises for SSR
|
|
268
|
-
if (process.env.IS_SSR) {
|
|
269
|
-
this._promises.push(promise);
|
|
270
|
-
}
|
|
271
|
-
return promise;
|
|
272
282
|
};
|
|
273
283
|
HttpComponent.prototype.afterRequest = function (response, config, options) {
|
|
274
284
|
return __awaiter(this, void 0, void 0, function () {
|
|
275
|
-
var store, match, providerName;
|
|
276
|
-
return __generator(this, function (
|
|
277
|
-
switch (
|
|
285
|
+
var _a, store, clientStorage, cookie, match, providerName;
|
|
286
|
+
return __generator(this, function (_b) {
|
|
287
|
+
switch (_b.label) {
|
|
278
288
|
case 0:
|
|
279
|
-
|
|
289
|
+
_a = this._components, store = _a.store, clientStorage = _a.clientStorage;
|
|
290
|
+
cookie = response.headers['set-cookie'];
|
|
291
|
+
if (process.env.IS_SSR && config.url.indexOf(this.apiUrl) !== -1 && !isEmpty_1["default"](cookie)) {
|
|
292
|
+
set_cookie_parser_1["default"].parse(cookie).forEach(function (_a) {
|
|
293
|
+
var name = _a.name, value = _a.value, expires = _a.expires;
|
|
294
|
+
return (clientStorage.set(name, value, clientStorage.STORAGE_COOKIE, expires));
|
|
295
|
+
});
|
|
296
|
+
}
|
|
280
297
|
// Flash
|
|
281
298
|
if (response.data.flashes) {
|
|
282
299
|
store.dispatch(notifications_1.setFlashes(response.data.flashes));
|
|
@@ -301,14 +318,14 @@ var HttpComponent = /** @class */ (function () {
|
|
|
301
318
|
if (!options.onTwoFactor) return [3 /*break*/, 2];
|
|
302
319
|
return [4 /*yield*/, options.onTwoFactor(providerName)];
|
|
303
320
|
case 1:
|
|
304
|
-
|
|
321
|
+
_b.sent();
|
|
305
322
|
return [3 /*break*/, 4];
|
|
306
323
|
case 2:
|
|
307
324
|
// Require verification code
|
|
308
325
|
return [4 /*yield*/, this._onTwoFactor(providerName)];
|
|
309
326
|
case 3:
|
|
310
327
|
// Require verification code
|
|
311
|
-
|
|
328
|
+
_b.sent();
|
|
312
329
|
// Retry request
|
|
313
330
|
return [2 /*return*/, this._sendAxios(config, options)];
|
|
314
331
|
case 4: return [2 /*return*/, response];
|
|
@@ -73,11 +73,11 @@ var LocaleComponent = /** @class */ (function () {
|
|
|
73
73
|
LocaleComponent.prototype.moment = function (date, format) {
|
|
74
74
|
if (date === void 0) { date = undefined; }
|
|
75
75
|
if (format === void 0) { format = undefined; }
|
|
76
|
-
if (this.backendTimeZone
|
|
77
|
-
date
|
|
78
|
-
date.length === 19
|
|
79
|
-
moment_1["default"](date, 'YYYY-MM-DD HH:mm:ss').isValid()) {
|
|
80
|
-
date
|
|
76
|
+
if (this.backendTimeZone
|
|
77
|
+
&& date
|
|
78
|
+
&& date.length === 19
|
|
79
|
+
&& moment_1["default"](date, 'YYYY-MM-DD HH:mm:ss').isValid()) {
|
|
80
|
+
date += this.backendTimeZone;
|
|
81
81
|
}
|
|
82
82
|
return moment_1["default"](date, format).locale(this.language);
|
|
83
83
|
};
|
|
@@ -126,7 +126,7 @@ var LocaleComponent = /** @class */ (function () {
|
|
|
126
126
|
if (a.index < b.index) {
|
|
127
127
|
return -1;
|
|
128
128
|
}
|
|
129
|
-
|
|
129
|
+
if (a.index > b.index) {
|
|
130
130
|
return 1;
|
|
131
131
|
}
|
|
132
132
|
return 0;
|
|
@@ -136,9 +136,9 @@ var LocaleComponent = /** @class */ (function () {
|
|
|
136
136
|
var textParts = message.split('!!component!!');
|
|
137
137
|
for (var i = 0, j = 0; i < textParts.length; i++) {
|
|
138
138
|
var isComponentAdded = false;
|
|
139
|
-
if (j === 0
|
|
140
|
-
j < indexedComponents.length
|
|
141
|
-
indexedComponents[j].index === 0) {
|
|
139
|
+
if (j === 0
|
|
140
|
+
&& j < indexedComponents.length
|
|
141
|
+
&& indexedComponents[j].index === 0) {
|
|
142
142
|
result.push(React.createElement("span", { key: "element-" + j }, indexedComponents[j].component));
|
|
143
143
|
isComponentAdded = true;
|
|
144
144
|
j++;
|
|
@@ -15,7 +15,9 @@ var MetricsComponent = /** @class */ (function () {
|
|
|
15
15
|
this._enable = config.enable === undefined
|
|
16
16
|
? process.env.APP_ENV === 'prod'
|
|
17
17
|
: !!config.enable;
|
|
18
|
-
|
|
18
|
+
if (!process.env.IS_SSR) {
|
|
19
|
+
this._init();
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
MetricsComponent.prototype._init = function () {
|
|
21
23
|
var _this = this;
|
|
@@ -37,7 +37,7 @@ var StoreComponent = /** @class */ (function () {
|
|
|
37
37
|
this.dispatch = this.dispatch.bind(this);
|
|
38
38
|
this.subscribe = this.subscribe.bind(this);
|
|
39
39
|
if (!lazyInit) {
|
|
40
|
-
this.initStore();
|
|
40
|
+
this.initStore(config);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
StoreComponent.prototype.init = function (config) {
|
|
@@ -49,8 +49,10 @@ var StoreComponent = /** @class */ (function () {
|
|
|
49
49
|
var _this = this;
|
|
50
50
|
if (config === void 0) { config = {}; }
|
|
51
51
|
var initialState = __assign(__assign({}, (process.env.IS_WEB
|
|
52
|
-
// @ts-ignore
|
|
53
52
|
? merge_1["default"].apply(void 0, (window.APP_REDUX_PRELOAD_STATES || [{}])) : {})), config.initialState);
|
|
53
|
+
if (window === null || window === void 0 ? void 0 : window.APP_REDUX_PRELOAD_STATES) {
|
|
54
|
+
delete window.APP_REDUX_PRELOAD_STATES;
|
|
55
|
+
}
|
|
54
56
|
if (process.env.PLATFORM !== 'mobile') {
|
|
55
57
|
var createHistory = process.env.IS_SSR || typeof location === 'undefined'
|
|
56
58
|
? history_1.createMemoryHistory
|
|
@@ -59,7 +61,7 @@ var StoreComponent = /** @class */ (function () {
|
|
|
59
61
|
: history_1.createBrowserHistory;
|
|
60
62
|
this.history = createHistory(__assign(__assign({}, get_1["default"](initialState, 'config.store.history', {})), config.history));
|
|
61
63
|
// Add '?' for fix connected-react-router
|
|
62
|
-
if (process.env.IS_SSR && !this.history.location.search
|
|
64
|
+
if (process.env.IS_SSR && !this.history.location.search) {
|
|
63
65
|
this.history.location.search = '?';
|
|
64
66
|
}
|
|
65
67
|
this._routerReducer = connected_react_router_1.connectRouter(this.history);
|
|
@@ -70,10 +72,7 @@ var StoreComponent = /** @class */ (function () {
|
|
|
70
72
|
} : {}), initialState, redux_1.compose(redux_1.applyMiddleware(function (_a) {
|
|
71
73
|
var getState = _a.getState;
|
|
72
74
|
return function (next) { return function (action) { return _this._prepare(action, next, getState); }; };
|
|
73
|
-
}), redux_1.applyMiddleware(connected_react_router_1.routerMiddleware(this.history)),
|
|
74
|
-
// @ts-ignore
|
|
75
|
-
!process.env.IS_SSR && window.__REDUX_DEVTOOLS_EXTENSION__ && process.env.PLATFORM !== 'mobile'
|
|
76
|
-
// @ts-ignore
|
|
75
|
+
}), redux_1.applyMiddleware(connected_react_router_1.routerMiddleware(this.history)), !process.env.IS_SSR && window.__REDUX_DEVTOOLS_EXTENSION__ && process.env.PLATFORM !== 'mobile'
|
|
77
76
|
? window.__REDUX_DEVTOOLS_EXTENSION__()
|
|
78
77
|
: function (f) { return f; }));
|
|
79
78
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Компонент, обеспечивающий постоянное web-socket соединение с сервером. Поддерживает подписку на каналы, обработку
|
|
4
4
|
* ответов и токен авторизации
|
|
5
5
|
*/
|
|
6
|
-
import { IComponents } from '../
|
|
6
|
+
import { IComponents } from '../providers/ComponentsProvider';
|
|
7
7
|
export default class WebSocketComponent {
|
|
8
8
|
wsUrl: string;
|
|
9
9
|
streams: string[] | [string, string | number[]][];
|
package/hoc/components.d.ts
CHANGED
package/hoc/components.js
CHANGED
|
@@ -36,7 +36,7 @@ var exportComponents = function (components, names) {
|
|
|
36
36
|
var props = {};
|
|
37
37
|
names.forEach(function (items) {
|
|
38
38
|
[].concat(items).forEach(function (name) {
|
|
39
|
-
props[name] =
|
|
39
|
+
props[name] = components[name];
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
return props;
|
package/hoc/file.d.ts
CHANGED
package/hooks/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ import useDataProvider from './useDataProvider';
|
|
|
4
4
|
import useDataSelect from './useDataSelect';
|
|
5
5
|
import useSelector from './useSelector';
|
|
6
6
|
import useForm from './useForm';
|
|
7
|
-
|
|
7
|
+
import useSsr from './useSsr';
|
|
8
|
+
export { useBem, useComponents, useDataProvider, useDataSelect, useSelector, useForm, useSsr, };
|
package/hooks/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.useForm = exports.useSelector = exports.useDataSelect = exports.useDataProvider = exports.useComponents = exports.useBem = void 0;
|
|
6
|
+
exports.useSsr = exports.useForm = exports.useSelector = exports.useDataSelect = exports.useDataProvider = exports.useComponents = exports.useBem = void 0;
|
|
7
7
|
var useBem_1 = __importDefault(require("./useBem"));
|
|
8
8
|
exports.useBem = useBem_1["default"];
|
|
9
9
|
var useComponents_1 = __importDefault(require("./useComponents"));
|
|
@@ -16,3 +16,5 @@ var useSelector_1 = __importDefault(require("./useSelector"));
|
|
|
16
16
|
exports.useSelector = useSelector_1["default"];
|
|
17
17
|
var useForm_1 = __importDefault(require("./useForm"));
|
|
18
18
|
exports.useForm = useForm_1["default"];
|
|
19
|
+
var useSsr_1 = __importDefault(require("./useSsr"));
|
|
20
|
+
exports.useSsr = useSsr_1["default"];
|
|
@@ -10,6 +10,11 @@ interface IStyleObj {
|
|
|
10
10
|
*/
|
|
11
11
|
declare type Position = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom' | string;
|
|
12
12
|
export interface IAbsolutePositioningInputProps {
|
|
13
|
+
/**
|
|
14
|
+
* Включает "умное" позиционирование - если компонент не может быть помещен в промежуток между целевым компонентом
|
|
15
|
+
* и краем viewport, тогда он будет показан в противоположном направлении от заданного в свойстве position.
|
|
16
|
+
*/
|
|
17
|
+
autoPositioning?: boolean;
|
|
13
18
|
/**
|
|
14
19
|
* Дочерние элементы
|
|
15
20
|
*/
|
|
@@ -12,11 +12,11 @@ function useAbsolutePositioning(props) {
|
|
|
12
12
|
}), style = _d[0], setStyle = _d[1];
|
|
13
13
|
var timerRef = react_1.useRef(null);
|
|
14
14
|
var calculateAbsolutePosition = react_1.useCallback(function (newPosition, childRef, componentSize) {
|
|
15
|
-
if (newPosition === void 0) { newPosition = 'pos'; }
|
|
16
15
|
var newStyle = { left: null, right: null, top: null };
|
|
17
16
|
var _a = childRef.getBoundingClientRect(), top = _a.top, right = _a.right, left = _a.left, width = _a.width, height = _a.height;
|
|
18
17
|
var parentDimensions = { top: top, right: right, left: left, width: width, height: height };
|
|
19
18
|
parentDimensions.top += window.scrollY;
|
|
19
|
+
var useAutoPositioning = props.autoPositioning;
|
|
20
20
|
// eslint-disable-next-line default-case
|
|
21
21
|
switch (newPosition) {
|
|
22
22
|
case 'top':
|
|
@@ -24,7 +24,7 @@ function useAbsolutePositioning(props) {
|
|
|
24
24
|
case 'topRight':
|
|
25
25
|
// Проверка - выходит ли tooltip за верхний край страницы?
|
|
26
26
|
// Если да - меняем позицию на bottom
|
|
27
|
-
if ((parentDimensions.top - window.scrollY) <= Math.round(componentSize.height + props.gap)) {
|
|
27
|
+
if (useAutoPositioning && ((parentDimensions.top - window.scrollY) <= Math.round(componentSize.height + props.gap))) {
|
|
28
28
|
newStyle.top = parentDimensions.top + parentDimensions.height;
|
|
29
29
|
newPosition = newPosition.replace('top', 'bottom');
|
|
30
30
|
}
|
|
@@ -35,9 +35,9 @@ function useAbsolutePositioning(props) {
|
|
|
35
35
|
case 'bottom':
|
|
36
36
|
case 'bottomLeft':
|
|
37
37
|
case 'bottomRight':
|
|
38
|
-
|
|
38
|
+
// Проверка - выходит ли tooltip за нижний край страницы?
|
|
39
39
|
// Если да - меняем позицию на top
|
|
40
|
-
if ((window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY))
|
|
40
|
+
if (useAutoPositioning && ((window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY)))
|
|
41
41
|
<= Math.round(componentSize.height + props.gap)) {
|
|
42
42
|
newStyle.top = parentDimensions.top - componentSize.height;
|
|
43
43
|
newPosition = newPosition.replace('bottom', 'top');
|
|
@@ -51,7 +51,7 @@ function useAbsolutePositioning(props) {
|
|
|
51
51
|
case 'leftBottom':
|
|
52
52
|
// Проверка - выходит ли tooltip за левый край страницы?
|
|
53
53
|
// Если да - меняем позицию на right
|
|
54
|
-
if (parentDimensions.left <= Math.round(componentSize.width + props.gap)) {
|
|
54
|
+
if (useAutoPositioning && (parentDimensions.left <= Math.round(componentSize.width + props.gap))) {
|
|
55
55
|
newStyle.left = parentDimensions.right;
|
|
56
56
|
newPosition = newPosition.replace('left', 'right');
|
|
57
57
|
}
|
|
@@ -64,7 +64,7 @@ function useAbsolutePositioning(props) {
|
|
|
64
64
|
case 'rightBottom':
|
|
65
65
|
// Проверка - выходит ли tooltip за правый край страницы?
|
|
66
66
|
// Если да - меняем позицию на left
|
|
67
|
-
if (document.body.clientWidth - parentDimensions.right <= Math.round(componentSize.width + props.gap)) {
|
|
67
|
+
if (useAutoPositioning && (document.body.clientWidth - parentDimensions.right <= Math.round(componentSize.width + props.gap))) {
|
|
68
68
|
newStyle.left = parentDimensions.left - componentSize.width;
|
|
69
69
|
newPosition = newPosition.replace('right', 'left');
|
|
70
70
|
}
|
|
@@ -1,29 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import ClientStorageComponent from '../components/ClientStorageComponent';
|
|
3
|
+
import HtmlComponent from '../components/HtmlComponent';
|
|
4
|
+
import StoreComponent from '../components/StoreComponent';
|
|
5
|
+
import UiComponent from '../components/UiComponent';
|
|
6
|
+
import MetaComponent from '../components/MetaComponent';
|
|
7
|
+
import { IComponents } from '../providers/ComponentsProvider';
|
|
4
8
|
import { IRouteItem } from '../ui/nav/Router/Router';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
media: Record<string, any>;
|
|
8
|
-
setMedia: any;
|
|
9
|
-
isPhone: () => boolean;
|
|
10
|
-
isTablet: () => boolean;
|
|
11
|
-
isDesktop: () => boolean;
|
|
12
|
-
getDeviceType: () => string;
|
|
13
|
-
}
|
|
14
|
-
export declare const ScreenContext: React.Context<IScreen>;
|
|
15
|
-
export interface IScreenProviderProps extends PropsWithChildren<any> {
|
|
16
|
-
media?: Record<string, any>;
|
|
17
|
-
skipTimeout?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export declare const SCREEN_PHONE = "phone";
|
|
20
|
-
export declare const SCREEN_TABLET = "tablet";
|
|
21
|
-
export declare const SCREEN_DESKTOP = "desktop";
|
|
22
|
-
declare global {
|
|
23
|
-
interface Window {
|
|
24
|
-
SteroidsComponents: IComponents;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
9
|
+
import MetricsComponent from '../components/MetricsComponent';
|
|
10
|
+
import { IScreenProviderProps } from '../providers/ScreenProvider';
|
|
27
11
|
/**
|
|
28
12
|
* Application HOC
|
|
29
13
|
* Обертка над корневым компонентом приложения, используется только в `Application.tsx`. Добавляет через React Context
|
|
@@ -48,5 +32,24 @@ export interface IApplicationHookResult {
|
|
|
48
32
|
renderApplication: (children?: any) => JSX.Element;
|
|
49
33
|
components: IComponents;
|
|
50
34
|
}
|
|
51
|
-
export declare const
|
|
35
|
+
export declare const defaultComponents: {
|
|
36
|
+
clientStorage: {
|
|
37
|
+
className: typeof ClientStorageComponent;
|
|
38
|
+
};
|
|
39
|
+
html: {
|
|
40
|
+
className: typeof HtmlComponent;
|
|
41
|
+
};
|
|
42
|
+
meta: {
|
|
43
|
+
className: typeof MetaComponent;
|
|
44
|
+
};
|
|
45
|
+
store: {
|
|
46
|
+
className: typeof StoreComponent;
|
|
47
|
+
};
|
|
48
|
+
ui: {
|
|
49
|
+
className: typeof UiComponent;
|
|
50
|
+
};
|
|
51
|
+
metrics: {
|
|
52
|
+
className: typeof MetricsComponent;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
52
55
|
export default function useApplication(config?: IApplicationHookConfig): IApplicationHookResult;
|