@panneau/app 1.0.3-alpha.1 → 1.0.3-alpha.10

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/lib/index.js CHANGED
@@ -18,9 +18,10 @@ var FiltersProvider = require('@panneau/filters');
18
18
  var FormsProvider = require('@panneau/forms');
19
19
  var intl = require('@panneau/intl');
20
20
  var ListsProvider = require('@panneau/lists');
21
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
22
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
23
21
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
22
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
23
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
24
+ var isObject = require('lodash/isObject');
24
25
  var queryString = require('query-string');
25
26
  var reactIntl = require('react-intl');
26
27
  var hooks = require('@panneau/core/hooks');
@@ -28,8 +29,9 @@ var utils = require('@panneau/core/utils');
28
29
  var classNames = require('classnames');
29
30
  var Button = require('@panneau/element-button');
30
31
  var Form = require('@panneau/element-form');
31
- var Navbar = require('@panneau/element-navbar');
32
+ var isArray = require('lodash/isArray');
32
33
  var Menu = require('@panneau/element-menu');
34
+ var Navbar = require('@panneau/element-navbar');
33
35
  var Label = require('@panneau/element-label');
34
36
  var isString = require('lodash/isString');
35
37
  var Alert = require('@panneau/element-alert');
@@ -51,14 +53,16 @@ var FieldsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FieldsProvider)
51
53
  var FiltersProvider__default = /*#__PURE__*/_interopDefaultLegacy(FiltersProvider);
52
54
  var FormsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FormsProvider);
53
55
  var ListsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ListsProvider);
54
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
55
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
56
56
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
57
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
58
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
59
+ var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
57
60
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
58
61
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
59
62
  var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
60
- var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
63
+ var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
61
64
  var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
65
+ var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
62
66
  var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
63
67
  var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
64
68
  var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
@@ -67,7 +71,7 @@ var Pagination__default = /*#__PURE__*/_interopDefaultLegacy(Pagination);
67
71
  var _toPropertyKey__default = /*#__PURE__*/_interopDefaultLegacy(_toPropertyKey);
68
72
  var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
69
73
 
70
- var _excluded$5 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
74
+ var _excluded$6 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
71
75
  var propTypes$m = {
72
76
  resource: core.PropTypes.resource.isRequired,
73
77
  action: PropTypes__default["default"].string,
@@ -92,23 +96,20 @@ var defaultProps$m = {
92
96
  errors: null,
93
97
  className: null
94
98
  };
95
-
96
99
  var DeleteForm = function DeleteForm(_ref) {
97
100
  var resource = _ref.resource,
98
- action = _ref.action,
99
- previous = _ref.previous;
100
- _ref.status;
101
- var value = _ref.value,
102
- onSubmit = _ref.onSubmit;
103
- _ref.errors;
104
- var generalError = _ref.generalError,
105
- className = _ref.className,
106
- props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
107
-
101
+ action = _ref.action,
102
+ previous = _ref.previous;
103
+ _ref.status;
104
+ var value = _ref.value,
105
+ onSubmit = _ref.onSubmit;
106
+ _ref.errors;
107
+ var generalError = _ref.generalError,
108
+ className = _ref.className,
109
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
108
110
  var _ref2 = value || {},
109
- _ref2$id = _ref2.id,
110
- id = _ref2$id === void 0 ? null : _ref2$id;
111
-
111
+ _ref2$id = _ref2.id,
112
+ id = _ref2$id === void 0 ? null : _ref2$id;
112
113
  var resourceValues = intl.useResourceValues(resource, {
113
114
  id: id
114
115
  });
@@ -176,11 +177,10 @@ var DeleteForm = function DeleteForm(_ref) {
176
177
  }]
177
178
  })))));
178
179
  };
179
-
180
180
  DeleteForm.propTypes = propTypes$m;
181
181
  DeleteForm.defaultProps = defaultProps$m;
182
182
 
183
- var _excluded$4 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
183
+ var _excluded$5 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
184
184
  var propTypes$l = {
185
185
  component: PropTypes__default["default"].string,
186
186
  resource: core.PropTypes.resource.isRequired,
@@ -197,129 +197,120 @@ var defaultProps$l = {
197
197
  onSuccess: null,
198
198
  isDelete: false
199
199
  };
200
-
201
200
  var ResourceForm = function ResourceForm(_ref) {
202
201
  var component = _ref.component,
203
- resource = _ref.resource,
204
- onSuccess = _ref.onSuccess,
205
- item = _ref.item,
206
- type = _ref.type,
207
- isDelete = _ref.isDelete,
208
- props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
209
-
202
+ resource = _ref.resource,
203
+ onSuccess = _ref.onSuccess,
204
+ item = _ref.item,
205
+ type = _ref.type,
206
+ isDelete = _ref.isDelete,
207
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
210
208
  var locales = contexts.useLocales();
211
209
  var FormComponents = contexts.useFormsComponents();
212
210
  var _resource$fields = resource.fields,
213
- resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
214
- _resource$types = resource.types,
215
- resourceTypes = _resource$types === void 0 ? [] : _resource$types,
216
- forms = resource.forms;
211
+ resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
212
+ _resource$types = resource.types,
213
+ resourceTypes = _resource$types === void 0 ? [] : _resource$types,
214
+ forms = resource.forms;
217
215
  var resourceType = type !== null ? resourceTypes.find(function (it) {
218
216
  return it.id === type;
219
217
  }) || null : null;
220
-
221
218
  var _ref2 = resourceType || {},
222
- _ref2$fields = _ref2.fields,
223
- resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
224
-
225
- var isCreate = item === null || !item.id; // Pick fields from resource root or form
219
+ _ref2$fields = _ref2.fields,
220
+ resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
221
+ var isCreate = item === null || !item.id;
226
222
 
223
+ // Pick fields from resource root or form
227
224
  var _ref3 = forms || {},
228
- _ref3$default = _ref3["default"],
229
- defaultForm = _ref3$default === void 0 ? null : _ref3$default,
230
- _ref3$create = _ref3.create,
231
- createForm = _ref3$create === void 0 ? null : _ref3$create,
232
- _ref3$edit = _ref3.edit,
233
- editForm = _ref3$edit === void 0 ? null : _ref3$edit,
234
- _ref3$delete = _ref3["delete"],
235
- deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
236
-
225
+ _ref3$default = _ref3["default"],
226
+ defaultForm = _ref3$default === void 0 ? null : _ref3$default,
227
+ _ref3$create = _ref3.create,
228
+ createForm = _ref3$create === void 0 ? null : _ref3$create,
229
+ _ref3$edit = _ref3.edit,
230
+ editForm = _ref3$edit === void 0 ? null : _ref3$edit,
231
+ _ref3$delete = _ref3["delete"],
232
+ deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
237
233
  var _ref4 = defaultForm || {},
238
- _ref4$fields = _ref4.fields,
239
- defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
240
- defaultComponent = _ref4.component;
241
-
234
+ _ref4$fields = _ref4.fields,
235
+ defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
236
+ defaultComponent = _ref4.component;
242
237
  var createOrEditSource = isCreate ? createForm || {} : editForm || {};
243
-
244
238
  var _ref5 = isDelete ? deleteForm || {} : createOrEditSource || {},
245
- _ref5$fields = _ref5.fields,
246
- formFields = _ref5$fields === void 0 ? null : _ref5$fields,
247
- _ref5$component = _ref5.component,
248
- formComponent = _ref5$component === void 0 ? null : _ref5$component;
249
-
239
+ _ref5$fields = _ref5.fields,
240
+ formFields = _ref5$fields === void 0 ? null : _ref5$fields,
241
+ _ref5$component = _ref5.component,
242
+ formComponent = _ref5$component === void 0 ? null : _ref5$component;
250
243
  var finalFields = React.useMemo(function () {
251
244
  return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref6) {
252
- var _ref6$settings = _ref6.settings;
253
- _ref6$settings = _ref6$settings === void 0 ? {} : _ref6$settings;
254
- var _ref6$settings$hidden = _ref6$settings.hiddenInForm,
255
- hiddenInForm = _ref6$settings$hidden === void 0 ? false : _ref6$settings$hidden;
245
+ var _ref6$settings = _ref6.settings,
246
+ _ref6$settings2 = _ref6$settings === void 0 ? {} : _ref6$settings,
247
+ _ref6$settings2$hidde = _ref6$settings2.hiddenInForm,
248
+ hiddenInForm = _ref6$settings2$hidde === void 0 ? false : _ref6$settings2$hidde;
256
249
  return !hiddenInForm;
257
250
  });
258
- }, [formFields, defaultFields, resourceTypeFields, resourceFields]); // Form routes
251
+ }, [formFields, defaultFields, resourceTypeFields, resourceFields]);
259
252
 
253
+ // Form routes
260
254
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
261
-
262
255
  var _useResourceStore = data.useResourceStore(resource),
263
- store = _useResourceStore.store;
264
-
256
+ store = _useResourceStore.store;
265
257
  var _useResourceUpdate = data.useResourceUpdate(resource, item != null ? item.id : null),
