@agilemotion/oui-react-js 1.3.9 → 1.4.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 (93) hide show
  1. package/dist/{ApplicationContext.js → ApplicationManager.js} +196 -74
  2. package/dist/BasicApp.js +66 -63
  3. package/dist/BasicAppHome.js +85 -118
  4. package/dist/BusinessPortalAppHome.js +9 -15
  5. package/dist/DynamicJS.js +7 -3
  6. package/dist/RestUtils.js +13 -14
  7. package/dist/Utils.js +15 -9
  8. package/dist/WithRouter.js +34 -0
  9. package/dist/assets/scss/black-dashboard-react/custom/_sidebar-and-main-panel.scss +1 -1
  10. package/dist/components/AlertBar.js +1 -1
  11. package/dist/components/Button.js +34 -25
  12. package/dist/components/Calendar.js +9 -45
  13. package/dist/components/DataGrid.js +49 -18
  14. package/dist/components/DataGridColumn.js +1 -1
  15. package/dist/components/DataGridFilter.js +2 -2
  16. package/dist/components/Dialog.js +1 -1
  17. package/dist/components/DocumentViewer.js +5 -5
  18. package/dist/components/FileThumb.js +30 -19
  19. package/dist/components/Graph.js +10 -2
  20. package/dist/components/GraphNode.js +1 -1
  21. package/dist/components/HtmlPanel.js +10 -5
  22. package/dist/components/Icon.js +8 -0
  23. package/dist/components/PopupView.js +1 -1
  24. package/dist/components/Portlet.js +100 -0
  25. package/dist/components/SignaturePanel.js +1 -1
  26. package/dist/components/SocketManager.js +2 -2
  27. package/dist/components/StepperTitleBar.js +4 -4
  28. package/dist/components/TabPanel.js +11 -3
  29. package/dist/components/TableCellContent.js +1 -1
  30. package/dist/components/TemplateDesigner.js +11 -11
  31. package/dist/components/TitleBar.js +4 -3
  32. package/dist/components/Toolbar.js +42 -11
  33. package/dist/components/Tree.js +3 -3
  34. package/dist/components/dashboard/BasicBusinessAppDashboard.js +9 -7
  35. package/dist/components/dashboard/components/Header.js +1 -1
  36. package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.css +7 -0
  37. package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.js +74 -72
  38. package/dist/components/form/AutoComplete.js +31 -30
  39. package/dist/components/form/BaseField.js +38 -26
  40. package/dist/components/form/DatePicker.js +5 -2
  41. package/dist/components/form/FieldSet.js +11 -19
  42. package/dist/components/form/Form.js +24 -16
  43. package/dist/components/form/ImageEditor.js +4 -4
  44. package/dist/components/form/MultiFileUploadField.js +15 -14
  45. package/dist/components/form/RadioGroup.js +10 -11
  46. package/dist/components/form/Section.js +10 -0
  47. package/dist/components/form/TimePicker.js +1 -0
  48. package/dist/components/form/UploadField.js +115 -108
  49. package/dist/components/layout/Layout.js +65 -12
  50. package/dist/components/layout/View.css +1 -0
  51. package/dist/components/layout/View.js +20 -23
  52. package/dist/components/layout/ViewContainer.css +3 -0
  53. package/dist/components/layout/ViewContainer.js +59 -0
  54. package/dist/components/layout/ViewPort.js +50 -80
  55. package/dist/components/layout/Window.css +18 -0
  56. package/dist/components/layout/Window.js +287 -0
  57. package/dist/components/layout/WindowViewPort.js +71 -0
  58. package/dist/components/media/MediaSoupHelper.js +1 -1
  59. package/dist/components/media/Toolbar.css +18 -3
  60. package/dist/components/media/Toolbar.js +80 -56
  61. package/dist/components/media/TrainingRoom.js +97 -20
  62. package/dist/components/media/VCRoom.js +1 -1
  63. package/dist/components/media/VCRoomParticipant.js +17 -15
  64. package/dist/components/media/VCRoomRecorder.js +223 -0
  65. package/dist/components/media/VCRoomWorkspace.js +169 -156
  66. package/dist/components/media/VideoPlayer.css +10 -0
  67. package/dist/components/media/VideoPlayer.js +86 -0
  68. package/dist/components/menu/MenuButton.js +22 -6
  69. package/dist/components/menu/MenuLink.js +13 -10
  70. package/dist/components/navbars/HomeNavbar.js +2 -2
  71. package/dist/components/navbars/PortalNavbar.js +3 -3
  72. package/dist/components/signatures/AgilitySignaturePanel.js +4 -4
  73. package/dist/components/signatures/ImageSignatureInput.js +4 -4
  74. package/dist/components/signatures/SignatureInput.js +4 -4
  75. package/dist/components/signatures/SignatureTemplateDesigner.js +6 -6
  76. package/dist/event/ActionHandlers.js +3 -3
  77. package/dist/event/Observable.js +33 -15
  78. package/dist/event/RouteActionHandler.js +38 -29
  79. package/dist/event/ServiceCallActionHandler.js +4 -2
  80. package/dist/event/SignalGraphActionHandler.js +2 -2
  81. package/dist/js/Calendar.js +220 -0
  82. package/dist/js/Media.js +2 -2
  83. package/dist/view/Dashboard.js +34 -28
  84. package/dist/view/Views.js +30 -0
  85. package/dist/view/security/ChangePasswordBasic.js +6 -4
  86. package/dist/view/security/ForgotPassword.js +4 -4
  87. package/dist/view/security/ForgotPasswordBasic.js +4 -4
  88. package/dist/view/security/Login.js +4 -4
  89. package/dist/view/security/LoginBasic.js +5 -5
  90. package/dist/view/security/LoginBusinessPortal.js +4 -4
  91. package/dist/view/security/ResetPassword.js +4 -4
  92. package/dist/view/security/ResetPasswordBasic.js +6 -4
  93. package/package.json +8 -14
