@zengenti/contensis-react-base 3.0.0-beta.52 → 3.0.0-beta.55

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/forms.js CHANGED
@@ -2,9 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var immutable = require('immutable');
5
+ var immer = require('immer');
6
6
  var effects = require('@redux-saga/core/effects');
7
7
  var reselect = require('reselect');
8
+ var mapJson = require('jsonpath-mapper');
9
+ var queryString = require('query-string');
10
+ require('redux');
11
+ require('redux-thunk');
12
+ require('redux-saga');
13
+ require('redux-injectors');
14
+ var merge = require('deepmerge');
8
15
  var React = require('react');
9
16
  var PropTypes = require('prop-types');
10
17
  var reactRedux = require('react-redux');
@@ -12,184 +19,4089 @@ var styled = require('styled-components');
12
19
 
13
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
21
 
22
+ var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
23
+ var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
15
24
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
25
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
17
26
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
18
27
 
19
- const ACTION_PREFIX = '@FORM2/';
20
- const SET_FORM_DATA = `${ACTION_PREFIX}SET_FORM_DATA`;
21
- const SET_FORM_ID = `${ACTION_PREFIX}SET_FORM_ID`;
22
- const SET_CURRENT_PAGE = `${ACTION_PREFIX}SET_CURRENT_PAGE`;
23
- const PAGE_BACK = `${ACTION_PREFIX}PAGE_BACK`;
24
- const PAGE_FORWARD = `${ACTION_PREFIX}PAGE_FORWARD`;
25
- const SET_FIELD_VALUE = `${ACTION_PREFIX}SET_FIELD_VALUE`;
26
- const SET_DEFAULT_FIELD_VALUE = `${ACTION_PREFIX}SET_DEFAULT_FIELD_VALUE`;
27
- const SUBMIT_FORM_FOR_VALIDATION = `${ACTION_PREFIX}SUBMIT_FORM_FOR_VALIDATION`;
28
- const SUBMIT_FORM = `${ACTION_PREFIX}SUBMIT_FORM`;
29
- const SUBMIT_FORM_SUCCESS = `${ACTION_PREFIX}SUBMIT_FORM_SUCCESS`;
30
- const SUBMIT_FORM_ERROR = `${ACTION_PREFIX}SUBMIT_FORM_ERROR`;
31
- const SET_SUBMITTING_FORM = `${ACTION_PREFIX}SET_SUBMITTING_FORM`;
32
- const SET_ERROR = `${ACTION_PREFIX}SET_ERROR`;
33
- const VALIDATE_FIELD = `${ACTION_PREFIX}VALIDATE_FIELD`;
34
- const SET_FIELD_ERROR = `${ACTION_PREFIX}SET_FIELD_ERROR`;
35
- const SET_DATE_RANGE_VALUES = `${ACTION_PREFIX}SET_DATE_RANGE_VALUES`;
36
- const SET_FORM_ENTRIES = `${ACTION_PREFIX}SET_FORM_ENTRIES`;
37
- const SET_SUCCESS_MESSAGE = `${ACTION_PREFIX}SET_SUCCESS_MESSAGE`;
38
- const SET_CHECKBOX_VALUE = `${ACTION_PREFIX}SET_CHECKBOX_VALUE`;
28
+ const ACTION_PREFIX$5 = '@FORM2/';
29
+ const SET_FORM_DATA$1 = `${ACTION_PREFIX$5}SET_FORM_DATA`;
30
+ const SET_FORM_ID$1 = `${ACTION_PREFIX$5}SET_FORM_ID`;
31
+ const SET_CURRENT_PAGE$1 = `${ACTION_PREFIX$5}SET_CURRENT_PAGE`;
32
+ const PAGE_BACK$1 = `${ACTION_PREFIX$5}PAGE_BACK`;
33
+ const PAGE_FORWARD$1 = `${ACTION_PREFIX$5}PAGE_FORWARD`;
34
+ const SET_FIELD_VALUE$1 = `${ACTION_PREFIX$5}SET_FIELD_VALUE`;
35
+ const SET_DEFAULT_FIELD_VALUE$1 = `${ACTION_PREFIX$5}SET_DEFAULT_FIELD_VALUE`;
36
+ const SUBMIT_FORM_FOR_VALIDATION$1 = `${ACTION_PREFIX$5}SUBMIT_FORM_FOR_VALIDATION`;
37
+ const SUBMIT_FORM$1 = `${ACTION_PREFIX$5}SUBMIT_FORM`;
38
+ const SUBMIT_FORM_SUCCESS$1 = `${ACTION_PREFIX$5}SUBMIT_FORM_SUCCESS`;
39
+ const SUBMIT_FORM_ERROR$1 = `${ACTION_PREFIX$5}SUBMIT_FORM_ERROR`;
40
+ const SET_SUBMITTING_FORM$1 = `${ACTION_PREFIX$5}SET_SUBMITTING_FORM`;
41
+ const SET_ERROR$1 = `${ACTION_PREFIX$5}SET_ERROR`;
42
+ const VALIDATE_FIELD$1 = `${ACTION_PREFIX$5}VALIDATE_FIELD`;
43
+ const SET_FIELD_ERROR$1 = `${ACTION_PREFIX$5}SET_FIELD_ERROR`;
44
+ const SET_DATE_RANGE_VALUES$1 = `${ACTION_PREFIX$5}SET_DATE_RANGE_VALUES`;
45
+ const SET_FORM_ENTRIES$1 = `${ACTION_PREFIX$5}SET_FORM_ENTRIES`;
46
+ const SET_SUCCESS_MESSAGE$1 = `${ACTION_PREFIX$5}SET_SUCCESS_MESSAGE`;
47
+ const SET_CHECKBOX_VALUE$1 = `${ACTION_PREFIX$5}SET_CHECKBOX_VALUE`;
48
+
49
+ const MakeFieldType$1 = field => {
50
+ if (!field) return null;
51
+
52
+ if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
53
+ return 'textarea';
54
+ } else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
55
+ return 'dropdown';
56
+ } else if (field.editor && field.editor.properties && field.editor.properties.readOnly || field.groupId && field.groupId === 'private') {
57
+ return 'hidden';
58
+ } else if (field.dataType === 'stringArray' || field.dataType === 'boolean') {
59
+ return 'checkbox';
60
+ } else if (field.dataType === 'string' && field.validations && field.validations.allowedValues) {
61
+ return 'radio';
62
+ } else if (field.dataType === 'integer') {
63
+ return 'number';
64
+ } else if (field.dataType === 'dateTime') {
65
+ return 'date';
66
+ } else if (field.dataFormat === 'daterange') {
67
+ return 'dateRange';
68
+ } else if (field.dataFormat === 'entry') {
69
+ return 'entryPicker';
70
+ } else {
71
+ return 'textfield';
72
+ }
73
+ };
74
+
75
+ const initialSettings$1 = {
76
+ recaptcha: {
77
+ siteKey: null
78
+ }
79
+ };
80
+ const initialStatus$1 = {
81
+ isLoading: false,
82
+ isSubmitting: false,
83
+ hasSuccess: false,
84
+ successMessage: null,
85
+ hasError: false
86
+ };
87
+ const initialPagingInfo$1 = {
88
+ pageIndex: 0,
89
+ pageCount: 0,
90
+ currentPageId: null
91
+ };
92
+ const initialFormData$1 = {
93
+ formId: null,
94
+ data: {},
95
+ fields: [],
96
+ entries: [],
97
+ fieldErrors: [],
98
+ groups: [],
99
+ defaultLanguage: null,
100
+ pagingInfo: initialPagingInfo$1,
101
+ status: initialStatus$1
102
+ };
103
+ let initialState$5 = {
104
+ settings: initialSettings$1
105
+ };
106
+ var reducer$1 = immer.produce((state, action) => {
107
+ switch (action.type) {
108
+ case SET_FORM_ID$1:
109
+ {
110
+ const {
111
+ formId
112
+ } = action || {};
113
+ state[formId] = initialFormData$1;
114
+ return;
115
+ }
116
+
117
+ case SET_FORM_DATA$1:
118
+ {
119
+ const {
120
+ fields,
121
+ formId,
122
+ groups,
123
+ defaultLanguage
124
+ } = action || {};
125
+ fields.map(field => {
126
+ field.type = MakeFieldType$1(field);
127
+ });
128
+ state[formId].fields = fields;
129
+ state[formId].formId = formId;
130
+ state[formId].groups = groups;
131
+ state[formId].defaultLanguage = defaultLanguage;
132
+ state[formId].status.isSubmitting = false;
133
+ state[formId].status.hasSuccess = false;
134
+ state[formId].status.hasError = false;
135
+ return;
136
+ }
137
+
138
+ case SET_CURRENT_PAGE$1:
139
+ {
140
+ const {
141
+ formId,
142
+ pageId,
143
+ pageIndex,
144
+ pageCount
145
+ } = action || {};
146
+ state[formId].pagingInfo.currentPageId = pageId;
147
+ state[formId].pagingInfo.pageIndex = pageIndex;
148
+ state[formId].pagingInfo.pageCount = pageCount;
149
+ return;
150
+ }
151
+
152
+ case SET_FIELD_VALUE$1:
153
+ {
154
+ const {
155
+ formId,
156
+ id,
157
+ value
158
+ } = action || {};
159
+ state[formId].data[id] = value;
160
+ return;
161
+ }
162
+
163
+ case SET_DEFAULT_FIELD_VALUE$1:
164
+ {
165
+ const {
166
+ formId,
167
+ value
168
+ } = action || {};
169
+ state[formId].data = value;
170
+ return;
171
+ }
172
+
173
+ case SET_CHECKBOX_VALUE$1:
174
+ {
175
+ const {
176
+ formId,
177
+ id,
178
+ value,
179
+ isChecked
180
+ } = action || {};
181
+ let values = state[formId].data[id] || [];
182
+ if (isChecked) state[formId].data[id] = { ...values,
183
+ value
184
+ };else state[formId].data[id] = values.filter(v => v !== value);
185
+ return;
186
+ }
187
+
188
+ case SET_DATE_RANGE_VALUES$1:
189
+ {
190
+ const {
191
+ formId,
192
+ id,
193
+ value,
194
+ dateType
195
+ } = action || {};
196
+ state[formId].data[id][dateType] = value;
197
+ return;
198
+ }
199
+
200
+ case SET_FIELD_ERROR$1:
201
+ {
202
+ const {
203
+ formId,
204
+ value
205
+ } = action || {};
206
+ state[formId].fieldErrors = value;
207
+ return;
208
+ }
209
+
210
+ case SET_SUBMITTING_FORM$1:
211
+ {
212
+ const {
213
+ formId,
214
+ isSubmitting
215
+ } = action || {};
216
+ state[formId].status.isSubmitting = isSubmitting;
217
+ return;
218
+ }
219
+
220
+ case SUBMIT_FORM_SUCCESS$1:
221
+ {
222
+ const {
223
+ formId
224
+ } = action || {};
225
+ state[formId].status.hasError = false;
226
+ state[formId].status.isSubmitting = false;
227
+ state[formId].status.hasSuccess = true;
228
+ return;
229
+ }
230
+
231
+ case SET_SUCCESS_MESSAGE$1:
232
+ {
233
+ const {
234
+ formId,
235
+ message
236
+ } = action || {};
237
+ state[formId].status.successMessage = message;
238
+ return;
239
+ }
240
+
241
+ case SUBMIT_FORM_ERROR$1:
242
+ {
243
+ const {
244
+ formId
245
+ } = action || {};
246
+ state[formId].status.hasError = true;
247
+ state[formId].status.isSubmitting = false;
248
+ return;
249
+ }
250
+
251
+ case SET_FORM_ENTRIES$1:
252
+ {
253
+ const {
254
+ formId,
255
+ entries
256
+ } = action || {};
257
+ const entryObject = {};
258
+ entries.map(entry => {
259
+ if (!entry) return null;
260
+ entryObject[entry.id] = entry.entries;
261
+ return entryObject;
262
+ });
263
+ state[formId].entries = entryObject;
264
+ return;
265
+ }
266
+
267
+ case SET_ERROR$1:
268
+ {
269
+ const {
270
+ formId
271
+ } = action || {};
272
+ state[formId].status.hasError = true;
273
+ state[formId].status.isSubmitting = false;
274
+ return;
275
+ }
276
+
277
+ default:
278
+ return state;
279
+ }
280
+ }, initialState$5);
281
+
282
+ const action$3 = (type, payload = {}) => ({
283
+ type,
284
+ ...payload
285
+ });
286
+ const getImmutableOrJS$1 = (state, stateKey, fallbackValue, returnType = globalThis.STATE_TYPE) => {
287
+ var _globalThis$immutable, _globalThis$immutable2;
288
+
289
+ // Find a fromJS function from global that is dynamically loaded in createStore
290
+ // or replace with a stub function for non-immutable gets
291
+ const fromJS = returnType === 'immutable' ? ((_globalThis$immutable = globalThis.immutable) === null || _globalThis$immutable === void 0 ? void 0 : _globalThis$immutable.fromJSOrdered) || ((_globalThis$immutable2 = globalThis.immutable) === null || _globalThis$immutable2 === void 0 ? void 0 : _globalThis$immutable2.fromJS) : v => v;
292
+
293
+ if (state && 'get' in state && typeof state.get === 'function' && 'getIn' in state && typeof state.getIn === 'function' && 'toJS' in state && typeof state.toJS === 'function') {
294
+ if (Array.isArray(stateKey)) return fromJS(state.getIn(stateKey, fallbackValue));
295
+ return fromJS(state.get(stateKey, fallbackValue));
296
+ }
297
+
298
+ if (Array.isArray(stateKey) && state && typeof state === 'object') {
299
+ const result = mapJson.jpath(stateKey.join('.'), state);
300
+ if (typeof result === 'undefined') return fallbackValue;
301
+ return result;
302
+ }
303
+
304
+ const result = state && typeof state === 'object' ? state[stateKey] : undefined;
305
+ if (typeof result === 'undefined') return fallbackValue;
306
+ return result;
307
+ };
308
+
309
+ function queryParams$1(search) {
310
+ return queryString__default["default"].parse(typeof window != 'undefined' ? window.location.search : search);
311
+ }
312
+
313
+ const selectRouteEntry$3 = (state, returnType) => getImmutableOrJS$1(state, ['routing', 'entry'], {}, returnType);
314
+ const selectMappedEntry$1 = (state, returnType) => getImmutableOrJS$1(state, ['routing', 'mappedEntry'], null, returnType);
315
+ const selectSurrogateKeys$1 = state => {
316
+ const keys = getImmutableOrJS$1(state, ['routing', 'surrogateKeys'], [], 'js');
317
+ return keys.join(' ');
318
+ };
319
+ const selectCurrentHostname$1 = state => getImmutableOrJS$1(state, ['routing', 'currentHostname']);
320
+ const selectCurrentTreeID$1 = state => getImmutableOrJS$1(state, ['routing', 'currentHostname']);
321
+ const selectRouteEntryEntryId$3 = state => getImmutableOrJS$1(state, ['routing', 'entry', 'sys', 'id'], null);
322
+ const selectRouteEntryContentTypeId$3 = state => {
323
+ const entry = selectRouteEntry$3(state);
324
+ return getImmutableOrJS$1(entry, ['sys', 'contentTypeId'], null);
325
+ };
326
+ const selectRouteEntryLanguage$1 = state => {
327
+ const entry = selectRouteEntry$3(state);
328
+ return getImmutableOrJS$1(entry, ['sys', 'language'], null);
329
+ };
330
+ const selectRouteEntrySlug$3 = state => {
331
+ const entry = selectRouteEntry$3(state);
332
+ return getImmutableOrJS$1(entry, ['sys', 'slug'], null);
333
+ };
334
+ const selectRouteEntryID$3 = state => getImmutableOrJS$1(state, ['routing', 'entryID']);
335
+ const selectCurrentPath$3 = state => getImmutableOrJS$1(state, ['routing', 'currentPath']);
336
+ const selectCurrentLocation$1 = state => getImmutableOrJS$1(state, ['routing', 'location']);
337
+ const selectCurrentSearch$3 = state => getImmutableOrJS$1(state, ['routing', 'location', 'search']);
338
+ const selectCurrentHash$1 = state => getImmutableOrJS$1(state, ['routing', 'location', 'hash']);
339
+ const selectQueryStringAsObject$3 = state => queryParams$1(selectCurrentSearch$3(state));
340
+ const selectCurrentProject$3 = state => getImmutableOrJS$1(state, ['routing', 'currentProject']);
341
+ const selectIsNotFound$3 = state => getImmutableOrJS$1(state, ['routing', 'notFound']);
342
+ const selectCurrentAncestors$3 = state => getImmutableOrJS$1(state, ['routing', 'currentNodeAncestors'], []);
343
+ const selectCurrentSiblings$1 = state => getImmutableOrJS$1(state, ['routing', 'currentNodeSiblings'], []);
344
+ const selectCurrentNode$1 = (state, returnType) => getImmutableOrJS$1(state, ['routing', 'currentNode'], null, returnType);
345
+ const selectCurrentChildren$1 = state => getImmutableOrJS$1(state, ['routing', 'currentNode', 'children'], []);
346
+ const selectBreadcrumb$1 = state => {
347
+ return selectCurrentAncestors$3(state).push(selectCurrentNode$1(state));
348
+ };
349
+ const selectRouteErrorMessage$1 = state => {
350
+ const error = getImmutableOrJS$1(state, ['routing', 'error']);
351
+ return getImmutableOrJS$1(error, ['data', 'message'], getImmutableOrJS$1(error, 'statusText'));
352
+ };
353
+ const selectRouteIsError$1 = state => getImmutableOrJS$1(state, ['routing', 'isError']);
354
+ const selectRouteLoading$3 = state => getImmutableOrJS$1(state, ['routing', 'isLoading']);
355
+ const selectRouteStatusCode$1 = state => getImmutableOrJS$1(state, ['routing', 'statusCode']);
356
+ const selectStaticRoute$1 = state => getImmutableOrJS$1(state, ['routing', 'staticRoute']);
357
+
358
+ var routing$6 = /*#__PURE__*/Object.freeze({
359
+ __proto__: null,
360
+ selectRouteEntry: selectRouteEntry$3,
361
+ selectMappedEntry: selectMappedEntry$1,
362
+ selectSurrogateKeys: selectSurrogateKeys$1,
363
+ selectCurrentHostname: selectCurrentHostname$1,
364
+ selectCurrentTreeID: selectCurrentTreeID$1,
365
+ selectRouteEntryEntryId: selectRouteEntryEntryId$3,
366
+ selectRouteEntryContentTypeId: selectRouteEntryContentTypeId$3,
367
+ selectRouteEntryLanguage: selectRouteEntryLanguage$1,
368
+ selectRouteEntrySlug: selectRouteEntrySlug$3,
369
+ selectRouteEntryID: selectRouteEntryID$3,
370
+ selectCurrentPath: selectCurrentPath$3,
371
+ selectCurrentLocation: selectCurrentLocation$1,
372
+ selectCurrentSearch: selectCurrentSearch$3,
373
+ selectCurrentHash: selectCurrentHash$1,
374
+ selectQueryStringAsObject: selectQueryStringAsObject$3,
375
+ selectCurrentProject: selectCurrentProject$3,
376
+ selectIsNotFound: selectIsNotFound$3,
377
+ selectCurrentAncestors: selectCurrentAncestors$3,
378
+ selectCurrentSiblings: selectCurrentSiblings$1,
379
+ selectCurrentNode: selectCurrentNode$1,
380
+ selectCurrentChildren: selectCurrentChildren$1,
381
+ selectBreadcrumb: selectBreadcrumb$1,
382
+ selectRouteErrorMessage: selectRouteErrorMessage$1,
383
+ selectRouteIsError: selectRouteIsError$1,
384
+ selectRouteLoading: selectRouteLoading$3,
385
+ selectRouteStatusCode: selectRouteStatusCode$1,
386
+ selectStaticRoute: selectStaticRoute$1
387
+ });
388
+
389
+ const ROUTING_PREFIX$1 = '@ROUTING/';
390
+ const GET_ENTRY$1 = `${ROUTING_PREFIX$1}_GET_ENTRY`;
391
+ const SET_ENTRY$1 = `${ROUTING_PREFIX$1}_SET_ENTRY`;
392
+ const SET_NODE$1 = `${ROUTING_PREFIX$1}_SET_NODE`;
393
+ const SET_ANCESTORS$1 = `${ROUTING_PREFIX$1}_SET_ANCESTORS`;
394
+ const SET_SIBLINGS$1 = `${ROUTING_PREFIX$1}_SET_SIBLINGS`;
395
+ const SET_ENTRY_ID$1 = `${ROUTING_PREFIX$1}_SET_ENTRY_ID`;
396
+ const SET_SURROGATE_KEYS$1 = `${ROUTING_PREFIX$1}_SET_SURROGATE_KEYS`;
397
+ const SET_NAVIGATION_NOT_FOUND$1 = `${ROUTING_PREFIX$1}_SET_NOT_FOUND`;
398
+ const SET_NAVIGATION_PATH$1 = `${ROUTING_PREFIX$1}_SET_NAVIGATION_PATH`;
399
+ const SET_TARGET_PROJECT$1 = `${ROUTING_PREFIX$1}_SET_TARGET_PROJECT`;
400
+ const SET_ROUTE$1 = `${ROUTING_PREFIX$1}_SET_ROUTE`;
401
+ const UPDATE_LOADING_STATE$1 = `${ROUTING_PREFIX$1}_UPDATE_LOADING_STATE`;
402
+
403
+ var routing$1$1 = /*#__PURE__*/Object.freeze({
404
+ __proto__: null,
405
+ GET_ENTRY: GET_ENTRY$1,
406
+ SET_ENTRY: SET_ENTRY$1,
407
+ SET_NODE: SET_NODE$1,
408
+ SET_ANCESTORS: SET_ANCESTORS$1,
409
+ SET_SIBLINGS: SET_SIBLINGS$1,
410
+ SET_ENTRY_ID: SET_ENTRY_ID$1,
411
+ SET_SURROGATE_KEYS: SET_SURROGATE_KEYS$1,
412
+ SET_NAVIGATION_NOT_FOUND: SET_NAVIGATION_NOT_FOUND$1,
413
+ SET_NAVIGATION_PATH: SET_NAVIGATION_PATH$1,
414
+ SET_TARGET_PROJECT: SET_TARGET_PROJECT$1,
415
+ SET_ROUTE: SET_ROUTE$1,
416
+ UPDATE_LOADING_STATE: UPDATE_LOADING_STATE$1
417
+ });
418
+
419
+ const setNotFound$1 = notFound => action$3(SET_NAVIGATION_NOT_FOUND$1, {
420
+ notFound
421
+ });
422
+ const setNavigationPath$1 = (path, location, staticRoute, withEvents, statePath, routes) => action$3(SET_NAVIGATION_PATH$1, {
423
+ path,
424
+ location,
425
+ staticRoute,
426
+ withEvents,
427
+ statePath,
428
+ routes
429
+ });
430
+ const setCurrentProject$1 = (project, allowedGroups, hostname) => action$3(SET_TARGET_PROJECT$1, {
431
+ project,
432
+ allowedGroups,
433
+ hostname
434
+ });
435
+ const setRoute$1 = (path, state) => action$3(SET_ROUTE$1, {
436
+ path,
437
+ state
438
+ });
439
+ const setRouteEntry$1 = entry => action$3(SET_ENTRY$1, {
440
+ entry
441
+ });
442
+ const setSurrogateKeys$1 = (keys, url) => action$3(SET_SURROGATE_KEYS$1, {
443
+ keys,
444
+ url
445
+ });
446
+
447
+ var routing$5 = /*#__PURE__*/Object.freeze({
448
+ __proto__: null,
449
+ setNotFound: setNotFound$1,
450
+ setNavigationPath: setNavigationPath$1,
451
+ setCurrentProject: setCurrentProject$1,
452
+ setRoute: setRoute$1,
453
+ setRouteEntry: setRouteEntry$1,
454
+ setSurrogateKeys: setSurrogateKeys$1
455
+ });
456
+
457
+ const ACTION_PREFIX$4 = '@USER/';
458
+ const SET_AUTHENTICATION_STATE$1 = `${ACTION_PREFIX$4}SET_AUTHENTICATION_STATE`;
459
+ const LOGIN_USER$1 = `${ACTION_PREFIX$4}LOGIN_USER`;
460
+ const LOGOUT_USER$1 = `${ACTION_PREFIX$4}LOGOUT_USER`;
461
+ const REGISTER_USER$1 = `${ACTION_PREFIX$4}REGISTER_USER`;
462
+ const REGISTER_USER_SUCCESS$1 = `${ACTION_PREFIX$4}REGISTER_USER_SUCCESS`;
463
+ const REGISTER_USER_FAILED$1 = `${ACTION_PREFIX$4}REGISTER_USER_FAILED`;
464
+ const REQUEST_USER_PASSWORD_RESET_SENDING$1 = `${ACTION_PREFIX$4}REQUEST_USER_PASSWORD_RESET_SENDING`;
465
+ const REQUEST_USER_PASSWORD_RESET_SUCCESS$1 = `${ACTION_PREFIX$4}REQUEST_USER_PASSWORD_RESET_SUCCESS`;
466
+ const REQUEST_USER_PASSWORD_RESET_ERROR$1 = `${ACTION_PREFIX$4}REQUEST_USER_PASSWORD_RESET_ERROR`;
467
+ const RESET_USER_PASSWORD_SENDING$1 = `${ACTION_PREFIX$4}RESET_USER_PASSWORD_SENDING`;
468
+ const RESET_USER_PASSWORD_SUCCESS$1 = `${ACTION_PREFIX$4}RESET_USER_PASSWORD_SUCCESS`;
469
+ const RESET_USER_PASSWORD_ERROR$1 = `${ACTION_PREFIX$4}RESET_USER_PASSWORD_ERROR`;
470
+ const CHANGE_USER_PASSWORD_SENDING$1 = `${ACTION_PREFIX$4}CHANGE_USER_PASSWORD_SENDING`;
471
+ const CHANGE_USER_PASSWORD_SUCCESS$1 = `${ACTION_PREFIX$4}CHANGE_USER_PASSWORD_SUCCESS`;
472
+ const CHANGE_USER_PASSWORD_ERROR$1 = `${ACTION_PREFIX$4}CHANGE_USER_PASSWORD_ERROR`;
473
+
474
+ const defaultAuthenticationState$1 = {
475
+ clientCredentials: null,
476
+ errorMessage: null,
477
+ isAuthenticated: false,
478
+ isAuthenticationError: false,
479
+ isError: false,
480
+ isLoading: false
481
+ };
482
+ const defaultPasswordResetRequestValues$1 = {
483
+ isSending: false,
484
+ sent: false,
485
+ error: null
486
+ };
487
+ const defaultResetPasswordValues$1 = {
488
+ isSending: false,
489
+ sent: false,
490
+ error: null
491
+ };
492
+ const defaultChangePasswordValues$1 = {
493
+ isSending: false,
494
+ sent: false,
495
+ error: null
496
+ };
497
+ const defaultRegistrationValues$1 = {
498
+ isLoading: false,
499
+ success: false,
500
+ error: null
501
+ };
502
+ const initialUserState$1 = {
503
+ authenticationState: defaultAuthenticationState$1,
504
+ passwordResetRequest: defaultPasswordResetRequestValues$1,
505
+ resetPassword: defaultResetPasswordValues$1,
506
+ changePassword: defaultChangePasswordValues$1,
507
+ groups: []
508
+ };
509
+ immer.produce((state, action) => {
510
+ switch (action.type) {
511
+ case LOGOUT_USER$1:
512
+ {
513
+ return initialUserState$1;
514
+ }
515
+
516
+ case LOGIN_USER$1:
517
+ case SET_AUTHENTICATION_STATE$1:
518
+ {
519
+ var _state, _state$authentication;
520
+
521
+ if (!action.authenticationState) {
522
+ action.authenticationState = defaultAuthenticationState$1;
523
+ }
524
+
525
+ const {
526
+ authenticationState: {
527
+ clientCredentials = null,
528
+ errorMessage = null,
529
+ isAuthenticated,
530
+ isAuthenticationError = false,
531
+ isError = false,
532
+ isLoading = action.type === LOGIN_USER$1
533
+ },
534
+ user
535
+ } = action;
536
+
537
+ if (user) {
538
+ user.name = `${user.firstName}${user.lastName ? ` ${user.lastName}` : ''}` || null;
539
+ user.isZengentiStaff = user.email.includes('@zengenti.com');
540
+ }
541
+
542
+ state = { ...initialUserState$1,
543
+ ...(user || state),
544
+ authenticationState: {
545
+ clientCredentials,
546
+ errorMessage,
547
+ isAuthenticated: isAuthenticated || ((_state = state) === null || _state === void 0 ? void 0 : (_state$authentication = _state.authenticationState) === null || _state$authentication === void 0 ? void 0 : _state$authentication.isAuthenticated),
548
+ isAuthenticationError,
549
+ isError,
550
+ isLoading
551
+ }
552
+ };
553
+ return state;
554
+ }
555
+ // REGISTER_USER is the trigger to set the user.registration initial state
556
+ // and will set user.registration.isLoading to true
557
+ // REGISTER_USER_FAILED will unset user.registration.isLoading and will set
558
+ // the value in user.registration.error
559
+ // REGISTER_USER_SUCCESS will unset user.registration.isLoading and will
560
+ // set user.registration to the created user from the api response
561
+
562
+ case REGISTER_USER$1:
563
+ case REGISTER_USER_FAILED$1:
564
+ case REGISTER_USER_SUCCESS$1:
565
+ {
566
+ const {
567
+ error,
568
+ user
569
+ } = action; // Set registration object from the supplied action.user
570
+ // so we can call these values back later
571
+
572
+ state.registration = user || state.registration || defaultRegistrationValues$1; // Set registration flags so the UI can track the status
573
+
574
+ state.registration.success = action.type === REGISTER_USER_SUCCESS$1;
575
+ state.registration.error = error || false;
576
+ state.registration.isLoading = action.type === REGISTER_USER$1;
577
+ return;
578
+ }
579
+
580
+ case REQUEST_USER_PASSWORD_RESET_SENDING$1:
581
+ state.passwordResetRequest = defaultPasswordResetRequestValues$1;
582
+ state.passwordResetRequest.isSending = true;
583
+ return;
584
+
585
+ case REQUEST_USER_PASSWORD_RESET_SUCCESS$1:
586
+ if (state.passwordResetRequest) {
587
+ state.passwordResetRequest.isSending = false;
588
+ state.passwordResetRequest.sent = true;
589
+ }
590
+
591
+ return;
592
+
593
+ case REQUEST_USER_PASSWORD_RESET_ERROR$1:
594
+ if (state.passwordResetRequest) {
595
+ state.passwordResetRequest.isSending = false;
596
+ state.passwordResetRequest.error = action.error;
597
+ }
598
+
599
+ return;
600
+
601
+ case RESET_USER_PASSWORD_SENDING$1:
602
+ if (state.resetPassword) {
603
+ state.resetPassword.isSending = true;
604
+ }
605
+
606
+ return;
607
+
608
+ case RESET_USER_PASSWORD_SUCCESS$1:
609
+ if (state.resetPassword) {
610
+ state.resetPassword.isSending = false;
611
+ state.resetPassword.sent = true;
612
+ }
613
+
614
+ return;
615
+
616
+ case RESET_USER_PASSWORD_ERROR$1:
617
+ if (state.resetPassword) {
618
+ state.resetPassword.isSending = false;
619
+ state.resetPassword.error = action.error;
620
+ }
621
+
622
+ return;
623
+
624
+ case CHANGE_USER_PASSWORD_SENDING$1:
625
+ if (state.changePassword) {
626
+ state.changePassword.isSending = true;
627
+ }
628
+
629
+ return;
630
+
631
+ case CHANGE_USER_PASSWORD_SUCCESS$1:
632
+ if (state.changePassword) {
633
+ state.changePassword.isSending = false;
634
+ state.changePassword.sent = true;
635
+ }
636
+
637
+ return;
638
+
639
+ case CHANGE_USER_PASSWORD_ERROR$1:
640
+ if (state.changePassword) {
641
+ state.changePassword.isSending = false;
642
+ state.changePassword.error = action.error;
643
+ }
644
+
645
+ return;
646
+
647
+ default:
648
+ return;
649
+ }
650
+ }, initialUserState$1);
651
+
652
+ const ACTION_PREFIX$3 = '@NAVIGATION/';
653
+ const GET_NODE_TREE$1 = `${ACTION_PREFIX$3}_GET_NODE_TREE`;
654
+ const SET_NODE_TREE$1 = `${ACTION_PREFIX$3}_SET_NODE_TREE`;
655
+ const GET_NODE_TREE_ERROR$1 = `${ACTION_PREFIX$3}_GET_NODE_TREE_ERROR`;
656
+
657
+ var navigation$1$3 = /*#__PURE__*/Object.freeze({
658
+ __proto__: null,
659
+ GET_NODE_TREE: GET_NODE_TREE$1,
660
+ SET_NODE_TREE: SET_NODE_TREE$1,
661
+ GET_NODE_TREE_ERROR: GET_NODE_TREE_ERROR$1
662
+ });
663
+
664
+ const initialState$2$1 = {
665
+ root: null,
666
+ isError: false,
667
+ isReady: false
668
+ };
669
+ immer.produce((state, action) => {
670
+ switch (action.type) {
671
+ case SET_NODE_TREE$1:
672
+ {
673
+ state.root = action.nodes;
674
+ state.isReady = true;
675
+ return;
676
+ }
677
+
678
+ case GET_NODE_TREE_ERROR$1:
679
+ {
680
+ state.isError = true;
681
+ return;
682
+ }
683
+
684
+ default:
685
+ return;
686
+ }
687
+ }, initialState$2$1);
688
+
689
+ const combineMerge$1 = (target, source, options) => {
690
+ const destination = target.slice();
691
+ source.forEach((item, index) => {
692
+ if (typeof destination[index] === 'undefined') {
693
+ destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);
694
+ } else if (options.isMergeableObject(item)) {
695
+ destination[index] = merge__default["default"](target[index], item, options);
696
+ } else if (target.indexOf(item) === -1) {
697
+ destination.push(item);
698
+ }
699
+ });
700
+ return destination;
701
+ };
702
+
703
+ const initialState$1$1 = {
704
+ currentHostname: null,
705
+ currentPath: '/',
706
+ currentNode: {},
707
+ currentNodeAncestors: [],
708
+ currentProject: 'unknown',
709
+ entryID: null,
710
+ entry: null,
711
+ error: undefined,
712
+ isError: false,
713
+ isLoading: false,
714
+ location: {},
715
+ mappedEntry: null,
716
+ notFound: false,
717
+ staticRoute: null,
718
+ statusCode: 200
719
+ };
720
+ immer.produce((state, action) => {
721
+ switch (action.type) {
722
+ case SET_ANCESTORS$1:
723
+ {
724
+ state.currentNodeAncestors = action.ancestors;
725
+ return;
726
+ }
727
+
728
+ case SET_ENTRY$1:
729
+ {
730
+ const {
731
+ entry,
732
+ error,
733
+ mappedEntry,
734
+ node = {},
735
+ isError = false,
736
+ isLoading = false,
737
+ notFound = false,
738
+ statusCode
739
+ } = action;
740
+ let defaultStatus = 200;
741
+ if (notFound === true && isError === false) defaultStatus = 404;else if (isError === true) defaultStatus = statusCode || 500;
742
+
743
+ if (!entry) {
744
+ state.entryID = null;
745
+ state.entry = null;
746
+ state.error = error;
747
+ state.mappedEntry = null;
748
+ state.isError = isError;
749
+ state.isLoading = isLoading;
750
+ state.notFound = notFound;
751
+ state.statusCode = statusCode || defaultStatus;
752
+ } else {
753
+ state.entryID = action.id;
754
+ state.entry = entry;
755
+ state.error = error;
756
+ state.isError = isError;
757
+ state.isLoading = isLoading;
758
+ state.notFound = notFound;
759
+ state.statusCode = statusCode || defaultStatus;
760
+
761
+ if (mappedEntry && Object.keys(mappedEntry).length > 0) {
762
+ state.mappedEntry = mappedEntry;
763
+ state.entry = {
764
+ sys: entry.sys
765
+ };
766
+ }
767
+ }
768
+
769
+ if (!node) {
770
+ state.currentNode = null;
771
+ } else {
772
+ // On Set Node, we reset all dependants.
773
+ state.currentNode = node; // eslint-disable-next-line @typescript-eslint/no-unused-vars
774
+
775
+ const {
776
+ entry,
777
+ ...nodeWithoutEntry
778
+ } = node; // We have the entry stored elsewhere, so lets not keep it twice.
779
+
780
+ state.currentNode = nodeWithoutEntry;
781
+ }
782
+
783
+ return;
784
+ }
785
+
786
+ case UPDATE_LOADING_STATE$1:
787
+ {
788
+ state.isLoading = action.isLoading;
789
+ return;
790
+ }
791
+
792
+ case SET_NAVIGATION_PATH$1:
793
+ {
794
+ let staticRoute = {};
795
+
796
+ if (action.staticRoute) {
797
+ staticRoute = { ...action.staticRoute
798
+ };
799
+ }
800
+
801
+ if (action.path) {
802
+ var _state$entry, _state$entry$sys;
803
+
804
+ // Don't run a path update on initial load as we allready should have it in redux
805
+ const entryUri = state === null || state === void 0 ? void 0 : (_state$entry = state.entry) === null || _state$entry === void 0 ? void 0 : (_state$entry$sys = _state$entry.sys) === null || _state$entry$sys === void 0 ? void 0 : _state$entry$sys.uri;
806
+
807
+ if (entryUri !== action.path) {
808
+ state.currentPath = action.path;
809
+ state.location = action.location;
810
+ state.staticRoute = { ...staticRoute,
811
+ route: { ...staticRoute.route,
812
+ component: null
813
+ }
814
+ };
815
+ state.isLoading = typeof window !== 'undefined';
816
+ } else {
817
+ state.location = action.location;
818
+ state.staticRoute = { ...staticRoute,
819
+ route: { ...staticRoute.route,
820
+ component: null
821
+ }
822
+ };
823
+ }
824
+ }
825
+
826
+ return;
827
+ }
828
+
829
+ case SET_ROUTE$1:
830
+ {
831
+ state.nextPath = action.path;
832
+ return;
833
+ }
834
+
835
+ case SET_SIBLINGS$1:
836
+ {
837
+ // Can be null in some cases like the homepage.
838
+ let currentNodeSiblingParent = null;
839
+
840
+ if (action.siblings && action.siblings.length > 0) {
841
+ currentNodeSiblingParent = action.siblings[0].parentId;
842
+ }
843
+
844
+ state.currentNodeSiblings = action.siblings;
845
+ state.currentNodeSiblingsParent = currentNodeSiblingParent;
846
+ return;
847
+ }
848
+
849
+ case SET_SURROGATE_KEYS$1:
850
+ {
851
+ // console.info(`SET_SURROGATE_KEYS: '${action.url}' keys: ${action.keys}`);
852
+ state.surrogateKeys = merge__default["default"](state.surrogateKeys, (action.keys || '').split(' '), {
853
+ arrayMerge: combineMerge$1
854
+ });
855
+ return;
856
+ }
857
+
858
+ case SET_TARGET_PROJECT$1:
859
+ {
860
+ state.currentProject = action.project;
861
+ state.allowedGroups = action.allowedGroups;
862
+ state.currentHostname = action.hostname;
863
+ return;
864
+ }
865
+
866
+ default:
867
+ return state;
868
+ }
869
+ }, initialState$1$1);
870
+
871
+ const VERSION_PREFIX$1 = '@VERSION/';
872
+ const SET_VERSION$1 = `${VERSION_PREFIX$1}SET_VERSION`;
873
+ const SET_VERSION_STATUS$1 = `${VERSION_PREFIX$1}SET_VERSION_STATUS`;
874
+
875
+ var version$1$1 = /*#__PURE__*/Object.freeze({
876
+ __proto__: null,
877
+ SET_VERSION: SET_VERSION$1,
878
+ SET_VERSION_STATUS: SET_VERSION_STATUS$1
879
+ });
880
+
881
+ const initialState$4 = {
882
+ commitRef: null,
883
+ buildNo: null,
884
+ contensisVersionStatus: 'published'
885
+ };
886
+ immer.produce((state, action) => {
887
+ switch (action.type) {
888
+ case SET_VERSION_STATUS$1:
889
+ {
890
+ state.contensisVersionStatus = action.status;
891
+ return;
892
+ }
893
+
894
+ case SET_VERSION$1:
895
+ {
896
+ state.commitRef = action.commitRef;
897
+ state.buildNo = action.buildNo;
898
+ return;
899
+ }
900
+
901
+ default:
902
+ return;
903
+ }
904
+ }, initialState$4);
905
+
906
+ const hasNavigationTree$1 = state => getImmutableOrJS$1(state, ['navigation', 'isReady']);
907
+ const selectNavigationRoot$1 = state => getImmutableOrJS$1(state, ['navigation', 'root']);
908
+ const selectNavigationChildren$1 = state => getImmutableOrJS$1(state, ['navigation', 'root', 'children']);
909
+ const selectNavigationDepends$1 = () => [];
910
+
911
+ var navigation$2 = /*#__PURE__*/Object.freeze({
912
+ __proto__: null,
913
+ hasNavigationTree: hasNavigationTree$1,
914
+ selectNavigationRoot: selectNavigationRoot$1,
915
+ selectNavigationChildren: selectNavigationChildren$1,
916
+ selectNavigationDepends: selectNavigationDepends$1
917
+ });
918
+
919
+ const setVersion$1 = (commitRef, buildNo) => action$3(SET_VERSION$1, {
920
+ commitRef,
921
+ buildNo
922
+ });
923
+ const setVersionStatus$1 = status => action$3(SET_VERSION_STATUS$1, {
924
+ status
925
+ });
926
+
927
+ var version$4 = /*#__PURE__*/Object.freeze({
928
+ __proto__: null,
929
+ setVersion: setVersion$1,
930
+ setVersionStatus: setVersionStatus$1
931
+ });
932
+
933
+ const ACTION_PREFIX$2 = '@FORM2/';
934
+ const SET_FORM_DATA = `${ACTION_PREFIX$2}SET_FORM_DATA`;
935
+ const SET_FORM_ID = `${ACTION_PREFIX$2}SET_FORM_ID`;
936
+ const SET_CURRENT_PAGE = `${ACTION_PREFIX$2}SET_CURRENT_PAGE`;
937
+ const PAGE_BACK = `${ACTION_PREFIX$2}PAGE_BACK`;
938
+ const PAGE_FORWARD = `${ACTION_PREFIX$2}PAGE_FORWARD`;
939
+ const SET_FIELD_VALUE = `${ACTION_PREFIX$2}SET_FIELD_VALUE`;
940
+ const SET_DEFAULT_FIELD_VALUE = `${ACTION_PREFIX$2}SET_DEFAULT_FIELD_VALUE`;
941
+ const SUBMIT_FORM_FOR_VALIDATION = `${ACTION_PREFIX$2}SUBMIT_FORM_FOR_VALIDATION`;
942
+ const SUBMIT_FORM = `${ACTION_PREFIX$2}SUBMIT_FORM`;
943
+ const SUBMIT_FORM_SUCCESS = `${ACTION_PREFIX$2}SUBMIT_FORM_SUCCESS`;
944
+ const SUBMIT_FORM_ERROR = `${ACTION_PREFIX$2}SUBMIT_FORM_ERROR`;
945
+ const SET_SUBMITTING_FORM = `${ACTION_PREFIX$2}SET_SUBMITTING_FORM`;
946
+ const SET_ERROR = `${ACTION_PREFIX$2}SET_ERROR`;
947
+ const VALIDATE_FIELD = `${ACTION_PREFIX$2}VALIDATE_FIELD`;
948
+ const VALIDATE_PAGE = `${ACTION_PREFIX$2}VALIDATE_PAGE`;
949
+ const SET_FIELD_ERROR = `${ACTION_PREFIX$2}SET_FIELD_ERROR`;
950
+ const SET_DATE_RANGE_VALUES = `${ACTION_PREFIX$2}SET_DATE_RANGE_VALUES`;
951
+ const SET_FORM_ENTRIES = `${ACTION_PREFIX$2}SET_FORM_ENTRIES`;
952
+ const SET_SUCCESS_MESSAGE = `${ACTION_PREFIX$2}SET_SUCCESS_MESSAGE`;
953
+ const SET_CHECKBOX_VALUE = `${ACTION_PREFIX$2}SET_CHECKBOX_VALUE`;
954
+
955
+ var types$1 = /*#__PURE__*/Object.freeze({
956
+ __proto__: null,
957
+ SET_FORM_DATA: SET_FORM_DATA,
958
+ SET_FORM_ID: SET_FORM_ID,
959
+ SET_CURRENT_PAGE: SET_CURRENT_PAGE,
960
+ PAGE_BACK: PAGE_BACK,
961
+ PAGE_FORWARD: PAGE_FORWARD,
962
+ SET_FIELD_VALUE: SET_FIELD_VALUE,
963
+ SET_DEFAULT_FIELD_VALUE: SET_DEFAULT_FIELD_VALUE,
964
+ SUBMIT_FORM_FOR_VALIDATION: SUBMIT_FORM_FOR_VALIDATION,
965
+ SUBMIT_FORM: SUBMIT_FORM,
966
+ SUBMIT_FORM_SUCCESS: SUBMIT_FORM_SUCCESS,
967
+ SUBMIT_FORM_ERROR: SUBMIT_FORM_ERROR,
968
+ SET_SUBMITTING_FORM: SET_SUBMITTING_FORM,
969
+ SET_ERROR: SET_ERROR,
970
+ VALIDATE_FIELD: VALIDATE_FIELD,
971
+ VALIDATE_PAGE: VALIDATE_PAGE,
972
+ SET_FIELD_ERROR: SET_FIELD_ERROR,
973
+ SET_DATE_RANGE_VALUES: SET_DATE_RANGE_VALUES,
974
+ SET_FORM_ENTRIES: SET_FORM_ENTRIES,
975
+ SET_SUCCESS_MESSAGE: SET_SUCCESS_MESSAGE,
976
+ SET_CHECKBOX_VALUE: SET_CHECKBOX_VALUE
977
+ });
978
+
979
+ const MakeFieldType = field => {
980
+ if (!field) return null;
981
+
982
+ if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
983
+ return 'textarea';
984
+ } else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
985
+ return 'dropdown';
986
+ } else if (field.editor && field.editor.properties && field.editor.properties.readOnly || field.groupId && field.groupId === 'private') {
987
+ return 'hidden';
988
+ } else if (field.dataType === 'stringArray' || field.dataType === 'boolean') {
989
+ return 'checkbox';
990
+ } else if (field.dataType === 'string' && field.validations && field.validations.allowedValues) {
991
+ return 'radio';
992
+ } else if (field.dataType === 'integer') {
993
+ return 'number';
994
+ } else if (field.dataType === 'dateTime') {
995
+ return 'date';
996
+ } else if (field.dataFormat === 'daterange') {
997
+ return 'dateRange';
998
+ } else if (field.dataFormat === 'entry') {
999
+ return 'entryPicker';
1000
+ } else {
1001
+ return 'textfield';
1002
+ }
1003
+ };
1004
+
1005
+ const initialSettings = {
1006
+ recaptcha: {
1007
+ siteKey: null
1008
+ }
1009
+ };
1010
+ const initialStatus = {
1011
+ isLoading: false,
1012
+ isSubmitting: false,
1013
+ hasSuccess: false,
1014
+ successMessage: null,
1015
+ hasError: false
1016
+ };
1017
+ const initialPagingInfo = {
1018
+ pageIndex: 0,
1019
+ pageCount: 0,
1020
+ currentPageId: null
1021
+ };
1022
+ const initialFormData = {
1023
+ formId: null,
1024
+ data: {},
1025
+ fields: [],
1026
+ entries: [],
1027
+ fieldErrors: [],
1028
+ groups: [],
1029
+ defaultLanguage: null,
1030
+ pagingInfo: initialPagingInfo,
1031
+ status: initialStatus
1032
+ };
1033
+ let initialState$3 = {
1034
+ settings: initialSettings
1035
+ };
1036
+ var reducer = immer.produce((state, action) => {
1037
+ switch (action.type) {
1038
+ case SET_FORM_ID:
1039
+ {
1040
+ const {
1041
+ formId
1042
+ } = action || {};
1043
+ state[formId] = initialFormData;
1044
+ return;
1045
+ }
1046
+
1047
+ case SET_FORM_DATA:
1048
+ {
1049
+ const {
1050
+ fields,
1051
+ formId,
1052
+ groups,
1053
+ defaultLanguage
1054
+ } = action || {};
1055
+ fields.map(field => {
1056
+ field.type = MakeFieldType(field);
1057
+ });
1058
+ state[formId].fields = fields;
1059
+ state[formId].formId = formId;
1060
+ state[formId].groups = groups;
1061
+ state[formId].defaultLanguage = defaultLanguage;
1062
+ state[formId].status.isSubmitting = false;
1063
+ state[formId].status.hasSuccess = false;
1064
+ state[formId].status.hasError = false;
1065
+ return;
1066
+ }
1067
+
1068
+ case SET_CURRENT_PAGE:
1069
+ {
1070
+ const {
1071
+ formId,
1072
+ pageId,
1073
+ pageIndex,
1074
+ pageCount
1075
+ } = action || {};
1076
+ state[formId].pagingInfo.currentPageId = pageId;
1077
+ state[formId].pagingInfo.pageIndex = pageIndex;
1078
+ state[formId].pagingInfo.pageCount = pageCount;
1079
+ return;
1080
+ }
1081
+
1082
+ case SET_FIELD_VALUE:
1083
+ {
1084
+ const {
1085
+ formId,
1086
+ id,
1087
+ value
1088
+ } = action || {};
1089
+ state[formId].data[id] = value;
1090
+ return;
1091
+ }
1092
+
1093
+ case SET_DEFAULT_FIELD_VALUE:
1094
+ {
1095
+ const {
1096
+ formId,
1097
+ value
1098
+ } = action || {};
1099
+ state[formId].data = value;
1100
+ return;
1101
+ }
1102
+
1103
+ case SET_CHECKBOX_VALUE:
1104
+ {
1105
+ const {
1106
+ formId,
1107
+ id,
1108
+ value,
1109
+ isChecked
1110
+ } = action || {};
1111
+ let values = state[formId].data[id] || [];
1112
+ if (isChecked) state[formId].data[id] = { ...values,
1113
+ value
1114
+ };else state[formId].data[id] = values.filter(v => v !== value);
1115
+ return;
1116
+ }
1117
+
1118
+ case SET_DATE_RANGE_VALUES:
1119
+ {
1120
+ const {
1121
+ formId,
1122
+ id,
1123
+ value,
1124
+ dateType
1125
+ } = action || {};
1126
+ state[formId].data[id][dateType] = value;
1127
+ return;
1128
+ }
1129
+
1130
+ case SET_FIELD_ERROR:
1131
+ {
1132
+ const {
1133
+ formId,
1134
+ value
1135
+ } = action || {};
1136
+ state[formId].fieldErrors = value;
1137
+ return;
1138
+ }
1139
+
1140
+ case SET_SUBMITTING_FORM:
1141
+ {
1142
+ const {
1143
+ formId,
1144
+ isSubmitting
1145
+ } = action || {};
1146
+ state[formId].status.isSubmitting = isSubmitting;
1147
+ return;
1148
+ }
1149
+
1150
+ case SUBMIT_FORM_SUCCESS:
1151
+ {
1152
+ const {
1153
+ formId
1154
+ } = action || {};
1155
+ state[formId].status.hasError = false;
1156
+ state[formId].status.isSubmitting = false;
1157
+ state[formId].status.hasSuccess = true;
1158
+ return;
1159
+ }
1160
+
1161
+ case SET_SUCCESS_MESSAGE:
1162
+ {
1163
+ const {
1164
+ formId,
1165
+ message
1166
+ } = action || {};
1167
+ state[formId].status.successMessage = message;
1168
+ return;
1169
+ }
1170
+
1171
+ case SUBMIT_FORM_ERROR:
1172
+ {
1173
+ const {
1174
+ formId
1175
+ } = action || {};
1176
+ state[formId].status.hasError = true;
1177
+ state[formId].status.isSubmitting = false;
1178
+ return;
1179
+ }
1180
+
1181
+ case SET_FORM_ENTRIES:
1182
+ {
1183
+ const {
1184
+ formId,
1185
+ entries
1186
+ } = action || {};
1187
+ const entryObject = {};
1188
+ entries.map(entry => {
1189
+ if (!entry) return null;
1190
+ entryObject[entry.id] = entry.entries;
1191
+ return entryObject;
1192
+ });
1193
+ state[formId].entries = entryObject;
1194
+ return;
1195
+ }
1196
+
1197
+ case SET_ERROR:
1198
+ {
1199
+ const {
1200
+ formId
1201
+ } = action || {};
1202
+ state[formId].status.hasError = true;
1203
+ state[formId].status.isSubmitting = false;
1204
+ return;
1205
+ }
1206
+
1207
+ default:
1208
+ return state;
1209
+ }
1210
+ }, initialState$3);
1211
+
1212
+ const action$1 = (type, payload = {}) => ({
1213
+ type,
1214
+ ...payload
1215
+ });
1216
+ const getImmutableOrJS = (state, stateKey, fallbackValue, returnType = globalThis.STATE_TYPE) => {
1217
+ var _globalThis$immutable, _globalThis$immutable2;
1218
+
1219
+ // Find a fromJS function from global that is dynamically loaded in createStore
1220
+ // or replace with a stub function for non-immutable gets
1221
+ const fromJS = returnType === 'immutable' ? ((_globalThis$immutable = globalThis.immutable) === null || _globalThis$immutable === void 0 ? void 0 : _globalThis$immutable.fromJSOrdered) || ((_globalThis$immutable2 = globalThis.immutable) === null || _globalThis$immutable2 === void 0 ? void 0 : _globalThis$immutable2.fromJS) : v => v;
1222
+
1223
+ if (state && 'get' in state && typeof state.get === 'function' && 'getIn' in state && typeof state.getIn === 'function' && 'toJS' in state && typeof state.toJS === 'function') {
1224
+ if (Array.isArray(stateKey)) return fromJS(state.getIn(stateKey, fallbackValue));
1225
+ return fromJS(state.get(stateKey, fallbackValue));
1226
+ }
1227
+
1228
+ if (Array.isArray(stateKey) && state && typeof state === 'object') {
1229
+ const result = mapJson.jpath(stateKey.join('.'), state);
1230
+ if (typeof result === 'undefined') return fallbackValue;
1231
+ return result;
1232
+ }
1233
+
1234
+ const result = state && typeof state === 'object' ? state[stateKey] : undefined;
1235
+ if (typeof result === 'undefined') return fallbackValue;
1236
+ return result;
1237
+ };
1238
+
1239
+ function queryParams(search) {
1240
+ return queryString__default["default"].parse(typeof window != 'undefined' ? window.location.search : search);
1241
+ }
1242
+
1243
+ const selectRouteEntry$1 = (state, returnType) => getImmutableOrJS(state, ['routing', 'entry'], {}, returnType);
1244
+ const selectMappedEntry = (state, returnType) => getImmutableOrJS(state, ['routing', 'mappedEntry'], null, returnType);
1245
+ const selectSurrogateKeys = state => {
1246
+ const keys = getImmutableOrJS(state, ['routing', 'surrogateKeys'], [], 'js');
1247
+ return keys.join(' ');
1248
+ };
1249
+ const selectCurrentHostname = state => getImmutableOrJS(state, ['routing', 'currentHostname']);
1250
+ const selectCurrentTreeID = state => getImmutableOrJS(state, ['routing', 'currentHostname']);
1251
+ const selectRouteEntryEntryId$1 = state => getImmutableOrJS(state, ['routing', 'entry', 'sys', 'id'], null);
1252
+ const selectRouteEntryContentTypeId$1 = state => {
1253
+ const entry = selectRouteEntry$1(state);
1254
+ return getImmutableOrJS(entry, ['sys', 'contentTypeId'], null);
1255
+ };
1256
+ const selectRouteEntryLanguage = state => {
1257
+ const entry = selectRouteEntry$1(state);
1258
+ return getImmutableOrJS(entry, ['sys', 'language'], null);
1259
+ };
1260
+ const selectRouteEntrySlug$1 = state => {
1261
+ const entry = selectRouteEntry$1(state);
1262
+ return getImmutableOrJS(entry, ['sys', 'slug'], null);
1263
+ };
1264
+ const selectRouteEntryID$1 = state => getImmutableOrJS(state, ['routing', 'entryID']);
1265
+ const selectCurrentPath$1 = state => getImmutableOrJS(state, ['routing', 'currentPath']);
1266
+ const selectCurrentLocation = state => getImmutableOrJS(state, ['routing', 'location']);
1267
+ const selectCurrentSearch$1 = state => getImmutableOrJS(state, ['routing', 'location', 'search']);
1268
+ const selectCurrentHash = state => getImmutableOrJS(state, ['routing', 'location', 'hash']);
1269
+ const selectQueryStringAsObject$1 = state => queryParams(selectCurrentSearch$1(state));
1270
+ const selectCurrentProject$1 = state => getImmutableOrJS(state, ['routing', 'currentProject']);
1271
+ const selectIsNotFound$1 = state => getImmutableOrJS(state, ['routing', 'notFound']);
1272
+ const selectCurrentAncestors$1 = state => getImmutableOrJS(state, ['routing', 'currentNodeAncestors'], []);
1273
+ const selectCurrentSiblings = state => getImmutableOrJS(state, ['routing', 'currentNodeSiblings'], []);
1274
+ const selectCurrentNode = (state, returnType) => getImmutableOrJS(state, ['routing', 'currentNode'], null, returnType);
1275
+ const selectCurrentChildren = state => getImmutableOrJS(state, ['routing', 'currentNode', 'children'], []);
1276
+ const selectBreadcrumb = state => {
1277
+ return selectCurrentAncestors$1(state).push(selectCurrentNode(state));
1278
+ };
1279
+ const selectRouteErrorMessage = state => {
1280
+ const error = getImmutableOrJS(state, ['routing', 'error']);
1281
+ return getImmutableOrJS(error, ['data', 'message'], getImmutableOrJS(error, 'statusText'));
1282
+ };
1283
+ const selectRouteIsError = state => getImmutableOrJS(state, ['routing', 'isError']);
1284
+ const selectRouteLoading$1 = state => getImmutableOrJS(state, ['routing', 'isLoading']);
1285
+ const selectRouteStatusCode = state => getImmutableOrJS(state, ['routing', 'statusCode']);
1286
+ const selectStaticRoute = state => getImmutableOrJS(state, ['routing', 'staticRoute']);
1287
+
1288
+ var routing$3 = /*#__PURE__*/Object.freeze({
1289
+ __proto__: null,
1290
+ selectRouteEntry: selectRouteEntry$1,
1291
+ selectMappedEntry: selectMappedEntry,
1292
+ selectSurrogateKeys: selectSurrogateKeys,
1293
+ selectCurrentHostname: selectCurrentHostname,
1294
+ selectCurrentTreeID: selectCurrentTreeID,
1295
+ selectRouteEntryEntryId: selectRouteEntryEntryId$1,
1296
+ selectRouteEntryContentTypeId: selectRouteEntryContentTypeId$1,
1297
+ selectRouteEntryLanguage: selectRouteEntryLanguage,
1298
+ selectRouteEntrySlug: selectRouteEntrySlug$1,
1299
+ selectRouteEntryID: selectRouteEntryID$1,
1300
+ selectCurrentPath: selectCurrentPath$1,
1301
+ selectCurrentLocation: selectCurrentLocation,
1302
+ selectCurrentSearch: selectCurrentSearch$1,
1303
+ selectCurrentHash: selectCurrentHash,
1304
+ selectQueryStringAsObject: selectQueryStringAsObject$1,
1305
+ selectCurrentProject: selectCurrentProject$1,
1306
+ selectIsNotFound: selectIsNotFound$1,
1307
+ selectCurrentAncestors: selectCurrentAncestors$1,
1308
+ selectCurrentSiblings: selectCurrentSiblings,
1309
+ selectCurrentNode: selectCurrentNode,
1310
+ selectCurrentChildren: selectCurrentChildren,
1311
+ selectBreadcrumb: selectBreadcrumb,
1312
+ selectRouteErrorMessage: selectRouteErrorMessage,
1313
+ selectRouteIsError: selectRouteIsError,
1314
+ selectRouteLoading: selectRouteLoading$1,
1315
+ selectRouteStatusCode: selectRouteStatusCode,
1316
+ selectStaticRoute: selectStaticRoute
1317
+ });
1318
+
1319
+ const ROUTING_PREFIX = '@ROUTING/';
1320
+ const GET_ENTRY = `${ROUTING_PREFIX}_GET_ENTRY`;
1321
+ const SET_ENTRY = `${ROUTING_PREFIX}_SET_ENTRY`;
1322
+ const SET_NODE = `${ROUTING_PREFIX}_SET_NODE`;
1323
+ const SET_ANCESTORS = `${ROUTING_PREFIX}_SET_ANCESTORS`;
1324
+ const SET_SIBLINGS = `${ROUTING_PREFIX}_SET_SIBLINGS`;
1325
+ const SET_ENTRY_ID = `${ROUTING_PREFIX}_SET_ENTRY_ID`;
1326
+ const SET_SURROGATE_KEYS = `${ROUTING_PREFIX}_SET_SURROGATE_KEYS`;
1327
+ const SET_NAVIGATION_NOT_FOUND = `${ROUTING_PREFIX}_SET_NOT_FOUND`;
1328
+ const SET_NAVIGATION_PATH = `${ROUTING_PREFIX}_SET_NAVIGATION_PATH`;
1329
+ const SET_TARGET_PROJECT = `${ROUTING_PREFIX}_SET_TARGET_PROJECT`;
1330
+ const SET_ROUTE = `${ROUTING_PREFIX}_SET_ROUTE`;
1331
+ const UPDATE_LOADING_STATE = `${ROUTING_PREFIX}_UPDATE_LOADING_STATE`;
1332
+
1333
+ var routing$1 = /*#__PURE__*/Object.freeze({
1334
+ __proto__: null,
1335
+ GET_ENTRY: GET_ENTRY,
1336
+ SET_ENTRY: SET_ENTRY,
1337
+ SET_NODE: SET_NODE,
1338
+ SET_ANCESTORS: SET_ANCESTORS,
1339
+ SET_SIBLINGS: SET_SIBLINGS,
1340
+ SET_ENTRY_ID: SET_ENTRY_ID,
1341
+ SET_SURROGATE_KEYS: SET_SURROGATE_KEYS,
1342
+ SET_NAVIGATION_NOT_FOUND: SET_NAVIGATION_NOT_FOUND,
1343
+ SET_NAVIGATION_PATH: SET_NAVIGATION_PATH,
1344
+ SET_TARGET_PROJECT: SET_TARGET_PROJECT,
1345
+ SET_ROUTE: SET_ROUTE,
1346
+ UPDATE_LOADING_STATE: UPDATE_LOADING_STATE
1347
+ });
1348
+
1349
+ const setNotFound = notFound => action$1(SET_NAVIGATION_NOT_FOUND, {
1350
+ notFound
1351
+ });
1352
+ const setNavigationPath = (path, location, staticRoute, withEvents, statePath, routes) => action$1(SET_NAVIGATION_PATH, {
1353
+ path,
1354
+ location,
1355
+ staticRoute,
1356
+ withEvents,
1357
+ statePath,
1358
+ routes
1359
+ });
1360
+ const setCurrentProject = (project, allowedGroups, hostname) => action$1(SET_TARGET_PROJECT, {
1361
+ project,
1362
+ allowedGroups,
1363
+ hostname
1364
+ });
1365
+ const setRoute = (path, state) => action$1(SET_ROUTE, {
1366
+ path,
1367
+ state
1368
+ });
1369
+ const setRouteEntry = entry => action$1(SET_ENTRY, {
1370
+ entry
1371
+ });
1372
+ const setSurrogateKeys = (keys, url) => action$1(SET_SURROGATE_KEYS, {
1373
+ keys,
1374
+ url
1375
+ });
1376
+
1377
+ var routing$2 = /*#__PURE__*/Object.freeze({
1378
+ __proto__: null,
1379
+ setNotFound: setNotFound,
1380
+ setNavigationPath: setNavigationPath,
1381
+ setCurrentProject: setCurrentProject,
1382
+ setRoute: setRoute,
1383
+ setRouteEntry: setRouteEntry,
1384
+ setSurrogateKeys: setSurrogateKeys
1385
+ });
1386
+
1387
+ const ACTION_PREFIX$1 = '@USER/';
1388
+ const SET_AUTHENTICATION_STATE = `${ACTION_PREFIX$1}SET_AUTHENTICATION_STATE`;
1389
+ const LOGIN_USER = `${ACTION_PREFIX$1}LOGIN_USER`;
1390
+ const LOGOUT_USER = `${ACTION_PREFIX$1}LOGOUT_USER`;
1391
+ const REGISTER_USER = `${ACTION_PREFIX$1}REGISTER_USER`;
1392
+ const REGISTER_USER_SUCCESS = `${ACTION_PREFIX$1}REGISTER_USER_SUCCESS`;
1393
+ const REGISTER_USER_FAILED = `${ACTION_PREFIX$1}REGISTER_USER_FAILED`;
1394
+ const REQUEST_USER_PASSWORD_RESET_SENDING = `${ACTION_PREFIX$1}REQUEST_USER_PASSWORD_RESET_SENDING`;
1395
+ const REQUEST_USER_PASSWORD_RESET_SUCCESS = `${ACTION_PREFIX$1}REQUEST_USER_PASSWORD_RESET_SUCCESS`;
1396
+ const REQUEST_USER_PASSWORD_RESET_ERROR = `${ACTION_PREFIX$1}REQUEST_USER_PASSWORD_RESET_ERROR`;
1397
+ const RESET_USER_PASSWORD_SENDING = `${ACTION_PREFIX$1}RESET_USER_PASSWORD_SENDING`;
1398
+ const RESET_USER_PASSWORD_SUCCESS = `${ACTION_PREFIX$1}RESET_USER_PASSWORD_SUCCESS`;
1399
+ const RESET_USER_PASSWORD_ERROR = `${ACTION_PREFIX$1}RESET_USER_PASSWORD_ERROR`;
1400
+ const CHANGE_USER_PASSWORD_SENDING = `${ACTION_PREFIX$1}CHANGE_USER_PASSWORD_SENDING`;
1401
+ const CHANGE_USER_PASSWORD_SUCCESS = `${ACTION_PREFIX$1}CHANGE_USER_PASSWORD_SUCCESS`;
1402
+ const CHANGE_USER_PASSWORD_ERROR = `${ACTION_PREFIX$1}CHANGE_USER_PASSWORD_ERROR`;
1403
+
1404
+ const defaultAuthenticationState = {
1405
+ clientCredentials: null,
1406
+ errorMessage: null,
1407
+ isAuthenticated: false,
1408
+ isAuthenticationError: false,
1409
+ isError: false,
1410
+ isLoading: false
1411
+ };
1412
+ const defaultPasswordResetRequestValues = {
1413
+ isSending: false,
1414
+ sent: false,
1415
+ error: null
1416
+ };
1417
+ const defaultResetPasswordValues = {
1418
+ isSending: false,
1419
+ sent: false,
1420
+ error: null
1421
+ };
1422
+ const defaultChangePasswordValues = {
1423
+ isSending: false,
1424
+ sent: false,
1425
+ error: null
1426
+ };
1427
+ const defaultRegistrationValues = {
1428
+ isLoading: false,
1429
+ success: false,
1430
+ error: null
1431
+ };
1432
+ const initialUserState = {
1433
+ authenticationState: defaultAuthenticationState,
1434
+ passwordResetRequest: defaultPasswordResetRequestValues,
1435
+ resetPassword: defaultResetPasswordValues,
1436
+ changePassword: defaultChangePasswordValues,
1437
+ groups: []
1438
+ };
1439
+ immer.produce((state, action) => {
1440
+ switch (action.type) {
1441
+ case LOGOUT_USER:
1442
+ {
1443
+ return initialUserState;
1444
+ }
1445
+
1446
+ case LOGIN_USER:
1447
+ case SET_AUTHENTICATION_STATE:
1448
+ {
1449
+ var _state, _state$authentication;
1450
+
1451
+ if (!action.authenticationState) {
1452
+ action.authenticationState = defaultAuthenticationState;
1453
+ }
1454
+
1455
+ const {
1456
+ authenticationState: {
1457
+ clientCredentials = null,
1458
+ errorMessage = null,
1459
+ isAuthenticated,
1460
+ isAuthenticationError = false,
1461
+ isError = false,
1462
+ isLoading = action.type === LOGIN_USER
1463
+ },
1464
+ user
1465
+ } = action;
1466
+
1467
+ if (user) {
1468
+ user.name = `${user.firstName}${user.lastName ? ` ${user.lastName}` : ''}` || null;
1469
+ user.isZengentiStaff = user.email.includes('@zengenti.com');
1470
+ }
1471
+
1472
+ state = { ...initialUserState,
1473
+ ...(user || state),
1474
+ authenticationState: {
1475
+ clientCredentials,
1476
+ errorMessage,
1477
+ isAuthenticated: isAuthenticated || ((_state = state) === null || _state === void 0 ? void 0 : (_state$authentication = _state.authenticationState) === null || _state$authentication === void 0 ? void 0 : _state$authentication.isAuthenticated),
1478
+ isAuthenticationError,
1479
+ isError,
1480
+ isLoading
1481
+ }
1482
+ };
1483
+ return state;
1484
+ }
1485
+ // REGISTER_USER is the trigger to set the user.registration initial state
1486
+ // and will set user.registration.isLoading to true
1487
+ // REGISTER_USER_FAILED will unset user.registration.isLoading and will set
1488
+ // the value in user.registration.error
1489
+ // REGISTER_USER_SUCCESS will unset user.registration.isLoading and will
1490
+ // set user.registration to the created user from the api response
1491
+
1492
+ case REGISTER_USER:
1493
+ case REGISTER_USER_FAILED:
1494
+ case REGISTER_USER_SUCCESS:
1495
+ {
1496
+ const {
1497
+ error,
1498
+ user
1499
+ } = action; // Set registration object from the supplied action.user
1500
+ // so we can call these values back later
1501
+
1502
+ state.registration = user || state.registration || defaultRegistrationValues; // Set registration flags so the UI can track the status
1503
+
1504
+ state.registration.success = action.type === REGISTER_USER_SUCCESS;
1505
+ state.registration.error = error || false;
1506
+ state.registration.isLoading = action.type === REGISTER_USER;
1507
+ return;
1508
+ }
1509
+
1510
+ case REQUEST_USER_PASSWORD_RESET_SENDING:
1511
+ state.passwordResetRequest = defaultPasswordResetRequestValues;
1512
+ state.passwordResetRequest.isSending = true;
1513
+ return;
1514
+
1515
+ case REQUEST_USER_PASSWORD_RESET_SUCCESS:
1516
+ if (state.passwordResetRequest) {
1517
+ state.passwordResetRequest.isSending = false;
1518
+ state.passwordResetRequest.sent = true;
1519
+ }
1520
+
1521
+ return;
1522
+
1523
+ case REQUEST_USER_PASSWORD_RESET_ERROR:
1524
+ if (state.passwordResetRequest) {
1525
+ state.passwordResetRequest.isSending = false;
1526
+ state.passwordResetRequest.error = action.error;
1527
+ }
1528
+
1529
+ return;
1530
+
1531
+ case RESET_USER_PASSWORD_SENDING:
1532
+ if (state.resetPassword) {
1533
+ state.resetPassword.isSending = true;
1534
+ }
1535
+
1536
+ return;
1537
+
1538
+ case RESET_USER_PASSWORD_SUCCESS:
1539
+ if (state.resetPassword) {
1540
+ state.resetPassword.isSending = false;
1541
+ state.resetPassword.sent = true;
1542
+ }
1543
+
1544
+ return;
1545
+
1546
+ case RESET_USER_PASSWORD_ERROR:
1547
+ if (state.resetPassword) {
1548
+ state.resetPassword.isSending = false;
1549
+ state.resetPassword.error = action.error;
1550
+ }
1551
+
1552
+ return;
1553
+
1554
+ case CHANGE_USER_PASSWORD_SENDING:
1555
+ if (state.changePassword) {
1556
+ state.changePassword.isSending = true;
1557
+ }
1558
+
1559
+ return;
1560
+
1561
+ case CHANGE_USER_PASSWORD_SUCCESS:
1562
+ if (state.changePassword) {
1563
+ state.changePassword.isSending = false;
1564
+ state.changePassword.sent = true;
1565
+ }
1566
+
1567
+ return;
1568
+
1569
+ case CHANGE_USER_PASSWORD_ERROR:
1570
+ if (state.changePassword) {
1571
+ state.changePassword.isSending = false;
1572
+ state.changePassword.error = action.error;
1573
+ }
1574
+
1575
+ return;
1576
+
1577
+ default:
1578
+ return;
1579
+ }
1580
+ }, initialUserState);
1581
+
1582
+ const ACTION_PREFIX = '@NAVIGATION/';
1583
+ const GET_NODE_TREE = `${ACTION_PREFIX}_GET_NODE_TREE`;
1584
+ const SET_NODE_TREE = `${ACTION_PREFIX}_SET_NODE_TREE`;
1585
+ const GET_NODE_TREE_ERROR = `${ACTION_PREFIX}_GET_NODE_TREE_ERROR`;
1586
+
1587
+ var navigation$1$1 = /*#__PURE__*/Object.freeze({
1588
+ __proto__: null,
1589
+ GET_NODE_TREE: GET_NODE_TREE,
1590
+ SET_NODE_TREE: SET_NODE_TREE,
1591
+ GET_NODE_TREE_ERROR: GET_NODE_TREE_ERROR
1592
+ });
1593
+
1594
+ const initialState$2 = {
1595
+ root: null,
1596
+ isError: false,
1597
+ isReady: false
1598
+ };
1599
+ immer.produce((state, action) => {
1600
+ switch (action.type) {
1601
+ case SET_NODE_TREE:
1602
+ {
1603
+ state.root = action.nodes;
1604
+ state.isReady = true;
1605
+ return;
1606
+ }
1607
+
1608
+ case GET_NODE_TREE_ERROR:
1609
+ {
1610
+ state.isError = true;
1611
+ return;
1612
+ }
1613
+
1614
+ default:
1615
+ return;
1616
+ }
1617
+ }, initialState$2);
1618
+
1619
+ const combineMerge = (target, source, options) => {
1620
+ const destination = target.slice();
1621
+ source.forEach((item, index) => {
1622
+ if (typeof destination[index] === 'undefined') {
1623
+ destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);
1624
+ } else if (options.isMergeableObject(item)) {
1625
+ destination[index] = merge__default["default"](target[index], item, options);
1626
+ } else if (target.indexOf(item) === -1) {
1627
+ destination.push(item);
1628
+ }
1629
+ });
1630
+ return destination;
1631
+ };
1632
+
1633
+ const initialState$1 = {
1634
+ currentHostname: null,
1635
+ currentPath: '/',
1636
+ currentNode: {},
1637
+ currentNodeAncestors: [],
1638
+ currentProject: 'unknown',
1639
+ entryID: null,
1640
+ entry: null,
1641
+ error: undefined,
1642
+ isError: false,
1643
+ isLoading: false,
1644
+ location: {},
1645
+ mappedEntry: null,
1646
+ notFound: false,
1647
+ staticRoute: null,
1648
+ statusCode: 200
1649
+ };
1650
+ immer.produce((state, action) => {
1651
+ switch (action.type) {
1652
+ case SET_ANCESTORS:
1653
+ {
1654
+ state.currentNodeAncestors = action.ancestors;
1655
+ return;
1656
+ }
1657
+
1658
+ case SET_ENTRY:
1659
+ {
1660
+ const {
1661
+ entry,
1662
+ error,
1663
+ mappedEntry,
1664
+ node = {},
1665
+ isError = false,
1666
+ isLoading = false,
1667
+ notFound = false,
1668
+ statusCode
1669
+ } = action;
1670
+ let defaultStatus = 200;
1671
+ if (notFound === true && isError === false) defaultStatus = 404;else if (isError === true) defaultStatus = statusCode || 500;
1672
+
1673
+ if (!entry) {
1674
+ state.entryID = null;
1675
+ state.entry = null;
1676
+ state.error = error;
1677
+ state.mappedEntry = null;
1678
+ state.isError = isError;
1679
+ state.isLoading = isLoading;
1680
+ state.notFound = notFound;
1681
+ state.statusCode = statusCode || defaultStatus;
1682
+ } else {
1683
+ state.entryID = action.id;
1684
+ state.entry = entry;
1685
+ state.error = error;
1686
+ state.isError = isError;
1687
+ state.isLoading = isLoading;
1688
+ state.notFound = notFound;
1689
+ state.statusCode = statusCode || defaultStatus;
1690
+
1691
+ if (mappedEntry && Object.keys(mappedEntry).length > 0) {
1692
+ state.mappedEntry = mappedEntry;
1693
+ state.entry = {
1694
+ sys: entry.sys
1695
+ };
1696
+ }
1697
+ }
1698
+
1699
+ if (!node) {
1700
+ state.currentNode = null;
1701
+ } else {
1702
+ // On Set Node, we reset all dependants.
1703
+ state.currentNode = node; // eslint-disable-next-line @typescript-eslint/no-unused-vars
1704
+
1705
+ const {
1706
+ entry,
1707
+ ...nodeWithoutEntry
1708
+ } = node; // We have the entry stored elsewhere, so lets not keep it twice.
1709
+
1710
+ state.currentNode = nodeWithoutEntry;
1711
+ }
1712
+
1713
+ return;
1714
+ }
1715
+
1716
+ case UPDATE_LOADING_STATE:
1717
+ {
1718
+ state.isLoading = action.isLoading;
1719
+ return;
1720
+ }
1721
+
1722
+ case SET_NAVIGATION_PATH:
1723
+ {
1724
+ let staticRoute = {};
1725
+
1726
+ if (action.staticRoute) {
1727
+ staticRoute = { ...action.staticRoute
1728
+ };
1729
+ }
1730
+
1731
+ if (action.path) {
1732
+ var _state$entry, _state$entry$sys;
1733
+
1734
+ // Don't run a path update on initial load as we allready should have it in redux
1735
+ const entryUri = state === null || state === void 0 ? void 0 : (_state$entry = state.entry) === null || _state$entry === void 0 ? void 0 : (_state$entry$sys = _state$entry.sys) === null || _state$entry$sys === void 0 ? void 0 : _state$entry$sys.uri;
1736
+
1737
+ if (entryUri !== action.path) {
1738
+ state.currentPath = action.path;
1739
+ state.location = action.location;
1740
+ state.staticRoute = { ...staticRoute,
1741
+ route: { ...staticRoute.route,
1742
+ component: null
1743
+ }
1744
+ };
1745
+ state.isLoading = typeof window !== 'undefined';
1746
+ } else {
1747
+ state.location = action.location;
1748
+ state.staticRoute = { ...staticRoute,
1749
+ route: { ...staticRoute.route,
1750
+ component: null
1751
+ }
1752
+ };
1753
+ }
1754
+ }
1755
+
1756
+ return;
1757
+ }
1758
+
1759
+ case SET_ROUTE:
1760
+ {
1761
+ state.nextPath = action.path;
1762
+ return;
1763
+ }
1764
+
1765
+ case SET_SIBLINGS:
1766
+ {
1767
+ // Can be null in some cases like the homepage.
1768
+ let currentNodeSiblingParent = null;
1769
+
1770
+ if (action.siblings && action.siblings.length > 0) {
1771
+ currentNodeSiblingParent = action.siblings[0].parentId;
1772
+ }
1773
+
1774
+ state.currentNodeSiblings = action.siblings;
1775
+ state.currentNodeSiblingsParent = currentNodeSiblingParent;
1776
+ return;
1777
+ }
1778
+
1779
+ case SET_SURROGATE_KEYS:
1780
+ {
1781
+ // console.info(`SET_SURROGATE_KEYS: '${action.url}' keys: ${action.keys}`);
1782
+ state.surrogateKeys = merge__default["default"](state.surrogateKeys, (action.keys || '').split(' '), {
1783
+ arrayMerge: combineMerge
1784
+ });
1785
+ return;
1786
+ }
1787
+
1788
+ case SET_TARGET_PROJECT:
1789
+ {
1790
+ state.currentProject = action.project;
1791
+ state.allowedGroups = action.allowedGroups;
1792
+ state.currentHostname = action.hostname;
1793
+ return;
1794
+ }
1795
+
1796
+ default:
1797
+ return state;
1798
+ }
1799
+ }, initialState$1);
1800
+
1801
+ const VERSION_PREFIX = '@VERSION/';
1802
+ const SET_VERSION = `${VERSION_PREFIX}SET_VERSION`;
1803
+ const SET_VERSION_STATUS = `${VERSION_PREFIX}SET_VERSION_STATUS`;
1804
+
1805
+ var version$1 = /*#__PURE__*/Object.freeze({
1806
+ __proto__: null,
1807
+ SET_VERSION: SET_VERSION,
1808
+ SET_VERSION_STATUS: SET_VERSION_STATUS
1809
+ });
1810
+
1811
+ const initialState = {
1812
+ commitRef: null,
1813
+ buildNo: null,
1814
+ contensisVersionStatus: 'published'
1815
+ };
1816
+ immer.produce((state, action) => {
1817
+ switch (action.type) {
1818
+ case SET_VERSION_STATUS:
1819
+ {
1820
+ state.contensisVersionStatus = action.status;
1821
+ return;
1822
+ }
1823
+
1824
+ case SET_VERSION:
1825
+ {
1826
+ state.commitRef = action.commitRef;
1827
+ state.buildNo = action.buildNo;
1828
+ return;
1829
+ }
1830
+
1831
+ default:
1832
+ return;
1833
+ }
1834
+ }, initialState);
1835
+
1836
+ const hasNavigationTree = state => getImmutableOrJS(state, ['navigation', 'isReady']);
1837
+ const selectNavigationRoot = state => getImmutableOrJS(state, ['navigation', 'root']);
1838
+ const selectNavigationChildren = state => getImmutableOrJS(state, ['navigation', 'root', 'children']);
1839
+ const selectNavigationDepends = () => [];
1840
+
1841
+ var navigation = /*#__PURE__*/Object.freeze({
1842
+ __proto__: null,
1843
+ hasNavigationTree: hasNavigationTree,
1844
+ selectNavigationRoot: selectNavigationRoot,
1845
+ selectNavigationChildren: selectNavigationChildren,
1846
+ selectNavigationDepends: selectNavigationDepends
1847
+ });
1848
+
1849
+ const setVersion = (commitRef, buildNo) => action$1(SET_VERSION, {
1850
+ commitRef,
1851
+ buildNo
1852
+ });
1853
+ const setVersionStatus = status => action$1(SET_VERSION_STATUS, {
1854
+ status
1855
+ });
1856
+
1857
+ var version$2 = /*#__PURE__*/Object.freeze({
1858
+ __proto__: null,
1859
+ setVersion: setVersion,
1860
+ setVersionStatus: setVersionStatus
1861
+ });
1862
+
1863
+ const selectCommitRef$1 = state => getImmutableOrJS(state, ['version', 'commitRef']);
1864
+ const selectBuildNumber$1 = state => getImmutableOrJS(state, ['version', 'buildNo']);
1865
+ const selectVersionStatus$1 = state => getImmutableOrJS(state, ['version', 'contensisVersionStatus']);
1866
+
1867
+ var version$3 = /*#__PURE__*/Object.freeze({
1868
+ __proto__: null,
1869
+ selectCommitRef: selectCommitRef$1,
1870
+ selectBuildNumber: selectBuildNumber$1,
1871
+ selectVersionStatus: selectVersionStatus$1
1872
+ });
1873
+
1874
+ var types$2 = {
1875
+ navigation: navigation$1$1,
1876
+ routing: routing$1,
1877
+ version: version$1
1878
+ };
1879
+
1880
+ const loadNavigationTree$1 = () => action$1(GET_NODE_TREE);
1881
+
1882
+ var navigation$1$2 = /*#__PURE__*/Object.freeze({
1883
+ __proto__: null,
1884
+ loadNavigationTree: loadNavigationTree$1
1885
+ });
1886
+
1887
+ var actions$1 = {
1888
+ navigation: navigation$1$2,
1889
+ routing: routing$2,
1890
+ version: version$2
1891
+ };
1892
+
1893
+ var selectors$1 = {
1894
+ navigation: navigation,
1895
+ routing: routing$3,
1896
+ version: version$3
1897
+ };
1898
+ const routing$4 = {
1899
+ types: types$2.routing,
1900
+ actions: actions$1.routing,
1901
+ selectors: selectors$1.routing
1902
+ };
1903
+
1904
+ const selectForms$1 = state => getImmutableOrJS(state, ['forms']);
1905
+ const selectFormFieldData = (state, formId, field) => getImmutableOrJS(state, ['forms', formId, 'fields', field]);
1906
+ const selectFieldErrors$1 = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'fieldErrors']);
1907
+ const selectPostData$1 = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'data']);
1908
+ const selectFormGroups$1 = (state, formId) => getImmutableOrJS(state, [('groups')]);
1909
+ const selectPagingInfo$1 = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'pagingInfo']);
1910
+ const selectFormStatus$1 = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'status']);
1911
+ const selectFormMessage = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'status', 'successMessage']);
1912
+ const selectEntries$1 = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'entries']);
1913
+ const makeSelectHasSuccess = (state, formId) => getImmutableOrJS(state, ['forms', formId, 'status', 'hasSuccess']);
1914
+ const selectPagedFields$1 = formId => reselect.createSelector([selectForms$1], form => {
1915
+ const pagingInfo = getImmutableOrJS(form, [formId, 'pagingInfo']);
1916
+ const fields = getImmutableOrJS(form, [formId, 'fields']);
1917
+
1918
+ if (fields && fields.length > 0 && pagingInfo && pagingInfo.pageCount > 1) {
1919
+ return fields.filter(f => f.groupId == pagingInfo.currentPageId);
1920
+ }
1921
+
1922
+ return fields;
1923
+ });
1924
+ const makeSelectIsLoading$1 = formId => reselect.createSelector(selectForms$1, forms => getImmutableOrJS(forms, [formId, 'status', 'isLoading']));
1925
+ const makeSelectFormFields$1 = formId => reselect.createSelector(selectForms$1, forms => getImmutableOrJS(forms, [formId, 'fields']));
1926
+ const makeSelectDefaultLang$1 = formId => reselect.createSelector(selectForms$1, forms => getImmutableOrJS(forms, [formId, 'defaultLanguage']));
1927
+
1928
+ var selectors$2 = /*#__PURE__*/Object.freeze({
1929
+ __proto__: null,
1930
+ selectForms: selectForms$1,
1931
+ selectFormFieldData: selectFormFieldData,
1932
+ selectFieldErrors: selectFieldErrors$1,
1933
+ selectPostData: selectPostData$1,
1934
+ selectFormGroups: selectFormGroups$1,
1935
+ selectPagingInfo: selectPagingInfo$1,
1936
+ selectFormStatus: selectFormStatus$1,
1937
+ selectFormMessage: selectFormMessage,
1938
+ selectEntries: selectEntries$1,
1939
+ makeSelectHasSuccess: makeSelectHasSuccess,
1940
+ selectPagedFields: selectPagedFields$1,
1941
+ makeSelectIsLoading: makeSelectIsLoading$1,
1942
+ makeSelectFormFields: makeSelectFormFields$1,
1943
+ makeSelectDefaultLang: makeSelectDefaultLang$1
1944
+ });
1945
+
1946
+ const URI$1 = '/forms';
1947
+ const getFormSchema$1 = async formId => {
1948
+ var options = {
1949
+ method: 'GET',
1950
+ headers: {
1951
+ 'Content-Type': 'application/json'
1952
+ }
1953
+ };
1954
+ const getUrl = `${URI$1}/${formId}`;
1955
+ const schema = await request$1(getUrl, options);
1956
+ return schema;
1957
+ };
1958
+ const getEntries$1 = async (formObj, id) => {
1959
+ var options = {
1960
+ method: 'POST',
1961
+ headers: {
1962
+ Accept: '*/*',
1963
+ 'Content-Type': 'application/json'
1964
+ },
1965
+ body: JSON.stringify(formObj)
1966
+ };
1967
+ const entriesUrl = `${URI$1}/entries`;
1968
+ const entries = await request$1(entriesUrl, options);
1969
+ return {
1970
+ entries,
1971
+ id
1972
+ };
1973
+ };
1974
+ const postForm$1 = async formObj => {
1975
+ var options = {
1976
+ method: 'POST',
1977
+ headers: {
1978
+ Accept: '*/*',
1979
+ 'Content-Type': 'application/json'
1980
+ },
1981
+ body: JSON.stringify(formObj)
1982
+ };
1983
+ const submitted = await request$1(URI$1, options);
1984
+ return submitted;
1985
+ };
1986
+
1987
+ const request$1 = async (url, options) => {
1988
+ return fetch(url, options).then(response => response.json()).then(result => {
1989
+ return result;
1990
+ }) // eslint-disable-next-line no-console
1991
+ .catch(error => console.log('error', error));
1992
+ };
1993
+
1994
+ const validateInput$1 = (field, value) => {
1995
+ const isRequired = field.validations && field.validations.required;
1996
+ const minLength = field.validations && field.validations.minLength;
1997
+ const maxLength = field.validations && field.validations.maxLength;
1998
+ const regex = field.validations && field.validations.regex;
1999
+ const integer = field.dataType === 'integer';
2000
+ const decimal = field.dataType === 'decimal';
2001
+
2002
+ if (isRequired && !value) {
2003
+ const errorMessage = isRequired.message ? isRequired.message['en-GB'] : `${field.id} is required`;
2004
+ return {
2005
+ fieldId: field.id,
2006
+ groupId: field.groupId,
2007
+ message: errorMessage
2008
+ };
2009
+ }
2010
+
2011
+ if (minLength && minLength.value > value.length) {
2012
+ const errorMessage = minLength.message ? minLength.message['en-GB'] : `Minimum characters ${minLength.value}`;
2013
+ return {
2014
+ fieldId: field.id,
2015
+ groupId: field.groupId,
2016
+ message: errorMessage
2017
+ };
2018
+ }
2019
+
2020
+ if (maxLength && maxLength.value < value.length) {
2021
+ const errorMessage = maxLength.message && maxLength.message['en-GB'] ? maxLength.message['en-GB'] : `Maximum characters ${maxLength.value}`;
2022
+ return {
2023
+ fieldId: field.id,
2024
+ groupId: field.groupId,
2025
+ message: errorMessage
2026
+ };
2027
+ }
2028
+
2029
+ if (regex && value.length > 0) {
2030
+ //Had to make the string raw, as a string ususually is wrapped as '' and Regex couldnt use the regex patter as the string variant
2031
+ const regexPattern = RegExp(regex.pattern.raw);
2032
+
2033
+ if (!regexPattern.test(value)) {
2034
+ const errorMessage = regex.message ? regex.message['en-GB'] : `${field.id} is invalid`;
2035
+ return {
2036
+ fieldId: field.id,
2037
+ groupId: field.groupId,
2038
+ message: errorMessage
2039
+ };
2040
+ }
2041
+ }
2042
+
2043
+ if (integer) {
2044
+ const isInteger = value % 1 === 0;
2045
+
2046
+ if (!isInteger) {
2047
+ const errorMessage = `${value} is not an ${field.dataType}`;
2048
+ return {
2049
+ fieldId: field.id,
2050
+ groupId: field.groupId,
2051
+ message: errorMessage
2052
+ };
2053
+ }
2054
+ }
2055
+
2056
+ if (decimal) {
2057
+ const isDecimal = value % 1 !== 0;
2058
+
2059
+ if (!isDecimal) {
2060
+ const errorMessage = `${value} is not an ${field.dataType}`;
2061
+ return {
2062
+ fieldId: field.id,
2063
+ groupId: field.groupId,
2064
+ message: errorMessage
2065
+ };
2066
+ }
2067
+ }
2068
+ };
2069
+
2070
+ const {
2071
+ selectCurrentAncestors: selectCurrentAncestors$2,
2072
+ selectCurrentPath: selectCurrentPath$2,
2073
+ selectCurrentProject: selectCurrentProject$2,
2074
+ selectCurrentSearch: selectCurrentSearch$2,
2075
+ selectIsNotFound: selectIsNotFound$2,
2076
+ selectQueryStringAsObject: selectQueryStringAsObject$2,
2077
+ selectRouteEntry: selectRouteEntry$2,
2078
+ selectRouteEntryContentTypeId: selectRouteEntryContentTypeId$2,
2079
+ selectRouteEntryDepends: selectRouteEntryDepends$1,
2080
+ selectRouteEntryEntryId: selectRouteEntryEntryId$2,
2081
+ selectRouteEntryID: selectRouteEntryID$2,
2082
+ selectRouteEntrySlug: selectRouteEntrySlug$2,
2083
+ selectRouteLoading: selectRouteLoading$2
2084
+ } = routing$4.selectors;
2085
+
2086
+ const formV2Sagas$1 = [effects.takeEvery(SUBMIT_FORM_SUCCESS, formSuccess$1), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION, validateForm$1), effects.takeEvery(SUBMIT_FORM, submitForm$1$1), effects.takeEvery(SET_FORM_ID, fetchForm$1), effects.takeLatest(VALIDATE_FIELD, validateField$1$1), effects.takeEvery(PAGE_FORWARD, togglePage$1), effects.takeEvery(PAGE_BACK, togglePage$1), effects.takeEvery(SET_FORM_DATA, getEntryPickerData$1), effects.takeLatest(SET_FORM_DATA, setDefaultValueFields$1)];
2087
+
2088
+ function* validateForm$1(action) {
2089
+ const {
2090
+ formId
2091
+ } = action;
2092
+ yield validateAllfields$1(formId);
2093
+ yield effects.put({
2094
+ type: SUBMIT_FORM,
2095
+ formId
2096
+ });
2097
+ }
2098
+
2099
+ function* validateField$1$1(action) {
2100
+ const {
2101
+ formId,
2102
+ id,
2103
+ value
2104
+ } = action;
2105
+ yield effects.call(validateSingleField$1, formId, id, value);
2106
+ }
2107
+
2108
+ function* validateGroupfields$1(formId, groupId) {
2109
+ const state = yield effects.select();
2110
+ const postData = selectPostData$1(state, formId);
2111
+ const selectFormFields = makeSelectFormFields$1(formId);
2112
+ const fields = selectFormFields(state);
2113
+ const groupFields = fields.filter(f => f.groupid == groupId);
2114
+ let newErrors = [];
2115
+ groupFields.forEach(field => {
2116
+ let val = '';
2117
+
2118
+ if (postData[field.id]) {
2119
+ val = postData[field.id];
2120
+ }
2121
+
2122
+ const err = validateInput$1(field, val);
2123
+ if (err) newErrors.push(err);
2124
+ });
2125
+ yield effects.put({
2126
+ type: SET_FIELD_ERROR,
2127
+ formId: formId,
2128
+ value: newErrors
2129
+ });
2130
+ }
2131
+
2132
+ function* validateAllfields$1(formId) {
2133
+ const state = yield effects.select();
2134
+ const postData = selectPostData$1(state, formId);
2135
+ const selectFormFields = makeSelectFormFields$1(formId);
2136
+ const fields = selectFormFields(state);
2137
+ let newErrors = [];
2138
+ fields.forEach(field => {
2139
+ let val = '';
2140
+
2141
+ if (postData[field.id]) {
2142
+ val = postData[field.id];
2143
+ }
2144
+
2145
+ const err = validateInput$1(field, val);
2146
+ if (err) newErrors.push(err);
2147
+ });
2148
+ yield effects.put({
2149
+ type: SET_FIELD_ERROR,
2150
+ formId: formId,
2151
+ value: newErrors
2152
+ });
2153
+ }
2154
+
2155
+ function* validateSingleField$1(formId, fieldId, value) {
2156
+ const state = yield effects.select();
2157
+ const selectFormFields = makeSelectFormFields$1(formId);
2158
+ const fields = selectFormFields(state);
2159
+ const fieldData = fields.find(f => f.id == fieldId);
2160
+ const errors = selectFieldErrors$1(state, formId);
2161
+ const newErrors = []; //loop through current errors to remove any of the item we currently edit
2162
+
2163
+ errors.forEach(error => {
2164
+ if (error.fieldId !== fieldId) {
2165
+ //push any existing errors to new array
2166
+ newErrors.push(error);
2167
+ }
2168
+ });
2169
+ const err = validateInput$1(fieldData, value);
2170
+ if (err) newErrors.push(err);
2171
+ yield effects.put({
2172
+ type: SET_FIELD_ERROR,
2173
+ formId: formId,
2174
+ value: newErrors
2175
+ });
2176
+ }
2177
+
2178
+ function* togglePage$1(action) {
2179
+ const {
2180
+ formId,
2181
+ pageIndex
2182
+ } = action;
2183
+ const state = yield effects.select();
2184
+ const formGroups = selectFormGroups$1(state);
2185
+
2186
+ if (action.type === PAGE_FORWARD) {
2187
+ yield validateGroupfields$1(formId, formGroups[pageIndex].id);
2188
+ }
2189
+
2190
+ yield effects.put({
2191
+ type: SET_CURRENT_PAGE,
2192
+ formId: formId,
2193
+ pageId: formGroups[pageIndex].id,
2194
+ pageCount: formGroups.length,
2195
+ pageIndex: pageIndex
2196
+ });
2197
+ }
2198
+
2199
+ function* fetchForm$1(action) {
2200
+ const formId = action.formId;
2201
+ const schema = yield getFormSchema$1(formId);
2202
+ const groups = schema && schema.groups && schema.groups.length > 0 && schema.groups.filter(group => group.id !== 'private');
2203
+
2204
+ if (formId && schema) {
2205
+ if (schema.groups && schema.groups.length > 0) {
2206
+ yield effects.put({
2207
+ type: SET_CURRENT_PAGE,
2208
+ formId: formId,
2209
+ pageId: groups[0].id,
2210
+ pageIndex: 0,
2211
+ pageCount: groups.length
2212
+ });
2213
+ }
2214
+
2215
+ yield effects.put({
2216
+ type: SET_FORM_DATA,
2217
+ formId: formId,
2218
+ fields: schema.fields,
2219
+ groups: groups,
2220
+ defaultLanguage: schema.defaultLanguage
2221
+ });
2222
+ }
2223
+ }
2224
+
2225
+ function* formSuccess$1(action) {
2226
+ const state = yield effects.select();
2227
+ const selectFormFields = makeSelectFormFields$1(action.formId);
2228
+ const fields = selectFormFields(state);
2229
+ const redirect = fields.find(f => f.id === 'formSettingsRedirect');
2230
+ const message = fields.find(f => f.id === 'formSettingsMessage');
2231
+
2232
+ if (redirect && redirect.default) {
2233
+ window.location.href = redirect.default['en-GB'];
2234
+ }
2235
+
2236
+ if (message && message.default) {
2237
+ yield effects.put({
2238
+ type: SET_SUCCESS_MESSAGE,
2239
+ message: message.default['en-GB'],
2240
+ formId: action.formId
2241
+ });
2242
+ }
2243
+ }
2244
+
2245
+ function* submitForm$1$1(action) {
2246
+ const state = yield effects.select();
2247
+ const errors = selectFieldErrors$1(state, action.formId);
2248
+ const canSubmit = errors && errors.length == 0;
2249
+
2250
+ if (canSubmit) {
2251
+ yield effects.put({
2252
+ type: SET_SUBMITTING_FORM,
2253
+ isSubmitting: true,
2254
+ formId: action.formId
2255
+ });
2256
+ const forms = yield effects.select(selectForms$1);
2257
+ const rawData = forms[action.formId];
2258
+ const formObj = {
2259
+ contentType: action.formId,
2260
+ formPost: rawData.data
2261
+ };
2262
+ const formResObj = yield postForm$1(formObj);
2263
+
2264
+ if (formResObj && formResObj.sys && formResObj.sys.id) {
2265
+ yield effects.put({
2266
+ type: SUBMIT_FORM_SUCCESS,
2267
+ formId: action.formId
2268
+ });
2269
+ } else {
2270
+ yield effects.put({
2271
+ type: SUBMIT_FORM_ERROR,
2272
+ formId: action.formId
2273
+ });
2274
+ }
2275
+ }
2276
+ }
2277
+
2278
+ function* setDefaultValueFields$1(action) {
2279
+ const {
2280
+ formId,
2281
+ fields,
2282
+ defaultLanguage
2283
+ } = action;
2284
+ const entryId = yield effects.select(selectRouteEntryEntryId$2);
2285
+ let fieldObj = {};
2286
+ fields.forEach(field => {
2287
+ if (field.dataType == 'string' && field.default) {
2288
+ const val = field.default[defaultLanguage];
2289
+
2290
+ if (val) {
2291
+ fieldObj[field.id] = val;
2292
+ }
2293
+ }
2294
+
2295
+ if (field.id == 'sourceEntry') {
2296
+ const val = entryId;
2297
+
2298
+ if (val) {
2299
+ fieldObj[field.id] = val;
2300
+ }
2301
+ }
2302
+ });
2303
+ yield effects.put({
2304
+ type: SET_DEFAULT_FIELD_VALUE,
2305
+ formId: formId,
2306
+ value: fieldObj
2307
+ });
2308
+ }
2309
+
2310
+ function* getEntryPickerData$1(action) {
2311
+ const {
2312
+ formId,
2313
+ fields
2314
+ } = action;
2315
+ const entriesToGet = fields.filter(f => f.dataFormat == 'entry');
2316
+ let entriesList = [];
2317
+
2318
+ if (entriesToGet) {
2319
+ entriesList = yield effects.all(entriesToGet.map(entry => {
2320
+ const entriesObj = {
2321
+ contentType: entry.validations.allowedContentTypes.contentTypes,
2322
+ versionStatus: 'published',
2323
+ language: 'en-GB',
2324
+ pageSize: '10'
2325
+ };
2326
+ return effects.call(getEntries$1, entriesObj, entry.id);
2327
+ }));
2328
+ yield effects.put({
2329
+ type: SET_FORM_ENTRIES,
2330
+ formId: formId,
2331
+ entries: entriesList
2332
+ });
2333
+ }
2334
+ }
2335
+
2336
+ function action$2(type, payload = {}) {
2337
+ return {
2338
+ type,
2339
+ ...payload
2340
+ };
2341
+ }
2342
+
2343
+ const submitForm$2 = formId => action$2(SUBMIT_FORM_FOR_VALIDATION, {
2344
+ formId
2345
+ });
2346
+ const setFormId$1 = formId => action$2(SET_FORM_ID, {
2347
+ formId
2348
+ });
2349
+ const setValue$1 = (formId, id, value) => action$2(SET_FIELD_VALUE, {
2350
+ formId,
2351
+ id,
2352
+ value
2353
+ });
2354
+ const setCheckboxValue$1 = (formId, id, value, isChecked) => action$2(SET_CHECKBOX_VALUE, {
2355
+ formId,
2356
+ id,
2357
+ value,
2358
+ isChecked
2359
+ });
2360
+ const setDateRangeValues$1 = (formId, id, dateType, value) => action$2(SET_DATE_RANGE_VALUES, {
2361
+ formId,
2362
+ id,
2363
+ dateType,
2364
+ value
2365
+ });
2366
+ const validateField$2 = (formId, id, value) => action$2(VALIDATE_FIELD, {
2367
+ formId,
2368
+ id,
2369
+ value
2370
+ });
2371
+ const togglePageForward$1 = (formId, pageIndex) => action$2(PAGE_FORWARD, {
2372
+ formId,
2373
+ pageIndex
2374
+ });
2375
+ const togglePageBack$1 = (formId, pageIndex) => action$2(PAGE_BACK, {
2376
+ formId,
2377
+ pageIndex
2378
+ });
2379
+
2380
+ var actions$2 = /*#__PURE__*/Object.freeze({
2381
+ __proto__: null,
2382
+ submitForm: submitForm$2,
2383
+ setFormId: setFormId$1,
2384
+ setValue: setValue$1,
2385
+ setCheckboxValue: setCheckboxValue$1,
2386
+ setDateRangeValues: setDateRangeValues$1,
2387
+ validateField: validateField$2,
2388
+ togglePageForward: togglePageForward$1,
2389
+ togglePageBack: togglePageBack$1
2390
+ });
2391
+
2392
+ //Brand
2393
+ const open_teal$1 = '#37BFA7'; //Brand dark
2394
+
2395
+ const teal_dark$1 = '#00a889'; //Primary
2396
+
2397
+ const accent_blue$1 = '#1853AC';
2398
+ const panel_blue$1 = '#00304D'; //Neutrals
2399
+
2400
+ const base_white$1 = '#FFF';
2401
+ const empress_gray$1 = '#757575';
2402
+ const colors$1 = {
2403
+ brand: open_teal$1,
2404
+ brandDark: teal_dark$1,
2405
+ primary: accent_blue$1,
2406
+ secondary: panel_blue$1,
2407
+ label: '#333',
2408
+ label_optional: '#666',
2409
+ border: '#ccc',
2410
+ message_link: '#333',
2411
+ success: '#118011',
2412
+ warning: '#FFB000',
2413
+ error: '#C63D54',
2414
+ required: '#C63D54',
2415
+ neutrals: {
2416
+ base_white: base_white$1,
2417
+ empress_gray: empress_gray$1
2418
+ }
2419
+ };
2420
+
2421
+ const FormStyled$1 = styled__default["default"].form.withConfig({
2422
+ displayName: "Formstyled__FormStyled",
2423
+ componentId: "sc-1jn1lk9-0"
2424
+ })(["", ";"], ({
2425
+ useDefaultTheme
2426
+ }) => {
2427
+ return styled.css(["", ""], useDefaultTheme && styled.css(["> div:not(:first-child){margin-top:16px;}padding:0 16px;.success-message{font-size:18px;margin:0;}.visuallyHidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}label{display:inline-block;.isRequired{color:", ";}}input,textarea,select{display:block;font-family:inherit;background-color:", ";border-radius:3px;border:1px solid ", ";height:40px;padding:8px;margin-top:4px;max-width:320px;width:100%;}textarea{height:200px;resize:none;}"], colors$1.error, colors$1.neutrals.base_white, colors$1.border));
2428
+ });
2429
+
2430
+ const Label$1 = ({
2431
+ className,
2432
+ label,
2433
+ id,
2434
+ isRequired,
2435
+ isHidden
2436
+ }) => {
2437
+ return /*#__PURE__*/React__default["default"].createElement("label", {
2438
+ className: `${className} ${isHidden ? 'visuallyHidden' : ''}`,
2439
+ htmlFor: id
2440
+ }, label, isRequired && /*#__PURE__*/React__default["default"].createElement("span", {
2441
+ className: "isRequired"
2442
+ }, "*"), isRequired && /*#__PURE__*/React__default["default"].createElement("span", {
2443
+ className: "visuallyHidden"
2444
+ }, " (required)"));
2445
+ };
2446
+
2447
+ Label$1.propTypes = {
2448
+ className: PropTypes__default["default"].string,
2449
+ label: PropTypes__default["default"].string,
2450
+ id: PropTypes__default["default"].string,
2451
+ isRequired: PropTypes__default["default"].bool,
2452
+ isHidden: PropTypes__default["default"].bool
2453
+ };
2454
+
2455
+ const CreateMessage$1 = (type, minLength, maxLength, currentLength, defaultLanguage) => {
2456
+ if (!type) return null;
2457
+
2458
+ switch (type) {
2459
+ case 'min':
2460
+ {
2461
+ if (!minLength) return;
2462
+ const minLengthVal = minLength && minLength.value;
2463
+ const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
2464
+ const minText = `Minimum of ${minLengthVal.toString()} characters`;
2465
+
2466
+ if (errorMessage) {
2467
+ return errorMessage;
2468
+ } else {
2469
+ return minText;
2470
+ }
2471
+ }
2472
+
2473
+ case 'max':
2474
+ {
2475
+ if (!maxLength) return;
2476
+ const maxLengthVal = maxLength && maxLength.value;
2477
+ const errorMessage = maxLength && maxLength.message && maxLength.message[defaultLanguage];
2478
+ const maxText = `Maximum of ${maxLengthVal.toString()} characters`;
2479
+
2480
+ if (errorMessage) {
2481
+ return errorMessage;
2482
+ } else {
2483
+ return maxText;
2484
+ }
2485
+ }
2486
+
2487
+ case 'between':
2488
+ {
2489
+ if (!maxLength || !minLength) return;
2490
+ const minLengthVal = minLength && minLength.value;
2491
+ const maxLengthVal = maxLength && maxLength.value;
2492
+ const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
2493
+ const rangeText = `Between ${minLengthVal.toString()}-${maxLengthVal.toString()} characters)`;
2494
+
2495
+ if (errorMessage) {
2496
+ return errorMessage;
2497
+ } else if (currentLength < minLengthVal) {
2498
+ return `${(minLengthVal - currentLength).toString()} character${minLengthVal > 1 ? 's' : ''} required ${rangeText}`;
2499
+ } else if (currentLength > maxLengthVal) {
2500
+ return `${(currentLength - maxLengthVal).toString()} character${currentLength - maxLengthVal > 1 ? 's' : ''} over ${rangeText}`;
2501
+ } else if (currentLength) {
2502
+ return `${(maxLengthVal - currentLength).toString()} characters remaining ${rangeText}`;
2503
+ } else {
2504
+ return rangeText;
2505
+ }
2506
+ }
2507
+
2508
+ default:
2509
+ return null;
2510
+ }
2511
+ };
2512
+
2513
+ const CharacterLimitStyled$1 = styled__default["default"].div.withConfig({
2514
+ displayName: "CharacterLimit__CharacterLimitStyled",
2515
+ componentId: "sc-16zngav-0"
2516
+ })(["", ";"], ({
2517
+ theme,
2518
+ useDefaultTheme
2519
+ }) => {
2520
+ return styled.css(["display:block;", ""], useDefaultTheme && styled.css(["font-size:14px;color:", ";font-weight:400;line-height:24px;text-align:right;max-width:320px;width:100%;"], theme.colors.neutrals.empress_gray));
2521
+ });
2522
+
2523
+ const CharacterLimit$1 = ({
2524
+ className,
2525
+ value,
2526
+ validations,
2527
+ defaultLanguage,
2528
+ useDefaultTheme
2529
+ }) => {
2530
+ if (!validations) return null;
2531
+ let valueAsString = typeof value === 'number' ? value.toString() : value;
2532
+ const currentLength = valueAsString && valueAsString.length ? valueAsString.length : 0;
2533
+ const {
2534
+ minLength,
2535
+ maxLength
2536
+ } = validations;
2537
+ const hasMaxLength = maxLength && !minLength;
2538
+ const hasMinLength = minLength && !maxLength;
2539
+ const hasInBetween = minLength && maxLength;
2540
+ const type = hasMinLength ? 'min' : hasMaxLength ? 'max' : hasInBetween ? 'between' : null;
2541
+ if (!type) return null;
2542
+ return /*#__PURE__*/React__default["default"].createElement(CharacterLimitStyled$1, {
2543
+ className: className,
2544
+ useDefaultTheme: useDefaultTheme
2545
+ }, CreateMessage$1(type, minLength, maxLength, currentLength, defaultLanguage));
2546
+ };
2547
+
2548
+ CharacterLimit$1.propTypes = {
2549
+ validations: PropTypes__default["default"].object,
2550
+ value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object]),
2551
+ className: PropTypes__default["default"].string,
2552
+ defaultLanguage: PropTypes__default["default"].string,
2553
+ useDefaultTheme: PropTypes__default["default"].bool
2554
+ };
2555
+
2556
+ const ErrorMessageStyled$1 = styled__default["default"].div.withConfig({
2557
+ displayName: "ErrorMessage__ErrorMessageStyled",
2558
+ componentId: "sc-1vewdiu-0"
2559
+ })(["", ";"], ({
2560
+ theme,
2561
+ useDefaultTheme
2562
+ }) => {
2563
+ return styled.css(["", ""], useDefaultTheme && styled.css(["display:block;margin-top:8px;color:", ";"], theme.colors.error));
2564
+ });
2565
+
2566
+ const ErrorMessage$1 = ({
2567
+ className,
2568
+ message,
2569
+ useDefaultTheme
2570
+ }) => {
2571
+ return /*#__PURE__*/React__default["default"].createElement(ErrorMessageStyled$1, {
2572
+ className: className,
2573
+ useDefaultTheme: useDefaultTheme
2574
+ }, message);
2575
+ };
2576
+
2577
+ ErrorMessage$1.propTypes = {
2578
+ className: PropTypes__default["default"].string,
2579
+ message: PropTypes__default["default"].string.isRequired,
2580
+ useDefaultTheme: PropTypes__default["default"].bool
2581
+ };
2582
+
2583
+ const TextfieldStyled$1 = styled__default["default"].div.withConfig({
2584
+ displayName: "Textfield__TextfieldStyled",
2585
+ componentId: "sc-1a1c03n-0"
2586
+ })(["", ";"], ({
2587
+ isHidden
2588
+ }) => {
2589
+ return styled.css(["display:", ";"], isHidden ? 'none' : 'block');
2590
+ });
2591
+
2592
+ const Textfield$1 = ({
2593
+ className,
2594
+ formId,
2595
+ id,
2596
+ label,
2597
+ type,
2598
+ setValue,
2599
+ validateField,
2600
+ validations,
2601
+ defaultValue,
2602
+ defaultLanguage,
2603
+ placeholder,
2604
+ isHidden,
2605
+ errors,
2606
+ useDefaultTheme
2607
+ }) => {
2608
+ const [showCharLimit, setShowCharLimit] = React.useState(false);
2609
+ const isRequired = validations && validations.required ? true : false;
2610
+ const placeholderText = placeholder && placeholder.properties && placeholder.properties.placeholderText && placeholder.properties.placeholderText[defaultLanguage];
2611
+ const defaultValueText = defaultValue && defaultValue[defaultLanguage] ? defaultValue[defaultLanguage] : defaultValue;
2612
+
2613
+ const _handleChange = (formId, id, value) => {
2614
+ setValue(formId, id, value);
2615
+ };
2616
+
2617
+ const _handleBlur = (formId, id, value) => {
2618
+ validateField(formId, id, value);
2619
+ setShowCharLimit(false);
2620
+ };
2621
+
2622
+ const _handleFocus = () => {
2623
+ setShowCharLimit(true);
2624
+ };
2625
+
2626
+ return /*#__PURE__*/React__default["default"].createElement(TextfieldStyled$1, {
2627
+ className: "textfield-container",
2628
+ isHidden: isHidden
2629
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
2630
+ id: id,
2631
+ label: label,
2632
+ isRequired: isRequired,
2633
+ className: "label-textfield"
2634
+ }), showCharLimit && /*#__PURE__*/React__default["default"].createElement(CharacterLimit$1, {
2635
+ value: defaultValue,
2636
+ validations: validations,
2637
+ defaultLanguage: defaultLanguage,
2638
+ useDefaultTheme: useDefaultTheme
2639
+ }), /*#__PURE__*/React__default["default"].createElement("input", {
2640
+ className: `${className ? className : ''} input-textfield`,
2641
+ type: type,
2642
+ defaultValue: defaultValueText,
2643
+ placeholder: placeholderText,
2644
+ id: id,
2645
+ name: id,
2646
+ onChange: e => _handleChange(formId, id, e.target.value),
2647
+ onBlur: e => _handleBlur(formId, id, e.target.value),
2648
+ onFocus: () => _handleFocus()
2649
+ }), errors && errors.length > 0 && errors.some(x => x.fieldId == id) && /*#__PURE__*/React__default["default"].createElement(ErrorMessage$1, {
2650
+ message: errors.find(x => x.fieldId == id).message,
2651
+ useDefaultTheme: useDefaultTheme
2652
+ }));
2653
+ };
2654
+
2655
+ Textfield$1.propTypes = {
2656
+ className: PropTypes__default["default"].string,
2657
+ formId: PropTypes__default["default"].string,
2658
+ id: PropTypes__default["default"].string,
2659
+ label: PropTypes__default["default"].string,
2660
+ type: PropTypes__default["default"].string,
2661
+ setValue: PropTypes__default["default"].func,
2662
+ validateField: PropTypes__default["default"].func,
2663
+ validations: PropTypes__default["default"].object,
2664
+ defaultValue: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object]),
2665
+ defaultLanguage: PropTypes__default["default"].string,
2666
+ placeholder: PropTypes__default["default"].object,
2667
+ isHidden: PropTypes__default["default"].bool,
2668
+ errors: PropTypes__default["default"].array,
2669
+ useDefaultTheme: PropTypes__default["default"].bool
2670
+ };
2671
+
2672
+ const Textarea$1 = ({
2673
+ className,
2674
+ formId,
2675
+ id,
2676
+ label,
2677
+ type,
2678
+ setValue,
2679
+ validations,
2680
+ defaultValue,
2681
+ defaultLanguage,
2682
+ placeholder,
2683
+ validateField,
2684
+ useDefaultTheme,
2685
+ errors
2686
+ }) => {
2687
+ const [showCharLimit, setShowCharLimit] = React.useState(false);
2688
+ const isRequired = validations && validations.required ? true : false;
2689
+ const placeholderText = placeholder && placeholder.properties && placeholder.properties.placeholderText && placeholder.properties.placeholderText[defaultLanguage];
2690
+ const defaultValueText = defaultValue ? defaultValue[defaultLanguage] : null;
2691
+
2692
+ const _handleChange = (formId, id, value) => {
2693
+ setValue(formId, id, value);
2694
+ };
2695
+
2696
+ const _handleBlur = (formId, id, value) => {
2697
+ validateField(formId, id, value);
2698
+ setShowCharLimit(false);
2699
+ };
2700
+
2701
+ const _handleFocus = () => {
2702
+ setShowCharLimit(true);
2703
+ };
2704
+
2705
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2706
+ className: "textarea-container"
2707
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
2708
+ id: id,
2709
+ label: label,
2710
+ isRequired: isRequired,
2711
+ className: "label-textarea"
2712
+ }), showCharLimit && /*#__PURE__*/React__default["default"].createElement(CharacterLimit$1, {
2713
+ value: defaultValue,
2714
+ validations: validations,
2715
+ defaultLanguage: defaultLanguage,
2716
+ useDefaultTheme: useDefaultTheme
2717
+ }), /*#__PURE__*/React__default["default"].createElement("textarea", {
2718
+ className: `${className ? className : ''} input-textarea`,
2719
+ type: type,
2720
+ id: id,
2721
+ defaultValue: defaultValueText,
2722
+ placeholder: placeholderText,
2723
+ onChange: e => _handleChange(formId, id, e.target.value),
2724
+ onBlur: e => _handleBlur(formId, id, e.target.value),
2725
+ onFocus: () => _handleFocus()
2726
+ }), errors && errors.length > 0 && errors.some(x => x.fieldId == id) && /*#__PURE__*/React__default["default"].createElement(ErrorMessage$1, {
2727
+ message: errors.find(x => x.fieldId == id).message,
2728
+ useDefaultTheme: useDefaultTheme
2729
+ }));
2730
+ };
2731
+
2732
+ Textarea$1.propTypes = {
2733
+ className: PropTypes__default["default"].string,
2734
+ formId: PropTypes__default["default"].string,
2735
+ id: PropTypes__default["default"].string,
2736
+ label: PropTypes__default["default"].string,
2737
+ type: PropTypes__default["default"].string,
2738
+ setValue: PropTypes__default["default"].func,
2739
+ validations: PropTypes__default["default"].object,
2740
+ defaultValue: PropTypes__default["default"].object,
2741
+ defaultLanguage: PropTypes__default["default"].string,
2742
+ placeholder: PropTypes__default["default"].object,
2743
+ validateField: PropTypes__default["default"].func,
2744
+ useDefaultTheme: PropTypes__default["default"].bool,
2745
+ errors: PropTypes__default["default"].array
2746
+ };
2747
+
2748
+ const HiddenField$1 = ({
2749
+ className,
2750
+ id,
2751
+ label,
2752
+ type,
2753
+ defaultValue,
2754
+ defaultLanguage,
2755
+ placeholder
2756
+ }) => {
2757
+ return /*#__PURE__*/React__default["default"].createElement(Textfield$1, {
2758
+ type: type,
2759
+ label: label,
2760
+ id: id,
2761
+ defaultValue: defaultValue,
2762
+ defaultLanguage: defaultLanguage,
2763
+ placeholder: placeholder,
2764
+ className: className,
2765
+ isHidden: true
2766
+ });
2767
+ };
2768
+
2769
+ HiddenField$1.propTypes = {
2770
+ className: PropTypes__default["default"].string,
2771
+ id: PropTypes__default["default"].string,
2772
+ label: PropTypes__default["default"].string,
2773
+ type: PropTypes__default["default"].string,
2774
+ defaultValue: PropTypes__default["default"].object,
2775
+ defaultLanguage: PropTypes__default["default"].string,
2776
+ placeholder: PropTypes__default["default"].object
2777
+ };
2778
+
2779
+ const Dropdown$1 = ({
2780
+ className,
2781
+ formId,
2782
+ id,
2783
+ validations,
2784
+ defaultValue,
2785
+ defaultLanguage,
2786
+ label,
2787
+ setValue
2788
+ }) => {
2789
+ if (!validations) return null;
2790
+ const isRequired = validations && validations.required ? true : false;
2791
+ const ddValues = validations && validations.allowedValues && validations.allowedValues.values;
2792
+
2793
+ const _handleChange = (formId, id, value) => {
2794
+ setValue(formId, id, value);
2795
+ };
2796
+
2797
+ if (!ddValues || ddValues.length < 1) return null;
2798
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2799
+ className: "dropdown-container"
2800
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
2801
+ id: id,
2802
+ label: label,
2803
+ isRequired: isRequired,
2804
+ className: "label-dropdown"
2805
+ }), /*#__PURE__*/React__default["default"].createElement("select", {
2806
+ name: id,
2807
+ id: id,
2808
+ className: `${className ? className : ''} select-dropdown`,
2809
+ defaultValue: defaultValue,
2810
+ onBlur: e => _handleChange(formId, id, e.target.value)
2811
+ }, ddValues.map((val, idx) => {
2812
+ return /*#__PURE__*/React__default["default"].createElement("option", {
2813
+ key: `${val[defaultLanguage]}-${idx}`,
2814
+ value: val[defaultLanguage],
2815
+ className: "option-dropdown"
2816
+ }, val[defaultLanguage]);
2817
+ })));
2818
+ };
2819
+
2820
+ Dropdown$1.propTypes = {
2821
+ className: PropTypes__default["default"].string,
2822
+ formId: PropTypes__default["default"].string,
2823
+ setValue: PropTypes__default["default"].func,
2824
+ id: PropTypes__default["default"].string,
2825
+ validations: PropTypes__default["default"].object,
2826
+ defaultValue: PropTypes__default["default"].string,
2827
+ label: PropTypes__default["default"].string,
2828
+ defaultLanguage: PropTypes__default["default"].string
2829
+ };
2830
+
2831
+ const CheckboxStyled$1 = styled__default["default"].div.withConfig({
2832
+ displayName: "Checkbox__CheckboxStyled",
2833
+ componentId: "s8ewuf-0"
2834
+ })(["", ";"], ({
2835
+ useDefaultTheme
2836
+ }) => {
2837
+ return styled.css(["", ""], useDefaultTheme && styled.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;}}"]));
2838
+ });
2839
+
2840
+ const Checkbox$1 = ({
2841
+ className,
2842
+ formId,
2843
+ setCheckboxValue,
2844
+ id,
2845
+ type,
2846
+ label,
2847
+ validations,
2848
+ defaultValue,
2849
+ name,
2850
+ defaultLanguage,
2851
+ useDefaultTheme
2852
+ }) => {
2853
+ // NF change rules of hooks
2854
+ let isDefaultChecked = defaultValue && defaultValue[defaultLanguage];
2855
+ const [isChecked, setIsChecked] = React.useState(isDefaultChecked || '');
2856
+
2857
+ switch (type) {
2858
+ case 'multiple':
2859
+ {
2860
+ if (!validations) return null;
2861
+ const isRequired = validations && validations.required ? true : false;
2862
+ const cbValues = validations && validations.allowedValues && validations.allowedValues.values;
2863
+
2864
+ const _handleChange = (value, isChecked) => {
2865
+ setCheckboxValue(formId, id, value, isChecked);
2866
+ };
2867
+
2868
+ if (!cbValues || cbValues.length < 1) return null;
2869
+ return /*#__PURE__*/React__default["default"].createElement(CheckboxStyled$1, {
2870
+ className: `checkbox-container`,
2871
+ useDefaultTheme: useDefaultTheme
2872
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
2873
+ id: id,
2874
+ label: label,
2875
+ isRequired: isRequired,
2876
+ className: "label-checkbox-container"
2877
+ }), cbValues.map((val, idx) => {
2878
+ return /*#__PURE__*/React__default["default"].createElement("span", {
2879
+ key: idx,
2880
+ className: "checkbox-wrapper"
2881
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
2882
+ type: "checkbox",
2883
+ id: `checkbox-${idx}`,
2884
+ name: `checkbox-${idx}`,
2885
+ value: val[defaultLanguage],
2886
+ className: `${className ? className : ''} input-checkbox`,
2887
+ onChange: e => _handleChange(e.target.value, e.target.checked)
2888
+ }), /*#__PURE__*/React__default["default"].createElement(Label$1, {
2889
+ id: `checkbox-${idx}`,
2890
+ label: val[defaultLanguage],
2891
+ className: "label-checkbox"
2892
+ }));
2893
+ }));
2894
+ }
2895
+
2896
+ case 'single':
2897
+ {
2898
+ const _handleChange = isChecked => {
2899
+ setIsChecked(isChecked);
2900
+ setCheckboxValue(formId, id, isChecked);
2901
+ };
2902
+
2903
+ return /*#__PURE__*/React__default["default"].createElement(CheckboxStyled$1, {
2904
+ className: `checkbox-container`,
2905
+ useDefaultTheme: useDefaultTheme
2906
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
2907
+ className: "checkbox-wrapper"
2908
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
2909
+ type: "checkbox",
2910
+ id: id,
2911
+ name: `checkbox-${id}`,
2912
+ value: name[defaultLanguage],
2913
+ checked: isChecked,
2914
+ className: `${className ? className : ''} input-checkbox`,
2915
+ onChange: e => _handleChange(e.target.checked)
2916
+ }), /*#__PURE__*/React__default["default"].createElement(Label$1, {
2917
+ id: id,
2918
+ label: label,
2919
+ className: "label-checkbox"
2920
+ })));
2921
+ }
2922
+ }
2923
+ };
2924
+
2925
+ Checkbox$1.propTypes = {
2926
+ className: PropTypes__default["default"].string,
2927
+ formId: PropTypes__default["default"].string,
2928
+ id: PropTypes__default["default"].string,
2929
+ type: PropTypes__default["default"].string,
2930
+ label: PropTypes__default["default"].string,
2931
+ setCheckboxValue: PropTypes__default["default"].func,
2932
+ validations: PropTypes__default["default"].object,
2933
+ defaultLanguage: PropTypes__default["default"].string,
2934
+ name: PropTypes__default["default"].object,
2935
+ default: PropTypes__default["default"].object
2936
+ };
2937
+
2938
+ const RadioButtonStyled$1 = styled__default["default"].div.withConfig({
2939
+ displayName: "RadioButton__RadioButtonStyled",
2940
+ componentId: "sc-7y8c21-0"
2941
+ })(["", ";"], ({
2942
+ useDefaultTheme
2943
+ }) => {
2944
+ return styled.css(["", ""], useDefaultTheme && styled.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;}}"]));
2945
+ });
2946
+
2947
+ const RadioButton$1 = ({
2948
+ className,
2949
+ formId,
2950
+ setValue,
2951
+ id,
2952
+ type,
2953
+ label,
2954
+ validations,
2955
+ defaultLanguage,
2956
+ useDefaultTheme
2957
+ }) => {
2958
+ if (!validations) return null;
2959
+ const isRequired = validations && validations.required ? true : false;
2960
+ const cbValues = validations && validations.allowedValues && validations.allowedValues.values;
2961
+
2962
+ const _handleChange = (formId, id, value) => {
2963
+ setValue(formId, id, value);
2964
+ };
2965
+
2966
+ if (!cbValues || cbValues.length < 1) return null;
2967
+ return /*#__PURE__*/React__default["default"].createElement(RadioButtonStyled$1, {
2968
+ className: "radio-container",
2969
+ useDefaultTheme: useDefaultTheme
2970
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
2971
+ id: id,
2972
+ label: label,
2973
+ isRequired: isRequired,
2974
+ className: "label-radio-container"
2975
+ }), cbValues.map((val, idx) => {
2976
+ return /*#__PURE__*/React__default["default"].createElement("span", {
2977
+ key: idx,
2978
+ className: "radio-wrapper"
2979
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
2980
+ type: type,
2981
+ id: val[defaultLanguage],
2982
+ name: id,
2983
+ value: val[defaultLanguage],
2984
+ className: `${className ? className : ''} input-radio`,
2985
+ onChange: e => _handleChange(formId, id, e.target.value)
2986
+ }), /*#__PURE__*/React__default["default"].createElement(Label$1, {
2987
+ id: val[defaultLanguage],
2988
+ label: val[defaultLanguage],
2989
+ className: "label-radio"
2990
+ }));
2991
+ }));
2992
+ };
2993
+
2994
+ RadioButton$1.propTypes = {
2995
+ className: PropTypes__default["default"].string,
2996
+ formId: PropTypes__default["default"].string,
2997
+ setValue: PropTypes__default["default"].func,
2998
+ id: PropTypes__default["default"].string,
2999
+ type: PropTypes__default["default"].string,
3000
+ label: PropTypes__default["default"].string,
3001
+ validations: PropTypes__default["default"].object,
3002
+ defaultLanguage: PropTypes__default["default"].string,
3003
+ useDefaultTheme: PropTypes__default["default"].bool
3004
+ };
3005
+
3006
+ //example date string: 2019-01-02T13:05:00 (expects ISO 8601 Datetime format yyyy-mm-ddThh:mm:ss [this is the format returned from Contensis delivery api])
3007
+ //yyyy > year long, eg. 2019
3008
+ //yy > year short, eg. 19
3009
+ //MMMM > month long, eg. January
3010
+ //MMM > month short, eg. Jan
3011
+ //MM > month with leading 0, eg. 01
3012
+ //M > month, eg. 1
3013
+ //dddd > day long, eg. Monday
3014
+ //ddd > day short, eg. Mon
3015
+ //dd > date with leading 0, eg. 02
3016
+ //d > date, eg. 2
3017
+ //HH > 24 hour clock hour parameter with leading 0, eg. ...T03:05:00 = 03
3018
+ //H > 24 hour clock hour parameter, eg. ...T03:05:00 = 3
3019
+ //hh > 12 hour clock hour parameter with leading 0, eg. ...T16:05:00 = 04
3020
+ //h > 12 hour clock hour parameter, eg. ...T16:05:00 = 4
3021
+ //mm > minutes with leading 0, eg. ...T16:05:00 = 05
3022
+ //m > minutes, eg ...T16:05:00 = 5
3023
+ //t > abbreviated AM / PM, e.g. A or P
3024
+ //tt > AM / PM, e.g. AM or PM
3025
+ const formatDate$1 = (date, format = 'dd MMMM yyyy') => {
3026
+ if (!date) return null;
3027
+ const dateObj = new Date(date);
3028
+ const dateString = date.toString().split('T');
3029
+ const dateArr = dateString[0].split('-');
3030
+ const year = dateArr[0];
3031
+ const month = dateArr[1];
3032
+ const day = dateArr[2];
3033
+ const dayNameInt = dateObj.getDay();
3034
+ const timeArr = dateString[1].split(':');
3035
+ const hour = timeArr[0];
3036
+ const minute = timeArr[1]; //convert to abstract strings to avoid character replacement along the chain, eg. Monday would match 'M' month single parameter
3037
+
3038
+ const YEAR = ['&&', '&'];
3039
+ const MONTH = ['££££', '£££', '££', '£'];
3040
+ const DAY = ['%%%%', '%%%', '%%', '%'];
3041
+ const HOUR24 = ['!!', '!'];
3042
+ const HOUR12 = ['^^', '^'];
3043
+ const MINUTE = ['**', '*'];
3044
+ const TF = ['??', '?'];
3045
+ let formattedDate = format.replace('yyyy', YEAR[0]).replace('yy', YEAR[1]).replace('y', '') //'y' && 'yyy' not valid
3046
+ .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$1[parseInt(month, 10)]).replace(MONTH[1], monthsShort$1[parseInt(month, 10)]).replace(MONTH[2], month).replace(MONTH[3], parseInt(month, 10)).replace(DAY[0], daysLong$1[dayNameInt]).replace(DAY[1], daysShort$1[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$1(hour)).replace(HOUR12[1], parseInt(parseHour$1(hour), 10)).replace(MINUTE[0], minute).replace(MINUTE[1], parseInt(minute, 10)).replace(TF[0], parseTF$1(hour)).replace(TF[1], parseTF$1(hour).slice(0, -1));
3047
+ return formattedDate;
3048
+ };
3049
+
3050
+ const monthsShort$1 = ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
3051
+ const monthsLong$1 = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
3052
+ const daysShort$1 = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
3053
+ const daysLong$1 = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
3054
+
3055
+ const parseHour$1 = hour => {
3056
+ return hour > 12 ? hour - 12 : hour;
3057
+ };
3058
+
3059
+ const parseTF$1 = hour => {
3060
+ return hour > 11 ? 'PM' : 'AM';
3061
+ };
3062
+
3063
+ const SingleDate$1 = ({
3064
+ className,
3065
+ type,
3066
+ id,
3067
+ label,
3068
+ validations,
3069
+ setValue,
3070
+ formId
3071
+ }) => {
3072
+ const isRequired = validations && validations.required ? true : false;
3073
+ const onlyPassedDates = validations && validations.pastDateTime;
3074
+ const d = new Date();
3075
+ const todaysDate = d.toISOString();
3076
+
3077
+ const _handleChange = (formId, id, value) => {
3078
+ const d = new Date(value);
3079
+ const isoDate = d.toISOString();
3080
+ setValue(formId, id, isoDate);
3081
+ };
3082
+
3083
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3084
+ className: "date-container"
3085
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
3086
+ id: id,
3087
+ label: label,
3088
+ isRequired: isRequired,
3089
+ className: "label-date"
3090
+ }), /*#__PURE__*/React__default["default"].createElement("input", {
3091
+ type: type,
3092
+ id: id,
3093
+ name: id,
3094
+ className: `${className ? className : ''} input-date`,
3095
+ max: onlyPassedDates ? formatDate$1(todaysDate, 'yyyy-MM-dd') : '',
3096
+ onChange: e => _handleChange(formId, id, e.target.value)
3097
+ }));
3098
+ };
3099
+
3100
+ SingleDate$1.propTypes = {
3101
+ className: PropTypes__default["default"].string,
3102
+ formId: PropTypes__default["default"].string,
3103
+ setValue: PropTypes__default["default"].func,
3104
+ type: PropTypes__default["default"].string,
3105
+ id: PropTypes__default["default"].string,
3106
+ label: PropTypes__default["default"].string,
3107
+ validations: PropTypes__default["default"].object
3108
+ };
3109
+
3110
+ const DateRangeStyled$1 = styled__default["default"].div.withConfig({
3111
+ displayName: "DateRange__DateRangeStyled",
3112
+ componentId: "hnzg32-0"
3113
+ })(["", ";"], ({
3114
+ useDefaultTheme
3115
+ }) => {
3116
+ return styled.css(["", ""], useDefaultTheme && styled.css([".daterange-wrapper{display:flex;flex-direction:column;input{&:first-child{margin:0 0 8px 0;}}}"]));
3117
+ });
3118
+
3119
+ const DateRange$1 = ({
3120
+ className,
3121
+ id,
3122
+ label,
3123
+ validations,
3124
+ setDateRangeValues,
3125
+ formId,
3126
+ useDefaultTheme
3127
+ }) => {
3128
+ const isRequired = validations && validations.required ? true : false;
3129
+ const onlyPassedDates = validations && validations.pastDateTime;
3130
+ const d = new Date();
3131
+ const todaysDate = d.toISOString();
3132
+ const [toDate, setToDate] = React.useState('');
3133
+ const [fromDate, setFromDate] = React.useState('');
3134
+
3135
+ const _handleDateChange = (dateType, formId, id, value) => {
3136
+ _updateDateProps(dateType, value);
3137
+
3138
+ const d = new Date(value);
3139
+ const isoDate = d.toISOString();
3140
+ setDateRangeValues(formId, id, dateType, isoDate);
3141
+ };
3142
+
3143
+ const _updateDateProps = (type, date) => {
3144
+ switch (type) {
3145
+ case 'from':
3146
+ {
3147
+ const d = new Date(date);
3148
+ const newDate = d.toISOString();
3149
+ setFromDate(newDate);
3150
+ break;
3151
+ }
3152
+
3153
+ case 'to':
3154
+ {
3155
+ const d = new Date(date);
3156
+ const newDate = d.toISOString();
3157
+ setToDate(newDate);
3158
+ break;
3159
+ }
3160
+
3161
+ default:
3162
+ return;
3163
+ }
3164
+ };
3165
+
3166
+ return /*#__PURE__*/React__default["default"].createElement(DateRangeStyled$1, {
3167
+ className: `daterange-container`,
3168
+ useDefaultTheme: useDefaultTheme
3169
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
3170
+ id: id,
3171
+ label: label,
3172
+ isRequired: isRequired
3173
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
3174
+ className: "daterange-wrapper"
3175
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
3176
+ id: "date-from",
3177
+ label: "Date from",
3178
+ isHidden: true,
3179
+ className: "label-daterange"
3180
+ }), /*#__PURE__*/React__default["default"].createElement("input", {
3181
+ type: "date",
3182
+ id: "date-from",
3183
+ name: id,
3184
+ max: onlyPassedDates && !toDate ? formatDate$1(todaysDate, 'yyyy-MM-dd') : onlyPassedDates && toDate ? formatDate$1(toDate, 'yyyy-MM-dd') : toDate ? formatDate$1(toDate, 'yyyy-MM-dd') : '',
3185
+ className: `${className ? className : ''} input-daterange`,
3186
+ onChange: e => _handleDateChange('from', formId, id, e.target.value)
3187
+ }), /*#__PURE__*/React__default["default"].createElement(Label$1, {
3188
+ id: "date-to",
3189
+ label: "Date to",
3190
+ isHidden: true,
3191
+ className: "label-daterange"
3192
+ }), /*#__PURE__*/React__default["default"].createElement("input", {
3193
+ type: "date",
3194
+ id: "date-to",
3195
+ name: id,
3196
+ max: onlyPassedDates ? formatDate$1(todaysDate, 'yyyy-MM-dd') : '',
3197
+ min: formatDate$1(fromDate, 'yyyy-MM-dd'),
3198
+ className: `${className ? className : ''} input-daterange`,
3199
+ onChange: e => _handleDateChange('to', formId, id, e.target.value)
3200
+ })));
3201
+ };
3202
+
3203
+ DateRange$1.propTypes = {
3204
+ className: PropTypes__default["default"].string,
3205
+ formId: PropTypes__default["default"].string,
3206
+ setDateRangeValues: PropTypes__default["default"].func,
3207
+ type: PropTypes__default["default"].string,
3208
+ id: PropTypes__default["default"].string,
3209
+ label: PropTypes__default["default"].string,
3210
+ validations: PropTypes__default["default"].object,
3211
+ useDefaultTheme: PropTypes__default["default"].bool
3212
+ };
3213
+
3214
+ const EntryPickerStyled$1 = styled__default["default"].div.withConfig({
3215
+ displayName: "EntryPicker__EntryPickerStyled",
3216
+ componentId: "svnu18-0"
3217
+ })(["", ";"], ({
3218
+ useDefaultTheme
3219
+ }) => {
3220
+ return styled.css(["", ""], useDefaultTheme && styled.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;}}"]));
3221
+ });
3222
+
3223
+ const EntryPicker$1 = ({
3224
+ className,
3225
+ results,
3226
+ id,
3227
+ label,
3228
+ validations,
3229
+ type,
3230
+ useDefaultTheme,
3231
+ setValue,
3232
+ formId
3233
+ }) => {
3234
+ if (!results || results.length > 3) return null;
3235
+ const isRequired = validations && validations.required ? true : false;
3236
+ let valArr = [];
3237
+
3238
+ const _handleChange = (formId, id, value, isChecked) => {
3239
+ if (type === 'checkbox') {
3240
+ if (isChecked) {
3241
+ valArr.push(value);
3242
+ } else if (!isChecked) {
3243
+ valArr = valArr.filter(valItem => valItem !== value);
3244
+ }
3245
+
3246
+ setValue(formId, id, valArr);
3247
+ } else {
3248
+ setValue(formId, id, value);
3249
+ }
3250
+ };
3251
+
3252
+ return /*#__PURE__*/React__default["default"].createElement(EntryPickerStyled$1, {
3253
+ className: `${type}-container`,
3254
+ useDefaultTheme: useDefaultTheme
3255
+ }, /*#__PURE__*/React__default["default"].createElement(Label$1, {
3256
+ id: id,
3257
+ label: label,
3258
+ isRequired: isRequired,
3259
+ className: `label-${type}-container`
3260
+ }), results.map((res, idx) => {
3261
+ return /*#__PURE__*/React__default["default"].createElement("span", {
3262
+ key: idx,
3263
+ className: `${type}-wrapper`
3264
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
3265
+ type: type,
3266
+ id: res.entryTitle,
3267
+ value: res.entryTitle,
3268
+ name: id,
3269
+ className: `${className ? className : ''} input-${type}`,
3270
+ onChange: e => _handleChange(formId, id, e.target.value, e.target.checked)
3271
+ }), /*#__PURE__*/React__default["default"].createElement(Label$1, {
3272
+ id: res.entryTitle,
3273
+ label: res.entryTitle,
3274
+ className: `label-${type}`
3275
+ }));
3276
+ }));
3277
+ };
3278
+
3279
+ EntryPicker$1.propTypes = {
3280
+ className: PropTypes__default["default"].string,
3281
+ results: PropTypes__default["default"].array,
3282
+ id: PropTypes__default["default"].string,
3283
+ label: PropTypes__default["default"].string,
3284
+ validations: PropTypes__default["default"].object,
3285
+ type: PropTypes__default["default"].string,
3286
+ useDefaultTheme: PropTypes__default["default"].bool,
3287
+ setValue: PropTypes__default["default"].func,
3288
+ formId: PropTypes__default["default"].string
3289
+ };
3290
+
3291
+ const FormComposer$1 = ({
3292
+ fields,
3293
+ formData,
3294
+ formId,
3295
+ setValue,
3296
+ setDateRangeValues,
3297
+ validateField,
3298
+ defaultLanguage,
3299
+ errors,
3300
+ useDefaultTheme,
3301
+ entries,
3302
+ setCheckboxValue
3303
+ }) => {
3304
+ if (!fields || fields.length < 1) return null; //const arrayOfFields = Object.entries(fields).map(f => f[1]);
3305
+
3306
+ return fields.map((field, idx) => {
3307
+ if (!field) return null;
3308
+
3309
+ switch (field.type) {
3310
+ case 'number':
3311
+ case 'textfield':
3312
+ {
3313
+ return /*#__PURE__*/React__default["default"].createElement(Textfield$1, {
3314
+ key: `${field.id}-${idx}`,
3315
+ type: field.type,
3316
+ id: field.id,
3317
+ label: field.name && field.name[defaultLanguage],
3318
+ formId: formId,
3319
+ setValue: setValue,
3320
+ validations: field.validations,
3321
+ validateField: validateField,
3322
+ defaultLanguage: defaultLanguage,
3323
+ defaultValue: formData && formData[field.id] || field.default,
3324
+ placeholder: field.editor,
3325
+ errors: errors,
3326
+ useDefaultTheme: useDefaultTheme
3327
+ });
3328
+ }
3329
+
3330
+ case 'textarea':
3331
+ {
3332
+ return /*#__PURE__*/React__default["default"].createElement(Textarea$1, {
3333
+ key: `${field.id}-${idx}`,
3334
+ type: field.type,
3335
+ id: field.id,
3336
+ label: field.name && field.name[defaultLanguage],
3337
+ formId: formId,
3338
+ setValue: setValue,
3339
+ validations: field.validations,
3340
+ defaultLanguage: defaultLanguage,
3341
+ defaultValue: field.default,
3342
+ placeholder: field.editor,
3343
+ validateField: validateField,
3344
+ useDefaultTheme: useDefaultTheme,
3345
+ errors: errors
3346
+ });
3347
+ }
3348
+
3349
+ case 'dropdown':
3350
+ {
3351
+ return /*#__PURE__*/React__default["default"].createElement(Dropdown$1, {
3352
+ key: `${field.id}-${idx}`,
3353
+ id: field.id,
3354
+ label: field.name && field.name[defaultLanguage],
3355
+ validations: field.validations,
3356
+ defaultLanguage: defaultLanguage,
3357
+ defaultValue: field.default,
3358
+ formId: formId,
3359
+ setValue: setValue,
3360
+ useDefaultTheme: useDefaultTheme
3361
+ });
3362
+ }
3363
+
3364
+ case 'checkbox':
3365
+ {
3366
+ return /*#__PURE__*/React__default["default"].createElement(Checkbox$1, {
3367
+ key: `${field.id}-${idx}`,
3368
+ id: field.id,
3369
+ name: field.name,
3370
+ label: field.name && field.name[defaultLanguage],
3371
+ validations: field.validations,
3372
+ defaultLanguage: defaultLanguage,
3373
+ setValue: setValue,
3374
+ formId: formId,
3375
+ defaultValue: formData && formData[field.id] || field.default,
3376
+ type: field.dataType === 'boolean' ? 'single' : 'multiple',
3377
+ useDefaultTheme: useDefaultTheme,
3378
+ setCheckboxValue: setCheckboxValue
3379
+ });
3380
+ }
3381
+
3382
+ case 'radio':
3383
+ {
3384
+ return /*#__PURE__*/React__default["default"].createElement(RadioButton$1, {
3385
+ key: `${field.id}-${idx}`,
3386
+ id: field.id,
3387
+ type: field.type,
3388
+ formId: formId,
3389
+ setValue: setValue,
3390
+ label: field.name && field.name[defaultLanguage],
3391
+ validations: field.validations,
3392
+ defaultLanguage: defaultLanguage,
3393
+ useDefaultTheme: useDefaultTheme
3394
+ });
3395
+ }
3396
+
3397
+ case 'entryPicker':
3398
+ {
3399
+ const type = field.dataType === 'objectArray' ? 'checkbox' : 'radio';
3400
+ const results = entries && entries[field.id] && entries[field.id].items;
3401
+ return /*#__PURE__*/React__default["default"].createElement(EntryPicker$1, {
3402
+ key: `${field.id}-${idx}`,
3403
+ type: type,
3404
+ results: results,
3405
+ id: field.id,
3406
+ label: field.name && field.name[defaultLanguage],
3407
+ useDefaultTheme: useDefaultTheme,
3408
+ setValue: setValue,
3409
+ validateField: validateField,
3410
+ formId: formId
3411
+ });
3412
+ }
3413
+
3414
+ case 'date':
3415
+ {
3416
+ return /*#__PURE__*/React__default["default"].createElement(SingleDate$1, {
3417
+ key: `${field.id}-${idx}`,
3418
+ type: field.type,
3419
+ id: field.id,
3420
+ label: field.name && field.name[defaultLanguage],
3421
+ validations: field.validations,
3422
+ formId: formId,
3423
+ setValue: setValue,
3424
+ useDefaultTheme: useDefaultTheme
3425
+ });
3426
+ }
3427
+
3428
+ case 'dateRange':
3429
+ {
3430
+ return /*#__PURE__*/React__default["default"].createElement(DateRange$1, {
3431
+ key: `${field.id}-${idx}`,
3432
+ id: field.id,
3433
+ label: field.name && field.name[defaultLanguage],
3434
+ validations: field.validations,
3435
+ formId: formId,
3436
+ setDateRangeValues: setDateRangeValues,
3437
+ useDefaultTheme: useDefaultTheme
3438
+ });
3439
+ }
3440
+
3441
+ case 'hidden':
3442
+ {
3443
+ return /*#__PURE__*/React__default["default"].createElement(HiddenField$1, {
3444
+ key: `${field.id}-${idx}`,
3445
+ type: field.type,
3446
+ id: field.id,
3447
+ label: field.name && field.name[defaultLanguage],
3448
+ defaultLanguage: defaultLanguage,
3449
+ defaultValue: field.default,
3450
+ placeholder: field.editor
3451
+ });
3452
+ }
3453
+ }
3454
+ });
3455
+ };
3456
+
3457
+ FormComposer$1.propTypes = {
3458
+ fields: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3459
+ formData: PropTypes__default["default"].object,
3460
+ entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3461
+ formId: PropTypes__default["default"].string,
3462
+ setValue: PropTypes__default["default"].func,
3463
+ validateField: PropTypes__default["default"].func,
3464
+ setDateRangeValues: PropTypes__default["default"].func,
3465
+ defaultLanguage: PropTypes__default["default"].string,
3466
+ errors: PropTypes__default["default"].array,
3467
+ useDefaultTheme: PropTypes__default["default"].bool,
3468
+ setCheckboxValue: PropTypes__default["default"].func
3469
+ };
3470
+
3471
+ const ButtonStyled$1 = styled__default["default"].button.withConfig({
3472
+ displayName: "Button__ButtonStyled",
3473
+ componentId: "hr2oup-0"
3474
+ })(["", ";"], ({
3475
+ theme,
3476
+ useDefaultTheme
3477
+ }) => {
3478
+ return styled.css(["", ""], useDefaultTheme && styled.css(["display:inline-block;cursor:pointer;margin:16px 0 0 0;padding:8px 16px;border-radius:3px;border:1px solid ", ";font-family:inherit;transition:opacity 200ms ease;&:hover{opacity:0.7;}"], theme.colors.border));
3479
+ });
3480
+
3481
+ const Button$1 = ({
3482
+ className,
3483
+ type,
3484
+ text,
3485
+ action,
3486
+ useDefaultTheme
3487
+ }) => {
3488
+ return /*#__PURE__*/React__default["default"].createElement(ButtonStyled$1, {
3489
+ className: `${className ? className : ''} btnSubmit`,
3490
+ type: type,
3491
+ onClick: () => action(),
3492
+ useDefaultTheme: useDefaultTheme
3493
+ }, text);
3494
+ };
3495
+ Button$1.propTypes = {
3496
+ className: PropTypes__default["default"].string,
3497
+ type: PropTypes__default["default"].string,
3498
+ text: PropTypes__default["default"].string,
3499
+ action: PropTypes__default["default"].func,
3500
+ useDefaultTheme: PropTypes__default["default"].bool
3501
+ };
3502
+
3503
+ const ThemeContext$1 = React.createContext();
3504
+
3505
+ const ThemeProvider$1 = ({
3506
+ children,
3507
+ theme
3508
+ }) => {
3509
+ return /*#__PURE__*/React__default["default"].createElement(ThemeContext$1.Provider, null, /*#__PURE__*/React__default["default"].createElement(styled.ThemeProvider, {
3510
+ theme: theme
3511
+ }, children));
3512
+ };
3513
+
3514
+ ThemeProvider$1.propTypes = {
3515
+ children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].arrayOf(PropTypes__default["default"].node), PropTypes__default["default"].node]),
3516
+ theme: PropTypes__default["default"].object
3517
+ };
3518
+
3519
+ const mediaQueriesNoUnit$1 = {
3520
+ s: 470,
3521
+ ms: 640,
3522
+ m: 768,
3523
+ ml: 880,
3524
+ l: 1024,
3525
+ xl: 1200,
3526
+ xxl: 1366,
3527
+ wide: 1600
3528
+ };
3529
+ const mediaQueries$1 = {
3530
+ small: mediaQueriesNoUnit$1.s + 'px',
3531
+ msmall: mediaQueriesNoUnit$1.ms + 'px',
3532
+ medium: mediaQueriesNoUnit$1.m + 'px',
3533
+ mlarge: mediaQueriesNoUnit$1.ml + 'px',
3534
+ large: mediaQueriesNoUnit$1.l + 'px',
3535
+ xlarge: mediaQueriesNoUnit$1.xl + 'px',
3536
+ xxlarge: mediaQueriesNoUnit$1.xxl + 'px',
3537
+ wide: mediaQueriesNoUnit$1.wide + 'px'
3538
+ };
3539
+ const layout$1 = {
3540
+ mediaQueries: mediaQueries$1
3541
+ };
3542
+
3543
+ const fontFamily$1 = {
3544
+ Poppins: `'Poppins', Arial, sans-serif`
3545
+ }; //use html tag name as object key
3546
+ //use default object key for base styles
3547
+ //use media query key that corresponds with keys set on mediaQueries object from ./layout to map to relevant screen sizes
3548
+ //uses a mobile first approach to rules
3549
+
3550
+ const typography$1 = {
3551
+ default: {
3552
+ color: colors$1.label,
3553
+ font_family: fontFamily$1.Poppins,
3554
+ font_style: 'normal',
3555
+ font_weight: 400,
3556
+ font_size: '18px',
3557
+ line_height: 1.75
3558
+ }
3559
+ };
3560
+ const defaultStyles$1 = typography$1.default;
3561
+ const typographyStyles$1 = {
3562
+ defaultStyles: defaultStyles$1
3563
+ }; // function generateTypeStyles(obj) {
3564
+ // return Object.keys(obj)
3565
+ // .map(mq => {
3566
+ // const props = generateProps(obj[mq]);
3567
+ // if (mq === 'default') {
3568
+ // return `${props.join(' ')}`;
3569
+ // } else {
3570
+ // return `@media only screen and (min-width:${
3571
+ // mediaQueries[mq]
3572
+ // }){${props.join('')}}`;
3573
+ // }
3574
+ // })
3575
+ // .join('');
3576
+ // }
3577
+ // function generateProps(objMQ) {
3578
+ // let props = [];
3579
+ // Object.keys(objMQ).map(prop => {
3580
+ // props.push(`${prop.split('_').join('-')}: ${objMQ[prop]};`);
3581
+ // });
3582
+ // return props;
3583
+ // }
3584
+
3585
+ const defaultTheme$1 = {
3586
+ layout: layout$1,
3587
+ typographyStyles: typographyStyles$1,
3588
+ typography: typography$1,
3589
+ colors: colors$1
3590
+ };
3591
+
3592
+ const divStyles$1 = {
3593
+ display: 'flex',
3594
+ height: '100vh',
3595
+ alignItems: 'center',
3596
+ justifyContent: 'center',
3597
+ flexDirection: 'Column'
3598
+ };
3599
+ const svgStyles$1 = {
3600
+ width: '80px',
3601
+ height: '80px'
3602
+ };
3603
+ const headingStyles$1 = {
3604
+ margin: '0',
3605
+ fontSize: '16px'
3606
+ };
3607
+ const Loading$1 = () => {
3608
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3609
+ style: divStyles$1
3610
+ }, /*#__PURE__*/React__default["default"].createElement("h3", {
3611
+ style: headingStyles$1
3612
+ }, "Loading..."), /*#__PURE__*/React__default["default"].createElement("svg", {
3613
+ xmlns: "http://www.w3.org/2000/svg",
3614
+ className: "lds-spinner",
3615
+ preserveAspectRatio: "xMidYMid",
3616
+ viewBox: "0 0 100 100",
3617
+ style: svgStyles$1
3618
+ }, /*#__PURE__*/React__default["default"].createElement("rect", {
3619
+ width: "6",
3620
+ height: "12",
3621
+ x: "47",
3622
+ y: "24",
3623
+ fill: "#DE1C8F",
3624
+ rx: "9",
3625
+ ry: "5"
3626
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3627
+ attributeName: "opacity",
3628
+ begin: "-0.9166666666666666s",
3629
+ dur: "1s",
3630
+ keyTimes: "0;1",
3631
+ repeatCount: "indefinite",
3632
+ values: "1;0"
3633
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3634
+ width: "6",
3635
+ height: "12",
3636
+ x: "47",
3637
+ y: "24",
3638
+ fill: "#DE1C8F",
3639
+ rx: "9",
3640
+ ry: "5",
3641
+ transform: "rotate(30 50 50)"
3642
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3643
+ attributeName: "opacity",
3644
+ begin: "-0.8333333333333334s",
3645
+ dur: "1s",
3646
+ keyTimes: "0;1",
3647
+ repeatCount: "indefinite",
3648
+ values: "1;0"
3649
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3650
+ width: "6",
3651
+ height: "12",
3652
+ x: "47",
3653
+ y: "24",
3654
+ fill: "#DE1C8F",
3655
+ rx: "9",
3656
+ ry: "5",
3657
+ transform: "rotate(60 50 50)"
3658
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3659
+ attributeName: "opacity",
3660
+ begin: "-0.75s",
3661
+ dur: "1s",
3662
+ keyTimes: "0;1",
3663
+ repeatCount: "indefinite",
3664
+ values: "1;0"
3665
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3666
+ width: "6",
3667
+ height: "12",
3668
+ x: "47",
3669
+ y: "24",
3670
+ fill: "#DE1C8F",
3671
+ rx: "9",
3672
+ ry: "5",
3673
+ transform: "rotate(90 50 50)"
3674
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3675
+ attributeName: "opacity",
3676
+ begin: "-0.6666666666666666s",
3677
+ dur: "1s",
3678
+ keyTimes: "0;1",
3679
+ repeatCount: "indefinite",
3680
+ values: "1;0"
3681
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3682
+ width: "6",
3683
+ height: "12",
3684
+ x: "47",
3685
+ y: "24",
3686
+ fill: "#DE1C8F",
3687
+ rx: "9",
3688
+ ry: "5",
3689
+ transform: "rotate(120 50 50)"
3690
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3691
+ attributeName: "opacity",
3692
+ begin: "-0.5833333333333334s",
3693
+ dur: "1s",
3694
+ keyTimes: "0;1",
3695
+ repeatCount: "indefinite",
3696
+ values: "1;0"
3697
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3698
+ width: "6",
3699
+ height: "12",
3700
+ x: "47",
3701
+ y: "24",
3702
+ fill: "#DE1C8F",
3703
+ rx: "9",
3704
+ ry: "5",
3705
+ transform: "rotate(150 50 50)"
3706
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3707
+ attributeName: "opacity",
3708
+ begin: "-0.5s",
3709
+ dur: "1s",
3710
+ keyTimes: "0;1",
3711
+ repeatCount: "indefinite",
3712
+ values: "1;0"
3713
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3714
+ width: "6",
3715
+ height: "12",
3716
+ x: "47",
3717
+ y: "24",
3718
+ fill: "#DE1C8F",
3719
+ rx: "9",
3720
+ ry: "5",
3721
+ transform: "rotate(180 50 50)"
3722
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3723
+ attributeName: "opacity",
3724
+ begin: "-0.4166666666666667s",
3725
+ dur: "1s",
3726
+ keyTimes: "0;1",
3727
+ repeatCount: "indefinite",
3728
+ values: "1;0"
3729
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3730
+ width: "6",
3731
+ height: "12",
3732
+ x: "47",
3733
+ y: "24",
3734
+ fill: "#DE1C8F",
3735
+ rx: "9",
3736
+ ry: "5",
3737
+ transform: "rotate(210 50 50)"
3738
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3739
+ attributeName: "opacity",
3740
+ begin: "-0.3333333333333333s",
3741
+ dur: "1s",
3742
+ keyTimes: "0;1",
3743
+ repeatCount: "indefinite",
3744
+ values: "1;0"
3745
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3746
+ width: "6",
3747
+ height: "12",
3748
+ x: "47",
3749
+ y: "24",
3750
+ fill: "#DE1C8F",
3751
+ rx: "9",
3752
+ ry: "5",
3753
+ transform: "rotate(240 50 50)"
3754
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3755
+ attributeName: "opacity",
3756
+ begin: "-0.25s",
3757
+ dur: "1s",
3758
+ keyTimes: "0;1",
3759
+ repeatCount: "indefinite",
3760
+ values: "1;0"
3761
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3762
+ width: "6",
3763
+ height: "12",
3764
+ x: "47",
3765
+ y: "24",
3766
+ fill: "#DE1C8F",
3767
+ rx: "9",
3768
+ ry: "5",
3769
+ transform: "rotate(270 50 50)"
3770
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3771
+ attributeName: "opacity",
3772
+ begin: "-0.16666666666666666s",
3773
+ dur: "1s",
3774
+ keyTimes: "0;1",
3775
+ repeatCount: "indefinite",
3776
+ values: "1;0"
3777
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3778
+ width: "6",
3779
+ height: "12",
3780
+ x: "47",
3781
+ y: "24",
3782
+ fill: "#DE1C8F",
3783
+ rx: "9",
3784
+ ry: "5",
3785
+ transform: "rotate(300 50 50)"
3786
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3787
+ attributeName: "opacity",
3788
+ begin: "-0.08333333333333333s",
3789
+ dur: "1s",
3790
+ keyTimes: "0;1",
3791
+ repeatCount: "indefinite",
3792
+ values: "1;0"
3793
+ })), /*#__PURE__*/React__default["default"].createElement("rect", {
3794
+ width: "6",
3795
+ height: "12",
3796
+ x: "47",
3797
+ y: "24",
3798
+ fill: "#DE1C8F",
3799
+ rx: "9",
3800
+ ry: "5",
3801
+ transform: "rotate(330 50 50)"
3802
+ }, /*#__PURE__*/React__default["default"].createElement("animate", {
3803
+ attributeName: "opacity",
3804
+ begin: "0s",
3805
+ dur: "1s",
3806
+ keyTimes: "0;1",
3807
+ repeatCount: "indefinite",
3808
+ values: "1;0"
3809
+ }))));
3810
+ };
3811
+ Loading$1.propTypes = {};
3812
+
3813
+ const Form$1$1 = ({
3814
+ className,
3815
+ formId,
3816
+ fields,
3817
+ formData,
3818
+ setFormId,
3819
+ setValue,
3820
+ validateField,
3821
+ defaultLanguage,
3822
+ errors,
3823
+ pagingInfo,
3824
+ togglePageForward,
3825
+ togglePageBack,
3826
+ submitForm,
3827
+ status,
3828
+ setDateRangeValues,
3829
+ useDefaultTheme,
3830
+ entries,
3831
+ customSubmit,
3832
+ setCheckboxValue
3833
+ }) => {
3834
+ React.useEffect(() => {
3835
+ setFormId(formId);
3836
+ }, [formId, setFormId]); // NF change rule of hooks
39
3837
 
40
- const MakeFieldType = field => {
41
- if (!field) return null;
3838
+ if (!formId) return null;
3839
+ let formRender;
42
3840
 
43
- if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
44
- return 'textarea';
45
- } else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
46
- return 'dropdown';
47
- } else if (field.editor && field.editor.properties && field.editor.properties.readOnly || field.groupId && field.groupId === 'private') {
48
- return 'hidden';
49
- } else if (field.dataType === 'stringArray' || field.dataType === 'boolean') {
50
- return 'checkbox';
51
- } else if (field.dataType === 'string' && field.validations && field.validations.allowedValues) {
52
- return 'radio';
53
- } else if (field.dataType === 'integer') {
54
- return 'number';
55
- } else if (field.dataType === 'dateTime') {
56
- return 'date';
57
- } else if (field.dataFormat === 'daterange') {
58
- return 'dateRange';
59
- } else if (field.dataFormat === 'entry') {
60
- return 'entryPicker';
3841
+ if (pagingInfo && pagingInfo.pageCount > 1) {
3842
+ const isLastPage = pagingInfo.pageCount == pagingInfo.pageIndex + 1;
3843
+ formRender = /*#__PURE__*/React__default["default"].createElement(FormStyled$1, {
3844
+ className: className,
3845
+ id: formId,
3846
+ useDefaultTheme: useDefaultTheme
3847
+ }, status && status.isLoading || status && status.isSubmitting && /*#__PURE__*/React__default["default"].createElement(Loading$1, {
3848
+ className: "loading"
3849
+ }), !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, pagingInfo.pageIndex > 0 && /*#__PURE__*/React__default["default"].createElement(Button$1, {
3850
+ type: "button",
3851
+ text: "Go Back",
3852
+ action: () => togglePageBack(formId, pagingInfo.pageIndex - 1),
3853
+ useDefaultTheme: useDefaultTheme
3854
+ }), /*#__PURE__*/React__default["default"].createElement(FormComposer$1, {
3855
+ fields: fields,
3856
+ formData: formData,
3857
+ formId: formId,
3858
+ setValue: setValue,
3859
+ validateField: validateField,
3860
+ defaultLanguage: defaultLanguage,
3861
+ errors: errors,
3862
+ pagingInfo: pagingInfo,
3863
+ useDefaultTheme: useDefaultTheme,
3864
+ entries: entries,
3865
+ setDateRangeValues: setDateRangeValues,
3866
+ setCheckboxValue: setCheckboxValue
3867
+ }), !isLastPage && /*#__PURE__*/React__default["default"].createElement(Button$1, {
3868
+ type: "button",
3869
+ text: "Next",
3870
+ action: () => togglePageForward(formId, pagingInfo.pageIndex + 1),
3871
+ useDefaultTheme: useDefaultTheme
3872
+ }), isLastPage && /*#__PURE__*/React__default["default"].createElement(Button$1, {
3873
+ text: "Submit",
3874
+ type: "button",
3875
+ action: () => {
3876
+ submitForm(formId);
3877
+ if (customSubmit) customSubmit();
3878
+ },
3879
+ useDefaultTheme: useDefaultTheme
3880
+ })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
3881
+ className: "success-message"
3882
+ }, status.successMessage));
61
3883
  } else {
62
- return 'textfield';
3884
+ formRender = /*#__PURE__*/React__default["default"].createElement(FormStyled$1, {
3885
+ className: className,
3886
+ id: formId,
3887
+ useDefaultTheme: useDefaultTheme
3888
+ }, status && status.isLoading || status && status.isSubmitting && /*#__PURE__*/React__default["default"].createElement(Loading$1, {
3889
+ className: "loading"
3890
+ }), !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormComposer$1, {
3891
+ fields: fields,
3892
+ formId: formId,
3893
+ setValue: setValue,
3894
+ setDateRangeValues: setDateRangeValues,
3895
+ validateField: validateField,
3896
+ defaultLanguage: defaultLanguage,
3897
+ errors: errors,
3898
+ useDefaultTheme: useDefaultTheme,
3899
+ entries: entries,
3900
+ setCheckboxValue: setCheckboxValue
3901
+ }), /*#__PURE__*/React__default["default"].createElement(Button$1, {
3902
+ text: "Submit",
3903
+ type: "button",
3904
+ action: () => {
3905
+ submitForm(formId);
3906
+ if (customSubmit) customSubmit();
3907
+ },
3908
+ useDefaultTheme: useDefaultTheme
3909
+ })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
3910
+ className: "success-message"
3911
+ }, status.successMessage));
63
3912
  }
