asab_webui_shell 25.2.8 → 26.1.2
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/actions.js +1 -2
- package/dist/components/branding/BrandImage.js +2 -2
- package/dist/config/ConfigService.js +10 -5
- package/dist/containers/Alerts/index.js +14 -9
- package/dist/containers/Application.js +45 -50
- package/dist/containers/Header/ApplicationScreenTitle/ApplicationScreenTitle.js +3 -3
- package/dist/containers/Header/ApplicationScreenTitle/index.js +3 -3
- package/dist/containers/Header/Help/HelpButton.js +5 -3
- package/dist/containers/Header/index.js +3 -3
- package/dist/containers/Header/reducer.js +0 -5
- package/dist/containers/Navigation/index.js +7 -4
- package/dist/containers/Router/ApplicationRouter.js +6 -4
- package/dist/containers/Router/index.js +7 -4
- package/dist/containers/Sidebar/NavbarBrand.js +4 -4
- package/dist/containers/Sidebar/SidebarBottomItem.js +8 -3
- package/dist/containers/Sidebar/SidebarItem.js +5 -5
- package/dist/containers/Sidebar/index.js +7 -5
- package/dist/containers/Toast/ToastContainer.js +2 -2
- package/dist/containers/Toast/ToastContainer.jsx +2 -2
- package/dist/modules/about/AboutScreen.js +6 -6
- package/dist/modules/auth/components/SessionExpirationAlert.js +1 -2
- package/dist/modules/auth/header.js +7 -11
- package/dist/modules/auth/index.js +37 -31
- package/dist/modules/auth/screens/AccessControlScreen.js +12 -7
- package/dist/modules/auth/screens/InvitationScreen.js +8 -3
- package/dist/modules/i18n/dropdown.js +4 -2
- package/dist/modules/tenant/TenantDropdown.js +14 -17
- package/dist/modules/tenant/service.js +6 -4
- package/dist/screens/InvalidRouteScreen.js +6 -2
- package/dist/screens/SuspenseScreen.js +1 -2
- package/dist/screens/UnauthorizedAccessScreen.js +7 -4
- package/dist/services/AttentionRequiredService.js +3 -2
- package/dist/services/HeaderService.js +4 -2
- package/dist/services/ReduxService.js +3 -8
- package/dist/services/TitleService.js +3 -3
- package/dist/theme/ThemeButton.js +8 -14
- package/dist/theme/ThemeReducer.js +2 -2
- package/dist/theme/ThemeService.js +4 -3
- package/package.json +5 -7
- package/dist/containers/Header/Preview/PreviewFlag.js +0 -35
- package/dist/containers/Header/Preview/PreviewService.js +0 -23
package/dist/actions.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SET_SUBTITLE = exports.SET_ROUTES = exports.SET_NAVIGATION_ITEMS = exports.SET_HELP_PATH = exports.SET_HEADER_NAVIGATION_ITEMS = exports.SET_FULLSCREEN_MODE = exports.
|
|
6
|
+
exports.SET_SUBTITLE = exports.SET_ROUTES = exports.SET_NAVIGATION_ITEMS = exports.SET_HELP_PATH = exports.SET_HEADER_NAVIGATION_ITEMS = exports.SET_FULLSCREEN_MODE = exports.SET_ATTENTION_REQUIRED_BEACON = exports.SET_ADVANCED_MODE = exports.DEL_TOAST = exports.DEL_ALERT = exports.COLLAPSE_SIDEBAR = exports.CHANGE_CONFIG = exports.ADD_TOAST = exports.ADD_ALERT = exports.ACK_ALERT = void 0;
|
|
7
7
|
var ADD_ALERT = exports.ADD_ALERT = "asab/addAlert";
|
|
8
8
|
var ACK_ALERT = exports.ACK_ALERT = "asab/ackAlert";
|
|
9
9
|
var DEL_ALERT = exports.DEL_ALERT = "asab/delAlert";
|
|
@@ -11,7 +11,6 @@ var ADD_TOAST = exports.ADD_TOAST = "asab/addToast";
|
|
|
11
11
|
var DEL_TOAST = exports.DEL_TOAST = "asab/delToast";
|
|
12
12
|
var SET_HELP_PATH = exports.SET_HELP_PATH = "asab/setHelpContent";
|
|
13
13
|
var SET_SUBTITLE = exports.SET_SUBTITLE = "asab/setSubtitle";
|
|
14
|
-
var SET_FLAG = exports.SET_FLAG = "asab/setFlag";
|
|
15
14
|
var SET_ADVANCED_MODE = exports.SET_ADVANCED_MODE = "asab/setAdvancedMode";
|
|
16
15
|
var SET_FULLSCREEN_MODE = exports.SET_FULLSCREEN_MODE = "asab/setFullscreenMode";
|
|
17
16
|
var CHANGE_CONFIG = exports.CHANGE_CONFIG = "asab/changeConfig";
|
|
@@ -29,11 +29,11 @@ Then, if selected configuration's brand image is not complete (e.g. minimized va
|
|
|
29
29
|
```javascript
|
|
30
30
|
import { useState, useEffect } from 'react';
|
|
31
31
|
import { getBrandImage } from 'asab_webui_shell';
|
|
32
|
-
import {
|
|
32
|
+
import { useAppSelector } from 'asab_webui_components';
|
|
33
33
|
|
|
34
34
|
const YourCode = (props) => {
|
|
35
35
|
const [ brandImage, setBrandImage ] = useState({});
|
|
36
|
-
const theme =
|
|
36
|
+
const theme = useAppSelector(state => state.theme);
|
|
37
37
|
|
|
38
38
|
useEffect(() => {
|
|
39
39
|
setBrandImage(getBrandImage(props, theme));
|
|
@@ -83,8 +83,8 @@ class ConfigService extends _asab_webui_components.Service {
|
|
|
83
83
|
// Dispatch customs to config store
|
|
84
84
|
if (Object.keys(dynamicConfig).length > 0) {
|
|
85
85
|
this.Config._dynamic_config = dynamicConfig;
|
|
86
|
-
if (this.App.
|
|
87
|
-
this.Config.dispatch(this.App.
|
|
86
|
+
if (this.App.AppStore) {
|
|
87
|
+
this.Config.dispatch(this.App.AppStore);
|
|
88
88
|
} else {
|
|
89
89
|
console.warn('Dynamic configuration has not been dispatched to application store');
|
|
90
90
|
}
|
|
@@ -104,7 +104,11 @@ class ConfigService extends _asab_webui_components.Service {
|
|
|
104
104
|
this.Config._defaults[key] = defaults[key];
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
|
|
107
|
+
if (this.App.AppStore) {
|
|
108
|
+
this.Config.dispatch(this.App.AppStore);
|
|
109
|
+
} else {
|
|
110
|
+
console.warn('Default configuration has not been dispatched to application store');
|
|
111
|
+
}
|
|
108
112
|
}
|
|
109
113
|
}
|
|
110
114
|
exports.default = ConfigService;
|
|
@@ -127,7 +131,7 @@ class Config {
|
|
|
127
131
|
|
|
128
132
|
// Then check the local config
|
|
129
133
|
if (this._local_config[key] != undefined) {
|
|
130
|
-
this._local_config[key];
|
|
134
|
+
return this._local_config[key];
|
|
131
135
|
}
|
|
132
136
|
;
|
|
133
137
|
|
|
@@ -139,8 +143,9 @@ class Config {
|
|
|
139
143
|
return undefined;
|
|
140
144
|
}
|
|
141
145
|
dispatch(store) {
|
|
146
|
+
var _store$dispatch;
|
|
142
147
|
var config = Object.assign({}, this._defaults, this._local_config, this._dynamic_config);
|
|
143
|
-
store.dispatch({
|
|
148
|
+
store === null || store === void 0 || (_store$dispatch = store.dispatch) === null || _store$dispatch === void 0 || _store$dispatch.call(store, {
|
|
144
149
|
type: _actions.CHANGE_CONFIG,
|
|
145
150
|
config: config
|
|
146
151
|
});
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = AlertsComponent;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var
|
|
8
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
9
9
|
var _reactstrap = require("reactstrap");
|
|
10
10
|
var _actions = require("../../actions");
|
|
11
11
|
var _reactI18next = require("react-i18next");
|
|
@@ -13,8 +13,8 @@ require("./alerts.scss");
|
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
14
14
|
function AlertsComponent(props) {
|
|
15
15
|
var [seconds, setSeconds] = (0, _react.useState)(0);
|
|
16
|
-
var store = props.app.
|
|
17
|
-
var alerts = (0,
|
|
16
|
+
var store = props.app.AppStore;
|
|
17
|
+
var alerts = (0, _asab_webui_components.useAppSelector)(state => state.alerts.alerts);
|
|
18
18
|
var {
|
|
19
19
|
t
|
|
20
20
|
} = (0, _reactI18next.useTranslation)();
|
|
@@ -30,12 +30,14 @@ function AlertsComponent(props) {
|
|
|
30
30
|
var alert = alerts[i];
|
|
31
31
|
if (alert.expire < now) {
|
|
32
32
|
if (alert.acked) {
|
|
33
|
-
|
|
33
|
+
var _store$dispatch;
|
|
34
|
+
store === null || store === void 0 || (_store$dispatch = store.dispatch) === null || _store$dispatch === void 0 || _store$dispatch.call(store, {
|
|
34
35
|
type: _actions.DEL_ALERT,
|
|
35
36
|
key: alert.key
|
|
36
37
|
});
|
|
37
38
|
} else {
|
|
38
|
-
|
|
39
|
+
var _store$dispatch2;
|
|
40
|
+
store === null || store === void 0 || (_store$dispatch2 = store.dispatch) === null || _store$dispatch2 === void 0 || _store$dispatch2.call(store, {
|
|
39
41
|
type: _actions.ACK_ALERT,
|
|
40
42
|
key: alert.key
|
|
41
43
|
});
|
|
@@ -57,10 +59,13 @@ function AlertsComponent(props) {
|
|
|
57
59
|
className: "shadow alerts-style d-print-none",
|
|
58
60
|
fade: true,
|
|
59
61
|
isOpen: !alert.acked,
|
|
60
|
-
toggle: () =>
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
toggle: () => {
|
|
63
|
+
var _store$dispatch3;
|
|
64
|
+
return store === null || store === void 0 || (_store$dispatch3 = store.dispatch) === null || _store$dispatch3 === void 0 ? void 0 : _store$dispatch3.call(store, {
|
|
65
|
+
type: _actions.ACK_ALERT,
|
|
66
|
+
key: alert.key
|
|
67
|
+
});
|
|
68
|
+
}
|
|
64
69
|
}, alert.shouldBeTranslated ? t(alert.message) : alert.message);
|
|
65
70
|
} else {
|
|
66
71
|
return alert.component(alert, store);
|
|
@@ -8,8 +8,6 @@ exports.default = void 0;
|
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _reactRedux = require("react-redux");
|
|
12
|
-
var _redux = require("redux");
|
|
13
11
|
var _axios = _interopRequireDefault(require("axios"));
|
|
14
12
|
var _asab_webui_components = require("asab_webui_components");
|
|
15
13
|
var _Header = _interopRequireDefault(require("./Header"));
|
|
@@ -36,7 +34,6 @@ var _ThemeService = _interopRequireDefault(require("../theme/ThemeService"));
|
|
|
36
34
|
var _BrandingService = _interopRequireDefault(require("../services/BrandingService"));
|
|
37
35
|
var _TitleService = _interopRequireDefault(require("../services/TitleService"));
|
|
38
36
|
var _HelpService = _interopRequireDefault(require("./Header/Help/HelpService"));
|
|
39
|
-
var _PreviewService = _interopRequireDefault(require("./Header/Preview/PreviewService"));
|
|
40
37
|
var _AccessDeniedCard = _interopRequireDefault(require("../modules/tenant/access/AccessDeniedCard"));
|
|
41
38
|
var _ApplicationRouter = _interopRequireDefault(require("./Router/ApplicationRouter"));
|
|
42
39
|
var _SuspenseScreen = _interopRequireDefault(require("../screens/SuspenseScreen"));
|
|
@@ -84,11 +81,37 @@ class Application extends _react.Component {
|
|
|
84
81
|
|
|
85
82
|
constructor(props) {
|
|
86
83
|
super(props);
|
|
84
|
+
|
|
85
|
+
// Global AppStore variables
|
|
86
|
+
var appStore = {
|
|
87
|
+
state: null,
|
|
88
|
+
dispatch: null
|
|
89
|
+
}; // Create the store object (fields stays writable so the provider can update them)
|
|
90
|
+
Object.seal(appStore); // Lock the shape, so no adding/removing properties (but existing fields remain writable)
|
|
91
|
+
Object.defineProperty(this, 'AppStore', {
|
|
92
|
+
value: appStore,
|
|
93
|
+
writable: false,
|
|
94
|
+
// Can't reassign this.AppStore
|
|
95
|
+
configurable: false,
|
|
96
|
+
// Can't redefine/delete the property
|
|
97
|
+
enumerable: true // Makes it show up in Object.keys/console
|
|
98
|
+
}); // Define a read-only, non-configurable property on the instance
|
|
99
|
+
|
|
87
100
|
this.Modules = [];
|
|
88
101
|
this.Services = {};
|
|
89
102
|
this.ReduxService = new _ReduxService.default(this, "ReduxService");
|
|
90
103
|
this.ConfigService = new _ConfigService.default(this, "ConfigService");
|
|
91
104
|
this.Config = this.ConfigService.Config;
|
|
105
|
+
|
|
106
|
+
// Register reducers which are not part of any app service
|
|
107
|
+
this.ReduxService.addReducer("attentionrequired", _reducer8.default);
|
|
108
|
+
this.ReduxService.addReducer("alerts", _reducer.default);
|
|
109
|
+
this.ReduxService.addReducer("advmode", _reducer7.default);
|
|
110
|
+
this.ReduxService.addReducer("fullscreenmode", _reducer6.default);
|
|
111
|
+
this.ReduxService.addReducer("header", _reducer3.default);
|
|
112
|
+
this.ReduxService.addReducer("sidebar", _reducer2.default);
|
|
113
|
+
this.ReduxService.addReducer("navigation", _reducer4.default);
|
|
114
|
+
this.ReduxService.addReducer("router", _reducer5.default);
|
|
92
115
|
this.Router = new _Router.default(this);
|
|
93
116
|
this.Navigation = new _Navigation.default(this);
|
|
94
117
|
this.SplashscreenRequestors = new Set(); // If not empty, the splash screen will be rendered
|
|
@@ -100,15 +123,6 @@ class Application extends _react.Component {
|
|
|
100
123
|
this.BrandingService = new _BrandingService.default(this, "BrandingService");
|
|
101
124
|
this.TitleService = new _TitleService.default(this, "TitleService");
|
|
102
125
|
this.HelpService = new _HelpService.default(this, "HelpService");
|
|
103
|
-
this.PreviewService = new _PreviewService.default(this, "PreviewService");
|
|
104
|
-
this.ReduxService.addReducer("attentionrequired", _reducer8.default);
|
|
105
|
-
this.ReduxService.addReducer("alerts", _reducer.default);
|
|
106
|
-
this.ReduxService.addReducer("advmode", _reducer7.default);
|
|
107
|
-
this.ReduxService.addReducer("fullscreenmode", _reducer6.default);
|
|
108
|
-
this.ReduxService.addReducer("header", _reducer3.default);
|
|
109
|
-
this.ReduxService.addReducer("sidebar", _reducer2.default);
|
|
110
|
-
this.ReduxService.addReducer("navigation", _reducer4.default);
|
|
111
|
-
this.ReduxService.addReducer("router", _reducer5.default);
|
|
112
126
|
|
|
113
127
|
// The application can provide a list of keys that should be automatically parsed as BigInt, when received from the server in Axios call
|
|
114
128
|
// This is important to preserve 64bit numbers from the server such as IP addresses, timestamps etc.
|
|
@@ -119,10 +133,7 @@ class Application extends _react.Component {
|
|
|
119
133
|
// If more than zero, some networking activity is happening
|
|
120
134
|
splashscreenRequestors: 0
|
|
121
135
|
};
|
|
122
|
-
var composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || _redux.compose;
|
|
123
|
-
this.Store = (0, _redux.createStore)((0, _redux.combineReducers)(this.ReduxService.Reducers), composeEnhancers((0, _redux.applyMiddleware)()));
|
|
124
136
|
this.ConfigService.addDefaults(props.configdefaults);
|
|
125
|
-
this.Config.dispatch(this.Store);
|
|
126
137
|
this.addSplashScreenRequestor(this);
|
|
127
138
|
this.state.splashscreenRequestors = this.SplashscreenRequestors.size;
|
|
128
139
|
var that = this;
|
|
@@ -164,8 +175,6 @@ class Application extends _react.Component {
|
|
|
164
175
|
var _mod = new modloaded.default(that); // We expect 'export default class ...Module extends Module'
|
|
165
176
|
that.Modules.push(_mod);
|
|
166
177
|
}
|
|
167
|
-
that.Store.replaceReducer((0, _redux.combineReducers)(that.ReduxService.Reducers));
|
|
168
|
-
that.Config.dispatch(that.Store);
|
|
169
178
|
}
|
|
170
179
|
|
|
171
180
|
// Initialize statically imported modules
|
|
@@ -180,9 +189,6 @@ class Application extends _react.Component {
|
|
|
180
189
|
return _modules_init.apply(this, arguments);
|
|
181
190
|
}
|
|
182
191
|
modules_init().then(/*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
|
|
183
|
-
that.Store.replaceReducer((0, _redux.combineReducers)(that.ReduxService.Reducers));
|
|
184
|
-
that.Config.dispatch(that.Store);
|
|
185
|
-
|
|
186
192
|
// Initialize all services
|
|
187
193
|
for (var i in that.Services) {
|
|
188
194
|
var ret = that.Services[i].initialize();
|
|
@@ -190,7 +196,6 @@ class Application extends _react.Component {
|
|
|
190
196
|
// Transform result in the promise
|
|
191
197
|
// It unifies synchronous and asynchronous `initialize()` calls
|
|
192
198
|
yield Promise.resolve(ret);
|
|
193
|
-
that.Config.dispatch(that.Store);
|
|
194
199
|
}
|
|
195
200
|
that.removeSplashScreenRequestor(that);
|
|
196
201
|
}));
|
|
@@ -518,10 +523,11 @@ class Application extends _react.Component {
|
|
|
518
523
|
* success
|
|
519
524
|
*/
|
|
520
525
|
addAlert(level, message) {
|
|
526
|
+
var _this$AppStore$dispat, _this$AppStore;
|
|
521
527
|
var expire = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
|
|
522
528
|
var shouldBeTranslated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
523
529
|
var component = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
524
|
-
this.
|
|
530
|
+
(_this$AppStore$dispat = (_this$AppStore = this.AppStore).dispatch) === null || _this$AppStore$dispat === void 0 || _this$AppStore$dispat.call(_this$AppStore, {
|
|
525
531
|
type: _actions.ADD_ALERT,
|
|
526
532
|
level: level,
|
|
527
533
|
message: message,
|
|
@@ -543,7 +549,7 @@ class Application extends _react.Component {
|
|
|
543
549
|
addAlertFromException will always use "danger" color as its background and the full exception will be printed into the console
|
|
544
550
|
*/
|
|
545
551
|
addAlertFromException(exception, message) {
|
|
546
|
-
var _exception$response;
|
|
552
|
+
var _exception$response, _this$AppStore$dispat2, _this$AppStore2;
|
|
547
553
|
var expire = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
|
|
548
554
|
var shouldBeTranslated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
549
555
|
var component = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
@@ -580,7 +586,7 @@ class Application extends _react.Component {
|
|
|
580
586
|
}, exception.message));
|
|
581
587
|
}
|
|
582
588
|
}
|
|
583
|
-
this.
|
|
589
|
+
(_this$AppStore$dispat2 = (_this$AppStore2 = this.AppStore).dispatch) === null || _this$AppStore$dispat2 === void 0 || _this$AppStore$dispat2.call(_this$AppStore2, {
|
|
584
590
|
type: _actions.ADD_ALERT,
|
|
585
591
|
level: "danger",
|
|
586
592
|
message: exceptionMessage,
|
|
@@ -590,11 +596,13 @@ class Application extends _react.Component {
|
|
|
590
596
|
});
|
|
591
597
|
}
|
|
592
598
|
setAdvancedMode(enabled) {
|
|
599
|
+
var _this$AppStore$dispat3, _this$AppStore3;
|
|
593
600
|
if (enabled === 0) {
|
|
594
|
-
var
|
|
595
|
-
|
|
601
|
+
var _state$advmode;
|
|
602
|
+
var state = this.AppStore.state;
|
|
603
|
+
enabled = !(state !== null && state !== void 0 && (_state$advmode = state.advmode) !== null && _state$advmode !== void 0 && _state$advmode.enabled);
|
|
596
604
|
}
|
|
597
|
-
this.
|
|
605
|
+
(_this$AppStore$dispat3 = (_this$AppStore3 = this.AppStore).dispatch) === null || _this$AppStore$dispat3 === void 0 || _this$AppStore$dispat3.call(_this$AppStore3, {
|
|
598
606
|
type: _actions.SET_ADVANCED_MODE,
|
|
599
607
|
enabled: enabled
|
|
600
608
|
});
|
|
@@ -610,11 +618,12 @@ class Application extends _react.Component {
|
|
|
610
618
|
It takes a parameter called "status" to indicate whether to turn the full-screen mode on or off.
|
|
611
619
|
*/
|
|
612
620
|
setFullScreenMode(status) {
|
|
613
|
-
var
|
|
614
|
-
|
|
621
|
+
var _state$fullscreenmode, _this$AppStore$dispat4, _this$AppStore4;
|
|
622
|
+
var state = this.AppStore.state;
|
|
623
|
+
if (status === 'on' && (state === null || state === void 0 || (_state$fullscreenmode = state.fullscreenmode) === null || _state$fullscreenmode === void 0 ? void 0 : _state$fullscreenmode.status) === 'on') {
|
|
615
624
|
status = 'off';
|
|
616
625
|
}
|
|
617
|
-
this.
|
|
626
|
+
(_this$AppStore$dispat4 = (_this$AppStore4 = this.AppStore).dispatch) === null || _this$AppStore$dispat4 === void 0 || _this$AppStore$dispat4.call(_this$AppStore4, {
|
|
618
627
|
type: _actions.SET_FULLSCREEN_MODE,
|
|
619
628
|
status: status
|
|
620
629
|
});
|
|
@@ -626,29 +635,15 @@ class Application extends _react.Component {
|
|
|
626
635
|
this.addAlert('info', 'ASABApplicationContainer|Fullscreen mode turned off', 30, true);
|
|
627
636
|
}
|
|
628
637
|
}
|
|
629
|
-
setFlag(name) {
|
|
630
|
-
(0, _react.useEffect)(() => {
|
|
631
|
-
this.Store.dispatch({
|
|
632
|
-
type: _actions.SET_FLAG,
|
|
633
|
-
flag: name
|
|
634
|
-
});
|
|
635
|
-
return () => {
|
|
636
|
-
this.Store.dispatch({
|
|
637
|
-
type: _actions.SET_FLAG,
|
|
638
|
-
flag: undefined
|
|
639
|
-
});
|
|
640
|
-
};
|
|
641
|
-
}, [name]);
|
|
642
|
-
}
|
|
643
638
|
render() {
|
|
644
639
|
if (this.state.splashscreenRequestors > 0) return (
|
|
645
640
|
/*#__PURE__*/
|
|
646
641
|
// When splashscreenRequestors is requested, the application is not rendered.
|
|
647
642
|
// This prevents race conditions during application init time.
|
|
648
|
-
_react.default.createElement(_asab_webui_components.
|
|
643
|
+
_react.default.createElement(_asab_webui_components.AppStoreProvider, {
|
|
644
|
+
app: this
|
|
645
|
+
}, /*#__PURE__*/_react.default.createElement(_asab_webui_components.PubSubProvider, {
|
|
649
646
|
app: this
|
|
650
|
-
}, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
651
|
-
store: this.Store
|
|
652
647
|
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
653
648
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
654
649
|
}, /*#__PURE__*/_react.default.createElement(_Alerts.default, {
|
|
@@ -659,10 +654,10 @@ class Application extends _react.Component {
|
|
|
659
654
|
app: this
|
|
660
655
|
})))))
|
|
661
656
|
);
|
|
662
|
-
return /*#__PURE__*/_react.default.createElement(_asab_webui_components.
|
|
657
|
+
return /*#__PURE__*/_react.default.createElement(_asab_webui_components.AppStoreProvider, {
|
|
658
|
+
app: this
|
|
659
|
+
}, /*#__PURE__*/_react.default.createElement(_asab_webui_components.PubSubProvider, {
|
|
663
660
|
app: this
|
|
664
|
-
}, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
665
|
-
store: this.Store
|
|
666
661
|
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
667
662
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
668
663
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactRedux = require("react-redux");
|
|
9
8
|
var _reactI18next = require("react-i18next");
|
|
9
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
10
10
|
require("./ApplicationScreenTitle.scss");
|
|
11
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
12
12
|
var ApplicationScreenTitle = props => {
|
|
13
13
|
var _props$routes;
|
|
14
|
-
var subtitle = (0,
|
|
14
|
+
var subtitle = (0, _asab_webui_components.useAppSelector)(state => {
|
|
15
15
|
var _state$header;
|
|
16
16
|
return (_state$header = state.header) === null || _state$header === void 0 ? void 0 : _state$header.subtitle;
|
|
17
17
|
});
|
|
18
|
-
var title = (0,
|
|
18
|
+
var title = (0, _asab_webui_components.useAppSelector)(state => {
|
|
19
19
|
var _state$config;
|
|
20
20
|
return (_state$config = state.config) === null || _state$config === void 0 ? void 0 : _state$config.title;
|
|
21
21
|
});
|
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var
|
|
9
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
10
10
|
var _reactRouterDom = require("react-router-dom");
|
|
11
11
|
var _ApplicationScreenTitle = _interopRequireDefault(require("./ApplicationScreenTitle"));
|
|
12
12
|
var ApplicationTitleRouter = props => {
|
|
13
|
-
var routes = (0,
|
|
13
|
+
var routes = (0, _asab_webui_components.useAppSelector)(state => {
|
|
14
14
|
var _state$router;
|
|
15
|
-
return (_state$router = state.router) === null || _state$router === void 0 ? void 0 : _state$router.routes;
|
|
15
|
+
return ((_state$router = state.router) === null || _state$router === void 0 ? void 0 : _state$router.routes) || [];
|
|
16
16
|
});
|
|
17
17
|
var filteredRoutes = filterRoutesByMatch(routes);
|
|
18
18
|
return /*#__PURE__*/_react.default.createElement(_ApplicationScreenTitle.default, {
|
|
@@ -6,9 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = HelpButton;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactI18next = require("react-i18next");
|
|
9
|
-
var _reactRedux = require("react-redux");
|
|
10
|
-
var _reactstrap = require("reactstrap");
|
|
11
9
|
var _asab_webui_components = require("asab_webui_components");
|
|
10
|
+
var _reactstrap = require("reactstrap");
|
|
12
11
|
require("./HelpButton.scss");
|
|
13
12
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
14
13
|
function HelpButton() {
|
|
@@ -17,7 +16,10 @@ function HelpButton() {
|
|
|
17
16
|
} = (0, _reactI18next.useTranslation)();
|
|
18
17
|
var [modal, setModal] = (0, _react.useState)(false);
|
|
19
18
|
var [isIframeLoading, setIsIframeLoading] = (0, _react.useState)(true);
|
|
20
|
-
var path = (0,
|
|
19
|
+
var path = (0, _asab_webui_components.useAppSelector)(state => {
|
|
20
|
+
var _state$header;
|
|
21
|
+
return state === null || state === void 0 || (_state$header = state.header) === null || _state$header === void 0 ? void 0 : _state$header.helpPath;
|
|
22
|
+
});
|
|
21
23
|
if (path == undefined) return null;
|
|
22
24
|
var toggle = () => {
|
|
23
25
|
setModal(prev => {
|
|
@@ -8,13 +8,13 @@ exports.default = Header;
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _reactstrap = require("reactstrap");
|
|
11
|
-
var
|
|
11
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
12
12
|
var _ApplicationScreenTitle = _interopRequireDefault(require("./ApplicationScreenTitle"));
|
|
13
13
|
require("./header.scss");
|
|
14
14
|
function Header(props) {
|
|
15
|
-
var headerNavItems = (0,
|
|
15
|
+
var headerNavItems = (0, _asab_webui_components.useAppSelector)(state => {
|
|
16
16
|
var _state$header;
|
|
17
|
-
return (_state$header = state.header) === null || _state$header === void 0 ? void 0 : _state$header.headerNavItems;
|
|
17
|
+
return state === null || state === void 0 || (_state$header = state.header) === null || _state$header === void 0 ? void 0 : _state$header.headerNavItems;
|
|
18
18
|
});
|
|
19
19
|
return /*#__PURE__*/_react.default.createElement("header", {
|
|
20
20
|
id: "app-header"
|
|
@@ -12,7 +12,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
12
12
|
var initialState = {
|
|
13
13
|
helpPath: undefined,
|
|
14
14
|
subtitle: undefined,
|
|
15
|
-
flag: undefined,
|
|
16
15
|
headerNavItems: []
|
|
17
16
|
};
|
|
18
17
|
var _default = exports.default = function _default() {
|
|
@@ -27,10 +26,6 @@ var _default = exports.default = function _default() {
|
|
|
27
26
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
28
27
|
subtitle: action.subtitle
|
|
29
28
|
});
|
|
30
|
-
case _actions.SET_FLAG:
|
|
31
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
32
|
-
flag: action.flag
|
|
33
|
-
});
|
|
34
29
|
case _actions.SET_HEADER_NAVIGATION_ITEMS:
|
|
35
30
|
// Sort the navigation items
|
|
36
31
|
action.headerNavItems.sort((a, b) => {
|
|
@@ -37,10 +37,13 @@ class Navigation extends _react.Component {
|
|
|
37
37
|
// If no existing item, push the new item
|
|
38
38
|
this.Items.push(item);
|
|
39
39
|
}
|
|
40
|
-
this.App.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
if (this.App.AppStore) {
|
|
41
|
+
var _this$App$AppStore$di, _this$App$AppStore;
|
|
42
|
+
(_this$App$AppStore$di = (_this$App$AppStore = this.App.AppStore).dispatch) === null || _this$App$AppStore$di === void 0 || _this$App$AppStore$di.call(_this$App$AppStore, {
|
|
43
|
+
type: _actions.SET_NAVIGATION_ITEMS,
|
|
44
|
+
navItems: this.Items
|
|
45
|
+
});
|
|
46
|
+
}
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
exports.default = Navigation;
|
|
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = ApplicationRouter;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _reactRedux = require("react-redux");
|
|
11
10
|
var _reactRouterDom = require("react-router-dom");
|
|
11
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
12
12
|
var _actions = require("../../actions");
|
|
13
13
|
var _RouteErrorHandler = _interopRequireDefault(require("../RouteErrorHandler"));
|
|
14
14
|
var _UnauthorizedAccessScreen = _interopRequireDefault(require("../../screens/UnauthorizedAccessScreen"));
|
|
@@ -17,7 +17,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
17
17
|
// TODO: properly isolate authorization screen from the Application (should be injected when needed and only when AuthModule is enabled)
|
|
18
18
|
|
|
19
19
|
function ApplicationRouter(props) {
|
|
20
|
-
var routes = (0,
|
|
20
|
+
var routes = (0, _asab_webui_components.useAppSelector)(state => {
|
|
21
21
|
var _state$router;
|
|
22
22
|
return (_state$router = state.router) === null || _state$router === void 0 ? void 0 : _state$router.routes;
|
|
23
23
|
});
|
|
@@ -42,11 +42,13 @@ function ApplicationRouter(props) {
|
|
|
42
42
|
}));
|
|
43
43
|
}
|
|
44
44
|
function RouteRenderer(props) {
|
|
45
|
-
var resources = (0,
|
|
45
|
+
var resources = (0, _asab_webui_components.useAppSelector)(state => {
|
|
46
46
|
var _state$auth;
|
|
47
47
|
return (_state$auth = state.auth) !== null && _state$auth !== void 0 && _state$auth.resources ? state.auth.resources : [];
|
|
48
48
|
});
|
|
49
|
-
var
|
|
49
|
+
var {
|
|
50
|
+
dispatch
|
|
51
|
+
} = (0, _asab_webui_components.useAppStore)();
|
|
50
52
|
var defaultHelp = props.app.Config.get("help");
|
|
51
53
|
|
|
52
54
|
// Set up and dispatch help content
|
|
@@ -25,10 +25,13 @@ class Router extends _react.Component {
|
|
|
25
25
|
}
|
|
26
26
|
*/
|
|
27
27
|
this.Routes.push(route);
|
|
28
|
-
this.App.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
if (this.App.AppStore) {
|
|
29
|
+
var _this$App$AppStore$di, _this$App$AppStore;
|
|
30
|
+
(_this$App$AppStore$di = (_this$App$AppStore = this.App.AppStore).dispatch) === null || _this$App$AppStore$di === void 0 || _this$App$AppStore$di.call(_this$App$AppStore, {
|
|
31
|
+
type: _actions.SET_ROUTES,
|
|
32
|
+
routes: this.Routes
|
|
33
|
+
});
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
exports.default = Router;
|
|
@@ -5,19 +5,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactRedux = require("react-redux");
|
|
9
8
|
var _reactRouterDom = require("react-router-dom");
|
|
10
9
|
var _BrandImage = require("../../components/branding/BrandImage");
|
|
10
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
11
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
12
12
|
var NavbarBrand = props => {
|
|
13
13
|
var _brandImage$href;
|
|
14
14
|
var [brandImage, setBrandImage] = (0, _react.useState)({});
|
|
15
|
-
var theme = (0,
|
|
16
|
-
var title = (0,
|
|
15
|
+
var theme = (0, _asab_webui_components.useAppSelector)(state => state.theme);
|
|
16
|
+
var title = (0, _asab_webui_components.useAppSelector)(state => {
|
|
17
17
|
var _state$config;
|
|
18
18
|
return (_state$config = state.config) === null || _state$config === void 0 ? void 0 : _state$config.title;
|
|
19
19
|
});
|
|
20
|
-
var isSidebarCollapsed = (0,
|
|
20
|
+
var isSidebarCollapsed = (0, _asab_webui_components.useAppSelector)(state => {
|
|
21
21
|
var _state$sidebar;
|
|
22
22
|
return (_state$sidebar = state.sidebar) === null || _state$sidebar === void 0 ? void 0 : _state$sidebar.isSidebarCollapsed;
|
|
23
23
|
});
|
|
@@ -8,17 +8,22 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _reactRouterDom = require("react-router-dom");
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
|
-
var
|
|
11
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
12
12
|
var _actions = require("../../actions");
|
|
13
13
|
var SidebarBottomItem = _ref => {
|
|
14
14
|
var {
|
|
15
15
|
sidebarLogo
|
|
16
16
|
} = _ref;
|
|
17
|
-
var isSidebarCollapsed = (0,
|
|
17
|
+
var isSidebarCollapsed = (0, _asab_webui_components.useAppSelector)(state => {
|
|
18
|
+
var _state$sidebar;
|
|
19
|
+
return state === null || state === void 0 || (_state$sidebar = state.sidebar) === null || _state$sidebar === void 0 ? void 0 : _state$sidebar.isSidebarCollapsed;
|
|
20
|
+
});
|
|
18
21
|
var {
|
|
19
22
|
t
|
|
20
23
|
} = (0, _reactI18next.useTranslation)();
|
|
21
|
-
var
|
|
24
|
+
var {
|
|
25
|
+
dispatch
|
|
26
|
+
} = (0, _asab_webui_components.useAppStore)();
|
|
22
27
|
|
|
23
28
|
// Handle toggle of the sidebar's collapsed state
|
|
24
29
|
var onCollapse = event => {
|
|
@@ -9,7 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactRouter = require("react-router");
|
|
10
10
|
var _reactRouterDom = require("react-router-dom");
|
|
11
11
|
var _reactI18next = require("react-i18next");
|
|
12
|
-
var _reactRedux = require("react-redux");
|
|
13
12
|
var _reactstrap = require("reactstrap");
|
|
14
13
|
var _asab_webui_components = require("asab_webui_components");
|
|
15
14
|
var _SidebarIcon = _interopRequireDefault(require("./SidebarIcon"));
|
|
@@ -28,11 +27,11 @@ var SidebarItem = _ref => {
|
|
|
28
27
|
var {
|
|
29
28
|
t
|
|
30
29
|
} = (0, _reactI18next.useTranslation)();
|
|
31
|
-
var isSidebarCollapsed = (0,
|
|
30
|
+
var isSidebarCollapsed = (0, _asab_webui_components.useAppSelector)(state => {
|
|
32
31
|
var _state$sidebar;
|
|
33
32
|
return (_state$sidebar = state.sidebar) === null || _state$sidebar === void 0 ? void 0 : _state$sidebar.isSidebarCollapsed;
|
|
34
33
|
});
|
|
35
|
-
var attentionRequired = (0,
|
|
34
|
+
var attentionRequired = (0, _asab_webui_components.useAppSelector)(state => {
|
|
36
35
|
var _state$attentionrequi;
|
|
37
36
|
return (_state$attentionrequi = state.attentionrequired) === null || _state$attentionrequi === void 0 ? void 0 : _state$attentionrequi.beacon;
|
|
38
37
|
});
|
|
@@ -41,6 +40,7 @@ var SidebarItem = _ref => {
|
|
|
41
40
|
// Attention requred flag
|
|
42
41
|
var itemBeacon = beacon ? beacon["beacon.".concat(lowercasedItemName)] : attentionRequired["beacon.".concat(lowercasedItemName)];
|
|
43
42
|
(0, _react.useEffect)(() => {
|
|
43
|
+
// TODO: refactor the handling of active and open states, since it does not behave as expected in some cases
|
|
44
44
|
if (isOpen && !isActive) {
|
|
45
45
|
setOpen(false);
|
|
46
46
|
}
|
|
@@ -88,11 +88,11 @@ var SidebarCollapsibleItem = _ref2 => {
|
|
|
88
88
|
var {
|
|
89
89
|
t
|
|
90
90
|
} = (0, _reactI18next.useTranslation)();
|
|
91
|
-
var isSidebarCollapsed = (0,
|
|
91
|
+
var isSidebarCollapsed = (0, _asab_webui_components.useAppSelector)(state => {
|
|
92
92
|
var _state$sidebar2;
|
|
93
93
|
return (_state$sidebar2 = state.sidebar) === null || _state$sidebar2 === void 0 ? void 0 : _state$sidebar2.isSidebarCollapsed;
|
|
94
94
|
});
|
|
95
|
-
var attentionRequired = (0,
|
|
95
|
+
var attentionRequired = (0, _asab_webui_components.useAppSelector)(state => {
|
|
96
96
|
var _state$attentionrequi2;
|
|
97
97
|
return (_state$attentionrequi2 = state.attentionrequired) === null || _state$attentionrequi2 === void 0 ? void 0 : _state$attentionrequi2.beacon;
|
|
98
98
|
});
|