@panneau/app 1.1.0 → 1.1.1

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,20 +18,17 @@ 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 _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
22
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
23
21
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
24
- var isObject = require('lodash/isObject');
22
+ var utils = require('@panneau/core/utils');
23
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
25
24
  var queryString = require('query-string');
26
25
  var reactIntl = require('react-intl');
27
26
  var hooks = require('@panneau/core/hooks');
28
- var utils = require('@panneau/core/utils');
29
27
  var classNames = require('classnames');
30
28
  var Button = require('@panneau/element-button');
31
29
  var Form = require('@panneau/element-form');
32
- var isArray = require('lodash/isArray');
33
- var Menu = require('@panneau/element-menu');
34
30
  var Navbar = require('@panneau/element-navbar');
31
+ var Menu = require('@panneau/element-menu');
35
32
  var Label = require('@panneau/element-label');
36
33
  var isString = require('lodash/isString');
37
34
  var Alert = require('@panneau/element-alert');
@@ -53,16 +50,13 @@ var FieldsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FieldsProvider)
53
50
  var FiltersProvider__default = /*#__PURE__*/_interopDefaultLegacy(FiltersProvider);
54
51
  var FormsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FormsProvider);
55
52
  var ListsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ListsProvider);
56
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
57
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
58
53
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
59
- var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
54
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
60
55
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
61
56
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
62
57
  var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
63
- var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
64
- var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
65
58
  var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
59
+ var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
66
60
  var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
67
61
  var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
68
62
  var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
@@ -71,8 +65,8 @@ var Pagination__default = /*#__PURE__*/_interopDefaultLegacy(Pagination);
71
65
  var _toPropertyKey__default = /*#__PURE__*/_interopDefaultLegacy(_toPropertyKey);
72
66
  var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
73
67
 
74
- var _excluded$6 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
75
- var propTypes$m = {
68
+ var _excluded$5 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
69
+ var propTypes$n = {
76
70
  resource: core.PropTypes.resource.isRequired,
77
71
  action: PropTypes__default["default"].string,
78
72
  previous: PropTypes__default["default"].string,
@@ -86,7 +80,7 @@ var propTypes$m = {
86
80
  errors: PropTypes__default["default"].objectOf(PropTypes__default["default"].arrayOf(PropTypes__default["default"].string)),
87
81
  className: PropTypes__default["default"].string
88
82
  };
89
- var defaultProps$m = {
83
+ var defaultProps$n = {
90
84
  action: null,
91
85
  previous: null,
92
86
  status: null,
@@ -106,7 +100,7 @@ var DeleteForm = function DeleteForm(_ref) {
106
100
  _ref.errors;
107
101
  var generalError = _ref.generalError,
108
102
  className = _ref.className,
109
- props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
103
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
110
104
  var _ref2 = value || {},
111
105
  _ref2$id = _ref2.id,
112
106
  id = _ref2$id === void 0 ? null : _ref2$id;
@@ -177,11 +171,11 @@ var DeleteForm = function DeleteForm(_ref) {
177
171
  }]
178
172
  })))));
179
173
  };
180
- DeleteForm.propTypes = propTypes$m;
181
- DeleteForm.defaultProps = defaultProps$m;
174
+ DeleteForm.propTypes = propTypes$n;
175
+ DeleteForm.defaultProps = defaultProps$n;
182
176
 
183
- var _excluded$5 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
184
- var propTypes$l = {
177
+ var _excluded$4 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
178
+ var propTypes$m = {
185
179
  component: PropTypes__default["default"].string,
186
180
  resource: core.PropTypes.resource.isRequired,
187
181
  item: PropTypes__default["default"].object,
@@ -190,7 +184,7 @@ var propTypes$l = {
190
184
  onSuccess: PropTypes__default["default"].func,
191
185
  isDelete: PropTypes__default["default"].bool
192
186
  };
193
- var defaultProps$l = {
187
+ var defaultProps$m = {
194
188
  component: null,
195
189
  item: null,
196
190
  type: null,
@@ -204,7 +198,7 @@ var ResourceForm = function ResourceForm(_ref) {
204
198
  item = _ref.item,
205
199
  type = _ref.type,
206
200
  isDelete = _ref.isDelete,
207
- props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
201
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
208
202
  var locales = contexts.useLocales();
209
203
  var FormComponents = contexts.useFormsComponents();
210
204
  var _resource$fields = resource.fields,
@@ -332,15 +326,15 @@ var ResourceForm = function ResourceForm(_ref) {
332
326
  onChange: setValue
333
327
  })));
334
328
  };
335
- ResourceForm.propTypes = propTypes$l;
336
- ResourceForm.defaultProps = defaultProps$l;
329
+ ResourceForm.propTypes = propTypes$m;
330
+ ResourceForm.defaultProps = defaultProps$m;
337
331
 
338
- var propTypes$k = {
332
+ var propTypes$l = {
339
333
  className: PropTypes__default["default"].string,
340
334
  itemClassName: PropTypes__default["default"].string,
341
335
  linkClassName: PropTypes__default["default"].string
342
336
  };
343
- var defaultProps$k = {
337
+ var defaultProps$l = {
344
338
  className: null,
345
339
  itemClassName: null,
346
340
  linkClassName: null
@@ -366,7 +360,7 @@ var AccountMenu = function AccountMenu(_ref) {
366
360
  "value": "Account"
367
361
  }]
368
362
  }),
369
- href: route('account'),
363
+ href: route('panneau.account'),
370
364
  dropdown: [
371
365
  // {
372
366
  // label: (
@@ -375,7 +369,7 @@ var AccountMenu = function AccountMenu(_ref) {
375
369
  // description="Menu label"
376
370
  // />
377
371
  // ),
378
- // href: route('account'),
372
+ // href: route('panneau.account'),
379
373
  // },
380
374
  {
381
375
  label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
@@ -396,7 +390,7 @@ var AccountMenu = function AccountMenu(_ref) {
396
390
  "value": "Login"
397
391
  }]
398
392
  }),
399
- href: route('auth.login')
393
+ href: route('login')
400
394
  }];
