@panneau/app 1.0.3-alpha.0 → 1.0.3-alpha.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.
Files changed (3) hide show
  1. package/es/index.js +92 -94
  2. package/lib/index.js +90 -91
  3. package/package.json +26 -26
package/es/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
3
3
  import PropTypes$1 from 'prop-types';
4
- import React, { useMemo, useCallback, useState, useEffect } from 'react';
5
- import { useLocation, useNavigate, useParams, Route, Routes, MemoryRouter } from 'react-router';
4
+ import React, { useMemo, useCallback, useState, useEffect, Fragment } from 'react';
5
+ import { useLocation, useNavigate, useParams, Route, Routes, Navigate, MemoryRouter } from 'react-router';
6
6
  import { Link, BrowserRouter } from 'react-router-dom';
7
7
  import { useUser, useLogout, useAuth, AuthProvider } from '@panneau/auth';
8
8
  import { PropTypes } from '@panneau/core';
9
- import { useLocales, useFormsComponents, FormProvider, useUrlGenerator, usePanneauResources, usePanneau, usePanneauColorScheme, ResourceProvider, useFiltersComponents, useListsComponents, useComponentsManager, useFormComponent, useRoutes, PanneauProvider, UppyProvider, RoutesProvider, ComponentsProvider } from '@panneau/core/contexts';
9
+ import { useLocales, useFormsComponents, FormProvider, useUrlGenerator, usePanneauResources, usePanneau, usePanneauColorScheme, ResourceProvider, useFiltersComponents, useListsComponents, useComponentsManager, useFormComponent, useRoutes, usePagesComponentsManager, PanneauProvider, UppyProvider, RoutesProvider, ComponentsProvider } from '@panneau/core/contexts';
10
10
  import { useResourceStore, useResourceUpdate, useResourceDestroy, useResourceItem, useResourceItems, ApiProvider } from '@panneau/data';
11
11
  import DisplaysProvider from '@panneau/displays';
12
12
  import FieldsProvider from '@panneau/fields';
@@ -15,11 +15,12 @@ import FormsProvider from '@panneau/forms';
15
15
  import { useResourceValues, IntlProvider } from '@panneau/intl';
16
16
  import ListsProvider from '@panneau/lists';
17
17
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
18
- import { getComponentFromName } from '@panneau/core/utils';
19
18
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
19
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
20
20
  import { parse, stringify } from 'query-string';
21
21
  import { FormattedMessage, defineMessages } from 'react-intl';
22
22
  import { useResourceUrlGenerator, useForm } from '@panneau/core/hooks';
23
+ import { getComponentFromName } from '@panneau/core/utils';
23
24
  import classNames from 'classnames';
24
25
  import Button from '@panneau/element-button';
25
26
  import Form from '@panneau/element-form';
@@ -374,7 +375,7 @@ var AccountMenu = function AccountMenu(_ref) {
374
375
  "value": "Login"
375
376
  }]
376
377
  }),
377
- href: route('login')
378
+ href: route('auth.login')
378
379
  }];
379
380
  }, [user, route, onClickLogout]);