266
- update = _useResourceUpdate.update;
267
-
258
+ update = _useResourceUpdate.update;
268
259
  var _useResourceDestroy = data.useResourceDestroy(resource, item != null ? item.id : null),
269
- destroy = _useResourceDestroy.destroy; // Post actions
270
-
260
+ destroy = _useResourceDestroy.destroy;
271
261
 
262
+ // Post actions
272
263
  var postAction = isCreate ? store : update;
273
264
  var postForm = React.useCallback(function (action, data) {
274
265
  return isDelete ? destroy() : postAction(data);
275
- }, [postAction, isDelete, destroy, store, update]); // Form state
266
+ }, [postAction, isDelete, destroy, store, update]);
276
267
 
268
+ // Form state
277
269
  var getInitialValue = React.useCallback(function () {
278
270
  return item !== null ? item : finalFields.reduce(function (defaultValues, _ref7) {
279
271
  var name = _ref7.name,
280
- _ref7$defaultValue = _ref7.defaultValue,
281
- defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
272
+ _ref7$defaultValue = _ref7.defaultValue,
273
+ defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
282
274
  return defaultValue !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, defaultValues), {}, _defineProperty__default["default"]({}, name, defaultValue)) : defaultValues;
283
275
  }, type !== null ? {
284
276
  type: type
285
277
  } : null);
286
278
  }, [item, type, finalFields]);
287
-
288
279
  var _useState = React.useState(getInitialValue()),
289
- _useState2 = _slicedToArray__default["default"](_useState, 2),
290
- value = _useState2[0],
291
- setValueState = _useState2[1];
292
-
280
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
281
+ value = _useState2[0],
282
+ setValueState = _useState2[1];
293
283
  var setValue = React.useCallback(function (newValue) {
294
284
  // console.log('new value in resource form', newValue); // eslint-disable-line
295
285
  setValueState(newValue);
296
286
  }, [setValueState]);
297
-
298
287
  var _useForm = hooks.useForm({
299
- fields: finalFields,
300
- value: value,
301
- postForm: postForm,
302
- setValue: setValue,
303
- onComplete: onSuccess,
304
- locales: locales
305
- }),
306
- fields = _useForm.fields,
307
- onSubmit = _useForm.onSubmit,
308
- status = _useForm.status,
309
- generalError = _useForm.generalError,
310
- errors = _useForm.errors; // Form action
311
-
288
+ fields: finalFields,
289
+ value: value,
290
+ postForm: postForm,
291
+ setValue: setValue,
292
+ onComplete: onSuccess,
293
+ locales: locales
294
+ }),
295
+ fields = _useForm.fields,
296
+ onSubmit = _useForm.onSubmit,
297
+ status = _useForm.status,
298
+ generalError = _useForm.generalError,
299
+ errors = _useForm.errors;
312
300
 
301
+ // Form action
313
302
  var modifyAction = isCreate ? resourceRoute('store') : resourceRoute('update', {
314
303
  id: item.id
315
304
  });
316
305
  var action = isDelete ? resourceRoute('destroy', {
317
306
  id: item.id
318
307
  }) : modifyAction;
319
- var defaultFormName = isDelete ? component || formComponent || null : component || formComponent || defaultComponent || 'normal'; // Form component
308
+ var defaultFormName = isDelete ? component || formComponent || null : component || formComponent || defaultComponent || 'normal';
320
309
 
321
- var FormComponent = utils.getComponentFromName(defaultFormName, FormComponents, isDelete ? DeleteForm : component); // Lisen to item value change - this is important
310
+ // Form component
311
+ var FormComponent = utils.getComponentFromName(defaultFormName, FormComponents, isDelete ? DeleteForm : component);
322
312
 
313
+ // Lisen to item value change - this is important
323
314
  React.useEffect(function () {
324
315
  // console.log('get initial value from the top'); // eslint-disable-line
325
316
  setValue(getInitialValue());
@@ -341,7 +332,6 @@ var ResourceForm = function ResourceForm(_ref) {
341
332
  onChange: setValue
342
333
  })));
343
334
  };
344
-
345
335
  ResourceForm.propTypes = propTypes$l;
346
336
  ResourceForm.defaultProps = defaultProps$l;
347
337
 
@@ -355,11 +345,10 @@ var defaultProps$k = {
355
345
  itemClassName: null,
356
346
  linkClassName: null
357
347
  };
358
-
359
348
  var AccountMenu = function AccountMenu(_ref) {
360
349
  var className = _ref.className,
361
- itemClassName = _ref.itemClassName,
362
- linkClassName = _ref.linkClassName;
350
+ itemClassName = _ref.itemClassName,
351
+ linkClassName = _ref.linkClassName;
363
352
  var route = contexts.useUrlGenerator();
364
353
  var user = auth.useUser();
365
354
  var logout = auth.useLogout();
@@ -378,14 +367,15 @@ var AccountMenu = function AccountMenu(_ref) {
378
367
  }]
379
368
  }),
380
369
  href: route('account'),
381
- dropdown: [// {
370
+ dropdown: [
371
+ // {
382
372
  // label: (
383
373
  // <FormattedMessage
384
374
  // defaultMessage="Update account"
385
375
  // description="Menu label"
386
376
  // />
387
377
  // ),
388
- // href: route('panneau.account'),
378
+ // href: route('account'),
389
379
  // },
390
380
  {
391
381
  label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
@@ -417,7 +407,6 @@ var AccountMenu = function AccountMenu(_ref) {
417
407
  dropdownAlign: "end"
418
408
  }) : null;
419
409
  };
420
-
421
410
  AccountMenu.propTypes = propTypes$k;
422
411
  AccountMenu.defaultProps = defaultProps$k;
423
412
 
@@ -431,23 +420,20 @@ var defaultProps$j = {
431
420
  itemClassName: null,
432
421
  linkClassName: null
433
422
  };
434
-
435
423
  var ResourcesMenu = function ResourcesMenu(_ref) {
436
424
  var className = _ref.className,
437
- itemClassName = _ref.itemClassName,
438
- linkClassName = _ref.linkClassName;
439
-
425
+ itemClassName = _ref.itemClassName,
426
+ linkClassName = _ref.linkClassName;
440
427
  var _useLocation = reactRouter.useLocation(),
441
- pathname = _useLocation.pathname;
442
-
428
+ pathname = _useLocation.pathname;
443
429
  var resources = contexts.usePanneauResources();
444
430
  var resourceRoute = hooks.useResourceUrlGenerator();
445
431
  var items = React.useMemo(function () {
446
432
  return resources.filter(function (_ref2) {
447
- var _ref2$settings = _ref2.settings;
448
- _ref2$settings = _ref2$settings === void 0 ? {} : _ref2$settings;
449
- var _ref2$settings$hideIn = _ref2$settings.hideInNavbar,
450
- hideInNavbar = _ref2$settings$hideIn === void 0 ? false : _ref2$settings$hideIn;
433
+ var _ref2$settings = _ref2.settings,
434
+ _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
435
+ _ref2$settings2$hideI = _ref2$settings2.hideInNavbar,
436
+ hideInNavbar = _ref2$settings2$hideI === void 0 ? false : _ref2$settings2$hideI;
451
437
  return !hideInNavbar;
452
438
  }).map(function (it) {
453
439
  var url = resourceRoute(it, 'index');
@@ -466,39 +452,69 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
466
452
  linkClassName: linkClassName
467
453
  });
468
454
  };
469
-
470
455
  ResourcesMenu.propTypes = propTypes$j;
471
456
  ResourcesMenu.defaultProps = defaultProps$j;
472
457
 
473
- /* eslint-disable react/jsx-props-no-spreading */
474
458
  var propTypes$i = {};
475
459
  var defaultProps$i = {};
476
-
477
460
  var MainNavbar = function MainNavbar(props) {
478
461
  var _usePanneau = contexts.usePanneau(),
479
- name = _usePanneau.name;
480
-
462
+ name = _usePanneau.name,
463
+ _usePanneau$menus = _usePanneau.menus,
464
+ menus = _usePanneau$menus === void 0 ? null : _usePanneau$menus;
465
+ var _ref = menus || {},
466
+ _ref$main = _ref.main,
467
+ main = _ref$main === void 0 ? null : _ref$main,
468
+ _ref$guest = _ref.guest,
469
+ guest = _ref$guest === void 0 ? null : _ref$guest;
481
470
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
482
- background = _usePanneauColorSchem.background;
483
-
471
+ background = _usePanneauColorSchem.background;
484
472
  var route = contexts.useUrlGenerator();
485
473
  var user = auth.useUser();
474
+ var items = React.useMemo(function () {
475
+ var menuItems = (user !== null ? main : guest) || [];
476
+ var hasResources = menuItems.indexOf('resources') !== -1;
477
+ var hasAccount = menuItems.indexOf('account') !== -1;
478
+ return [!hasResources && user !== null ? 'resources' : null].concat(_toConsumableArray__default["default"](menuItems), [!hasAccount && menuItems.indexOf('separator') === -1 ? 'separator' : null, !hasAccount ? 'account' : null]).filter(function (it) {
479
+ return it !== null;
480
+ }).reduce(function (currentItems, item) {
481
+ if (item === 'resources') {
482
+ return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement(ResourcesMenu, {
483
+ className: "navbar-nav",
484
+ itemClassName: "nav-item",
485
+ linkClassName: "nav-link"
486
+ })]);
487
+ }
488
+ if (item === 'account') {
489
+ return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement(AccountMenu, {
490
+ className: "navbar-nav",
491
+ itemClassName: "nav-item",
492
+ linkClassName: "nav-link"
493
+ })]);
494
+ }
495
+ if (item === 'separator') {
496
+ return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement("span", {
497
+ className: "ms-auto"
498
+ })]);
499
+ }
500
+ var lastItem = currentItems.length > 0 ? currentItems[currentItems.length - 1] : null;
501
+ return isArray__default["default"](lastItem) ? [].concat(_toConsumableArray__default["default"](currentItems.slice(0, currentItems.length - 1)), [[].concat(_toConsumableArray__default["default"](lastItem), [item])]) : [].concat(_toConsumableArray__default["default"](currentItems), [[item]]);
502
+ }, []).map(function (it) {
503
+ return isArray__default["default"](it) ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
504
+ items: it,
505
+ className: "navbar-nav",
506
+ itemClassName: "nav-item",
507
+ linkClassName: "nav-link"
508
+ }) : it;
509
+ });
510
+ }, [main]);
486
511
  return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], Object.assign({
487
512
  theme: background
488
513
  }, props), name !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
