@panneau/app 3.0.107 → 3.0.108

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/es/index.js DELETED
@@ -1,1410 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
3
- import { useLocation, createPathToRegexpMatcher, useMemoryLocationHook } from '@folklore/routes';
4
- import PropTypes from 'prop-types';
5
- import React, { useCallback, useMemo, useState, useEffect, Fragment } from 'react';
6
- import { Route, Switch, Redirect, Router } from 'wouter';
7
- import { useUser, useLogout, useAuth, AuthProvider } from '@panneau/auth';
8
- import { PropTypes as PropTypes$1 } from '@panneau/core';
9
- import { useUrlGenerator, usePanneauResources, usePanneau, usePanneauColorScheme, ResourceProvider, useComponentsManager, useFormsComponents, useRoutes, usePagesComponentsManager, PanneauProvider, RoutesProvider, ModalProvider, ComponentsProvider } from '@panneau/core/contexts';
10
- import { UppyProvider } from '@panneau/uppy';
11
- import { useResourceItem, ApiProvider } from '@panneau/data';
12
- import DisplaysProvider from '@panneau/displays';
13
- import FieldsProvider from '@panneau/fields';
14
- import FiltersProvider from '@panneau/filters';
15
- import FormsProvider from '@panneau/forms';
16
- import { useResourceValues, IntlProvider } from '@panneau/intl';
17
- import ListsProvider from '@panneau/lists';
18
- import ModalsProvider from '@panneau/modals';
19
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
20
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
21
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
22
- import isObject from 'lodash/isObject';
23
- import classNames from 'classnames';
24
- import isString from 'lodash/isString';
25
- import queryString from 'query-string';
26
- import { FormattedMessage, defineMessages } from 'react-intl';
27
- import { useResourceUrlGenerator, useResourceTypeName } from '@panneau/core/hooks';
28
- import Alert from '@panneau/element-alert';
29
- import Button from '@panneau/element-button';
30
- import Dropdown from '@panneau/element-dropdown';
31
- import { Modals } from '@panneau/element-modal';
32
- import isArray from 'lodash/isArray';
33
- import Link from '@panneau/element-link';
34
- import Menu from '@panneau/element-menu';
35
- import Navbar from '@panneau/element-navbar';
36
- import Label from '@panneau/element-label';
37
- import ResourceList from '@panneau/list-resource-items';
38
- import ResourceForm$1 from '@panneau/form-resource';
39
- import { getComponentFromName } from '@panneau/core/utils';
40
- import Filters from '@panneau/filter-filters';
41
-
42
- /* eslint-disable react/jsx-props-no-spreading */
43
-
44
- // Kept for backward compatibility with exports
45
- var ResourceFormWrapper = function ResourceFormWrapper(props) {
46
- return /*#__PURE__*/React.createElement(ResourceForm$1, props);
47
- };
48
- var ResourceForm = ResourceFormWrapper;
49
-
50
- var propTypes$j = {
51
- withAccountForm: PropTypes.bool,
52
- className: PropTypes.string,
53
- itemClassName: PropTypes.string,
54
- linkClassName: PropTypes.string
55
- };
56
- var defaultProps$i = {
57
- withAccountForm: false,
58
- className: null,
59
- itemClassName: null,
60
- linkClassName: null
61
- };
62
- var AccountMenu = function AccountMenu(_ref) {
63
- var withAccountForm = _ref.withAccountForm,
64
- className = _ref.className,
65
- itemClassName = _ref.itemClassName,
66
- linkClassName = _ref.linkClassName;
67
- var route = useUrlGenerator();
68
- var user = useUser();
69
- var logout = useLogout();
70
- var onClickLogout = useCallback(function (e) {
71
- e.preventDefault();
72
- logout();
73
- }, [logout, route]);
74
- var items = useMemo(function () {
75
- return user !== null ? [{
76
- id: 'account',
77
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
78
- id: "IuqEHB",
79
- defaultMessage: [{
80
- "type": 0,
81
- "value": "Account"
82
- }]
83
- }),
84
- href: route('account'),
85
- dropdown: [].concat(_toConsumableArray(withAccountForm ? [{
86
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
87
- id: "V7Us0a",
88
- defaultMessage: [{
89
- "type": 0,
90
- "value": "Update account"
91
- }]
92
- }),
93
- href: route('account')
94
- }] : []), [{
95
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
96
- id: "REIcPg",
97
- defaultMessage: [{
98
- "type": 0,
99
- "value": "Logout"
100
- }]
101
- }),
102
- href: route('auth.logout'),
103
- onClick: onClickLogout
104
- }])
105
- }] : [{
106
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
107
- id: "d0g58T",
108
- defaultMessage: [{
109
- "type": 0,
110
- "value": "Login"
111
- }]
112
- }),
113
- href: route('auth.login')
114
- }];
115
- }, [user, route, onClickLogout, withAccountForm]);
116
- return items !== null ? /*#__PURE__*/React.createElement(Menu, {
117
- className: className,
118
- itemClassName: itemClassName,
119
- linkClassName: linkClassName,
120
- items: items,
121
- dropdownAlign: "end"
122
- }) : null;
123
- };
124
- AccountMenu.propTypes = propTypes$j;
125
- AccountMenu.defaultProps = defaultProps$i;
126
- var AccountMenu$1 = AccountMenu;
127
-
128
- var propTypes$i = {
129
- className: PropTypes.string,
130
- itemClassName: PropTypes.string,
131
- linkClassName: PropTypes.string
132
- };
133
- var defaultProps$h = {
134
- className: null,
135
- itemClassName: null,
136
- linkClassName: null
137
- };
138
- var ResourcesMenu = function ResourcesMenu(_ref) {
139
- var className = _ref.className,
140
- itemClassName = _ref.itemClassName,
141
- linkClassName = _ref.linkClassName;
142
- var _useLocation = useLocation(),
143
- _useLocation2 = _slicedToArray(_useLocation, 1),
144
- pathname = _useLocation2[0].pathname;
145
- var resources = usePanneauResources();
146
- var resourceRoute = useResourceUrlGenerator();
147
- var items = useMemo(function () {
148
- return resources.filter(function (_ref2) {
149
- var _ref2$settings = _ref2.settings,
150
- _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
151
- _ref2$settings2$hideI = _ref2$settings2.hideInNavbar,
152
- hideInNavbar = _ref2$settings2$hideI === void 0 ? false : _ref2$settings2$hideI;
153
- return !hideInNavbar;
154
- }).map(function (it) {
155
- var url = resourceRoute(it, 'index');
156
- return {
157
- id: it.id,
158
- label: it.name,
159
- href: url,
160
- active: pathname.substr(0, url.length) === url
161
- };
162
- });
163
- }, [resources, pathname, resourceRoute]);
164
- return /*#__PURE__*/React.createElement(Menu, {
165
- items: items,
166
- className: className,
167
- itemClassName: itemClassName,
168
- linkClassName: linkClassName
169
- });
170
- };
171
- ResourcesMenu.propTypes = propTypes$i;
172
- ResourcesMenu.defaultProps = defaultProps$h;
173
- var ResourcesMenu$1 = ResourcesMenu;
174
-
175
- var propTypes$h = {};
176
- var defaultProps$g = {};
177
- var MainNavbar = function MainNavbar(props) {
178
- var _usePanneau = usePanneau(),
179
- name = _usePanneau.name,
180
- _usePanneau$menus = _usePanneau.menus,
181
- menus = _usePanneau$menus === void 0 ? null : _usePanneau$menus;
182
- var _ref = menus || {},
183
- _ref$main = _ref.main,
184
- main = _ref$main === void 0 ? null : _ref$main,
185
- _ref$guest = _ref.guest,
186
- guest = _ref$guest === void 0 ? null : _ref$guest;
187
- var _usePanneauColorSchem = usePanneauColorScheme(),
188
- background = _usePanneauColorSchem.background;
189
- var route = useUrlGenerator();
190
- var user = useUser();
191
- var items = useMemo(function () {
192
- var menuItems = (user !== null ? main : guest) || [];
193
- var hasResources = menuItems.indexOf('resources') !== -1;
194
- var hasAccount = menuItems.indexOf('account') !== -1;
195
- return [!hasResources && user !== null ? 'resources' : null].concat(_toConsumableArray(menuItems), [!hasAccount && menuItems.indexOf('separator') === -1 ? 'separator' : null, !hasAccount ? 'account' : null]).filter(function (it) {
196
- return it !== null;
197
- }).reduce(function (currentItems, item, index) {
198
- if (item === 'resources') {
199
- return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement(ResourcesMenu$1, {
200
- key: "menu-item-resource-".concat(index + 1),
201
- className: "navbar-nav",
202
- itemClassName: "nav-item",
203
- linkClassName: "nav-link"
204
- })]);
205
- }
206
- if (item === 'account') {
207
- return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement(AccountMenu$1, {
208
- key: "menu-item-account-".concat(index + 1),
209
- className: "navbar-nav",
210
- itemClassName: "nav-item",
211
- linkClassName: "nav-link"
212
- })]);
213
- }
214
- if (item === 'separator') {
215
- return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement("span", {
216
- key: "menu-item-spacer-".concat(index + 1),
217
- className: "ms-auto"
218
- })]);
219
- }
220
- var lastItem = currentItems.length > 0 ? currentItems[currentItems.length - 1] : null;
221
- return isArray(lastItem) ? [].concat(_toConsumableArray(currentItems.slice(0, currentItems.length - 1)), [[].concat(_toConsumableArray(lastItem), [item])]) : [].concat(_toConsumableArray(currentItems), [[item]]);
222
- }, []).map(function (it, index) {
223
- return isArray(it) ? /*#__PURE__*/React.createElement(Menu, {
224
- items: it,
225
- key: "submenu-item-".concat(index + 1),
226
- className: "navbar-nav",
227
- itemClassName: "nav-item",
228
- linkClassName: "nav-link"
229
- }) : it;
230
- });
231
- }, [main]);
232
- return /*#__PURE__*/React.createElement(Navbar, Object.assign({
233
- theme: background
234
- }, props), name !== null ? /*#__PURE__*/React.createElement(Link, {
235
- href: route('home'),
236
- className: "navbar-brand"
237
- }, name) : null, items);
238
- };
239
- MainNavbar.propTypes = propTypes$h;
240
- MainNavbar.defaultProps = defaultProps$g;
241
- var MainNavbar$1 = MainNavbar;
242
-
243
- var styles$1 = {};
244
-
245
- var propTypes$g = {
246
- children: PropTypes.node.isRequired,
247
- fullscreen: PropTypes.bool
248
- };
249
- var defaultProps$f = {
250
- fullscreen: false
251
- };
252
- var MainLayout = function MainLayout(_ref) {
253
- var _ref2;
254
- var children = _ref.children,
255
- fullscreen = _ref.fullscreen;
256
- var _usePanneauColorSchem = usePanneauColorScheme(),
257
- _usePanneauColorSchem2 = _usePanneauColorSchem.theme,
258
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2,
259
- _usePanneauColorSchem3 = _usePanneauColorSchem.background,
260
- background = _usePanneauColorSchem3 === void 0 ? null : _usePanneauColorSchem3,
261
- _usePanneauColorSchem4 = _usePanneauColorSchem.text,
262
- text = _usePanneauColorSchem4 === void 0 ? null : _usePanneauColorSchem4;
263
- return /*#__PURE__*/React.createElement("div", {
264
- className: classNames([styles$1.container, 'd-flex', 'flex-column', 'min-vh-100']),
265
- "data-bs-theme": theme !== null ? theme : null
266
- }, /*#__PURE__*/React.createElement(MainNavbar$1, {
267
- className: classNames(['border-bottom', 'sticky-top', 'px-3'])
268
- }), /*#__PURE__*/React.createElement("div", {
269
- className: classNames(['flex-grow-1', (_ref2 = {
270
- 'd-flex flex-column': fullscreen
271
- }, _defineProperty(_ref2, "bg-".concat(background), background !== null), _defineProperty(_ref2, "text-".concat(text), text !== null), _ref2)])
272
- }, children), /*#__PURE__*/React.createElement(Modals, null));
273
- };
274
- MainLayout.propTypes = propTypes$g;
275
- MainLayout.defaultProps = defaultProps$f;
276
- var MainLayout$1 = MainLayout;
277
-
278
- var propTypes$f = {
279
- title: PropTypes$1.label,
280
- actions: PropTypes.node,
281
- small: PropTypes.bool,
282
- className: PropTypes.string,
283
- children: PropTypes.node
284
- };
285
- var defaultProps$e = {
286
- title: null,
287
- actions: null,
288
- small: false,
289
- className: null,
290
- children: null
291
- };
292
- var PageHeader = function PageHeader(_ref) {
293
- var _ref2;
294
- var title = _ref.title,
295
- actions = _ref.actions,
296
- small = _ref.small,
297
- className = _ref.className,
298
- children = _ref.children;
299
- // TODO: fix page header components
300
- // const { components } = usePanneau();
301
- // console.log('page-header', components); // eslint-disable-line
302
- var _usePanneauColorSchem = usePanneauColorScheme(),
303
- text = _usePanneauColorSchem.text,
304
- background = _usePanneauColorSchem.background;
305
- var inner = /*#__PURE__*/React.createElement("div", {
306
- className: "d-flex align-items-center flex-wrap"
307
- }, title !== null ? /*#__PURE__*/React.createElement("h1", {
308
- className: classNames(['mb-0', {
309
- h2: small
310
- }])
311
- }, /*#__PURE__*/React.createElement(Label, null, title)) : null, actions !== null ? /*#__PURE__*/React.createElement("div", {
312
- className: "ms-auto"
313
- }, actions) : null);
314
- return /*#__PURE__*/React.createElement("div", {
315
- className: classNames(['py-4', (_ref2 = {}, _defineProperty(_ref2, "bg-".concat(background), background !== null), _defineProperty(_ref2, "text-".concat(text), text !== null), _defineProperty(_ref2, "border-bottom", background || text !== null), _defineProperty(_ref2, className, className !== null), _ref2)])
316
- }, /*#__PURE__*/React.createElement("div", {
317
- className: "container-sm"
318
- }, small ? /*#__PURE__*/React.createElement("div", {
319
- className: "row justify-content-center"
320
- }, /*#__PURE__*/React.createElement("div", {
321
- className: "col-12 col-md-8 col-lg-7"
322
- }, inner)) : inner), children);
323
- };
324
- PageHeader.propTypes = propTypes$f;
325
- PageHeader.defaultProps = defaultProps$e;
326
- var PageHeader$1 = PageHeader;
327
-
328
- var propTypes$e = {
329
- resource: PropTypes$1.resource.isRequired
330
- };
331
- var defaultProps$d = {};
332
- var ResourceCreatePage = function ResourceCreatePage(_ref) {
333
- var resource = _ref.resource;
334
- var _useLocation = useLocation(),
335
- _useLocation2 = _slicedToArray(_useLocation, 2),
336
- search = _useLocation2[0].search,
337
- navigate = _useLocation2[1];
338
- var resourceRoute = useResourceUrlGenerator(resource);
339
- var _useMemo = useMemo(function () {
340
- return queryString.parse(search, {
341
- arrayFormat: 'bracket'
342
- });
343
- }, [search]),
344
- _useMemo$type = _useMemo.type,
345
- type = _useMemo$type === void 0 ? null : _useMemo$type;
346
- var resourceValues = useResourceValues(resource);
347
- var typeName = useResourceTypeName(resource, type);
348
- var onSuccess = useCallback(function () {
349
- navigate("".concat(resourceRoute('index'), "?created=true"));
350
- }, [navigate, resourceRoute]);
351
- return /*#__PURE__*/React.createElement(ResourceProvider, {
352
- resource: resource
353
- }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
354
- title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {
355
- values: resourceValues,
356
- id: "6viUpq",
357
- defaultMessage: [{
358
- "type": 0,
359
- "value": "Create "
360
- }, {
361
- "type": 1,
362
- "value": "a_singular"
363
- }]
364
- }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
365
- className: "text-body-secondary"
366
- }, " (", typeName, ")") : null),
367
- small: true
368
- }), /*#__PURE__*/React.createElement("div", {
369
- className: "container-sm py-4"
370
- }, /*#__PURE__*/React.createElement("div", {
371
- className: "row justify-content-center"
372
- }, /*#__PURE__*/React.createElement("div", {
373
- className: "col-12 col-md-8 col-lg-7"
374
- }, /*#__PURE__*/React.createElement(ResourceForm, {
375
- resource: resource,
376
- type: type,
377
- onSuccess: onSuccess
378
- }))))));
379
- };
380
- ResourceCreatePage.propTypes = propTypes$e;
381
- ResourceCreatePage.defaultProps = defaultProps$d;
382
- var ResourceCreate = ResourceCreatePage;
383
-
384
- var propTypes$d = {
385
- itemId: PropTypes.string.isRequired,
386
- resource: PropTypes$1.resource.isRequired
387
- };
388
- var defaultProps$c = {};
389
- var ResourceDeletePage = function ResourceDeletePage(_ref) {
390
- var itemId = _ref.itemId,
391
- resource = _ref.resource;
392
- var _useLocation = useLocation(),
393
- _useLocation2 = _slicedToArray(_useLocation, 2),
394
- navigate = _useLocation2[1];
395
- var resourceRoute = useResourceUrlGenerator(resource);
396
- var _useResourceItem = useResourceItem(resource, itemId),
397
- item = _useResourceItem.item;
398
- var _ref2 = item || {},
399
- _ref2$type = _ref2.type,
400
- type = _ref2$type === void 0 ? null : _ref2$type;
401
- var resourceValues = useResourceValues(resource);
402
- var typeName = useResourceTypeName(resource, type);
403
- var onSuccess = useCallback(function () {
404
- return navigate("".concat(resourceRoute('index'), "?deleted=true"));
405
- }, [navigate, resourceRoute]);
406
- return /*#__PURE__*/React.createElement(ResourceProvider, {
407
- resource: resource
408
- }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
409
- title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {
410
- values: resourceValues,
411
- id: "zN5N/Q",
412
- defaultMessage: [{
413
- "type": 0,
414
- "value": "Delete "
415
- }, {
416
- "type": 1,
417
- "value": "a_singular"
418
- }]
419
- }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
420
- className: "text-body-secondary"
421
- }, " (", typeName, ")") : null),
422
- small: true
423
- }), /*#__PURE__*/React.createElement("div", {
424
- className: "container-sm py-4"
425
- }, /*#__PURE__*/React.createElement("div", {
426
- className: "row justify-content-center"
427
- }, /*#__PURE__*/React.createElement("div", {
428
- className: "col-12 col-md-8 col-lg-7"
429
- }, item !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
430
- resource: resource,
431
- item: item,
432
- onSuccess: onSuccess,
433
- isDelete: true
434
- }) : null)))));
435
- };
436
- ResourceDeletePage.propTypes = propTypes$d;
437
- ResourceDeletePage.defaultProps = defaultProps$c;
438
- var ResourceDelete = ResourceDeletePage;
439
-
440
- var propTypes$c = {
441
- itemId: PropTypes.string.isRequired,
442
- resource: PropTypes$1.resource.isRequired
443
- };
444
- var defaultProps$b = {};
445
- var ResourceEditPage = function ResourceEditPage(_ref) {
446
- var itemId = _ref.itemId,
447
- resource = _ref.resource;
448
- var _useResourceItem = useResourceItem(resource, itemId),
449
- item = _useResourceItem.item;
450
- var _ref2 = item || {},
451
- _ref2$type = _ref2.type,
452
- type = _ref2$type === void 0 ? null : _ref2$type;
453
- var _useState = useState(item),
454
- _useState2 = _slicedToArray(_useState, 2),
455
- editItem = _useState2[0],
456
- setEditItem = _useState2[1];
457
- var typeName = useResourceTypeName(resource, type);
458
- var onSuccess = useCallback(function (newItem) {
459
- return setEditItem(newItem);
460
- }, []);
461
- useEffect(function () {
462
- setEditItem(item);
463
- }, [item, setEditItem]);
464
- var resourceValues = useResourceValues(resource);
465
- return /*#__PURE__*/React.createElement(ResourceProvider, {
466
- resource: resource
467
- }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
468
- title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedMessage, {
469
- values: resourceValues,
470
- id: "mCfzkJ",
471
- defaultMessage: [{
472
- "type": 0,
473
- "value": "Edit "
474
- }, {
475
- "type": 1,
476
- "value": "a_singular"
477
- }]
478
- }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
479
- className: "text-body-secondary"
480
- }, " (", typeName, ")") : null),
481
- small: true
482
- }), /*#__PURE__*/React.createElement("div", {
483
- className: "container-sm py-4"
484
- }, /*#__PURE__*/React.createElement("div", {
485
- className: "row justify-content-center"
486
- }, /*#__PURE__*/React.createElement("div", {
487
- className: "col-12 col-md-8 col-lg-7"
488
- }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
489
- resource: resource,
490
- item: editItem,
491
- type: type,
492
- onSuccess: onSuccess
493
- }) : null)))));
494
- };
495
- ResourceEditPage.propTypes = propTypes$c;
496
- ResourceEditPage.defaultProps = defaultProps$b;
497
- var ResourceEdit = ResourceEditPage;
498
-
499
- var propTypes$b = {
500
- resource: PropTypes$1.resource.isRequired,
501
- className: PropTypes.string
502
- };
503
- var defaultProps$a = {
504
- className: null
505
- };
506
- var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
507
- var resource = _ref.resource,
508
- className = _ref.className;
509
- var _resource$types = resource.types,
510
- types = _resource$types === void 0 ? null : _resource$types;
511
- // const intl = useIntl();
512
- var resourceRoute = useResourceUrlGenerator(resource);
513
- var resourceValues = useResourceValues(resource);
514
- var _useState = useState(false),
515
- _useState2 = _slicedToArray(_useState, 2),
516
- dropdownOpened = _useState2[0],
517
- setDropdownOpened = _useState2[1];
518
- var onClickDropdown = useCallback(function (e) {
519
- e.preventDefault();
520
- e.stopPropagation();
521
- setDropdownOpened(!dropdownOpened);
522
- }, [setDropdownOpened, dropdownOpened]);
523
- var finalTypes = types !== null ? types.filter(function (_ref2) {
524
- var _ref2$settings = _ref2.settings,
525
- _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
526
- _ref2$settings2$canCr = _ref2$settings2.canCreate,
527
- canCreate = _ref2$settings2$canCr === void 0 ? true : _ref2$settings2$canCr;
528
- return canCreate;
529
- }) : null;
530
- var hasMultipleTypes = finalTypes !== null && finalTypes.length > 1;
531
- var onDropdownClickOutside = useCallback(function () {
532
- if (dropdownOpened) {
533
- setDropdownOpened(false);
534
- }
535
- }, [setDropdownOpened, dropdownOpened]);
536
- var button = /*#__PURE__*/React.createElement(Button, {
537
- href: !hasMultipleTypes ? "".concat(resourceRoute('create')).concat(finalTypes !== null && finalTypes.length === 1 ? "?type=".concat(finalTypes[0].id) : '') : '#',
538
- size: "lg",
539
- theme: "primary",
540
- className: classNames([_defineProperty({
541
- 'dropdown-toggle': hasMultipleTypes
542
- }, className, className !== null)]),
543
- onClick: hasMultipleTypes ? onClickDropdown : null
544
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
545
- values: resourceValues,
546
- id: "l+ddDH",
547
- defaultMessage: [{
548
- "type": 0,
549
- "value": "Create "
550
- }, {
551
- "type": 1,
552
- "value": "a_singular"
553
- }]
554
- }));
555
- return hasMultipleTypes ? /*#__PURE__*/React.createElement("div", {
556
- className: classNames(['dropdown', {
557
- show: dropdownOpened
558
- }])
559
- }, button, /*#__PURE__*/React.createElement(Dropdown, {
560
- items: finalTypes.map(function (it) {
561
- return {
562
- id: it.id,
563
- label: it.name,
564
- href: "".concat(resourceRoute('create'), "?type=").concat(it.id)
565
- };
566
- }),
567
- visible: dropdownOpened,
568
- align: "end",
569
- onClickOutside: onDropdownClickOutside
570
- })) : button;
571
- };
572
- ResourceCreateButtom.propTypes = propTypes$b;
573
- ResourceCreateButtom.defaultProps = defaultProps$a;
574
- var ResourceCreateButton = ResourceCreateButtom;
575
-
576
- var _excluded$3 = ["resource"];
577
- var propTypes$a = {
578
- resource: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
579
- id: PropTypes.string
580
- })]).isRequired
581
- };
582
-
583
- // Kept for backward compatibility with exports
584
- var ResourceItemsList = function ResourceItemsList(_ref) {
585
- var resource = _ref.resource,
586
- props = _objectWithoutProperties(_ref, _excluded$3);
587
- var _ref2 = isObject(resource) ? resource : {
588
- id: resource
589
- },
590
- _ref2$id = _ref2.id,
591
- finalResource = _ref2$id === void 0 ? null : _ref2$id;
592
- return /*#__PURE__*/React.createElement(ResourceList, Object.assign({
593
- resource: finalResource
594
- }, props));
595
- };
596
- ResourceItemsList.propTypes = propTypes$a;
597
- var ResourceItemsList$1 = ResourceItemsList;
598
-
599
- var _excluded$2 = ["id", "component"];
600
- var propTypes$9 = {
601
- resource: PropTypes$1.resource.isRequired,
602
- defaultActions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])) // eslint-disable-line react/forbid-prop-types
603
- };
604
-
605
- var defaultProps$9 = {
606
- defaultActions: ['create']
607
- };
608
- var ResourceIndexPage = function ResourceIndexPage(_ref) {
609
- var resource = _ref.resource,
610
- defaultActions = _ref.defaultActions;
611
- var _usePanneauColorSchem = usePanneauColorScheme(),
612
- _usePanneauColorSchem2 = _usePanneauColorSchem.theme,
613
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
614
- var name = resource.name,
615
- _resource$settings = resource.settings,
616
- settings = _resource$settings === void 0 ? {} : _resource$settings,
617
- _resource$index = resource.index,
618
- index = _resource$index === void 0 ? {} : _resource$index;
619
- var _ref2 = settings || {},
620
- _ref2$canCreate = _ref2.canCreate,
621
- canCreate = _ref2$canCreate === void 0 ? true : _ref2$canCreate,
622
- _ref2$indexIsPaginate = _ref2.indexIsPaginated,
623
- paginated = _ref2$indexIsPaginate === void 0 ? false : _ref2$indexIsPaginate;
624
- var _ref3 = index || {},
625
- _ref3$actions = _ref3.actions,
626
- actions = _ref3$actions === void 0 ? null : _ref3$actions;
627
- var finalActions = useMemo(function () {
628
- return (actions || defaultActions.filter(function (it) {
629
- return it !== 'create' || canCreate;
630
- })).map(function (it) {
631
- return it === 'create' ? {
632
- id: 'create',
633
- component: ResourceCreateButton,
634
- size: 'lg',
635
- theme: 'primary'
636
- } : it;
637
- });
638
- }, [canCreate, actions]);
639
- var resourceValues = useResourceValues(resource);
640
- var componentsManager = useComponentsManager();
641
- var _useLocation = useLocation(),
642
- _useLocation2 = _slicedToArray(_useLocation, 2),
643
- search = _useLocation2[0].search,
644
- navigate = _useLocation2[1];
645
- var query = useMemo(function () {
646
- return queryString.parse(search, {
647
- arrayFormat: 'bracket'
648
- });
649
- }, [search]);
650
- var listQuery = useMemo(function () {
651
- return query;
652
- }, [query]); // TODO: omit routes
653
- var _ref4 = query || {},
654
- _ref4$created = _ref4.created,
655
- created = _ref4$created === void 0 ? false : _ref4$created,
656
- _ref4$deleted = _ref4.deleted,
657
- deleted = _ref4$deleted === void 0 ? false : _ref4$deleted;
658
- var resourceRoute = useResourceUrlGenerator(resource);
659
- var url = resourceRoute('index');
660
- var onQueryChange = useCallback(function (submitQuery) {
661
- var newQuery = submitQuery !== null ? Object.keys(submitQuery).reduce(function (currentQuery, key) {
662
- var value = submitQuery[key];
663
- return value !== null ? _objectSpread(_objectSpread({}, currentQuery), {}, _defineProperty({}, key, value)) : currentQuery;
664
- }, null) : null;
665
- navigate("".concat(url).concat(newQuery !== null ? "?".concat(queryString.stringify(newQuery, {
666
- arrayFormat: 'bracket'
667
- })) : ''));
668
- }, [navigate, url, query, paginated]);
669
- var onQueryReset = useCallback(function () {
670
- var resetQuery = queryString.stringify(null, {
671
- arrayFormat: 'bracket'
672
- });
673
- navigate("".concat(url, "?").concat(resetQuery));
674
- }, [navigate, url, paginated]);
675
- var onClickCloseAlert = useCallback(function () {
676
- navigate(url, {
677
- replace: true
678
- });
679
- }, [navigate, url]);
680
- return /*#__PURE__*/React.createElement(ResourceProvider, {
681
- resource: resource
682
- }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
683
- title: name,
684
- actions: finalActions.length > 0 ? /*#__PURE__*/React.createElement("div", {
685
- className: "d-flex align-items-center"
686
- }, finalActions.map(function (_ref5) {
687
- var id = _ref5.id,
688
- _ref5$component = _ref5.component,
689
- component = _ref5$component === void 0 ? Button : _ref5$component,
690
- actionProps = _objectWithoutProperties(_ref5, _excluded$2);
691
- var ActionComponent = isString(component) ? componentsManager.getComponent(component) : component;
692
- return ActionComponent !== null ? /*#__PURE__*/React.createElement(ActionComponent, Object.assign({
693
- key: "action-".concat(id)
694
- }, actionProps, ActionComponent !== Button ? {
695
- resource: resource,
696
- query: query,
697
- onQueryChange: onQueryChange
698
- } : {})) : null;
699
- })) : null
700
- }), /*#__PURE__*/React.createElement("div", {
701
- className: classNames(['container-sm py-4'])
702
- }, created ? /*#__PURE__*/React.createElement(Alert, {
703
- className: "mb-4",
704
- onClose: onClickCloseAlert
705
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
706
- values: resourceValues,
707
- id: "bfP/d8",
708
- defaultMessage: [{
709
- "type": 1,
710
- "value": "The_singular"
711
- }, {
712
- "type": 0,
713
- "value": " has been created."
714
- }]
715
- })) : null, deleted ? /*#__PURE__*/React.createElement(Alert, {
716
- className: "mb-4",
717
- onClose: onClickCloseAlert
718
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
719
- values: resourceValues,
720
- id: "dkRdks",
721
- defaultMessage: [{
722
- "type": 1,
723
- "value": "The_singular"
724
- }, {
725
- "type": 0,
726
- "value": " has been deleted."
727
- }]
728
- })) : null, /*#__PURE__*/React.createElement(ResourceItemsList$1, {
729
- resource: resource,
730
- baseUrl: url,
731
- query: listQuery,
732
- paginated: paginated,
733
- onQueryChange: onQueryChange,
734
- onQueryReset: onQueryReset,
735
- theme: theme
736
- }))));
737
- };
738
- ResourceIndexPage.propTypes = propTypes$9;
739
- ResourceIndexPage.defaultProps = defaultProps$9;
740
- var ResourceIndex = ResourceIndexPage;
741
-
742
- var propTypes$8 = {
743
- resource: PropTypes$1.resource.isRequired,
744
- itemId: PropTypes.string.isRequired
745
- };
746
- var defaultProps$8 = {};
747
- var ResourceShowPage = function ResourceShowPage(_ref) {
748
- var resource = _ref.resource,
749
- itemId = _ref.itemId;
750
- var name = resource.name;
751
- var _useResourceItem = useResourceItem(resource, itemId),
752
- item = _useResourceItem.item;
753
- var _ref2 = item || {},
754
- _ref2$type = _ref2.type,
755
- type = _ref2$type === void 0 ? null : _ref2$type;
756
- return /*#__PURE__*/React.createElement(ResourceProvider, {
757
- resource: resource
758
- }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
759
- title: "".concat(name, " #").concat(itemId),
760
- small: true
761
- }), /*#__PURE__*/React.createElement("div", {
762
- className: "container-sm py-4"
763
- }, /*#__PURE__*/React.createElement("div", {
764
- className: "row justify-content-center"
765
- }, /*#__PURE__*/React.createElement("div", {
766
- className: "col-12 col-md-8 col-lg-7"
767
- }, /*#__PURE__*/React.createElement(ResourceForm, {
768
- resource: resource,
769
- item: item,
770
- type: type,
771
- disabled: true
772
- }))))));
773
- };
774
- ResourceShowPage.propTypes = propTypes$8;
775
- ResourceShowPage.defaultProps = defaultProps$8;
776
- var ResourceShow = ResourceShowPage;
777
-
778
- /* eslint-disable react/jsx-props-no-spreading */
779
- var propTypes$7 = {};
780
- var defaultProps$7 = {};
781
- var HomePage = function HomePage() {
782
- var route = useUrlGenerator();
783
- var resources = usePanneauResources();
784
- var visibleResources = resources.filter(function (_ref) {
785
- var _ref$settings = _ref.settings,
786
- _ref$settings2 = _ref$settings === void 0 ? {} : _ref$settings,
787
- _ref$settings2$hideIn = _ref$settings2.hideInNavbar,
788
- hideInNavbar = _ref$settings2$hideIn === void 0 ? false : _ref$settings2$hideIn;
789
- return !hideInNavbar;
790
- });
791
- return /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement("div", {
792
- className: "container-sm py-4"
793
- }, visibleResources.map(function (resource) {
794
- var _ref2 = resource || {},
795
- resourceId = _ref2.id;
796
- var resourceValues = useResourceValues(resource);
797
- return /*#__PURE__*/React.createElement(Link, {
798
- className: "d-block my-2",
799
- key: "resource-link-".concat(resourceId),
800
- href: route('resources.index', {
801
- resource: resourceId
802
- })
803
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
804
- values: resourceValues,
805
- id: "FntHPK",
806
- defaultMessage: [{
807
- "type": 0,
808
- "value": "View "
809
- }, {
810
- "type": 1,
811
- "value": "the_plural"
812
- }]
813
- }));
814
- })));
815
- };
816
- HomePage.propTypes = propTypes$7;
817
- HomePage.defaultProps = defaultProps$7;
818
- var HomePage$1 = HomePage;
819
-
820
- var propTypes$6 = {};
821
- var defaultProps$6 = {};
822
- var AccountPage = function AccountPage() {
823
- return /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement("div", {
824
- className: "container-sm py-4"
825
- }, "Account page"));
826
- };
827
- AccountPage.propTypes = propTypes$6;
828
- AccountPage.defaultProps = defaultProps$6;
829
- var AccountPage$1 = AccountPage;
830
-
831
- /* eslint-disable react/jsx-props-no-spreading */
832
- var propTypes$5 = {
833
- className: PropTypes.string,
834
- onSuccess: PropTypes.func
835
- };
836
- var defaultProps$5 = {
837
- className: null,
838
- onSuccess: null
839
- };
840
- var LoginForm = function LoginForm(_ref) {
841
- var className = _ref.className,
842
- onSuccess = _ref.onSuccess;
843
- var url = useUrlGenerator();
844
- var _useAuth = useAuth(),
845
- login = _useAuth.login;
846
- var postForm = useCallback(function (action, _ref2) {
847
- var email = _ref2.email,
848
- password = _ref2.password;
849
- return login(email, password);
850
- }, [login]);
851
- var FormComponents = useFormsComponents();
852
- var FormComponent = getComponentFromName('login', FormComponents);
853
- return FormComponent !== null ? /*#__PURE__*/React.createElement(FormComponent, {
854
- action: url('auth.login'),
855
- postForm: postForm,
856
- onComplete: onSuccess,
857
- className: className,
858
- submitButtonLabel: /*#__PURE__*/React.createElement(FormattedMessage, {
859
- id: "g6qbbX",
860
- defaultMessage: [{
861
- "type": 0,
862
- "value": "Log in"
863
- }]
864
- })
865
- }) : null;
866
- };
867
- LoginForm.propTypes = propTypes$5;
868
- LoginForm.defaultProps = defaultProps$5;
869
- var LoginForm$1 = LoginForm;
870
-
871
- var styles = {};
872
-
873
- var propTypes$4 = {
874
- children: PropTypes.node.isRequired,
875
- fullscreen: PropTypes.bool
876
- };
877
- var defaultProps$4 = {
878
- fullscreen: false
879
- };
880
- var GuestLayout = function GuestLayout(_ref) {
881
- var _classNames;
882
- var fullscreen = _ref.fullscreen,
883
- children = _ref.children;
884
- var _usePanneauColorSchem = usePanneauColorScheme(),
885
- _usePanneauColorSchem2 = _usePanneauColorSchem.theme,
886
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2,
887
- _usePanneauColorSchem3 = _usePanneauColorSchem.background,
888
- background = _usePanneauColorSchem3 === void 0 ? null : _usePanneauColorSchem3,
889
- _usePanneauColorSchem4 = _usePanneauColorSchem.text,
890
- text = _usePanneauColorSchem4 === void 0 ? null : _usePanneauColorSchem4;
891
- return /*#__PURE__*/React.createElement("div", {
892
- className: classNames([styles.container, {
893
- 'd-flex flex-column min-vh-100': fullscreen
894
- }]),
895
- "data-bs-theme": theme !== null ? theme : null
896
- }, /*#__PURE__*/React.createElement(MainNavbar$1, {
897
- className: classNames(['sticky-top', 'px-3'])
898
- }), /*#__PURE__*/React.createElement("div", {
899
- className: classNames((_classNames = {
900
- 'd-flex flex-column flex-grow-1': fullscreen
901
- }, _defineProperty(_classNames, "bg-".concat(background), background !== null), _defineProperty(_classNames, "text-".concat(text), text !== null), _classNames))
902
- }, /*#__PURE__*/React.createElement("div", {
903
- className: classNames({
904
- 'w-100 my-auto': fullscreen
905
- })
906
- }, children)));
907
- };
908
- GuestLayout.propTypes = propTypes$4;
909
- GuestLayout.defaultProps = defaultProps$4;
910
- var GuestLayout$1 = GuestLayout;
911
-
912
- /* eslint-disable react/jsx-props-no-spreading */
913
- var propTypes$3 = {};
914
- var defaultProps$3 = {};
915
- var LoginPage = function LoginPage() {
916
- var route = useUrlGenerator();
917
- // Sadly necessary to update cookies and routes correctly from the backend,
918
- // make it post directly instead of api call
919
- var onSuccess = useCallback(function () {
920
- window.location.href = route('home');
921
- }, [route]);
922
- return /*#__PURE__*/React.createElement(GuestLayout$1, {
923
- fullscreen: true
924
- }, /*#__PURE__*/React.createElement("div", {
925
- className: "container-sm py-4"
926
- }, /*#__PURE__*/React.createElement("div", {
927
- className: "row justify-content-center"
928
- }, /*#__PURE__*/React.createElement("div", {
929
- className: "col-12 col-sm-8 col-md-6"
930
- }, /*#__PURE__*/React.createElement("h1", {
931
- className: "mb-4"
932
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
933
- id: "AeOZq+",
934
- defaultMessage: [{
935
- "type": 0,
936
- "value": "Login"
937
- }]
938
- })), /*#__PURE__*/React.createElement(LoginForm$1, {
939
- onSuccess: onSuccess
940
- })))));
941
- };
942
- LoginPage.propTypes = propTypes$3;
943
- LoginPage.defaultProps = defaultProps$3;
944
- var LoginPage$1 = LoginPage;
945
-
946
- var messages = defineMessages({
947
- metaTitle401: {
948
- "id": "HOobY2",
949
- "defaultMessage": [{
950
- "type": 0,
951
- "value": "Error 401"
952
- }]
953
- },
954
- title401: {
955
- "id": "6nwWPR",
956
- "defaultMessage": [{
957
- "type": 0,
958
- "value": "Error 401"
959
- }]
960
- },
961
- description401: {
962
- "id": "82P2dS",
963
- "defaultMessage": [{
964
- "type": 0,
965
- "value": "You are not authorized to access this page."
966
- }]
967
- },
968
- metaTitle403: {
969
- "id": "+6cCPF",
970
- "defaultMessage": [{
971
- "type": 0,
972
- "value": "Error 403"
973
- }]
974
- },
975
- title403: {
976
- "id": "Pih2UO",
977
- "defaultMessage": [{
978
- "type": 0,
979
- "value": "Error 403"
980
- }]
981
- },
982
- description403: {
983
- "id": "8HFiMs",
984
- "defaultMessage": [{
985
- "type": 0,
986
- "value": "Access to this page is forbidden"
987
- }]
988
- },
989
- metaTitle404: {
990
- "id": "US/AMe",
991
- "defaultMessage": [{
992
- "type": 0,
993
- "value": "Error 404"
994
- }]
995
- },
996
- title404: {
997
- "id": "6Ie+vL",
998
- "defaultMessage": [{
999
- "type": 0,
1000
- "value": "Error 404"
1001
- }]
1002
- },
1003
- description404: {
1004
- "id": "wKPI1y",
1005
- "defaultMessage": [{
1006
- "type": 0,
1007
- "value": "This page doesn’t exist"
1008
- }]
1009
- },
1010
- metaTitle500: {
1011
- "id": "ejwBSw",
1012
- "defaultMessage": [{
1013
- "type": 0,
1014
- "value": "Error 500"
1015
- }]
1016
- },
1017
- title500: {
1018
- "id": "owrRHV",
1019
- "defaultMessage": [{
1020
- "type": 0,
1021
- "value": "Error 500"
1022
- }]
1023
- },
1024
- description500: {
1025
- "id": "yALN2p",
1026
- "defaultMessage": [{
1027
- "type": 0,
1028
- "value": "There was an error"
1029
- }]
1030
- },
1031
- gotoHome: {
1032
- "id": "hezcGl",
1033
- "defaultMessage": [{
1034
- "type": 0,
1035
- "value": "Go to home page"
1036
- }]
1037
- }
1038
- });
1039
- var propTypes$2 = {
1040
- statusCode: PropTypes$1.statusCode
1041
- };
1042
- var defaultProps$2 = {
1043
- statusCode: null
1044
- };
1045
- var ErrorPage = function ErrorPage(_ref) {
1046
- var statusCode = _ref.statusCode;
1047
- return /*#__PURE__*/React.createElement(GuestLayout$1, {
1048
- fullscreen: true
1049
- }, /*#__PURE__*/React.createElement("div", {
1050
- className: "container-sm py-4"
1051
- }, /*#__PURE__*/React.createElement("div", {
1052
- className: "row justify-content-center"
1053
- }, /*#__PURE__*/React.createElement("div", {
1054
- className: "col-12 col-sm-8 col-md-6"
1055
- }, /*#__PURE__*/React.createElement("h1", null, /*#__PURE__*/React.createElement(Label, null, messages["title".concat(statusCode || 404)])), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(Label, null, messages["description".concat(statusCode || 404)]))))));
1056
- };
1057
- ErrorPage.propTypes = propTypes$2;
1058
- ErrorPage.defaultProps = defaultProps$2;
1059
- var ErrorPage$1 = ErrorPage;
1060
-
1061
- var _excluded$1 = ["path", "component"];
1062
- var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1063
- var route = _ref.route,
1064
- componentsManager = _ref.componentsManager,
1065
- _ref$pages = _ref.pages,
1066
- pages = _ref$pages === void 0 ? {} : _ref$pages;
1067
- var resourceId = resource.id,
1068
- _resource$pages = resource.pages,
1069
- resourcePages = _resource$pages === void 0 ? {} : _resource$pages,
1070
- _resource$extraRoutes = resource.extraRoutes,
1071
- extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes;
1072
-
1073
- // Load custom pages from resource
1074
- var _ref2 = pages || {},
1075
- _ref2$index = _ref2.index,
1076
- indexPage = _ref2$index === void 0 ? null : _ref2$index,
1077
- _ref2$show = _ref2.show,
1078
- showPage = _ref2$show === void 0 ? null : _ref2$show,
1079
- _ref2$create = _ref2.create,
1080
- createPage = _ref2$create === void 0 ? null : _ref2$create,
1081
- _ref2$edit = _ref2.edit,
1082
- editPage = _ref2$edit === void 0 ? null : _ref2$edit,
1083
- _ref2$delete = _ref2["delete"],
1084
- deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1085
- var _ref3 = resourcePages || {},
1086
- _ref3$index = _ref3.index,
1087
- resourceIndexPage = _ref3$index === void 0 ? null : _ref3$index,
1088
- _ref3$show = _ref3.show,
1089
- resourceShowPage = _ref3$show === void 0 ? null : _ref3$show,
1090
- _ref3$create = _ref3.create,
1091
- resourceCreatePage = _ref3$create === void 0 ? null : _ref3$create,
1092
- _ref3$edit = _ref3.edit,
1093
- resourceEditPage = _ref3$edit === void 0 ? null : _ref3$edit,
1094
- _ref3$delete = _ref3["delete"],
1095
- resourceDeletePage = _ref3$delete === void 0 ? null : _ref3$delete;
1096
- var ResourceIndexComponent = componentsManager.getComponent(resourceIndexPage === null || resourceIndexPage === void 0 ? void 0 : resourceIndexPage.component) || componentsManager.getComponent(indexPage === null || indexPage === void 0 ? void 0 : indexPage.component) || ResourceIndex;
1097
- var ResourceShowComponent = componentsManager.getComponent(resourceShowPage === null || resourceShowPage === void 0 ? void 0 : resourceShowPage.component) || componentsManager.getComponent(showPage === null || showPage === void 0 ? void 0 : showPage.component) || ResourceShow;
1098
- var ResourceCreateComponent = componentsManager.getComponent(resourceCreatePage === null || resourceCreatePage === void 0 ? void 0 : resourceCreatePage.component) || componentsManager.getComponent(createPage === null || createPage === void 0 ? void 0 : createPage.component) || ResourceCreate;
1099
- var ResourceEditComponent = componentsManager.getComponent(resourceEditPage === null || resourceEditPage === void 0 ? void 0 : resourceEditPage.component) || componentsManager.getComponent(editPage === null || editPage === void 0 ? void 0 : editPage.component) || ResourceEdit;
1100
- var ResourceDeleteComponent = componentsManager.getComponent(resourceDeletePage === null || resourceDeletePage === void 0 ? void 0 : resourceDeletePage.component) || componentsManager.getComponent(deletePage === null || deletePage === void 0 ? void 0 : deletePage.component) || ResourceDelete;
1101
- return [/*#__PURE__*/React.createElement(Route, {
1102
- key: "".concat(resourceId, "-create"),
1103
- path: route('resources.create', {
1104
- resource: resourceId
1105
- }),
1106
- exact: true
1107
- }, function () {
1108
- return /*#__PURE__*/React.createElement(ResourceCreateComponent, {
1109
- resource: resource
1110
- });
1111
- }), /*#__PURE__*/React.createElement(Route, {
1112
- key: "".concat(resourceId, "-show"),
1113
- path: route('resources.show', {
1114
- resource: resourceId,
1115
- id: ':id'
1116
- })
1117
- }, function (_ref4) {
1118
- var _ref4$id = _ref4.id,
1119
- id = _ref4$id === void 0 ? null : _ref4$id;
1120
- return /*#__PURE__*/React.createElement(ResourceShowComponent, {
1121
- itemId: id,
1122
- resource: resource
1123
- });
1124
- }), /*#__PURE__*/React.createElement(Route, {
1125
- key: "".concat(resourceId, "-edit"),
1126
- path: route('resources.edit', {
1127
- resource: resourceId,
1128
- id: ':id'
1129
- })
1130
- }, function (_ref5) {
1131
- var _ref5$id = _ref5.id,
1132
- id = _ref5$id === void 0 ? null : _ref5$id;
1133
- return /*#__PURE__*/React.createElement(ResourceEditComponent, {
1134
- itemId: id,
1135
- resource: resource
1136
- });
1137
- }), /*#__PURE__*/React.createElement(Route, {
1138
- key: "".concat(resourceId, "-delete"),
1139
- path: route('resources.delete', {
1140
- resource: resourceId,
1141
- id: ':id'
1142
- })
1143
- }, function (_ref6) {
1144
- var _ref6$id = _ref6.id,
1145
- id = _ref6$id === void 0 ? null : _ref6$id;
1146
- return /*#__PURE__*/React.createElement(ResourceDeleteComponent, {
1147
- itemId: id,
1148
- resource: resource
1149
- });
1150
- })].concat(_toConsumableArray(extraRoutes.map(function (_ref7) {
1151
- var path = _ref7.path,
1152
- component = _ref7.component,
1153
- pageProps = _objectWithoutProperties(_ref7, _excluded$1);
1154
- var RouteComponent = componentsManager.getComponent(component);
1155
- return RouteComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1156
- key: "route-".concat(path),
1157
- path: path
1158
- }, function () {
1159
- return /*#__PURE__*/React.createElement(RouteComponent, Object.assign({
1160
- resource: resource
1161
- }, pageProps));
1162
- }) : null;
1163
- })), [/*#__PURE__*/React.createElement(Route, {
1164
- key: "".concat(resourceId, "-index"),
1165
- path: route('resources.index', {
1166
- resource: resourceId
1167
- })
1168
- }, function () {
1169
- return /*#__PURE__*/React.createElement(ResourceIndexComponent, {
1170
- resource: resource
1171
- });
1172
- })]);
1173
- };
1174
- var createResourceRoutes$1 = createResourceRoutes;
1175
-
1176
- var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1177
- _excluded2 = ["path", "route", "component"];
1178
- var propTypes$1 = {
1179
- statusCode: PropTypes$1.statusCode
1180
- };
1181
- var defaultProps$1 = {
1182
- statusCode: null
1183
- };
1184
- var PanneauRoutes = function PanneauRoutes(_ref) {
1185
- var initialStatusCode = _ref.statusCode;
1186
- var routes = useRoutes();
1187
- var _useLocation = useLocation(),
1188
- _useLocation2 = _slicedToArray(_useLocation, 1),
1189
- pathname = _useLocation2[0].pathname;
1190
- var _useState = useState({
1191
- statusCode: initialStatusCode,
1192
- pathname: pathname
1193
- }),
1194
- _useState2 = _slicedToArray(_useState, 2),
1195
- _useState2$ = _useState2[0],
1196
- statusCode = _useState2$.statusCode,
1197
- lastPathname = _useState2$.pathname,
1198
- setInitialRequest = _useState2[1];
1199
- var user = useUser();
1200
- var route = useUrlGenerator();
1201
- var resources = usePanneauResources();
1202
- var componentsManager = usePagesComponentsManager();
1203
- useEffect(function () {
1204
- if (pathname !== lastPathname) {
1205
- setInitialRequest({
1206
- pathname: pathname,
1207
- statusCode: null
1208
- });
1209
- }
1210
- }, [pathname, lastPathname]);
1211
-
1212
- // Custom Pages
1213
- var _usePanneau = usePanneau(),
1214
- _usePanneau$pages = _usePanneau.pages,
1215
- pages = _usePanneau$pages === void 0 ? null : _usePanneau$pages,
1216
- routesDefinition = _usePanneau.routes;
1217
- var _ref2 = pages || {},
1218
- _ref2$home = _ref2.home,
1219
- homePage = _ref2$home === void 0 ? null : _ref2$home,
1220
- _ref2$login = _ref2.login,
1221
- loginPage = _ref2$login === void 0 ? null : _ref2$login,
1222
- _ref2$account = _ref2.account,
1223
- accountPage = _ref2$account === void 0 ? null : _ref2$account,
1224
- _ref2$error = _ref2.error,
1225
- errorPage = _ref2$error === void 0 ? null : _ref2$error;
1226
- _ref2.index;
1227
- _ref2.show;
1228
- _ref2.create;
1229
- _ref2.edit;
1230
- _ref2["delete"];
1231
- var otherPages = _objectWithoutProperties(_ref2, _excluded);
1232
- var customRoutes = useMemo(function () {
1233
- return [].concat(_toConsumableArray(Object.keys(routesDefinition).filter(function (key) {
1234
- return key.match(/^(resources\.|auth\.)/) === null && key !== 'home' && key !== 'account';
1235
- }).filter(function (key) {
1236
- var routeDef = routesDefinition[key];
1237
- return isObject(routeDef) && typeof routeDef.component !== 'undefined' && typeof routeDef.path !== 'undefined';
1238
- }).map(function (key) {
1239
- return routesDefinition[key];
1240
- })), _toConsumableArray(Object.keys(otherPages).map(function (key) {
1241
- return otherPages[key];
1242
- }).filter(function (_ref3) {
1243
- var _ref3$path = _ref3.path,
1244
- path = _ref3$path === void 0 ? null : _ref3$path,
1245
- _ref3$route = _ref3.route,
1246
- pageRoute = _ref3$route === void 0 ? null : _ref3$route;
1247
- return path !== null || pageRoute !== null;
1248
- })));
1249
- }, [routesDefinition, otherPages]);
1250
- var HomeComponent = componentsManager.getComponent(homePage === null || homePage === void 0 ? void 0 : homePage.component) || HomePage$1;
1251
- var LoginComponent = componentsManager.getComponent(loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || LoginPage$1;
1252
- var AccountComponent = componentsManager.getComponent(accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || AccountPage$1;
1253
- var ErrorComponent = componentsManager.getComponent(errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || ErrorPage$1;
1254
-
1255
- // If there is an error status code
1256
- if (statusCode !== null) {
1257
- return /*#__PURE__*/React.createElement(ErrorComponent, Object.assign({
1258
- statusCode: statusCode
1259
- }, errorPage));
1260
- }
1261
-
1262
- // If user is unauthenticated
1263
- if (user === null) {
1264
- return /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
1265
- path: routes['auth.login']
1266
- }, /*#__PURE__*/React.createElement(LoginComponent, loginPage)), /*#__PURE__*/React.createElement(Route, null, /*#__PURE__*/React.createElement(Redirect, {
1267
- to: "".concat(route('auth.login'), "?next=").concat(encodeURIComponent(pathname)),
1268
- replace: true
1269
- })));
1270
- }
1271
-
1272
- // Normal routes
1273
- return /*#__PURE__*/React.createElement(Switch, null, user !== null ? /*#__PURE__*/React.createElement(Route, {
1274
- path: routes['auth.login']
1275
- }, /*#__PURE__*/React.createElement(Redirect, {
1276
- to: routes.home,
1277
- replace: true
1278
- })) : null, resources.map(function (resource) {
1279
- var _ref4 = resource || {},
1280
- resourceId = _ref4.id;
1281
- return /*#__PURE__*/React.createElement(Fragment, {
1282
- key: "resource-".concat(resourceId)
1283
- }, createResourceRoutes$1(resource, {
1284
- route: route,
1285
- componentsManager: componentsManager,
1286
- pages: pages
1287
- }));
1288
- }), /*#__PURE__*/React.createElement(Route, {
1289
- path: routes.account
1290
- }, /*#__PURE__*/React.createElement(AccountComponent, accountPage)), customRoutes.map(function (_ref5) {
1291
- var _ref5$path = _ref5.path,
1292
- path = _ref5$path === void 0 ? null : _ref5$path,
1293
- _ref5$route = _ref5.route,
1294
- pageRoute = _ref5$route === void 0 ? null : _ref5$route,
1295
- component = _ref5.component,
1296
- props = _objectWithoutProperties(_ref5, _excluded2);
1297
- var PageComponent = componentsManager.getComponent(component);
1298
- var finalPath = path || routes[pageRoute];
1299
- return PageComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1300
- key: "custom-route-".concat(finalPath),
1301
- path: path || routes[pageRoute]
1302
- }, /*#__PURE__*/React.createElement(PageComponent, props)) : null;
1303
- }), /*#__PURE__*/React.createElement(Route, {
1304
- path: routes.home
1305
- }, /*#__PURE__*/React.createElement(HomeComponent, homePage)), /*#__PURE__*/React.createElement(Route, null, /*#__PURE__*/React.createElement(ErrorComponent, null)));
1306
- };
1307
- PanneauRoutes.propTypes = propTypes$1;
1308
- PanneauRoutes.defaultProps = defaultProps$1;
1309
- var Routes = PanneauRoutes;
1310
-
1311
- var pathToRegexpMatcher = createPathToRegexpMatcher();
1312
- var propTypes = {
1313
- definition: PropTypes$1.panneauDefinition.isRequired,
1314
- components: PropTypes.oneOfType([PropTypes.objectOf(PropTypes.elementType), PropTypes.objectOf(PropTypes.objectOf(PropTypes.elementType))]),
1315
- user: PropTypes$1.user,
1316
- memoryRouter: PropTypes.bool,
1317
- baseUrl: PropTypes.string,
1318
- uppy: PropTypes$1.uppy,
1319
- statusCode: PropTypes$1.statusCode
1320
- };
1321
- var defaultProps = {
1322
- components: null,
1323
- user: null,
1324
- memoryRouter: false,
1325
- baseUrl: null,
1326
- uppy: null,
1327
- statusCode: null
1328
- };
1329
- var Container = function Container(_ref) {
1330
- var definition = _ref.definition,
1331
- components = _ref.components,
1332
- user = _ref.user,
1333
- memoryRouter = _ref.memoryRouter,
1334
- baseUrl = _ref.baseUrl,
1335
- uppy = _ref.uppy,
1336
- statusCode = _ref.statusCode;
1337
- var _definition$intl = definition.intl,
1338
- _definition$intl2 = _definition$intl === void 0 ? {} : _definition$intl,
1339
- _definition$intl2$loc = _definition$intl2.locale,
1340
- locale = _definition$intl2$loc === void 0 ? 'en' : _definition$intl2$loc,
1341
- _definition$intl2$loc2 = _definition$intl2.locales,
1342
- locales = _definition$intl2$loc2 === void 0 ? [] : _definition$intl2$loc2,
1343
- _definition$routes = definition.routes,
1344
- routes = _definition$routes === void 0 ? {} : _definition$routes,
1345
- _definition$settings = definition.settings,
1346
- _definition$settings2 = _definition$settings === void 0 ? {} : _definition$settings,
1347
- _definition$settings3 = _definition$settings2.memoryRouter,
1348
- usesMemoryRouter = _definition$settings3 === void 0 ? false : _definition$settings3;
1349
- var isMemoryRouter = memoryRouter || usesMemoryRouter || false;
1350
- var extraMessages = useMemo(function () {
1351
- var _definition$intl3 = definition.intl,
1352
- _definition$intl4 = _definition$intl3 === void 0 ? {} : _definition$intl3,
1353
- _definition$intl4$mes = _definition$intl4.messages,
1354
- messages = _definition$intl4$mes === void 0 ? null : _definition$intl4$mes,
1355
- _definition$resources = definition.resources,
1356
- resources = _definition$resources === void 0 ? [] : _definition$resources;
1357
- return _objectSpread(_objectSpread({}, messages), resources.reduce(function (allMessages, _ref2) {
1358
- var id = _ref2.id,
1359
- _ref2$intl = _ref2.intl,
1360
- _ref2$intl2 = _ref2$intl === void 0 ? {} : _ref2$intl,
1361
- _ref2$intl2$messages = _ref2$intl2.messages,
1362
- resourceMessages = _ref2$intl2$messages === void 0 ? {} : _ref2$intl2$messages;
1363
- return _objectSpread(_objectSpread({}, allMessages), Object.keys(resourceMessages).reduce(function (allResourceMessages, key) {
1364
- return _objectSpread(_objectSpread({}, allResourceMessages), {}, _defineProperty({}, "resources.".concat(id, ".").concat(key), resourceMessages[key]));
1365
- }, {}));
1366
- }, {}));
1367
- }, [definition]);
1368
- var onUnauthorized = useCallback(function () {
1369
- window.location.href = baseUrl;
1370
- }, [baseUrl]);
1371
- var onLogout = useCallback(function () {
1372
- window.location.reload();
1373
- }, [baseUrl]);
1374
- var memoryLocationHook = useMemoryLocationHook();
1375
- return /*#__PURE__*/React.createElement(Router, {
1376
- hook: isMemoryRouter ? memoryLocationHook : null,
1377
- matcher: pathToRegexpMatcher
1378
- }, /*#__PURE__*/React.createElement(IntlProvider, {
1379
- locale: locale,
1380
- locales: locales,
1381
- extraMessages: extraMessages
1382
- }, /*#__PURE__*/React.createElement(PanneauProvider, {
1383
- definition: definition
1384
- }, /*#__PURE__*/React.createElement(UppyProvider, uppy, /*#__PURE__*/React.createElement(RoutesProvider, {
1385
- routes: routes
1386
- }, /*#__PURE__*/React.createElement(FieldsProvider, null, /*#__PURE__*/React.createElement(FormsProvider, null, /*#__PURE__*/React.createElement(ListsProvider, null, /*#__PURE__*/React.createElement(DisplaysProvider, null, /*#__PURE__*/React.createElement(FiltersProvider, null, /*#__PURE__*/React.createElement(ModalProvider, null, /*#__PURE__*/React.createElement(ModalsProvider, null, /*#__PURE__*/React.createElement(ApiProvider, {
1387
- baseUrl: baseUrl,
1388
- onUnauthorized: onUnauthorized
1389
- }, /*#__PURE__*/React.createElement(AuthProvider, {
1390
- user: user,
1391
- onLogout: onLogout
1392
- }, /*#__PURE__*/React.createElement(ComponentsProvider, {
1393
- components: components
1394
- }, /*#__PURE__*/React.createElement(Routes, {
1395
- statusCode: statusCode
1396
- }))))))))))))))));
1397
- };
1398
- Container.propTypes = propTypes;
1399
- Container.defaultProps = defaultProps;
1400
- var PanneauContainer = Container;
1401
-
1402
- /* eslint-disable react/jsx-props-no-spreading */
1403
-
1404
- // Kept for backward compatibility with exports
1405
- var ResourceFilters = function ResourceFilters(props) {
1406
- return /*#__PURE__*/React.createElement(Filters, props);
1407
- };
1408
- var ResourceFilters$1 = ResourceFilters;
1409
-
1410
- export { GuestLayout$1 as GuestLayout, MainLayout$1 as MainLayout, PageHeader$1 as PageHeader, ResourceFilters$1 as ResourceFilters, ResourceForm, ResourceItemsList$1 as ResourceItemsList, PanneauContainer as default };