@@ -17,7 +17,7 @@ var _DocumentViewer = _interopRequireDefault(require("../DocumentViewer"));
17
17
 
18
18
  var _Utils = _interopRequireDefault(require("../../Utils"));
19
19
 
20
- var _ApplicationContext = _interopRequireDefault(require("./../../ApplicationContext"));
20
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
21
21
 
22
22
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
23
23
 
@@ -25,6 +25,12 @@ var _Icon = _interopRequireDefault(require("../Icon"));
25
25
 
26
26
  var _reactPromiseTracker = require("react-promise-tracker");
27
27
 
28
+ var _Event = _interopRequireDefault(require("../../event/Event"));
29
+
30
+ var _Observable = _interopRequireDefault(require("../../event/Observable"));
31
+
32
+ var _EventType = _interopRequireDefault(require("../../event/EventType"));
33
+
28
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
35
 
30
36
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -45,9 +51,10 @@ const status = response => {
45
51
  if (response.ok) {
46
52
  return Promise.resolve(response);
47
53
  } else {
48
- let error = new Error(response.statusText);
49
- error.code = response.status;
50
- return Promise.reject(error);
54
+ return Promise.reject({
55
+ code: response.status,
56
+ message: response.statusText
57
+ });
51
58
  }
52
59
  };
53
60
 
@@ -60,12 +67,10 @@ const location = window.location.protocol + "//" + window.location.hostname;
60
67
  const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef((props, ref) => {
61
68
  const [viewerFile, setViewerFile] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? props.initialFile : null);
62
69
 
63
- const [valueMode, setValueMode] = _react.default.useState(_Utils.default.getComponentAttribute(props.config, 'valueMode', 'base64'));
70
+ const [payloadStorageMode, setPayloadStorageMode] = _react.default.useState(props.config.payloadStorageMode || 'base64');
64
71
 
65
72
  const [files, setFiles] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? [props.initialFile] : null);
66
73
 
67
- const [cacheId, setCacheId] = _react.default.useState(!_Utils.default.isNull(props.base.value) ? props.base.value.documentRepositoryCacheId : null);
68
-
69
74
  const [loading, setLoading] = _react.default.useState(true);
70
75
 
71
76
  const [nullable] = _react.default.useState(_Utils.default.isNull(props.config.validator) || props.config.validator.nullable === true);
@@ -86,22 +91,104 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
86
91
 
87
92
  const [errorMessage, setErrorMessage] = _react.default.useState("");
88
93
 
94
+ const cacheId = _react.default.useRef(!_Utils.default.isNull(props.base.value) ? props.base.value.documentRepositoryCacheId : null);
95
+
89
96
  const base = props.base;
90
97
 
