@agilemotion/oui-react-js 1.5.7 → 1.5.9

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 (28) hide show
  1. package/dist/BasicApp.js +13 -11
  2. package/dist/InteractionPortalApp.js +136 -0
  3. package/dist/{BusinessPortalAppHome.js → InteractionPortalAppHome.js} +11 -40
  4. package/dist/{BusinessPortalApp.js → InteractionPortalApp_old.js} +3 -3
  5. package/dist/components/DocumentTemplateDesigner.css +16 -0
  6. package/dist/components/DocumentTemplateDesigner.js +85 -0
  7. package/dist/components/DocumentTemplateDesignerComponent.css +167 -0
  8. package/dist/components/DocumentTemplateDesignerComponent.js +120 -0
  9. package/dist/components/DocumentTemplatePlaceholderDialog.js +89 -0
  10. package/dist/components/Icon.js +8 -0
  11. package/dist/components/Portlet.css +18 -0
  12. package/dist/components/Portlet.js +24 -10
  13. package/dist/components/dashboard/BusinessPortalAppDashboard.js +35 -71
  14. package/dist/components/form/FieldSet.js +12 -0
  15. package/dist/components/layout/Layout.js +8 -0
  16. package/dist/components/layout/ViewContainer.js +1 -4
  17. package/dist/components/media/TrainingRoom.js +10 -8
  18. package/dist/components/media/VCRoomWorkspace.js +1 -1
  19. package/dist/components/navbars/PortalNavbar.js +14 -8
  20. package/dist/js/Calendar.js +2 -2
  21. package/dist/js/Windows.js +66 -0
  22. package/dist/view/security/ChangePasswordBasic.js +9 -3
  23. package/dist/view/security/ForgotPasswordBasic.js +13 -4
  24. package/dist/view/security/LoginBasic.js +27 -5
  25. package/dist/view/security/{LoginBusinessPortal.js → LoginInteractionPortal.js} +48 -40
  26. package/dist/view/security/ResetPasswordBasic.js +22 -5
  27. package/package.json +6 -1
  28. /package/dist/{BusinessPortalApp.css → InteractionPortalApp.css} +0 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ej2ReactRichtexteditor = require("@syncfusion/ej2-react-richtexteditor");