401
395
  }, [user, route, onClickLogout]);
402
396
  return items !== null ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
@@ -407,15 +401,15 @@ var AccountMenu = function AccountMenu(_ref) {
407
401
  dropdownAlign: "end"
408
402
  }) : null;
409
403
  };
410
- AccountMenu.propTypes = propTypes$k;
411
- AccountMenu.defaultProps = defaultProps$k;
404
+ AccountMenu.propTypes = propTypes$l;
405
+ AccountMenu.defaultProps = defaultProps$l;
412
406
 
413
- var propTypes$j = {
407
+ var propTypes$k = {
414
408
  className: PropTypes__default["default"].string,
415
409
  itemClassName: PropTypes__default["default"].string,
416
410
  linkClassName: PropTypes__default["default"].string
417
411
  };
418
- var defaultProps$j = {
412
+ var defaultProps$k = {
419
413
  className: null,
420
414
  itemClassName: null,
421
415
  linkClassName: null
@@ -452,77 +446,42 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
452
446
  linkClassName: linkClassName
453
447
  });
454
448
  };
455
- ResourcesMenu.propTypes = propTypes$j;
456
- ResourcesMenu.defaultProps = defaultProps$j;
449
+ ResourcesMenu.propTypes = propTypes$k;
450
+ ResourcesMenu.defaultProps = defaultProps$k;
457
451
 
458
- var propTypes$i = {};
459
- var defaultProps$i = {};
452
+ /* eslint-disable react/jsx-props-no-spreading */
453
+ var propTypes$j = {};
454
+ var defaultProps$j = {};
460
455
  var MainNavbar = function MainNavbar(props) {
461
456
  var _usePanneau = contexts.usePanneau(),
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;
457
+ name = _usePanneau.name;
470
458
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
471
459
  background = _usePanneauColorSchem.background;
472
460
  var route = contexts.useUrlGenerator();
473
461
  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]);
511
462
  return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], Object.assign({
512
463
  theme: background
513
464
  }, props), name !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
514
465
  to: route('home'),
515
466
  className: "navbar-brand"
516
- }, name) : null, items);
467
+ }, name) : null, user !== null ? /*#__PURE__*/React__default["default"].createElement(ResourcesMenu, {
468
+ className: "navbar-nav ml-4",
469
+ itemClassName: "nav-item",
470
+ linkClassName: "nav-link"
471
+ }) : null, /*#__PURE__*/React__default["default"].createElement(AccountMenu, {
472
+ className: "navbar-nav ms-auto",
473
+ itemClassName: "nav-item",
474
+ linkClassName: "nav-link"
475
+ }));
517
476
  };
518
- MainNavbar.propTypes = propTypes$i;
519
- MainNavbar.defaultProps = defaultProps$i;
477
+ MainNavbar.propTypes = propTypes$j;
478
+ MainNavbar.defaultProps = defaultProps$j;
520
479
 
521
- var propTypes$h = {
480
+ var propTypes$i = {
522
481
  children: PropTypes__default["default"].node.isRequired,
523
482
  fullscreen: PropTypes__default["default"].bool
524
483
  };
525
- var defaultProps$h = {
484
+ var defaultProps$i = {
526
485
  fullscreen: false
527
486
  };
528
487
  var MainLayout = function MainLayout(_ref) {
@@ -542,17 +501,17 @@ var MainLayout = function MainLayout(_ref) {
542
501
  }, _defineProperty__default["default"](_ref2, "bg-".concat(background), background !== null), _defineProperty__default["default"](_ref2, "text-".concat(text), text !== null), _ref2)])
543
502
  }, children));
544
503
  };
545
- MainLayout.propTypes = propTypes$h;
546
- MainLayout.defaultProps = defaultProps$h;
504
+ MainLayout.propTypes = propTypes$i;
505
+ MainLayout.defaultProps = defaultProps$i;
547
506
 
548
- var propTypes$g = {
507
+ var propTypes$h = {
549
508
  title: core.PropTypes.label,
550
509
  actions: PropTypes__default["default"].node,
551
510
  small: PropTypes__default["default"].bool,
552
511
  className: PropTypes__default["default"].string,
553
512
  children: PropTypes__default["default"].node
554
513
  };
555
- var defaultProps$g = {
514
+ var defaultProps$h = {
556
515
  title: null,
557
516
  actions: null,
558
517
  small: false,
@@ -590,22 +549,22 @@ var PageHeader = function PageHeader(_ref) {
590
549
  className: "col-12 col-md-8 col-lg-7"
591
550
  }, inner)) : inner), children);
592
551
  };
593
- PageHeader.propTypes = propTypes$g;
594
- PageHeader.defaultProps = defaultProps$g;
552
+ PageHeader.propTypes = propTypes$h;
553
+ PageHeader.defaultProps = defaultProps$h;
595
554
 
596
- var propTypes$f = {
555
+ var propTypes$g = {
597
556
  resource: core.PropTypes.resource.isRequired
598
557
  };
599
- var defaultProps$f = {};
558
+ var defaultProps$g = {};
600
559
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
601
560
  var resource = _ref.resource;
602
- var navigate = reactRouter.useNavigate();
561
+ var history = reactRouter.useHistory();
603
562
  var _useLocation = reactRouter.useLocation(),
604
563
  search = _useLocation.search;
605
564
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
606
565
  var onSuccess = React.useCallback(function () {
607
- navigate("".concat(resourceRoute('index'), "?created=true"));
608
- }, [navigate, resourceRoute]);
566
+ history.push("".concat(resourceRoute('index'), "?created=true"));
567
+ }, [history, resourceRoute]);
609
568
  var _useMemo = React.useMemo(function () {
610
569
  return queryString.parse(search);
611
570
  }, [search]),