91
98
  _react.default.useEffect(() => {
92
- setViewerFile(props.initialFile);
93
- }, [props.initialFile]);
99
+ return () => {
100
+ if (cacheId.current) {//remove().catch((e) => {});
101
+ }
102
+ };
103
+ }, []);
94
104
 
95
105
  _react.default.useEffect(() => {
96
- if (!_Utils.default.isNull(props.valueMode)) {
97
- setValueMode(props.valueMode);
98
- }
99
- }, [props.valueMode]);
106
+ setViewerFile(props.initialFile);
107
+ }, [props.initialFile]);
100
108
 
101
109
  const handleViewerLoad = numPages => {
102
110
  setLoading(false);
103
111
  };
104
112
 
113
+ const upload = (metadata, file, reader) => {
114
+ let uploadUrl = _Utils.default.getComponentAttribute(props.config, 'uploadUrl', null);
115
+
116
+ if (uploadUrl === null) {
117
+ uploadUrl = _ApplicationManager.default.getContextRoot() + "/docs/api/v1/manager/upload/save";
118
+ }
119
+
120
+ let payloadStorageMode = props.config.payloadStorageMode;
121
+
122
+ if (payloadStorageMode === 'post') {
123
+ const accessToken = sessionStorage.getItem("accessToken");
124
+ const idToken = sessionStorage.getItem("idToken");
125
+ let data = new FormData();
126
+ metadata.correlationId = props.viewId + "." + props.config.id;
127
+ data.append("metadata", JSON.stringify(metadata));
128
+ data.append("file", file);
129
+ let fetchConfig = {
130
+ method: 'POST',
131
+ headers: {
132
+ 'Accept': 'application/json',
133
+ 'Authorization': 'Bearer ' + accessToken,
134
+ 'idToken': idToken
135
+ },
136
+ body: data
137
+ };
138
+ let url = location + uploadUrl;
139
+ (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
140
+ metadata.documentRepositoryId = !_Utils.default.isNull(base.value) ? base.value.documentRepositoryId : null;
141
+ metadata.documentRepositoryCacheId = data;
142
+ cacheId.current = data;
143
+ base.handleValueChange(metadata);
144
+ }).catch(e => {
145
+ if (e.code === 401) {
146
+ _ApplicationManager.default.clear();
147
+
148
+ _ApplicationManager.default.getApplicationHistory().push('/login');
149
+ }
150
+
151
+ let message = {
152
+ messageType: 'ERROR',
153
+ message: 'An error has accurred while uploading file'
154
+ };
155
+ let event = new _Event.default(_ApplicationManager.default, props.viewId, message);
156
+
157
+ _Observable.default.fireEvent(_EventType.default.MESSAGE_ARRIVED, event);
158
+ }));
159
+ } else {
160
+ metadata.payload = reader.result;
161
+ base.handleValueChange(metadata);
162
+ }
163
+ };
164
+
165
+ const remove = () => {
166
+ return new Promise((resolve, reject) => {
167
+ const accessToken = sessionStorage.getItem("accessToken");
168
+ const idToken = sessionStorage.getItem("idToken");
169
+ let fetchConfig = {
170
+ method: 'GET',
171
+ headers: {
172
+ 'Accept': 'application/json',
173
+ 'Authorization': 'Bearer ' + accessToken,
174
+ 'idToken': idToken
175
+ }
176
+ };
177
+ let url = location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/upload/remove/' + cacheId.current;
178
+ (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(() => {
179
+ resolve();
180
+ }).catch(e => {
181
+ if (e.code === 401) {
182
+ _ApplicationManager.default.clear();
183
+
184
+ _ApplicationManager.default.getApplicationHistory().push('/login');
185
+ } else {
186
+ reject(e);
187
+ }
188
+ }));
189
+ });
190
+ };
191
+
105
192
  const handleChange = () => event => {
106
193
  let files = event.target.files;
107
194
  var allFiles = [];
@@ -139,44 +226,6 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
139
226
  }
140
227
  };
141
228
 