380
381
  return items !== null ? /*#__PURE__*/React.createElement(Menu, {
@@ -1510,27 +1511,16 @@ var ErrorPage = function ErrorPage(_ref) {
1510
1511
  ErrorPage.propTypes = propTypes$2;
1511
1512
  ErrorPage.defaultProps = defaultProps$2;
1512
1513
 
1513
- var basePages = /*#__PURE__*/Object.freeze({
1514
- __proto__: null,
1515
- ResourceCreate: ResourceCreatePage,
1516
- ResourceDelete: ResourceDeletePage,
1517
- ResourceEdit: ResourceEditPage,
1518
- ResourceIndex: ResourceIndexPage,
1519
- ResourceShow: ResourceShowPage,
1520
- Home: HomePage,
1521
- Account: AccountPage,
1522
- Login: LoginPage,
1523
- Error: ErrorPage
1524
- });
1525
-
1526
1514
  var _excluded = ["path", "component", "exact"];
1527
1515
 
1528
1516
  var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1529
1517
  var route = _ref.route,
1530
- componentsManager = _ref.componentsManager;
1518
+ componentsManager = _ref.componentsManager,
1519
+ _ref$pages = _ref.pages,
1520
+ pages = _ref$pages === void 0 ? {} : _ref$pages;
1531
1521
  var resourceId = resource.id,
1532
1522
  _resource$pages = resource.pages,
1533
- pages = _resource$pages === void 0 ? {} : _resource$pages,
1523
+ resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1534
1524
  _resource$extraRoutes = resource.extraRoutes,
1535
1525
  extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes; // Load custom pages from resource
1536
1526
 
@@ -1546,28 +1536,24 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1546
1536
  _ref2$delete = _ref2["delete"],
1547
1537
  deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1548
1538
 
1549
- var ResourceIndexComponent = indexPage !== null && typeof indexPage.component !== 'undefined' ? componentsManager.getComponent(indexPage.component) : ResourceIndexPage;
1550
- var ResourceShowComponent = showPage !== null && typeof showPage.component !== 'undefined' ? componentsManager.getComponent(showPage.component) : ResourceShowPage;
1551
- var ResourceCreateComponent = createPage !== null && typeof createPage.component !== 'undefined' ? componentsManager.getComponent(createPage.component) : ResourceCreatePage;
1552
- var ResourceEditComponent = editPage !== null && typeof editPage.component !== 'undefined' ? componentsManager.getComponent(editPage.component) : ResourceEditPage;
1553
- var ResourceDeleteComponent = deletePage !== null && typeof deletePage.component !== 'undefined' ? componentsManager.getComponent(deletePage.component) : ResourceDeletePage;
1554
- return /*#__PURE__*/React.createElement(React.Fragment, null, extraRoutes.map(function (_ref3) {
1555
- var path = _ref3.path,
1556
- component = _ref3.component,
1557
- _ref3$exact = _ref3.exact,
1558
- exact = _ref3$exact === void 0 ? true : _ref3$exact,
1559
- pageProps = _objectWithoutProperties(_ref3, _excluded);
1560
-
1561
- var RouteComponent = componentsManager.getComponent(component);
1562
- return RouteComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1563
- key: "route-".concat(path),
1564
- path: path,
1565
- exact: exact,
1566
- element: /*#__PURE__*/React.createElement(RouteComponent, Object.assign({
1567
- resource: resource
1568
- }, pageProps))
1569
- }) : null;
1570
- }), /*#__PURE__*/React.createElement(Route, {
1539
+ var _ref3 = resourcePages || {},
1540
+ _ref3$index = _ref3.index,
1541
+ resourceIndexPage = _ref3$index === void 0 ? null : _ref3$index,
1542
+ _ref3$show = _ref3.show,
1543
+ resourceShowPage = _ref3$show === void 0 ? null : _ref3$show,
1544
+ _ref3$create = _ref3.create,
1545
+ resourceCreatePage = _ref3$create === void 0 ? null : _ref3$create,
1546
+ _ref3$edit = _ref3.edit,
1547
+ resourceEditPage = _ref3$edit === void 0 ? null : _ref3$edit,
1548
+ _ref3$delete = _ref3["delete"],
1549
+ resourceDeletePage = _ref3$delete === void 0 ? null : _ref3$delete;
1550
+
1551
+ 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;
1552
+ 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;
1553
+ 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;
1554
+ 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;
1555
+ 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;
1556
+ return [/*#__PURE__*/React.createElement(Route, {
1571
1557
  path: route('resources.index', {
1572
1558
  resource: resourceId
1573
1559
  }),
@@ -1610,7 +1596,23 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1610
1596
  element: /*#__PURE__*/React.createElement(ResourceDeleteComponent, {
1611
1597
  resource: resource
1612
1598
  })
1613
- }));
1599
+ })].concat(_toConsumableArray(extraRoutes.map(function (_ref4) {
1600
+ var path = _ref4.path,
1601
+ component = _ref4.component,
1602
+ _ref4$exact = _ref4.exact,
1603
+ exact = _ref4$exact === void 0 ? true : _ref4$exact,
1604
+ pageProps = _objectWithoutProperties(_ref4, _excluded);
1605
+
1606
+ var RouteComponent = componentsManager.getComponent(component);
1607
+ return RouteComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1608
+ key: "route-".concat(path),
1609
+ path: path,
1610
+ exact: exact,
1611
+ element: /*#__PURE__*/React.createElement(RouteComponent, Object.assign({
1612
+ resource: resource
1613
+ }, pageProps))
1614
+ }) : null;
1615
+ })));
1614
1616
  };