@@ -639,26 +598,26 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
639
598
  onSuccess: onSuccess
640
599
  }))))));
641
600
  };
642
- ResourceCreatePage.propTypes = propTypes$f;
643
- ResourceCreatePage.defaultProps = defaultProps$f;
601
+ ResourceCreatePage.propTypes = propTypes$g;
602
+ ResourceCreatePage.defaultProps = defaultProps$g;
644
603
 
645
604
  // import Button from '../buttons/Button';
646
605
 
647
- var propTypes$e = {
648
- resource: core.PropTypes.resource.isRequired
606
+ var propTypes$f = {
607
+ resource: core.PropTypes.resource.isRequired,
608
+ itemId: PropTypes__default["default"].string.isRequired
649
609
  };
650
- var defaultProps$e = {};
610
+ var defaultProps$f = {};
651
611
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
652
- var resource = _ref.resource;
653
- var _useParams = reactRouter.useParams(),
654
- itemId = _useParams.id;
655
- var navigate = reactRouter.useNavigate();
612
+ var resource = _ref.resource,
613
+ itemId = _ref.itemId;
614
+ var history = reactRouter.useHistory();
656
615
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
657
616
  var _useResourceItem = data.useResourceItem(resource, itemId),
658
617
  item = _useResourceItem.item;
659
618
  var onSuccess = React.useCallback(function () {
660
- return navigate("".concat(resourceRoute('index'), "?deleted=true"));
661
- }, [navigate, resourceRoute]);
619
+ return history.push("".concat(resourceRoute('index'), "?deleted=true"));
620
+ }, [history, resourceRoute]);
662
621
 
663
622
  // Navigate back
664
623
  var _ref2 = history || {},
@@ -697,19 +656,19 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
697
656
  isDelete: true
698
657
  }) : null)))));
699
658
  };
700
- ResourceDeletePage.propTypes = propTypes$e;
701
- ResourceDeletePage.defaultProps = defaultProps$e;
659
+ ResourceDeletePage.propTypes = propTypes$f;
660
+ ResourceDeletePage.defaultProps = defaultProps$f;
702
661
 
703
662
  // import Button from '../buttons/Button';
704
663
 
705
- var propTypes$d = {
706
- resource: core.PropTypes.resource.isRequired
664
+ var propTypes$e = {
665
+ resource: core.PropTypes.resource.isRequired,
666
+ itemId: PropTypes__default["default"].string.isRequired
707
667
  };
708
- var defaultProps$d = {};
668
+ var defaultProps$e = {};
709
669
  var ResourceEditPage = function ResourceEditPage(_ref) {
710
- var resource = _ref.resource;
711
- var _useParams = reactRouter.useParams(),
712
- itemId = _useParams.id;
670
+ var resource = _ref.resource,
671
+ itemId = _ref.itemId;
713
672
  var _useResourceItem = data.useResourceItem(resource, itemId),
714
673
  item = _useResourceItem.item;
715
674
  var _ref2 = item || {},
@@ -754,14 +713,14 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
754
713
  onSuccess: onSuccess
755
714
  }) : null)))));
756
715
  };
757
- ResourceEditPage.propTypes = propTypes$d;
758
- ResourceEditPage.defaultProps = defaultProps$d;
716
+ ResourceEditPage.propTypes = propTypes$e;
717
+ ResourceEditPage.defaultProps = defaultProps$e;
759
718
 
760
- var propTypes$c = {
719
+ var propTypes$d = {
761
720
  resource: core.PropTypes.resource.isRequired,
762
721
  className: PropTypes__default["default"].string
763
722
  };
764
- var defaultProps$c = {
723
+ var defaultProps$d = {
765
724
  className: null
766
725
  };
767
726
  var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
@@ -778,9 +737,10 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
778
737
  setDropdownOpened = _useState2[1];
779
738
  var onClickDropdown = React.useCallback(function (e) {
780
739
  e.preventDefault();
781
- e.stopPropagation();
782
- setDropdownOpened(!dropdownOpened);
783
- }, [setDropdownOpened, dropdownOpened]);
740
+ setDropdownOpened(function (opened) {
741
+ return !opened;
742
+ });
743
+ }, [setDropdownOpened]);
784
744
  var finalTypes = types !== null ? types.filter(function (_ref2) {
785
745
  var _ref2$settings = _ref2.settings,
786
746
  _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
@@ -790,10 +750,8 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
790
750
  }) : null;
791
751
  var hasMultipleTypes = finalTypes !== null && finalTypes.length > 1;
792
752
  var onDropdownClickOutside = React.useCallback(function () {
793
- if (dropdownOpened) {
794
- setDropdownOpened(false);
795
- }
796
- }, [setDropdownOpened, dropdownOpened]);
753
+ setDropdownOpened(false);
754
+ }, [setDropdownOpened]);
797
755
  var button = /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
798
756
  href: !hasMultipleTypes ? "".concat(resourceRoute('create')).concat(finalTypes !== null && finalTypes.length === 1 ? "?type=".concat(finalTypes[0].id) : '') : '#',
799
757
  size: "lg",
@@ -830,11 +788,11 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
830
788
  onClickOutside: onDropdownClickOutside
831
789
  })) : button;
832
790
  };
833
- ResourceCreateButtom.propTypes = propTypes$c;
834
- ResourceCreateButtom.defaultProps = defaultProps$c;
791
+ ResourceCreateButtom.propTypes = propTypes$d;
792
+ ResourceCreateButtom.defaultProps = defaultProps$d;
835
793
 
