@panneau/app 3.0.17 → 3.0.20

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