1615
1617
 
1616
1618
  var propTypes$1 = {
@@ -1622,16 +1624,10 @@ var defaultProps$1 = {
1622
1624
 
1623
1625
  var PanneauRoutes = function PanneauRoutes(_ref) {
1624
1626
  var initialStatusCode = _ref.statusCode;
1625
-
1626
- var _usePanneau = usePanneau(),
1627
- _usePanneau$pages = _usePanneau.pages,
1628
- pages = _usePanneau$pages === void 0 ? {} : _usePanneau$pages;
1629
-
1630
1627
  var routes = useRoutes();
1631
1628
 
1632
1629
  var _useLocation = useLocation(),
1633
- pathname = _useLocation.pathname; // search
1634
-
1630
+ pathname = _useLocation.pathname;
1635
1631
 
1636
1632
  var _useState = useState({
1637
1633
  statusCode: initialStatusCode,
@@ -1640,25 +1636,25 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1640
1636
  _useState2 = _slicedToArray(_useState, 2),
1641
1637
  _useState2$ = _useState2[0],
1642
1638
  statusCode = _useState2$.statusCode,
1643
- initialPathname = _useState2$.pathname,
1639
+ lastPathname = _useState2$.pathname,
1644
1640
  setInitialRequest = _useState2[1];
1645
1641
 
1646
1642
  var user = useUser();
1647
1643
  var route = useUrlGenerator();
1648
1644
  var resources = usePanneauResources();
1649
- var componentsManager = useComponentsManager(); // const nextUrl = useMemo(() => {
1650
- // const query = parseQuery(search);
1651
- // return query !== null ? query.next || null : null;
1652
- // }, [search]);
1653
-
1645
+ var componentsManager = usePagesComponentsManager();
1654
1646
  useEffect(function () {
1655
- if (pathname !== initialPathname) {
1647
+ if (pathname !== lastPathname) {
1656
1648
  setInitialRequest({
1657
1649
  pathname: pathname,
1658
1650
  statusCode: null
1659
1651
  });
1660
1652
  }
1661
- }, [pathname, initialPathname]); // Custom Pages
1653
+ }, [pathname, lastPathname]); // Custom Pages
1654
+
1655
+ var _usePanneau = usePanneau(),
1656
+ _usePanneau$pages = _usePanneau.pages,
1657
+ pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages;
1662
1658
 
1663
1659
  var _ref2 = pages || {},
1664
1660
  _ref2$home = _ref2.home,
@@ -1670,53 +1666,55 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1670
1666
  _ref2$error = _ref2.error,
1671
1667
  errorPage = _ref2$error === void 0 ? null : _ref2$error;
1672
1668
 
1673
- var HomeComponent = getComponentFromName((homePage === null || homePage === void 0 ? void 0 : homePage.component) || 'home', basePages, homePage === null || homePage === void 0 ? void 0 : homePage.component);
1674
- var LoginComponent = getComponentFromName((loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || 'login', basePages, loginPage === null || loginPage === void 0 ? void 0 : loginPage.component);
1675
- var AccountComponent = getComponentFromName((accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || 'account', basePages, accountPage === null || accountPage === void 0 ? void 0 : accountPage.component);
1676
- var ErrorComponent = getComponentFromName((errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || 'error', basePages, errorPage === null || errorPage === void 0 ? void 0 : errorPage.component);
1677
- return /*#__PURE__*/React.createElement(Routes, null, statusCode !== null ? /*#__PURE__*/React.createElement(Route, {
1678
- path: "*",
1679
- element: /*#__PURE__*/React.createElement(ErrorComponent, {
1669
+ var HomeComponent = componentsManager.getComponent(homePage === null || homePage === void 0 ? void 0 : homePage.component) || HomePage;
1670
+ var LoginComponent = componentsManager.getComponent(loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || LoginPage;
1671
+ var AccountComponent = componentsManager.getComponent(accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || AccountPage;
1672
+ var ErrorComponent = componentsManager.getComponent(errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || ErrorPage; // If there is an error status code
1673
+
1674
+ if (statusCode !== null) {
1675
+ return /*#__PURE__*/React.createElement(ErrorComponent, {
1680
1676
  statusCode: statusCode
1681
- })
1682
- }) : null, /*#__PURE__*/React.createElement(Route, {
1677
+ });
1678
+ } // If user is unauthenticated
1679
+
1680
+
1681
+ if (user === null) {
1682
+ return /*#__PURE__*/React.createElement(Routes, null, /*#__PURE__*/React.createElement(Route, {
1683
+ path: routes['auth.login'],
1684
+ exact: true,
1685
+ element: /*#__PURE__*/React.createElement(LoginComponent, null)
1686
+ }), /*#__PURE__*/React.createElement(Route, {
1687
+ path: "*",
1688
+ element: /*#__PURE__*/React.createElement(Navigate, {
1689
+ to: "".concat(route('auth.login'), "?next=").concat(encodeURIComponent(pathname)),
1690
+ replace: true
1691
+ })
1692
+ }));
1693
+ } // Normal routes
1694
+
1695
+
1696
+ return /*#__PURE__*/React.createElement(Routes, null, /*#__PURE__*/React.createElement(Route, {
1683
1697
  path: routes.home,
1684
1698
  exact: true,
1685
- element: user !== null ? /*#__PURE__*/React.createElement(HomeComponent, null) : /*#__PURE__*/React.createElement(Navigate, {
1686
- to: route('login'),
1687
- replace: true
1688
- })
1689
- }), user === null ? /*#__PURE__*/React.createElement(Route, {
1690
- path: routes.login,
1691
- exact: true,
1692
- element: /*#__PURE__*/React.createElement(LoginComponent, null)
1693
- }) : null, resources.map(function (resource) {
1699
+ element: /*#__PURE__*/React.createElement(HomeComponent, null)
1700
+ }), resources.map(function (resource) {
1694
1701
  var _ref3 = resource || {},
1695
1702
  resourceId = _ref3.id;
1696
1703
 
1697
- return user !== null ? createResourceRoutes(resource, {
1704
+ return /*#__PURE__*/React.createElement(Fragment, {
1705
+ key: "resource-".concat(resourceId)
1706
+ }, createResourceRoutes(resource, {
1698
1707
  route: route,
1699
- componentsManager: componentsManager
1700
- }) : /*#__PURE__*/React.createElement(Route, {
1701
- key: "resource-".concat(resourceId),
1702
- path: route('resources.index', {
1703
- resource: resourceId
1704
- }),
1705
- element: /*#__PURE__*/React.createElement(Navigate, {
1706
- to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname)),
1707
- replace: true
1708
- })
1709
- });
1708
+ componentsManager: componentsManager,
1709
+ pages: pages
1710
+ }));
1710
1711
  }), /*#__PURE__*/React.createElement(Route, {
1711
- path: route('account'),
1712
+ path: routes.account,
1712
1713
  exact: true,
1713
- element: user !== null ? /*#__PURE__*/React.createElement(AccountComponent, null) : /*#__PURE__*/React.createElement(Navigate, {
1714
- to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname)),
1715
- replace: true
1716
- })
1714
+ element: /*#__PURE__*/React.createElement(AccountComponent, null)
1717
1715
  }), /*#__PURE__*/React.createElement(Route, {
1718
1716
  path: "*",
1719
- elmeent: /*#__PURE__*/React.createElement(ErrorComponent, null)
1717
+ element: /*#__PURE__*/React.createElement(ErrorComponent, null)
1720
1718
  }));
1721
1719
  };
1722
1720
 
package/lib/index.js CHANGED
@@ -19,11 +19,12 @@ var FormsProvider = require('@panneau/forms');
19
19
  var intl = require('@panneau/intl');
20
20
  var ListsProvider = require('@panneau/lists');
21
21
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
22
- var utils = require('@panneau/core/utils');
23
22
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
23
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
24
24
  var queryString = require('query-string');
25
25
  var reactIntl = require('react-intl');
26
26
  var hooks = require('@panneau/core/hooks');
27
+ var utils = require('@panneau/core/utils');
27
28
  var classNames = require('classnames');
28
29
  var Button = require('@panneau/element-button');
29
30
  var Form = require('@panneau/element-form');
@@ -52,6 +53,7 @@ var FormsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FormsProvider);
52
53
  var ListsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ListsProvider);
53
54
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
54
55
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
56
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
55
57
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
56
58
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
57
59
  var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
@@ -404,7 +406,7 @@ var AccountMenu = function AccountMenu(_ref) {
404
406
  "value": "Login"
405
407
  }]
406
408
  }),
407
- href: route('login')
409
+ href: route('auth.login')
408
410
  }];
409
411
  }, [user, route, onClickLogout]);
