@agilemotion/oui-react-js 1.8.27 → 1.8.29

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 (33) hide show
  1. package/dist/ApplicationManager.js +13 -8
  2. package/dist/DateUtils.js +78 -0
  3. package/dist/DynamicJS.js +5 -0
  4. package/dist/RestService.js +2 -3
  5. package/dist/Utils.js +3 -3
  6. package/dist/components/DataGrid.js +5 -1
  7. package/dist/components/DataGridColumn.js +25 -4
  8. package/dist/components/HtmlPanel.js +4 -2
  9. package/dist/components/Icon.js +3 -0
  10. package/dist/components/PDFViewer.js +6 -1
  11. package/dist/components/TabPanel.js +6 -0
  12. package/dist/components/TableCellContent.js +46 -1
  13. package/dist/components/facialRecognition/FaceRecognitionComponent.js +205 -0
  14. package/dist/components/facialRecognition/FacialRecognition.css +3 -0
  15. package/dist/components/facialRecognition/FacialRegistration.js +73 -0
  16. package/dist/components/facialRecognition/FacialVerification.js +84 -0
  17. package/dist/components/facialRecognition/Modal.js +33 -0
  18. package/dist/components/facialRecognition/service/faceApi.js +55 -0
  19. package/dist/components/form/BaseField.js +1 -4
  20. package/dist/components/form/FieldSet.js +4 -2
  21. package/dist/components/form/Form.js +1 -0
  22. package/dist/components/form/GridField.js +5 -5
  23. package/dist/components/form/ImageEditor.js +200 -84
  24. package/dist/components/form/LookupField.js +3 -4
  25. package/dist/components/form/RadioGroup.js +1 -1
  26. package/dist/components/layout/Layout.js +16 -0
  27. package/dist/components/layout/View.js +2 -0
  28. package/dist/components/signatures/DocumentContainer.js +1 -1
  29. package/dist/components/signatures/ViewUtils.js +1 -1
  30. package/dist/event/ActionHandlers.js +1 -1
  31. package/dist/event/ServiceCallActionHandler.js +2 -1
  32. package/dist/js/Validators.js +2 -1
  33. package/package.json +13 -4
@@ -8,10 +8,14 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _Button = _interopRequireDefault(require("@mui/material/Button"));
9
9
  var _BaseField = require("./BaseField");
10
10
  var _styles = require("@mui/styles");
11
+ var _DocumentViewer = _interopRequireDefault(require("../DocumentViewer"));
11
12
  var _Utils = _interopRequireDefault(require("../../Utils"));
12
13
  var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
13
14
  var _Icon = _interopRequireDefault(require("../Icon"));
14
15
  var _reactPromiseTracker = require("react-promise-tracker");