142
- const upload = (metadata, file, uploadUrl) => {
143
- let uploadMode = _Utils.default.getComponentAttribute(props.config, "uploadMode", "POST");
144
-
145
- if (uploadMode === 'POST') {
146
- const accessToken = sessionStorage.getItem("accessToken");
147
- const idToken = sessionStorage.getItem("idToken");
148
- let data = new FormData();
149
- metadata.correlationId = props.viewId + "." + props.config.id;
150
- data.append("metadata", JSON.stringify(metadata));
151
- data.append("file", file);
152
- let fetchConfig = {
153
- method: 'POST',
154
- headers: {
155
- 'Accept': 'application/json',
156
- 'Authorization': 'Bearer ' + accessToken,
157
- 'idToken': idToken
158
- },
159
- body: data
160
- };
161
- let url = location + uploadUrl;
162
- (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
163
- metadata.documentRepositoryId = !_Utils.default.isNull(base.value) ? base.value.documentRepositoryId : null;
164
- metadata.documentRepositoryCacheId = data;
165
- setCacheId(data);
166
- base.handleValueChange(metadata);
167
- }).catch(e => {
168
- if (e.code === 401) {
169
- _ApplicationContext.default.clear();
170
-
171
- _ApplicationContext.default.getApplicationHistory().push('/login');
172
- }
173
- }));
174
- } else {
175
- metadata.payloadBase64 = reader.result;
176
- base.handleValueChange(metadata);
177
- }
178
- };
179
-
180
229
  reader.onloadend = () => {
181
230
  if (!_Utils.default.isNull(props.form)) {
182
231
  let fileMetaData = {};
@@ -189,8 +238,8 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
189
238
  fileMetaData.documentRepositoryId = base.value.documentRepositoryId;
190
239
  }
191
240
 
192
- if ('base64' === valueMode) {
193
- fileMetaData.url = allFiles[0].base64;
241
+ if ('base64' === payloadStorageMode) {
242
+ fileMetaData.payload = allFiles[0].base64;
194
243
  base.handleValueChange(fileMetaData);
195
244
  } else {
196
245
  fileMetaData.correlationId = props.config.id;
@@ -199,13 +248,14 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
199
248
  file.correlationId = fileMetaData.correlationId;
200
249
  file.content = allFiles[0].file;
201
250
 
202
- let uploadUrl = _Utils.default.getComponentAttribute(props.config, 'uploadUrl', null);
203
-
204
- if (uploadUrl === null) {
205
- uploadUrl = "/docs/manager/upload/save";
251
+ if (cacheId.current) {
252
+ remove().then(() => {
253
+ cacheId.current = null;
254
+ upload(fileMetaData, allFiles[0].file, reader);
255
+ }).catch(e => {});
256
+ } else {
257
+ upload(fileMetaData, allFiles[0].file, reader);
206
258
  }
207
-
208
- upload(fileMetaData, allFiles[0].file, uploadUrl);
209
259
  }
210
260
  }
211
261
  };
@@ -242,7 +292,7 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
242
292
  backgroundColor: 'transparent',
243
293
  border: base.hasError ? "1px solid #f44336" : null,
244
294
  color: base.hasError ? "#f44336" : null,
245
- backgroundImage: !_Utils.default.isNull(viewerFile) ? "url(".concat(viewerFile.base64, ")") : !_Utils.default.isNull(base.value) ? "url(".concat(location + _ApplicationContext.default.getContextRoot() + '/docs/api/v1/manager/download/' + base.value.documentRepositoryId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken"), ")") : "url(".concat(require('./' + _Utils.default.getComponentAttribute(props.config, 'defaultImage', 'default-avatar.png')), ")")
295
+ backgroundImage: !_Utils.default.isNull(viewerFile) ? "url(".concat(viewerFile.base64, ")") : !_Utils.default.isNull(base.value) ? "url(".concat(location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + base.value.documentRepositoryId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken"), ")") : "url(".concat(require('./' + _Utils.default.getComponentAttribute(props.config, 'defaultImage', 'default-avatar.png')), ")")
246
296
  }
247
297
  })), base.hasError ? /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
248
298
  style: {
@@ -266,7 +316,7 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
266
316
  padding: "0 8px"
267
317
  }
268
318
  }, base.errorMessage)) : null), /*#__PURE__*/_react.default.createElement("label", null, !_Utils.default.isNull(base.value) ? _Utils.default.isNull(base.value.id) ? base.value.name : /*#__PURE__*/_react.default.createElement("a", {
269
- href: location + _ApplicationContext.default.getContextRoot() + '/docs/api/v1/manager/download/' + base.value.documentRepositoryId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken"),
319
+ href: location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + base.value.documentRepositoryId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken"),
270
320
  target: '_blank'
271
321
  }, base.value.name) : null), !base.disabled && nullable && base.value ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