836
- var _excluded$4 = ["component", "name", "groupLabel"];
837
- var propTypes$b = {
794
+ var _excluded$3 = ["component", "name", "groupLabel"];
795
+ var propTypes$c = {
838
796
  filters: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
839
797
  id: PropTypes__default["default"].string.isRequired,
840
798
  component: PropTypes__default["default"].string.isRequired
@@ -849,7 +807,7 @@ var propTypes$b = {
849
807
  // eslint-disable-line react/forbid-prop-types
850
808
  className: PropTypes__default["default"].string
851
809
  };
852
- var defaultProps$b = {
810
+ var defaultProps$c = {
853
811
  filters: [],
854
812
  value: null,
855
813
  onChange: null,
@@ -898,7 +856,7 @@ var ResourceFilters = function ResourceFilters(_ref) {
898
856
  var component = _ref3.component,
899
857
  name = _ref3.name,
900
858
  groupLabel = _ref3.groupLabel,
901
- filterProps = _objectWithoutProperties__default["default"](_ref3, _excluded$4);
859
+ filterProps = _objectWithoutProperties__default["default"](_ref3, _excluded$3);
902
860
  var FilterComponent = utils.getComponentFromName(component, FilterComponents, null);
903
861
  var filterValue = value !== null && value[name] ? value[name] : null;
904
862
  var onFilterChange = React.useCallback(function (newFilterValue) {
@@ -930,12 +888,12 @@ var ResourceFilters = function ResourceFilters(_ref) {
930
888
  icon: freeSolidSvgIcons.faUndo
931
889
  })) : null);
932
890
  };
933
- ResourceFilters.propTypes = propTypes$b;
934
- ResourceFilters.defaultProps = defaultProps$b;
891
+ ResourceFilters.propTypes = propTypes$c;
892
+ ResourceFilters.defaultProps = defaultProps$c;
935
893
 
936
- var _excluded$3 = ["component", "showPagination", "filters"],
894
+ var _excluded$2 = ["component", "showPagination", "filters"],
937
895
  _excluded2$1 = ["page"];
938
- var propTypes$a = {
896
+ var propTypes$b = {
939
897
  resource: core.PropTypes.resource.isRequired,
940
898
  query: PropTypes__default["default"].object,
941
899
  // eslint-disable-line react/forbid-prop-types
@@ -947,7 +905,7 @@ var propTypes$a = {
947
905
  onQueryChange: PropTypes__default["default"].func,
948
906
  onQueryReset: PropTypes__default["default"].func
949
907
  };
950
- var defaultProps$a = {
908
+ var defaultProps$b = {
951
909
  query: null,
952
910
  paginated: true,
953
911
  component: null,
@@ -971,7 +929,7 @@ var ResourceItemsList = function ResourceItemsList(_ref) {
971
929
  showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
972
930
  _resource$index2$filt = _resource$index2.filters,
973
931
  filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt,
974
- listProps = _objectWithoutProperties__default["default"](_resource$index2, _excluded$3);
932
+ listProps = _objectWithoutProperties__default["default"](_resource$index2, _excluded$2);
975
933
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
976
934
  _usePanneauColorSchem2 = _usePanneauColorSchem.background,
977
935
  theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
@@ -1021,16 +979,16 @@ var ResourceItemsList = function ResourceItemsList(_ref) {
1021
979
  className: "mt-4 mb-1"
1022
980
  }) : null);
1023
981
  };
1024
- ResourceItemsList.propTypes = propTypes$a;
1025
- ResourceItemsList.defaultProps = defaultProps$a;
982
+ ResourceItemsList.propTypes = propTypes$b;
983
+ ResourceItemsList.defaultProps = defaultProps$b;
1026
984
 
1027
- var _excluded$2 = ["id", "component"];
1028
- var propTypes$9 = {
985
+ var _excluded$1 = ["id", "component"];
986
+ var propTypes$a = {
1029
987
  resource: core.PropTypes.resource.isRequired,
1030
988
  defaultActions: PropTypes__default["default"].arrayOf(PropTypes__default["default"].object) // eslint-disable-line react/forbid-prop-types
1031
989
  };
1032
990
 
1033
- var defaultProps$9 = {
991
+ var defaultProps$a = {
1034
992
  defaultActions: ['create']
1035
993
  };
1036
994
  var ResourceIndexPage = function ResourceIndexPage(_ref) {
@@ -1065,7 +1023,7 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1065
1023
  var componentsManager = contexts.useComponentsManager();
1066
1024
  var _useLocation = reactRouter.useLocation(),
1067
1025
  search = _useLocation.search;
1068
- var navigate = reactRouter.useNavigate();
1026
+ var history = reactRouter.useHistory();
1069
1027
  var query = React.useMemo(function () {
1070
1028
  return queryString.parse(search);
1071
1029
  }, [search]);
@@ -1084,21 +1042,19 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1084
1042
  var value = submitQuery[key];
1085
1043
  return value !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentQuery), {}, _defineProperty__default["default"]({}, key, value)) : currentQuery;
1086
1044
  }, null) : null;
1087
- navigate("".concat(url).concat(newQuery !== null ? "?".concat(queryString.stringify(newQuery, {
1045
+ history.push("".concat(url).concat(newQuery !== null ? "?".concat(queryString.stringify(newQuery, {
1088
1046
  arrayFormat: 'bracket'
1089
1047
  })) : ''));
1090
- }, [navigate, url, query, paginated]);
1048
+ }, [history, url, query, paginated]);
1091
1049
  var onQueryReset = React.useCallback(function () {
1092
1050
  var queryString$1 = queryString.stringify(null, {
1093
1051
  arrayFormat: 'bracket'
1094
1052
  });
1095
- navigate("".concat(url, "?").concat(queryString$1));
1096
- }, [navigate, url, paginated]);
1053
+ history.push("".concat(url, "?").concat(queryString$1));
1054
+ }, [history, url, paginated]);
1097
1055
  var onClickCloseAlert = React.useCallback(function () {
1098
- navigate(url, {
1099
- replace: true
1100
- });
1101
- }, [navigate, url]);
1056
+ history.replace(url);
1057
+ }, [history, url]);
1102
1058
  return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1103
1059
  resource: resource
1104
1060
  }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