16
+ var _Event = _interopRequireDefault(require("../../event/Event"));
17
+ var _Observable = _interopRequireDefault(require("../../event/Observable"));
18
+ var _EventType = _interopRequireDefault(require("../../event/EventType"));
15
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
20
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
17
21
  const useStyles = (0, _styles.makeStyles)(theme => ({
@@ -29,9 +33,10 @@ const status = response => {
29
33
  if (response.ok) {
30
34
  return Promise.resolve(response);
31
35
  } else {
32
- let error = new Error(response.statusText);
33
- error.code = response.status;
34
- return Promise.reject(error);
36
+ return Promise.reject({
37
+ code: response.status,
38
+ message: response.statusText
39
+ });
35
40
  }
36
41
  };
37
42
  const json = response => {
@@ -39,16 +44,38 @@ const json = response => {
39
44
  };
40
45
  const location = window.location.protocol + "//" + window.location.hostname;
41
46
  const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
42
- const [multiple] = _react.default.useState(props.multiple === true);
47
+ const [viewerFile, setViewerFile] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? props.initialFile : null);
43
48
  const [angle, setAngle] = _react.default.useState(0);
44
49
  const [zoomDepth, setZoomDepth] = _react.default.useState(null);
45
50
  const [originalImageWidth, setOriginalImageWidth] = _react.default.useState(null);
46
51
  const [originalImageHeight, setOriginalImageHeight] = _react.default.useState(null);
52
+ const [payloadStorageMode, setPayloadStorageMode] = _react.default.useState(props.config.payloadStorageMode || 'base64');
53
+ const [files, setFiles] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? [props.initialFile] : null);
54
+ const [loading, setLoading] = _react.default.useState(true);
55
+ const [nullable] = _react.default.useState(_Utils.default.isNull(props.config.validator) || props.config.validator.nullable === true);
56
+ const [multiple] = _react.default.useState(props.multiple === true);
57
+ const [show, setShow] = _react.default.useState(false);
47
58
  const classes = useStyles();
48
- const width = _Utils.default.getComponentAttribute(props.config, 'width', '320px');
49
- const height = _Utils.default.getComponentAttribute(props.config, 'height', '320px');
59
+ const [reference, setReference] = _react.default.useState(ref ? ref : /*#__PURE__*/_react.default.createRef());
60
+ const [hasError, setHasError] = _react.default.useState(null);
61
+ const width = _Utils.default.getComponentAttribute(props.config, 'width', '200px');
62
+ const height = _Utils.default.getComponentAttribute(props.config, 'height', '200px');
63
+ const [errorMessage, setErrorMessage] = _react.default.useState("");
64
+ const cacheId = _react.default.useRef(!_Utils.default.isNull(props.base.value) ? props.base.value.documentRepositoryCacheId : null);
50
65
  const base = props.base;
51
- _react.default.useEffect(() => {}, [props.initialFile]);
66
+ _react.default.useEffect(() => {
67
+ return () => {
68
+ if (cacheId.current) {
69
+ //remove().catch((e) => {});
70
+ }
71
+ };
72
+ }, []);
73
+ _react.default.useEffect(() => {
74
+ setViewerFile(props.initialFile);
75
+ }, [props.initialFile]);
76
+ const handleViewerLoad = numPages => {
77
+ setLoading(false);
78
+ };
52
79
  function getFetchConfig(data) {
53
80
  const accessToken = sessionStorage.getItem("accessToken");
54
81
  const idToken = sessionStorage.getItem("idToken");
@@ -71,48 +98,154 @@ const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.
71
98
  }
72
99
  return rotateAngle;
73
100
  }
74
- function process(callback, data, action) {
75
- let fetchConfig = getFetchConfig(data);
76
- let url = location + _ApplicationManager.default.getContextRoot() + _Utils.default.getComponentAttribute(props.config, 'processingUrl', null) + "/" + action + "/" + _Utils.default.getComponentAttribute(props.config, "mode", "DOC");
77
- let rotateAngle = getRotateAngle(action);
78
- if (rotateAngle) {
79
- url += "?" + rotateAngle;
80
- }
81
- (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
82
- callback(data);
83
- }).catch(e => {
84
- if (e.code === 401) {
85
- _ApplicationManager.default.clear();
86
- _ApplicationManager.default.getApplicationHistory().push('/login');
87
- }
88
- }));
101
+ function base64ToFile(b64, originalFile) {
102
+ let mime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "image/png";
103
+ const clean = b64.startsWith("data:") ? b64.split(",")[1] : b64;
104
+ const bin = atob(clean);
105
+ const arr = new Uint8Array(bin.length);
106
+ for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
107
+ const ext = mime.split("/")[1] || "png";
108
+ const base = originalFile.name.replace(/\.[^.]+$/, "");
109
+ return new File([arr], `${base}-processed.${ext}`, {
110
+ type: mime,
111
+ lastModified: Date.now()
112
+ });
89
113
  }