272
322
  "aria-controls": "menu-list-grow",
@@ -275,6 +325,10 @@ const DocumentUpload = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.def
275
325
  onClick: () => {
276
326
  base.handleValueChange(null);
277
327
  document.getElementById("contained-button-file-".concat(props.config.id)).value = null;
328
+
329
+ if (cacheId.current) {
330
+ remove().then(() => cacheId.current = null).catch(e => {});
331
+ }
278
332
  }
279
333
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
280
334
  id: 'DELETE'
@@ -296,53 +350,6 @@ const UploadField = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defaul
296
350
  return /*#__PURE__*/_react.default.createElement(_BaseField.BaseField, _extends({}, props, {
297
351
  handle: props.handle,
298
352
  valueParser: (value, inbound) => {
299
- if (inbound) {
300
- clearTrigger.current = !clearTrigger.current;
301
-
302
- if (!_Utils.default.isNull(value)) {
303
- let val = value; // TODO : Support multiple file upload
304
-
305
- if (_Utils.default.getComponentAttribute(props.config, 'multiple', false)) {
306
- if (typeof value.length !== 'undefined' && value.length > 0) {
307
- val = value[0];
308
- } else {
309
- if (value.documentRepositoryId) {
310
- return value;
311
- }
312
-
313
- return null;
314
- }
315
- }
316
-
317
- if (val.map) {
318
- val = val.map;
319
- }
320
-
321
- let fileMetaData = {};
322
- fileMetaData.name = !_Utils.default.isNull(val.label) ? val.label : val.name;
323
- fileMetaData.id = val.id;
324
- fileMetaData.type = val.type;
325
- fileMetaData.size = val.size;
326
- fileMetaData.documentRepositoryId = !_Utils.default.isNull(val.key) ? val.key : val.documentRepositoryId;
327
- fileMetaData.documentRepositoryCacheId = val.documentRepositoryCacheId;
328
-
329
- if (!_Utils.default.isNull(val.url)) {
330
- let file = {};
331
- file.base64 = val.url;
332
- setFile(file);
333
- }
334
-
335
- return fileMetaData;
336
- }
337
- } else {
338
- // TODO : Support multiple file upload
339
- if (_Utils.default.getComponentAttribute(props.config, 'multiple', false)) {
340
- let valArray = [];
341
- valArray.push(value);
342
- return valArray;
343
- }
344
- }
345
-
346
353
  return value;
347
354
  },
348
355
  valueChangeCallback: value => {
@@ -43,6 +43,12 @@ var _Video = _interopRequireDefault(require("../media/Video"));
43
43
 
44
44
  var _VCRoom = _interopRequireDefault(require("../media/VCRoom"));
45
45
 
46
+ var _VideoPlayer = _interopRequireDefault(require("../media/VideoPlayer"));
47
+
48
+ var _Portlet = _interopRequireDefault(require("../Portlet"));
49
+
50
+ var _TabPanel = _interopRequireDefault(require("../TabPanel"));
51
+
46
52
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
53
 
48
54
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -63,11 +69,19 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
63
69
  });
64
70
 
65
71
  _react.default.useEffect(() => {
72
+ if (props.tableRow) {
73
+ var _props$tableRow$id;
74
+
75
+ props.config.id = props.config.id + '_' + ((_props$tableRow$id = props.tableRow.id) === null || _props$tableRow$id === void 0 ? void 0 : _props$tableRow$id.replaceAll('-', ''));
76
+ }
77
+
78
+ props.handle.api = api();
79
+
66
80
  let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
67
81
 
68
82
  _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
69
83
 
70
- _Observable.default.addSystemSubscriptions(parsedConfig);
84
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
71
85
 
72
86
  if (!_Utils.default.isNull(parsedConfig.visible)) {
73
87
  setVisible(_Utils.default.evaluateBooleanExpression(parsedConfig.visible, props.config.id));
@@ -112,7 +126,7 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
112
126
  }
113
127
  };
114
128
 
115
- function renderComponent(component) {
129
+ function renderComponent(component, index) {
116
130
  if (_Utils.default.isNull(component.id)) {
117
131
  return null;
118
132
  } else {
@@ -120,24 +134,43 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
120
134
  handle: createComponentHandle(component),
121
135
  config: component,
122
136
  ref: /*#__PURE__*/_react.default.createRef(),
137
+ tableRow: props.tableRow,
138
+ key: index,
123
139
  viewId: props.viewId
124
140
  }) : component.type === 'toolbar' ? /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
125
141
  config: component,
126
142
  handle: createComponentHandle(component),
143
+ tableRow: props.tableRow,
144
+ key: index,
145
+ ref: /*#__PURE__*/_react.default.createRef(),
146
+ viewId: props.viewId
147
+ }) : component.type === 'tab' ? /*#__PURE__*/_react.default.createElement(_TabPanel.default, {
148
+ config: component,
149
+ handle: createComponentHandle(component),
150
+ tableRow: props.tableRow,
151
+ key: index,
127
152
  ref: /*#__PURE__*/_react.default.createRef(),
128
153
  viewId: props.viewId
129
154
  }) : component.type === 'dataGrid' ? /*#__PURE__*/_react.default.createElement(_DataGrid.DataGrid, {
130
155
  config: component,
131
156
  handle: createComponentHandle(component),
132
157
  ref: /*#__PURE__*/_react.default.createRef(),
158
+ key: index,
133
159
  viewId: props.viewId
134
160
  }) : component.type === 'form' ? /*#__PURE__*/_react.default.createElement(_Form.default, {
135
161
  config: component,
136
162
  handle: createComponentHandle(component),
137
163
  ref: /*#__PURE__*/_react.default.createRef(),
164
+ key: index,
138
165
  viewId: props.viewId,
139
166
  className: 'defaultForm'
140
167
  }) : component.type === 'htmlPanel' ? /*#__PURE__*/_react.default.createElement(_HtmlPanel.default, {
168
+ config: component,
169
+ handle: createComponentHandle(component),
170
+ viewId: props.viewId,
171
+ key: index,
172
+ ref: /*#__PURE__*/_react.default.createRef()
173
+ }) : component.type === 'portlet' ? /*#__PURE__*/_react.default.createElement(_Portlet.default, {
141
174
  config: component,
142
175
  handle: createComponentHandle(component),
143
176
  viewId: props.viewId,
@@ -146,61 +179,78 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
146
179
  config: component,
147
180
  handle: createComponentHandle(component),
148
181
  ref: /*#__PURE__*/_react.default.createRef(),
182
+ key: index,
149
183
  viewId: props.viewId
150
184
  }) : component.type === 'titleBar' ? /*#__PURE__*/_react.default.createElement(_TitleBar.default, {
151
185
  config: component,
152
186
  handle: createComponentHandle(component),
153
187
  ref: /*#__PURE__*/_react.default.createRef(),
188
+ key: index,
154
189
  viewId: props.viewId
155
190
  }) : component.type === 'stepperTitleBar' ? /*#__PURE__*/_react.default.createElement(_StepperTitleBar.default, {
156
191
  config: component,
157
192
  handle: createComponentHandle(component),
158
193
  ref: /*#__PURE__*/_react.default.createRef(),
194
+ key: index,
159
195
  viewId: props.viewId
160
196
  }) : component.type === 'alertBar' ? /*#__PURE__*/_react.default.createElement(_AlertBar.default, {
161
197
  config: component,
162
198
  handle: createComponentHandle(component),
163
199
  ref: /*#__PURE__*/_react.default.createRef(),
200
+ key: index,
164
201
  viewId: props.viewId
165
202
  }) : component.type === 'signatureTemplateDesigner' ? /*#__PURE__*/_react.default.createElement(_SignatureTemplateDesigner.default, {
166
203
  config: component,
167
204
  handle: createComponentHandle(component),
168
205
  ref: /*#__PURE__*/_react.default.createRef(),
206
+ key: index,
169
207
  viewId: props.viewId
170
208
  }) : component.type === 'documentViewer' ? /*#__PURE__*/_react.default.createElement(_DocumentViewer.default, {
171
209
  config: component,
172
210
  handle: createComponentHandle(component),
173
211
  ref: /*#__PURE__*/_react.default.createRef(),
212
+ key: index,
174
213
  viewId: props.viewId
175
214
  }) : component.type === 'vcRoom' ? /*#__PURE__*/_react.default.createElement(_VCRoom.default, {
176
215
  config: component,
177
216
  handle: createComponentHandle(component),
178
217
  ref: /*#__PURE__*/_react.default.createRef(),
218
+ key: index,
179
219
  viewId: props.viewId
180
220
  }) : component.type === 'userVideo' ? /*#__PURE__*/_react.default.createElement(_Video.default, {
181
221
  config: component,
182
222
  handle: createComponentHandle(component),
183
223
  ref: /*#__PURE__*/_react.default.createRef(),
224
+ key: index,
225
+ viewId: props.viewId
226
+ }) : component.type === 'videoPlayer' ? /*#__PURE__*/_react.default.createElement(_VideoPlayer.default, {
227
+ config: component,
228
+ handle: createComponentHandle(component),
229
+ ref: /*#__PURE__*/_react.default.createRef(),
230
+ key: index,
184
231
  viewId: props.viewId
185
232
  }) : component.type === 'signaturePanel' ? /*#__PURE__*/_react.default.createElement(_SignaturePanel.default, {
186
233
  config: component,
187
234
  handle: createComponentHandle(component),
188
235
  ref: /*#__PURE__*/_react.default.createRef(),
236
+ key: index,
189
237
  viewId: props.viewId
190
238
  }) : component.type === 'dialog' ? /*#__PURE__*/_react.default.createElement(_Dialog.default, {
191
239
  config: component,
192
240
  handle: createComponentHandle(component),
193
241
  ref: /*#__PURE__*/_react.default.createRef(),
242
+ key: index,
194
243
  viewId: props.viewId
195
244
  }) : component.type === 'calendar' ? /*#__PURE__*/_react.default.createElement(_Calendar.default, {
196
245
  config: component,
197
246
  handle: createComponentHandle(component),
198
- ref: /*#__PURE__*/_react.default.createRef(),
247
+ key: index,
199
248
  viewId: props.viewId
200
249
  }) : component.type === 'templateDesigner' ? /*#__PURE__*/_react.default.createElement(_TemplateDesigner.default, {
201
250
  config: component,
202
251
  handle: createComponentHandle(component),
203
252
  ref: /*#__PURE__*/_react.default.createRef(),
253
+ key: index,
204
254
  viewId: props.viewId
205
255
  }) : /*#__PURE__*/_react.default.createElement("div", null, 'Unsupported component type ' + component.type);
206
256
  }
@@ -266,11 +316,14 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
266
316
  minWidth: '128px',
267
317
  width: 'auto',
268
318
  height: 'auto',
269
- display: visible ? 'block' : 'none',
270
319
  margin: 0,
271
320
  padding: 0
272
321
  }, component);