@@ -1109,7 +1065,7 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1109
1065
  var id = _ref5.id,
1110
1066
  _ref5$component = _ref5.component,
1111
1067
  component = _ref5$component === void 0 ? Button__default["default"] : _ref5$component,
1112
- actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$2);
1068
+ actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$1);
1113
1069
  var ActionComponent = isString__default["default"](component) ? componentsManager.getComponent(component) : component;
1114
1070
  return ActionComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ActionComponent, Object.assign({
1115
1071
  key: "action-".concat(id)
@@ -1156,13 +1112,13 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
1156
1112
  onQueryReset: onQueryReset
1157
1113
  }))));
1158
1114
  };
1159
- ResourceIndexPage.propTypes = propTypes$9;
1160
- ResourceIndexPage.defaultProps = defaultProps$9;
1115
+ ResourceIndexPage.propTypes = propTypes$a;
1116
+ ResourceIndexPage.defaultProps = defaultProps$a;
1161
1117
 
1162
- var propTypes$8 = {
1118
+ var propTypes$9 = {
1163
1119
  resource: core.PropTypes.resource.isRequired
1164
1120
  };
1165
- var defaultProps$8 = {};
1121
+ var defaultProps$9 = {};
1166
1122
  var ResourceShowPage = function ResourceShowPage(_ref) {
1167
1123
  var resource = _ref.resource;
1168
1124
  return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
@@ -1173,12 +1129,12 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
1173
1129
  className: "container-sm"
1174
1130
  }, "Show page")));
1175
1131
  };
1176
- ResourceShowPage.propTypes = propTypes$8;
1177
- ResourceShowPage.defaultProps = defaultProps$8;
1132
+ ResourceShowPage.propTypes = propTypes$9;
1133
+ ResourceShowPage.defaultProps = defaultProps$9;
1178
1134
 
1179
1135
  /* eslint-disable react/jsx-props-no-spreading */
1180
- var propTypes$7 = {};
1181
- var defaultProps$7 = {};
1136
+ var propTypes$8 = {};
1137
+ var defaultProps$8 = {};
1182
1138
  var HomePage = function HomePage() {
1183
1139
  var route = contexts.useUrlGenerator();
1184
1140
  var resources = contexts.usePanneauResources();
@@ -1214,26 +1170,26 @@ var HomePage = function HomePage() {
1214
1170
  }));
1215
1171
  })));
1216
1172
  };
1217
- HomePage.propTypes = propTypes$7;
1218
- HomePage.defaultProps = defaultProps$7;
1173
+ HomePage.propTypes = propTypes$8;
1174
+ HomePage.defaultProps = defaultProps$8;
1219
1175
 
1220
- var propTypes$6 = {};
1221
- var defaultProps$6 = {};
1176
+ var propTypes$7 = {};
1177
+ var defaultProps$7 = {};
1222
1178
  var AccountPage = function AccountPage() {
1223
1179
  return /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement("div", {
1224
1180
  className: "container-sm py-4"
1225
1181
  }, "Account page"));
1226
1182
  };
1227
- AccountPage.propTypes = propTypes$6;
1228
- AccountPage.defaultProps = defaultProps$6;
1183
+ AccountPage.propTypes = propTypes$7;
1184
+ AccountPage.defaultProps = defaultProps$7;
1229
1185
 
1230
1186
  /* eslint-disable react/jsx-props-no-spreading */
1231
- var propTypes$5 = {
1187
+ var propTypes$6 = {
1232
1188
  fields: core.PropTypes.fields,
1233
1189
  className: PropTypes__default["default"].string,
1234
1190
  onSuccess: PropTypes__default["default"].func
1235
1191
  };
1236
- var defaultProps$5 = {
1192
+ var defaultProps$6 = {
1237
1193
  fields: [{
1238
1194
  name: 'email',
1239
1195
  type: 'email',
@@ -1305,14 +1261,14 @@ var LoginForm = function LoginForm(_ref) {
1305
1261
  })
1306
1262
  });
1307
1263
  };
1308
- LoginForm.propTypes = propTypes$5;
1309
- LoginForm.defaultProps = defaultProps$5;
1264
+ LoginForm.propTypes = propTypes$6;
1265
+ LoginForm.defaultProps = defaultProps$6;
1310
1266
 
1311
- var propTypes$4 = {
1267
+ var propTypes$5 = {
1312
1268
  children: PropTypes__default["default"].node.isRequired,
1313
1269
  fullscreen: PropTypes__default["default"].bool
1314
1270
  };
1315
- var defaultProps$4 = {
1271
+ var defaultProps$5 = {
1316
1272
  fullscreen: false
1317
1273
  };
1318
1274
  var GuestLayout = function GuestLayout(_ref) {
@@ -1338,12 +1294,12 @@ var GuestLayout = function GuestLayout(_ref) {
1338
1294
  })
1339
1295
  }, children)));
1340
1296
  };
1341
- GuestLayout.propTypes = propTypes$4;
1342
- GuestLayout.defaultProps = defaultProps$4;
1297
+ GuestLayout.propTypes = propTypes$5;
1298
+ GuestLayout.defaultProps = defaultProps$5;
1343
1299
 
1344
1300
  /* eslint-disable react/jsx-props-no-spreading */