410
412
  return items !== null ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
@@ -1540,27 +1542,16 @@ var ErrorPage = function ErrorPage(_ref) {
1540
1542
  ErrorPage.propTypes = propTypes$2;
1541
1543
  ErrorPage.defaultProps = defaultProps$2;
1542
1544
 
1543
- var basePages = /*#__PURE__*/Object.freeze({
1544
- __proto__: null,
1545
- ResourceCreate: ResourceCreatePage,
1546
- ResourceDelete: ResourceDeletePage,
1547
- ResourceEdit: ResourceEditPage,
1548
- ResourceIndex: ResourceIndexPage,
1549
- ResourceShow: ResourceShowPage,
1550
- Home: HomePage,
1551
- Account: AccountPage,
1552
- Login: LoginPage,
1553
- Error: ErrorPage
1554
- });
1555
-
1556
1545
  var _excluded = ["path", "component", "exact"];
1557
1546
 
1558
1547
  var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1559
1548
  var route = _ref.route,
1560
- componentsManager = _ref.componentsManager;
1549
+ componentsManager = _ref.componentsManager,
1550
+ _ref$pages = _ref.pages,
1551
+ pages = _ref$pages === void 0 ? {} : _ref$pages;
1561
1552
  var resourceId = resource.id,
1562
1553
  _resource$pages = resource.pages,
1563
- pages = _resource$pages === void 0 ? {} : _resource$pages,
1554
+ resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1564
1555
  _resource$extraRoutes = resource.extraRoutes,
1565
1556
  extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes; // Load custom pages from resource
1566
1557
 
@@ -1576,28 +1567,24 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1576
1567
  _ref2$delete = _ref2["delete"],
1577
1568
  deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1578
1569
 
1579
- var ResourceIndexComponent = indexPage !== null && typeof indexPage.component !== 'undefined' ? componentsManager.getComponent(indexPage.component) : ResourceIndexPage;
1580
- var ResourceShowComponent = showPage !== null && typeof showPage.component !== 'undefined' ? componentsManager.getComponent(showPage.component) : ResourceShowPage;
1581
- var ResourceCreateComponent = createPage !== null && typeof createPage.component !== 'undefined' ? componentsManager.getComponent(createPage.component) : ResourceCreatePage;
1582
- var ResourceEditComponent = editPage !== null && typeof editPage.component !== 'undefined' ? componentsManager.getComponent(editPage.component) : ResourceEditPage;
1583
- var ResourceDeleteComponent = deletePage !== null && typeof deletePage.component !== 'undefined' ? componentsManager.getComponent(deletePage.component) : ResourceDeletePage;
1584
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, extraRoutes.map(function (_ref3) {
1585
- var path = _ref3.path,
1586
- component = _ref3.component,
1587
- _ref3$exact = _ref3.exact,
1588
- exact = _ref3$exact === void 0 ? true : _ref3$exact,
1589
- pageProps = _objectWithoutProperties__default["default"](_ref3, _excluded);
1590
-
1591
- var RouteComponent = componentsManager.getComponent(component);
1592
- return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1593
- key: "route-".concat(path),
1594
- path: path,
1595
- exact: exact,
1596
- element: /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
1597
- resource: resource
1598
- }, pageProps))
1599
- }) : null;
1600
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1570
+ 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
+
1582
+ 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
+ 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
+ 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;
1585
+ 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;
1586
+ 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;
1587
+ return [/*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1601
1588
  path: route('resources.index', {
1602
1589
  resource: resourceId
1603
1590
  }),
@@ -1640,7 +1627,23 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1640
1627
  element: /*#__PURE__*/React__default["default"].createElement(ResourceDeleteComponent, {
1641
1628
  resource: resource
1642
1629
  })
1643
- }));
1630
+ })].concat(_toConsumableArray__default["default"](extraRoutes.map(function (_ref4) {
1631
+ 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
+
1637
+ var RouteComponent = componentsManager.getComponent(component);
1638
+ return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1639
+ key: "route-".concat(path),
1640
+ path: path,
1641
+ exact: exact,
1642
+ element: /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
1643
+ resource: resource
1644
+ }, pageProps))
1645
+ }) : null;
1646
+ })));
1644
1647
  };