9
+
10
+ var React = _interopRequireWildcard(require("react"));
11
+
12
+ require("./DocumentTemplateDesignerComponent.css");
13
+
14
+ var _DocumentTemplatePlaceholderDialog = _interopRequireDefault(require("./DocumentTemplatePlaceholderDialog"));
15
+
16
+ var _mammoth = _interopRequireDefault(require("mammoth"));
17
+
18
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
23
+
24
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ const DocumentTemplateDesignerComponent = props => {
27
+ const {
28
+ contractTemplate,
29
+ uploadTrigger
30
+ } = props;
31
+ const [open, setOpen] = React.useState(false);
32
+ const [error, setError] = React.useState(null);
33
+ const [documentLoaded, setDocumentLoaded] = React.useState(false);
34
+ const fileInputRef = (0, React.useRef)(null);
35
+ const btnRef = (0, React.useRef)(null);
36
+ let rteObj;
37
+ let items = ['Bold', 'Italic', 'Underline', '|', 'Formats', '|', 'CreateLink', '|', {
38
+ template: '' + '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%"><div class="e-tbar-btn-text" style="font-weight: normal; font-size: inherit;"> Placeholders</div></button>',
39
+ undo: true,
40
+ click: onClick.bind(void 0),
41
+ tooltipText: 'Insert Placeholders'
42
+ }, '|', 'Undo', 'Redo'];
43
+ let toolbarSettings = {
44
+ items: items
45
+ };
46
+
47
+ function onInsert(holder) {
48
+ rteObj.executeCommand('insertText', holder);
49
+ }
50
+
51
+ function onClick() {
52
+ setOpen(true);
53
+ }
54
+
55
+ const handleFileChange = async event => {
56
+ const file = event.target.files[0];
57
+ setError(null);
58
+
59
+ if (file) {
60
+ if (file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
61
+ const reader = new FileReader();
62
+
63
+ reader.onload = async e => {
64
+ const arrayBuffer = e.target.result;
65
+
66
+ try {
67
+ const {
68
+ value
69
+ } = await _mammoth.default.convertToHtml({
70
+ arrayBuffer
71
+ });
72
+ rteObj.executeCommand('insertHTML', value);
73
+ } catch (error) {
74
+ setError('Error processing the file. Please ensure it is a valid .docx file.');
75
+ }
76
+ };
77
+
78
+ reader.readAsArrayBuffer(file);
79
+ } else {
80
+ setError('Unsupported file type. Please upload a .docx file.');
81
+ }
82
+ }
83
+ };
84
+
85
+ (0, React.useEffect)(() => {
86
+ if (uploadTrigger != null && btnRef.current) {
87
+ btnRef.current.click();
88
+ }
89
+ }, [uploadTrigger]);
90
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Button.default, {
91
+ style: {
92
+ display: 'none'
93
+ },
94
+ ref: btnRef,
95
+ variant: "contained",
96
+ component: "label"
97
+ }, "Load Contract", /*#__PURE__*/React.createElement("input", {
98
+ type: "file",
99
+ style: {
100
+ display: 'none'
101
+ },
102
+ onChange: handleFileChange,
103
+ accept: ".docx"
104
+ })), /*#__PURE__*/React.createElement(_ej2ReactRichtexteditor.RichTextEditorComponent, {
105
+ id: "defaultRTE",
106
+ ref: scope => {
107
+ rteObj = scope;
108
+ },
109
+ toolbarSettings: toolbarSettings
110
+ }, /*#__PURE__*/React.createElement(_ej2ReactRichtexteditor.Inject, {
111
+ services: [_ej2ReactRichtexteditor.HtmlEditor, _ej2ReactRichtexteditor.Toolbar, _ej2ReactRichtexteditor.Link, _ej2ReactRichtexteditor.Image, _ej2ReactRichtexteditor.QuickToolbar]
112
+ })), /*#__PURE__*/React.createElement(_DocumentTemplatePlaceholderDialog.default, {
113
+ open: open,
114
+ onClose: () => setOpen(false),
115
+ onInsertHandler: onInsert
116
+ }));
117
+ };
118
+
119
+ var _default = DocumentTemplateDesignerComponent;
120
+ exports.default = _default;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _core = require("@material-ui/core");
11
+
12
+ var _icons = require("@material-ui/icons");
13
+
14
+ require("./DocumentTemplateDesignerComponent.css");
15
+
16
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
17
+
18
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ const DocumentTemplatePlaceholderDialog = ({
21
+ open,
22
+ onClose,
23
+ onInsertHandler
24
+ }) => {
25
+ const [selectedIndex, setSelectedIndex] = (0, _react.useState)(null);
26
+ const placeholders = [{
27
+ title: 'Placeholder 1',
28
+ description: '{{placeholder_1}}'
29
+ }, {
30
+ title: 'Placeholder 2',
31
+ description: '{{placeholder_2}}'
32
+ }, {
33
+ title: 'Placeholder 3',
34
+ description: '{{placeholder_3}}'
35
+ }, {
36
+ title: 'Placeholder 4',
37
+ description: '{{placeholder_4}}'
38
+ }];
39
+ const {
40
+ palette
41
+ } = (0, _core.useTheme)();
42
+
43
+ const handleListItemClick = index => {
44
+ setSelectedIndex(index);
45
+ };
46
+
47
+ const handleInsert = () => {
48
+ if (selectedIndex !== null) {
49
+ console.log("Selected placeholder: ".concat(placeholders[selectedIndex].title));
50
+ onInsertHandler(placeholders[selectedIndex].description);
51
+ }
52
+
53
+ onClose();
54
+ };
55
+
56
+ return /*#__PURE__*/_react.default.createElement(_core.Dialog, {
57
+ open: open,
58
+ onClose: onClose,
59
+ fullWidth: true,
60
+ maxWidth: 'md'
61
+ }, /*#__PURE__*/_react.default.createElement(_core.DialogTitle, null, "Select a Placeholder"), /*#__PURE__*/_react.default.createElement(_core.DialogContent, null, /*#__PURE__*/_react.default.createElement("div", {
62
+ id: "customTbarDialog"
63
+ }, /*#__PURE__*/_react.default.createElement(_core.List, null, placeholders.map((placeholder, index) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
64
+ key: index
65
+ }, /*#__PURE__*/_react.default.createElement(_core.ListItem, {
66
+ button: true,
67
+ selected: selectedIndex === index,
68
+ onClick: () => handleListItemClick(index) // className="char_block"
69
+ ,
70
+ style: {
71
+ border: selectedIndex === index ? "1px solid ".concat(palette.primary.main) : null,
72
+ margin: '4px 0',
73
+ borderRadius: '4px'
74
+ }
75
+ }, /*#__PURE__*/_react.default.createElement(_core.ListItemAvatar, null, /*#__PURE__*/_react.default.createElement(_core.Avatar, null, /*#__PURE__*/_react.default.createElement(_icons.AddCircle, null))), /*#__PURE__*/_react.default.createElement(_core.ListItemText, {
76
+ primary: placeholder.title,
77
+ secondary: placeholder.description
78
+ })), index < placeholders.length - 1 && /*#__PURE__*/_react.default.createElement(_core.Divider, null)))))), /*#__PURE__*/_react.default.createElement(_core.DialogActions, null, /*#__PURE__*/_react.default.createElement(_core.Button, {
79
+ onClick: onClose,
80
+ color: "primary"
81
+ }, "Cancel"), /*#__PURE__*/_react.default.createElement(_core.Button, {
82
+ onClick: handleInsert,
83
+ color: "primary",
84
+ disabled: selectedIndex === null
85
+ }, "Insert")));
86
+ };
87
+
88
+ var _default = DocumentTemplatePlaceholderDialog;
89
+ exports.default = _default;
@@ -45,6 +45,8 @@ var _Notifications = _interopRequireDefault(require("@material-ui/icons/Notifica
45
45
 
46
46
  var _Person = _interopRequireDefault(require("@material-ui/icons/Person"));
47
47
 
48
+ var _Refresh = _interopRequireDefault(require("@material-ui/icons/Refresh"));
49
+
48
50
  var _Folder = _interopRequireDefault(require("@material-ui/icons/Folder"));
49
51
 
50
52
  var _AttachFile = _interopRequireDefault(require("@material-ui/icons/AttachFile"));
@@ -101,6 +103,12 @@ class Icon extends _react.Component {
101
103
  color: this.props.color
102
104
  }
103
105
  });