1345
- var propTypes$3 = {};
1346
- var defaultProps$3 = {};
1301
+ var propTypes$4 = {};
1302
+ var defaultProps$4 = {};
1347
1303
  var LoginPage = function LoginPage() {
1348
1304
  var route = contexts.useUrlGenerator();
1349
1305
  var onSuccess = React.useCallback(function () {
@@ -1369,8 +1325,8 @@ var LoginPage = function LoginPage() {
1369
1325
  onSuccess: onSuccess
1370
1326
  })))));
1371
1327
  };
1372
- LoginPage.propTypes = propTypes$3;
1373
- LoginPage.defaultProps = defaultProps$3;
1328
+ LoginPage.propTypes = propTypes$4;
1329
+ LoginPage.defaultProps = defaultProps$4;
1374
1330
 
1375
1331
  var messages = reactIntl.defineMessages({
1376
1332
  metaTitle401: {
@@ -1465,10 +1421,10 @@ var messages = reactIntl.defineMessages({
1465
1421
  }]
1466
1422
  }
1467
1423
  });
1468
- var propTypes$2 = {
1424
+ var propTypes$3 = {
1469
1425
  statusCode: core.PropTypes.statusCode
1470
1426
  };
1471
- var defaultProps$2 = {
1427
+ var defaultProps$3 = {
1472
1428
  statusCode: null
1473
1429
  };
1474
1430
  var ErrorPage = function ErrorPage(_ref) {
@@ -1483,20 +1439,37 @@ var ErrorPage = function ErrorPage(_ref) {
1483
1439
  className: "col-12 col-sm-8 col-md-6"
1484
1440
  }, /*#__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)]))))));
1485
1441
  };
1486
- ErrorPage.propTypes = propTypes$2;
1487
- ErrorPage.defaultProps = defaultProps$2;
1442
+ ErrorPage.propTypes = propTypes$3;
1443
+ ErrorPage.defaultProps = defaultProps$3;
1444
+
1445
+ var basePages = /*#__PURE__*/Object.freeze({
1446
+ __proto__: null,
1447
+ ResourceCreate: ResourceCreatePage,
1448
+ ResourceDelete: ResourceDeletePage,
1449
+ ResourceEdit: ResourceEditPage,
1450
+ ResourceIndex: ResourceIndexPage,
1451
+ ResourceShow: ResourceShowPage,
1452
+ Home: HomePage,
1453
+ Account: AccountPage,
1454
+ Login: LoginPage,
1455
+ Error: ErrorPage
1456
+ });
1488
1457
 
1489
- var _excluded$1 = ["path", "component", "exact"];
1490
- var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1491
- var route = _ref.route,
1492
- componentsManager = _ref.componentsManager,
1493
- _ref$pages = _ref.pages,
1494
- pages = _ref$pages === void 0 ? {} : _ref$pages;
1458
+ var _excluded = ["path", "component", "exact"],
1459
+ _excluded2 = ["id"];
1460
+ var propTypes$2 = {
1461
+ resource: core.PropTypes.resource.isRequired
1462
+ };
1463
+ var defaultProps$2 = {};
1464
+ var ResourceRoutes = function ResourceRoutes(_ref) {
1465
+ var resource = _ref.resource;
1495
1466
  var resourceId = resource.id,
1496
1467
  _resource$pages = resource.pages,
1497
- resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1468
+ pages = _resource$pages === void 0 ? {} : _resource$pages,
1498
1469
  _resource$extraRoutes = resource.extraRoutes,
1499
1470
  extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes;
1471
+ var route = contexts.useUrlGenerator();
1472
+ var componentsManager = contexts.useComponentsManager();
1500
1473
 
1501
1474
  // Load custom pages from resource
1502
1475
  var _ref2 = pages || {},
@@ -1510,85 +1483,96 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1510
1483
  editPage = _ref2$edit === void 0 ? null : _ref2$edit,
1511
1484
  _ref2$delete = _ref2["delete"],
1512
1485
  deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1513
- var _ref3 = resourcePages || {},
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;
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;
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;
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;
1527
- var ResourceEditComponent = componentsManager.getComponent(resourceEditPage === null || resourceEditPage === void 0 ? void 0 : resourceEditPage.component) || componentsManager.getComponent(editPage === null || editPage === void 0 ? void 0 : editPage.component) || ResourceEditPage;
1528
- var ResourceDeleteComponent = componentsManager.getComponent(resourceDeletePage === null || resourceDeletePage === void 0 ? void 0 : resourceDeletePage.component) || componentsManager.getComponent(deletePage === null || deletePage === void 0 ? void 0 : deletePage.component) || ResourceDeletePage;
1529
- return [/*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1486
+ var ResourceIndexComponent = indexPage !== null && typeof indexPage.component !== 'undefined' ? componentsManager.getComponent(indexPage.component) : ResourceIndexPage;
1487
+ var ResourceShowComponent = showPage !== null && typeof showPage.component !== 'undefined' ? componentsManager.getComponent(showPage.component) : ResourceShowPage;
1488
+ var ResourceCreateComponent = createPage !== null && typeof createPage.component !== 'undefined' ? componentsManager.getComponent(createPage.component) : ResourceCreatePage;
1489
+ var ResourceEditComponent = editPage !== null && typeof editPage.component !== 'undefined' ? componentsManager.getComponent(editPage.component) : ResourceEditPage;
1490
+ var ResourceDeleteComponent = deletePage !== null && typeof deletePage.component !== 'undefined' ? componentsManager.getComponent(deletePage.component) : ResourceDeletePage;
1491
+ return /*#__PURE__*/React__default["default"].createElement(reactRouter.Switch, null, extraRoutes.map(function (_ref3) {
1492
+ var path = _ref3.path,
1493
+ component = _ref3.component,
1494
+ _ref3$exact = _ref3.exact,
1495
+ exact = _ref3$exact === void 0 ? true : _ref3$exact,
1496
+ pageProps = _objectWithoutProperties__default["default"](_ref3, _excluded);
1497
+ var RouteComponent = componentsManager.getComponent(component);
1498
+ return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1499
+ key: "route-".concat(path),
1500
+ path: path,
1501
+ exact: exact,
1502
+ render: function render(_ref4) {
1503
+ var _ref4$match$params = _ref4.match.params,
1504
+ id = _ref4$match$params.id,
1505
+ params = _objectWithoutProperties__default["default"](_ref4$match$params, _excluded2);
1506
+ return /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
1507
+ resource: resource,
1508
+ itemId: id
1509
+ }, pageProps, params));
1510
+ }
1511
+ }) : null;
1512
+ }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1530
1513
  path: route('resources.index', {
1531
1514
  resource: resourceId
1532
1515
  }),
1533
1516
  exact: true,
1534
- element: /*#__PURE__*/React__default["default"].createElement(ResourceIndexComponent, {
1535
- resource: resource
1536
- })
1517
+ render: function render() {
1518
+ return /*#__PURE__*/React__default["default"].createElement(ResourceIndexComponent, {
1519
+ resource: resource
1520
+ });
1521
+ }
1537
1522
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1538
1523
  path: route('resources.create', {
1539
1524
  resource: resourceId
1540
1525
  }),
1541
1526
  exact: true,
1542
- element: /*#__PURE__*/React__default["default"].createElement(ResourceCreateComponent, {
1543
- resource: resource
1544
- })
1527
+ render: function render() {
1528
+ return /*#__PURE__*/React__default["default"].createElement(ResourceCreateComponent, {
1529
+ resource: resource
1530
+ });
1531
+ }
1545
1532
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1546
1533
  path: route('resources.show', {
1547
1534
  resource: resourceId,
1548
1535
  id: ':id'
1549
1536
  }),
1550
1537
  exact: true,
1551
- element: /*#__PURE__*/React__default["default"].createElement(ResourceShowComponent, {
1552
- resource: resource
1553
- })
1538
+ render: function render(_ref5) {
1539
+ var id = _ref5.match.params.id;
1540
+ return /*#__PURE__*/React__default["default"].createElement(ResourceShowComponent, {
1541
+ resource: resource,
1542
+ itemId: id
1543
+ });
1544
+ }
1554
1545
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1555
1546
  path: route('resources.edit', {
1556
1547
  resource: resourceId,
1557
1548
  id: ':id'
1558
1549
  }),
1559
1550
  exact: true,
1560
- element: /*#__PURE__*/React__default["default"].createElement(ResourceEditComponent, {
1561
- resource: resource
1562
- })
1551
+ render: function render(_ref6) {
1552
+ var id = _ref6.match.params.id;
1553
+ return /*#__PURE__*/React__default["default"].createElement(ResourceEditComponent, {
1554
+ resource: resource,
1555
+ itemId: id
1556
+ });
1557
+ }
1563
1558
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1564
1559
  path: route('resources.delete', {
1565
1560
  resource: resourceId,
1566
1561
  id: ':id'
1567
1562
  }),
1568
1563
  exact: true,
1569
- element: /*#__PURE__*/React__default["default"].createElement(ResourceDeleteComponent, {
1570
- resource: resource
1571
- })
1572
- })].concat(_toConsumableArray__default["default"](extraRoutes.map(function (_ref4) {
1573
- var path = _ref4.path,
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);
1578
- var RouteComponent = componentsManager.getComponent(component);
1579
- return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1580
- key: "route-".concat(path),
1581
- path: path,
1582
- exact: exact,
1583
- element: /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
1584
- resource: resource
1585
- }, pageProps))
1586
- }) : null;
1587
- })));
1564
+ render: function render(_ref7) {
1565
+ var id = _ref7.match.params.id;
1566
+ return /*#__PURE__*/React__default["default"].createElement(ResourceDeleteComponent, {
1567
+ resource: resource,
1568
+ itemId: id
1569
+ });
1570
+ }
1571
+ }));
1588
1572
  };