1645
1648
 
1646
1649
  var propTypes$1 = {
@@ -1652,16 +1655,10 @@ var defaultProps$1 = {
1652
1655
 
1653
1656
  var PanneauRoutes = function PanneauRoutes(_ref) {
1654
1657
  var initialStatusCode = _ref.statusCode;
1655
-
1656
- var _usePanneau = contexts.usePanneau(),
1657
- _usePanneau$pages = _usePanneau.pages,
1658
- pages = _usePanneau$pages === void 0 ? {} : _usePanneau$pages;
1659
-
1660
1658
  var routes = contexts.useRoutes();
1661
1659
 
1662
1660
  var _useLocation = reactRouter.useLocation(),
1663
- pathname = _useLocation.pathname; // search
1664
-
1661
+ pathname = _useLocation.pathname;
1665
1662
 
1666
1663
  var _useState = React.useState({
1667
1664
  statusCode: initialStatusCode,
@@ -1670,25 +1667,25 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1670
1667
  _useState2 = _slicedToArray__default["default"](_useState, 2),
1671
1668
  _useState2$ = _useState2[0],
1672
1669
  statusCode = _useState2$.statusCode,
1673
- initialPathname = _useState2$.pathname,
1670
+ lastPathname = _useState2$.pathname,
1674
1671
  setInitialRequest = _useState2[1];
1675
1672
 
1676
1673
  var user = auth.useUser();
1677
1674
  var route = contexts.useUrlGenerator();
1678
1675
  var resources = contexts.usePanneauResources();
1679
- var componentsManager = contexts.useComponentsManager(); // const nextUrl = useMemo(() => {
1680
- // const query = parseQuery(search);
1681
- // return query !== null ? query.next || null : null;
1682
- // }, [search]);
1683
-
1676
+ var componentsManager = contexts.usePagesComponentsManager();
1684
1677
  React.useEffect(function () {
1685
- if (pathname !== initialPathname) {
1678
+ if (pathname !== lastPathname) {
1686
1679
  setInitialRequest({
1687
1680
  pathname: pathname,
1688
1681
  statusCode: null
1689
1682
  });
1690
1683
  }
1691
- }, [pathname, initialPathname]); // Custom Pages
1684
+ }, [pathname, lastPathname]); // Custom Pages
1685
+
1686
+ var _usePanneau = contexts.usePanneau(),
1687
+ _usePanneau$pages = _usePanneau.pages,
1688
+ pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages;
1692
1689
 
1693
1690
  var _ref2 = pages || {},
1694
1691
  _ref2$home = _ref2.home,
@@ -1700,53 +1697,55 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1700
1697
  _ref2$error = _ref2.error,
1701
1698
  errorPage = _ref2$error === void 0 ? null : _ref2$error;
1702
1699
 
1703
- var HomeComponent = utils.getComponentFromName((homePage === null || homePage === void 0 ? void 0 : homePage.component) || 'home', basePages, homePage === null || homePage === void 0 ? void 0 : homePage.component);
1704
- var LoginComponent = utils.getComponentFromName((loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || 'login', basePages, loginPage === null || loginPage === void 0 ? void 0 : loginPage.component);
1705
- var AccountComponent = utils.getComponentFromName((accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || 'account', basePages, accountPage === null || accountPage === void 0 ? void 0 : accountPage.component);
1706
- var ErrorComponent = utils.getComponentFromName((errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || 'error', basePages, errorPage === null || errorPage === void 0 ? void 0 : errorPage.component);
1707
- return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, statusCode !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1708
- path: "*",
1709
- element: /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1700
+ var HomeComponent = componentsManager.getComponent(homePage === null || homePage === void 0 ? void 0 : homePage.component) || HomePage;
1701
+ var LoginComponent = componentsManager.getComponent(loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || LoginPage;
1702
+ 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
1704
+
1705
+ if (statusCode !== null) {
1706
+ return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1710
1707
  statusCode: statusCode
1711
- })
1712
- }) : null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1708
+ });
1709
+ } // If user is unauthenticated
1710
+
1711
+
1712
+ if (user === null) {
1713
+ return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1714
+ path: routes['auth.login'],
1715
+ exact: true,
1716
+ element: /*#__PURE__*/React__default["default"].createElement(LoginComponent, null)
1717
+ }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1718
+ path: "*",
1719
+ element: /*#__PURE__*/React__default["default"].createElement(reactRouter.Navigate, {
1720
+ to: "".concat(route('auth.login'), "?next=").concat(encodeURIComponent(pathname)),
1721
+ replace: true
1722
+ })
1723
+ }));
1724
+ } // Normal routes
1725
+
1726
+
1727
+ return /*#__PURE__*/React__default["default"].createElement(reactRouter.Routes, null, /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1713
1728
  path: routes.home,
1714
1729
  exact: true,
1715
- element: user !== null ? /*#__PURE__*/React__default["default"].createElement(HomeComponent, null) : /*#__PURE__*/React__default["default"].createElement(Navigate, {
1716
- to: route('login'),
1717
- replace: true
1718
- })
1719
- }), user === null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1720
- path: routes.login,
1721
- exact: true,
1722
- element: /*#__PURE__*/React__default["default"].createElement(LoginComponent, null)
1723
- }) : null, resources.map(function (resource) {
1730
+ element: /*#__PURE__*/React__default["default"].createElement(HomeComponent, null)
1731
+ }), resources.map(function (resource) {
1724
1732
  var _ref3 = resource || {},
1725
1733
  resourceId = _ref3.id;
1726
1734
 
1727
- return user !== null ? createResourceRoutes(resource, {
1735
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1736
+ key: "resource-".concat(resourceId)
1737
+ }, createResourceRoutes(resource, {
1728
1738
  route: route,
1729
- componentsManager: componentsManager
1730
- }) : /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1731
- key: "resource-".concat(resourceId),
1732
- path: route('resources.index', {
1733
- resource: resourceId
1734
- }),
1735
- element: /*#__PURE__*/React__default["default"].createElement(Navigate, {
1736
- to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname)),
1737
- replace: true
1738
- })
1739
- });
1739
+ componentsManager: componentsManager,
1740
+ pages: pages
1741
+ }));
1740
1742
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1741
- path: route('account'),
1743
+ path: routes.account,
1742
1744
  exact: true,
