asab_webui_shell 25.2.7 → 26.1.1
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 +50 -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/Sidebar/sidebar.scss +2 -0
- 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 +5 -6
- package/dist/modules/auth/screens/InvitationScreen.js +1 -2
- 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/SuspenseScreen.js +1 -2
- package/dist/screens/UnauthorizedAccessScreen.js +2 -2
- 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/styles/constants/theme-print.scss +10 -5
- 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
|
}));
|
|
@@ -474,6 +479,11 @@ class Application extends _react.Component {
|
|
|
474
479
|
}
|
|
475
480
|
componentDidMount() {
|
|
476
481
|
document.addEventListener("keyup", this._handleKeyUp, false);
|
|
482
|
+
|
|
483
|
+
// Add print-landscape class to body if not present
|
|
484
|
+
if (!document.body.classList.contains('print-landscape')) {
|
|
485
|
+
document.body.classList.add('print-landscape');
|
|
486
|
+
}
|
|
477
487
|
}
|
|
478
488
|
componentWillUnmount() {
|
|
479
489
|
document.removeEventListener("keyup", this._handleKeyUp, false);
|
|
@@ -513,10 +523,11 @@ class Application extends _react.Component {
|
|
|
513
523
|
* success
|
|
514
524
|
*/
|
|
515
525
|
addAlert(level, message) {
|
|
526
|
+
var _this$AppStore$dispat, _this$AppStore;
|
|
516
527
|
var expire = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
|
|
517
528
|
var shouldBeTranslated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
518
529
|
var component = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
519
|
-
this.
|
|
530
|
+
(_this$AppStore$dispat = (_this$AppStore = this.AppStore).dispatch) === null || _this$AppStore$dispat === void 0 || _this$AppStore$dispat.call(_this$AppStore, {
|
|
520
531
|
type: _actions.ADD_ALERT,
|
|
521
532
|
level: level,
|
|
522
533
|
message: message,
|
|
@@ -538,7 +549,7 @@ class Application extends _react.Component {
|
|
|
538
549
|
addAlertFromException will always use "danger" color as its background and the full exception will be printed into the console
|
|
539
550
|
*/
|
|
540
551
|
addAlertFromException(exception, message) {
|
|
541
|
-
var _exception$response;
|
|
552
|
+
var _exception$response, _this$AppStore$dispat2, _this$AppStore2;
|
|
542
553
|
var expire = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
|
|
543
554
|
var shouldBeTranslated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
544
555
|
var component = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
@@ -575,7 +586,7 @@ class Application extends _react.Component {
|
|
|
575
586
|
}, exception.message));
|
|
576
587
|
}
|
|
577
588
|
}
|
|
578
|
-
this.
|
|
589
|
+
(_this$AppStore$dispat2 = (_this$AppStore2 = this.AppStore).dispatch) === null || _this$AppStore$dispat2 === void 0 || _this$AppStore$dispat2.call(_this$AppStore2, {
|
|
579
590
|
type: _actions.ADD_ALERT,
|
|
580
591
|
level: "danger",
|
|
581
592
|
message: exceptionMessage,
|
|
@@ -585,11 +596,13 @@ class Application extends _react.Component {
|
|
|
585
596
|
});
|
|
586
597
|
}
|
|
587
598
|
setAdvancedMode(enabled) {
|
|
599
|
+
var _this$AppStore$dispat3, _this$AppStore3;
|
|
588
600
|
if (enabled === 0) {
|
|
589
|
-
var
|
|
590
|
-
|
|
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);
|
|
591
604
|
}
|
|
592
|
-
this.
|
|
605
|
+
(_this$AppStore$dispat3 = (_this$AppStore3 = this.AppStore).dispatch) === null || _this$AppStore$dispat3 === void 0 || _this$AppStore$dispat3.call(_this$AppStore3, {
|
|
593
606
|
type: _actions.SET_ADVANCED_MODE,
|
|
594
607
|
enabled: enabled
|
|
595
608
|
});
|
|
@@ -605,11 +618,12 @@ class Application extends _react.Component {
|
|
|
605
618
|
It takes a parameter called "status" to indicate whether to turn the full-screen mode on or off.
|
|
606
619
|
*/
|
|
607
620
|
setFullScreenMode(status) {
|
|
608
|
-
var
|
|
609
|
-
|
|
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') {
|
|
610
624
|
status = 'off';
|
|
611
625
|
}
|
|
612
|
-
this.
|
|
626
|
+
(_this$AppStore$dispat4 = (_this$AppStore4 = this.AppStore).dispatch) === null || _this$AppStore$dispat4 === void 0 || _this$AppStore$dispat4.call(_this$AppStore4, {
|
|
613
627
|
type: _actions.SET_FULLSCREEN_MODE,
|
|
614
628
|
status: status
|
|
615
629
|
});
|
|
@@ -621,29 +635,15 @@ class Application extends _react.Component {
|
|
|
621
635
|
this.addAlert('info', 'ASABApplicationContainer|Fullscreen mode turned off', 30, true);
|
|
622
636
|
}
|
|
623
637
|
}
|
|
624
|
-
setFlag(name) {
|
|
625
|
-
(0, _react.useEffect)(() => {
|
|
626
|
-
this.Store.dispatch({
|
|
627
|
-
type: _actions.SET_FLAG,
|
|
628
|
-
flag: name
|
|
629
|
-
});
|
|
630
|
-
return () => {
|
|
631
|
-
this.Store.dispatch({
|
|
632
|
-
type: _actions.SET_FLAG,
|
|
633
|
-
flag: undefined
|
|
634
|
-
});
|
|
635
|
-
};
|
|
636
|
-
}, [name]);
|
|
637
|
-
}
|
|
638
638
|
render() {
|
|
639
639
|
if (this.state.splashscreenRequestors > 0) return (
|
|
640
640
|
/*#__PURE__*/
|
|
641
641
|
// When splashscreenRequestors is requested, the application is not rendered.
|
|
642
642
|
// This prevents race conditions during application init time.
|
|
643
|
-
_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, {
|
|
644
646
|
app: this
|
|
645
|
-
}, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
646
|
-
store: this.Store
|
|
647
647
|
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
648
648
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
649
649
|
}, /*#__PURE__*/_react.default.createElement(_Alerts.default, {
|
|
@@ -654,10 +654,10 @@ class Application extends _react.Component {
|
|
|
654
654
|
app: this
|
|
655
655
|
})))))
|
|
656
656
|
);
|
|
657
|
-
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, {
|
|
658
660
|
app: this
|
|
659
|
-
}, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
660
|
-
store: this.Store
|
|
661
661
|
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
662
662
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
663
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
|
});
|