1573
+ ResourceRoutes.propTypes = propTypes$2;
1574
+ ResourceRoutes.defaultProps = defaultProps$2;
1589
1575
 
1590
- var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1591
- _excluded2 = ["path", "route", "component", "exact"];
1592
1576
  var propTypes$1 = {
1593
1577
  statusCode: core.PropTypes.statusCode
1594
1578
  };
@@ -1597,9 +1581,13 @@ var defaultProps$1 = {
1597
1581
  };
1598
1582
  var PanneauRoutes = function PanneauRoutes(_ref) {
1599
1583
  var initialStatusCode = _ref.statusCode;
1584
+ var _usePanneau = contexts.usePanneau(),
1585
+ _usePanneau$pages = _usePanneau.pages,
1586
+ pages = _usePanneau$pages === void 0 ? {} : _usePanneau$pages;
1600
1587
  var routes = contexts.useRoutes();
1601
1588
  var _useLocation = reactRouter.useLocation(),
1602
- pathname = _useLocation.pathname;
1589
+ pathname = _useLocation.pathname; // search
1590
+
1603
1591
  var _useState = React.useState({
1604
1592
  statusCode: initialStatusCode,
1605
1593
  pathname: pathname
@@ -1607,26 +1595,27 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1607
1595
  _useState2 = _slicedToArray__default["default"](_useState, 2),
1608
1596
  _useState2$ = _useState2[0],
1609
1597
  statusCode = _useState2$.statusCode,
1610
- lastPathname = _useState2$.pathname,
1598
+ initialPathname = _useState2$.pathname,
1611
1599
  setInitialRequest = _useState2[1];
1612
1600
  var user = auth.useUser();
1613
1601
  var route = contexts.useUrlGenerator();
1614
1602
  var resources = contexts.usePanneauResources();
1615
- var componentsManager = contexts.usePagesComponentsManager();
1603
+
1604
+ // const nextUrl = useMemo(() => {
1605
+ // const query = parseQuery(search);
1606
+ // return query !== null ? query.next || null : null;
1607
+ // }, [search]);
1608
+
1616
1609
  React.useEffect(function () {
1617
- if (pathname !== lastPathname) {
1610
+ if (pathname !== initialPathname) {
1618
1611
  setInitialRequest({
1619
1612
  pathname: pathname,
1620
1613
  statusCode: null
1621
1614
  });
1622
1615
  }
1623
- }, [pathname, lastPathname]);
1616
+ }, [pathname, initialPathname]);
1624
1617
 
1625
1618
  // Custom Pages
1626
- var _usePanneau = contexts.usePanneau(),
1627
- _usePanneau$pages = _usePanneau.pages,
1628
- pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages,
1629
- routesDefinition = _usePanneau.routes;
1630
1619
  var _ref2 = pages || {},
1631
1620
  _ref2$home = _ref2.home,
1632
1621
  homePage = _ref2$home === void 0 ? null : _ref2$home,
@@ -1636,94 +1625,55 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1636
1625
  accountPage = _ref2$account === void 0 ? null : _ref2$account,
1637
1626
  _ref2$error = _ref2.error,
1638
1627
  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]);
