asab_webui_shell 27.2.8 → 27.3.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/containers/Application.js +6 -0
- package/dist/index.js +8 -1
- package/dist/modules/auth/header.js +16 -27
- package/dist/modules/auth/index.js +0 -17
- package/dist/modules/invite/index.js +24 -0
- package/dist/screens/UnauthorizedAccessScreen.js +3 -0
- package/package.json +1 -1
- /package/dist/modules/{auth/screens → invite}/InvitationScreen.js +0 -0
package/README.md
CHANGED
|
@@ -435,6 +435,7 @@ class Application extends _react.Component {
|
|
|
435
435
|
this.setState(prevState => ({
|
|
436
436
|
printReadyIndicators: prevState.printReadyIndicators + 1
|
|
437
437
|
}));
|
|
438
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'push');
|
|
438
439
|
}
|
|
439
440
|
popPrintReadyIndicator() {
|
|
440
441
|
this.setState(prevState => {
|
|
@@ -446,6 +447,7 @@ class Application extends _react.Component {
|
|
|
446
447
|
printReadyIndicators: Math.max(nextValue, 0)
|
|
447
448
|
};
|
|
448
449
|
});
|
|
450
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'pop');
|
|
449
451
|
}
|
|
450
452
|
registerService(service) {
|
|
451
453
|
if (service.Name in this.Services) {
|
|
@@ -496,11 +498,13 @@ class Application extends _react.Component {
|
|
|
496
498
|
if (this.state.printReadyIndicators === 0) {
|
|
497
499
|
document.body.setAttribute('print-ready', 'true');
|
|
498
500
|
this._printReadyTimeout = null;
|
|
501
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'set true');
|
|
499
502
|
}
|
|
500
503
|
}, 500); // Add 500ms delay to ensure that the print-ready attribute is set after the last print-ready indicator is popped
|
|
501
504
|
} else {
|
|
502
505
|
this._clearPrintReadyTimeout();
|
|
503
506
|
document.body.setAttribute('print-ready', 'false');
|
|
507
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'set false');
|
|
504
508
|
}
|
|
505
509
|
}
|
|
506
510
|
componentWillUnmount() {
|
|
@@ -513,6 +517,7 @@ class Application extends _react.Component {
|
|
|
513
517
|
}
|
|
514
518
|
this._clearPrintReadyTimeout();
|
|
515
519
|
document.body.removeAttribute('print-ready');
|
|
520
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'unmount removed');
|
|
516
521
|
}
|
|
517
522
|
_clearPrintReadyTimeout() {
|
|
518
523
|
if (this._printReadyTimeout !== null) {
|
|
@@ -548,6 +553,7 @@ class Application extends _react.Component {
|
|
|
548
553
|
var splashscreen = document.getElementById('app-splashscreen'); // See public/index.html
|
|
549
554
|
splashscreen === null || splashscreen === void 0 || splashscreen.classList.add("d-none");
|
|
550
555
|
// Decrement print-ready indicator value if no splash screen requestors are present
|
|
556
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'splash last removed, pop');
|
|
551
557
|
this.popPrintReadyIndicator();
|
|
552
558
|
}
|
|
553
559
|
}
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,12 @@ Object.defineProperty(exports, "I18nModule", {
|
|
|
34
34
|
return _i18n.default;
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
|
+
Object.defineProperty(exports, "InviteModule", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _invite.default;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
37
43
|
Object.defineProperty(exports, "TenantModule", {
|
|
38
44
|
enumerable: true,
|
|
39
45
|
get: function get() {
|
|
@@ -53,4 +59,5 @@ var _i18n = _interopRequireDefault(require("./modules/i18n"));
|
|
|
53
59
|
var _tenant = _interopRequireDefault(require("./modules/tenant"));
|
|
54
60
|
var _auth = _interopRequireDefault(require("./modules/auth"));
|
|
55
61
|
var _about = _interopRequireDefault(require("./modules/about"));
|
|
56
|
-
var _index2 = _interopRequireDefault(require("./modules/attentionrequired/index.js"));
|
|
62
|
+
var _index2 = _interopRequireDefault(require("./modules/attentionrequired/index.js"));
|
|
63
|
+
var _invite = _interopRequireDefault(require("./modules/invite"));
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.AuthHeaderDropdown = AuthHeaderDropdown;
|
|
8
|
-
exports.AuthHeaderInvitation = AuthHeaderInvitation;
|
|
9
8
|
var _react = _interopRequireDefault(require("react"));
|
|
10
9
|
var _reactRouter = require("react-router");
|
|
11
10
|
var _reactI18next = require("react-i18next");
|
|
@@ -33,35 +32,15 @@ require("./header.scss");
|
|
|
33
32
|
|
|
34
33
|
*/
|
|
35
34
|
|
|
36
|
-
function AuthHeaderInvitation(props) {
|
|
37
|
-
var tenant = (0, _asab_webui_components.useAppSelector)(state => {
|
|
38
|
-
var _state$tenant;
|
|
39
|
-
return (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
|
|
40
|
-
});
|
|
41
|
-
var navigate = (0, _reactRouter.useNavigate)();
|
|
42
|
-
var {
|
|
43
|
-
t
|
|
44
|
-
} = (0, _reactI18next.useTranslation)();
|
|
45
|
-
if (!tenant || !(0, _seacatAuth.isAuthorized)(['seacat:tenant:assign'], props.app)) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
;
|
|
49
|
-
return /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
50
|
-
outline: true,
|
|
51
|
-
onClick: e => {
|
|
52
|
-
e.preventDefault(), navigate('/auth/invite');
|
|
53
|
-
},
|
|
54
|
-
title: t('AuthHeader|Invite other users'),
|
|
55
|
-
className: "invite-nav-button",
|
|
56
|
-
color: "primary"
|
|
57
|
-
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
58
|
-
className: "bi bi-person-plus me-2"
|
|
59
|
-
}), t('AuthHeader|Invite other users'));
|
|
60
|
-
}
|
|
61
35
|
function AuthHeaderDropdown(props) {
|
|
36
|
+
var _props$app;
|
|
62
37
|
var {
|
|
63
38
|
t
|
|
64
39
|
} = (0, _reactI18next.useTranslation)();
|
|
40
|
+
var tenant = (0, _asab_webui_components.useAppSelector)(state => {
|
|
41
|
+
var _state$tenant;
|
|
42
|
+
return (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
|
|
43
|
+
});
|
|
65
44
|
var userinfo = (0, _asab_webui_components.useAppSelector)(state => {
|
|
66
45
|
var _state$auth;
|
|
67
46
|
return (_state$auth = state.auth) === null || _state$auth === void 0 ? void 0 : _state$auth.userinfo;
|
|
@@ -70,6 +49,9 @@ function AuthHeaderDropdown(props) {
|
|
|
70
49
|
var logout = () => {
|
|
71
50
|
props.AuthModule.logout();
|
|
72
51
|
};
|
|
52
|
+
|
|
53
|
+
// Validation on displaying the invite option
|
|
54
|
+
var displayInvite = ((_props$app = props.app) === null || _props$app === void 0 || (_props$app = _props$app.Modules) === null || _props$app === void 0 ? void 0 : _props$app.some(obj => (obj === null || obj === void 0 ? void 0 : obj.Name) === "InviteModule")) && tenant && (0, _seacatAuth.isAuthorized)(['seacat:tenant:assign'], props.app);
|
|
73
55
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledDropdown, {
|
|
74
56
|
direction: "down"
|
|
75
57
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
|
|
@@ -88,7 +70,14 @@ function AuthHeaderDropdown(props) {
|
|
|
88
70
|
className: "shadow"
|
|
89
71
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
90
72
|
header: true
|
|
91
|
-
}, t('AuthHeader|My account')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
73
|
+
}, t('AuthHeader|My account')), displayInvite && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
74
|
+
divider: true
|
|
75
|
+
}), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
76
|
+
tag: _reactRouter.Link,
|
|
77
|
+
to: "/auth/invite"
|
|
78
|
+
}, t('AuthHeader|Invite other users')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
79
|
+
divider: true
|
|
80
|
+
})), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
92
81
|
tag: _reactRouter.Link,
|
|
93
82
|
to: "/auth/access-control"
|
|
94
83
|
}, t('AuthHeader|Access control')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
@@ -17,7 +17,6 @@ var _locationReplace = require("../../components/locationReplace");
|
|
|
17
17
|
var _SessionExpirationAlert = require("./components/SessionExpirationAlert");
|
|
18
18
|
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); } // TODO: Use SessionExpirationAlert only after proper fix of the component
|
|
19
19
|
var AccessControlScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./screens/AccessControlScreen"))));
|
|
20
|
-
var InvitationScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./screens/InvitationScreen"))));
|
|
21
20
|
class AuthModule extends _asab_webui_components.Module {
|
|
22
21
|
constructor(app, name) {
|
|
23
22
|
super(app, "AuthModule");
|
|
@@ -41,27 +40,11 @@ class AuthModule extends _asab_webui_components.Module {
|
|
|
41
40
|
component: AccessControlScreen,
|
|
42
41
|
resource: "*"
|
|
43
42
|
});
|
|
44
|
-
|
|
45
|
-
// Invitation screen
|
|
46
|
-
app.Router.addRoute({
|
|
47
|
-
path: '/auth/invite',
|
|
48
|
-
end: true,
|
|
49
|
-
name: 'Invite',
|
|
50
|
-
component: InvitationScreen,
|
|
51
|
-
resource: "seacat:tenant:assign"
|
|
52
|
-
});
|
|
53
43
|
}
|
|
54
44
|
initialize() {
|
|
55
45
|
var _this = this;
|
|
56
46
|
return (0, _asyncToGenerator2.default)(function* () {
|
|
57
47
|
var headerService = _this.App.locateService("HeaderService");
|
|
58
|
-
headerService.addComponent({
|
|
59
|
-
component: _header.AuthHeaderInvitation,
|
|
60
|
-
componentProps: {
|
|
61
|
-
AuthModule: _this
|
|
62
|
-
},
|
|
63
|
-
order: 200
|
|
64
|
-
});
|
|
65
48
|
headerService.addComponent({
|
|
66
49
|
component: _header.AuthHeaderDropdown,
|
|
67
50
|
componentProps: {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _asab_webui_components = require("asab_webui_components");
|
|
9
|
+
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); }
|
|
10
|
+
var InvitationScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./InvitationScreen"))));
|
|
11
|
+
class InviteModule extends _asab_webui_components.Module {
|
|
12
|
+
constructor(app, name) {
|
|
13
|
+
super(app, 'InviteModule');
|
|
14
|
+
// Invitation screen
|
|
15
|
+
app.Router.addRoute({
|
|
16
|
+
path: '/auth/invite',
|
|
17
|
+
end: true,
|
|
18
|
+
name: 'Invite',
|
|
19
|
+
component: InvitationScreen,
|
|
20
|
+
resource: 'seacat:tenant:assign'
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = InviteModule;
|
|
@@ -36,15 +36,18 @@ function UnauthorizedAccessScreen(props) {
|
|
|
36
36
|
if (!isAuthorized) {
|
|
37
37
|
document.body.setAttribute('print-ready', 'true');
|
|
38
38
|
document.body.setAttribute('print-unauthorized', 'true');
|
|
39
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'UnauthorizedAccessScreen set true');
|
|
39
40
|
} else {
|
|
40
41
|
document.body.removeAttribute('print-ready');
|
|
41
42
|
document.body.removeAttribute('print-unauthorized');
|
|
43
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'UnauthorizedAccessScreen cleared');
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
// Cleanup function to remove the attributes when the component unmounts
|
|
45
47
|
return () => {
|
|
46
48
|
document.body.removeAttribute('print-ready');
|
|
47
49
|
document.body.removeAttribute('print-unauthorized');
|
|
50
|
+
console.log('print-ready', document.body.getAttribute('print-ready'), 'UnauthorizedAccessScreen cleanup');
|
|
48
51
|
};
|
|
49
52
|
}, [isAuthorized]);
|
|
50
53
|
|
package/package.json
CHANGED
|
File without changes
|