489
514
  to: route('home'),
490
515
  className: "navbar-brand"
491
- }, name) : null, user !== null ? /*#__PURE__*/React__default["default"].createElement(ResourcesMenu, {
492
- className: "navbar-nav ml-4",
493
- itemClassName: "nav-item",
494
- linkClassName: "nav-link"
495
- }) : null, /*#__PURE__*/React__default["default"].createElement(AccountMenu, {
496
- className: "navbar-nav ms-auto",
497
- itemClassName: "nav-item",
498
- linkClassName: "nav-link"
499
- }));
516
+ }, name) : null, items);
500
517
  };
501
-
502
518
  MainNavbar.propTypes = propTypes$i;
503
519
  MainNavbar.defaultProps = defaultProps$i;
504
520
 
@@ -509,17 +525,13 @@ var propTypes$h = {
509
525
  var defaultProps$h = {
510
526
  fullscreen: false
511
527
  };
512
-
513
528
  var MainLayout = function MainLayout(_ref) {
514
529
  var _ref2;
515
-
516
530
  var children = _ref.children,
517
- fullscreen = _ref.fullscreen;
518
-
531
+ fullscreen = _ref.fullscreen;
519
532
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
520
- background = _usePanneauColorSchem.background,
521
- text = _usePanneauColorSchem.text;
522
-
533
+ background = _usePanneauColorSchem.background,
534
+ text = _usePanneauColorSchem.text;
523
535
  return /*#__PURE__*/React__default["default"].createElement("div", {
524
536
  className: classNames__default["default"](['d-flex', 'flex-column', 'min-vh-100'])
525
537
  }, /*#__PURE__*/React__default["default"].createElement(MainNavbar, {
@@ -530,7 +542,6 @@ var MainLayout = function MainLayout(_ref) {
530
542
  }, _defineProperty__default["default"](_ref2, "bg-".concat(background), background !== null), _defineProperty__default["default"](_ref2, "text-".concat(text), text !== null), _ref2)])
531
543
  }, children));
532
544
  };
533
-
534
545
  MainLayout.propTypes = propTypes$h;
535
546
  MainLayout.defaultProps = defaultProps$h;
536
547
 
@@ -548,22 +559,19 @@ var defaultProps$g = {
548
559
  className: null,
549
560
  children: null
550
561
  };
551
-
552
562
  var PageHeader = function PageHeader(_ref) {
553
563
  var _ref2;
554
-
555
564
  var title = _ref.title,
556
- actions = _ref.actions,
557
- small = _ref.small,
558
- className = _ref.className,
559
- children = _ref.children;
560
-
565
+ actions = _ref.actions,
566
+ small = _ref.small,
567
+ className = _ref.className,
568
+ children = _ref.children;
561
569
  // TODO: fix page header components
562
570
  // const { components } = usePanneau();
563
571
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
564
- text = _usePanneauColorSchem.text,
565
- background = _usePanneauColorSchem.background; // console.log('page-header', components); // eslint-disable-line
566
-
572
+ text = _usePanneauColorSchem.text,
573
+ background = _usePanneauColorSchem.background;
574
+ // console.log('page-header', components); // eslint-disable-line
567
575
 
568
576
  var inner = /*#__PURE__*/React__default["default"].createElement("div", {
569
577
  className: "d-flex align-items-center flex-wrap"
@@ -582,7 +590,6 @@ var PageHeader = function PageHeader(_ref) {
582
590
  className: "col-12 col-md-8 col-lg-7"
583
591
  }, inner)) : inner), children);
584
592
  };
585
-
586
593
  PageHeader.propTypes = propTypes$g;
587
594
  PageHeader.defaultProps = defaultProps$g;
588
595
 
@@ -590,25 +597,20 @@ var propTypes$f = {
590
597
  resource: core.PropTypes.resource.isRequired
591
598
  };
592
599
  var defaultProps$f = {};
593
-
594
600
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
595
601
  var resource = _ref.resource;
596
602
  var navigate = reactRouter.useNavigate();
597
-
598
603
  var _useLocation = reactRouter.useLocation(),
599
- search = _useLocation.search;
600
-
604
+ search = _useLocation.search;
601
605
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
602
606
  var onSuccess = React.useCallback(function () {
603
607
  navigate("".concat(resourceRoute('index'), "?created=true"));
604
608
  }, [navigate, resourceRoute]);
605
-
606
609
  var _useMemo = React.useMemo(function () {
607
- return queryString.parse(search);
608
- }, [search]),
609
- _useMemo$type = _useMemo.type,
610
- type = _useMemo$type === void 0 ? null : _useMemo$type;
611
-
610
+ return queryString.parse(search);
611
+ }, [search]),
612
+ _useMemo$type = _useMemo.type,
613
+ type = _useMemo$type === void 0 ? null : _useMemo$type;
612
614
  var resourceValues = intl.useResourceValues(resource);
613
615
  return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
614
616
  resource: resource
@@ -637,35 +639,31 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
637
639
  onSuccess: onSuccess
638
640
  }))))));
639
641
  };
640
-
641
642
  ResourceCreatePage.propTypes = propTypes$f;
642
643
  ResourceCreatePage.defaultProps = defaultProps$f;
643
644
 
645
+ // import Button from '../buttons/Button';
646
+
644
647
  var propTypes$e = {
645
648
  resource: core.PropTypes.resource.isRequired
646
649
  };
647
650
  var defaultProps$e = {};
648
-
649
651
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
650
652
  var resource = _ref.resource;
651
-
652
653
  var _useParams = reactRouter.useParams(),
653
- itemId = _useParams.id;
654
-
654
+ itemId = _useParams.id;
655
655
  var navigate = reactRouter.useNavigate();
656
656
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
657
-
658
657
  var _useResourceItem = data.useResourceItem(resource, itemId),
659
- item = _useResourceItem.item;
660
-
658
+ item = _useResourceItem.item;
661
659
  var onSuccess = React.useCallback(function () {
662
660
  return navigate("".concat(resourceRoute('index'), "?deleted=true"));
663
- }, [navigate, resourceRoute]); // Navigate back
661
+ }, [navigate, resourceRoute]);
664
662
 
663
+ // Navigate back
665
664
  var _ref2 = history || {},
666
- _ref2$entries = _ref2.entries,
667
- entries = _ref2$entries === void 0 ? [] : _ref2$entries;
668
-
665
+ _ref2$entries = _ref2.entries,
666
+ entries = _ref2$entries === void 0 ? [] : _ref2$entries;
669
667
  var previousEntry = entries !== null && entries.length > 1 ? entries[entries.length - 2] : null;
670
668
  var previous = (previousEntry === null || previousEntry === void 0 ? void 0 : previousEntry.pathname) || null;
671
669
  var resourceValues = intl.useResourceValues(resource);
@@ -699,33 +697,28 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
699
697
  isDelete: true
700
698
  }) : null)))));
701
699
  };
702
-
703
700
  ResourceDeletePage.propTypes = propTypes$e;
704
701
  ResourceDeletePage.defaultProps = defaultProps$e;
705
702
 
703
+ // import Button from '../buttons/Button';
704
+
706
705
  var propTypes$d = {
707
706
  resource: core.PropTypes.resource.isRequired
708
707
  };
709
708
  var defaultProps$d = {};