273
322
 
323
+ if (!visible) {
324
+ style.display = 'none';
325
+ }
326
+
274
327
  if (!_Utils.default.isNull(backgroundColor)) {
275
328
  style.backgroundColor = backgroundColor;
276
329
  }
@@ -280,35 +333,35 @@ const Layout = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
280
333
 
281
334
  function render(layout) {
282
335
  setMissingComponentIds();
283
- let counter = 0;
336
+ let counter = 10000;
284
337
  return _Utils.default.isNull(layout.components) || layout.components.length === 0 ? /*#__PURE__*/_react.default.createElement("div", null, "I am a dum empty Layout") : layout.orientation === 'VERTICAL' ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, layout.components.map((component, index) => {
285
- return component.type === 'layout' ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderComponent(component)) : /*#__PURE__*/_react.default.createElement(_react.Fragment, {
338
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
286
339
  key: index
287
- }, renderComponent(component));
340
+ }, renderComponent(component, null));
288
341
  })) : /*#__PURE__*/_react.default.createElement("div", {
289
342
  style: {
290
343
  display: 'table',
291
344
  width: '100%',
292
345
  height: '100%'
293
346
  }
294
- }, layout.components.map(component => {
347
+ }, layout.components.map((component, index) => {
295
348
  let className = _Utils.default.getComponentAttribute(component, 'className', '');
296
349
 
297
- return component.type === 'layout' ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderComponent(component)) : /*#__PURE__*/_react.default.createElement("div", {
298
- key: counter++,
350
+ return component.type === 'layout' ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderComponent(component, index)) : /*#__PURE__*/_react.default.createElement("div", {
351
+ key: index,
299
352
  style: {
300
353
  display: 'table-cell',
301
354
  height: '100%',
302
355
  verticalAlign: 'middle'
303
356
  },
304
357
  className: "".concat(className)
305
- }, renderComponent(component));
358
+ }, renderComponent(component, null));
306
359
  }));
