asab_webui_shell 25.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/LICENSE +28 -0
  3. package/README.md +3 -0
  4. package/dist/actions.js +22 -0
  5. package/dist/components/branding/BrandImage.js +72 -0
  6. package/dist/components/locationReplace.js +51 -0
  7. package/dist/config/ConfigReducer.js +22 -0
  8. package/dist/config/ConfigService.js +169 -0
  9. package/dist/containers/AdvancedMode/reducer.js +28 -0
  10. package/dist/containers/Alerts/alerts.scss +9 -0
  11. package/dist/containers/Alerts/index.js +81 -0
  12. package/dist/containers/Alerts/reducer.js +68 -0
  13. package/dist/containers/Application.js +773 -0
  14. package/dist/containers/Application.scss +104 -0
  15. package/dist/containers/AttentionRequired/reducer.js +30 -0
  16. package/dist/containers/FullscreenMode/reducer.js +28 -0
  17. package/dist/containers/Header/ApplicationScreenTitle/ApplicationScreenTitle.js +47 -0
  18. package/dist/containers/Header/ApplicationScreenTitle/ApplicationScreenTitle.scss +8 -0
  19. package/dist/containers/Header/ApplicationScreenTitle/index.js +31 -0
  20. package/dist/containers/Header/Help/HelpButton.js +58 -0
  21. package/dist/containers/Header/Help/HelpButton.scss +15 -0
  22. package/dist/containers/Header/Help/HelpService.js +34 -0
  23. package/dist/containers/Header/Preview/PreviewFlag.js +34 -0
  24. package/dist/containers/Header/Preview/PreviewService.js +34 -0
  25. package/dist/containers/Header/header.scss +24 -0
  26. package/dist/containers/Header/index.js +39 -0
  27. package/dist/containers/Header/reducer.js +53 -0
  28. package/dist/containers/Navigation/index.js +66 -0
  29. package/dist/containers/Navigation/reducer.js +56 -0
  30. package/dist/containers/RouteErrorHandler/ErrorContainer.js +46 -0
  31. package/dist/containers/RouteErrorHandler/index.js +80 -0
  32. package/dist/containers/Router/ApplicationRouter.js +78 -0
  33. package/dist/containers/Router/index.js +50 -0
  34. package/dist/containers/Router/reducer.js +28 -0
  35. package/dist/containers/Sidebar/NavbarBrand.js +59 -0
  36. package/dist/containers/Sidebar/SidebarBottomItem.js +55 -0
  37. package/dist/containers/Sidebar/SidebarIcon.js +21 -0
  38. package/dist/containers/Sidebar/SidebarItem.js +209 -0
  39. package/dist/containers/Sidebar/SidebarItemRenderer.js +30 -0
  40. package/dist/containers/Sidebar/index.js +86 -0
  41. package/dist/containers/Sidebar/reducer.js +35 -0
  42. package/dist/containers/Sidebar/sidebar.scss +176 -0
  43. package/dist/containers/Sidepanel/Sidepanel.js +60 -0
  44. package/dist/containers/Sidepanel/Sidepanel.scss +20 -0
  45. package/dist/containers/Toast/ToastComponent.js +31 -0
  46. package/dist/containers/Toast/ToastComponent.jsx +28 -0
  47. package/dist/containers/Toast/ToastContainer.js +80 -0
  48. package/dist/containers/Toast/ToastContainer.jsx +59 -0
  49. package/dist/containers/Toast/reducer.js +55 -0
  50. package/dist/containers/Toast/reducer.jsx +45 -0
  51. package/dist/index.js +48 -0
  52. package/dist/modules/about/AboutScreen.js +84 -0
  53. package/dist/modules/about/index.js +41 -0
  54. package/dist/modules/auth/actions.js +11 -0
  55. package/dist/modules/auth/api.js +214 -0
  56. package/dist/modules/auth/components/SessionExpirationAlert.js +35 -0
  57. package/dist/modules/auth/header.js +109 -0
  58. package/dist/modules/auth/header.scss +9 -0
  59. package/dist/modules/auth/index.js +761 -0
  60. package/dist/modules/auth/reducer.js +36 -0
  61. package/dist/modules/auth/screens/AccessControlScreen.js +78 -0
  62. package/dist/modules/auth/screens/InvitationScreen.js +161 -0
  63. package/dist/modules/i18n/actions.js +7 -0
  64. package/dist/modules/i18n/dropdown.js +77 -0
  65. package/dist/modules/i18n/index.js +44 -0
  66. package/dist/modules/i18n/reducer.js +26 -0
  67. package/dist/modules/i18n/service.js +158 -0
  68. package/dist/modules/tenant/TenantDropdown.js +53 -0
  69. package/dist/modules/tenant/access/AccessDeniedCard.js +107 -0
  70. package/dist/modules/tenant/access/AccessDeniedCard.scss +6 -0
  71. package/dist/modules/tenant/actions.js +10 -0
  72. package/dist/modules/tenant/index.js +41 -0
  73. package/dist/modules/tenant/reducer.js +26 -0
  74. package/dist/modules/tenant/service.js +228 -0
  75. package/dist/screens/InvalidRouteScreen.js +30 -0
  76. package/dist/screens/InvalidRouteScreen.scss +19 -0
  77. package/dist/screens/SuspenseScreen.js +43 -0
  78. package/dist/screens/SuspenseScreen.scss +9 -0
  79. package/dist/screens/UnauthorizedAccessScreen.js +79 -0
  80. package/dist/screens/UnauthorizedAccessScreen.scss +19 -0
  81. package/dist/services/AttentionRequiredService.js +169 -0
  82. package/dist/services/BrandingService.js +104 -0
  83. package/dist/services/HeaderService.js +84 -0
  84. package/dist/services/ReduxService.js +25 -0
  85. package/dist/services/TitleService.js +45 -0
  86. package/dist/theme/ThemeButton.js +39 -0
  87. package/dist/theme/ThemeReducer.js +20 -0
  88. package/dist/theme/ThemeService.js +52 -0
  89. package/dist/theme/actions.js +7 -0
  90. package/package.json +41 -0
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SessionExpirationAlert = SessionExpirationAlert;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactI18next = require("react-i18next");
10
+ var _reactstrap = require("reactstrap");
11
+ // Session expiration custom Alert component
12
+ function SessionExpirationAlert(_ref) {
13
+ var alert = _ref.alert,
14
+ store = _ref.store;
15
+ var _useTranslation = (0, _reactI18next.useTranslation)(),
16
+ t = _useTranslation.t; // Use the hook inside the functional component
17
+
18
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
19
+ key: alert.key,
20
+ color: alert.level,
21
+ fade: true,
22
+ isOpen: !alert.acked
23
+ }, /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("h5", null, t(alert.message)), /*#__PURE__*/_react["default"].createElement("div", {
24
+ onClick: function onClick() {
25
+ return window.location.reload();
26
+ },
27
+ className: "mt-2",
28
+ style: {
29
+ whiteSpace: 'pre-wrap',
30
+ fontWeight: 'bold',
31
+ cursor: 'pointer',
32
+ textDecoration: 'underline'
33
+ }
34
+ }, t('ASABAuthModule|Click here to proceed to login.'))));
35
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AuthHeaderDropdown = AuthHeaderDropdown;
8
+ exports.AuthHeaderInvitation = AuthHeaderInvitation;
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactRedux = require("react-redux");
11
+ var _reactRouterDom = require("react-router-dom");
12
+ var _reactI18next = require("react-i18next");
13
+ var _asab_webui_components = require("asab_webui_components");
14
+ var _reactstrap = require("reactstrap");
15
+ require("./header.scss");
16
+ /*
17
+
18
+ Language localizations for auth HeaderComponent can be added to the translation.json files of
19
+ public/locales/en & public/locales/cs of the product where HeaderComponent is used.
20
+
21
+ Example:
22
+
23
+ {
24
+ 'AuthHeader': {
25
+ 'My account': 'My account',
26
+ 'Access control': 'Access control',
27
+ 'Manage': 'Manage',
28
+ 'Change a password': 'Change a password',
29
+ 'Logout': 'Logout',
30
+ ...
31
+ }
32
+ }
33
+
34
+ */
35
+
36
+ function AuthHeaderInvitation(props) {
37
+ var resources = (0, _reactRedux.useSelector)(function (state) {
38
+ var _state$auth;
39
+ return (_state$auth = state.auth) === null || _state$auth === void 0 ? void 0 : _state$auth.resources;
40
+ });
41
+ var tenant = (0, _reactRedux.useSelector)(function (state) {
42
+ var _state$tenant;
43
+ return (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
44
+ });
45
+ var navigate = (0, _reactRouterDom.useNavigate)();
46
+ var _useTranslation = (0, _reactI18next.useTranslation)(),
47
+ t = _useTranslation.t;
48
+ if (!tenant || !(0, _asab_webui_components.isAuthorized)(['seacat:tenant:assign'])) {
49
+ return null;
50
+ }
51
+ ;
52
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
53
+ outline: true,
54
+ onClick: function onClick(e) {
55
+ e.preventDefault(), navigate('/auth/invite');
56
+ },
57
+ title: t('AuthHeader|Invite other users'),
58
+ className: "invite-nav-button",
59
+ color: "primary"
60
+ }, /*#__PURE__*/_react["default"].createElement("i", {
61
+ className: "bi bi-person-plus me-2"
62
+ }), t('AuthHeader|Invite other users'));
63
+ }
64
+ function AuthHeaderDropdown(props) {
65
+ var _useTranslation2 = (0, _reactI18next.useTranslation)(),
66
+ t = _useTranslation2.t;
67
+ var userinfo = (0, _reactRedux.useSelector)(function (state) {
68
+ var _state$auth2;
69
+ return (_state$auth2 = state.auth) === null || _state$auth2 === void 0 ? void 0 : _state$auth2.userinfo;
70
+ });
71
+ var isSuperuser = (0, _asab_webui_components.isAuthorized)(['authz:superuser']);
72
+ var logout = function logout() {
73
+ props.AuthModule.logout();
74
+ };
75
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.UncontrolledDropdown, {
76
+ direction: "down"
77
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownToggle, {
78
+ nav: true,
79
+ caret: true,
80
+ title: isSuperuser ? t('AuthHeader|You have superuser privileges. Act responsibly.') : userinfo === null || userinfo === void 0 ? void 0 : userinfo.sub,
81
+ className: isSuperuser ? 'text-warning' : ''
82
+ }, userinfo !== null && userinfo !== void 0 && userinfo.picture ? /*#__PURE__*/_react["default"].createElement("img", {
83
+ src: userinfo === null || userinfo === void 0 ? void 0 : userinfo.picture,
84
+ className: "img-avatar",
85
+ alt: userinfo === null || userinfo === void 0 ? void 0 : userinfo.username
86
+ }) : /*#__PURE__*/_react["default"].createElement("i", {
87
+ alt: userinfo === null || userinfo === void 0 ? void 0 : userinfo.username,
88
+ className: "pe-2 bi ".concat(isSuperuser ? 'bi-universal-access' : 'bi-person-gear')
89
+ }), /*#__PURE__*/_react["default"].createElement("span", null, userinfo === null || userinfo === void 0 ? void 0 : userinfo.username)), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownMenu, {
90
+ className: "shadow"
91
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
92
+ header: true
93
+ }, t('AuthHeader|My account')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
94
+ tag: _reactRouterDom.Link,
95
+ to: "/auth/access-control"
96
+ }, t('AuthHeader|Access control')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
97
+ tag: _reactRouterDom.Link,
98
+ to: "/account"
99
+ }, t('AuthHeader|Account settings')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
100
+ tag: _reactRouterDom.Link,
101
+ to: "/account/password"
102
+ }, t('AuthHeader|Change password')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
103
+ onClick: function onClick() {
104
+ logout();
105
+ }
106
+ }, /*#__PURE__*/_react["default"].createElement("span", {
107
+ className: "text-danger"
108
+ }, t('AuthHeader|Log out')))));
109
+ }
@@ -0,0 +1,9 @@
1
+ .invite-nav-button {
2
+ border: 1px solid var(--bs-primary) !important;
3
+ padding: 1px !important;
4
+ padding-left: 4px !important;
5
+ padding-right: 4px !important;
6
+ &:hover {
7
+ border: 1px solid transparent !important;
8
+ }
9
+ }