106
+ } else if (this.props.id === 'REFRESH') {
107
+ return /*#__PURE__*/_react.default.createElement(_Refresh.default, {
108
+ style: {
109
+ color: this.props.color
110
+ }
111
+ });
104
112
  } else if (this.props.id === 'SETTINGS') {
105
113
  return /*#__PURE__*/_react.default.createElement(_Settings.default, {
106
114
  style: {
@@ -0,0 +1,18 @@
1
+ .iframe_container {
2
+ padding: 0;
3
+ height: 100%;
4
+ width: 100%;
5
+ }
6
+
7
+ .portlet-iframe {
8
+ overflow: scroll;
9
+ border: 0;
10
+ width: 100%;
11
+ height: 100%;
12
+ transform: scale(1);
13
+ -ms-transform-origin: 0 0;
14
+ -moz-transform-origin: 0 0;
15
+ -o-transform-origin: 0 0;
16
+ -webkit-transform-origin: 0 0;
17
+ transform-origin: 0 0;
18
+ }
@@ -11,13 +11,19 @@ var _Utils = _interopRequireDefault(require("../Utils"));
11
11
 
12
12
  var _Observable = _interopRequireDefault(require("../event/Observable"));
13
13
 
14
+ require("./Portlet.css");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
16
18
  const Portlet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef((props, ref) => {
19
+ var _props$config$attribu;
20
+
17
21
  const [url, setUrl] = _react.default.useState(null);
18
22
 
19
23
  const [visible, setVisible] = _react.default.useState(true);
20
24
 
25
+ const urlTemp = _react.default.useRef(null);
26
+
21
27
  _react.default.useEffect(() => {
22
28
  props.handle.api = api();
23
29
  });
@@ -36,6 +42,13 @@ const Portlet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.fo
36
42
  };
37
43
  }, []);
38
44
 
45
+ _react.default.useEffect(() => {
46
+ if (url === 'reload') {
47
+ setUrl(urlTemp.current);
48
+ urlTemp.current = null;
49
+ }
50
+ }, [url]);
51
+
39
52
  const api = () => {
40
53
  return {
41
54
  get id() {
@@ -52,6 +65,11 @@ const Portlet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.fo
52
65
 
53
66
  refresh() {},
54
67
 
68
+ reload() {
69
+ urlTemp.current = url;
70
+ setUrl('reload');
71
+ },
72
+
55
73
  getChildren: () => {
56
74
  return [];
57
75
  },
@@ -65,12 +83,11 @@ const Portlet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.fo
65
83
 
66
84
  return /*#__PURE__*/_react.default.createElement("div", {
67
85
  ref: ref,
86
+ className: 'iframe_container',
68
87
  style: {
69
- display: visible ? 'block' : 'none',
70
- width: '100%',
71
- height: '100%'
88
+ display: visible ? 'block' : 'none'
72
89
  }
73
- }, !url && /*#__PURE__*/_react.default.createElement("div", {
90
+ }, (!url || url === 'reload') && /*#__PURE__*/_react.default.createElement("div", {
74
91
  className: "centered-flex-box w-100 h-100",
75
92
  style: {
76
93
  fontSize: '20px'
@@ -78,12 +95,9 @@ const Portlet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.fo
78
95
  }, "Loading..."), url && /*#__PURE__*/_react.default.createElement("iframe", {
79
96
  src: url,
80
97
  title: "eProcurement",
81
- style: {
82
- width: '100%',
83
- height: '99%',
84
- borderWidth: '0'
85
- },
86
- allow: "camera;microphone"
98
+ className: 'portlet-iframe',
99
+ allow: (_props$config$attribu = props.config.attributes) === null || _props$config$attribu === void 0 ? void 0 : _props$config$attribu.allow,
100
+ id: props.config.id
87
101
  }));
88
102
  }));
89
103
 
@@ -19,16 +19,16 @@ var _Workspace = _interopRequireDefault(require("./components/portal/Workspace")
19
19
 
20
20
  var _Observable = _interopRequireDefault(require("../../event/Observable"));
21
21
 
22
+ var _RestUtils = require("../../RestUtils");
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
 
24
26
  let ps;
25
27
 
26
28
  const BusinessPortalAppDashboard = /*#__PURE__*/_react.default.memo(props => {
27
- const [loading, setLoading] = _react.default.useState(true);
28
-
29
29
  const [routes, setRoutes] = _react.default.useState([]);
30
30
 
31
- const [currentModuleMenu, setCurrentModuleMenu] = _react.default.useState(null);
31
+ const [currentModule, setCurrentModule] = _react.default.useState(null);
32
32
 
33
33
  const [logo, setLogo] = _react.default.useState("data:image/png;base64," + props.logo);
34
34
 
@@ -57,73 +57,36 @@ const BusinessPortalAppDashboard = /*#__PURE__*/_react.default.memo(props => {
57
57
  return newItems;
58
58
  };
59
59
 
60
- const getViews = (menus, level) => {
61
- let newViews = [];
62
-
63
- for (let i = 0; i < menus.length; i++) {
64
- _Observable.default.clearComponentEventListeners(menus[i].id);
65
-
66
- let createView = {};
67
- createView.name = menus[i].attributes.label;
68
- createView.mini = "SS";
69
- createView.layout = "/admin";
70
- createView.level = level;
71
- createView.item = menus[i];
72
-
73
- if (menus[i].items && menus[i].items.length > 0) {
74
- createView.collapse = true;
75
- createView.state = menus[i].id + "Collapse";
76
- createView.views = getItems(menus[i].items, level + 1);
77
- }
78
-
79
- newViews.push(createView);
80
- }
81
-
82
- return newViews;
83
- };
84
-
85
- _react.default.useEffect(() => {
86
- if (!_Utils.default.isNull(currentModuleMenu) && !_Utils.default.isNull(props.settings.menu) && !_Utils.default.isNull(props.settings.menu.menus)) {
87
- let newRoutes = [];
88
- let currentMenu = null;
89
-
90
- for (const menu of props.settings.menu.menus) {
91
- if (menu.id === currentModuleMenu) {
92
- currentMenu = menu;
93
- break;
94
- }
95
- }
96
-
97
- if (currentMenu != null) {
98
- for (const item of currentMenu.items) {
99
- _Observable.default.clearComponentEventListeners(item.id);
100
-
101
- let newRoute = {};
102
- newRoute.name = item.attributes.label;
103
-
104
- if (!_Utils.default.isNull(item.icon)) {
105
- newRoute.icon = item.icon;
60
+ const getMenu = path => {
61
+ return new Promise(resolve => {
62
+ let service = {
63
+ url: '/ui/api/v1/menu/get',
64
+ parameters: [{
65
+ name: 'id',
66
+ value: path,
67
+ httpParameterType: 'QUERY_PARAMETER'
68
+ }, {
69
+ name: 'version',
70
+ value: 1.0,
71
+ httpParameterType: 'QUERY_PARAMETER'
72
+ }],
73
+ contentType: 'application/json'
74
+ };
75
+ (0, _RestUtils.invokeRest)(service, {
76
+ api: {
77
+ get id() {
78
+ return 'portal-dashboard';
106
79
  }
107
80
 
108
- newRoute.layout = "/admin";
109
- newRoute.level = 0;
110
- newRoute.isParent = false;
111
- newRoute.item = item;
112
- newRoutes.push(newRoute);
113
-
114
- if (!_Utils.default.isNull(item.items) && item.items.length > 0) {
115
- newRoute.collapse = false;
116
- newRoute.state = item.name + "Collapse";
117
- newRoute.views = getViews(item.items, 0);
118
- }
119
81
  }
120
- }
121
-
122
- setRoutes(newRoutes);
123
- }
124
-
125
- setLoading(false);
126
- }, [currentModuleMenu]);
82
+ }, 'portal-dashboard', result => {
83
+ resolve(result.menus);
84
+ }, e => {
85
+ console.error(e);
86
+ resolve(null);
87
+ }, null);
88
+ });
89
+ };
127
90
 
128
91
  _react.default.useEffect(() => {
129
92
  document.body.classList.add("white-content");
@@ -136,7 +99,7 @@ const BusinessPortalAppDashboard = /*#__PURE__*/_react.default.memo(props => {
136
99
  window.removeEventListener("scroll", showNavbarButton); //dispatch(actionCreators.setSecondaryThemeColor(props.settings.systemProfileDto.secondCorporateBrandColor));
137
100
 
138
101
  if (!_Utils.default.isNull(props.settings)) {
139
- setCurrentModuleMenu("homeMenu");
102
+ setCurrentModule("home");
140
103
  }
141
104
  }, [props.settings]);
142
105
 
@@ -148,7 +111,7 @@ const BusinessPortalAppDashboard = /*#__PURE__*/_react.default.memo(props => {
148
111
  }
149
112
  };
150
113
 
151
- return loading ? /*#__PURE__*/_react.default.createElement("div", null, "Loading...") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
114
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
152
115
  className: "wrapper",
153
116
  style: {
154
117
  height: '100%',
@@ -160,9 +123,10 @@ const BusinessPortalAppDashboard = /*#__PURE__*/_react.default.memo(props => {
160
123
  logoutCallBack: props.logoutCallBack,
161
124
  appLogoPath: props.appLogoPath,
162
125
  avatar: props.avatar,
163
- moduleMenus: props.settings.menu.menus,
126
+ currentModule: currentModule,
127
+ moduleMenus: props.settings.modules,
164
128
  moduleChangeHandler: selected => {
165
- setCurrentModuleMenu(selected);
129
+ setCurrentModule(selected);
166
130
  },
167
131
  logo: {
168
132
  outterLink: "",
@@ -63,6 +63,8 @@ var _Switch = _interopRequireDefault(require("./Switch"));
63
63
 
64
64
  var _IconField = _interopRequireDefault(require("./IconField"));
65
65
 
66
+ var _DocumentTemplateDesigner = _interopRequireDefault(require("../DocumentTemplateDesigner"));
67
+
66
68
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
67
69
 
68
70
  const FieldSet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef((props, ref) => {
@@ -356,6 +358,16 @@ const FieldSet = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.f
356
358
  valueChangeHandler: () => fireChangeEvent(),
357
359
  values: props.values,
358
360
  viewId: props.viewId
361
+ }) : component.fieldType === 'DOCUMENT_TEMPLATE_DESIGNER' ? /*#__PURE__*/_react.default.createElement(_DocumentTemplateDesigner.default, {
362
+ keyHandler: props.keyHandler,
363
+ config: component,
364
+ form: props.form,
365
+ parentId: props.parentId,
366
+ handle: createComponentHandle(component),
367
+ ref: /*#__PURE__*/_react.default.createRef(),
368
+ valueChangeHandler: () => fireChangeEvent(),
369
+ values: props.values,
370
+ viewId: props.viewId
359
371
  }) : /*#__PURE__*/_react.default.createElement("div", null, 'Unsupported fieldset component type ' + component.fieldType + ' - ' + component.id);
360
372
  }
361
373
 
@@ -49,6 +49,8 @@ var _Portlet = _interopRequireDefault(require("../Portlet"));
49
49
 
50
50
  var _TabPanel = _interopRequireDefault(require("../TabPanel"));
51
51
 
52
+ var _DocumentTemplateDesigner = _interopRequireDefault(require("../DocumentTemplateDesigner"));
53
+
52
54
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
55
 
54
56
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -252,6 +254,12 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
252
254
  ref: /*#__PURE__*/_react.default.createRef(),
253
255
  key: index,
254
256
  viewId: props.viewId
257
+ }) : component.type === 'documentTemplateDesigner' ? /*#__PURE__*/_react.default.createElement(_DocumentTemplateDesigner.default, {
258
+ config: component,
259
+ handle: createComponentHandle(component),
260
+ ref: /*#__PURE__*/_react.default.createRef(),
261
+ key: index,
262
+ viewId: props.viewId
255
263
  }) : /*#__PURE__*/_react.default.createElement("div", null, 'Unsupported component type ' + component.type);
256
264
  }
257
265
  }
@@ -40,15 +40,12 @@ const ViewContainer = props => {
40
40
 
41
41
  let view = _ApplicationManager.default.getView(viewId);
42
42
 
43
- let element = viewId === 'dashboard' ? /*#__PURE__*/_react.default.createElement(_Dashboard.default, {
44
- ref: /*#__PURE__*/_react.default.createRef()
45
- }) : !_Utils.default.isNull(view) && !_Utils.default.isNull(view.config) ? /*#__PURE__*/_react.default.createElement(_View.View, {
43
+ let element = viewId === 'dashboard' ? props.dashboard : !_Utils.default.isNull(view) && !_Utils.default.isNull(view.config) ? /*#__PURE__*/_react.default.createElement(_View.View, {
46
44
  config: view.config,
47
45
  parameters: view.parameters,
48
46
  ref: /*#__PURE__*/_react.default.createRef(),
49
47
  handle: view.handle
50
48
  }) : null;
51
- console.log("\n\n\n\nLOADING : " + viewId, element);
52
49
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, element);
53
50
  };
54
51
 
@@ -116,7 +116,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
116
116
  break;
117
117
 
118
118
  case _VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED:
119
- onAVSettingsChange(be.payload);
119
+ onAVSettingsChange(be === null || be === void 0 ? void 0 : be.payload);
120
120
  break;
121
121
 
122
122
  case _VCEventType.VCEventType.SYSTEM_EVENT:
@@ -169,14 +169,16 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
169
169
  };
170
170
 
171
171
  const onAVSettingsChange = payload => {
172
- let participant = participants.find(p => p.userId === payload.userId);
172
+ if (payload) {
173
+ let participant = participants.find(p => p.userId === payload.userId);
173
174
 
174
- if (participant) {
175
- participant.audioMuted = payload.audioMuted;
176
- participant.videoMuted = payload.videoMuted;
177
- }
175
+ if (participant) {
176
+ participant.audioMuted = payload.audioMuted;
177
+ participant.videoMuted = payload.videoMuted;
178
+ }
178
179
 
179
- _VCEventManager.default.fireEvent(_VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED, payload);
180
+ _VCEventManager.default.fireEvent(_VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED, payload);
181
+ }
180
182
  };
181
183
 
182
184
  function emitAVSettingsChange() {
@@ -305,7 +307,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
305
307
  setDisplayState(initialContext ? initialContext.windowDisplayState : 'MAXIMIZED');
306
308
  });
307
309
 
308
- _VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.REQUEST_TO_JOIN_MEETING, _VCEventType.VCEventType.USER_JOINED, _VCEventType.VCEventType.USER_LEFT_MEETING, _VCEventType.VCEventType.SYSTEM_EVENT, _VCEventType.VCEventType.SOCKET_CONNECT, _VCEventType.VCEventType.SOCKET_DISCONNECT, _VCEventType.VCEventType.RAISE_HAND, _VCEventType.VCEventType.LOWER_HAND, _VCEventType.VCEventType.PEER_DISCONNECT, _VCEventType.VCEventType.CONSUMER_TRANSPORT_FAILED, _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED, _VCEventType.VCEventType.SHARING_STOPPED, _VCEventType.VCEventType.END_SESSION);
310
+ _VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.REQUEST_TO_JOIN_MEETING, _VCEventType.VCEventType.USER_JOINED, _VCEventType.VCEventType.USER_LEFT_MEETING, _VCEventType.VCEventType.SYSTEM_EVENT, _VCEventType.VCEventType.SOCKET_CONNECT, _VCEventType.VCEventType.SOCKET_DISCONNECT, _VCEventType.VCEventType.RAISE_HAND, _VCEventType.VCEventType.LOWER_HAND, _VCEventType.VCEventType.PEER_DISCONNECT, _VCEventType.VCEventType.CONSUMER_TRANSPORT_FAILED, _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED, _VCEventType.VCEventType.SHARING_STOPPED, _VCEventType.VCEventType.END_SESSION, _VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED);
309
311
 
310
312
  document.addEventListener('sideBarToggleEvent', handleSidebarToggle);
311
313
 
@@ -420,7 +420,7 @@ const VCRoomWorkspace = props => {
420
420
 
421
421
  setupGrid(inViewParticipants);
422
422
  }
423
- }, [props.participants, props.currentUserFullName]);
423
+ }, [props.participants, props.currentUserFullName, props.displayState]);
424
424
 
425
425
  const setupGrid = () => {
426
426
  let inViewGrid = [];
@@ -43,12 +43,18 @@ const PortalNavbar = /*#__PURE__*/_react.default.memo(props => {
43
43
 
44
44
  const [avatarUrl, setAvatarUrl] = _react.default.useState(props.avatar);
45
45
 
46
- const [selectedButton, setSelectedButton] = _react.default.useState(props.moduleMenus ? props.moduleMenus[0].id : null);
46
+ const [selectedButton, setSelectedButton] = _react.default.useState(null);
47
47
 
48
48
  const initializing = _react.default.useRef(true);
49
49
 
50
50
  let keyCounter = 0;
51
51
 
52
+ _react.default.useEffect(() => {
53
+ var _props$currentModule;
54
+
55
+ setSelectedButton((_props$currentModule = props.currentModule) === null || _props$currentModule === void 0 ? void 0 : _props$currentModule.name);
56
+ }, [props.currentModule]);
57
+
52
58
  _react.default.useEffect(() => {
53
59
  if (initializing.current) {
54
60
  let avatarListener = {};
@@ -62,7 +68,7 @@ const PortalNavbar = /*#__PURE__*/_react.default.memo(props => {
62
68
 
63
69
  initializing.current = false;
64
70
  }
65
- });
71
+ }, []);
66
72
 
67
73
  const launchView = path => {
68
74
  let actionConfig = {};
@@ -98,7 +104,7 @@ const PortalNavbar = /*#__PURE__*/_react.default.memo(props => {
98
104
  }
99
105
  }, /*#__PURE__*/_react.default.createElement("div", {
100
106
  className: "row"
101
- }, props.moduleMenus ? props.moduleMenus.map(menu => {
107
+ }, props.modules ? props.modules.map(module => {
102
108
  return /*#__PURE__*/_react.default.createElement("div", {
103
109
  className: "col-*-*",
104
110
  style: {
@@ -110,7 +116,7 @@ const PortalNavbar = /*#__PURE__*/_react.default.memo(props => {
110
116
  style: {
111
117
  width: 80,
112
118
  height: 48,
113
- borderBottom: selectedButton === menu.id ? '2px solid ' + _colors.grey800 : 'none',
119
+ borderBottom: selectedButton === module.name ? '2px solid ' + _colors.grey800 : 'none',
114
120
  borderRadius: 0
115
121
  },
116
122
  "aria-haspopup": "true",
@@ -118,16 +124,16 @@ const PortalNavbar = /*#__PURE__*/_react.default.memo(props => {
118
124
  label: classes.iconButtonLabel
119
125
  },
120
126
  onClick: () => {
121
- setSelectedButton(menu.id);
122
- props.moduleChangeHandler(menu.id);
127
+ setSelectedButton(module.name);
128
+ props.moduleChangeHandler(module.name);
123
129
  }
124
130
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
125
- id: menu.icon
131
+ id: module.icon
126
132
  }), /*#__PURE__*/_react.default.createElement("div", {
127
133
  style: {
128
134
  fontSize: '14px'
129
135
  }
130
- }, _Utils.default.getComponentAttribute(menu, 'label', ''))));
136
+ }, _Utils.default.getComponentAttribute(module, 'label', ''))));
131
137
  }) : null)), /*#__PURE__*/_react.default.createElement("div", {
132
138
  className: "col-*-*",
133
139
  style: {