710
-
711
709
  var ResourceEditPage = function ResourceEditPage(_ref) {
712
710
  var resource = _ref.resource;
713
-
714
711
  var _useParams = reactRouter.useParams(),
715
- itemId = _useParams.id;
716
-
712
+ itemId = _useParams.id;
717
713
  var _useResourceItem = data.useResourceItem(resource, itemId),
718
- item = _useResourceItem.item;
719
-
714
+ item = _useResourceItem.item;
720
715
  var _ref2 = item || {},
721
- _ref2$type = _ref2.type,
722
- type = _ref2$type === void 0 ? null : _ref2$type;
723
-
716
+ _ref2$type = _ref2.type,
717
+ type = _ref2$type === void 0 ? null : _ref2$type;
724
718
  var _useState = React.useState(item),
725
- _useState2 = _slicedToArray__default["default"](_useState, 2),
726
- editItem = _useState2[0],
727
- setEditItem = _useState2[1];
728
-
719
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
720
+ editItem = _useState2[0],
721
+ setEditItem = _useState2[1];
729
722
  var onSuccess = React.useCallback(function (newItem) {
730
723
  return setEditItem(newItem);
731
724
  }, []);
@@ -761,7 +754,6 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
761
754
  onSuccess: onSuccess
762
755
  }) : null)))));
763
756
  };
764
-
765
757
  ResourceEditPage.propTypes = propTypes$d;
766
758
  ResourceEditPage.defaultProps = defaultProps$d;
767
759
 
@@ -772,38 +764,36 @@ var propTypes$c = {
772
764
  var defaultProps$c = {
773
765
  className: null
774
766
  };
775
-
776
767
  var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
777
768
  var resource = _ref.resource,
778
- className = _ref.className;
769
+ className = _ref.className;
779
770
  var _resource$types = resource.types,
780
- types = _resource$types === void 0 ? null : _resource$types; // const intl = useIntl();
781
-
771
+ types = _resource$types === void 0 ? null : _resource$types;
772
+ // const intl = useIntl();
782
773
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
783
774
  var resourceValues = intl.useResourceValues(resource);
784
-
785
775
  var _useState = React.useState(false),
786
- _useState2 = _slicedToArray__default["default"](_useState, 2),
787
- dropdownOpened = _useState2[0],
788
- setDropdownOpened = _useState2[1];
789
-
776
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
777
+ dropdownOpened = _useState2[0],
778
+ setDropdownOpened = _useState2[1];
790
779
  var onClickDropdown = React.useCallback(function (e) {
791
780
  e.preventDefault();
792
- setDropdownOpened(function (opened) {
793
- return !opened;
794
- });
795
- }, [setDropdownOpened]);
781
+ e.stopPropagation();
782
+ setDropdownOpened(!dropdownOpened);
783
+ }, [setDropdownOpened, dropdownOpened]);
796
784
  var finalTypes = types !== null ? types.filter(function (_ref2) {
797
- var _ref2$settings = _ref2.settings;
798
- _ref2$settings = _ref2$settings === void 0 ? {} : _ref2$settings;
799
- var _ref2$settings$canCre = _ref2$settings.canCreate,
800
- canCreate = _ref2$settings$canCre === void 0 ? true : _ref2$settings$canCre;
785
+ var _ref2$settings = _ref2.settings,
786
+ _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
787
+ _ref2$settings2$canCr = _ref2$settings2.canCreate,
788
+ canCreate = _ref2$settings2$canCr === void 0 ? true : _ref2$settings2$canCr;
801
789
  return canCreate;
802
790
  }) : null;
803
791
  var hasMultipleTypes = finalTypes !== null && finalTypes.length > 1;
804
792
  var onDropdownClickOutside = React.useCallback(function () {
805
- setDropdownOpened(false);
806
- }, [setDropdownOpened]);
793
+ if (dropdownOpened) {
794
+ setDropdownOpened(false);
795
+ }
796
+ }, [setDropdownOpened, dropdownOpened]);
807
797
  var button = /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
808
798
  href: !hasMultipleTypes ? "".concat(resourceRoute('create')).concat(finalTypes !== null && finalTypes.length === 1 ? "?type=".concat(finalTypes[0].id) : '') : '#',
809
799
  size: "lg",
@@ -840,11 +830,10 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
840
830
  onClickOutside: onDropdownClickOutside
841
831
  })) : button;
842
832
  };
843
-
844
833
  ResourceCreateButtom.propTypes = propTypes$c;
845
834
  ResourceCreateButtom.defaultProps = defaultProps$c;
846
835
 
847
- var _excluded$3 = ["component", "name", "groupLabel"];
836
+ var _excluded$4 = ["component", "name", "groupLabel"];
848
837
  var propTypes$b = {
849
838
  filters: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
850
839
  id: PropTypes__default["default"].string.isRequired,
@@ -872,21 +861,18 @@ var defaultProps$b = {
872
861
  },
873
862
  className: null
874
863
  };