307
360
  }
308
361
 
309
362
  return /*#__PURE__*/_react.default.createElement("div", {
310
363
  id: props.config.id,
311
- style: _Utils.default.mergeStyles(getLayoutStyle(props.config, 'transparent'), props.config),
364
+ style: getLayoutStyle(props.config, 'transparent'),
312
365
  className: "".concat(_Utils.default.getComponentAttribute(props.config, 'className', null))
313
366
  }, render(props.config));
314
367
  });
@@ -1,6 +1,7 @@
1
1
  .view {
2
2
  padding: 0 32px;
3
3
  background-color: #ffffff;
4
+ border-radius: 4px;
4
5
  }
5
6
 
6
7
  .no-margin {
@@ -13,7 +13,7 @@ var _Observable = _interopRequireDefault(require("../../event/Observable"));
13
13
 
14
14
  var _Layout = require("./Layout");
15
15
 
16
- var _ApplicationContext = _interopRequireDefault(require("../../ApplicationContext"));
16
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
17
17
 
18
18
  var _Event = _interopRequireDefault(require("../../event/Event"));
19
19
 
@@ -43,7 +43,7 @@ const View = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwa
43
43
  function registerInlineScriptLibraries() {
44
44
  if (!_Utils.default.isNull(props.config.lib)) {
45
45
  let libName = props.config.id + '_lib';
46
- let lib = new _DynamicLib.default(_ApplicationContext.default); // TODO : Write a more generic script parser
46
+ let lib = new _DynamicLib.default(_ApplicationManager.default); // TODO : Write a more generic script parser
47
47
 
48
48
  for (const script of props.config.lib.scripts) {
49
49
  if (script.lines.length > 0) {
@@ -82,7 +82,7 @@ const View = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwa
82
82
  }
83
83
  }
84
84
 
85
- _ApplicationContext.default.registerLibrary(libName, lib);
85
+ _ApplicationManager.default.registerLibrary(libName, lib);
86
86
  }
87
87
  }
88
88
 
@@ -123,40 +123,37 @@ const View = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwa
123
123
 
124
124
  _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.config.id);
