@panneau/app 1.1.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js DELETED
@@ -1,1773 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
7
- var PropTypes = require('prop-types');
8
- var React = require('react');
9
- var reactRouter = require('react-router');
10
- var reactRouterDom = require('react-router-dom');
11
- var auth = require('@panneau/auth');
12
- var core = require('@panneau/core');
13
- var contexts = require('@panneau/core/contexts');
14
- var data = require('@panneau/data');
15
- var DisplaysProvider = require('@panneau/displays');
16
- var FieldsProvider = require('@panneau/fields');
17
- var FiltersProvider = require('@panneau/filters');
18
- var FormsProvider = require('@panneau/forms');
19
- var intl = require('@panneau/intl');
20
- var ListsProvider = require('@panneau/lists');
21
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
22
- var utils = require('@panneau/core/utils');
23
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
24
- var queryString = require('query-string');
25
- var reactIntl = require('react-intl');
26
- var hooks = require('@panneau/core/hooks');
27
- var classNames = require('classnames');
28
- var Button = require('@panneau/element-button');
29
- var Form = require('@panneau/element-form');
30
- var Navbar = require('@panneau/element-navbar');
31
- var Menu = require('@panneau/element-menu');
32
- var Label = require('@panneau/element-label');
33
- var isString = require('lodash/isString');
34
- var Alert = require('@panneau/element-alert');
35
- var Dropdown = require('@panneau/element-dropdown');
36
- var Pagination = require('@panneau/element-pagination');
37
- var _toPropertyKey = require('@babel/runtime/helpers/toPropertyKey');
38
- var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
39
- var reactFontawesome = require('@fortawesome/react-fontawesome');
40
- var FormGroup = require('@panneau/element-form-group');
41
-
42
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
43
-
44
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
45
- var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
46
- var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
47
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
48
- var DisplaysProvider__default = /*#__PURE__*/_interopDefaultLegacy(DisplaysProvider);
49
- var FieldsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FieldsProvider);
50
- var FiltersProvider__default = /*#__PURE__*/_interopDefaultLegacy(FiltersProvider);
51
- var FormsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FormsProvider);
52
- var ListsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ListsProvider);
53
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
54
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
55
- var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
56
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
57
- var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
58
- var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
59
- var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
60
- var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
61
- var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
62
- var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
63
- var Dropdown__default = /*#__PURE__*/_interopDefaultLegacy(Dropdown);
64
- var Pagination__default = /*#__PURE__*/_interopDefaultLegacy(Pagination);
65
- var _toPropertyKey__default = /*#__PURE__*/_interopDefaultLegacy(_toPropertyKey);
66
- var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
67
-
68
- var _excluded$5 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
69
- var propTypes$n = {
70
- resource: core.PropTypes.resource.isRequired,
71
- action: PropTypes__default["default"].string,
72
- previous: PropTypes__default["default"].string,
73
- fields: core.PropTypes.fields.isRequired,
74
- value: PropTypes__default["default"].object,
75
- // eslint-disable-line react/forbid-prop-types
76
- onChange: PropTypes__default["default"].func.isRequired,
77
- onSubmit: PropTypes__default["default"].func,
78
- status: core.PropTypes.formStatus,
79
- generalError: PropTypes__default["default"].string,
80
- errors: PropTypes__default["default"].objectOf(PropTypes__default["default"].arrayOf(PropTypes__default["default"].string)),
81
- className: PropTypes__default["default"].string
82
- };
83
- var defaultProps$n = {
84
- action: null,
85
- previous: null,
86
- status: null,
87
- value: null,
88
- onSubmit: null,
89
- generalError: null,
90
- errors: null,
91
- className: null
92
- };
93
- var DeleteForm = function DeleteForm(_ref) {
94
- var resource = _ref.resource,
95
- action = _ref.action,
96
- previous = _ref.previous;
97
- _ref.status;
98
- var value = _ref.value,
99
- onSubmit = _ref.onSubmit;
100
- _ref.errors;
101
- var generalError = _ref.generalError,
102
- className = _ref.className,
103
- props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
104
- var _ref2 = value || {},
105
- _ref2$id = _ref2.id,
106
- id = _ref2$id === void 0 ? null : _ref2$id;
107
- var resourceValues = intl.useResourceValues(resource, {
108
- id: id
109
- });
110
- return /*#__PURE__*/React__default["default"].createElement(Form__default["default"], Object.assign({
111
- className: classNames__default["default"](['form', _defineProperty__default["default"]({
112
- 'invalid-feedback': generalError !== null
113
- }, className, className !== null)]),
114
- action: action,
115
- onSubmit: onSubmit,
116
- withoutActions: true,
117
- withoutErrors: true
118
- }, props), /*#__PURE__*/React__default["default"].createElement("div", {
119
- className: "card"
120
- }, /*#__PURE__*/React__default["default"].createElement("div", {
121
- className: "card-body"
122
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
123
- values: resourceValues,
124
- id: "yzfiXJ",
125
- defaultMessage: [{
126
- "type": 0,
127
- "value": "Are you sure you want to delete "
128
- }, {
129
- "type": 1,
130
- "value": "the_singular"
131
- }, {
132
- "type": 0,
133
- "value": " #"
134
- }, {
135
- "type": 1,
136
- "value": "id"
137
- }, {
138
- "type": 0,
139
- "value": "?"
140
- }]
141
- }), generalError ? /*#__PURE__*/React__default["default"].createElement("p", {
142
- className: "text-danger"
143
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
144
- id: "y9zauY",
145
- defaultMessage: [{
146
- "type": 0,
147
- "value": "An error occured and we could not delete this item successfully."
148
- }]
149
- })) : null), /*#__PURE__*/React__default["default"].createElement("div", {
150
- className: "card-body d-flex"
151
- }, previous !== null ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
152
- href: previous,
153
- className: "me-2",
154
- theme: "secondary",
155
- outline: true
156
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
157
- id: "PyxZY2",
158
- defaultMessage: [{
159
- "type": 0,
160
- "value": "Cancel"
161
- }]
162
- })) : null, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
163
- type: "submit",
164
- className: "ms-auto",
165
- theme: "danger"
166
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
167
- id: "Bhu3B2",
168
- defaultMessage: [{
169
- "type": 0,
170
- "value": "Delete"
171
- }]
172
- })))));
173
- };
174
- DeleteForm.propTypes = propTypes$n;
175
- DeleteForm.defaultProps = defaultProps$n;
176
-
177
- var _excluded$4 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
178
- var propTypes$m = {
179
- component: PropTypes__default["default"].string,
180
- resource: core.PropTypes.resource.isRequired,
181
- item: PropTypes__default["default"].object,
182
- // eslint-disable-line react/forbid-prop-types
183
- type: PropTypes__default["default"].string,
184
- onSuccess: PropTypes__default["default"].func,
185
- isDelete: PropTypes__default["default"].bool
186
- };
187
- var defaultProps$m = {
188
- component: null,
189
- item: null,
190
- type: null,
191
- onSuccess: null,
192
- isDelete: false
193
- };
194
- var ResourceForm = function ResourceForm(_ref) {
195
- var component = _ref.component,
196
- resource = _ref.resource,
197
- onSuccess = _ref.onSuccess,
198
- item = _ref.item,
199
- type = _ref.type,
200
- isDelete = _ref.isDelete,
201
- props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
202
- var locales = contexts.useLocales();
203
- var FormComponents = contexts.useFormsComponents();
204
- var _resource$fields = resource.fields,
205
- resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
206
- _resource$types = resource.types,
207
- resourceTypes = _resource$types === void 0 ? [] : _resource$types,
208
- forms = resource.forms;
209
- var resourceType = type !== null ? resourceTypes.find(function (it) {
210
- return it.id === type;
211
- }) || null : null;
212
- var _ref2 = resourceType || {},
213
- _ref2$fields = _ref2.fields,
214
- resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
215
- var isCreate = item === null || !item.id;
216
-
217
- // Pick fields from resource root or form
218
- var _ref3 = forms || {},
219
- _ref3$default = _ref3["default"],
220
- defaultForm = _ref3$default === void 0 ? null : _ref3$default,
221
- _ref3$create = _ref3.create,
222
- createForm = _ref3$create === void 0 ? null : _ref3$create,
223
- _ref3$edit = _ref3.edit,
224
- editForm = _ref3$edit === void 0 ? null : _ref3$edit,
225
- _ref3$delete = _ref3["delete"],
226
- deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
227
- var _ref4 = defaultForm || {},
228
- _ref4$fields = _ref4.fields,
229
- defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
230
- defaultComponent = _ref4.component;
231
- var createOrEditSource = isCreate ? createForm || {} : editForm || {};
232
- var _ref5 = isDelete ? deleteForm || {} : createOrEditSource || {},
233
- _ref5$fields = _ref5.fields,
234
- formFields = _ref5$fields === void 0 ? null : _ref5$fields,
235
- _ref5$component = _ref5.component,
236
- formComponent = _ref5$component === void 0 ? null : _ref5$component;
237
- var finalFields = React.useMemo(function () {
238
- return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref6) {
239
- var _ref6$settings = _ref6.settings,
240
- _ref6$settings2 = _ref6$settings === void 0 ? {} : _ref6$settings,
241
- _ref6$settings2$hidde = _ref6$settings2.hiddenInForm,
242
- hiddenInForm = _ref6$settings2$hidde === void 0 ? false : _ref6$settings2$hidde;
243
- return !hiddenInForm;
244
- });
245
- }, [formFields, defaultFields, resourceTypeFields, resourceFields]);
246
-
247
- // Form routes
248
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
249
- var _useResourceStore = data.useResourceStore(resource),
250
- store = _useResourceStore.store;
251
- var _useResourceUpdate = data.useResourceUpdate(resource, item != null ? item.id : null),
252
- update = _useResourceUpdate.update;
253
- var _useResourceDestroy = data.useResourceDestroy(resource, item != null ? item.id : null),
254
- destroy = _useResourceDestroy.destroy;
255
-
256
- // Post actions
257
- var postAction = isCreate ? store : update;
258
- var postForm = React.useCallback(function (action, data) {
259
- return isDelete ? destroy() : postAction(data);
260
- }, [postAction, isDelete, destroy, store, update]);
261
-
262
- // Form state
263
- var getInitialValue = React.useCallback(function () {
264
- return item !== null ? item : finalFields.reduce(function (defaultValues, _ref7) {
265
- var name = _ref7.name,
266
- _ref7$defaultValue = _ref7.defaultValue,
267
- defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
268
- return defaultValue !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, defaultValues), {}, _defineProperty__default["default"]({}, name, defaultValue)) : defaultValues;
269
- }, type !== null ? {
270
- type: type
271
- } : null);
272
- }, [item, type, finalFields]);
273
- var _useState = React.useState(getInitialValue()),
274
- _useState2 = _slicedToArray__default["default"](_useState, 2),
275
- value = _useState2[0],
276
- setValueState = _useState2[1];
277
- var setValue = React.useCallback(function (newValue) {
278
- // console.log('new value in resource form', newValue); // eslint-disable-line
279
- setValueState(newValue);
280
- }, [setValueState]);
281
- var _useForm = hooks.useForm({
282
- fields: finalFields,
283
- value: value,
284
- postForm: postForm,
285
- setValue: setValue,
286
- onComplete: onSuccess,
287
- locales: locales
288
- }),
289
- fields = _useForm.fields,
290
- onSubmit = _useForm.onSubmit,
291
- status = _useForm.status,
292
- generalError = _useForm.generalError,
293
- errors = _useForm.errors;
294
-
295
- // Form action
296
- var modifyAction = isCreate ? resourceRoute('store') : resourceRoute('update', {
297
- id: item.id
298
- });
299
- var action = isDelete ? resourceRoute('destroy', {
300
- id: item.id
301
- }) : modifyAction;
302
- var defaultFormName = isDelete ? component || formComponent || null : component || formComponent || defaultComponent || 'normal';
303
-
304
- // Form component
305
- var FormComponent = utils.getComponentFromName(defaultFormName, FormComponents, isDelete ? DeleteForm : component);
306
-
307
- // Lisen to item value change - this is important
308
- React.useEffect(function () {
309
- // console.log('get initial value from the top'); // eslint-disable-line
310
- setValue(getInitialValue());
311
- }, [getInitialValue, setValue]);
312
- return /*#__PURE__*/React__default["default"].createElement(contexts.FormProvider, {
313
- value: value,
314
- setValue: setValue
315
- }, /*#__PURE__*/React__default["default"].createElement(FormComponent, Object.assign({}, props, {
316
- status: status,
317
- resource: resource,
318
- item: item,
319
- fields: fields,
320
- generalError: generalError,
321
- errors: errors,
322
- action: action,
323
- onSubmit: onSubmit,
324
- isCreate: isCreate,
325
- value: value,
326
- onChange: setValue
327
- })));
328
- };
329
- ResourceForm.propTypes = propTypes$m;
330
- ResourceForm.defaultProps = defaultProps$m;
331
-
332
- var propTypes$l = {
333
- className: PropTypes__default["default"].string,
334
- itemClassName: PropTypes__default["default"].string,
335
- linkClassName: PropTypes__default["default"].string
336
- };
337
- var defaultProps$l = {
338
- className: null,
339
- itemClassName: null,
340
- linkClassName: null
341
- };
342
- var AccountMenu = function AccountMenu(_ref) {
343
- var className = _ref.className,
344
- itemClassName = _ref.itemClassName,
345
- linkClassName = _ref.linkClassName;
346
- var route = contexts.useUrlGenerator();
347
- var user = auth.useUser();
348
- var logout = auth.useLogout();
349
- var onClickLogout = React.useCallback(function (e) {
350
- e.preventDefault();
351
- logout();
352
- }, [logout, route]);
353
- var items = React.useMemo(function () {
354
- return user !== null ? [{
355
- id: 'account',
356
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
357
- id: "IuqEHB",
358
- defaultMessage: [{
359
- "type": 0,
360
- "value": "Account"
361
- }]
362
- }),
363
- href: route('panneau.account'),
364
- dropdown: [
365
- // {
366
- // label: (
367
- // <FormattedMessage
368
- // defaultMessage="Update account"
369
- // description="Menu label"
370
- // />
371
- // ),
372
- // href: route('panneau.account'),
373
- // },
374
- {
375
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
376
- id: "REIcPg",
377
- defaultMessage: [{
378
- "type": 0,
379
- "value": "Logout"
380
- }]
381
- }),
382
- href: route('auth.logout'),
383
- onClick: onClickLogout
384
- }]
385
- }] : [{
386
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
387
- id: "d0g58T",
388
- defaultMessage: [{
389
- "type": 0,
390
- "value": "Login"
391
- }]
392
- }),
393
- href: route('login')
394
- }];
395
- }, [user, route, onClickLogout]);
396
- return items !== null ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
397
- className: className,
398
- itemClassName: itemClassName,
399
- linkClassName: linkClassName,
400
- items: items,
401
- dropdownAlign: "end"
402
- }) : null;
403
- };
404
- AccountMenu.propTypes = propTypes$l;
405
- AccountMenu.defaultProps = defaultProps$l;
406
-
407
- var propTypes$k = {
408
- className: PropTypes__default["default"].string,
409
- itemClassName: PropTypes__default["default"].string,
410
- linkClassName: PropTypes__default["default"].string
411
- };
412
- var defaultProps$k = {
413
- className: null,
414
- itemClassName: null,
415
- linkClassName: null
416
- };
417
- var ResourcesMenu = function ResourcesMenu(_ref) {
418
- var className = _ref.className,
419
- itemClassName = _ref.itemClassName,
420
- linkClassName = _ref.linkClassName;
421
- var _useLocation = reactRouter.useLocation(),
422
- pathname = _useLocation.pathname;
423
- var resources = contexts.usePanneauResources();
424
- var resourceRoute = hooks.useResourceUrlGenerator();
425
- var items = React.useMemo(function () {
426
- return resources.filter(function (_ref2) {
427
- var _ref2$settings = _ref2.settings,
428
- _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
429
- _ref2$settings2$hideI = _ref2$settings2.hideInNavbar,
430
- hideInNavbar = _ref2$settings2$hideI === void 0 ? false : _ref2$settings2$hideI;
431
- return !hideInNavbar;
432
- }).map(function (it) {
433
- var url = resourceRoute(it, 'index');
434
- return {
435
- id: it.id,
436
- label: it.name,
437
- href: url,
438
- active: pathname.substr(0, url.length) === url
439
- };
440
- });
441
- }, [resources, pathname, resourceRoute]);
442
- return /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
443
- items: items,
444
- className: className,
445
- itemClassName: itemClassName,
446
- linkClassName: linkClassName
447
- });
448
- };
449
- ResourcesMenu.propTypes = propTypes$k;
450
- ResourcesMenu.defaultProps = defaultProps$k;
451
-
452
- /* eslint-disable react/jsx-props-no-spreading */
453
- var propTypes$j = {};
454
- var defaultProps$j = {};
455
- var MainNavbar = function MainNavbar(props) {
456
- var _usePanneau = contexts.usePanneau(),
457
- name = _usePanneau.name;
458
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
459
- background = _usePanneauColorSchem.background;
460
- var route = contexts.useUrlGenerator();
461
- var user = auth.useUser();
462
- return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], Object.assign({
463
- theme: background
464
- }, props), name !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
465
- to: route('home'),
466
- className: "navbar-brand"
467
- }, name) : null, user !== null ? /*#__PURE__*/React__default["default"].createElement(ResourcesMenu, {
468
- className: "navbar-nav ml-4",
469
- itemClassName: "nav-item",
470
- linkClassName: "nav-link"
471
- }) : null, /*#__PURE__*/React__default["default"].createElement(AccountMenu, {
472
- className: "navbar-nav ms-auto",
473
- itemClassName: "nav-item",
474
- linkClassName: "nav-link"
475
- }));
476
- };
477
- MainNavbar.propTypes = propTypes$j;
478
- MainNavbar.defaultProps = defaultProps$j;
479
-
480
- var propTypes$i = {
481
- children: PropTypes__default["default"].node.isRequired,
482
- fullscreen: PropTypes__default["default"].bool
483
- };
484
- var defaultProps$i = {
485
- fullscreen: false
486
- };
487
- var MainLayout = function MainLayout(_ref) {
488
- var _ref2;
489
- var children = _ref.children,
490
- fullscreen = _ref.fullscreen;
491
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
492
- background = _usePanneauColorSchem.background,
493
- text = _usePanneauColorSchem.text;
494
- return /*#__PURE__*/React__default["default"].createElement("div", {
495
- className: classNames__default["default"](['d-flex', 'flex-column', 'min-vh-100'])
496
- }, /*#__PURE__*/React__default["default"].createElement(MainNavbar, {
497
- className: classNames__default["default"](['border-bottom', 'sticky-top', 'px-3'])
498
- }), /*#__PURE__*/React__default["default"].createElement("div", {
499
- className: classNames__default["default"](['flex-grow-1', (_ref2 = {
500
- 'd-flex flex-column': fullscreen
501
- }, _defineProperty__default["default"](_ref2, "bg-".concat(background), background !== null), _defineProperty__default["default"](_ref2, "text-".concat(text), text !== null), _ref2)])
502
- }, children));
503
- };
504
- MainLayout.propTypes = propTypes$i;
505
- MainLayout.defaultProps = defaultProps$i;
506
-
507
- var propTypes$h = {
508
- title: core.PropTypes.label,
509
- actions: PropTypes__default["default"].node,
510
- small: PropTypes__default["default"].bool,
511
- className: PropTypes__default["default"].string,
512
- children: PropTypes__default["default"].node
513
- };
514
- var defaultProps$h = {
515
- title: null,
516
- actions: null,
517
- small: false,
518
- className: null,
519
- children: null
520
- };
521
- var PageHeader = function PageHeader(_ref) {
522
- var _ref2;
523
- var title = _ref.title,
524
- actions = _ref.actions,
525
- small = _ref.small,
526
- className = _ref.className,
527
- children = _ref.children;
528
- // TODO: fix page header components
529
- // const { components } = usePanneau();
530
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
531
- text = _usePanneauColorSchem.text,
532
- background = _usePanneauColorSchem.background;
533
- // console.log('page-header', components); // eslint-disable-line
534
-
535
- var inner = /*#__PURE__*/React__default["default"].createElement("div", {
536
- className: "d-flex align-items-center flex-wrap"
537
- }, title !== null ? /*#__PURE__*/React__default["default"].createElement("h1", {
538
- className: "mb-0"
539
- }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, title)) : null, actions !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
540
- className: "ms-auto"
541
- }, actions) : null);
542
- return /*#__PURE__*/React__default["default"].createElement("div", {
543
- className: classNames__default["default"](['py-4', (_ref2 = {}, _defineProperty__default["default"](_ref2, "bg-".concat(background), background !== null), _defineProperty__default["default"](_ref2, "text-".concat(text), text !== null), _defineProperty__default["default"](_ref2, "border-bottom", background || text !== null), _defineProperty__default["default"](_ref2, className, className !== null), _ref2)])
544
- }, /*#__PURE__*/React__default["default"].createElement("div", {
545
- className: "container-sm"
546
- }, small ? /*#__PURE__*/React__default["default"].createElement("div", {
547
- className: "row justify-content-center"
548
- }, /*#__PURE__*/React__default["default"].createElement("div", {
549
- className: "col-12 col-md-8 col-lg-7"
550
- }, inner)) : inner), children);
551
- };
552
- PageHeader.propTypes = propTypes$h;
553
- PageHeader.defaultProps = defaultProps$h;
554
-
555
- var propTypes$g = {
556
- resource: core.PropTypes.resource.isRequired
557
- };
558
- var defaultProps$g = {};
559
- var ResourceCreatePage = function ResourceCreatePage(_ref) {
560
- var resource = _ref.resource;
561
- var history = reactRouter.useHistory();
562
- var _useLocation = reactRouter.useLocation(),
563
- search = _useLocation.search;
564
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
565
- var onSuccess = React.useCallback(function () {
566
- history.push("".concat(resourceRoute('index'), "?created=true"));
567
- }, [history, resourceRoute]);
568
- var _useMemo = React.useMemo(function () {
569
- return queryString.parse(search);
570
- }, [search]),
571
- _useMemo$type = _useMemo.type,
572
- type = _useMemo$type === void 0 ? null : _useMemo$type;
573
- var resourceValues = intl.useResourceValues(resource);
574
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
575
- resource: resource
576
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
577
- title: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
578
- values: resourceValues,
579
- id: "6viUpq",
580
- defaultMessage: [{
581
- "type": 0,
582
- "value": "Create "
583
- }, {
584
- "type": 1,
585
- "value": "a_singular"
586
- }]
587
- }),
588
- small: true
589
- }), /*#__PURE__*/React__default["default"].createElement("div", {
590
- className: "container-sm py-4"
591
- }, /*#__PURE__*/React__default["default"].createElement("div", {
592
- className: "row justify-content-center"
593
- }, /*#__PURE__*/React__default["default"].createElement("div", {
594
- className: "col-12 col-md-8 col-lg-7"
595
- }, /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
596
- resource: resource,
597
- type: type,
598
- onSuccess: onSuccess
599
- }))))));
600
- };
601
- ResourceCreatePage.propTypes = propTypes$g;
602
- ResourceCreatePage.defaultProps = defaultProps$g;
603
-
604
- // import Button from '../buttons/Button';
605
-
606
- var propTypes$f = {
607
- resource: core.PropTypes.resource.isRequired,
608
- itemId: PropTypes__default["default"].string.isRequired
609
- };
610
- var defaultProps$f = {};
611
- var ResourceDeletePage = function ResourceDeletePage(_ref) {
612
- var resource = _ref.resource,
613
- itemId = _ref.itemId;
614
- var history = reactRouter.useHistory();
615
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
616
- var _useResourceItem = data.useResourceItem(resource, itemId),
617
- item = _useResourceItem.item;
618
- var onSuccess = React.useCallback(function () {
619
- return history.push("".concat(resourceRoute('index'), "?deleted=true"));
620
- }, [history, resourceRoute]);
621
-
622
- // Navigate back
623
- var _ref2 = history || {},
624
- _ref2$entries = _ref2.entries,
625
- entries = _ref2$entries === void 0 ? [] : _ref2$entries;
626
- var previousEntry = entries !== null && entries.length > 1 ? entries[entries.length - 2] : null;
627
- var previous = (previousEntry === null || previousEntry === void 0 ? void 0 : previousEntry.pathname) || null;
628
- var resourceValues = intl.useResourceValues(resource);
629
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
630
- resource: resource
631
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
632
- title: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
633
- values: resourceValues,
634
- id: "zN5N/Q",
635
- defaultMessage: [{
636
- "type": 0,
637
- "value": "Delete "
638
- }, {
639
- "type": 1,
640
- "value": "a_singular"
641
- }]
642
- }),
643
- small: true
644
- }), /*#__PURE__*/React__default["default"].createElement("div", {
645
- className: "container-sm py-4"
646
- }, /*#__PURE__*/React__default["default"].createElement("div", {
647
- className: "row justify-content-center"
648
- }, /*#__PURE__*/React__default["default"].createElement("div", {
649
- className: "col-12 col-md-8 col-lg-7"
650
- }, item !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
651
- component: "",
652
- resource: resource,
653
- item: item,
654
- onSuccess: onSuccess,
655
- previous: previous,
656
- isDelete: true
657
- }) : null)))));
658
- };
659
- ResourceDeletePage.propTypes = propTypes$f;
660
- ResourceDeletePage.defaultProps = defaultProps$f;
661
-
662
- // import Button from '../buttons/Button';
663
-
664
- var propTypes$e = {
665
- resource: core.PropTypes.resource.isRequired,
666
- itemId: PropTypes__default["default"].string.isRequired
667
- };
668
- var defaultProps$e = {};
669
- var ResourceEditPage = function ResourceEditPage(_ref) {
670
- var resource = _ref.resource,
671
- itemId = _ref.itemId;
672
- var _useResourceItem = data.useResourceItem(resource, itemId),
673
- item = _useResourceItem.item;
674
- var _ref2 = item || {},
675
- _ref2$type = _ref2.type,
676
- type = _ref2$type === void 0 ? null : _ref2$type;
677
- var _useState = React.useState(item),
678
- _useState2 = _slicedToArray__default["default"](_useState, 2),
679
- editItem = _useState2[0],
680
- setEditItem = _useState2[1];
681
- var onSuccess = React.useCallback(function (newItem) {
682
- return setEditItem(newItem);
683
- }, []);
684
- React.useEffect(function () {
685
- setEditItem(item);
686
- }, [item, setEditItem]);
687
- var resourceValues = intl.useResourceValues(resource);
688
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
689
- resource: resource
690
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
691
- title: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
692
- values: resourceValues,
693
- id: "mCfzkJ",
694
- defaultMessage: [{
695
- "type": 0,
696
- "value": "Edit "
697
- }, {
698
- "type": 1,
699
- "value": "a_singular"
700
- }]
701
- }),
702
- small: true
703
- }), /*#__PURE__*/React__default["default"].createElement("div", {
704
- className: "container-sm py-4"
705
- }, /*#__PURE__*/React__default["default"].createElement("div", {
706
- className: "row justify-content-center"
707
- }, /*#__PURE__*/React__default["default"].createElement("div", {
708
- className: "col-12 col-md-8 col-lg-7"
709
- }, editItem !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
710
- resource: resource,
711
- item: editItem,
712
- type: type,
713
- onSuccess: onSuccess
714
- }) : null)))));
715
- };
716
- ResourceEditPage.propTypes = propTypes$e;
717
- ResourceEditPage.defaultProps = defaultProps$e;
718
-
719
- var propTypes$d = {
720
- resource: core.PropTypes.resource.isRequired,
721
- className: PropTypes__default["default"].string
722
- };
723
- var defaultProps$d = {
724
- className: null
725
- };
726
- var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
727
- var resource = _ref.resource,
728
- className = _ref.className;
729
- var _resource$types = resource.types,
730
- types = _resource$types === void 0 ? null : _resource$types;
731
- // const intl = useIntl();
732
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
733
- var resourceValues = intl.useResourceValues(resource);
734
- var _useState = React.useState(false),
735
- _useState2 = _slicedToArray__default["default"](_useState, 2),
736
- dropdownOpened = _useState2[0],
737
- setDropdownOpened = _useState2[1];
738
- var onClickDropdown = React.useCallback(function (e) {
739
- e.preventDefault();
740
- setDropdownOpened(function (opened) {
741
- return !opened;
742
- });
743
- }, [setDropdownOpened]);
744
- var finalTypes = types !== null ? types.filter(function (_ref2) {
745
- var _ref2$settings = _ref2.settings,
746
- _ref2$settings2 = _ref2$settings === void 0 ? {} : _ref2$settings,
747
- _ref2$settings2$canCr = _ref2$settings2.canCreate,
748
- canCreate = _ref2$settings2$canCr === void 0 ? true : _ref2$settings2$canCr;
749
- return canCreate;
750
- }) : null;
751
- var hasMultipleTypes = finalTypes !== null && finalTypes.length > 1;
752
- var onDropdownClickOutside = React.useCallback(function () {
753
- setDropdownOpened(false);
754
- }, [setDropdownOpened]);
755
- var button = /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
756
- href: !hasMultipleTypes ? "".concat(resourceRoute('create')).concat(finalTypes !== null && finalTypes.length === 1 ? "?type=".concat(finalTypes[0].id) : '') : '#',
757
- size: "lg",
758
- theme: "primary",
759
- className: classNames__default["default"]([_defineProperty__default["default"]({
760
- 'dropdown-toggle': hasMultipleTypes
761
- }, className, className !== null)]),
762
- onClick: hasMultipleTypes ? onClickDropdown : null
763
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
764
- values: resourceValues,
765
- id: "l+ddDH",
766
- defaultMessage: [{
767
- "type": 0,
768
- "value": "Create "
769
- }, {
770
- "type": 1,
771
- "value": "a_singular"
772
- }]
773
- }));
774
- return hasMultipleTypes ? /*#__PURE__*/React__default["default"].createElement("div", {
775
- className: classNames__default["default"](['dropdown', {
776
- show: dropdownOpened
777
- }])
778
- }, button, /*#__PURE__*/React__default["default"].createElement(Dropdown__default["default"], {
779
- items: finalTypes.map(function (it) {
780
- return {
781
- id: it.id,
782
- label: it.name,
783
- href: "".concat(resourceRoute('create'), "?type=").concat(it.id)
784
- };
785
- }),
786
- visible: dropdownOpened,
787
- align: "end",
788
- onClickOutside: onDropdownClickOutside
789
- })) : button;
790
- };
791
- ResourceCreateButtom.propTypes = propTypes$d;
792
- ResourceCreateButtom.defaultProps = defaultProps$d;
793
-
794
- var _excluded$3 = ["component", "name", "groupLabel"];
795
- var propTypes$c = {
796
- filters: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
797
- id: PropTypes__default["default"].string.isRequired,
798
- component: PropTypes__default["default"].string.isRequired
799
- })),
800
- value: PropTypes__default["default"].object,
801
- // eslint-disable-line react/forbid-prop-types
802
- onChange: PropTypes__default["default"].func,
803
- onReset: PropTypes__default["default"].func,
804
- withContainer: PropTypes__default["default"].bool,
805
- withReset: PropTypes__default["default"].bool,
806
- defaultValue: PropTypes__default["default"].objectOf(PropTypes__default["default"].object),
807
- // eslint-disable-line react/forbid-prop-types
808
- className: PropTypes__default["default"].string
809
- };
810
- var defaultProps$c = {
811
- filters: [],
812
- value: null,
813
- onChange: null,
814
- onReset: null,
815
- withContainer: false,
816
- withReset: true,
817
- defaultValue: {
818
- page: null
819
- },
820
- className: null
821
- };
822
- var ResourceFilters = function ResourceFilters(_ref) {
823
- var filters = _ref.filters,
824
- value = _ref.value,
825
- onChange = _ref.onChange,
826
- onReset = _ref.onReset,
827
- withContainer = _ref.withContainer,
828
- withReset = _ref.withReset,
829
- defaultValue = _ref.defaultValue,
830
- className = _ref.className;
831
- var FilterComponents = contexts.useFiltersComponents();
832
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
833
- background = _usePanneauColorSchem.background;
834
- var currentFilters = filters || [];
835
- var onFiltersReset = React.useCallback(function () {
836
- if (onReset !== null) {
837
- onReset(null);
838
- }
839
- }, [onReset]);
840
- var hasActiveFilter = (currentFilters || []).reduce(function (isActive, item) {
841
- if (value !== null && value[item.name]) {
842
- return true;
843
- }
844
- return isActive;
845
- }, false);
846
-
847
- // console.log('value', value);
848
-
849
- return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], {
850
- className: classNames__default["default"]([_defineProperty__default["default"]({
851
- 'navbar-expand-md': withContainer
852
- }, className, className !== null), 'justify-content-start', 'align-items-start', 'flex-column', 'flex-md-row']),
853
- theme: background,
854
- withoutCollapse: true
855
- }, currentFilters.map(function (_ref3, index) {
856
- var component = _ref3.component,
857
- name = _ref3.name,
858
- groupLabel = _ref3.groupLabel,
859
- filterProps = _objectWithoutProperties__default["default"](_ref3, _excluded$3);
860
- var FilterComponent = utils.getComponentFromName(component, FilterComponents, null);
861
- var filterValue = value !== null && value[name] ? value[name] : null;
862
- var onFilterChange = React.useCallback(function (newFilterValue) {
863
- if (name !== null && onChange !== null) {
864
- onChange(_objectSpread__default["default"](_objectSpread__default["default"]({}, value), {}, _defineProperty__default["default"]({}, name, newFilterValue), defaultValue));
865
- }
866
- }, [onChange, name, value, defaultValue]);
867
- var onFilterClear = React.useCallback(function () {
868
- if (name !== null && onChange !== null) {
869
- var _ref4 = value || {};
870
- _ref4[name];
871
- var newValue = _objectWithoutProperties__default["default"](_ref4, [name].map(_toPropertyKey__default["default"]));
872
- onChange(_objectSpread__default["default"](_objectSpread__default["default"]({}, newValue), defaultValue));
873
- }
874
- }, [onChange, name, value, defaultValue]);
875
- return FilterComponent !== null ? /*#__PURE__*/React__default["default"].createElement(FormGroup__default["default"], {
876
- key: "filter-".concat(name, "-").concat(index + 1),
877
- label: groupLabel,
878
- className: "me-4"
879
- }, /*#__PURE__*/React__default["default"].createElement(FilterComponent, Object.assign({}, filterProps, {
880
- value: filterValue,
881
- onChange: onFilterChange,
882
- onClear: onFilterClear
883
- }))) : null;
884
- }), withReset && hasActiveFilter && currentFilters.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
885
- theme: "primary",
886
- onClick: onFiltersReset
887
- }, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
888
- icon: freeSolidSvgIcons.faUndo
889
- })) : null);
890
- };
891
- ResourceFilters.propTypes = propTypes$c;
892
- ResourceFilters.defaultProps = defaultProps$c;
893
-
894
- var _excluded$2 = ["component", "showPagination", "filters"],
895
- _excluded2$1 = ["page"];
896
- var propTypes$b = {
897
- resource: core.PropTypes.resource.isRequired,
898
- query: PropTypes__default["default"].object,
899
- // eslint-disable-line react/forbid-prop-types
900
- paginated: PropTypes__default["default"].bool,
901
- baseUrl: PropTypes__default["default"].string,
902
- component: PropTypes__default["default"].oneOfType([PropTypes__default["default"].elementType, PropTypes__default["default"].string]),
903
- componentProps: PropTypes__default["default"].object,
904
- // eslint-disable-line react/forbid-prop-types
905
- onQueryChange: PropTypes__default["default"].func,
906
- onQueryReset: PropTypes__default["default"].func
907
- };
908
- var defaultProps$b = {
909
- query: null,
910
- paginated: true,
911
- component: null,
912
- baseUrl: null,
913
- componentProps: null,
914
- onQueryChange: null,
915
- onQueryReset: null
916
- };
917
- var ResourceItemsList = function ResourceItemsList(_ref) {
918
- var resource = _ref.resource,
919
- query = _ref.query,
920
- baseUrl = _ref.baseUrl,
921
- onQueryChange = _ref.onQueryChange,
922
- onQueryReset = _ref.onQueryReset,
923
- paginated = _ref.paginated;
924
- var _resource$index = resource.index,
925
- _resource$index2 = _resource$index === void 0 ? {} : _resource$index,
926
- _resource$index2$comp = _resource$index2.component,
927
- listComponent = _resource$index2$comp === void 0 ? null : _resource$index2$comp,
928
- _resource$index2$show = _resource$index2.showPagination,
929
- showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
930
- _resource$index2$filt = _resource$index2.filters,
931
- filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt,
932
- listProps = _objectWithoutProperties__default["default"](_resource$index2, _excluded$2);
933
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
934
- _usePanneauColorSchem2 = _usePanneauColorSchem.background,
935
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
936
- var ListComponents = contexts.useListsComponents();
937
- var _useMemo = React.useMemo(function () {
938
- var _ref2 = query || {},
939
- _ref2$page = _ref2.page,
940
- currentPage = _ref2$page === void 0 ? 1 : _ref2$page,
941
- rest = _objectWithoutProperties__default["default"](_ref2, _excluded2$1);
942
- return [currentPage, rest];
943
- }, [query]),
944
- _useMemo2 = _slicedToArray__default["default"](_useMemo, 2),
945
- page = _useMemo2[0],
946
- queryWithoutPage = _useMemo2[1];
947
- var itemsProps = data.useResourceItems(resource, queryWithoutPage, paginated ? parseInt(page, 10) : null);
948
- var _ref3 = itemsProps || {},
949
- _ref3$lastPage = _ref3.lastPage,
950
- lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
951
- _ref3$total = _ref3.total,
952
- total = _ref3$total === void 0 ? 0 : _ref3$total;
953
- var ListComponent = utils.getComponentFromName(listComponent || 'table', ListComponents);
954
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, filters !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceFilters, {
955
- filters: filters,
956
- value: query,
957
- onChange: onQueryChange,
958
- onReset: onQueryReset
959
- }) : null, paginated && showPagination ? /*#__PURE__*/React__default["default"].createElement(Pagination__default["default"], {
960
- page: page,
961
- lastPage: lastPage,
962
- total: total,
963
- url: baseUrl,
964
- query: query,
965
- className: "mt-1 mb-1"
966
- }) : null, ListComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ListComponent, Object.assign({}, itemsProps, listProps, {
967
- resource: resource,
968
- baseUrl: baseUrl,
969
- query: query,
970
- onQueryChange: onQueryChange,
971
- onQueryReset: onQueryReset,
972
- theme: theme
973
- })) : null, paginated && showPagination ? /*#__PURE__*/React__default["default"].createElement(Pagination__default["default"], {
974
- page: page,
975
- lastPage: lastPage,
976
- total: total,
977
- url: baseUrl,
978
- query: query,
979
- className: "mt-4 mb-1"
980
- }) : null);
981
- };
982
- ResourceItemsList.propTypes = propTypes$b;
983
- ResourceItemsList.defaultProps = defaultProps$b;
984
-
985
- var _excluded$1 = ["id", "component"];
986
- var propTypes$a = {
987
- resource: core.PropTypes.resource.isRequired,
988
- defaultActions: PropTypes__default["default"].arrayOf(PropTypes__default["default"].object) // eslint-disable-line react/forbid-prop-types
989
- };
990
-
991
- var defaultProps$a = {
992
- defaultActions: ['create']
993
- };
994
- var ResourceIndexPage = function ResourceIndexPage(_ref) {
995
- var resource = _ref.resource,
996
- defaultActions = _ref.defaultActions;
997
- var name = resource.name,
998
- _resource$settings = resource.settings,
999
- settings = _resource$settings === void 0 ? {} : _resource$settings,
1000
- _resource$index = resource.index,
1001
- index = _resource$index === void 0 ? {} : _resource$index;
1002
- var _ref2 = settings || {},
1003
- _ref2$canCreate = _ref2.canCreate,
1004
- canCreate = _ref2$canCreate === void 0 ? true : _ref2$canCreate,
1005
- _ref2$indexIsPaginate = _ref2.indexIsPaginated,
1006
- paginated = _ref2$indexIsPaginate === void 0 ? false : _ref2$indexIsPaginate;
1007
- var _ref3 = index || {},
1008
- _ref3$actions = _ref3.actions,
1009
- actions = _ref3$actions === void 0 ? null : _ref3$actions;
1010
- var finalActions = React.useMemo(function () {
1011
- return (actions || defaultActions.filter(function (it) {
1012
- return it !== 'create' || canCreate;
1013
- })).map(function (it) {
1014
- return it === 'create' ? {
1015
- id: 'create',
1016
- component: ResourceCreateButtom,
1017
- size: 'lg',
1018
- theme: 'primary'
1019
- } : it;
1020
- });
1021
- }, [canCreate, actions]);
1022
- var resourceValues = intl.useResourceValues(resource);
1023
- var componentsManager = contexts.useComponentsManager();
1024
- var _useLocation = reactRouter.useLocation(),
1025
- search = _useLocation.search;
1026
- var history = reactRouter.useHistory();
1027
- var query = React.useMemo(function () {
1028
- return queryString.parse(search);
1029
- }, [search]);
1030
- var listQuery = React.useMemo(function () {
1031
- return query;
1032
- }, [query]); // TODO: omit routes
1033
- var _ref4 = query || {},
1034
- _ref4$created = _ref4.created,
1035
- created = _ref4$created === void 0 ? false : _ref4$created,
1036
- _ref4$deleted = _ref4.deleted,
1037
- deleted = _ref4$deleted === void 0 ? false : _ref4$deleted;
1038
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
1039
- var url = resourceRoute('index');
1040
- var onQueryChange = React.useCallback(function (submitQuery) {
1041
- var newQuery = submitQuery !== null ? Object.keys(submitQuery).reduce(function (currentQuery, key) {
1042
- var value = submitQuery[key];
1043
- return value !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentQuery), {}, _defineProperty__default["default"]({}, key, value)) : currentQuery;
1044
- }, null) : null;
1045
- history.push("".concat(url).concat(newQuery !== null ? "?".concat(queryString.stringify(newQuery, {
1046
- arrayFormat: 'bracket'
1047
- })) : ''));
1048
- }, [history, url, query, paginated]);
1049
- var onQueryReset = React.useCallback(function () {
1050
- var queryString$1 = queryString.stringify(null, {
1051
- arrayFormat: 'bracket'
1052
- });
1053
- history.push("".concat(url, "?").concat(queryString$1));
1054
- }, [history, url, paginated]);
1055
- var onClickCloseAlert = React.useCallback(function () {
1056
- history.replace(url);
1057
- }, [history, url]);
1058
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1059
- resource: resource
1060
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
1061
- title: name,
1062
- actions: finalActions.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
1063
- className: "d-flex align-items-center"
1064
- }, finalActions.map(function (_ref5) {
1065
- var id = _ref5.id,
1066
- _ref5$component = _ref5.component,
1067
- component = _ref5$component === void 0 ? Button__default["default"] : _ref5$component,
1068
- actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$1);
1069
- var ActionComponent = isString__default["default"](component) ? componentsManager.getComponent(component) : component;
1070
- return ActionComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ActionComponent, Object.assign({
1071
- key: "action-".concat(id)
1072
- }, actionProps, ActionComponent !== Button__default["default"] ? {
1073
- resource: resource,
1074
- query: query,
1075
- onQueryChange: onQueryChange
1076
- } : {})) : null;
1077
- })) : null
1078
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1079
- className: classNames__default["default"](['container-sm py-4'])
1080
- }, created ? /*#__PURE__*/React__default["default"].createElement(Alert__default["default"], {
1081
- className: "mb-4",
1082
- onClose: onClickCloseAlert
1083
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1084
- values: resourceValues,
1085
- id: "bfP/d8",
1086
- defaultMessage: [{
1087
- "type": 1,
1088
- "value": "The_singular"
1089
- }, {
1090
- "type": 0,
1091
- "value": " has been created."
1092
- }]
1093
- })) : null, deleted ? /*#__PURE__*/React__default["default"].createElement(Alert__default["default"], {
1094
- className: "mb-4",
1095
- onClose: onClickCloseAlert
1096
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1097
- values: resourceValues,
1098
- id: "dkRdks",
1099
- defaultMessage: [{
1100
- "type": 1,
1101
- "value": "The_singular"
1102
- }, {
1103
- "type": 0,
1104
- "value": " has been deleted."
1105
- }]
1106
- })) : null, /*#__PURE__*/React__default["default"].createElement(ResourceItemsList, {
1107
- resource: resource,
1108
- baseUrl: url,
1109
- query: listQuery,
1110
- paginated: paginated,
1111
- onQueryChange: onQueryChange,
1112
- onQueryReset: onQueryReset
1113
- }))));
1114
- };
1115
- ResourceIndexPage.propTypes = propTypes$a;
1116
- ResourceIndexPage.defaultProps = defaultProps$a;
1117
-
1118
- var propTypes$9 = {
1119
- resource: core.PropTypes.resource.isRequired
1120
- };
1121
- var defaultProps$9 = {};
1122
- var ResourceShowPage = function ResourceShowPage(_ref) {
1123
- var resource = _ref.resource;
1124
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1125
- resource: resource
1126
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement(PageHeader, {
1127
- title: resource === null || resource === void 0 ? void 0 : resource.name
1128
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1129
- className: "container-sm"
1130
- }, "Show page")));
1131
- };
1132
- ResourceShowPage.propTypes = propTypes$9;
1133
- ResourceShowPage.defaultProps = defaultProps$9;
1134
-
1135
- /* eslint-disable react/jsx-props-no-spreading */
1136
- var propTypes$8 = {};
1137
- var defaultProps$8 = {};
1138
- var HomePage = function HomePage() {
1139
- var route = contexts.useUrlGenerator();
1140
- var resources = contexts.usePanneauResources();
1141
- var visibleResources = resources.filter(function (_ref) {
1142
- var _ref$settings = _ref.settings,
1143
- _ref$settings2 = _ref$settings === void 0 ? {} : _ref$settings,
1144
- _ref$settings2$hideIn = _ref$settings2.hideInNavbar,
1145
- hideInNavbar = _ref$settings2$hideIn === void 0 ? false : _ref$settings2$hideIn;
1146
- return !hideInNavbar;
1147
- });
1148
- return /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement("div", {
1149
- className: "container-sm py-4"
1150
- }, visibleResources.map(function (resource) {
1151
- var _ref2 = resource || {},
1152
- resourceId = _ref2.id;
1153
- var resourceValues = intl.useResourceValues(resource);
1154
- return /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
1155
- className: "d-block my-2",
1156
- key: "resource-link-".concat(resourceId),
1157
- to: route('resources.index', {
1158
- resource: resourceId
1159
- })
1160
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1161
- values: resourceValues,
1162
- id: "FntHPK",
1163
- defaultMessage: [{
1164
- "type": 0,
1165
- "value": "View "
1166
- }, {
1167
- "type": 1,
1168
- "value": "the_plural"
1169
- }]
1170
- }));
1171
- })));
1172
- };
1173
- HomePage.propTypes = propTypes$8;
1174
- HomePage.defaultProps = defaultProps$8;
1175
-
1176
- var propTypes$7 = {};
1177
- var defaultProps$7 = {};
1178
- var AccountPage = function AccountPage() {
1179
- return /*#__PURE__*/React__default["default"].createElement(MainLayout, null, /*#__PURE__*/React__default["default"].createElement("div", {
1180
- className: "container-sm py-4"
1181
- }, "Account page"));
1182
- };
1183
- AccountPage.propTypes = propTypes$7;
1184
- AccountPage.defaultProps = defaultProps$7;
1185
-
1186
- /* eslint-disable react/jsx-props-no-spreading */
1187
- var propTypes$6 = {
1188
- fields: core.PropTypes.fields,
1189
- className: PropTypes__default["default"].string,
1190
- onSuccess: PropTypes__default["default"].func
1191
- };
1192
- var defaultProps$6 = {
1193
- fields: [{
1194
- name: 'email',
1195
- type: 'email',
1196
- size: 'lg',
1197
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1198
- id: "LI0Gz4",
1199
- defaultMessage: [{
1200
- "type": 0,
1201
- "value": "Email"
1202
- }]
1203
- })
1204
- }, {
1205
- name: 'password',
1206
- type: 'password',
1207
- size: 'lg',
1208
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1209
- id: "4yfet+",
1210
- defaultMessage: [{
1211
- "type": 0,
1212
- "value": "Password"
1213
- }]
1214
- })
1215
- }],
1216
- className: null,
1217
- onSuccess: null
1218
- };
1219
- var LoginForm = function LoginForm(_ref) {
1220
- var formFields = _ref.fields,
1221
- className = _ref.className,
1222
- onSuccess = _ref.onSuccess;
1223
- var url = contexts.useUrlGenerator();
1224
- var _useAuth = auth.useAuth(),
1225
- login = _useAuth.login;
1226
- var postForm = React.useCallback(function (action, _ref2) {
1227
- var email = _ref2.email,
1228
- password = _ref2.password;
1229
- return login(email, password);
1230
- }, [login]);
1231
- var _useForm = hooks.useForm({
1232
- fields: formFields,
1233
- postForm: postForm,
1234
- onComplete: onSuccess
1235
- }),
1236
- value = _useForm.value,
1237
- setValue = _useForm.setValue,
1238
- fields = _useForm.fields,
1239
- onSubmit = _useForm.onSubmit,
1240
- status = _useForm.status,
1241
- generalError = _useForm.generalError,
1242
- errors = _useForm.errors;
1243
- var NormalForm = contexts.useFormComponent('normal');
1244
- return /*#__PURE__*/React__default["default"].createElement(NormalForm, {
1245
- action: url('auth.login'),
1246
- method: "post",
1247
- fields: fields,
1248
- onSubmit: onSubmit,
1249
- className: className,
1250
- status: status,
1251
- generalError: generalError,
1252
- errors: errors,
1253
- value: value,
1254
- onChange: setValue,
1255
- submitButtonLabel: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1256
- id: "g6qbbX",
1257
- defaultMessage: [{
1258
- "type": 0,
1259
- "value": "Log in"
1260
- }]
1261
- })
1262
- });
1263
- };
1264
- LoginForm.propTypes = propTypes$6;
1265
- LoginForm.defaultProps = defaultProps$6;
1266
-
1267
- var propTypes$5 = {
1268
- children: PropTypes__default["default"].node.isRequired,
1269
- fullscreen: PropTypes__default["default"].bool
1270
- };
1271
- var defaultProps$5 = {
1272
- fullscreen: false
1273
- };
1274
- var GuestLayout = function GuestLayout(_ref) {
1275
- var _classNames;
1276
- var fullscreen = _ref.fullscreen,
1277
- children = _ref.children;
1278
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
1279
- background = _usePanneauColorSchem.background,
1280
- text = _usePanneauColorSchem.text;
1281
- return /*#__PURE__*/React__default["default"].createElement("div", {
1282
- className: classNames__default["default"]({
1283
- 'd-flex flex-column min-vh-100': fullscreen
1284
- })
1285
- }, /*#__PURE__*/React__default["default"].createElement(MainNavbar, {
1286
- className: classNames__default["default"](['sticky-top', 'px-3'])
1287
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1288
- className: classNames__default["default"]((_classNames = {
1289
- 'd-flex flex-column flex-grow-1': fullscreen
1290
- }, _defineProperty__default["default"](_classNames, "bg-".concat(background), background !== null), _defineProperty__default["default"](_classNames, "text-".concat(text), text !== null), _classNames))
1291
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1292
- className: classNames__default["default"]({
1293
- 'w-100 my-auto': fullscreen
1294
- })
1295
- }, children)));
1296
- };
1297
- GuestLayout.propTypes = propTypes$5;
1298
- GuestLayout.defaultProps = defaultProps$5;
1299
-
1300
- /* eslint-disable react/jsx-props-no-spreading */
1301
- var propTypes$4 = {};
1302
- var defaultProps$4 = {};
1303
- var LoginPage = function LoginPage() {
1304
- var route = contexts.useUrlGenerator();
1305
- var onSuccess = React.useCallback(function () {
1306
- window.location.href = route('home');
1307
- }, [route]);
1308
- return /*#__PURE__*/React__default["default"].createElement(GuestLayout, {
1309
- fullscreen: true
1310
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1311
- className: "container-sm py-4"
1312
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1313
- className: "row justify-content-center"
1314
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1315
- className: "col-12 col-sm-8 col-md-6"
1316
- }, /*#__PURE__*/React__default["default"].createElement("h1", {
1317
- className: "mb-4"
1318
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1319
- id: "AeOZq+",
1320
- defaultMessage: [{
1321
- "type": 0,
1322
- "value": "Login"
1323
- }]
1324
- })), /*#__PURE__*/React__default["default"].createElement(LoginForm, {
1325
- onSuccess: onSuccess
1326
- })))));
1327
- };
1328
- LoginPage.propTypes = propTypes$4;
1329
- LoginPage.defaultProps = defaultProps$4;
1330
-
1331
- var messages = reactIntl.defineMessages({
1332
- metaTitle401: {
1333
- "id": "HOobY2",
1334
- "defaultMessage": [{
1335
- "type": 0,
1336
- "value": "Error 401"
1337
- }]
1338
- },
1339
- title401: {
1340
- "id": "6nwWPR",
1341
- "defaultMessage": [{
1342
- "type": 0,
1343
- "value": "Error 401"
1344
- }]
1345
- },
1346
- description401: {
1347
- "id": "82P2dS",
1348
- "defaultMessage": [{
1349
- "type": 0,
1350
- "value": "You are not authorized to access this page."
1351
- }]
1352
- },
1353
- metaTitle403: {
1354
- "id": "+6cCPF",
1355
- "defaultMessage": [{
1356
- "type": 0,
1357
- "value": "Error 403"
1358
- }]
1359
- },
1360
- title403: {
1361
- "id": "Pih2UO",
1362
- "defaultMessage": [{
1363
- "type": 0,
1364
- "value": "Error 403"
1365
- }]
1366
- },
1367
- description403: {
1368
- "id": "8HFiMs",
1369
- "defaultMessage": [{
1370
- "type": 0,
1371
- "value": "Access to this page is forbidden"
1372
- }]
1373
- },
1374
- metaTitle404: {
1375
- "id": "US/AMe",
1376
- "defaultMessage": [{
1377
- "type": 0,
1378
- "value": "Error 404"
1379
- }]
1380
- },
1381
- title404: {
1382
- "id": "6Ie+vL",
1383
- "defaultMessage": [{
1384
- "type": 0,
1385
- "value": "Error 404"
1386
- }]
1387
- },
1388
- description404: {
1389
- "id": "wKPI1y",
1390
- "defaultMessage": [{
1391
- "type": 0,
1392
- "value": "This page doesn’t exist"
1393
- }]
1394
- },
1395
- metaTitle500: {
1396
- "id": "ejwBSw",
1397
- "defaultMessage": [{
1398
- "type": 0,
1399
- "value": "Error 500"
1400
- }]
1401
- },
1402
- title500: {
1403
- "id": "owrRHV",
1404
- "defaultMessage": [{
1405
- "type": 0,
1406
- "value": "Error 500"
1407
- }]
1408
- },
1409
- description500: {
1410
- "id": "yALN2p",
1411
- "defaultMessage": [{
1412
- "type": 0,
1413
- "value": "There was an error"
1414
- }]
1415
- },
1416
- gotoHome: {
1417
- "id": "hezcGl",
1418
- "defaultMessage": [{
1419
- "type": 0,
1420
- "value": "Go to home page"
1421
- }]
1422
- }
1423
- });
1424
- var propTypes$3 = {
1425
- statusCode: core.PropTypes.statusCode
1426
- };
1427
- var defaultProps$3 = {
1428
- statusCode: null
1429
- };
1430
- var ErrorPage = function ErrorPage(_ref) {
1431
- var statusCode = _ref.statusCode;
1432
- return /*#__PURE__*/React__default["default"].createElement(GuestLayout, {
1433
- fullscreen: true
1434
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1435
- className: "container-sm py-4"
1436
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1437
- className: "row justify-content-center"
1438
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1439
- className: "col-12 col-sm-8 col-md-6"
1440
- }, /*#__PURE__*/React__default["default"].createElement("h1", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["title".concat(statusCode || 404)])), /*#__PURE__*/React__default["default"].createElement("p", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["description".concat(statusCode || 404)]))))));
1441
- };
1442
- ErrorPage.propTypes = propTypes$3;
1443
- ErrorPage.defaultProps = defaultProps$3;
1444
-
1445
- var basePages = /*#__PURE__*/Object.freeze({
1446
- __proto__: null,
1447
- ResourceCreate: ResourceCreatePage,
1448
- ResourceDelete: ResourceDeletePage,
1449
- ResourceEdit: ResourceEditPage,
1450
- ResourceIndex: ResourceIndexPage,
1451
- ResourceShow: ResourceShowPage,
1452
- Home: HomePage,
1453
- Account: AccountPage,
1454
- Login: LoginPage,
1455
- Error: ErrorPage
1456
- });
1457
-
1458
- var _excluded = ["path", "component", "exact"],
1459
- _excluded2 = ["id"];
1460
- var propTypes$2 = {
1461
- resource: core.PropTypes.resource.isRequired
1462
- };
1463
- var defaultProps$2 = {};
1464
- var ResourceRoutes = function ResourceRoutes(_ref) {
1465
- var resource = _ref.resource;
1466
- var resourceId = resource.id,
1467
- _resource$pages = resource.pages,
1468
- pages = _resource$pages === void 0 ? {} : _resource$pages,
1469
- _resource$extraRoutes = resource.extraRoutes,
1470
- extraRoutes = _resource$extraRoutes === void 0 ? [] : _resource$extraRoutes;
1471
- var route = contexts.useUrlGenerator();
1472
- var componentsManager = contexts.useComponentsManager();
1473
-
1474
- // Load custom pages from resource
1475
- var _ref2 = pages || {},
1476
- _ref2$index = _ref2.index,
1477
- indexPage = _ref2$index === void 0 ? null : _ref2$index,
1478
- _ref2$show = _ref2.show,
1479
- showPage = _ref2$show === void 0 ? null : _ref2$show,
1480
- _ref2$create = _ref2.create,
1481
- createPage = _ref2$create === void 0 ? null : _ref2$create,
1482
- _ref2$edit = _ref2.edit,
1483
- editPage = _ref2$edit === void 0 ? null : _ref2$edit,
1484
- _ref2$delete = _ref2["delete"],
1485
- deletePage = _ref2$delete === void 0 ? null : _ref2$delete;
1486
- var ResourceIndexComponent = indexPage !== null && typeof indexPage.component !== 'undefined' ? componentsManager.getComponent(indexPage.component) : ResourceIndexPage;
1487
- var ResourceShowComponent = showPage !== null && typeof showPage.component !== 'undefined' ? componentsManager.getComponent(showPage.component) : ResourceShowPage;
1488
- var ResourceCreateComponent = createPage !== null && typeof createPage.component !== 'undefined' ? componentsManager.getComponent(createPage.component) : ResourceCreatePage;
1489
- var ResourceEditComponent = editPage !== null && typeof editPage.component !== 'undefined' ? componentsManager.getComponent(editPage.component) : ResourceEditPage;
1490
- var ResourceDeleteComponent = deletePage !== null && typeof deletePage.component !== 'undefined' ? componentsManager.getComponent(deletePage.component) : ResourceDeletePage;
1491
- return /*#__PURE__*/React__default["default"].createElement(reactRouter.Switch, null, extraRoutes.map(function (_ref3) {
1492
- var path = _ref3.path,
1493
- component = _ref3.component,
1494
- _ref3$exact = _ref3.exact,
1495
- exact = _ref3$exact === void 0 ? true : _ref3$exact,
1496
- pageProps = _objectWithoutProperties__default["default"](_ref3, _excluded);
1497
- var RouteComponent = componentsManager.getComponent(component);
1498
- return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1499
- key: "route-".concat(path),
1500
- path: path,
1501
- exact: exact,
1502
- render: function render(_ref4) {
1503
- var _ref4$match$params = _ref4.match.params,
1504
- id = _ref4$match$params.id,
1505
- params = _objectWithoutProperties__default["default"](_ref4$match$params, _excluded2);
1506
- return /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
1507
- resource: resource,
1508
- itemId: id
1509
- }, pageProps, params));
1510
- }
1511
- }) : null;
1512
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1513
- path: route('resources.index', {
1514
- resource: resourceId
1515
- }),
1516
- exact: true,
1517
- render: function render() {
1518
- return /*#__PURE__*/React__default["default"].createElement(ResourceIndexComponent, {
1519
- resource: resource
1520
- });
1521
- }
1522
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1523
- path: route('resources.create', {
1524
- resource: resourceId
1525
- }),
1526
- exact: true,
1527
- render: function render() {
1528
- return /*#__PURE__*/React__default["default"].createElement(ResourceCreateComponent, {
1529
- resource: resource
1530
- });
1531
- }
1532
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1533
- path: route('resources.show', {
1534
- resource: resourceId,
1535
- id: ':id'
1536
- }),
1537
- exact: true,
1538
- render: function render(_ref5) {
1539
- var id = _ref5.match.params.id;
1540
- return /*#__PURE__*/React__default["default"].createElement(ResourceShowComponent, {
1541
- resource: resource,
1542
- itemId: id
1543
- });
1544
- }
1545
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1546
- path: route('resources.edit', {
1547
- resource: resourceId,
1548
- id: ':id'
1549
- }),
1550
- exact: true,
1551
- render: function render(_ref6) {
1552
- var id = _ref6.match.params.id;
1553
- return /*#__PURE__*/React__default["default"].createElement(ResourceEditComponent, {
1554
- resource: resource,
1555
- itemId: id
1556
- });
1557
- }
1558
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1559
- path: route('resources.delete', {
1560
- resource: resourceId,
1561
- id: ':id'
1562
- }),
1563
- exact: true,
1564
- render: function render(_ref7) {
1565
- var id = _ref7.match.params.id;
1566
- return /*#__PURE__*/React__default["default"].createElement(ResourceDeleteComponent, {
1567
- resource: resource,
1568
- itemId: id
1569
- });
1570
- }
1571
- }));
1572
- };
1573
- ResourceRoutes.propTypes = propTypes$2;
1574
- ResourceRoutes.defaultProps = defaultProps$2;
1575
-
1576
- var propTypes$1 = {
1577
- statusCode: core.PropTypes.statusCode
1578
- };
1579
- var defaultProps$1 = {
1580
- statusCode: null
1581
- };
1582
- var PanneauRoutes = function PanneauRoutes(_ref) {
1583
- var initialStatusCode = _ref.statusCode;
1584
- var _usePanneau = contexts.usePanneau(),
1585
- _usePanneau$pages = _usePanneau.pages,
1586
- pages = _usePanneau$pages === void 0 ? {} : _usePanneau$pages;
1587
- var routes = contexts.useRoutes();
1588
- var _useLocation = reactRouter.useLocation(),
1589
- pathname = _useLocation.pathname; // search
1590
-
1591
- var _useState = React.useState({
1592
- statusCode: initialStatusCode,
1593
- pathname: pathname
1594
- }),
1595
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1596
- _useState2$ = _useState2[0],
1597
- statusCode = _useState2$.statusCode,
1598
- initialPathname = _useState2$.pathname,
1599
- setInitialRequest = _useState2[1];
1600
- var user = auth.useUser();
1601
- var route = contexts.useUrlGenerator();
1602
- var resources = contexts.usePanneauResources();
1603
-
1604
- // const nextUrl = useMemo(() => {
1605
- // const query = parseQuery(search);
1606
- // return query !== null ? query.next || null : null;
1607
- // }, [search]);
1608
-
1609
- React.useEffect(function () {
1610
- if (pathname !== initialPathname) {
1611
- setInitialRequest({
1612
- pathname: pathname,
1613
- statusCode: null
1614
- });
1615
- }
1616
- }, [pathname, initialPathname]);
1617
-
1618
- // Custom Pages
1619
- var _ref2 = pages || {},
1620
- _ref2$home = _ref2.home,
1621
- homePage = _ref2$home === void 0 ? null : _ref2$home,
1622
- _ref2$login = _ref2.login,
1623
- loginPage = _ref2$login === void 0 ? null : _ref2$login,
1624
- _ref2$account = _ref2.account,
1625
- accountPage = _ref2$account === void 0 ? null : _ref2$account,
1626
- _ref2$error = _ref2.error,
1627
- errorPage = _ref2$error === void 0 ? null : _ref2$error;
1628
- var HomeComponent = utils.getComponentFromName((homePage === null || homePage === void 0 ? void 0 : homePage.component) || 'home', basePages, homePage === null || homePage === void 0 ? void 0 : homePage.component);
1629
- var LoginComponent = utils.getComponentFromName((loginPage === null || loginPage === void 0 ? void 0 : loginPage.component) || 'login', basePages, loginPage === null || loginPage === void 0 ? void 0 : loginPage.component);
1630
- var AccountComponent = utils.getComponentFromName((accountPage === null || accountPage === void 0 ? void 0 : accountPage.component) || 'account', basePages, accountPage === null || accountPage === void 0 ? void 0 : accountPage.component);
1631
- var ErrorComponent = utils.getComponentFromName((errorPage === null || errorPage === void 0 ? void 0 : errorPage.component) || 'error', basePages, errorPage === null || errorPage === void 0 ? void 0 : errorPage.component);
1632
- return /*#__PURE__*/React__default["default"].createElement(reactRouter.Switch, null, statusCode !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1633
- path: "*",
1634
- render: function render() {
1635
- return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, {
1636
- statusCode: statusCode
1637
- });
1638
- }
1639
- }) : null, user === null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1640
- path: "*",
1641
- exact: true,
1642
- component: LoginComponent
1643
- }) : null, user !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1644
- path: routes.home,
1645
- exact: true,
1646
- component: HomeComponent
1647
- }) : /*#__PURE__*/React__default["default"].createElement(reactRouter.Redirect, {
1648
- from: routes.home,
1649
- exact: true,
1650
- to: route('login')
1651
- }), resources.map(function (resource) {
1652
- var _ref3 = resource || {},
1653
- resourceId = _ref3.id;
1654
- return user !== null ? /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1655
- key: "resource-".concat(resourceId),
1656
- path: route('resources.index', {
1657
- resource: resourceId
1658
- }),
1659
- render: function render() {
1660
- return /*#__PURE__*/React__default["default"].createElement(ResourceRoutes, {
1661
- resource: resource
1662
- });
1663
- }
1664
- }) : /*#__PURE__*/React__default["default"].createElement(reactRouter.Redirect, {
1665
- key: "resource-".concat(resourceId),
1666
- from: route('resources.index', {
1667
- resource: resourceId
1668
- }),
1669
- to: "".concat(route('login'), "?next=").concat(encodeURIComponent(pathname))
1670
- });
1671
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1672
- path: route('auth.account'),
1673
- component: AccountComponent
1674
- }), /*#__PURE__*/React__default["default"].createElement(reactRouter.Route, {
1675
- path: "*",
1676
- component: ErrorComponent
1677
- }));
1678
- };
1679
- PanneauRoutes.propTypes = propTypes$1;
1680
- PanneauRoutes.defaultProps = defaultProps$1;
1681
-
1682
- var propTypes = {
1683
- definition: core.PropTypes.panneauDefinition.isRequired,
1684
- components: PropTypes__default["default"].oneOfType([PropTypes__default["default"].objectOf(PropTypes__default["default"].elementType), PropTypes__default["default"].objectOf(PropTypes__default["default"].objectOf(PropTypes__default["default"].elementType))]),
1685
- user: core.PropTypes.user,
1686
- memoryRouter: PropTypes__default["default"].bool,
1687
- baseUrl: PropTypes__default["default"].string,
1688
- uppy: core.PropTypes.uppy,
1689
- statusCode: core.PropTypes.statusCode
1690
- };
1691
- var defaultProps = {
1692
- components: null,
1693
- user: null,
1694
- memoryRouter: false,
1695
- baseUrl: null,
1696
- uppy: null,
1697
- statusCode: null
1698
- };
1699
- var Container = function Container(_ref) {
1700
- var definition = _ref.definition,
1701
- components = _ref.components,
1702
- user = _ref.user,
1703
- memoryRouter = _ref.memoryRouter,
1704
- baseUrl = _ref.baseUrl,
1705
- uppy = _ref.uppy,
1706
- statusCode = _ref.statusCode;
1707
- var _definition$intl = definition.intl,
1708
- _definition$intl2 = _definition$intl === void 0 ? {} : _definition$intl,
1709
- _definition$intl2$loc = _definition$intl2.locale,
1710
- locale = _definition$intl2$loc === void 0 ? 'en' : _definition$intl2$loc,
1711
- _definition$intl2$loc2 = _definition$intl2.locales,
1712
- locales = _definition$intl2$loc2 === void 0 ? [] : _definition$intl2$loc2,
1713
- _definition$routes = definition.routes,
1714
- routes = _definition$routes === void 0 ? {} : _definition$routes,
1715
- _definition$settings = definition.settings,
1716
- _definition$settings2 = _definition$settings === void 0 ? {} : _definition$settings,
1717
- _definition$settings3 = _definition$settings2.memoryRouter,
1718
- usesMemoryRouter = _definition$settings3 === void 0 ? false : _definition$settings3;
1719
- var Router = memoryRouter || usesMemoryRouter ? reactRouter.MemoryRouter : reactRouterDom.BrowserRouter;
1720
- var extraMessages = React.useMemo(function () {
1721
- var _definition$intl3 = definition.intl,
1722
- _definition$intl4 = _definition$intl3 === void 0 ? {} : _definition$intl3,
1723
- _definition$intl4$mes = _definition$intl4.messages,
1724
- messages = _definition$intl4$mes === void 0 ? null : _definition$intl4$mes,
1725
- _definition$resources = definition.resources,
1726
- resources = _definition$resources === void 0 ? [] : _definition$resources;
1727
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, messages), resources.reduce(function (allMessages, _ref2) {
1728
- var id = _ref2.id,
1729
- _ref2$intl = _ref2.intl,
1730
- _ref2$intl2 = _ref2$intl === void 0 ? {} : _ref2$intl,
1731
- _ref2$intl2$messages = _ref2$intl2.messages,
1732
- resourceMessages = _ref2$intl2$messages === void 0 ? {} : _ref2$intl2$messages;
1733
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, allMessages), Object.keys(resourceMessages).reduce(function (allResourceMessages, key) {
1734
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, allResourceMessages), {}, _defineProperty__default["default"]({}, "resources.".concat(id, ".").concat(key), resourceMessages[key]));
1735
- }, {}));
1736
- }, {}));
1737
- }, [definition]);
1738
- var onUnauthorized = React.useCallback(function () {
1739
- window.location.href = baseUrl;
1740
- }, [baseUrl]);
1741
- var onLogout = React.useCallback(function () {
1742
- window.location.reload();
1743
- }, [baseUrl]);
1744
- return /*#__PURE__*/React__default["default"].createElement(Router, null, /*#__PURE__*/React__default["default"].createElement(intl.IntlProvider, {
1745
- locale: locale,
1746
- locales: locales,
1747
- extraMessages: extraMessages
1748
- }, /*#__PURE__*/React__default["default"].createElement(contexts.PanneauProvider, {
1749
- definition: definition
1750
- }, /*#__PURE__*/React__default["default"].createElement(contexts.UppyProvider, uppy, /*#__PURE__*/React__default["default"].createElement(contexts.RoutesProvider, {
1751
- routes: routes
1752
- }, /*#__PURE__*/React__default["default"].createElement(FieldsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(FormsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(ListsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(DisplaysProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(FiltersProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(data.ApiProvider, {
1753
- baseUrl: baseUrl,
1754
- onUnauthorized: onUnauthorized
1755
- }, /*#__PURE__*/React__default["default"].createElement(auth.AuthProvider, {
1756
- user: user,
1757
- onLogout: onLogout
1758
- }, /*#__PURE__*/React__default["default"].createElement(contexts.ComponentsProvider, {
1759
- components: components
1760
- }, /*#__PURE__*/React__default["default"].createElement(PanneauRoutes, {
1761
- statusCode: statusCode
1762
- }))))))))))))));
1763
- };
1764
- Container.propTypes = propTypes;
1765
- Container.defaultProps = defaultProps;
1766
-
1767
- exports.GuestLayout = GuestLayout;
1768
- exports.MainLayout = MainLayout;
1769
- exports.PageHeader = PageHeader;
1770
- exports.ResourceFilters = ResourceFilters;
1771
- exports.ResourceForm = ResourceForm;
1772
- exports.ResourceItemsList = ResourceItemsList;
1773
- exports["default"] = Container;