875
-
876
864
  var ResourceFilters = function ResourceFilters(_ref) {
877
865
  var filters = _ref.filters,
878
- value = _ref.value,
879
- onChange = _ref.onChange,
880
- onReset = _ref.onReset,
881
- withContainer = _ref.withContainer,
882
- withReset = _ref.withReset,
883
- defaultValue = _ref.defaultValue,
884
- className = _ref.className;
866
+ value = _ref.value,
867
+ onChange = _ref.onChange,
868
+ onReset = _ref.onReset,
869
+ withContainer = _ref.withContainer,
870
+ withReset = _ref.withReset,
871
+ defaultValue = _ref.defaultValue,
872
+ className = _ref.className;
885
873
  var FilterComponents = contexts.useFiltersComponents();
886
-
887
874
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
888
- background = _usePanneauColorSchem.background;
889
-
875
+ background = _usePanneauColorSchem.background;
890
876
  var currentFilters = filters || [];
891
877
  var onFiltersReset = React.useCallback(function () {
892
878
  if (onReset !== null) {
@@ -897,9 +883,10 @@ var ResourceFilters = function ResourceFilters(_ref) {
897
883
  if (value !== null && value[item.name]) {
898
884
  return true;
899
885
  }
900
-
901
886
  return isActive;
902
- }, false); // console.log('value', value);
887
+ }, false);
888
+
889
+ // console.log('value', value);
903
890
 
904
891
  return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], {
905
892
  className: classNames__default["default"]([_defineProperty__default["default"]({
@@ -909,10 +896,9 @@ var ResourceFilters = function ResourceFilters(_ref) {
909
896
  withoutCollapse: true
910
897
  }, currentFilters.map(function (_ref3, index) {
911
898
  var component = _ref3.component,
912
- name = _ref3.name,
913
- groupLabel = _ref3.groupLabel,
914
- filterProps = _objectWithoutProperties__default["default"](_ref3, _excluded$3);
915
-
899
+ name = _ref3.name,
900
+ groupLabel = _ref3.groupLabel,
901
+ filterProps = _objectWithoutProperties__default["default"](_ref3, _excluded$4);
916
902
  var FilterComponent = utils.getComponentFromName(component, FilterComponents, null);
917
903
  var filterValue = value !== null && value[name] ? value[name] : null;
918
904
  var onFilterChange = React.useCallback(function (newFilterValue) {
@@ -923,9 +909,8 @@ var ResourceFilters = function ResourceFilters(_ref) {
923
909
  var onFilterClear = React.useCallback(function () {
924
910
  if (name !== null && onChange !== null) {
925
911
  var _ref4 = value || {};
926
- _ref4[name];
927
- var newValue = _objectWithoutProperties__default["default"](_ref4, [name].map(_toPropertyKey__default["default"]));
928
-
912
+ _ref4[name];
913
+ var newValue = _objectWithoutProperties__default["default"](_ref4, [name].map(_toPropertyKey__default["default"]));
929
914
  onChange(_objectSpread__default["default"](_objectSpread__default["default"]({}, newValue), defaultValue));
930
915
  }
931
916
  }, [onChange, name, value, defaultValue]);
@@ -945,12 +930,11 @@ var ResourceFilters = function ResourceFilters(_ref) {
945
930
  icon: freeSolidSvgIcons.faUndo
946
931
  })) : null);
947
932
  };
948
-
949
933
  ResourceFilters.propTypes = propTypes$b;
950
934
  ResourceFilters.defaultProps = defaultProps$b;
951
935
 
952
- var _excluded$2 = ["component", "showPagination", "filters"],
953
- _excluded2 = ["page"];
936
+ var _excluded$3 = ["component", "showPagination", "filters"],
937
+ _excluded2$1 = ["page"];
954
938
  var propTypes$a = {
955
939
  resource: core.PropTypes.resource.isRequired,
956
940
  query: PropTypes__default["default"].object,
@@ -972,51 +956,42 @@ var defaultProps$a = {
972
956
  onQueryChange: null,
973
957
  onQueryReset: null
974
958
  };
975
-
976
959
  var ResourceItemsList = function ResourceItemsList(_ref) {
977
960
  var resource = _ref.resource,
978
- query = _ref.query,
979
- baseUrl = _ref.baseUrl,
980
- onQueryChange = _ref.onQueryChange,
981
- onQueryReset = _ref.onQueryReset,
982
- paginated = _ref.paginated;
983
- var _resource$index = resource.index;
984
- _resource$index = _resource$index === void 0 ? {} : _resource$index;
985
-
986
- var _resource$index$compo = _resource$index.component,
987
- listComponent = _resource$index$compo === void 0 ? null : _resource$index$compo,
988
- _resource$index$showP = _resource$index.showPagination,
989
- showPagination = _resource$index$showP === void 0 ? true : _resource$index$showP,
990
- _resource$index$filte = _resource$index.filters,
991
- filters = _resource$index$filte === void 0 ? null : _resource$index$filte,
992
- listProps = _objectWithoutProperties__default["default"](_resource$index, _excluded$2);
993
-
961
+ query = _ref.query,
962
+ baseUrl = _ref.baseUrl,
963
+ onQueryChange = _ref.onQueryChange,
964
+ onQueryReset = _ref.onQueryReset,
965
+ paginated = _ref.paginated;
966
+ var _resource$index = resource.index,
967
+ _resource$index2 = _resource$index === void 0 ? {} : _resource$index,
968
+ _resource$index2$comp = _resource$index2.component,
969
+ listComponent = _resource$index2$comp === void 0 ? null : _resource$index2$comp,
970
+ _resource$index2$show = _resource$index2.showPagination,
971
+ showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
972
+ _resource$index2$filt = _resource$index2.filters,
973
+ filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt,
974
+ listProps = _objectWithoutProperties__default["default"](_resource$index2, _excluded$3);
994
975
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
995
- _usePanneauColorSchem2 = _usePanneauColorSchem.background,
996
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
997
-
976
+ _usePanneauColorSchem2 = _usePanneauColorSchem.background,
977
+ theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
998
978
  var ListComponents = contexts.useListsComponents();
999
-
1000
979
  var _useMemo = React.useMemo(function () {
1001
- var _ref2 = query || {},
980
+ var _ref2 = query || {},
1002
981
  _ref2$page = _ref2.page,
1003
982
  currentPage = _ref2$page === void 0 ? 1 : _ref2$page,
1004
- rest = _objectWithoutProperties__default["default"](_ref2, _excluded2);
1005
-
1006
- return [currentPage, rest];
1007
- }, [query]),
1008
- _useMemo2 = _slicedToArray__default["default"](_useMemo, 2),
1009
- page = _useMemo2[0],
1010
- queryWithoutPage = _useMemo2[1];
1011
-
983
+ rest = _objectWithoutProperties__default["default"](_ref2, _excluded2$1);
984
+ return [currentPage, rest];
985
+ }, [query]),
986
+ _useMemo2 = _slicedToArray__default["default"](_useMemo, 2),
987
+ page = _useMemo2[0],
988
+ queryWithoutPage = _useMemo2[1];
1012
989
  var itemsProps = data.useResourceItems(resource, queryWithoutPage, paginated ? parseInt(page, 10) : null);
1013
-
1014
990
  var _ref3 = itemsProps || {},
1015
- _ref3$lastPage = _ref3.lastPage,
1016
- lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
1017
- _ref3$total = _ref3.total,
1018
- total = _ref3$total === void 0 ? 0 : _ref3$total;
1019
-
991
+ _ref3$lastPage = _ref3.lastPage,
992
+ lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
993
+ _ref3$total = _ref3.total,
994
+ total = _ref3$total === void 0 ? 0 : _ref3$total;
1020
995
  var ListComponent = utils.getComponentFromName(listComponent || 'table', ListComponents);
1021
996
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, filters !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceFilters, {
1022
997
  filters: filters,
@@ -1046,39 +1021,34 @@ var ResourceItemsList = function ResourceItemsList(_ref) {
1046
1021
  className: "mt-4 mb-1"
1047
1022
  }) : null);
1048
1023
  };
1049
-
1050
1024
  ResourceItemsList.propTypes = propTypes$a;
1051
1025
  ResourceItemsList.defaultProps = defaultProps$a;
1052
1026
 
1053
- var _excluded$1 = ["id", "component"];
1027
+ var _excluded$2 = ["id", "component"];
1054
1028
  var propTypes$9 = {
1055
1029
  resource: core.PropTypes.resource.isRequired,
1056
1030
  defaultActions: PropTypes__default["default"].arrayOf(PropTypes__default["default"].object) // eslint-disable-line react/forbid-prop-types
1057
-
1058
1031
  };
1032
+
1059
1033
  var defaultProps$9 = {
1060
1034
  defaultActions: ['create']
1061
1035
  };
1062
-
1063
1036
  var ResourceIndexPage = function ResourceIndexPage(_ref) {
1064
1037
  var resource = _ref.resource,
1065
- defaultActions = _ref.defaultActions;
1038
+ defaultActions = _ref.defaultActions;
1066
1039
  var name = resource.name,
1067
- _resource$settings = resource.settings,
1068
- settings = _resource$settings === void 0 ? {} : _resource$settings,
1069
- _resource$index = resource.index,
1070
- index = _resource$index === void 0 ? {} : _resource$index;
1071
-
1040
+ _resource$settings = resource.settings,
1041
+ settings = _resource$settings === void 0 ? {} : _resource$settings,
1042
+ _resource$index = resource.index,
1043
+ index = _resource$index === void 0 ? {} : _resource$index;
1072
1044
  var _ref2 = settings || {},
1073
- _ref2$canCreate = _ref2.canCreate,
1074
- canCreate = _ref2$canCreate === void 0 ? true : _ref2$canCreate,
1075
- _ref2$indexIsPaginate = _ref2.indexIsPaginated,
1076
- paginated = _ref2$indexIsPaginate === void 0 ? false : _ref2$indexIsPaginate;
1077
-
1045
+ _ref2$canCreate = _ref2.canCreate,
1046
+ canCreate = _ref2$canCreate === void 0 ? true : _ref2$canCreate,
1047
+ _ref2$indexIsPaginate = _ref2.indexIsPaginated,
1048
+ paginated = _ref2$indexIsPaginate === void 0 ? false : _ref2$indexIsPaginate;
1078
1049
  var _ref3 = index || {},
1079
- _ref3$actions = _ref3.actions,
1080
- actions = _ref3$actions === void 0 ? null : _ref3$actions;
1081
-
1050
+ _ref3$actions = _ref3.actions,
1051
+ actions = _ref3$actions === void 0 ? null : _ref3$actions;
1082
1052
  var finalActions = React.useMemo(function () {
1083
1053
  return (actions || defaultActions.filter(function (it) {
1084
1054
  return it !== 'create' || canCreate;
@@ -1093,10 +1063,8 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1093
1063
  }, [canCreate, actions]);
1094
1064
  var resourceValues = intl.useResourceValues(resource);
1095
1065
  var componentsManager = contexts.useComponentsManager();
1096
-
1097
1066
  var _useLocation = reactRouter.useLocation(),
1098
- search = _useLocation.search;
1099
-
1067
+ search = _useLocation.search;
1100
1068
  var navigate = reactRouter.useNavigate();
1101
1069
  var query = React.useMemo(function () {
1102
1070
  return queryString.parse(search);
@@ -1104,13 +1072,11 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1104
1072
  var listQuery = React.useMemo(function () {
1105
1073
  return query;
1106
1074
  }, [query]); // TODO: omit routes
1107
-
1108
1075
  var _ref4 = query || {},
1109
- _ref4$created = _ref4.created,
1110
- created = _ref4$created === void 0 ? false : _ref4$created,
1111
- _ref4$deleted = _ref4.deleted,
1112
- deleted = _ref4$deleted === void 0 ? false : _ref4$deleted;
1113
-
1076
+ _ref4$created = _ref4.created,
1077
+ created = _ref4$created === void 0 ? false : _ref4$created,
1078
+ _ref4$deleted = _ref4.deleted,
1079
+ deleted = _ref4$deleted === void 0 ? false : _ref4$deleted;
1114
1080
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
1115
1081
  var url = resourceRoute('index');
1116
1082
  var onQueryChange = React.useCallback(function (submitQuery) {
@@ -1129,8 +1095,10 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1129
1095
  navigate("".concat(url, "?").concat(queryString$1));
1130
1096
  }, [navigate, url, paginated]);
1131
1097
  var onClickCloseAlert = React.useCallback(function () {
1132
- history.replace(url);
1133
- }, [history, url]);
1098
+ navigate(url, {
1099
+ replace: true
1100
+ });
1101
+ }, [navigate, url]);
1134
1102
  return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1135
1103
  resource: resource
1136
1104
  }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
@@ -1139,10 +1107,9 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1139
1107
  className: "d-flex align-items-center"
1140
1108
  }, finalActions.map(function (_ref5) {
1141
1109
  var id = _ref5.id,
1142
- _ref5$component = _ref5.component,
1143
- component = _ref5$component === void 0 ? Button__default["default"] : _ref5$component,
1144
- actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$1);
1145
-
1110
+ _ref5$component = _ref5.component,
1111
+ component = _ref5$component === void 0 ? Button__default["default"] : _ref5$component,
1112
+ actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$2);
1146
1113
  var ActionComponent = isString__default["default"](component) ? componentsManager.getComponent(component) : component;
1147
1114
  return ActionComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ActionComponent, Object.assign({
1148
1115
  key: "action-".concat(id)
@@ -1189,7 +1156,6 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1189
1156
  onQueryReset: onQueryReset
1190
1157
  }))));
1191
1158
  };
1192
-
1193
1159
  ResourceIndexPage.propTypes = propTypes$9;
1194
1160
  ResourceIndexPage.defaultProps = defaultProps$9;
1195
1161
 
@@ -1197,7 +1163,6 @@ var propTypes$8 = {
1197
1163
  resource: core.PropTypes.resource.isRequired
1198
1164
  };
1199
1165
  var defaultProps$8 = {};
1200
-
1201
1166
  var ResourceShowPage = function ResourceShowPage(_ref) {
1202
1167
  var resource = _ref.resource;
1203
1168
  return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
@@ -1208,30 +1173,27 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
1208
1173
  className: "container-sm"
1209
1174
  }, "Show page")));