125
125
 
126
- _Observable.default.addSystemSubscriptions(parsedConfig);
126
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
127
127
 
128
128
  registerInlineScriptLibraries();
129
+ let children = layoutHandle.api.getChildren();
129
130
 
130
- let currentView = _ApplicationContext.default.getCurrentView();
131
-
132
- if (props.config.id === currentView.config.id) {
133
- let children = layoutHandle.api.getChildren();
134
-
135
- for (const child of children) {
136
- if (!_Utils.default.isNull(child.api) && !_Utils.default.isNull(child.api.refresh)) {
137
- child.api.refresh();
138
- }
131
+ for (const child of children) {
132
+ if (!_Utils.default.isNull(child.api) && !_Utils.default.isNull(child.api.refresh)) {
133
+ child.api.refresh();
139
134
  }
135
+ }
140
136
 
141
- _ApplicationContext.default.updateAppBarTitle(props.config.id, props.config.title);
137
+ _ApplicationManager.default.updateAppBarTitle(parsedConfig.id, parsedConfig.title);
142
138
 
143
- let data = {};
144
- data.viewId = props.config.id;
145
- let event = new _Event.default(props.handle, props.config.id, data);
139
+ let data = {};
140
+ data.viewId = props.config.id;
141
+ let event = new _Event.default(props.handle, props.config.id, data);
146
142
 
147
- _Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, event);
143
+ _Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, event);
148
144
 
149
- if (props.loadCallback) {
150
- props.loadCallback();
151
- }
145
+ if (props.loadCallback) {
146
+ props.loadCallback();
152
147
  }
148
+
149
+ return () => {
150
+ _Observable.default.clearEventListeners(props.config.id);
151
+ };
153
152
  }, []);
154
153
 
155
154
  function render(layout) {
156
155
  return /*#__PURE__*/_react.default.createElement(_Layout.Layout, {
157
- ref: /*#__PURE__*/_react.default.createRef(),
158
156
  handle: layoutHandle,
159
- key: layout.key,
160
157
  config: layout,
161
158
  viewId: props.config.id,
162
159
  parent: true
@@ -0,0 +1,3 @@
1
+ .window-container {
2
+ z-index: 1 !important;
3
+ }