1743
- element: user !== null ? /*#__PURE__*/React__default["default"].createElement(AccountComponent, null) : /*#__PURE__*/React__default["default"].createElement(Navigate, {
1744
- to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname)),
1745
- replace: true
1746
- })
1745
+ element: /*#__PURE__*/React__default["default"].createElement(AccountComponent, null)
1747
1746
  }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1748
1747
  path: "*",
1749
- elmeent: /*#__PURE__*/React__default["default"].createElement(ErrorComponent, null)
1748
+ element: /*#__PURE__*/React__default["default"].createElement(ErrorComponent, null)
1750
1749
  }));
1751
1750
  };
1752
1751
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/app",
3
- "version": "1.0.3-alpha.0",
3
+ "version": "1.0.3-alpha.1",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -63,30 +63,30 @@
63
63
  "@fortawesome/fontawesome-svg-core": "^1.2.35",
64
64
  "@fortawesome/free-solid-svg-icons": "^5.15.3",
65
65
  "@fortawesome/react-fontawesome": "^0.1.14",
66
- "@panneau/auth": "^1.0.3-alpha.0",
67
- "@panneau/core": "^1.0.3-alpha.0",
68
- "@panneau/data": "^1.0.3-alpha.0",
69
- "@panneau/displays": "^1.0.3-alpha.0",
70
- "@panneau/element-alert": "^1.0.3-alpha.0",
71
- "@panneau/element-button": "^1.0.3-alpha.0",
72
- "@panneau/element-buttons": "^1.0.3-alpha.0",
73
- "@panneau/element-dropdown": "^1.0.3-alpha.0",
74
- "@panneau/element-form": "^1.0.3-alpha.0",
75
- "@panneau/element-form-group": "^1.0.3-alpha.0",
76
- "@panneau/element-label": "^1.0.3-alpha.0",
77
- "@panneau/element-link": "^1.0.3-alpha.0",
78
- "@panneau/element-loading": "^1.0.3-alpha.0",
79
- "@panneau/element-menu": "^1.0.3-alpha.0",
80
- "@panneau/element-navbar": "^1.0.3-alpha.0",
81
- "@panneau/element-pagination": "^1.0.3-alpha.0",
82
- "@panneau/element-radios": "^1.0.3-alpha.0",
83
- "@panneau/fields": "^1.0.3-alpha.0",
84
- "@panneau/filters": "^1.0.3-alpha.0",
85
- "@panneau/forms": "^1.0.3-alpha.0",
86
- "@panneau/intl": "^1.0.3-alpha.0",
87
- "@panneau/lists": "^1.0.3-alpha.0",
88
- "@panneau/modals": "^1.0.3-alpha.0",
89
- "@panneau/themes": "^1.0.3-alpha.0",
66
+ "@panneau/auth": "^1.0.3-alpha.1",
67
+ "@panneau/core": "^1.0.3-alpha.1",
68
+ "@panneau/data": "^1.0.3-alpha.1",
69
+ "@panneau/displays": "^1.0.3-alpha.1",
70
+ "@panneau/element-alert": "^1.0.3-alpha.1",
71
+ "@panneau/element-button": "^1.0.3-alpha.1",
72
+ "@panneau/element-buttons": "^1.0.3-alpha.1",
73
+ "@panneau/element-dropdown": "^1.0.3-alpha.1",
74
+ "@panneau/element-form": "^1.0.3-alpha.1",
75
+ "@panneau/element-form-group": "^1.0.3-alpha.1",
76
+ "@panneau/element-label": "^1.0.3-alpha.1",
77
+ "@panneau/element-link": "^1.0.3-alpha.1",
78
+ "@panneau/element-loading": "^1.0.3-alpha.1",
79
+ "@panneau/element-menu": "^1.0.3-alpha.1",
80
+ "@panneau/element-navbar": "^1.0.3-alpha.1",
81
+ "@panneau/element-pagination": "^1.0.3-alpha.1",
82
+ "@panneau/element-radios": "^1.0.3-alpha.1",
83
+ "@panneau/fields": "^1.0.3-alpha.1",
84
+ "@panneau/filters": "^1.0.3-alpha.1",
85
+ "@panneau/forms": "^1.0.3-alpha.1",
86
+ "@panneau/intl": "^1.0.3-alpha.1",
87
+ "@panneau/lists": "^1.0.3-alpha.1",
88
+ "@panneau/modals": "^1.0.3-alpha.1",
89
+ "@panneau/themes": "^1.0.3-alpha.1",
90
90
  "classnames": "^2.2.6",
91
91
  "lodash": "^4.17.21",
92
92
  "prop-types": "^15.7.2",
@@ -98,5 +98,5 @@
98
98
  "publishConfig": {
99
99
  "access": "public"
100
100
  },
101
- "gitHead": "7f9c472b97c79a5c81da30730549acdde2de5c9f"
101
+ "gitHead": "e04e663c7f1eb692f89a0136f2e8f45024fbe355"
102
102
  }