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 CHANGED
@@ -21,6 +21,8 @@ Possible imports:
21
21
  - AuthModule
22
22
  - TenantModule
23
23
  - I18nModule
24
+ - AttentionRequiredModule
25
+ - InviteModule
24
26
  - getBrandImage
25
27
 
26
28
  ## Documentation
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asab_webui_shell",
3
- "version": "27.2.8",
3
+ "version": "27.3.2-alpha.0",
4
4
  "license": "BSD-3-Clause",
5
5
  "description": "TeskaLabs ASAB WebUI Shell Application",
6
6
  "contributors": [