1210
1175
  };
1211
-
1212
1176
  ResourceShowPage.propTypes = propTypes$8;
1213
1177
  ResourceShowPage.defaultProps = defaultProps$8;
1214
1178
 
1215
1179
  /* eslint-disable react/jsx-props-no-spreading */
1216
1180
  var propTypes$7 = {};
1217
1181
  var defaultProps$7 = {};
1218
-
1219
1182
  var HomePage = function HomePage() {
1220
1183
  var route = contexts.useUrlGenerator();
1221
1184
  var resources = contexts.usePanneauResources();
1222
1185
  var visibleResources = resources.filter(function (_ref) {
1223
- var _ref$settings = _ref.settings;
1224
- _ref$settings = _ref$settings === void 0 ? {} : _ref$settings;
1225
- var _ref$settings$hideInN = _ref$settings.hideInNavbar,
1226
- hideInNavbar = _ref$settings$hideInN === void 0 ? false : _ref$settings$hideInN;
1186
+ var _ref$settings = _ref.settings,
1187
+ _ref$settings2 = _ref$settings === void 0 ? {} : _ref$settings,
1188
+ _ref$settings2$hideIn = _ref$settings2.hideInNavbar,
1189
+ hideInNavbar = _ref$settings2$hideIn === void 0 ? false : _ref$settings2$hideIn;
1227
1190
  return !hideInNavbar;
1228
1191
  });
1229
1192
  return /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement("div", {
1230
1193
  className: "container-sm py-4"
1231
1194
  }, visibleResources.map(function (resource) {
1232
1195
  var _ref2 = resource || {},
1233
- resourceId = _ref2.id;
1234
-
1196
+ resourceId = _ref2.id;
1235
1197
  var resourceValues = intl.useResourceValues(resource);
1236
1198
  return /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
1237
1199
  className: "d-block my-2",
@@ -1252,19 +1214,16 @@ var HomePage = function HomePage() {
1252
1214
  }));
1253
1215
  })));
1254
1216
  };
1255
-
1256
1217
  HomePage.propTypes = propTypes$7;
1257
1218
  HomePage.defaultProps = defaultProps$7;
1258
1219
 
1259
1220
  var propTypes$6 = {};
1260
1221
  var defaultProps$6 = {};
1261
-
1262
1222
  var AccountPage = function AccountPage() {
1263
1223
  return /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement("div", {
1264
1224
  className: "container-sm py-4"
1265
1225
  }, "Account page"));
1266
1226
  };
1267
-
1268
1227
  AccountPage.propTypes = propTypes$6;
1269
1228
  AccountPage.defaultProps = defaultProps$6;
1270
1229
 
@@ -1301,35 +1260,30 @@ var defaultProps$5 = {
1301
1260
  className: null,
1302
1261
  onSuccess: null
1303
1262
  };
1304
-
1305
1263
  var LoginForm = function LoginForm(_ref) {
1306
1264
  var formFields = _ref.fields,
1307
- className = _ref.className,
1308
- onSuccess = _ref.onSuccess;
1265
+ className = _ref.className,
1266
+ onSuccess = _ref.onSuccess;
1309
1267
  var url = contexts.useUrlGenerator();
1310
-
1311
1268
  var _useAuth = auth.useAuth(),
1312
- login = _useAuth.login;
1313
-
1269
+ login = _useAuth.login;
1314
1270
  var postForm = React.useCallback(function (action, _ref2) {
1315
1271
  var email = _ref2.email,
1316
- password = _ref2.password;
1272
+ password = _ref2.password;
1317
1273
  return login(email, password);
1318
1274
  }, [login]);
1319
-
1320
1275
  var _useForm = hooks.useForm({
1321
- fields: formFields,
1322
- postForm: postForm,
1323
- onComplete: onSuccess
1324
- }),
1325
- value = _useForm.value,
1326
- setValue = _useForm.setValue,
1327
- fields = _useForm.fields,
1328
- onSubmit = _useForm.onSubmit,
1329
- status = _useForm.status,
1330
- generalError = _useForm.generalError,
1331
- errors = _useForm.errors;
1332
-
1276
+ fields: formFields,
1277
+ postForm: postForm,
1278
+ onComplete: onSuccess
1279
+ }),
1280
+ value = _useForm.value,
1281
+ setValue = _useForm.setValue,
1282
+ fields = _useForm.fields,
1283
+ onSubmit = _useForm.onSubmit,
1284
+ status = _useForm.status,
1285
+ generalError = _useForm.generalError,
1286
+ errors = _useForm.errors;
1333
1287
  var NormalForm = contexts.useFormComponent('normal');
1334
1288
  return /*#__PURE__*/React__default["default"].createElement(NormalForm, {
1335
1289
  action: url('auth.login'),
@@ -1351,7 +1305,6 @@ var LoginForm = function LoginForm(_ref) {
1351
1305
  })
1352
1306
  });
1353
1307
  };
1354
-
1355
1308
  LoginForm.propTypes = propTypes$5;
1356
1309
  LoginForm.defaultProps = defaultProps$5;
1357
1310
 
@@ -1362,17 +1315,13 @@ var propTypes$4 = {
1362
1315
  var defaultProps$4 = {
1363
1316
  fullscreen: false
1364
1317
  };
1365
-
1366
1318
  var GuestLayout = function GuestLayout(_ref) {
1367
1319
  var _classNames;
1368
-
1369
1320
  var fullscreen = _ref.fullscreen,
1370
- children = _ref.children;
1371
-
1321
+ children = _ref.children;
1372
1322
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
1373
- background = _usePanneauColorSchem.background,
1374
- text = _usePanneauColorSchem.text;
1375
-
1323
+ background = _usePanneauColorSchem.background,
1324
+ text = _usePanneauColorSchem.text;
1376
1325
  return /*#__PURE__*/React__default["default"].createElement("div", {
1377
1326
  className: classNames__default["default"]({
1378
1327
  'd-flex flex-column min-vh-100': fullscreen
@@ -1389,14 +1338,12 @@ var GuestLayout = function GuestLayout(_ref) {
1389
1338
  })
1390
1339
  }, children)));
1391
1340
  };
1392
-
1393
1341
  GuestLayout.propTypes = propTypes$4;
1394
1342
  GuestLayout.defaultProps = defaultProps$4;
1395
1343
 
1396
1344
  /* eslint-disable react/jsx-props-no-spreading */
1397
1345
  var propTypes$3 = {};
1398
1346
  var defaultProps$3 = {};
1399
-
1400
1347
  var LoginPage = function LoginPage() {
1401
1348
  var route = contexts.useUrlGenerator();
1402
1349
  var onSuccess = React.useCallback(function () {
@@ -1422,7 +1369,6 @@ var LoginPage = function LoginPage() {
1422
1369
  onSuccess: onSuccess
1423
1370
  })))));
1424
1371
  };
1425
-
1426
1372
  LoginPage.propTypes = propTypes$3;
1427
1373
  LoginPage.defaultProps = defaultProps$3;
1428
1374
 
@@ -1525,7 +1471,6 @@ var propTypes$2 = {
1525
1471
  var defaultProps$2 = {
1526
1472
  statusCode: null
1527
1473
  };
1528
-
1529
1474
  var ErrorPage = function ErrorPage(_ref) {
1530
1475
  var statusCode = _ref.statusCode;
1531
1476
  return /*#__PURE__*/React__default["default"].createElement(GuestLayout, {
@@ -1538,47 +1483,44 @@ var ErrorPage = function ErrorPage(_ref) {
1538
1483
  className: "col-12 col-sm-8 col-md-6"
1539
1484
  }, /*#__PURE__*/React__default["default"].createElement("h1", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["title".concat(statusCode || 404)])), /*#__PURE__*/React__default["default"].createElement("p", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["description".concat(statusCode || 404)]))))));
1540
1485
  };
1541
-
1542
1486
  ErrorPage.propTypes = propTypes$2;
1543
1487
  ErrorPage.defaultProps = defaultProps$2;
1544
1488
 
1545
- var _excluded = ["path", "component", "exact"];
1546
-
1489
+ var _excluded$1 = ["path", "component", "exact"];
1547
1490
  var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1548
1491
  var route = _ref.route,
1549
- componentsManager = _ref.componentsManager,
1550
- _ref$pages = _ref.pages,
1551
- pages = _ref$pages === void 0 ? {} : _ref$pages;
1492
+ componentsManager = _ref.componentsManager,
1493
+ _ref$pages = _ref.pages,
1494
+ pages = _ref$pages === void 0 ? {} : _ref$pages;
1552
1495
  var resourceId = resource.id,
