@panneau/app 3.0.247 → 3.0.248

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