114
+ const upload = (metadata, file, payload) => {
115
+ let uploadUrl = _Utils.default.getComponentAttribute(props.config, 'uploadUrl', null);
116
+ if (uploadUrl === null) {
117
+ uploadUrl = _ApplicationManager.default.getContextRoot() + "/docs/api/v1/manager/upload/save";
118
+ }
119
+ let payloadStorageMode = props.config.payloadStorageMode;
120
+ if (payloadStorageMode === 'post') {
121
+ const accessToken = sessionStorage.getItem("accessToken");
122
+ const idToken = sessionStorage.getItem("idToken");
123
+ let data = new FormData();
124
+ metadata.correlationId = props.viewId + "." + props.config.id;
125
+ data.append("metadata", JSON.stringify(metadata));
126
+ const processedFile = base64ToFile(payload, file, "image/png");
127
+ data.append("file", processedFile);
128
+ let fetchConfig = getFetchConfig(data);
129
+ let url = location + uploadUrl;
130
+ (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
131
+ metadata.documentRepositoryId = !_Utils.default.isNull(base.value) ? base.value.documentRepositoryId : null;
132
+ metadata.documentRepositoryCacheId = data;
133
+ cacheId.current = data;
134
+ base.handleValueChange(metadata);
135
+ }).catch(e => {
136
+ if (e.code === 401) {
137
+ _ApplicationManager.default.clear();
138
+ _ApplicationManager.default.getApplicationHistory().push('/login');
139
+ }
140
+ let message = {
141
+ messageType: 'ERROR',
142
+ message: 'An error has accurred while uploading file'
143
+ };
144
+ let event = new _Event.default(_ApplicationManager.default, props.viewId, message);
145
+ _Observable.default.fireEvent(_EventType.default.MESSAGE_ARRIVED, event);
146
+ }));
147
+ } else {
148
+ metadata.payload = payload;
149
+ base.handleValueChange(metadata);
150
+ }
151
+ };
152
+ const remove = () => {
153
+ return new Promise((resolve, reject) => {
154
+ const accessToken = sessionStorage.getItem("accessToken");
155
+ const idToken = sessionStorage.getItem("idToken");
156
+ let fetchConfig = {
157
+ method: 'GET',
158
+ headers: {
159
+ 'Accept': 'application/json',
160
+ 'Authorization': 'Bearer ' + accessToken,
161
+ 'idToken': idToken,
162
+ 'tenant': _ApplicationManager.default.getActiveTenant()
163
+ }
164
+ };
165
+ let url = location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/upload/remove/' + cacheId.current;
166
+ (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(() => {
167
+ resolve();
168
+ }).catch(e => {
169
+ if (e.code === 401) {
170
+ _ApplicationManager.default.clear();
171
+ _ApplicationManager.default.getApplicationHistory().push('/login');
172
+ } else {
173
+ reject(e);
174
+ }
175
+ }));
176
+ });
177
+ };
90
178
  const handleChange = () => event => {
91
179
  let files = event.target.files;
92
- let file = files[0];
93
- let reader = new FileReader();
94
- reader.readAsDataURL(file);
95
- reader.onload = () => {
96
- if (!_Utils.default.isNull(file)) {
97
- let fileMetaData = {};
98
- fileMetaData.name = file.name;
99
- fileMetaData.type = file.type;
100
- fileMetaData.size = file.size;
101
- if (base.value) {
102
- fileMetaData.id = base.value.id;
180
+ var allFiles = [];
181
+ for (var i = 0; i < files.length; i++) {
182
+ let file = files[i];
183
+ let reader = new FileReader();
184
+ reader.readAsDataURL(file);
185
+ reader.onload = () => {
186
+ let fileInfo = {
187
+ name: file.name,
188
+ type: file.type,
189
+ size: file.size,
190
+ base64: reader.result,
191
+ file: file
192
+ };
193
+ console.log("\n\n\n\nFILE : ", file);
194
+ allFiles.push(fileInfo);
195
+ if (allFiles.length === files.length) {
196
+ if (multiple === true) {
197
+ if (!_Utils.default.isNull(props.onUploadHandler)) {
198
+ props.onUploadHandler(allFiles);
199
+ }
200
+ } else {
201
+ if (!_Utils.default.isNull(props.onUploadHandler)) {
202
+ props.onUploadHandler(allFiles[0]);
203
+ }
204
+ setLoading(true);
205
+ }
206
+ setFiles(allFiles);
103
207
  }
104
- if (_Utils.default.getComponentAttribute(props.config, 'autoRemoveBackground', false)) {
105
- process(data => {
106
- fileMetaData.url = data;
107
- base.handleValueChange(fileMetaData);
108
- }, reader.result, 'removeBackground');
109
- } else {
110
- fileMetaData.url = file.base64;
111
- base.handleValueChange(fileMetaData);
208
+ };
209
+ reader.onloadend = () => {
210
+ if (!_Utils.default.isNull(props.form)) {
211
+ if (_Utils.default.getComponentAttribute(props.config, 'autoRemoveBackground', false)) {
212
+ process(data => {
213
+ allFiles[0].base64 = data;
214
+ setViewerFile(allFiles[0]);
215
+ handleloadEnded(allFiles, data);
216
+ }, allFiles[0].base64, 'removeBackground');
217
+ } else {
218
+ handleloadEnded(allFile, reader.payload);
219
+ setViewerFile(allFiles[0]);
220
+ }
112
221
  }
222
+ };
223
+ }
224
+ };
225
+ const handleloadEnded = (allFiles, payload) => {
226
+ let fileMetaData = {};
227
+ fileMetaData.name = allFiles[0].name;
228
+ fileMetaData.type = allFiles[0].type;
229
+ fileMetaData.size = allFiles[0].size;
230
+ if (base.value) {
231
+ fileMetaData.id = base.value.id;
232
+ fileMetaData.documentRepositoryId = base.value.documentRepositoryId;
233
+ }
234
+ if ('base64' === payloadStorageMode) {
235
+ fileMetaData.payload = allFiles[0].base64;
236
+ base.handleValueChange(fileMetaData);
237
+ } else {
238
+ fileMetaData.correlationId = props.config.id;
239
+ fileMetaData.domain = props.viewId;
240
+ if (cacheId.current) {
241
+ remove().then(() => {
242
+ cacheId.current = null;
243
+ upload(fileMetaData, allFiles[0].file, payload);
244
+ }).catch(e => {});
245
+ } else {
246
+ upload(fileMetaData, allFiles[0].file, payload);
113
247
  }
114
- };
115
- reader.onloadend = () => {};
248
+ }
116
249
  };
117
250
  _react.default.useEffect(() => {
118
251
  let container = document.getElementById("__image_container");
@@ -125,6 +258,22 @@ const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.
125
258
  image.style.height = container.style.height;
126
259
  }
127
260
  }, [zoomDepth]);
261
+ function process(callback, data, action) {
262
+ let fetchConfig = getFetchConfig(data);
263
+ let url = location + _ApplicationManager.default.getContextRoot() + _Utils.default.getComponentAttribute(props.config, 'processingUrl', null) + "/" + action + "/" + _Utils.default.getComponentAttribute(props.config, "mode", "DOC");
264
+ let rotateAngle = getRotateAngle(action);
265
+ if (rotateAngle) {
266
+ url += "?angle=" + rotateAngle;
267
+ }
268
+ (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
269
+ callback(data);
270
+ }).catch(e => {
271
+ if (e.code === 401) {
272
+ _ApplicationManager.default.clear();
273
+ _ApplicationManager.default.getApplicationHistory().push('/login');
274
+ }
275
+ }));
276
+ }
128
277
  const zoom = direction => {
129
278
  if (originalImageWidth === null) {
130
279
  setOriginalImageWidth(document.getElementById("__image").width);
@@ -140,11 +289,13 @@ const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.
140
289
  let rotateMode = _Utils.default.getComponentAttribute(props.config, "rotateMode", null);
141
290
  if (rotateMode === null || rotateMode === 'SERVER') {
142
291
  process(data => {
143
- base.handleValueChange({
144
- ...base.value,
145
- url: data
292
+ files[0].base64 = data;
293
+ setViewerFile({
294
+ ...files[0],
295
+ base64: data
146
296
  });
147
- }, base.value.url, 'rotate' + direction);
297
+ handleloadEnded(files, data);
298
+ }, files[0].base64, 'rotate' + direction);
148
299
  } else {
149
300
  let rotateAngle = angle + getRotateAngle("rotate" + direction);
150
301
  document.getElementById("__image_container").style.transform = "rotate(" + rotateAngle + "deg)";
@@ -264,7 +415,7 @@ const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.
264
415
  startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
265
416
  id: 'ZOOM_IN'
266
417
  })
267
- }) : null)), !_Utils.default.isNull(base.value) ? /*#__PURE__*/_react.default.createElement("div", {
418
+ }) : null)), !_Utils.default.isNull(base.value) || !_Utils.default.isNull(viewerFile) ? /*#__PURE__*/_react.default.createElement("div", {
268
419
  className: "row",
269
420
  style: {
270
421
  padding: "8px 0",
@@ -300,7 +451,7 @@ const ImageEditorComponent = exports.ImageEditorComponent = /*#__PURE__*/_react.
300
451
  id: "__image_container"
301
452
  }, /*#__PURE__*/_react.default.createElement("img", {
302
453
  id: "__image",
303
- src: base.value.url,
454
+ src: viewerFile?.base64 || base.value?.url,
304
455
  alt: '',
305
456
  style: {
306
457
  maxHeight: parseFloat(height.replace('px', '')) - 20 + 'px'
@@ -313,41 +464,6 @@ const ImageEditor = exports.ImageEditor = /*#__PURE__*/_react.default.memo(/*#__
313
464
  return /*#__PURE__*/_react.default.createElement(_BaseField.BaseField, _extends({}, props, {
314
465
  handle: props.handle,
315
466
  valueParser: (value, inbound) => {
316
- if (inbound) {
317
- clearTrigger.current = !clearTrigger.current;
318
- if (!_Utils.default.isNull(value)) {
319
- let val = value;
320
-
321
- // TODO : Support multiple file upload
322
- if (_Utils.default.getComponentAttribute(props.config, 'multiple', false)) {
323
- if (typeof value.length !== 'undefined' && value.length > 0) {
324
- val = value[0];
325
- } else {
326
- if (value.documentRepositoryId) {
327
- return value;
328
- }
329
- return null;
330
- }
331
- }
332
- if (val.map) {
333
- val = val.map;
334
- }
335
- let fileMetaData = {};
336
- fileMetaData.name = !_Utils.default.isNull(val.label) ? val.label : val.name;
337
- fileMetaData.id = val.id;
338
- fileMetaData.type = val.type;
339
- fileMetaData.size = val.size;
340
- fileMetaData.documentRepositoryId = !_Utils.default.isNull(val.key) ? val.key : val.documentRepositoryId;
341
- fileMetaData.documentRepositoryCacheId = val.documentRepositoryCacheId;
342
- fileMetaData.url = val.url;
343
- if (!_Utils.default.isNull(val.url)) {
344
- let file = {};
345
- file.base64 = val.url;
346
- setFile(file);
347
- }
348
- return fileMetaData;
349
- }
350
- }
351
467
  return value;
352
468
  },
353
469
  valueChangeCallback: value => {
@@ -105,11 +105,11 @@ const LookupFieldComponent = exports.LookupFieldComponent = /*#__PURE__*/_react.
105
105
  }, "...")), /*#__PURE__*/_react.default.createElement("div", {
106
106
  className: 'col-*-* no-margin no-padding',
107
107
  style: {
108
- width: 'calc(100% - 72px)',
108
+ width: !base.disabled ? 'calc(100% - 72px)' : '100%',
109
109
  marginBottom: value ? '0' : '8px',
110
110
  position: 'relative'
111
111
  }
112
- }, !base.required && /*#__PURE__*/_react.default.createElement("div", {
112
+ }, !base.required && !base.disabled && /*#__PURE__*/_react.default.createElement("div", {
113
113
  style: {
114
114
  width: '32px',
115
115
  height: '32px',
@@ -119,8 +119,7 @@ const LookupFieldComponent = exports.LookupFieldComponent = /*#__PURE__*/_react.
119
119
  }
120
120
  }, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
121
121
  variant: 'outlined',
122
- onClick: clearValue,
123
- disabled: base.disabled
122
+ onClick: clearValue
124
123
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
125
124
  id: "CLEAR"
126
125
  }))), /*#__PURE__*/_react.default.createElement(_TextField.default, {
@@ -44,7 +44,7 @@ const RadioGroupWrapper = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.d
44
44
  borderRadius: '4px',
45
45
  padding: '8px 4px 4px 8px'
46
46
  } : {
47
- padding: '8px 4px 4px 8px'
47
+ padding: 0
48
48
  },
49
49
  onChange: e => {
50
50
  base.handleValueChange(e.target.value);
@@ -30,6 +30,8 @@ var _DocumentTemplateDesigner = _interopRequireDefault(require("../DocumentTempl
30
30
  var _ChatRoomWrapper = _interopRequireDefault(require("../media/chat/ChatRoomWrapper"));
31
31
  var _ProgressTracker = _interopRequireDefault(require("../ProgressTracker"));
32
32
  var _Chart = _interopRequireDefault(require("../Chart"));
33
+ var _FacialRegistration = _interopRequireDefault(require("../facialRecognition/FacialRegistration"));
34
+ var _FacialVerification = _interopRequireDefault(require("../facialRecognition/FacialVerification"));
33
35
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
34
36
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
35
37
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -251,6 +253,20 @@ const Layout = props => {
251
253
  key: index,
252
254
  viewId: props.viewId
253
255
  });
256
+ case 'facialRegistration':
257
+ return /*#__PURE__*/_react.default.createElement(_FacialRegistration.default, {
258
+ config: component,
259
+ handle: createComponentHandle(component),
260
+ key: index,
261
+ viewId: props.viewId
262
+ });
263
+ case 'facialVerification':
264
+ return /*#__PURE__*/_react.default.createElement(_FacialVerification.default, {
265
+ config: component,
266
+ handle: createComponentHandle(component),
267
+ key: index,
268
+ viewId: props.viewId
269
+ });
254
270
  case 'chart':
255
271
  return /*#__PURE__*/_react.default.createElement(_Chart.default, {
256
272
  config: component,
@@ -130,6 +130,7 @@ const View = props => {
130
130
  return props.parameters;
131
131
  },
132
132
  get model() {
133
+ _ApplicationManager.default.enableFormMarkers(false);
133
134
  let children = layoutHandle.api.getChildren();
134
135
  for (const child of children) {
135
136
  if (!_Utils.default.isNull(child.api)) {
@@ -139,6 +140,7 @@ const View = props => {
139
140
  }
140
141
  }
141
142
  }
143
+ _ApplicationManager.default.enableFormMarkers(true);
142
144
  return model;
143
145
  },
144
146
  getChild: id => {
@@ -104,7 +104,7 @@ const DocumentContainer = props => {
104
104
  placeholder: 'Enter text here...',
105
105
  style: {
106
106
  position: 'absolute',
107
- top: -4,
107
+ top: -2,
108
108
  left: 0,
109
109
  width: 'calc(100% - 4px)',
110
110
  height: 'calc(100% - 4px)',
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  var _reactPromiseTracker = require("react-promise-tracker");
8
8
  class ViewUtils {
9
9
  constructor() {}
10
- SYSTEM_ERROR_MESSAGE = "A system error has accured. Please contact your system administrator";
10
+ SYSTEM_ERROR_MESSAGE = "A system error has occurred. Please contact your system administrator";
11
11
  isNull(value) {
12
12
  return value === null || typeof value === 'undefined';
13
13
  }
@@ -52,7 +52,7 @@ class ActionHandlers {
52
52
  if (!actionHandler) {
53
53
  throw new Error("No action handler found for [" + action.actionType + "]");
54
54
  }
55
- let message = action.confirmationMessage;
55
+ let message = action.confirmationMessage ? _DynamicJS.default.executeScript("__confirmation_messaage_" + viewId + "_" + component.id, action.confirmationMessage) : null;
56
56
  let condition = action.condition;
57
57
  let shouldRun = true;
58
58
  if (!_Utils.default.isNull(condition)) {
@@ -59,12 +59,13 @@ class ServiceCallActionHandler {
59
59
  }
60
60
  }
61
61
  handleError(e, invalidParameterCallback, currentViewId, component, errorCallback) {
62
- console.error(e);
63
62
  if (e && e.errorType === 'INVALID_PARAMETER') {
63
+ console.warn("The service was not be called because of a null required parameter : ", e.parameter);
64
64
  if (invalidParameterCallback) {
65
65
  invalidParameterCallback();
66
66
  }
67
67
  } else {
68
+ console.error(e);
68
69
  _Utils.default.publishErrorMessage(e, currentViewId, component);
69
70
  if (!_Utils.default.isNull(errorCallback)) {
70
71
  errorCallback(e);
@@ -23,7 +23,8 @@ class Validators {
23
23
  messageType: 'ERROR',
24
24
  message: ''
25
25
  };
26
- }
26
+ } //0179a4f4-99b9-4d6b-b2ba-d9eb381748b7 0179a4f4-99b9-4d6b-b2ba-d9eb381748b5
27
+
27
28
  if (item.procurementMethod.type === 'CONTRACT' || item.procurementMethod.type === 'TRANSVERSAL_CONTRACT') {
28
29
  if (item.procurementMethod.type === 'TRANSVERSAL_CONTRACT' && !item.contract.owner) {
29
30
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "1.8.27",
3
+ "version": "1.8.29",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -42,6 +42,7 @@
42
42
  "dayjs": "^1.11.13",
43
43
  "dotenv-webpack": "^8.1.0",
44
44
  "emotion-theming": "^11.0.0",
45
+ "face-api.js": "^0.22.2",
45
46
  "handlebars": "^4.7.7",
46
47
  "html-to-image": "^1.6.2",
47
48
  "install": "^0.13.0",
@@ -84,9 +85,13 @@
84
85
  "redux": "^4.0.5",
85
86
  "redux-thunk": "^2.3.0",
86
87
  "rrule": "^2.8.1",
87
- "save-dev": "^0.0.1-security",
88
88
  "socket.io-client": "^4.7.5",
89
- "styled-components": "^5.2.3"
89
+ "styled-components": "^5.2.3",
90
+ "@testing-library/dom": "^10.4.0",
91
+ "@testing-library/jest-dom": "^6.6.3",
92
+ "@testing-library/react": "^16.3.0",
93
+ "@testing-library/user-event": "^13.5.0",
94
+ "web-vitals": "^2.1.4"
90
95
  },
91
96
  "devDependencies": {
92
97
  "@babel/cli": "^7.13.14",
@@ -113,7 +118,11 @@
113
118
  "url-loader": "^4.1.1",
114
119
  "webpack": "^5.98.0",
115
120
  "webpack-cli": "^6.0.1",
116
- "webpack-dev-server": "^5.2.0"
121
+ "webpack-dev-server": "^5.2.0",
122
+ "autoprefixer": "^10.4.21",
123
+ "postcss": "^8.5.3",
124
+ "react-app-rewired": "^2.2.1",
125
+ "tailwindcss": "^3.4.1"
117
126
  },
118
127
  "scripts": {
119
128
  "publish:npm": "rm -rf dist && mkdir dist && babel src/lib -d dist --copy-files",