1663
- var HomeComponent = componentsManager.getComponent(homePage === null || homePage === void 0 ? void 0 : homePage.component) || HomePage;
1664
- var LoginComponent = componentsManager.getComponent(loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || LoginPage;
1665
- var AccountComponent = componentsManager.getComponent(accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || AccountPage;
1666
- var ErrorComponent = componentsManager.getComponent(errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || ErrorPage;
1667
-
1668
- // If there is an error status code
1669
- if (statusCode !== null) {
1670
- return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1671
- statusCode: statusCode
1672
- });
1673
- }
1674
-
1675
- // If user is unauthenticated
1676
- if (user === null) {
1677
- return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1678
- path: routes['auth.login'],
1679
- exact: true,
1680
- element: /*#__PURE__*/React__default["default"].createElement(LoginComponent, null)
1681
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1682
- path: "*",
1683
- element: /*#__PURE__*/React__default["default"].createElement(reactRouter.Navigate, {
1684
- to: "".concat(route('auth.login'), "?next=").concat(encodeURIComponent(pathname)),
1685
- replace: true
1686
- })
1687
- }));
1688
- }
1689
-
1690
- // Normal routes
1691
- return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1628
+ var HomeComponent = utils.getComponentFromName((homePage === null || homePage === void 0 ? void 0 : homePage.component) || 'home', basePages, homePage === null || homePage === void 0 ? void 0 : homePage.component);
1629
+ var LoginComponent = utils.getComponentFromName((loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || 'login', basePages, loginPage === null || loginPage === void 0 ? void 0 : loginPage.component);
1630
+ var AccountComponent = utils.getComponentFromName((accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || 'account', basePages, accountPage === null || accountPage === void 0 ? void 0 : accountPage.component);
1631
+ var ErrorComponent = utils.getComponentFromName((errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || 'error', basePages, errorPage === null || errorPage === void 0 ? void 0 : errorPage.component);
1632
+ return /*#__PURE__*/React__default["default"].createElement(reactRouter.Switch, null, statusCode !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1633
+ path: "*",
1634
+ render: function render() {
1635
+ return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1636
+ statusCode: statusCode
1637
+ });
1638
+ }
1639
+ }) : null, user === null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1640
+ path: "*",
1641
+ exact: true,
1642
+ component: LoginComponent
1643
+ }) : null, user !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1692
1644
  path: routes.home,
1693
1645
  exact: true,
1694
- element: /*#__PURE__*/React__default["default"].createElement(HomeComponent, null)
1646
+ component: HomeComponent
1647
+ }) : /*#__PURE__*/React__default["default"].createElement(reactRouter.Redirect, {
1648
+ from: routes.home,
1649
+ exact: true,
1650
+ to: route('login')
1695
1651
  }), resources.map(function (resource) {
1696
- var _ref4 = resource || {},
1697
- resourceId = _ref4.id;
1698
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1699
- key: "resource-".concat(resourceId)
1700
- }, createResourceRoutes(resource, {
1701
- route: route,
1702
- componentsManager: componentsManager,
1703
- pages: pages
1704
- }));
1652
+ var _ref3 = resource || {},
1653
+ resourceId = _ref3.id;
1654
+ return user !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1655
+ key: "resource-".concat(resourceId),
1656
+ path: route('resources.index', {
1657
+ resource: resourceId
1658
+ }),
1659
+ render: function render() {
1660
+ return /*#__PURE__*/React__default["default"].createElement(ResourceRoutes, {
1661
+ resource: resource
1662
+ });
1663
+ }
1664
+ }) : /*#__PURE__*/React__default["default"].createElement(reactRouter.Redirect, {
1665
+ key: "resource-".concat(resourceId),
1666
+ from: route('resources.index', {
1667
+ resource: resourceId
1668
+ }),
1669
+ to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname))
1670
+ });
1705
1671
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1706
- path: routes.account,
1707
- exact: true,
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;
1672
+ path: route('auth.account'),
1673
+ component: AccountComponent
1724
1674
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1725
1675
  path: "*",
1726
- element: /*#__PURE__*/React__default["default"].createElement(ErrorComponent, null)
1676
+ component: ErrorComponent
1727
1677
  }));
1728
1678
  };
1729
1679
  PanneauRoutes.propTypes = propTypes$1;