1553
- _resource$pages = resource.pages,
1554
- resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1555
- _resource$extraRoutes = resource.extraRoutes,
1556
- extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes; // Load custom pages from resource
1496
+ _resource$pages = resource.pages,
1497
+ resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1498
+ _resource$extraRoutes = resource.extraRoutes,
1499
+ extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes;
1557
1500
 
1501
+ // Load custom pages from resource
1558
1502
  var _ref2 = pages || {},
1559
- _ref2$index = _ref2.index,
1560
- indexPage = _ref2$index === void 0 ? null : _ref2$index,
1561
- _ref2$show = _ref2.show,
1562
- showPage = _ref2$show === void 0 ? null : _ref2$show,
1563
- _ref2$create = _ref2.create,
1564
- createPage = _ref2$create === void 0 ? null : _ref2$create,
1565
- _ref2$edit = _ref2.edit,
1566
- editPage = _ref2$edit === void 0 ? null : _ref2$edit,
1567
- _ref2$delete = _ref2["delete"],
1568
- deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1569
-
1503
+ _ref2$index = _ref2.index,
1504
+ indexPage = _ref2$index === void 0 ? null : _ref2$index,
1505
+ _ref2$show = _ref2.show,
1506
+ showPage = _ref2$show === void 0 ? null : _ref2$show,
1507
+ _ref2$create = _ref2.create,
1508
+ createPage = _ref2$create === void 0 ? null : _ref2$create,
1509
+ _ref2$edit = _ref2.edit,
1510
+ editPage = _ref2$edit === void 0 ? null : _ref2$edit,
1511
+ _ref2$delete = _ref2["delete"],
1512
+ deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1570
1513
  var _ref3 = resourcePages || {},
1571
- _ref3$index = _ref3.index,
1572
- resourceIndexPage = _ref3$index === void 0 ? null : _ref3$index,
1573
- _ref3$show = _ref3.show,
1574
- resourceShowPage = _ref3$show === void 0 ? null : _ref3$show,
1575
- _ref3$create = _ref3.create,
1576
- resourceCreatePage = _ref3$create === void 0 ? null : _ref3$create,
1577
- _ref3$edit = _ref3.edit,
1578
- resourceEditPage = _ref3$edit === void 0 ? null : _ref3$edit,
1579
- _ref3$delete = _ref3["delete"],
1580
- resourceDeletePage = _ref3$delete === void 0 ? null : _ref3$delete;
1581
-
1514
+ _ref3$index = _ref3.index,
1515
+ resourceIndexPage = _ref3$index === void 0 ? null : _ref3$index,
1516
+ _ref3$show = _ref3.show,
1517
+ resourceShowPage = _ref3$show === void 0 ? null : _ref3$show,
1518
+ _ref3$create = _ref3.create,
1519
+ resourceCreatePage = _ref3$create === void 0 ? null : _ref3$create,
1520
+ _ref3$edit = _ref3.edit,
1521
+ resourceEditPage = _ref3$edit === void 0 ? null : _ref3$edit,
1522
+ _ref3$delete = _ref3["delete"],
1523
+ resourceDeletePage = _ref3$delete === void 0 ? null : _ref3$delete;
1582
1524
  var ResourceIndexComponent = componentsManager.getComponent(resourceIndexPage === null || resourceIndexPage === void 0 ? void 0 : resourceIndexPage.component) || componentsManager.getComponent(indexPage === null || indexPage === void 0 ? void 0 : indexPage.component) || ResourceIndexPage;
1583
1525
  var ResourceShowComponent = componentsManager.getComponent(resourceShowPage === null || resourceShowPage === void 0 ? void 0 : resourceShowPage.component) || componentsManager.getComponent(showPage === null || showPage === void 0 ? void 0 : showPage.component) || ResourceShowPage;
1584
1526
  var ResourceCreateComponent = componentsManager.getComponent(resourceCreatePage === null || resourceCreatePage === void 0 ? void 0 : resourceCreatePage.component) || componentsManager.getComponent(createPage === null || createPage === void 0 ? void 0 : createPage.component) || ResourceCreatePage;
@@ -1629,11 +1571,10 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1629
1571
  })
1630
1572
  })].concat(_toConsumableArray__default["default"](extraRoutes.map(function (_ref4) {
1631
1573
  var path = _ref4.path,
1632
- component = _ref4.component,
1633
- _ref4$exact = _ref4.exact,
1634
- exact = _ref4$exact === void 0 ? true : _ref4$exact,
1635
- pageProps = _objectWithoutProperties__default["default"](_ref4, _excluded);
1636
-
1574
+ component = _ref4.component,
1575
+ _ref4$exact = _ref4.exact,
1576
+ exact = _ref4$exact === void 0 ? true : _ref4$exact,
1577
+ pageProps = _objectWithoutProperties__default["default"](_ref4, _excluded$1);
1637
1578
  var RouteComponent = componentsManager.getComponent(component);
1638
1579
  return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1639
1580
  key: "route-".concat(path),
@@ -1646,30 +1587,28 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1646
1587
  })));
1647
1588
  };
1648
1589
 
1590
+ var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1591
+ _excluded2 = ["path", "route", "component", "exact"];
1649
1592
  var propTypes$1 = {
1650
1593
  statusCode: core.PropTypes.statusCode
1651
1594
  };
1652
1595
  var defaultProps$1 = {
1653
1596
  statusCode: null
1654
1597
  };
1655
-
1656
1598
  var PanneauRoutes = function PanneauRoutes(_ref) {
1657
1599
  var initialStatusCode = _ref.statusCode;
1658
1600
  var routes = contexts.useRoutes();
1659
-
1660
1601
  var _useLocation = reactRouter.useLocation(),
1661
- pathname = _useLocation.pathname;
1662
-
1602
+ pathname = _useLocation.pathname;
1663
1603
  var _useState = React.useState({
1664
- statusCode: initialStatusCode,
1665
- pathname: pathname
1666
- }),
1667
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1668
- _useState2$ = _useState2[0],
1669
- statusCode = _useState2$.statusCode,
1670
- lastPathname = _useState2$.pathname,
1671
- setInitialRequest = _useState2[1];
1672
-
1604
+ statusCode: initialStatusCode,
1605
+ pathname: pathname
1606
+ }),
1607
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1608
+ _useState2$ = _useState2[0],
1609
+ statusCode = _useState2$.statusCode,
1610
+ lastPathname = _useState2$.pathname,
1611
+ setInitialRequest = _useState2[1];
1673
1612
  var user = auth.useUser();
1674
1613
  var route = contexts.useUrlGenerator();
1675
1614
  var resources = contexts.usePanneauResources();
@@ -1681,34 +1620,59 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1681
1620
  statusCode: null
1682
1621
  });
1683
1622
  }
1684
- }, [pathname, lastPathname]); // Custom Pages
1623
+ }, [pathname, lastPathname]);
1685
1624
 
1625
+ // Custom Pages
1686
1626
  var _usePanneau = contexts.usePanneau(),
1687
- _usePanneau$pages = _usePanneau.pages,
1688
- pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages;
1689
-
1627
+ _usePanneau$pages = _usePanneau.pages,
1628
+ pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages,
1629
+ routesDefinition = _usePanneau.routes;
1690
1630
  var _ref2 = pages || {},
1691
- _ref2$home = _ref2.home,
1692
- homePage = _ref2$home === void 0 ? null : _ref2$home,
1693
- _ref2$login = _ref2.login,
1694
- loginPage = _ref2$login === void 0 ? null : _ref2$login,
1695
- _ref2$account = _ref2.account,
1696
- accountPage = _ref2$account === void 0 ? null : _ref2$account,
1697
- _ref2$error = _ref2.error,
1698
- errorPage = _ref2$error === void 0 ? null : _ref2$error;
1699
-
1631
+ _ref2$home = _ref2.home,
1632
+ homePage = _ref2$home === void 0 ? null : _ref2$home,
1633
+ _ref2$login = _ref2.login,
1634
+ loginPage = _ref2$login === void 0 ? null : _ref2$login,
1635
+ _ref2$account = _ref2.account,
1636
+ accountPage = _ref2$account === void 0 ? null : _ref2$account,
1637
+ _ref2$error = _ref2.error,
1638
+ errorPage = _ref2$error === void 0 ? null : _ref2$error;
1639
+ _ref2.index;
1640
+ _ref2.show;
1641
+ _ref2.create;
1642
+ _ref2.edit;
1643
+ _ref2["delete"];
1644
+ var otherPages = _objectWithoutProperties__default["default"](_ref2, _excluded);
1645
+ var customRoutes = React.useMemo(function () {
1646
+ return [].concat(_toConsumableArray__default["default"](Object.keys(routesDefinition).filter(function (key) {
1647
+ return key.match(/^(resources\.|auth\.)/) === null && key !== 'home' && key !== 'account';
1648
+ }).filter(function (key) {
1649
+ var routeDef = routesDefinition[key];
1650
+ return isObject__default["default"](routeDef) && typeof routeDef.component !== 'undefined' && typeof routeDef.path !== 'undefined';
1651
+ }).map(function (key) {
1652
+ return routesDefinition[key];
1653
+ })), _toConsumableArray__default["default"](Object.keys(otherPages).map(function (key) {
1654
+ return otherPages[key];
1655
+ }).filter(function (_ref3) {
1656
+ var _ref3$path = _ref3.path,
1657
+ path = _ref3$path === void 0 ? null : _ref3$path,
1658
+ _ref3$route = _ref3.route,
1659
+ pageRoute = _ref3$route === void 0 ? null : _ref3$route;
1660
+ return path !== null || pageRoute !== null;
1661
+ })));
1662
+ }, [routesDefinition, otherPages]);
1700
1663
  var HomeComponent = componentsManager.getComponent(homePage === null || homePage === void 0 ? void 0 : homePage.component) || HomePage;
