@zengenti/contensis-react-base 3.0.2-beta.1 → 3.0.2-beta.11
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/cjs/{App-ee485b92.js → App-81a45001.js} +111 -427
- package/cjs/App-81a45001.js.map +1 -0
- package/cjs/ContensisDeliveryApi-de88df2a.js +231 -0
- package/cjs/ContensisDeliveryApi-de88df2a.js.map +1 -0
- package/cjs/{RouteLoader-3aa6456e.js → RouteLoader-47d70a26.js} +23 -37
- package/{esm/RouteLoader-5171c63f.js.map → cjs/RouteLoader-47d70a26.js.map} +1 -1
- package/cjs/{ToJs-a9a8522b.js → ToJs-61c03582.js} +3 -4
- package/cjs/{ToJs-a9a8522b.js.map → ToJs-61c03582.js.map} +1 -1
- package/cjs/client.js +20 -27
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +124 -188
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +15 -154
- package/cjs/forms.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-7c363211.js} +1 -4
- package/cjs/{fromJSLeaveImmer-e74c673c.js.map → fromJSLeaveImmer-7c363211.js.map} +1 -1
- package/cjs/{login-840860bc.js → login-51b66359.js} +64 -113
- package/cjs/login-51b66359.js.map +1 -0
- package/cjs/{reducers-3a4f8971.js → reducers-9afb5f89.js} +14 -31
- package/cjs/reducers-9afb5f89.js.map +1 -0
- package/cjs/redux.js +17 -17
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +6 -7
- package/cjs/routing.js.map +1 -1
- package/cjs/{sagas-e2a34262.js → sagas-7fe150ac.js} +184 -283
- package/cjs/sagas-7fe150ac.js.map +1 -0
- package/cjs/search.js +56 -82
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-656da4b7.js → selectors-c76c2676.js} +84 -7
- package/cjs/selectors-c76c2676.js.map +1 -0
- package/cjs/urls-6fcaf4c6.js.map +1 -1
- package/cjs/user.js +4 -13
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +45 -53
- package/cjs/util.js.map +1 -1
- package/cjs/{version-78dfc3bd.js → version-38afaf2a.js} +45 -158
- package/cjs/version-38afaf2a.js.map +1 -0
- package/cjs/version-886f49d8.js +98 -0
- package/cjs/version-886f49d8.js.map +1 -0
- package/esm/{App-640239d2.js → App-5f914483.js} +93 -407
- package/esm/App-5f914483.js.map +1 -0
- package/esm/ContensisDeliveryApi-ad06857d.js +227 -0
- package/esm/ContensisDeliveryApi-ad06857d.js.map +1 -0
- package/esm/{RouteLoader-5171c63f.js → RouteLoader-f5d5f733.js} +22 -36
- package/{cjs/RouteLoader-3aa6456e.js.map → esm/RouteLoader-f5d5f733.js.map} +1 -1
- package/esm/{ToJs-4e02a04d.js → ToJs-0066e629.js} +3 -4
- package/esm/{ToJs-4e02a04d.js.map → ToJs-0066e629.js.map} +1 -1
- package/esm/client.js +15 -22
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +119 -183
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +15 -154
- package/esm/forms.js.map +1 -1
- package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-e2dacd63.js} +1 -4
- package/esm/{fromJSLeaveImmer-0114ffcf.js.map → fromJSLeaveImmer-e2dacd63.js.map} +1 -1
- package/esm/{login-57395c9c.js → login-4d07c2de.js} +63 -112
- package/esm/login-4d07c2de.js.map +1 -0
- package/esm/{reducers-8e5d6232.js → reducers-3d5c37d1.js} +14 -31
- package/esm/reducers-3d5c37d1.js.map +1 -0
- package/esm/redux.js +9 -8
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +3 -4
- package/esm/routing.js.map +1 -1
- package/esm/{sagas-bb925ef4.js → sagas-6b43bc4e.js} +136 -236
- package/esm/sagas-6b43bc4e.js.map +1 -0
- package/esm/search.js +57 -83
- package/esm/search.js.map +1 -1
- package/esm/{selectors-a5e5835b.js → selectors-3f0d804d.js} +70 -7
- package/esm/selectors-3f0d804d.js.map +1 -0
- package/esm/urls-eac9a747.js.map +1 -1
- package/esm/user.js +6 -15
- package/esm/user.js.map +1 -1
- package/esm/util.js +42 -53
- package/esm/util.js.map +1 -1
- package/esm/{version-e3a5ec66.js → version-dd31c7f0.js} +32 -141
- package/esm/version-dd31c7f0.js.map +1 -0
- package/esm/version-f4629693.js +87 -0
- package/esm/version-f4629693.js.map +1 -0
- package/models/util/ContensisDeliveryApi.d.ts +6 -0
- package/models/util/index.d.ts +1 -0
- package/package.json +1 -1
- package/cjs/App-ee485b92.js.map +0 -1
- package/cjs/actions-8dc9e8de.js +0 -87
- package/cjs/actions-8dc9e8de.js.map +0 -1
- package/cjs/login-840860bc.js.map +0 -1
- package/cjs/reducers-3a4f8971.js.map +0 -1
- package/cjs/sagas-e2a34262.js.map +0 -1
- package/cjs/selectors-656da4b7.js.map +0 -1
- package/cjs/version-78dfc3bd.js.map +0 -1
- package/cjs/version-eba6d09b.js +0 -20
- package/cjs/version-eba6d09b.js.map +0 -1
- package/esm/App-640239d2.js.map +0 -1
- package/esm/actions-180948dd.js +0 -72
- package/esm/actions-180948dd.js.map +0 -1
- package/esm/login-57395c9c.js.map +0 -1
- package/esm/reducers-8e5d6232.js.map +0 -1
- package/esm/sagas-bb925ef4.js.map +0 -1
- package/esm/selectors-a5e5835b.js.map +0 -1
- package/esm/version-2485e2fb.js +0 -15
- package/esm/version-2485e2fb.js.map +0 -1
- package/esm/version-e3a5ec66.js.map +0 -1
package/esm/forms.js
CHANGED
|
@@ -75,7 +75,6 @@ var reducer = produce((state, action) => {
|
|
|
75
75
|
state[formId] = initialFormData;
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
|
-
|
|
79
78
|
case SET_FORM_DATA:
|
|
80
79
|
{
|
|
81
80
|
const {
|
|
@@ -96,7 +95,6 @@ var reducer = produce((state, action) => {
|
|
|
96
95
|
state[formId].settings = settings;
|
|
97
96
|
return;
|
|
98
97
|
}
|
|
99
|
-
|
|
100
98
|
case SET_CURRENT_PAGE:
|
|
101
99
|
{
|
|
102
100
|
const {
|
|
@@ -110,7 +108,6 @@ var reducer = produce((state, action) => {
|
|
|
110
108
|
state[formId].pagingInfo.pageCount = pageCount;
|
|
111
109
|
return;
|
|
112
110
|
}
|
|
113
|
-
|
|
114
111
|
case SET_FIELD_VALUE:
|
|
115
112
|
{
|
|
116
113
|
const {
|
|
@@ -121,17 +118,18 @@ var reducer = produce((state, action) => {
|
|
|
121
118
|
state[formId].data[id] = value;
|
|
122
119
|
return;
|
|
123
120
|
}
|
|
124
|
-
|
|
125
121
|
case SET_DEFAULT_FIELD_VALUE:
|
|
126
122
|
{
|
|
127
123
|
const {
|
|
128
124
|
formId,
|
|
129
125
|
value
|
|
130
126
|
} = action || {};
|
|
131
|
-
state[formId].data =
|
|
127
|
+
state[formId].data = {
|
|
128
|
+
...state[formId].data,
|
|
129
|
+
...value
|
|
130
|
+
};
|
|
132
131
|
return;
|
|
133
132
|
}
|
|
134
|
-
|
|
135
133
|
case SET_CHECKBOX_VALUE:
|
|
136
134
|
{
|
|
137
135
|
const {
|
|
@@ -141,12 +139,12 @@ var reducer = produce((state, action) => {
|
|
|
141
139
|
isChecked
|
|
142
140
|
} = action || {};
|
|
143
141
|
let values = state[formId].data[id] || [];
|
|
144
|
-
if (isChecked) state[formId].data[id] = {
|
|
142
|
+
if (isChecked) state[formId].data[id] = {
|
|
143
|
+
...values,
|
|
145
144
|
value
|
|
146
145
|
};else state[formId].data[id] = values.filter(v => v !== value);
|
|
147
146
|
return;
|
|
148
147
|
}
|
|
149
|
-
|
|
150
148
|
case SET_DATE_RANGE_VALUES:
|
|
151
149
|
{
|
|
152
150
|
const {
|
|
@@ -158,7 +156,6 @@ var reducer = produce((state, action) => {
|
|
|
158
156
|
state[formId].data[id][dateType] = value;
|
|
159
157
|
return;
|
|
160
158
|
}
|
|
161
|
-
|
|
162
159
|
case SET_FIELD_ERROR:
|
|
163
160
|
{
|
|
164
161
|
const {
|
|
@@ -168,7 +165,6 @@ var reducer = produce((state, action) => {
|
|
|
168
165
|
state[formId].fieldErrors = value;
|
|
169
166
|
return;
|
|
170
167
|
}
|
|
171
|
-
|
|
172
168
|
case SET_SUBMITTING_FORM:
|
|
173
169
|
{
|
|
174
170
|
const {
|
|
@@ -178,7 +174,6 @@ var reducer = produce((state, action) => {
|
|
|
178
174
|
state[formId].status.isSubmitting = isSubmitting;
|
|
179
175
|
return;
|
|
180
176
|
}
|
|
181
|
-
|
|
182
177
|
case SUBMIT_FORM_SUCCESS:
|
|
183
178
|
{
|
|
184
179
|
const {
|
|
@@ -190,7 +185,6 @@ var reducer = produce((state, action) => {
|
|
|
190
185
|
state[formId].status.validation.sent = false;
|
|
191
186
|
return;
|
|
192
187
|
}
|
|
193
|
-
|
|
194
188
|
case SUBMIT_FORM_FOR_VALIDATION:
|
|
195
189
|
{
|
|
196
190
|
const {
|
|
@@ -202,7 +196,6 @@ var reducer = produce((state, action) => {
|
|
|
202
196
|
state[formId].status.hasError = false;
|
|
203
197
|
return;
|
|
204
198
|
}
|
|
205
|
-
|
|
206
199
|
case SET_SUCCESS_MESSAGE:
|
|
207
200
|
{
|
|
208
201
|
const {
|
|
@@ -212,7 +205,6 @@ var reducer = produce((state, action) => {
|
|
|
212
205
|
state[formId].status.message.success = message;
|
|
213
206
|
return;
|
|
214
207
|
}
|
|
215
|
-
|
|
216
208
|
case SUBMIT_FORM_ERROR:
|
|
217
209
|
{
|
|
218
210
|
const {
|
|
@@ -223,7 +215,6 @@ var reducer = produce((state, action) => {
|
|
|
223
215
|
state[formId].status.validation.sent = false;
|
|
224
216
|
return;
|
|
225
217
|
}
|
|
226
|
-
|
|
227
218
|
case SET_FORM_ENTRIES:
|
|
228
219
|
{
|
|
229
220
|
const {
|
|
@@ -239,7 +230,6 @@ var reducer = produce((state, action) => {
|
|
|
239
230
|
state[formId].entries = entryObject;
|
|
240
231
|
return;
|
|
241
232
|
}
|
|
242
|
-
|
|
243
233
|
case SET_ERROR:
|
|
244
234
|
{
|
|
245
235
|
const {
|
|
@@ -249,7 +239,6 @@ var reducer = produce((state, action) => {
|
|
|
249
239
|
state[formId].status.isSubmitting = false;
|
|
250
240
|
return;
|
|
251
241
|
}
|
|
252
|
-
|
|
253
242
|
default:
|
|
254
243
|
return state;
|
|
255
244
|
}
|
|
@@ -259,7 +248,6 @@ const selectForms = state => state.forms;
|
|
|
259
248
|
const makeSelectPagedFields = formId => createSelector(selectForms, forms => {
|
|
260
249
|
if (forms !== null && forms !== void 0 && forms[formId]) {
|
|
261
250
|
var _forms$formId, _forms$formId2;
|
|
262
|
-
|
|
263
251
|
const pagingInfo = forms === null || forms === void 0 ? void 0 : (_forms$formId = forms[formId]) === null || _forms$formId === void 0 ? void 0 : _forms$formId.pagingInfo;
|
|
264
252
|
const fields = forms === null || forms === void 0 ? void 0 : (_forms$formId2 = forms[formId]) === null || _forms$formId2 === void 0 ? void 0 : _forms$formId2.fields;
|
|
265
253
|
if ((fields === null || fields === void 0 ? void 0 : fields.length) > 0 && pagingInfo.pageCount > 1) return fields.filter(f => f.groupId == pagingInfo.currentPageId);else return fields;
|
|
@@ -267,77 +255,62 @@ const makeSelectPagedFields = formId => createSelector(selectForms, forms => {
|
|
|
267
255
|
});
|
|
268
256
|
const makeSelectFormStatus = formId => createSelector(selectForms, forms => {
|
|
269
257
|
var _forms$formId3;
|
|
270
|
-
|
|
271
258
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId3 = forms[formId]) === null || _forms$formId3 === void 0 ? void 0 : _forms$formId3.status;
|
|
272
259
|
});
|
|
273
260
|
const makeSelectPagingInfo = formId => createSelector(selectForms, forms => {
|
|
274
261
|
var _forms$formId4;
|
|
275
|
-
|
|
276
262
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId4 = forms[formId]) === null || _forms$formId4 === void 0 ? void 0 : _forms$formId4.pagingInfo;
|
|
277
263
|
});
|
|
278
264
|
const makeSelectFormSettings = formId => createSelector(selectForms, forms => {
|
|
279
265
|
var _forms$formId5;
|
|
280
|
-
|
|
281
266
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId5 = forms[formId]) === null || _forms$formId5 === void 0 ? void 0 : _forms$formId5.settings;
|
|
282
267
|
});
|
|
283
268
|
const makeSelectFormFieldErrors = formId => createSelector(selectForms, forms => {
|
|
284
269
|
var _forms$formId6;
|
|
285
|
-
|
|
286
270
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId6 = forms[formId]) === null || _forms$formId6 === void 0 ? void 0 : _forms$formId6.fieldErrors;
|
|
287
271
|
});
|
|
288
272
|
const makeSelectFormEntries = formId => createSelector(selectForms, forms => {
|
|
289
273
|
var _forms$formId7;
|
|
290
|
-
|
|
291
274
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId7 = forms[formId]) === null || _forms$formId7 === void 0 ? void 0 : _forms$formId7.entries;
|
|
292
275
|
});
|
|
293
276
|
const makeSelectFormPostData = formId => createSelector(selectForms, forms => {
|
|
294
277
|
var _forms$formId8;
|
|
295
|
-
|
|
296
278
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId8 = forms[formId]) === null || _forms$formId8 === void 0 ? void 0 : _forms$formId8.data;
|
|
297
279
|
});
|
|
298
280
|
const makeSelectIsLoading = formId => createSelector(selectForms, forms => {
|
|
299
281
|
var _forms$formId9;
|
|
300
|
-
|
|
301
282
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId9 = forms[formId]) === null || _forms$formId9 === void 0 ? void 0 : _forms$formId9.status.isLoading;
|
|
302
283
|
});
|
|
303
284
|
const makeSelectIsSubmitting = formId => createSelector(selectForms, forms => {
|
|
304
285
|
var _forms$formId10;
|
|
305
|
-
|
|
306
286
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId10 = forms[formId]) === null || _forms$formId10 === void 0 ? void 0 : _forms$formId10.status.isSubmitting;
|
|
307
287
|
});
|
|
308
288
|
const makeSelectHasSuccess = formId => createSelector(selectForms, forms => {
|
|
309
289
|
var _forms$formId11;
|
|
310
|
-
|
|
311
290
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId11 = forms[formId]) === null || _forms$formId11 === void 0 ? void 0 : _forms$formId11.status.hasSuccess;
|
|
312
291
|
});
|
|
313
292
|
const makeSelectHasError = formId => createSelector(selectForms, forms => {
|
|
314
293
|
var _forms$formId12;
|
|
315
|
-
|
|
316
294
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId12 = forms[formId]) === null || _forms$formId12 === void 0 ? void 0 : _forms$formId12.status.hasError;
|
|
317
295
|
});
|
|
318
296
|
const makeSelectFormFields = formId => createSelector(selectForms, forms => {
|
|
319
297
|
var _forms$formId13;
|
|
320
|
-
|
|
321
298
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId13 = forms[formId]) === null || _forms$formId13 === void 0 ? void 0 : _forms$formId13.fields;
|
|
322
299
|
});
|
|
323
300
|
const makeSelectDefaultLang = formId => createSelector(selectForms, forms => {
|
|
324
301
|
var _forms$formId14;
|
|
325
|
-
|
|
326
302
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId14 = forms[formId]) === null || _forms$formId14 === void 0 ? void 0 : _forms$formId14.defaultLanguage;
|
|
327
303
|
});
|
|
328
304
|
const makeSelectFormSuccessMessage = formId => createSelector(selectForms, forms => {
|
|
329
305
|
var _forms$formId15;
|
|
330
|
-
|
|
331
306
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId15 = forms[formId]) === null || _forms$formId15 === void 0 ? void 0 : _forms$formId15.status.messages.success;
|
|
332
307
|
});
|
|
333
308
|
const makeSelectFormValidationSent = formId => createSelector(selectForms, forms => {
|
|
334
309
|
var _forms$formId16;
|
|
335
|
-
|
|
336
310
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId16 = forms[formId]) === null || _forms$formId16 === void 0 ? void 0 : _forms$formId16.status.validation.sent;
|
|
337
311
|
});
|
|
338
312
|
const makeSelectFormGroup$1 = formId => createSelector(selectForms, forms => {
|
|
339
313
|
var _forms$formId17;
|
|
340
|
-
|
|
341
314
|
return forms === null || forms === void 0 ? void 0 : (_forms$formId17 = forms[formId]) === null || _forms$formId17 === void 0 ? void 0 : _forms$formId17.groups;
|
|
342
315
|
});
|
|
343
316
|
const selectors = {
|
|
@@ -400,11 +373,11 @@ const postForm = async formObj => {
|
|
|
400
373
|
const submitted = await request(URI, options);
|
|
401
374
|
return submitted;
|
|
402
375
|
};
|
|
403
|
-
|
|
404
376
|
const request = async (url, options) => {
|
|
405
377
|
return fetch(url, options).then(response => response.json()).then(result => {
|
|
406
378
|
return result;
|
|
407
|
-
})
|
|
379
|
+
})
|
|
380
|
+
// eslint-disable-next-line no-console
|
|
408
381
|
.catch(error => console.log('error', error));
|
|
409
382
|
};
|
|
410
383
|
|
|
@@ -412,14 +385,12 @@ const domains = ['1033edge.com', '11mail.com', '123.com', '123box.net', '123indi
|
|
|
412
385
|
|
|
413
386
|
const doA11yValidation = (v, field, formValidationSent) => {
|
|
414
387
|
const error = doValidateField(field, v);
|
|
415
|
-
|
|
416
388
|
if (JSON.stringify(field.validations) !== '{}') {
|
|
417
389
|
if (((v === null || v === void 0 ? void 0 : v.length) >= 1 || formValidationSent) && (error === null || error === void 0 ? void 0 : error.fieldId) === field.id) return 'true';else if ((v === null || v === void 0 ? void 0 : v.length) >= 1) return 'false';else return '';
|
|
418
390
|
}
|
|
419
391
|
};
|
|
420
392
|
const doValidateField = (field, value) => {
|
|
421
393
|
var _field$validations, _field$validations$re;
|
|
422
|
-
|
|
423
394
|
const isRequired = field.validations && field.validations.required;
|
|
424
395
|
const minLength = field.validations && field.validations.minLength;
|
|
425
396
|
const maxLength = field.validations && field.validations.maxLength;
|
|
@@ -427,10 +398,8 @@ const doValidateField = (field, value) => {
|
|
|
427
398
|
const integer = field.dataType === 'integer';
|
|
428
399
|
const decimal = field.dataType === 'decimal';
|
|
429
400
|
const isBusinessEmail = field.id === 'businessEmail';
|
|
430
|
-
|
|
431
401
|
if (isRequired && (value === null || value === void 0 ? void 0 : value.length) <= 0) {
|
|
432
402
|
var _isRequired$message, _field$name;
|
|
433
|
-
|
|
434
403
|
const errorMessage = (isRequired === null || isRequired === void 0 ? void 0 : (_isRequired$message = isRequired.message) === null || _isRequired$message === void 0 ? void 0 : _isRequired$message['en-GB']) || `${(_field$name = field.name) === null || _field$name === void 0 ? void 0 : _field$name['en-GB']} is required`;
|
|
435
404
|
return {
|
|
436
405
|
fieldId: field.id,
|
|
@@ -438,7 +407,6 @@ const doValidateField = (field, value) => {
|
|
|
438
407
|
message: errorMessage
|
|
439
408
|
};
|
|
440
409
|
}
|
|
441
|
-
|
|
442
410
|
if (minLength && minLength.value > value.length) {
|
|
443
411
|
const errorMessage = minLength.message ? minLength.message['en-GB'] : `Minimum characters ${minLength.value}`;
|
|
444
412
|
return {
|
|
@@ -447,7 +415,6 @@ const doValidateField = (field, value) => {
|
|
|
447
415
|
message: errorMessage
|
|
448
416
|
};
|
|
449
417
|
}
|
|
450
|
-
|
|
451
418
|
if (maxLength && maxLength.value < value.length) {
|
|
452
419
|
const errorMessage = maxLength.message && maxLength.message['en-GB'] ? maxLength.message['en-GB'] : `Maximum characters ${maxLength.value}`;
|
|
453
420
|
return {
|
|
@@ -457,14 +424,10 @@ const doValidateField = (field, value) => {
|
|
|
457
424
|
};
|
|
458
425
|
}
|
|
459
426
|
/** Check Regex and Business Emails */
|
|
460
|
-
|
|
461
|
-
|
|
462
427
|
if (hasRegex && value.length >= 1) {
|
|
463
428
|
var _r$message;
|
|
464
|
-
|
|
465
429
|
const r = field.validations.regex;
|
|
466
430
|
const msg = (r === null || r === void 0 ? void 0 : (_r$message = r.message) === null || _r$message === void 0 ? void 0 : _r$message['en-GB']) || `${field.name['en-GB']} is invalid`;
|
|
467
|
-
|
|
468
431
|
if (isValidRegex(field, value) && isBusinessEmail) {
|
|
469
432
|
if (!isBusinessEmailValid(field, value)) {
|
|
470
433
|
return {
|
|
@@ -481,10 +444,8 @@ const doValidateField = (field, value) => {
|
|
|
481
444
|
};
|
|
482
445
|
}
|
|
483
446
|
}
|
|
484
|
-
|
|
485
447
|
if (integer) {
|
|
486
448
|
const isInteger = value % 1 === 0;
|
|
487
|
-
|
|
488
449
|
if (!isInteger) {
|
|
489
450
|
const errorMessage = `${value} is not an ${field.dataType}`;
|
|
490
451
|
return {
|
|
@@ -494,10 +455,8 @@ const doValidateField = (field, value) => {
|
|
|
494
455
|
};
|
|
495
456
|
}
|
|
496
457
|
}
|
|
497
|
-
|
|
498
458
|
if (decimal) {
|
|
499
459
|
const isDecimal = value % 1 !== 0;
|
|
500
|
-
|
|
501
460
|
if (!isDecimal) {
|
|
502
461
|
const errorMessage = `${value} is not an ${field.dataType}`;
|
|
503
462
|
return {
|
|
@@ -508,13 +467,11 @@ const doValidateField = (field, value) => {
|
|
|
508
467
|
}
|
|
509
468
|
}
|
|
510
469
|
};
|
|
511
|
-
|
|
512
470
|
const isValidRegex = (field, value) => {
|
|
513
471
|
const regex = field.validations.regex.pattern;
|
|
514
472
|
const regexPattern = RegExp(regex);
|
|
515
473
|
if (!regexPattern.test(value)) return false;else return true;
|
|
516
474
|
};
|
|
517
|
-
|
|
518
475
|
const isBusinessEmailValid = (field, value) => {
|
|
519
476
|
const domain = value.split('@').pop();
|
|
520
477
|
if (!domains.includes(domain)) return true;else return false;
|
|
@@ -522,7 +479,6 @@ const isBusinessEmailValid = (field, value) => {
|
|
|
522
479
|
|
|
523
480
|
const doCreateMessage = (type, minLength, maxLength, currentLength, defaultLanguage) => {
|
|
524
481
|
if (!type) return null;
|
|
525
|
-
|
|
526
482
|
switch (type) {
|
|
527
483
|
case 'min':
|
|
528
484
|
{
|
|
@@ -530,28 +486,24 @@ const doCreateMessage = (type, minLength, maxLength, currentLength, defaultLangu
|
|
|
530
486
|
const minLengthVal = minLength && minLength.value;
|
|
531
487
|
const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
|
|
532
488
|
const minText = `Minimum of ${minLengthVal.toString()} characters`;
|
|
533
|
-
|
|
534
489
|
if (errorMessage) {
|
|
535
490
|
return errorMessage;
|
|
536
491
|
} else {
|
|
537
492
|
return minText;
|
|
538
493
|
}
|
|
539
494
|
}
|
|
540
|
-
|
|
541
495
|
case 'max':
|
|
542
496
|
{
|
|
543
497
|
if (!maxLength) return;
|
|
544
498
|
const maxLengthVal = maxLength && maxLength.value;
|
|
545
499
|
const errorMessage = maxLength && maxLength.message && maxLength.message[defaultLanguage];
|
|
546
500
|
const maxText = `Maximum of ${maxLengthVal.toString()} characters`;
|
|
547
|
-
|
|
548
501
|
if (errorMessage) {
|
|
549
502
|
return errorMessage;
|
|
550
503
|
} else {
|
|
551
504
|
return maxText;
|
|
552
505
|
}
|
|
553
506
|
}
|
|
554
|
-
|
|
555
507
|
case 'between':
|
|
556
508
|
{
|
|
557
509
|
if (!maxLength || !minLength) return;
|
|
@@ -559,7 +511,6 @@ const doCreateMessage = (type, minLength, maxLength, currentLength, defaultLangu
|
|
|
559
511
|
const maxLengthVal = maxLength && maxLength.value;
|
|
560
512
|
const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
|
|
561
513
|
const rangeText = `Between ${minLengthVal.toString()}-${maxLengthVal.toString()} characters)`;
|
|
562
|
-
|
|
563
514
|
if (errorMessage) {
|
|
564
515
|
return errorMessage;
|
|
565
516
|
} else if (currentLength < minLengthVal) {
|
|
@@ -572,16 +523,13 @@ const doCreateMessage = (type, minLength, maxLength, currentLength, defaultLangu
|
|
|
572
523
|
return rangeText;
|
|
573
524
|
}
|
|
574
525
|
}
|
|
575
|
-
|
|
576
526
|
default:
|
|
577
527
|
return null;
|
|
578
528
|
}
|
|
579
529
|
};
|
|
580
530
|
const getFieldType = field => {
|
|
581
531
|
var _field$editor, _field$editor$propert;
|
|
582
|
-
|
|
583
532
|
if (!field) return null;
|
|
584
|
-
|
|
585
533
|
if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
|
|
586
534
|
return 'textarea';
|
|
587
535
|
} else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
|
|
@@ -606,7 +554,6 @@ const getFieldType = field => {
|
|
|
606
554
|
};
|
|
607
555
|
|
|
608
556
|
const sagas = [takeEvery(SUBMIT_FORM_SUCCESS, onFormSuccess), takeEvery(SUBMIT_FORM_FOR_VALIDATION, doValidateForm), takeEvery(SUBMIT_FORM, onSubmitForm), takeEvery(SET_FORM_ID, doFetchForm), takeLatest(VALIDATE_FIELD, onValidateField$1), takeEvery(PAGE_FORWARD, doTogglePage), takeEvery(PAGE_BACK, doTogglePage), takeEvery(SET_FORM_DATA, getEntryPickerData), takeLatest(SET_FORM_DATA, setDefaultValueFields)];
|
|
609
|
-
|
|
610
557
|
function* doValidateForm(action) {
|
|
611
558
|
const {
|
|
612
559
|
formId
|
|
@@ -617,7 +564,6 @@ function* doValidateForm(action) {
|
|
|
617
564
|
formId
|
|
618
565
|
});
|
|
619
566
|
}
|
|
620
|
-
|
|
621
567
|
function* onValidateField$1(action) {
|
|
622
568
|
const {
|
|
623
569
|
formId,
|
|
@@ -626,7 +572,6 @@ function* onValidateField$1(action) {
|
|
|
626
572
|
} = action;
|
|
627
573
|
if ((value === null || value === void 0 ? void 0 : value.length) >= 1) yield call(onValidateSingleField, formId, id, value);
|
|
628
574
|
}
|
|
629
|
-
|
|
630
575
|
function* validateGroupfields(formId, groupId) {
|
|
631
576
|
const state = yield select();
|
|
632
577
|
const selectPostData = makeSelectFormPostData(formId);
|
|
@@ -637,11 +582,9 @@ function* validateGroupfields(formId, groupId) {
|
|
|
637
582
|
let newErrors = [];
|
|
638
583
|
groupFields.forEach(field => {
|
|
639
584
|
let val = '';
|
|
640
|
-
|
|
641
585
|
if (postData[field.id]) {
|
|
642
586
|
val = postData[field.id];
|
|
643
587
|
}
|
|
644
|
-
|
|
645
588
|
const err = doValidateField(field, val);
|
|
646
589
|
if (err) newErrors.push(err);
|
|
647
590
|
});
|
|
@@ -651,7 +594,6 @@ function* validateGroupfields(formId, groupId) {
|
|
|
651
594
|
value: newErrors
|
|
652
595
|
});
|
|
653
596
|
}
|
|
654
|
-
|
|
655
597
|
function* onValidateAllFields(formId) {
|
|
656
598
|
const state = yield select();
|
|
657
599
|
const selectPostData = makeSelectFormPostData(formId);
|
|
@@ -661,11 +603,9 @@ function* onValidateAllFields(formId) {
|
|
|
661
603
|
let newErrors = [];
|
|
662
604
|
fields.forEach(field => {
|
|
663
605
|
let val = '';
|
|
664
|
-
|
|
665
606
|
if (postData[field.id]) {
|
|
666
607
|
val = postData[field.id];
|
|
667
608
|
}
|
|
668
|
-
|
|
669
609
|
const err = doValidateField(field, val);
|
|
670
610
|
if (err) newErrors.push(err);
|
|
671
611
|
});
|
|
@@ -675,7 +615,6 @@ function* onValidateAllFields(formId) {
|
|
|
675
615
|
value: newErrors
|
|
676
616
|
});
|
|
677
617
|
}
|
|
678
|
-
|
|
679
618
|
function* onValidateSingleField(formId, fieldId, value) {
|
|
680
619
|
const state = yield select();
|
|
681
620
|
const selectFormFields = makeSelectFormFields(formId);
|
|
@@ -683,8 +622,8 @@ function* onValidateSingleField(formId, fieldId, value) {
|
|
|
683
622
|
const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
|
|
684
623
|
const errors = selectFormFieldErrors(state);
|
|
685
624
|
const fieldData = fields.find(f => f.id == fieldId);
|
|
686
|
-
const newErrors = [];
|
|
687
|
-
|
|
625
|
+
const newErrors = [];
|
|
626
|
+
//loop through current errors to remove any of the item we currently edit
|
|
688
627
|
errors.forEach(error => {
|
|
689
628
|
if (error.fieldId !== fieldId) {
|
|
690
629
|
//push any existing errors to new array
|
|
@@ -699,7 +638,6 @@ function* onValidateSingleField(formId, fieldId, value) {
|
|
|
699
638
|
value: newErrors
|
|
700
639
|
});
|
|
701
640
|
}
|
|
702
|
-
|
|
703
641
|
function* doTogglePage(action) {
|
|
704
642
|
const {
|
|
705
643
|
formId,
|
|
@@ -708,11 +646,9 @@ function* doTogglePage(action) {
|
|
|
708
646
|
const state = yield select();
|
|
709
647
|
const selectFormGroups = makeSelectFormGroup(formId);
|
|
710
648
|
const formGroups = selectFormGroups(state);
|
|
711
|
-
|
|
712
649
|
if (action.type === PAGE_FORWARD) {
|
|
713
650
|
yield validateGroupfields(formId, formGroups[pageIndex].id);
|
|
714
651
|
}
|
|
715
|
-
|
|
716
652
|
yield put({
|
|
717
653
|
type: SET_CURRENT_PAGE,
|
|
718
654
|
formId: formId,
|
|
@@ -721,17 +657,13 @@ function* doTogglePage(action) {
|
|
|
721
657
|
pageIndex: pageIndex
|
|
722
658
|
});
|
|
723
659
|
}
|
|
724
|
-
|
|
725
660
|
function* doFetchForm(action) {
|
|
726
661
|
var _schema$groups;
|
|
727
|
-
|
|
728
662
|
const formId = action.formId;
|
|
729
663
|
const schema = yield getFormSchema(formId);
|
|
730
664
|
const groups = schema === null || schema === void 0 ? void 0 : (_schema$groups = schema.groups) === null || _schema$groups === void 0 ? void 0 : _schema$groups.filter(group => group.id !== 'private' && group.id !== 'settings');
|
|
731
|
-
|
|
732
665
|
if (formId && schema) {
|
|
733
666
|
var _schema$groups2, _submitButtonText$def;
|
|
734
|
-
|
|
735
667
|
if ((schema === null || schema === void 0 ? void 0 : (_schema$groups2 = schema.groups) === null || _schema$groups2 === void 0 ? void 0 : _schema$groups2.length) > 0) {
|
|
736
668
|
yield put({
|
|
737
669
|
type: SET_CURRENT_PAGE,
|
|
@@ -741,10 +673,10 @@ function* doFetchForm(action) {
|
|
|
741
673
|
pageCount: groups.length
|
|
742
674
|
});
|
|
743
675
|
}
|
|
744
|
-
|
|
745
676
|
const submitButtonText = schema.fields.find(f => f.id === 'submitButtonText');
|
|
746
677
|
const fields = schema === null || schema === void 0 ? void 0 : schema.fields.map(field => {
|
|
747
|
-
return {
|
|
678
|
+
return {
|
|
679
|
+
...field,
|
|
748
680
|
type: getFieldType(field)
|
|
749
681
|
};
|
|
750
682
|
});
|
|
@@ -760,18 +692,15 @@ function* doFetchForm(action) {
|
|
|
760
692
|
});
|
|
761
693
|
}
|
|
762
694
|
}
|
|
763
|
-
|
|
764
695
|
function* onFormSuccess(action) {
|
|
765
696
|
const state = yield select();
|
|
766
697
|
const selectFormFields = makeSelectFormFields(action.formId);
|
|
767
698
|
const fields = selectFormFields(state);
|
|
768
699
|
const redirect = fields.find(f => f.id === 'formSettingsRedirect');
|
|
769
700
|
const message = fields.find(f => f.id === 'formSettingsMessage');
|
|
770
|
-
|
|
771
701
|
if (redirect !== null && redirect !== void 0 && redirect.default) {
|
|
772
702
|
window.location.href = redirect.default['en-GB'];
|
|
773
703
|
}
|
|
774
|
-
|
|
775
704
|
if (message !== null && message !== void 0 && message.default) {
|
|
776
705
|
yield put({
|
|
777
706
|
type: SET_SUCCESS_MESSAGE,
|
|
@@ -780,7 +709,6 @@ function* onFormSuccess(action) {
|
|
|
780
709
|
});
|
|
781
710
|
}
|
|
782
711
|
}
|
|
783
|
-
|
|
784
712
|
function* onSubmitForm(action) {
|
|
785
713
|
const {
|
|
786
714
|
formId
|
|
@@ -789,10 +717,8 @@ function* onSubmitForm(action) {
|
|
|
789
717
|
const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
|
|
790
718
|
const errors = selectFormFieldErrors(state);
|
|
791
719
|
const canSubmit = (errors === null || errors === void 0 ? void 0 : errors.length) === 0;
|
|
792
|
-
|
|
793
720
|
if (canSubmit) {
|
|
794
721
|
var _formResObj$sys;
|
|
795
|
-
|
|
796
722
|
yield put({
|
|
797
723
|
type: SET_SUBMITTING_FORM,
|
|
798
724
|
isSubmitting: true,
|
|
@@ -805,7 +731,6 @@ function* onSubmitForm(action) {
|
|
|
805
731
|
formPost: rawData.data
|
|
806
732
|
};
|
|
807
733
|
const formResObj = yield postForm(formObj);
|
|
808
|
-
|
|
809
734
|
if (formResObj !== null && formResObj !== void 0 && (_formResObj$sys = formResObj.sys) !== null && _formResObj$sys !== void 0 && _formResObj$sys.id) {
|
|
810
735
|
yield put({
|
|
811
736
|
type: SUBMIT_FORM_SUCCESS,
|
|
@@ -819,7 +744,6 @@ function* onSubmitForm(action) {
|
|
|
819
744
|
}
|
|
820
745
|
}
|
|
821
746
|
}
|
|
822
|
-
|
|
823
747
|
function* setDefaultValueFields(action) {
|
|
824
748
|
const {
|
|
825
749
|
formId,
|
|
@@ -831,15 +755,12 @@ function* setDefaultValueFields(action) {
|
|
|
831
755
|
fields.forEach(field => {
|
|
832
756
|
if (field.dataType == 'string' && field.default) {
|
|
833
757
|
const val = field.default[defaultLanguage];
|
|
834
|
-
|
|
835
758
|
if (val) {
|
|
836
759
|
fieldObj[field.id] = val;
|
|
837
760
|
}
|
|
838
761
|
}
|
|
839
|
-
|
|
840
762
|
if (field.id == 'sourceEntry') {
|
|
841
763
|
const val = entryId;
|
|
842
|
-
|
|
843
764
|
if (val) {
|
|
844
765
|
fieldObj[field.id] = val;
|
|
845
766
|
}
|
|
@@ -851,7 +772,6 @@ function* setDefaultValueFields(action) {
|
|
|
851
772
|
value: fieldObj
|
|
852
773
|
});
|
|
853
774
|
}
|
|
854
|
-
|
|
855
775
|
function* getEntryPickerData(action) {
|
|
856
776
|
const {
|
|
857
777
|
formId,
|
|
@@ -859,7 +779,6 @@ function* getEntryPickerData(action) {
|
|
|
859
779
|
} = action;
|
|
860
780
|
const entriesToGet = fields.filter(f => f.dataFormat == 'entry');
|
|
861
781
|
let entriesList = [];
|
|
862
|
-
|
|
863
782
|
if (entriesToGet) {
|
|
864
783
|
entriesList = yield all(entriesToGet.map(entry => {
|
|
865
784
|
const entriesObj = {
|
|
@@ -882,7 +801,6 @@ const action = (type, payload = {}) => ({
|
|
|
882
801
|
type,
|
|
883
802
|
...payload
|
|
884
803
|
});
|
|
885
|
-
|
|
886
804
|
const onSubmit = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
|
|
887
805
|
formId
|
|
888
806
|
});
|
|
@@ -931,7 +849,6 @@ const actions = {
|
|
|
931
849
|
};
|
|
932
850
|
|
|
933
851
|
const ThemeContext = /*#__PURE__*/createContext();
|
|
934
|
-
|
|
935
852
|
const ThemeProvider = ({
|
|
936
853
|
children,
|
|
937
854
|
theme
|
|
@@ -942,7 +859,6 @@ const ThemeProvider = ({
|
|
|
942
859
|
theme: theme
|
|
943
860
|
}, children));
|
|
944
861
|
};
|
|
945
|
-
|
|
946
862
|
ThemeProvider.propTypes = {
|
|
947
863
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
|
|
948
864
|
theme: PropTypes.object
|
|
@@ -1007,7 +923,6 @@ const Label = ({
|
|
|
1007
923
|
className: "visuallyHidden"
|
|
1008
924
|
}, " (required)"));
|
|
1009
925
|
};
|
|
1010
|
-
|
|
1011
926
|
Label.propTypes = {
|
|
1012
927
|
className: PropTypes.string,
|
|
1013
928
|
label: PropTypes.string,
|
|
@@ -1065,7 +980,6 @@ const TextfieldStyled = styled.div.withConfig({
|
|
|
1065
980
|
}) => {
|
|
1066
981
|
return css(["display:", ";"], isHidden ? 'none' : 'block');
|
|
1067
982
|
});
|
|
1068
|
-
|
|
1069
983
|
const Textfield = ({
|
|
1070
984
|
className,
|
|
1071
985
|
field,
|
|
@@ -1157,7 +1071,6 @@ const Textfield = ({
|
|
|
1157
1071
|
d: "m2 8 4.418 4.667L14 4.659l-1.246-1.326-6.336 6.692-3.18-3.332L2 8Z"
|
|
1158
1072
|
}))));
|
|
1159
1073
|
};
|
|
1160
|
-
|
|
1161
1074
|
Textfield.propTypes = {
|
|
1162
1075
|
className: PropTypes.string,
|
|
1163
1076
|
field: PropTypes.any,
|
|
@@ -1264,7 +1177,6 @@ const Textarea = ({
|
|
|
1264
1177
|
d: "m2 8 4.418 4.667L14 4.659l-1.246-1.326-6.336 6.692-3.18-3.332L2 8Z"
|
|
1265
1178
|
}))));
|
|
1266
1179
|
};
|
|
1267
|
-
|
|
1268
1180
|
Textarea.propTypes = {
|
|
1269
1181
|
className: PropTypes.string,
|
|
1270
1182
|
field: PropTypes.any,
|
|
@@ -1302,7 +1214,6 @@ const HiddenField = ({
|
|
|
1302
1214
|
isHidden: true
|
|
1303
1215
|
});
|
|
1304
1216
|
};
|
|
1305
|
-
|
|
1306
1217
|
HiddenField.propTypes = {
|
|
1307
1218
|
className: PropTypes.string,
|
|
1308
1219
|
id: PropTypes.string,
|
|
@@ -1350,7 +1261,6 @@ const Dropdown = ({
|
|
|
1350
1261
|
}, val[defaultLanguage]);
|
|
1351
1262
|
})));
|
|
1352
1263
|
};
|
|
1353
|
-
|
|
1354
1264
|
Dropdown.propTypes = {
|
|
1355
1265
|
className: PropTypes.string,
|
|
1356
1266
|
formId: PropTypes.string,
|
|
@@ -1370,7 +1280,6 @@ const CheckboxStyled = styled.div.withConfig({
|
|
|
1370
1280
|
}) => {
|
|
1371
1281
|
return css(["", ""], useDefaultTheme && css([".checkbox-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;input{height:auto;width:auto;margin:0 4px 0 0;}label{display:inline-block;}}"]));
|
|
1372
1282
|
});
|
|
1373
|
-
|
|
1374
1283
|
const Checkbox = ({
|
|
1375
1284
|
className,
|
|
1376
1285
|
formId,
|
|
@@ -1387,18 +1296,15 @@ const Checkbox = ({
|
|
|
1387
1296
|
// NF change rules of hooks
|
|
1388
1297
|
let isDefaultChecked = defaultValue && defaultValue[defaultLanguage];
|
|
1389
1298
|
const [isChecked, setIsChecked] = useState(isDefaultChecked || '');
|
|
1390
|
-
|
|
1391
1299
|
switch (type) {
|
|
1392
1300
|
case 'multiple':
|
|
1393
1301
|
{
|
|
1394
1302
|
if (!validations) return null;
|
|
1395
1303
|
const isRequired = validations && validations.required ? true : false;
|
|
1396
1304
|
const cbValues = validations && validations.allowedValues && validations.allowedValues.values;
|
|
1397
|
-
|
|
1398
1305
|
const _handleChange = (value, isChecked) => {
|
|
1399
1306
|
setCheckboxValue(formId, id, value, isChecked);
|
|
1400
1307
|
};
|
|
1401
|
-
|
|
1402
1308
|
if (!cbValues || cbValues.length < 1) return null;
|
|
1403
1309
|
return /*#__PURE__*/React.createElement(CheckboxStyled, {
|
|
1404
1310
|
className: `checkbox-container`,
|
|
@@ -1426,14 +1332,12 @@ const Checkbox = ({
|
|
|
1426
1332
|
}));
|
|
1427
1333
|
}));
|
|
1428
1334
|
}
|
|
1429
|
-
|
|
1430
1335
|
case 'single':
|
|
1431
1336
|
{
|
|
1432
1337
|
const _handleChange = isChecked => {
|
|
1433
1338
|
setIsChecked(isChecked);
|
|
1434
1339
|
setCheckboxValue(formId, id, isChecked);
|
|
1435
1340
|
};
|
|
1436
|
-
|
|
1437
1341
|
return /*#__PURE__*/React.createElement(CheckboxStyled, {
|
|
1438
1342
|
className: `checkbox-container`,
|
|
1439
1343
|
useDefaultTheme: useDefaultTheme
|
|
@@ -1455,7 +1359,6 @@ const Checkbox = ({
|
|
|
1455
1359
|
}
|
|
1456
1360
|
}
|
|
1457
1361
|
};
|
|
1458
|
-
|
|
1459
1362
|
Checkbox.propTypes = {
|
|
1460
1363
|
className: PropTypes.string,
|
|
1461
1364
|
formId: PropTypes.string,
|
|
@@ -1477,7 +1380,6 @@ const RadioButtonStyled = styled.div.withConfig({
|
|
|
1477
1380
|
}) => {
|
|
1478
1381
|
return css(["", ""], useDefaultTheme && css([".radio-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;input{height:auto;width:auto;margin:0 4px 0 0;}label{display:inline-block;}}"]));
|
|
1479
1382
|
});
|
|
1480
|
-
|
|
1481
1383
|
const RadioButton = ({
|
|
1482
1384
|
className,
|
|
1483
1385
|
formId,
|
|
@@ -1521,7 +1423,6 @@ const RadioButton = ({
|
|
|
1521
1423
|
}));
|
|
1522
1424
|
}));
|
|
1523
1425
|
};
|
|
1524
|
-
|
|
1525
1426
|
RadioButton.propTypes = {
|
|
1526
1427
|
className: PropTypes.string,
|
|
1527
1428
|
formId: PropTypes.string,
|
|
@@ -1553,6 +1454,7 @@ RadioButton.propTypes = {
|
|
|
1553
1454
|
//m > minutes, eg ...T16:05:00 = 5
|
|
1554
1455
|
//t > abbreviated AM / PM, e.g. A or P
|
|
1555
1456
|
//tt > AM / PM, e.g. AM or PM
|
|
1457
|
+
|
|
1556
1458
|
const formatDate = (date, format = 'dd MMMM yyyy') => {
|
|
1557
1459
|
if (!date) return null;
|
|
1558
1460
|
const dateObj = new Date(date);
|
|
@@ -1564,8 +1466,9 @@ const formatDate = (date, format = 'dd MMMM yyyy') => {
|
|
|
1564
1466
|
const dayNameInt = dateObj.getDay();
|
|
1565
1467
|
const timeArr = dateString[1].split(':');
|
|
1566
1468
|
const hour = timeArr[0];
|
|
1567
|
-
const minute = timeArr[1];
|
|
1469
|
+
const minute = timeArr[1];
|
|
1568
1470
|
|
|
1471
|
+
//convert to abstract strings to avoid character replacement along the chain, eg. Monday would match 'M' month single parameter
|
|
1569
1472
|
const YEAR = ['&&', '&'];
|
|
1570
1473
|
const MONTH = ['££££', '£££', '££', '£'];
|
|
1571
1474
|
const DAY = ['%%%%', '%%%', '%%', '%'];
|
|
@@ -1577,16 +1480,13 @@ const formatDate = (date, format = 'dd MMMM yyyy') => {
|
|
|
1577
1480
|
.replace('MMMM', MONTH[0]).replace('MMM', MONTH[1]).replace('MM', MONTH[2]).replace('M', MONTH[3]).replace('dddd', DAY[0]).replace('ddd', DAY[1]).replace('dd', DAY[2]).replace('d', DAY[3]).replace('HH', HOUR24[0]).replace('H', HOUR24[1]).replace('hh', HOUR12[0]).replace('h', HOUR12[1]).replace('mm', MINUTE[0]).replace('m', MINUTE[1]).replace('tt', TF[0]).replace('t', TF[1]).replace(YEAR[0], year).replace(YEAR[1], year.slice(-2)).replace(MONTH[0], monthsLong[parseInt(month, 10)]).replace(MONTH[1], monthsShort[parseInt(month, 10)]).replace(MONTH[2], month).replace(MONTH[3], parseInt(month, 10)).replace(DAY[0], daysLong[dayNameInt]).replace(DAY[1], daysShort[dayNameInt]).replace(DAY[2], day).replace(DAY[3], parseInt(day, 10)).replace(HOUR24[0], hour).replace(HOUR24[1], parseInt(hour, 10)).replace(HOUR12[0], parseHour(hour)).replace(HOUR12[1], parseInt(parseHour(hour), 10)).replace(MINUTE[0], minute).replace(MINUTE[1], parseInt(minute, 10)).replace(TF[0], parseTF(hour)).replace(TF[1], parseTF(hour).slice(0, -1));
|
|
1578
1481
|
return formattedDate;
|
|
1579
1482
|
};
|
|
1580
|
-
|
|
1581
1483
|
const monthsShort = ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
1582
1484
|
const monthsLong = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
1583
1485
|
const daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
1584
1486
|
const daysLong = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
1585
|
-
|
|
1586
1487
|
const parseHour = hour => {
|
|
1587
1488
|
return hour > 12 ? hour - 12 : hour;
|
|
1588
1489
|
};
|
|
1589
|
-
|
|
1590
1490
|
const parseTF = hour => {
|
|
1591
1491
|
return hour > 11 ? 'PM' : 'AM';
|
|
1592
1492
|
};
|
|
@@ -1604,13 +1504,11 @@ const SingleDate = ({
|
|
|
1604
1504
|
const onlyPassedDates = validations && validations.pastDateTime;
|
|
1605
1505
|
const d = new Date();
|
|
1606
1506
|
const todaysDate = d.toISOString();
|
|
1607
|
-
|
|
1608
1507
|
const _handleChange = (formId, id, value) => {
|
|
1609
1508
|
const d = new Date(value);
|
|
1610
1509
|
const isoDate = d.toISOString();
|
|
1611
1510
|
setValue(formId, id, isoDate);
|
|
1612
1511
|
};
|
|
1613
|
-
|
|
1614
1512
|
return /*#__PURE__*/React.createElement("div", {
|
|
1615
1513
|
className: "date-container"
|
|
1616
1514
|
}, /*#__PURE__*/React.createElement(Label, {
|
|
@@ -1627,7 +1525,6 @@ const SingleDate = ({
|
|
|
1627
1525
|
onChange: e => _handleChange(formId, id, e.target.value)
|
|
1628
1526
|
}));
|
|
1629
1527
|
};
|
|
1630
|
-
|
|
1631
1528
|
SingleDate.propTypes = {
|
|
1632
1529
|
className: PropTypes.string,
|
|
1633
1530
|
formId: PropTypes.string,
|
|
@@ -1646,7 +1543,6 @@ const DateRangeStyled = styled.div.withConfig({
|
|
|
1646
1543
|
}) => {
|
|
1647
1544
|
return css(["", ""], useDefaultTheme && css([".daterange-wrapper{display:flex;flex-direction:column;input{&:first-child{margin:0 0 8px 0;}}}"]));
|
|
1648
1545
|
});
|
|
1649
|
-
|
|
1650
1546
|
const DateRange = ({
|
|
1651
1547
|
className,
|
|
1652
1548
|
id,
|
|
@@ -1662,15 +1558,12 @@ const DateRange = ({
|
|
|
1662
1558
|
const todaysDate = d.toISOString();
|
|
1663
1559
|
const [toDate, setToDate] = useState('');
|
|
1664
1560
|
const [fromDate, setFromDate] = useState('');
|
|
1665
|
-
|
|
1666
1561
|
const _handleDateChange = (dateType, formId, id, value) => {
|
|
1667
1562
|
_updateDateProps(dateType, value);
|
|
1668
|
-
|
|
1669
1563
|
const d = new Date(value);
|
|
1670
1564
|
const isoDate = d.toISOString();
|
|
1671
1565
|
setDateRangeValues(formId, id, dateType, isoDate);
|
|
1672
1566
|
};
|
|
1673
|
-
|
|
1674
1567
|
const _updateDateProps = (type, date) => {
|
|
1675
1568
|
switch (type) {
|
|
1676
1569
|
case 'from':
|
|
@@ -1680,7 +1573,6 @@ const DateRange = ({
|
|
|
1680
1573
|
setFromDate(newDate);
|
|
1681
1574
|
break;
|
|
1682
1575
|
}
|
|
1683
|
-
|
|
1684
1576
|
case 'to':
|
|
1685
1577
|
{
|
|
1686
1578
|
const d = new Date(date);
|
|
@@ -1688,12 +1580,10 @@ const DateRange = ({
|
|
|
1688
1580
|
setToDate(newDate);
|
|
1689
1581
|
break;
|
|
1690
1582
|
}
|
|
1691
|
-
|
|
1692
1583
|
default:
|
|
1693
1584
|
return;
|
|
1694
1585
|
}
|
|
1695
1586
|
};
|
|
1696
|
-
|
|
1697
1587
|
return /*#__PURE__*/React.createElement(DateRangeStyled, {
|
|
1698
1588
|
className: `daterange-container`,
|
|
1699
1589
|
useDefaultTheme: useDefaultTheme
|
|
@@ -1730,7 +1620,6 @@ const DateRange = ({
|
|
|
1730
1620
|
onChange: e => _handleDateChange('to', formId, id, e.target.value)
|
|
1731
1621
|
})));
|
|
1732
1622
|
};
|
|
1733
|
-
|
|
1734
1623
|
DateRange.propTypes = {
|
|
1735
1624
|
className: PropTypes.string,
|
|
1736
1625
|
formId: PropTypes.string,
|
|
@@ -1750,7 +1639,6 @@ const EntryPickerStyled = styled.div.withConfig({
|
|
|
1750
1639
|
}) => {
|
|
1751
1640
|
return css(["", ""], useDefaultTheme && css([".radio-wrapper,.checkbox-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;input{height:auto;width:auto;margin:0 4px 0 0;}label{display:inline-block;}}"]));
|
|
1752
1641
|
});
|
|
1753
|
-
|
|
1754
1642
|
const EntryPicker = ({
|
|
1755
1643
|
className,
|
|
1756
1644
|
results,
|
|
@@ -1765,7 +1653,6 @@ const EntryPicker = ({
|
|
|
1765
1653
|
if (!results || results.length > 3) return null;
|
|
1766
1654
|
const isRequired = validations && validations.required ? true : false;
|
|
1767
1655
|
let valArr = [];
|
|
1768
|
-
|
|
1769
1656
|
const _handleChange = (formId, id, value, isChecked) => {
|
|
1770
1657
|
if (type === 'checkbox') {
|
|
1771
1658
|
if (isChecked) {
|
|
@@ -1773,13 +1660,11 @@ const EntryPicker = ({
|
|
|
1773
1660
|
} else if (!isChecked) {
|
|
1774
1661
|
valArr = valArr.filter(valItem => valItem !== value);
|
|
1775
1662
|
}
|
|
1776
|
-
|
|
1777
1663
|
setValue(formId, id, valArr);
|
|
1778
1664
|
} else {
|
|
1779
1665
|
setValue(formId, id, value);
|
|
1780
1666
|
}
|
|
1781
1667
|
};
|
|
1782
|
-
|
|
1783
1668
|
return /*#__PURE__*/React.createElement(EntryPickerStyled, {
|
|
1784
1669
|
className: `${type}-container`,
|
|
1785
1670
|
useDefaultTheme: useDefaultTheme
|
|
@@ -1806,7 +1691,6 @@ const EntryPicker = ({
|
|
|
1806
1691
|
}));
|
|
1807
1692
|
}));
|
|
1808
1693
|
};
|
|
1809
|
-
|
|
1810
1694
|
EntryPicker.propTypes = {
|
|
1811
1695
|
className: PropTypes.string,
|
|
1812
1696
|
results: PropTypes.array,
|
|
@@ -1835,7 +1719,6 @@ const FormComposer = ({
|
|
|
1835
1719
|
if (!fields || fields.length < 1) return null;
|
|
1836
1720
|
return fields.map((field, idx) => {
|
|
1837
1721
|
if (!field) return null;
|
|
1838
|
-
|
|
1839
1722
|
switch (field.type) {
|
|
1840
1723
|
case 'number':
|
|
1841
1724
|
case 'textfield':
|
|
@@ -1857,7 +1740,6 @@ const FormComposer = ({
|
|
|
1857
1740
|
useDefaultTheme: useDefaultTheme
|
|
1858
1741
|
});
|
|
1859
1742
|
}
|
|
1860
|
-
|
|
1861
1743
|
case 'textarea':
|
|
1862
1744
|
{
|
|
1863
1745
|
return /*#__PURE__*/React.createElement(Textarea, {
|
|
@@ -1877,7 +1759,6 @@ const FormComposer = ({
|
|
|
1877
1759
|
errors: errors
|
|
1878
1760
|
});
|
|
1879
1761
|
}
|
|
1880
|
-
|
|
1881
1762
|
case 'dropdown':
|
|
1882
1763
|
{
|
|
1883
1764
|
return /*#__PURE__*/React.createElement(Dropdown, {
|
|
@@ -1892,7 +1773,6 @@ const FormComposer = ({
|
|
|
1892
1773
|
useDefaultTheme: useDefaultTheme
|
|
1893
1774
|
});
|
|
1894
1775
|
}
|
|
1895
|
-
|
|
1896
1776
|
case 'checkbox':
|
|
1897
1777
|
{
|
|
1898
1778
|
return /*#__PURE__*/React.createElement(Checkbox, {
|
|
@@ -1910,7 +1790,6 @@ const FormComposer = ({
|
|
|
1910
1790
|
setCheckboxValue: setCheckboxValue
|
|
1911
1791
|
});
|
|
1912
1792
|
}
|
|
1913
|
-
|
|
1914
1793
|
case 'radio':
|
|
1915
1794
|
{
|
|
1916
1795
|
return /*#__PURE__*/React.createElement(RadioButton, {
|
|
@@ -1925,7 +1804,6 @@ const FormComposer = ({
|
|
|
1925
1804
|
useDefaultTheme: useDefaultTheme
|
|
1926
1805
|
});
|
|
1927
1806
|
}
|
|
1928
|
-
|
|
1929
1807
|
case 'entryPicker':
|
|
1930
1808
|
{
|
|
1931
1809
|
const type = field.dataType === 'objectArray' ? 'checkbox' : 'radio';
|
|
@@ -1942,7 +1820,6 @@ const FormComposer = ({
|
|
|
1942
1820
|
formId: formId
|
|
1943
1821
|
});
|
|
1944
1822
|
}
|
|
1945
|
-
|
|
1946
1823
|
case 'date':
|
|
1947
1824
|
{
|
|
1948
1825
|
return /*#__PURE__*/React.createElement(SingleDate, {
|
|
@@ -1956,7 +1833,6 @@ const FormComposer = ({
|
|
|
1956
1833
|
useDefaultTheme: useDefaultTheme
|
|
1957
1834
|
});
|
|
1958
1835
|
}
|
|
1959
|
-
|
|
1960
1836
|
case 'dateRange':
|
|
1961
1837
|
{
|
|
1962
1838
|
return /*#__PURE__*/React.createElement(DateRange, {
|
|
@@ -1969,7 +1845,6 @@ const FormComposer = ({
|
|
|
1969
1845
|
useDefaultTheme: useDefaultTheme
|
|
1970
1846
|
});
|
|
1971
1847
|
}
|
|
1972
|
-
|
|
1973
1848
|
case 'hidden':
|
|
1974
1849
|
{
|
|
1975
1850
|
return /*#__PURE__*/React.createElement(HiddenField, {
|
|
@@ -1985,7 +1860,6 @@ const FormComposer = ({
|
|
|
1985
1860
|
}
|
|
1986
1861
|
});
|
|
1987
1862
|
};
|
|
1988
|
-
|
|
1989
1863
|
FormComposer.propTypes = {
|
|
1990
1864
|
fields: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
|
1991
1865
|
formData: PropTypes.object,
|
|
@@ -2106,23 +1980,14 @@ const Form = ({
|
|
|
2106
1980
|
onCustomSubmit
|
|
2107
1981
|
}) => {
|
|
2108
1982
|
const dispatch = useDispatch();
|
|
2109
|
-
|
|
2110
1983
|
const _setFormId = formId => dispatch(setFormId(formId));
|
|
2111
|
-
|
|
2112
1984
|
const _setValue = (formId, id, value) => dispatch(setValue(formId, id, value));
|
|
2113
|
-
|
|
2114
1985
|
const _setCheckboxValue = (formId, id, value, isChecked) => dispatch(setCheckboxValue(formId, id, value, isChecked));
|
|
2115
|
-
|
|
2116
1986
|
const _setDateRangeValues = (formId, id, dateType, value) => dispatch(setDateRangeValues(formId, id, dateType, value));
|
|
2117
|
-
|
|
2118
1987
|
const _onValidateField = (formId, id, value) => dispatch(onValidateField(formId, id, value));
|
|
2119
|
-
|
|
2120
1988
|
const _doTogglePageForward = (formId, pageIndex) => dispatch(doTogglePageForward(formId, pageIndex));
|
|
2121
|
-
|
|
2122
1989
|
const _doTogglePageBack = (formId, pageIndex) => dispatch(doTogglePageBack(formId, pageIndex));
|
|
2123
|
-
|
|
2124
1990
|
const _onSubmit = formId => dispatch(onSubmit(formId));
|
|
2125
|
-
|
|
2126
1991
|
useEffect(() => {
|
|
2127
1992
|
if (formId) _setFormId(formId);
|
|
2128
1993
|
}, [formId]);
|
|
@@ -2144,7 +2009,6 @@ const Form = ({
|
|
|
2144
2009
|
const entries = useSelector(selectFormEntries);
|
|
2145
2010
|
const formData = useSelector(selectFormPostData);
|
|
2146
2011
|
const validate = useSelector(selectFormValidationSent);
|
|
2147
|
-
|
|
2148
2012
|
if (pagingInfo && pagingInfo.pageCount > 1) {
|
|
2149
2013
|
const isLastPage = pagingInfo.pageCount == pagingInfo.pageIndex + 1;
|
|
2150
2014
|
return /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
@@ -2182,7 +2046,6 @@ const Form = ({
|
|
|
2182
2046
|
loading: status === null || status === void 0 ? void 0 : status.isLoading,
|
|
2183
2047
|
action: () => {
|
|
2184
2048
|
_onSubmit(formId);
|
|
2185
|
-
|
|
2186
2049
|
if (onCustomSubmit) onCustomSubmit();
|
|
2187
2050
|
},
|
|
2188
2051
|
useDefaultTheme: useDefaultTheme
|
|
@@ -2229,7 +2092,6 @@ const Form = ({
|
|
|
2229
2092
|
type: "button",
|
|
2230
2093
|
action: () => {
|
|
2231
2094
|
_onSubmit(formId);
|
|
2232
|
-
|
|
2233
2095
|
if (onCustomSubmit) onCustomSubmit();
|
|
2234
2096
|
},
|
|
2235
2097
|
useDefaultTheme: useDefaultTheme
|
|
@@ -2254,7 +2116,6 @@ const Form = ({
|
|
|
2254
2116
|
}))));
|
|
2255
2117
|
}
|
|
2256
2118
|
};
|
|
2257
|
-
|
|
2258
2119
|
Form.propTypes = {
|
|
2259
2120
|
className: PropTypes.string,
|
|
2260
2121
|
formId: PropTypes.string,
|