@agilemotion/oui-react-js 1.8.78 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.TXT +10 -0
- package/dist/ApplicationManager.js +39 -2
- package/dist/BasicAppHome.js +4 -0
- package/dist/RestService.js +11 -2
- package/dist/RestUtils.js +11 -2
- package/dist/assets/jss/views/loginBasicStyle.js +5 -5
- package/dist/assets/jss/views/loginBasicStyle.jsx +5 -5
- package/dist/components/Button.js +47 -29
- package/dist/components/DocumentViewer.js +32 -19
- package/dist/components/Icon.js +3 -14
- package/dist/components/Toolbar.js +2 -2
- package/dist/components/Tree.js +237 -141
- package/dist/components/WordDocumentViewer.js +35 -7
- package/dist/components/dashboard/FoldingSideTabDashboard.js +10 -1
- package/dist/components/facialRecognition/FacialRegistration.js +15 -1
- package/dist/components/facialRecognition/FacialVerification.js +23 -2
- package/dist/components/form/FieldSet.js +8 -0
- package/dist/components/form/ImageEditor.js +64 -43
- package/dist/components/form/MultiFileUploadField.js +6 -5
- package/dist/components/form/RadioGroup.js +9 -1
- package/dist/components/form/Section.js +8 -2
- package/dist/components/form/TransferList.js +14 -10
- package/dist/components/form/UploadField.js +17 -4
- package/dist/components/layout/Layout.css +49 -1
- package/dist/components/layout/Layout.js +41 -1
- package/dist/components/layout/View.css +1 -1
- package/dist/components/navbars/PortalNavbar.js +5 -0
- package/dist/components/signatures/AgilitySignaturePanel.js +230 -22
- package/dist/components/signatures/DynamicSignatureDocumentContainer.js +487 -0
- package/dist/components/signatures/ImageSignatureInput.js +1 -2
- package/dist/event/EventType.js +3 -1
- package/package.json +2 -1
|
@@ -7,15 +7,18 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
9
9
|
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
10
|
-
var _Utils = _interopRequireDefault(require("../../Utils"));
|
|
11
10
|
var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
|
|
12
11
|
var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent"));
|
|
12
|
+
var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions"));
|
|
13
13
|
var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
|
|
14
|
+
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
14
15
|
var _SignatureInput = _interopRequireDefault(require("../signatures/SignatureInput"));
|
|
15
16
|
var _htmlToImage = require("html-to-image");
|
|
16
17
|
var _HtmlSignatureDocumentContainer = _interopRequireDefault(require("./HtmlSignatureDocumentContainer"));
|
|
17
18
|
var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
|
|
18
19
|
var _reactPromiseTracker = require("react-promise-tracker");
|
|
20
|
+
var _DynamicSignatureDocumentContainer = _interopRequireDefault(require("./DynamicSignatureDocumentContainer"));
|
|
21
|
+
var _ServiceCallActionHandler = _interopRequireDefault(require("../../event/ServiceCallActionHandler"));
|
|
19
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
23
|
const status = response => {
|
|
21
24
|
if (response.ok) {
|
|
@@ -38,8 +41,65 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
38
41
|
const [refresher, setRefresher] = _react.default.useState(false);
|
|
39
42
|
const [initialImage, setInitialImage] = _react.default.useState(null);
|
|
40
43
|
const [systemSignatures, setSystemSignatures] = _react.default.useState(null);
|
|
44
|
+
const [pdf, setPdf] = _react.default.useState(null);
|
|
45
|
+
const [grabbedItem, setGrabbedItem] = _react.default.useState(null);
|
|
46
|
+
const [textDialogOpen, setTextDialogOpen] = _react.default.useState(false);
|
|
47
|
+
const [textDialogValue, setTextDialogValue] = _react.default.useState('');
|
|
48
|
+
const [resetConfirmOpen, setResetConfirmOpen] = _react.default.useState(false);
|
|
49
|
+
const [placementsChanged, setPlacementsChanged] = _react.default.useState(false);
|
|
50
|
+
const dynamicContainerRef = _react.default.useRef(null);
|
|
51
|
+
function processFileData(data, fileType) {
|
|
52
|
+
let file = {};
|
|
53
|
+
if (data.payloadBase64) {
|
|
54
|
+
file.base64 = data.payloadBase64;
|
|
55
|
+
} else if (data.url) {
|
|
56
|
+
file.base64 = data.url.replace('data:application/pdf;base64,', '').replace('data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,', '');
|
|
57
|
+
} else if (data.payload && typeof data.payload === 'string') {
|
|
58
|
+
file.base64 = data.payload.replace('data:application/pdf;base64,', '').replace('data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,', '');
|
|
59
|
+
}
|
|
60
|
+
file.name = data.name;
|
|
61
|
+
file.type = fileType;
|
|
62
|
+
setPdf(file);
|
|
63
|
+
}
|
|
41
64
|
_react.default.useEffect(() => {
|
|
42
65
|
fetchImages();
|
|
66
|
+
if (props.config.signaturePlacementStrategy === 'DYNAMIC') {
|
|
67
|
+
let actionConfig = {};
|
|
68
|
+
const contentRef = props.config.documents[0].contentBeingSignedRepositoryId;
|
|
69
|
+
const isCache = contentRef && contentRef.includes('::');
|
|
70
|
+
if (isCache) {
|
|
71
|
+
const [bucket, ...keyParts] = contentRef.split('::');
|
|
72
|
+
const key = keyParts.join('::');
|
|
73
|
+
actionConfig.service = {
|
|
74
|
+
type: "rest",
|
|
75
|
+
url: "/docs/api/v1/manager/cache/find",
|
|
76
|
+
method: "POST",
|
|
77
|
+
parameters: [{
|
|
78
|
+
httpParameterType: "REQUEST_BODY",
|
|
79
|
+
value: {
|
|
80
|
+
bucket,
|
|
81
|
+
key
|
|
82
|
+
}
|
|
83
|
+
}],
|
|
84
|
+
contentType: "application/json"
|
|
85
|
+
};
|
|
86
|
+
} else {
|
|
87
|
+
actionConfig.service = {
|
|
88
|
+
type: "rest",
|
|
89
|
+
url: "/docs/api/v1/manager/find",
|
|
90
|
+
method: "GET",
|
|
91
|
+
parameters: [{
|
|
92
|
+
httpParameterType: "PATH_VARIABLE",
|
|
93
|
+
value: contentRef || props.config.documents[0].originalDocumentRepositoryId
|
|
94
|
+
}]
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
_ServiceCallActionHandler.default.execute(actionConfig, null, null, 'agility-signature-panel', data => {
|
|
98
|
+
processFileData(data, data.type);
|
|
99
|
+
}, e => {
|
|
100
|
+
console.error(e);
|
|
101
|
+
}, () => {});
|
|
102
|
+
}
|
|
43
103
|
}, []);
|
|
44
104
|
const validate = () => {
|
|
45
105
|
let signers = props.config.documents[0].signers;
|
|
@@ -57,23 +117,49 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
57
117
|
};
|
|
58
118
|
_react.default.useEffect(() => {
|
|
59
119
|
let signers = props.config.documents[0].signers;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
120
|
+
if (props.config.signaturePlacementStrategy === 'DYNAMIC') {
|
|
121
|
+
const dynamicPlacements = dynamicContainerRef.current ? dynamicContainerRef.current.getPlacements() : [];
|
|
122
|
+
if (dynamicPlacements.length > 0) {
|
|
123
|
+
props.valueChangeHandler({
|
|
124
|
+
signers,
|
|
125
|
+
dynamicPlacements
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
} else {
|
|
129
|
+
for (const signer of signers) {
|
|
130
|
+
if (signer.email === props.config.signatoryId) {
|
|
131
|
+
let signingInputs = signer.signatureInputs;
|
|
132
|
+
for (const signingInput of signingInputs) {
|
|
133
|
+
if ('SIGN' === signingInput.inputType) {
|
|
134
|
+
signingInput.value = signatureImage;
|
|
135
|
+
} else if ('INITIAL' === signingInput.inputType) {
|
|
136
|
+
signingInput.value = initialImage;
|
|
137
|
+
}
|
|
68
138
|
}
|
|
69
139
|
}
|
|
70
140
|
}
|
|
141
|
+
if (validate()) {
|
|
142
|
+
props.valueChangeHandler({
|
|
143
|
+
signers
|
|
144
|
+
});
|
|
145
|
+
}
|
|
71
146
|
}
|
|
72
|
-
|
|
73
|
-
props.valueChangeHandler(signers);
|
|
74
|
-
}
|
|
75
|
-
}, [initialImage, signatureImage, refresher]);
|
|
147
|
+
}, [initialImage, signatureImage, refresher, placementsChanged]);
|
|
76
148
|
const showInput = mode => {
|
|
149
|
+
if (props.config.signaturePlacementStrategy === 'DYNAMIC') {
|
|
150
|
+
const existingImage = mode === 'SIGN' ? signatureImage || (systemSignatures === null || systemSignatures === void 0 ? void 0 : systemSignatures.signature) : initialImage || (systemSignatures === null || systemSignatures === void 0 ? void 0 : systemSignatures.initial);
|
|
151
|
+
if (existingImage) {
|
|
152
|
+
const dataUrl = typeof existingImage === 'object' ? existingImage.url : existingImage;
|
|
153
|
+
document.body.style.cursor = 'grabbing';
|
|
154
|
+
setGrabbedItem({
|
|
155
|
+
type: mode,
|
|
156
|
+
imageDataUrl: dataUrl,
|
|
157
|
+
width: mode === 'SIGN' ? 200 : 80,
|
|
158
|
+
height: 80
|
|
159
|
+
});
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
77
163
|
setInputMode(mode);
|
|
78
164
|
setOpen(true);
|
|
79
165
|
};
|
|
@@ -85,6 +171,54 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
85
171
|
setInitialImage(dataUrl);
|
|
86
172
|
}
|
|
87
173
|
setOpen(false);
|
|
174
|
+
if (props.config.signaturePlacementStrategy === 'DYNAMIC') {
|
|
175
|
+
document.body.style.cursor = 'grabbing';
|
|
176
|
+
setGrabbedItem({
|
|
177
|
+
type: inputMode,
|
|
178
|
+
imageDataUrl: dataUrl,
|
|
179
|
+
width: inputMode === 'SIGN' ? 200 : 80,
|
|
180
|
+
height: 80
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const grabText = () => {
|
|
185
|
+
setTextDialogOpen(true);
|
|
186
|
+
setTextDialogValue('');
|
|
187
|
+
};
|
|
188
|
+
const confirmText = () => {
|
|
189
|
+
if (!textDialogValue.trim()) return;
|
|
190
|
+
setTextDialogOpen(false);
|
|
191
|
+
document.body.style.cursor = 'grabbing';
|
|
192
|
+
setGrabbedItem({
|
|
193
|
+
type: 'TEXT',
|
|
194
|
+
content: textDialogValue.trim(),
|
|
195
|
+
width: 200,
|
|
196
|
+
height: 48
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
const grabDate = () => {
|
|
200
|
+
const today = new Date().toLocaleDateString('en-ZA', {
|
|
201
|
+
year: 'numeric',
|
|
202
|
+
month: 'long',
|
|
203
|
+
day: 'numeric'
|
|
204
|
+
});
|
|
205
|
+
document.body.style.cursor = 'grabbing';
|
|
206
|
+
setGrabbedItem({
|
|
207
|
+
type: 'DATE',
|
|
208
|
+
content: today,
|
|
209
|
+
width: 160,
|
|
210
|
+
height: 32
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
const confirmReset = () => {
|
|
214
|
+
setSignatureImage(null);
|
|
215
|
+
setInitialImage(null);
|
|
216
|
+
setGrabbedItem(null);
|
|
217
|
+
document.body.style.cursor = 'default';
|
|
218
|
+
if (dynamicContainerRef.current) {
|
|
219
|
+
dynamicContainerRef.current.clearPlacements();
|
|
220
|
+
}
|
|
221
|
+
setResetConfirmOpen(false);
|
|
88
222
|
};
|
|
89
223
|
const sign = (method, data) => {
|
|
90
224
|
setSigning(true);
|
|
@@ -144,7 +278,7 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
144
278
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
145
279
|
id: 'template',
|
|
146
280
|
style: {
|
|
147
|
-
font: 'italic
|
|
281
|
+
font: 'italic 64px Brush Script MT, Brush Script Std, cursive',
|
|
148
282
|
background: 'transparent',
|
|
149
283
|
padding: '8px'
|
|
150
284
|
}
|
|
@@ -182,9 +316,38 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
182
316
|
setOpen(false);
|
|
183
317
|
} else {
|
|
184
318
|
sign(mode, data);
|
|
319
|
+
setOpen(false);
|
|
185
320
|
}
|
|
186
321
|
}
|
|
187
|
-
}))), /*#__PURE__*/_react.default.createElement(
|
|
322
|
+
}))), /*#__PURE__*/_react.default.createElement(_Dialog.default, {
|
|
323
|
+
open: textDialogOpen,
|
|
324
|
+
maxWidth: "sm",
|
|
325
|
+
fullWidth: true,
|
|
326
|
+
onClose: () => setTextDialogOpen(false)
|
|
327
|
+
}, /*#__PURE__*/_react.default.createElement(_DialogTitle.default, null, "Enter Text"), /*#__PURE__*/_react.default.createElement(_DialogContent.default, null, /*#__PURE__*/_react.default.createElement(_TextField.default, {
|
|
328
|
+
autoFocus: true,
|
|
329
|
+
fullWidth: true,
|
|
330
|
+
margin: "dense",
|
|
331
|
+
label: "Text",
|
|
332
|
+
value: textDialogValue,
|
|
333
|
+
onChange: e => setTextDialogValue(e.target.value),
|
|
334
|
+
onKeyDown: e => {
|
|
335
|
+
if (e.key === 'Enter') confirmText();
|
|
336
|
+
}
|
|
337
|
+
})), /*#__PURE__*/_react.default.createElement(_DialogActions.default, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
338
|
+
onClick: () => setTextDialogOpen(false)
|
|
339
|
+
}, "Cancel"), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
340
|
+
onClick: confirmText,
|
|
341
|
+
disabled: !textDialogValue.trim()
|
|
342
|
+
}, "Grab"))), /*#__PURE__*/_react.default.createElement(_Dialog.default, {
|
|
343
|
+
open: resetConfirmOpen,
|
|
344
|
+
onClose: () => setResetConfirmOpen(false)
|
|
345
|
+
}, /*#__PURE__*/_react.default.createElement(_DialogTitle.default, null, "Reset All"), /*#__PURE__*/_react.default.createElement(_DialogContent.default, null, "This action will clear all placed items and signature/initial images. Are you sure?"), /*#__PURE__*/_react.default.createElement(_DialogActions.default, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
346
|
+
onClick: () => setResetConfirmOpen(false)
|
|
347
|
+
}, "Cancel"), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
348
|
+
onClick: confirmReset,
|
|
349
|
+
color: "error"
|
|
350
|
+
}, "Reset"))), /*#__PURE__*/_react.default.createElement("div", {
|
|
188
351
|
className: "doc-container-toolbar",
|
|
189
352
|
style: {
|
|
190
353
|
height: '64px',
|
|
@@ -200,6 +363,7 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
200
363
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
201
364
|
className: 'col-*-*'
|
|
202
365
|
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
366
|
+
color: 'success',
|
|
203
367
|
variant: 'text',
|
|
204
368
|
size: "large",
|
|
205
369
|
style: {
|
|
@@ -214,6 +378,7 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
214
378
|
color: 'rgba(0, 0, 0, 0.54)'
|
|
215
379
|
})
|
|
216
380
|
}, "INITIAL"), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
381
|
+
color: 'success',
|
|
217
382
|
variant: 'text',
|
|
218
383
|
size: "large",
|
|
219
384
|
style: {
|
|
@@ -224,10 +389,48 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
224
389
|
showInput('SIGN');
|
|
225
390
|
},
|
|
226
391
|
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
227
|
-
id: 'SIGN'
|
|
392
|
+
id: 'SIGN'
|
|
393
|
+
})
|
|
394
|
+
}, "SIGN"), props.config.signaturePlacementStrategy === 'DYNAMIC' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
395
|
+
color: 'inherit',
|
|
396
|
+
variant: 'text',
|
|
397
|
+
size: "large",
|
|
398
|
+
style: {
|
|
399
|
+
width: '100px',
|
|
400
|
+
height: '48px'
|
|
401
|
+
},
|
|
402
|
+
onClick: grabText,
|
|
403
|
+
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
404
|
+
id: 'EDIT',
|
|
228
405
|
color: 'rgba(0, 0, 0, 0.54)'
|
|
229
406
|
})
|
|
230
|
-
}, "
|
|
407
|
+
}, "TEXT"), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
408
|
+
color: 'inherit',
|
|
409
|
+
variant: 'text',
|
|
410
|
+
size: "large",
|
|
411
|
+
style: {
|
|
412
|
+
width: '100px',
|
|
413
|
+
height: '48px'
|
|
414
|
+
},
|
|
415
|
+
onClick: grabDate,
|
|
416
|
+
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
417
|
+
id: 'CALENDAR',
|
|
418
|
+
color: 'rgba(0, 0, 0, 0.54)'
|
|
419
|
+
})
|
|
420
|
+
}, "DATE"), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
421
|
+
color: 'error',
|
|
422
|
+
variant: 'text',
|
|
423
|
+
size: "large",
|
|
424
|
+
style: {
|
|
425
|
+
width: '100px',
|
|
426
|
+
height: '48px'
|
|
427
|
+
},
|
|
428
|
+
onClick: () => setResetConfirmOpen(true),
|
|
429
|
+
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
430
|
+
id: 'CLEAR',
|
|
431
|
+
color: 'rgba(0, 0, 0, 0.54)'
|
|
432
|
+
})
|
|
433
|
+
}, "RESET"))))), /*#__PURE__*/_react.default.createElement("div", {
|
|
231
434
|
className: "doc-container-body",
|
|
232
435
|
style: {
|
|
233
436
|
flex: 1,
|
|
@@ -243,10 +446,15 @@ const AgilitySignaturePanel = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_rea
|
|
|
243
446
|
signatureImage: signatureImage,
|
|
244
447
|
initialImage: initialImage,
|
|
245
448
|
refresher: refresher
|
|
246
|
-
}) : /*#__PURE__*/_react.default.createElement(
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
449
|
+
}) : /*#__PURE__*/_react.default.createElement(_DynamicSignatureDocumentContainer.default, {
|
|
450
|
+
ref: dynamicContainerRef,
|
|
451
|
+
file: pdf,
|
|
452
|
+
grabbedItem: grabbedItem,
|
|
453
|
+
onDrop: () => {
|
|
454
|
+
setGrabbedItem(null);
|
|
455
|
+
setPlacementsChanged(prev => !prev);
|
|
456
|
+
},
|
|
457
|
+
onPlacementsChange: () => setPlacementsChanged(prev => !prev)
|
|
458
|
+
})));
|
|
251
459
|
}));
|
|
252
460
|
var _default = exports.default = AgilitySignaturePanel;
|