1701
1664
  var LoginComponent = componentsManager.getComponent(loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || LoginPage;
1702
1665
  var AccountComponent = componentsManager.getComponent(accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || AccountPage;
1703
- var ErrorComponent = componentsManager.getComponent(errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || ErrorPage; // If there is an error status code
1666
+ var ErrorComponent = componentsManager.getComponent(errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || ErrorPage;
1704
1667
 
1668
+ // If there is an error status code
1705
1669
  if (statusCode !== null) {
1706
1670
  return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1707
1671
  statusCode: statusCode
1708
1672
  });
1709
- } // If user is unauthenticated
1710
-
1673
+ }
1711
1674
 
1675
+ // If user is unauthenticated
1712
1676
  if (user === null) {
1713
1677
  return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1714
1678
  path: routes['auth.login'],
@@ -1721,17 +1685,16 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1721
1685
  replace: true
1722
1686
  })
1723
1687
  }));
1724
- } // Normal routes
1725
-
1688
+ }
1726
1689
 
1690
+ // Normal routes
1727
1691
  return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1728
1692
  path: routes.home,
1729
1693
  exact: true,
1730
1694
  element: /*#__PURE__*/React__default["default"].createElement(HomeComponent, null)
1731
1695
  }), resources.map(function (resource) {
1732
- var _ref3 = resource || {},
1733
- resourceId = _ref3.id;
1734
-
1696
+ var _ref4 = resource || {},
1697
+ resourceId = _ref4.id;
1735
1698
  return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1736
1699
  key: "resource-".concat(resourceId)
1737
1700
  }, createResourceRoutes(resource, {
@@ -1743,12 +1706,26 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1743
1706
  path: routes.account,
1744
1707
  exact: true,
1745
1708
  element: /*#__PURE__*/React__default["default"].createElement(AccountComponent, null)
1709
+ }), customRoutes.map(function (_ref5) {
1710
+ var _ref5$path = _ref5.path,
1711
+ path = _ref5$path === void 0 ? null : _ref5$path,
1712
+ _ref5$route = _ref5.route,
1713
+ pageRoute = _ref5$route === void 0 ? null : _ref5$route,
1714
+ component = _ref5.component,
1715
+ _ref5$exact = _ref5.exact,
1716
+ exact = _ref5$exact === void 0 ? true : _ref5$exact,
1717
+ props = _objectWithoutProperties__default["default"](_ref5, _excluded2);
1718
+ var PageComponent = componentsManager.getComponent(component);
1719
+ return PageComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1720
+ path: path || routes[pageRoute],
1721
+ exact: exact,
1722
+ element: /*#__PURE__*/React__default["default"].createElement(PageComponent, props)
1723
+ }) : null;
1746
1724
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1747
1725
  path: "*",
1748
1726
  element: /*#__PURE__*/React__default["default"].createElement(ErrorComponent, null)
1749
1727
  }));
1750
1728
  };
1751
-
1752
1729
  PanneauRoutes.propTypes = propTypes$1;
1753
1730
  PanneauRoutes.defaultProps = defaultProps$1;
1754
1731
 
@@ -1769,41 +1746,40 @@ var defaultProps = {
1769
1746
  uppy: null,
1770
1747
  statusCode: null
1771
1748
  };
1772
-
1773
1749
  var Container = function Container(_ref) {
1774
1750
  var definition = _ref.definition,
1775
- components = _ref.components,
1776
- user = _ref.user,
1777
- memoryRouter = _ref.memoryRouter,
1778
- baseUrl = _ref.baseUrl,
1779
- uppy = _ref.uppy,
1780
- statusCode = _ref.statusCode;
1781
- var _definition$intl = definition.intl;
1782
- _definition$intl = _definition$intl === void 0 ? {} : _definition$intl;
1783
- var _definition$intl$loca = _definition$intl.locale,
1784
- locale = _definition$intl$loca === void 0 ? 'en' : _definition$intl$loca,
1785
- _definition$intl$loca2 = _definition$intl.locales,
1786
- locales = _definition$intl$loca2 === void 0 ? [] : _definition$intl$loca2,
1787
- _definition$routes = definition.routes,
1788
- routes = _definition$routes === void 0 ? {} : _definition$routes,
1789
- _definition$settings = definition.settings;
1790
- _definition$settings = _definition$settings === void 0 ? {} : _definition$settings;
1791
- var _definition$settings$ = _definition$settings.memoryRouter,
1792
- usesMemoryRouter = _definition$settings$ === void 0 ? false : _definition$settings$;
1751
+ components = _ref.components,
1752
+ user = _ref.user,
1753
+ memoryRouter = _ref.memoryRouter,
1754
+ baseUrl = _ref.baseUrl,
1755
+ uppy = _ref.uppy,
1756
+ statusCode = _ref.statusCode;
1757
+ var _definition$intl = definition.intl,
1758
+ _definition$intl2 = _definition$intl === void 0 ? {} : _definition$intl,
1759
+ _definition$intl2$loc = _definition$intl2.locale,
1760
+ locale = _definition$intl2$loc === void 0 ? 'en' : _definition$intl2$loc,
1761
+ _definition$intl2$loc2 = _definition$intl2.locales,
1762
+ locales = _definition$intl2$loc2 === void 0 ? [] : _definition$intl2$loc2,
1763
+ _definition$routes = definition.routes,
1764
+ routes = _definition$routes === void 0 ? {} : _definition$routes,
1765
+ _definition$settings = definition.settings,
1766
+ _definition$settings2 = _definition$settings === void 0 ? {} : _definition$settings,
1767
+ _definition$settings3 = _definition$settings2.memoryRouter,
1768
+ usesMemoryRouter = _definition$settings3 === void 0 ? false : _definition$settings3;
1793
1769
  var Router = memoryRouter || usesMemoryRouter ? reactRouter.MemoryRouter : reactRouterDom.BrowserRouter;
1794
1770
  var extraMessages = React.useMemo(function () {
1795
- var _definition$intl2 = definition.intl;
1796
- _definition$intl2 = _definition$intl2 === void 0 ? {} : _definition$intl2;
1797
- var _definition$intl2$mes = _definition$intl2.messages,
1798
- messages = _definition$intl2$mes === void 0 ? null : _definition$intl2$mes,
1799
- _definition$resources = definition.resources,
1800
- resources = _definition$resources === void 0 ? [] : _definition$resources;
1771
+ var _definition$intl3 = definition.intl,
1772
+ _definition$intl4 = _definition$intl3 === void 0 ? {} : _definition$intl3,
1773
+ _definition$intl4$mes = _definition$intl4.messages,
1774
+ messages = _definition$intl4$mes === void 0 ? null : _definition$intl4$mes,
1775
+ _definition$resources = definition.resources,
1776
+ resources = _definition$resources === void 0 ? [] : _definition$resources;
1801
1777
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, messages), resources.reduce(function (allMessages, _ref2) {
1802
1778
  var id = _ref2.id,
1803
- _ref2$intl = _ref2.intl;
1804
- _ref2$intl = _ref2$intl === void 0 ? {} : _ref2$intl;
1805
- var _ref2$intl$messages = _ref2$intl.messages,
1806
- resourceMessages = _ref2$intl$messages === void 0 ? {} : _ref2$intl$messages;
1779
+ _ref2$intl = _ref2.intl,
1780
+ _ref2$intl2 = _ref2$intl === void 0 ? {} : _ref2$intl,
1781
+ _ref2$intl2$messages = _ref2$intl2.messages,
1782
+ resourceMessages = _ref2$intl2$messages === void 0 ? {} : _ref2$intl2$messages;
1807
1783
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, allMessages), Object.keys(resourceMessages).reduce(function (allResourceMessages, key) {
1808
1784
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, allResourceMessages), {}, _defineProperty__default["default"]({}, "resources.".concat(id, ".").concat(key), resourceMessages[key]));
1809
1785
  }, {}));
@@ -1835,7 +1811,6 @@ var Container = function Container(_ref) {
1835
1811
  statusCode: statusCode
1836
1812
  }))))))))))))));
1837
1813
  };
1838
-
1839
1814
  Container.propTypes = propTypes;
1840
1815
  Container.defaultProps = defaultProps;
1841
1816