64
- };
65
3913
 
66
- const initialSettings = {
67
- recaptcha: {
68
- siteKey: null
69
- }
70
- };
71
- const initialFormData = {
72
- formId: null,
73
- data: {},
74
- fields: [],
75
- entries: [],
76
- fieldErrors: [],
77
- groups: [],
78
- defaultLanguage: null,
79
- pagingInfo: {
80
- pageIndex: 0,
81
- pageCount: 0,
82
- currentPageId: null
83
- },
84
- status: {
85
- isLoading: false,
86
- isSubmitting: false,
87
- hasSuccess: false,
88
- successMessage: null,
89
- hasError: false
90
- }
3914
+ return /*#__PURE__*/React__default["default"].createElement(ThemeProvider$1, {
3915
+ theme: defaultTheme$1
3916
+ }, formRender);
91
3917
  };
92
- let initialState = immutable.Map({
93
- settings: immutable.fromJS(initialSettings)
94
- });
95
- var reducer = ((state = initialState, action) => {
96
- switch (action.type) {
97
- case SET_FORM_ID:
98
- return state.setIn([action.formId], initialFormData);
99
-
100
- case SET_FORM_DATA:
101
- {
102
- const fields = action.fields; //const fObj = {};
103
-
104
- fields.map(field => {
105
- field.type = MakeFieldType(field);
106
- });
107
- return state.setIn([immutable.fromJS(action.formId), 'fields'], fields).setIn([immutable.fromJS(action.formId), 'formId'], action.formId).setIn([immutable.fromJS(action.formId), 'groups'], action.groups).setIn([immutable.fromJS(action.formId), 'defaultLanguage'], action.defaultLanguage).setIn([immutable.fromJS(action.formId), 'status', 'isSubmitting'], false).setIn([immutable.fromJS(action.formId), 'status', 'hasSuccess'], false).setIn([immutable.fromJS(action.formId), 'status', 'hasError'], false);
108
- }
109
3918
 
110
- case SET_CURRENT_PAGE:
111
- return state.setIn([action.formId, 'pagingInfo', 'currentPageId'], action.pageId).setIn([action.formId, 'pagingInfo', 'pageIndex'], action.pageIndex).setIn([action.formId, 'pagingInfo', 'pageCount'], action.pageCount);
112
-
113
- case SET_FIELD_VALUE:
114
- return state.setIn([action.formId, 'data', action.id], action.value);
115
-
116
- case SET_DEFAULT_FIELD_VALUE:
117
- return state.setIn([action.formId, 'data'], action.value);
118
-
119
- case SET_CHECKBOX_VALUE:
120
- {
121
- const prevState = state.getIn([action.formId, 'data', action.id]);
122
- let values = prevState ? prevState : [];
3919
+ Form$1$1.propTypes = {
3920
+ className: PropTypes__default["default"].string,
3921
+ formId: PropTypes__default["default"].string,
3922
+ fields: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3923
+ formData: PropTypes__default["default"].object,
3924
+ entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3925
+ useDefaultTheme: PropTypes__default["default"].bool,
3926
+ setFormId: PropTypes__default["default"].func,
3927
+ setValue: PropTypes__default["default"].func,
3928
+ setDateRangeValues: PropTypes__default["default"].func,
3929
+ validateField: PropTypes__default["default"].func,
3930
+ defaultLanguage: PropTypes__default["default"].string,
3931
+ errors: PropTypes__default["default"].array,
3932
+ pagingInfo: PropTypes__default["default"].object,
3933
+ togglePageForward: PropTypes__default["default"].func,
3934
+ togglePageBack: PropTypes__default["default"].func,
3935
+ submitForm: PropTypes__default["default"].func,
3936
+ customSubmit: PropTypes__default["default"].func,
3937
+ status: PropTypes__default["default"].object,
3938
+ setCheckboxValue: PropTypes__default["default"].func
3939
+ };
123
3940
 
124
- if (action.isChecked) {
125
- values.push(action.value);
126
- } else {
127
- values = values.filter(value => value !== action.value);
128
- }
3941
+ const FormContainer$1 = ({
3942
+ className,
3943
+ formId,
3944
+ fields,
3945
+ formData,
3946
+ setFormId,
3947
+ setValue,
3948
+ setDateRangeValues,
3949
+ validateField,
3950
+ defaultLanguage,
3951
+ errors,
3952
+ pagingInfo,
3953
+ togglePageForward,
3954
+ togglePageBack,
3955
+ submitForm,
3956
+ status,
3957
+ useDefaultTheme = true,
3958
+ entries,
3959
+ setCheckboxValue,
3960
+ customSubmit
3961
+ }) => {
3962
+ return /*#__PURE__*/React__default["default"].createElement(Form$1$1, {
3963
+ className: className,
3964
+ formId: formId,
3965
+ fields: fields,
3966
+ setFormId: setFormId,
3967
+ setValue: setValue,
3968
+ setDateRangeValues: setDateRangeValues,
3969
+ validateField: validateField,
3970
+ defaultLanguage: defaultLanguage,
3971
+ errors: errors,
3972
+ pagingInfo: pagingInfo,
3973
+ togglePageForward: togglePageForward,
3974
+ togglePageBack: togglePageBack,
3975
+ submitForm: submitForm,
3976
+ status: status,
3977
+ useDefaultTheme: useDefaultTheme,
3978
+ entries: entries,
3979
+ formData: formData,
3980
+ setCheckboxValue: setCheckboxValue,
3981
+ customSubmit: customSubmit
3982
+ });
3983
+ };
129
3984
 
130
- return state.setIn([action.formId, 'data', action.id], values);
131
- }
3985
+ FormContainer$1.propTypes = {
3986
+ className: PropTypes__default["default"].string,
3987
+ formId: PropTypes__default["default"].string,
3988
+ fields: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3989
+ formData: PropTypes__default["default"].object,
3990
+ entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
3991
+ setFormId: PropTypes__default["default"].func,
3992
+ setDateRangeValues: PropTypes__default["default"].func,
3993
+ setValue: PropTypes__default["default"].func,
3994
+ useDefaultTheme: PropTypes__default["default"].bool,
3995
+ validateField: PropTypes__default["default"].func,
3996
+ defaultLanguage: PropTypes__default["default"].string,
3997
+ errors: PropTypes__default["default"].array,
3998
+ pagingInfo: PropTypes__default["default"].object,
3999
+ togglePageForward: PropTypes__default["default"].func,
4000
+ togglePageBack: PropTypes__default["default"].func,
4001
+ submitForm: PropTypes__default["default"].func,
4002
+ status: PropTypes__default["default"].object,
4003
+ setCheckboxValue: PropTypes__default["default"].func,
4004
+ customSubmit: PropTypes__default["default"].func
4005
+ };
132
4006
 
133
- case SET_DATE_RANGE_VALUES:
134
- return state.setIn([action.formId, 'data', action.id, action.dateType], action.value);
4007
+ const mapStateToProps$1 = (state, props) => {
4008
+ const {
4009
+ formId
4010
+ } = props;
4011
+ const selectFormFields = selectPagedFields$1(formId);
4012
+ const selectIsLoading = makeSelectIsLoading$1(formId);
4013
+ const selectDefaultLang = makeSelectDefaultLang$1(formId);
4014
+ return state => ({
4015
+ fields: selectFormFields(state),
4016
+ loading: selectIsLoading(state),
4017
+ defaultLanguage: selectDefaultLang(state),
4018
+ errors: selectFieldErrors$1(state, formId),
4019
+ pagingInfo: selectPagingInfo$1(state, formId),
4020
+ status: selectFormStatus$1(state, formId),
4021
+ entries: selectEntries$1(state, formId),
4022
+ formData: selectPostData$1(state, formId)
4023
+ });
4024
+ };
135
4025
 
136
- case SET_FIELD_ERROR:
137
- return state.setIn([action.formId, 'fieldErrors'], action.value);
4026
+ const mapDispatchToProps$1 = dispatch => {
4027
+ return {
4028
+ setFormId: formId => dispatch(setFormId$1(formId)),
4029
+ setValue: (formId, id, value) => dispatch(setValue$1(formId, id, value)),
4030
+ setCheckboxValue: (formId, id, value, isChecked) => dispatch(setCheckboxValue$1(formId, id, value, isChecked)),
4031
+ setDateRangeValues: (formId, id, dateType, value) => dispatch(setDateRangeValues$1(formId, id, dateType, value)),
4032
+ validateField: (formId, id, value) => dispatch(validateField$2(formId, id, value)),
4033
+ togglePageForward: (formId, pageIndex) => dispatch(togglePageForward$1(formId, pageIndex)),
4034
+ togglePageBack: (formId, pageIndex) => dispatch(togglePageBack$1(formId, pageIndex)),
4035
+ submitForm: formId => dispatch(submitForm$2(formId))
4036
+ };
4037
+ };
138
4038
 
139
- case SET_SUBMITTING_FORM:
140
- return state.setIn([immutable.fromJS(action.formId), 'status', 'isSubmitting'], action.isSubmitting);
4039
+ var Form$2 = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1)(FormContainer$1);
141
4040
 
142
- case SUBMIT_FORM_SUCCESS:
143
- return state.setIn([immutable.fromJS(action.formId), 'status', 'hasError'], false).setIn([immutable.fromJS(action.formId), 'status', 'isSubmitting'], false).setIn([immutable.fromJS(action.formId), 'status', 'hasSuccess'], true);
4041
+ var forms = /*#__PURE__*/Object.freeze({
4042
+ __proto__: null,
4043
+ 'default': Form$2,
4044
+ actions: actions$2,
4045
+ reducer: reducer,
4046
+ sagas: formV2Sagas$1,
4047
+ selectors: selectors$2,
4048
+ types: types$1
4049
+ });
144
4050
 
145
- case SET_SUCCESS_MESSAGE:
146
- return state.setIn([immutable.fromJS(action.formId), 'status', 'successMessage'], action.message);
4051
+ const selectCommitRef = state => getImmutableOrJS$1(state, ['version', 'commitRef']);
4052
+ const selectBuildNumber = state => getImmutableOrJS$1(state, ['version', 'buildNo']);
4053
+ const selectVersionStatus = state => getImmutableOrJS$1(state, ['version', 'contensisVersionStatus']);
147
4054
 
148
- case SUBMIT_FORM_ERROR:
149
- return state.setIn([immutable.fromJS(action.formId), 'status', 'hasError'], true).setIn([immutable.fromJS(action.formId), 'status', 'isSubmitting'], false);
4055
+ var version = /*#__PURE__*/Object.freeze({
4056
+ __proto__: null,
4057
+ selectCommitRef: selectCommitRef,
4058
+ selectBuildNumber: selectBuildNumber,
4059
+ selectVersionStatus: selectVersionStatus
4060
+ });
150
4061
 
151
- case SET_FORM_ENTRIES:
152
- {
153
- const entries = action.entries;
154
- const eObj = {};
155
- entries.map(entry => {
156
- if (!entry) return null;
157
- eObj[entry.id] = entry.entries;
158
- return eObj;
159
- });
160
- return state.setIn([action.formId, 'entries'], eObj);
161
- }
4062
+ var types = {
4063
+ navigation: navigation$1$3,
4064
+ routing: routing$1$1,
4065
+ version: version$1$1,
4066
+ forms: forms
4067
+ };
162
4068
 
163
- case SET_ERROR:
164
- return state.setIn([immutable.fromJS(action.formId), 'status', 'hasError'], true).setIn([immutable.fromJS(action.formId), 'status', 'isSubmitting'], false);
4069
+ const loadNavigationTree = () => action$3(GET_NODE_TREE$1);
165
4070
 
166
- default:
167
- return state;
168
- }
4071
+ var navigation$1 = /*#__PURE__*/Object.freeze({
4072
+ __proto__: null,
4073
+ loadNavigationTree: loadNavigationTree
169
4074
  });
170
4075
 
171
- const selectForms = state => state.getIn(['forms']);
172
- const makeSelectIsLoading = formId => reselect.createSelector(selectForms, forms => forms.getIn([formId, 'status', 'isLoading']));
173
- const makeSelectFormFields = formId => reselect.createSelector(selectForms, forms => forms.getIn([formId, 'fields']));
174
- const makeSelectDefaultLang = formId => reselect.createSelector(selectForms, forms => forms.getIn([formId, 'defaultLanguage']));
175
- const selectFieldErrors = (state, formId) => {
176
- return state.getIn(['forms', formId, 'fieldErrors']);
177
- };
178
- const selectPostData = (state, formId) => {
179
- return state.getIn(['forms', formId, 'data']);
4076
+ var actions = {
4077
+ navigation: navigation$1,
4078
+ routing: routing$5,
4079
+ version: version$4,
4080
+ forms: forms
180
4081
  };
181
- const selectFormGroups = (state, formId) => {
182
- return state.getIn(['forms', formId, 'groups']);
183
- };
184
- const selectPagingInfo = (state, formId) => {
185
- return state.getIn(['forms', formId, 'pagingInfo']);
4082
+
4083
+ var selectors = {
4084
+ navigation: navigation$2,
4085
+ routing: routing$6,
4086
+ version: version,
4087
+ forms: forms
186
4088
  };
187
- const selectFormStatus = (state, formId) => {
188
- return state.getIn(['forms', formId, 'status']);
4089
+ const routing = {
4090
+ types: types.routing,
4091
+ actions: actions.routing,
4092
+ selectors: selectors.routing
189
4093
  };
4094
+
4095
+ const selectForms = state => getImmutableOrJS$1(state, ['forms']);
4096
+ const selectFieldErrors = (state, formId) => getImmutableOrJS$1(state, ['forms', formId, 'fieldErrors']);
4097
+ const selectPostData = (state, formId) => getImmutableOrJS$1(state, ['forms', formId, 'data']);
4098
+ const selectFormGroups = (state, formId) => getImmutableOrJS$1(state, [('groups')]);
4099
+ const selectPagingInfo = (state, formId) => getImmutableOrJS$1(state, ['forms', formId, 'pagingInfo']);
4100
+ const selectFormStatus = (state, formId) => getImmutableOrJS$1(state, ['forms', formId, 'status']);
4101
+ const selectEntries = (state, formId) => getImmutableOrJS$1(state, ['forms', formId, 'entries']);
190
4102
  const selectPagedFields = formId => reselect.createSelector([selectForms], form => {
191
- const pagingInfo = form.getIn([formId, 'pagingInfo']);
192
- const fields = form.getIn([formId, 'fields']);
4103
+ const pagingInfo = getImmutableOrJS$1(form, [formId, 'pagingInfo']);
4104
+ const fields = getImmutableOrJS$1(form, [formId, 'fields']);
193
4105
 
194
4106
  if (fields && fields.length > 0 && pagingInfo && pagingInfo.pageCount > 1) {
195
4107
  return fields.filter(f => f.groupId == pagingInfo.currentPageId);
@@ -197,9 +4109,9 @@ const selectPagedFields = formId => reselect.createSelector([selectForms], form
197
4109
 
198
4110
  return fields;
199
4111
  });
200
- const selectEntries = (state, formId) => {
201
- return state.getIn(['forms', formId, 'entries']);
202
- };
4112
+ const makeSelectIsLoading = formId => reselect.createSelector(selectForms, forms => getImmutableOrJS$1(forms, [formId, 'status', 'isLoading']));
4113
+ const makeSelectFormFields = formId => reselect.createSelector(selectForms, forms => getImmutableOrJS$1(forms, [formId, 'fields']));
4114
+ const makeSelectDefaultLang = formId => reselect.createSelector(selectForms, forms => getImmutableOrJS$1(forms, [formId, 'defaultLanguage']));
203
4115
 
204
4116
  const URI = '/forms';
205
4117
  const getFormSchema = async formId => {
@@ -325,7 +4237,23 @@ const validateInput = (field, value) => {
325
4237
  }
326
4238
  };
327
4239
 
328
- const formV2Sagas = [effects.takeEvery(SUBMIT_FORM_SUCCESS, formSuccess), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION, validateForm), effects.takeEvery(SUBMIT_FORM, submitForm$1), effects.takeEvery(SET_FORM_ID, fetchForm), effects.takeLatest(VALIDATE_FIELD, validateField$1), effects.takeEvery(PAGE_FORWARD, togglePage), effects.takeEvery(PAGE_BACK, togglePage), effects.takeEvery(SET_FORM_DATA, getEntryPickerData), effects.takeLatest(SET_FORM_DATA, setDefaultValueFields)];
4240
+ const {
4241
+ selectCurrentAncestors,
4242
+ selectCurrentPath,
4243
+ selectCurrentProject,
4244
+ selectCurrentSearch,
4245
+ selectIsNotFound,
4246
+ selectQueryStringAsObject,
4247
+ selectRouteEntry,
4248
+ selectRouteEntryContentTypeId,
4249
+ selectRouteEntryDepends,
4250
+ selectRouteEntryEntryId,
4251
+ selectRouteEntryID,
4252
+ selectRouteEntrySlug,
4253
+ selectRouteLoading
4254
+ } = routing.selectors;
4255
+
4256
+ const formV2Sagas = [effects.takeEvery(SUBMIT_FORM_SUCCESS$1, formSuccess), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION$1, validateForm), effects.takeEvery(SUBMIT_FORM$1, submitForm$1), effects.takeEvery(SET_FORM_ID$1, fetchForm), effects.takeLatest(VALIDATE_FIELD$1, validateField$1), effects.takeEvery(PAGE_FORWARD$1, togglePage), effects.takeEvery(PAGE_BACK$1, togglePage), effects.takeEvery(SET_FORM_DATA$1, getEntryPickerData), effects.takeLatest(SET_FORM_DATA$1, setDefaultValueFields)];
329
4257
 
330
4258
  function* validateForm(action) {
331
4259
  const {
@@ -333,7 +4261,7 @@ function* validateForm(action) {
333
4261
  } = action;
334
4262
  yield validateAllfields(formId);
335
4263
  yield effects.put({
336
- type: SUBMIT_FORM,
4264
+ type: SUBMIT_FORM$1,
337
4265
  formId
338
4266
  });
339
4267
  }
@@ -365,7 +4293,7 @@ function* validateGroupfields(formId, groupId) {
365
4293
  if (err) newErrors.push(err);
366
4294
  });
367
4295
  yield effects.put({
368
- type: SET_FIELD_ERROR,
4296
+ type: SET_FIELD_ERROR$1,
369
4297
  formId: formId,
370
4298
  value: newErrors
371
4299
  });
@@ -388,7 +4316,7 @@ function* validateAllfields(formId) {
388
4316
  if (err) newErrors.push(err);
389
4317
  });
390
4318
  yield effects.put({
391
- type: SET_FIELD_ERROR,
4319
+ type: SET_FIELD_ERROR$1,
392
4320
  formId: formId,
393
4321
  value: newErrors
394
4322
  });
@@ -411,7 +4339,7 @@ function* validateSingleField(formId, fieldId, value) {
411
4339
  const err = validateInput(fieldData, value);
412
4340
  if (err) newErrors.push(err);
413
4341
  yield effects.put({
414
- type: SET_FIELD_ERROR,
4342
+ type: SET_FIELD_ERROR$1,
415
4343
  formId: formId,
416
4344
  value: newErrors
417
4345
  });
@@ -423,14 +4351,14 @@ function* togglePage(action) {
423
4351
  pageIndex
424
4352
  } = action;
425
4353
  const state = yield effects.select();
426
- const formGroups = selectFormGroups(state, formId);
4354
+ const formGroups = selectFormGroups(state);
427
4355
 
428
- if (action.type === PAGE_FORWARD) {
4356
+ if (action.type === PAGE_FORWARD$1) {
429
4357
  yield validateGroupfields(formId, formGroups[pageIndex].id);
430
4358
  }
431
4359
 
432
4360
  yield effects.put({
433
- type: SET_CURRENT_PAGE,
4361
+ type: SET_CURRENT_PAGE$1,
434
4362
  formId: formId,
435
4363
  pageId: formGroups[pageIndex].id,
436
4364
  pageCount: formGroups.length,
@@ -441,12 +4369,12 @@ function* togglePage(action) {
441
4369
  function* fetchForm(action) {
442
4370
  const formId = action.formId;
443
4371
  const schema = yield getFormSchema(formId);
444
- const groups = schema.groups && schema.groups.length > 0 && schema.groups.filter(group => group.id !== 'private');
4372
+ const groups = schema && schema.groups && schema.groups.length > 0 && schema.groups.filter(group => group.id !== 'private');
445
4373
 
446
4374
  if (formId && schema) {
447
4375
  if (schema.groups && schema.groups.length > 0) {
448
4376
  yield effects.put({
449
- type: SET_CURRENT_PAGE,
4377
+ type: SET_CURRENT_PAGE$1,
450
4378
  formId: formId,
451
4379
  pageId: groups[0].id,
452
4380
  pageIndex: 0,
@@ -455,7 +4383,7 @@ function* fetchForm(action) {
455
4383
  }
456
4384
 
457
4385
  yield effects.put({
458
- type: SET_FORM_DATA,
4386
+ type: SET_FORM_DATA$1,
459
4387
  formId: formId,
460
4388
  fields: schema.fields,
461
4389
  groups: groups,
@@ -477,7 +4405,7 @@ function* formSuccess(action) {
477
4405
 
478
4406
  if (message && message.default) {
479
4407
  yield effects.put({
480
- type: SET_SUCCESS_MESSAGE,
4408
+ type: SET_SUCCESS_MESSAGE$1,
481
4409
  message: message.default['en-GB'],
482
4410
  formId: action.formId
483
4411
  });
@@ -491,12 +4419,12 @@ function* submitForm$1(action) {
491
4419
 
492
4420
  if (canSubmit) {
493
4421
  yield effects.put({
494
- type: SET_SUBMITTING_FORM,
4422
+ type: SET_SUBMITTING_FORM$1,
495
4423
  isSubmitting: true,
496
4424
  formId: action.formId
497
4425
  });
498
4426
  const forms = yield effects.select(selectForms);
499
- const rawData = forms.get(action.formId);
4427
+ const rawData = forms[action.formId];
500
4428
  const formObj = {
501
4429
  contentType: action.formId,
502
4430
  formPost: rawData.data
@@ -505,12 +4433,12 @@ function* submitForm$1(action) {
505
4433
 
506
4434
  if (formResObj && formResObj.sys && formResObj.sys.id) {
507
4435
  yield effects.put({
508
- type: SUBMIT_FORM_SUCCESS,
4436
+ type: SUBMIT_FORM_SUCCESS$1,
509
4437
  formId: action.formId
510
4438
  });
511
4439
  } else {
512
4440
  yield effects.put({
513
- type: SUBMIT_FORM_ERROR,
4441
+ type: SUBMIT_FORM_ERROR$1,
514
4442
  formId: action.formId
515
4443
  });
516
4444
  }
@@ -523,7 +4451,7 @@ function* setDefaultValueFields(action) {
523
4451
  fields,
524
4452
  defaultLanguage
525
4453
  } = action;
526
- const entryId = yield effects.select(state => state.getIn(['routing', 'entry', 'sys', 'id']));
4454
+ const entryId = yield effects.select(selectRouteEntryEntryId);
527
4455
  let fieldObj = {};
528
4456
  fields.forEach(field => {
529
4457
  if (field.dataType == 'string' && field.default) {
@@ -543,7 +4471,7 @@ function* setDefaultValueFields(action) {
543
4471
  }
544
4472
  });
545
4473
  yield effects.put({
546
- type: SET_DEFAULT_FIELD_VALUE,
4474
+ type: SET_DEFAULT_FIELD_VALUE$1,
547
4475
  formId: formId,
548
4476
  value: fieldObj
549
4477
  });
@@ -568,23 +4496,13 @@ function* getEntryPickerData(action) {
568
4496
  return effects.call(getEntries, entriesObj, entry.id);
569
4497
  }));
570
4498
  yield effects.put({
571
- type: SET_FORM_ENTRIES,
4499
+ type: SET_FORM_ENTRIES$1,
572
4500
  formId: formId,
573
4501
  entries: entriesList
574
4502
  });
575
4503
  }
576
4504
  }
577
4505
 
578
- const toJS = WrappedComponent => wrappedComponentProps => {
579
- const KEY = 0;
580
- const VALUE = 1;
581
- const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
582
- newProps[wrappedComponentProp[KEY]] = immutable.Iterable.isIterable(wrappedComponentProp[VALUE]) ? wrappedComponentProp[VALUE].toJS() : wrappedComponentProp[VALUE];
583
- return newProps;
584
- }, {});
585
- return /*#__PURE__*/React__default["default"].createElement(WrappedComponent, propsJS);
586
- };
587
-
588
4506
  //Brand
589
4507
  const open_teal = '#37BFA7'; //Brand dark
590
4508
 
@@ -2070,7 +5988,7 @@ const Form$1 = ({
2070
5988
  type: "button",
2071
5989
  action: () => {
2072
5990
  submitForm(formId);
2073
- customSubmit();
5991
+ if (customSubmit) customSubmit();
2074
5992
  },
2075
5993
  useDefaultTheme: useDefaultTheme
2076
5994
  })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
@@ -2099,7 +6017,7 @@ const Form$1 = ({
2099
6017
  type: "button",
2100
6018
  action: () => {
2101
6019
  submitForm(formId);
2102
- customSubmit();
6020
+ if (customSubmit) customSubmit();
2103
6021
  },
2104
6022
  useDefaultTheme: useDefaultTheme
2105
6023
  })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
@@ -2141,39 +6059,39 @@ function action(type, payload = {}) {
2141
6059
  };
2142
6060
  }
2143
6061
 
2144
- const submitForm = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
6062
+ const submitForm = formId => action(SUBMIT_FORM_FOR_VALIDATION$1, {
2145
6063
  formId
2146
6064
  });
2147
- const setFormId = formId => action(SET_FORM_ID, {
6065
+ const setFormId = formId => action(SET_FORM_ID$1, {
2148
6066
  formId
2149
6067
  });
2150
- const setValue = (formId, id, value) => action(SET_FIELD_VALUE, {
6068
+ const setValue = (formId, id, value) => action(SET_FIELD_VALUE$1, {
2151
6069
  formId,
2152
6070
  id,
2153
6071
  value
2154
6072
  });
2155
- const setCheckboxValue = (formId, id, value, isChecked) => action(SET_CHECKBOX_VALUE, {
6073
+ const setCheckboxValue = (formId, id, value, isChecked) => action(SET_CHECKBOX_VALUE$1, {
2156
6074
  formId,
2157
6075
  id,
2158
6076
  value,
2159
6077
  isChecked
2160
6078
  });
2161
- const setDateRangeValues = (formId, id, dateType, value) => action(SET_DATE_RANGE_VALUES, {
6079
+ const setDateRangeValues = (formId, id, dateType, value) => action(SET_DATE_RANGE_VALUES$1, {
2162
6080
  formId,
2163
6081
  id,
2164
6082
  dateType,
2165
6083
  value
2166
6084
  });
2167
- const validateField = (formId, id, value) => action(VALIDATE_FIELD, {
6085
+ const validateField = (formId, id, value) => action(VALIDATE_FIELD$1, {
2168
6086
  formId,
2169
6087
  id,
2170
6088
  value
2171
6089
  });
2172
- const togglePageForward = (formId, pageIndex) => action(PAGE_FORWARD, {
6090
+ const togglePageForward = (formId, pageIndex) => action(PAGE_FORWARD$1, {
2173
6091
  formId,
2174
6092
  pageIndex
2175
6093
  });
2176
- const togglePageBack = (formId, pageIndex) => action(PAGE_BACK, {
6094
+ const togglePageBack = (formId, pageIndex) => action(PAGE_BACK$1, {
2177
6095
  formId,
2178
6096
  pageIndex
2179
6097
  });
@@ -2276,8 +6194,9 @@ const mapDispatchToProps = dispatch => {
2276
6194
  };
2277
6195
  };
2278
6196
 
2279
- reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS(FormContainer));
6197
+ var Form = reactRedux.connect(mapStateToProps, mapDispatchToProps)(FormContainer);
2280
6198
 
2281
- exports.reducer = reducer;
6199
+ exports["default"] = Form;
6200
+ exports.reducer = reducer$1;
2282
6201
  exports.sagas = formV2Sagas;
2283
6202
  //# sourceMappingURL=forms.js.map