@panneau/app 2.0.67 → 2.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +128 -578
  2. package/lib/index.js +92 -543
  3. package/package.json +30 -27
package/es/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
3
- import PropTypes$1 from 'prop-types';
4
- import React, { useMemo, useCallback, useState, useEffect, Fragment } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import React, { useCallback, useMemo, useState, useEffect, Fragment } from 'react';
5
5
  import { useLocation, useNavigate, useParams, Route, Routes, Navigate, MemoryRouter } from 'react-router';
6
6
  import { Link, BrowserRouter } from 'react-router-dom';
7
7
  import { useUser, useLogout, useAuth, AuthProvider } from '@panneau/auth';
8
- import { PropTypes } from '@panneau/core';
9
- import { useLocales, useFormsComponents, FormProvider, useUrlGenerator, usePanneauResources, usePanneau, usePanneauColorScheme, ResourceProvider, useFiltersComponents, useListsComponents, useComponentsManager, useRoutes, usePagesComponentsManager, PanneauProvider, UppyProvider, RoutesProvider, ModalProvider, ComponentsProvider } from '@panneau/core/contexts';
10
- import { useResourceStore, useResourceUpdate, useResourceDestroy, useResourceItem, useResourceItems, ApiProvider } from '@panneau/data';
8
+ import { PropTypes as PropTypes$1 } from '@panneau/core';
9
+ import { useUrlGenerator, usePanneauResources, usePanneau, usePanneauColorScheme, ResourceProvider, useComponentsManager, useFormsComponents, useRoutes, usePagesComponentsManager, PanneauProvider, UppyProvider, RoutesProvider, ModalProvider, ComponentsProvider } from '@panneau/core/contexts';
10
+ import { useResourceItem, ApiProvider } from '@panneau/data';
11
11
  import DisplaysProvider from '@panneau/displays';
12
12
  import FieldsProvider from '@panneau/fields';
13
13
  import FiltersProvider from '@panneau/filters';
@@ -21,11 +21,9 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
21
21
  import isObject from 'lodash/isObject';
22
22
  import queryString from 'query-string';
23
23
  import { FormattedMessage, defineMessages } from 'react-intl';
24
- import { useResourceUrlGenerator, useForm } from '@panneau/core/hooks';
25
- import { getComponentFromName } from '@panneau/core/utils';
24
+ import { useResourceUrlGenerator } from '@panneau/core/hooks';
25
+ import ResourceForm from '@panneau/form-resource';
26
26
  import classNames from 'classnames';
27
- import Button from '@panneau/element-button';
28
- import Form from '@panneau/element-form';
29
27
  import { Modals } from '@panneau/element-modal';
30
28
  import isArray from 'lodash/isArray';
31
29
  import Menu from '@panneau/element-menu';
@@ -33,291 +31,34 @@ import Navbar from '@panneau/element-navbar';
33
31
  import Label from '@panneau/element-label';
34
32
  import isString from 'lodash/isString';
35
33
  import Alert from '@panneau/element-alert';
34
+ import Button from '@panneau/element-button';
36
35
  import Dropdown from '@panneau/element-dropdown';
37
- import Pagination from '@panneau/element-pagination';
38
- import _toPropertyKey from '@babel/runtime/helpers/toPropertyKey';
39
- import { faUndo } from '@fortawesome/free-solid-svg-icons';
40
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
41
- import FormGroup from '@panneau/element-form-group';
42
-
43
- var _excluded$6 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
44
- var propTypes$m = {
45
- resource: PropTypes.resource.isRequired,
46
- action: PropTypes$1.string,
47
- previous: PropTypes$1.string,
48
- fields: PropTypes.fields.isRequired,
49
- value: PropTypes$1.object,
50
- // eslint-disable-line react/forbid-prop-types
51
- onChange: PropTypes$1.func.isRequired,
52
- onSubmit: PropTypes$1.func,
53
- status: PropTypes.formStatus,
54
- generalError: PropTypes$1.string,
55
- errors: PropTypes$1.objectOf(PropTypes$1.arrayOf(PropTypes$1.string)),
56
- className: PropTypes$1.string
57
- };
58
- var defaultProps$m = {
59
- action: null,
60
- previous: null,
61
- status: null,
62
- value: null,
63
- onSubmit: null,
64
- generalError: null,
65
- errors: null,
66
- className: null
67
- };
68
- var DeleteForm = function DeleteForm(_ref) {
69
- var resource = _ref.resource,
70
- action = _ref.action,
71
- previous = _ref.previous;
72
- _ref.status;
73
- var value = _ref.value,
74
- onSubmit = _ref.onSubmit;
75
- _ref.errors;
76
- var generalError = _ref.generalError,
77
- className = _ref.className,
78
- props = _objectWithoutProperties(_ref, _excluded$6);
79
- var _ref2 = value || {},
80
- _ref2$id = _ref2.id,
81
- id = _ref2$id === void 0 ? null : _ref2$id;
82
- var resourceValues = useResourceValues(resource, {
83
- id: id
84
- });
85
- // const { text, background } = usePanneauColorScheme();
86
-
87
- return /*#__PURE__*/React.createElement(Form, Object.assign({
88
- className: classNames(['form', _defineProperty({
89
- 'invalid-feedback': generalError !== null
90
- }, className, className !== null)]),
91
- action: action,
92
- onSubmit: onSubmit,
93
- withoutActions: true,
94
- withoutErrors: true
95
- }, props), /*#__PURE__*/React.createElement("div", {
96
- className: classNames(['card', _defineProperty({}, className, className !== null)])
97
- }, /*#__PURE__*/React.createElement("div", {
98
- className: "card-body"
99
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
100
- values: resourceValues,
101
- id: "yzfiXJ",
102
- defaultMessage: [{
103
- "type": 0,
104
- "value": "Are you sure you want to delete "
105
- }, {
106
- "type": 1,
107
- "value": "the_singular"
108
- }, {
109
- "type": 0,
110
- "value": " #"
111
- }, {
112
- "type": 1,
113
- "value": "id"
114
- }, {
115
- "type": 0,
116
- "value": "?"
117
- }]
118
- }), generalError ? /*#__PURE__*/React.createElement("p", {
119
- className: "text-danger"
120
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
121
- id: "y9zauY",
122
- defaultMessage: [{
123
- "type": 0,
124
- "value": "An error occured and we could not delete this item successfully."
125
- }]
126
- })) : null), /*#__PURE__*/React.createElement("div", {
127
- className: "card-body d-flex"
128
- }, previous !== null ? /*#__PURE__*/React.createElement(Button, {
129
- href: previous,
130
- className: "me-2",
131
- theme: "secondary",
132
- outline: true
133
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
134
- id: "PyxZY2",
135
- defaultMessage: [{
136
- "type": 0,
137
- "value": "Cancel"
138
- }]
139
- })) : null, /*#__PURE__*/React.createElement(Button, {
140
- type: "submit",
141
- className: "ms-auto",
142
- theme: "danger"
143
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
144
- id: "Bhu3B2",
145
- defaultMessage: [{
146
- "type": 0,
147
- "value": "Delete"
148
- }]
149
- })))));
150
- };
151
- DeleteForm.propTypes = propTypes$m;
152
- DeleteForm.defaultProps = defaultProps$m;
153
-
154
- var _excluded$5 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
155
- var propTypes$l = {
156
- component: PropTypes$1.string,
157
- resource: PropTypes.resource.isRequired,
158
- item: PropTypes$1.object,
159
- // eslint-disable-line react/forbid-prop-types
160
- type: PropTypes$1.string,
161
- onSuccess: PropTypes$1.func,
162
- isDelete: PropTypes$1.bool
163
- };
164
- var defaultProps$l = {
165
- component: null,
166
- item: null,
167
- type: null,
168
- onSuccess: null,
169
- isDelete: false
170
- };
171
- var ResourceForm = function ResourceForm(_ref) {
172
- var component = _ref.component,
173
- resource = _ref.resource,
174
- onSuccess = _ref.onSuccess,
175
- item = _ref.item,
176
- type = _ref.type,
177
- isDelete = _ref.isDelete,
178
- props = _objectWithoutProperties(_ref, _excluded$5);
179
- var locales = useLocales();
180
- var FormComponents = useFormsComponents();
181
- var _resource$fields = resource.fields,
182
- resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
183
- _resource$types = resource.types,
184
- resourceTypes = _resource$types === void 0 ? [] : _resource$types,
185
- forms = resource.forms;
186
- var resourceType = type !== null ? resourceTypes.find(function (it) {
187
- return it.id === type;
188
- }) || null : null;
189
- var _ref2 = resourceType || {},
190
- _ref2$fields = _ref2.fields,
191
- resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
192
- var isCreate = item === null || !item.id;
193
-
194
- // Pick fields from resource root or form
195
- var _ref3 = forms || {},
196
- _ref3$default = _ref3["default"],
197
- defaultForm = _ref3$default === void 0 ? null : _ref3$default,
198
- _ref3$create = _ref3.create,
199
- createForm = _ref3$create === void 0 ? null : _ref3$create,
200
- _ref3$edit = _ref3.edit,
201
- editForm = _ref3$edit === void 0 ? null : _ref3$edit,
202
- _ref3$delete = _ref3["delete"],
203
- deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
204
- var _ref4 = defaultForm || {},
205
- _ref4$fields = _ref4.fields,
206
- defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
207
- defaultComponent = _ref4.component;
208
- var createOrEditSource = isCreate ? createForm || {} : editForm || {};
209
- var _ref5 = isDelete ? deleteForm || {} : createOrEditSource || {},
210
- _ref5$fields = _ref5.fields,
211
- formFields = _ref5$fields === void 0 ? null : _ref5$fields,
212
- _ref5$component = _ref5.component,
213
- formComponent = _ref5$component === void 0 ? null : _ref5$component;
214
- var finalFields = useMemo(function () {
215
- return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref6) {
216
- var _ref6$settings = _ref6.settings,
217
- _ref6$settings2 = _ref6$settings === void 0 ? {} : _ref6$settings,
218
- _ref6$settings2$hidde = _ref6$settings2.hiddenInForm,
219
- hiddenInForm = _ref6$settings2$hidde === void 0 ? false : _ref6$settings2$hidde;
220
- return !hiddenInForm;
221
- });
222
- }, [formFields, defaultFields, resourceTypeFields, resourceFields]);
223
-
224
- // Form routes
225
- var resourceRoute = useResourceUrlGenerator(resource);
226
- var _useResourceStore = useResourceStore(resource),
227
- store = _useResourceStore.store;
228
- var _useResourceUpdate = useResourceUpdate(resource, item != null ? item.id : null),
229
- update = _useResourceUpdate.update;
230
- var _useResourceDestroy = useResourceDestroy(resource, item != null ? item.id : null),
231
- destroy = _useResourceDestroy.destroy;
232
-
233
- // Post actions
234
- var postAction = isCreate ? store : update;
235
- var postForm = useCallback(function (action, data) {
236
- return isDelete ? destroy() : postAction(data);
237
- }, [postAction, isDelete, destroy, store, update]);
238
-
239
- // Form state
240
- var getInitialValue = useCallback(function () {
241
- return item !== null ? item : finalFields.reduce(function (defaultValues, _ref7) {
242
- var name = _ref7.name,
243
- _ref7$defaultValue = _ref7.defaultValue,
244
- defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
245
- return defaultValue !== null ? _objectSpread(_objectSpread({}, defaultValues), {}, _defineProperty({}, name, defaultValue)) : defaultValues;
246
- }, type !== null ? {
247
- type: type
248
- } : null);
249
- }, [item, type, finalFields]);
250
- var _useState = useState(getInitialValue()),
251
- _useState2 = _slicedToArray(_useState, 2),
252
- value = _useState2[0],
253
- setValueState = _useState2[1];
254
- var setValue = useCallback(function (newValue) {
255
- // console.log('new value in resource form', newValue); // eslint-disable-line
256
- setValueState(newValue);
257
- }, [setValueState]);
258
- var _useForm = useForm({
259
- fields: finalFields,
260
- value: value,
261
- postForm: postForm,
262
- setValue: setValue,
263
- onComplete: onSuccess,
264
- locales: locales
265
- }),
266
- fields = _useForm.fields,
267
- onSubmit = _useForm.onSubmit,
268
- status = _useForm.status,
269
- generalError = _useForm.generalError,
270
- errors = _useForm.errors;
271
-
272
- // Form action
273
- var modifyAction = isCreate ? resourceRoute('store') : resourceRoute('update', {
274
- id: item.id
275
- });
276
- var action = isDelete ? resourceRoute('destroy', {
277
- id: item.id
278
- }) : modifyAction;
279
- var defaultFormName = isDelete ? component || formComponent || null : component || formComponent || defaultComponent || 'normal';
36
+ import ResourceList from '@panneau/list-resource-items';
37
+ import { getComponentFromName } from '@panneau/core/utils';
38
+ import Filters from '@panneau/filter-filters';
280
39
 
281
- // Form component
282
- var FormComponent = getComponentFromName(defaultFormName, FormComponents, isDelete ? DeleteForm : component);
40
+ /* eslint-disable react/jsx-props-no-spreading */
283
41
 
284
- // Lisen to item value change - this is important
285
- useEffect(function () {
286
- // console.log('get initial value from the top'); // eslint-disable-line
287
- setValue(getInitialValue());
288
- }, [getInitialValue, setValue]);
289
- return /*#__PURE__*/React.createElement(FormProvider, {
290
- value: value,
291
- setValue: setValue
292
- }, /*#__PURE__*/React.createElement(FormComponent, Object.assign({}, props, {
293
- status: status,
294
- resource: resource,
295
- item: item,
296
- fields: fields,
297
- generalError: generalError,
298
- errors: errors,
299
- action: action,
300
- onSubmit: onSubmit,
301
- isCreate: isCreate,
302
- value: value,
303
- onChange: setValue
304
- })));
42
+ // Kept for backward compatibility with exports
43
+ var ResourceFormWrapper = function ResourceFormWrapper(props) {
44
+ return /*#__PURE__*/React.createElement(ResourceForm, props);
305
45
  };
306
- ResourceForm.propTypes = propTypes$l;
307
- ResourceForm.defaultProps = defaultProps$l;
308
46
 
309
- var propTypes$k = {
310
- className: PropTypes$1.string,
311
- itemClassName: PropTypes$1.string,
312
- linkClassName: PropTypes$1.string
47
+ var propTypes$j = {
48
+ withAccountForm: PropTypes.bool,
49
+ className: PropTypes.string,
50
+ itemClassName: PropTypes.string,
51
+ linkClassName: PropTypes.string
313
52
  };
314
- var defaultProps$k = {
53
+ var defaultProps$i = {
54
+ withAccountForm: false,
315
55
  className: null,
316
56
  itemClassName: null,
317
57
  linkClassName: null
318
58
  };
319
59
  var AccountMenu = function AccountMenu(_ref) {
320
- var className = _ref.className,
60
+ var withAccountForm = _ref.withAccountForm,
61
+ className = _ref.className,
321
62
  itemClassName = _ref.itemClassName,
322
63
  linkClassName = _ref.linkClassName;
323
64
  var route = useUrlGenerator();
@@ -338,17 +79,16 @@ var AccountMenu = function AccountMenu(_ref) {
338
79
  }]
339
80
  }),
340
81
  href: route('account'),
341
- dropdown: [
342
- // {
343
- // label: (
344
- // <FormattedMessage
345
- // defaultMessage="Update account"
346
- // description="Menu label"
347
- // />
348
- // ),
349
- // href: route('account'),
350
- // },
351
- {
82
+ dropdown: [].concat(_toConsumableArray(withAccountForm ? [{
83
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
84
+ id: "V7Us0a",
85
+ defaultMessage: [{
86
+ "type": 0,
87
+ "value": "Update account"
88
+ }]
89
+ }),
90
+ href: route('account')
91
+ }] : []), [{
352
92
  label: /*#__PURE__*/React.createElement(FormattedMessage, {
353
93
  id: "REIcPg",
354
94
  defaultMessage: [{
@@ -358,7 +98,7 @@ var AccountMenu = function AccountMenu(_ref) {
358
98
  }),
359
99
  href: route('auth.logout'),
360
100
  onClick: onClickLogout
361
- }]
101
+ }])
362
102
  }] : [{
363
103
  label: /*#__PURE__*/React.createElement(FormattedMessage, {
364
104
  id: "d0g58T",
@@ -369,7 +109,7 @@ var AccountMenu = function AccountMenu(_ref) {
369
109
  }),
370
110
  href: route('auth.login')
371
111
  }];
372
- }, [user, route, onClickLogout]);
112
+ }, [user, route, onClickLogout, withAccountForm]);
373
113
  return items !== null ? /*#__PURE__*/React.createElement(Menu, {
374
114
  className: className,
375
115
  itemClassName: itemClassName,
@@ -378,15 +118,15 @@ var AccountMenu = function AccountMenu(_ref) {
378
118
  dropdownAlign: "end"
379
119
  }) : null;
380
120
  };
381
- AccountMenu.propTypes = propTypes$k;
382
- AccountMenu.defaultProps = defaultProps$k;
121
+ AccountMenu.propTypes = propTypes$j;
122
+ AccountMenu.defaultProps = defaultProps$i;
383
123
 
384
- var propTypes$j = {
385
- className: PropTypes$1.string,
386
- itemClassName: PropTypes$1.string,
387
- linkClassName: PropTypes$1.string
124
+ var propTypes$i = {
125
+ className: PropTypes.string,
126
+ itemClassName: PropTypes.string,
127
+ linkClassName: PropTypes.string
388
128
  };
389
- var defaultProps$j = {
129
+ var defaultProps$h = {
390
130
  className: null,
391
131
  itemClassName: null,
392
132
  linkClassName: null
@@ -423,11 +163,11 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
423
163
  linkClassName: linkClassName
424
164
  });
425
165
  };
426
- ResourcesMenu.propTypes = propTypes$j;
427
- ResourcesMenu.defaultProps = defaultProps$j;
166
+ ResourcesMenu.propTypes = propTypes$i;
167
+ ResourcesMenu.defaultProps = defaultProps$h;
428
168
 
429
- var propTypes$i = {};
430
- var defaultProps$i = {};
169
+ var propTypes$h = {};
170
+ var defaultProps$g = {};
431
171
  var MainNavbar = function MainNavbar(props) {
432
172
  var _usePanneau = usePanneau(),
433
173
  name = _usePanneau.name,
@@ -490,16 +230,16 @@ var MainNavbar = function MainNavbar(props) {
490
230
  className: "navbar-brand"
491
231
  }, name) : null, items);
492
232
  };
493
- MainNavbar.propTypes = propTypes$i;
494
- MainNavbar.defaultProps = defaultProps$i;
233
+ MainNavbar.propTypes = propTypes$h;
234
+ MainNavbar.defaultProps = defaultProps$g;
495
235
 
496
236
  var styles$1 = {};
497
237
 
498
- var propTypes$h = {
499
- children: PropTypes$1.node.isRequired,
500
- fullscreen: PropTypes$1.bool
238
+ var propTypes$g = {
239
+ children: PropTypes.node.isRequired,
240
+ fullscreen: PropTypes.bool
501
241
  };
502
- var defaultProps$h = {
242
+ var defaultProps$f = {
503
243
  fullscreen: false
504
244
  };
505
245
  var MainLayout = function MainLayout(_ref) {
@@ -524,17 +264,17 @@ var MainLayout = function MainLayout(_ref) {
524
264
  }, _defineProperty(_ref2, "bg-".concat(background), background !== null), _defineProperty(_ref2, "text-".concat(text), text !== null), _ref2)])
525
265
  }, children), /*#__PURE__*/React.createElement(Modals, null));
526
266
  };
527
- MainLayout.propTypes = propTypes$h;
528
- MainLayout.defaultProps = defaultProps$h;
267
+ MainLayout.propTypes = propTypes$g;
268
+ MainLayout.defaultProps = defaultProps$f;
529
269
 
530
- var propTypes$g = {
531
- title: PropTypes.label,
532
- actions: PropTypes$1.node,
533
- small: PropTypes$1.bool,
534
- className: PropTypes$1.string,
535
- children: PropTypes$1.node
270
+ var propTypes$f = {
271
+ title: PropTypes$1.label,
272
+ actions: PropTypes.node,
273
+ small: PropTypes.bool,
274
+ className: PropTypes.string,
275
+ children: PropTypes.node
536
276
  };
537
- var defaultProps$g = {
277
+ var defaultProps$e = {
538
278
  title: null,
539
279
  actions: null,
540
280
  small: false,
@@ -571,13 +311,13 @@ var PageHeader = function PageHeader(_ref) {
571
311
  className: "col-12 col-md-8 col-lg-7"
572
312
  }, inner)) : inner), children);
573
313
  };
574
- PageHeader.propTypes = propTypes$g;
575
- PageHeader.defaultProps = defaultProps$g;
314
+ PageHeader.propTypes = propTypes$f;
315
+ PageHeader.defaultProps = defaultProps$e;
576
316
 
577
- var propTypes$f = {
578
- resource: PropTypes.resource.isRequired
317
+ var propTypes$e = {
318
+ resource: PropTypes$1.resource.isRequired
579
319
  };
580
- var defaultProps$f = {};
320
+ var defaultProps$d = {};
581
321
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
582
322
  var resource = _ref.resource;
583
323
  var navigate = useNavigate();
@@ -614,20 +354,20 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
614
354
  className: "row justify-content-center"
615
355
  }, /*#__PURE__*/React.createElement("div", {
616
356
  className: "col-12 col-md-8 col-lg-7"
617
- }, /*#__PURE__*/React.createElement(ResourceForm, {
357
+ }, /*#__PURE__*/React.createElement(ResourceFormWrapper, {
618
358
  resource: resource,
619
359
  type: type,
620
360
  onSuccess: onSuccess
621
361
  }))))));
622
362
  };
623
- ResourceCreatePage.propTypes = propTypes$f;
624
- ResourceCreatePage.defaultProps = defaultProps$f;
363
+ ResourceCreatePage.propTypes = propTypes$e;
364
+ ResourceCreatePage.defaultProps = defaultProps$d;
625
365
 
626
366
  // import PropTypes from 'prop-types';
627
- var propTypes$e = {
628
- resource: PropTypes.resource.isRequired
367
+ var propTypes$d = {
368
+ resource: PropTypes$1.resource.isRequired
629
369
  };
630
- var defaultProps$e = {};
370
+ var defaultProps$c = {};
631
371
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
632
372
  var resource = _ref.resource;
633
373
  var _useParams = useParams(),
@@ -661,20 +401,20 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
661
401
  className: "row justify-content-center"
662
402
  }, /*#__PURE__*/React.createElement("div", {
663
403
  className: "col-12 col-md-8 col-lg-7"
664
- }, item !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
404
+ }, item !== null ? /*#__PURE__*/React.createElement(ResourceFormWrapper, {
665
405
  resource: resource,
666
406
  item: item,
667
407
  onSuccess: onSuccess,
668
408
  isDelete: true
669
409
  }) : null)))));
670
410
  };
671
- ResourceDeletePage.propTypes = propTypes$e;
672
- ResourceDeletePage.defaultProps = defaultProps$e;
411
+ ResourceDeletePage.propTypes = propTypes$d;
412
+ ResourceDeletePage.defaultProps = defaultProps$c;
673
413
 
674
- var propTypes$d = {
675
- resource: PropTypes.resource.isRequired
414
+ var propTypes$c = {
415
+ resource: PropTypes$1.resource.isRequired
676
416
  };
677
- var defaultProps$d = {};
417
+ var defaultProps$b = {};
678
418
  var ResourceEditPage = function ResourceEditPage(_ref) {
679
419
  var resource = _ref.resource;
680
420
  var _useParams = useParams(),
@@ -716,21 +456,21 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
716
456
  className: "row justify-content-center"
717
457
  }, /*#__PURE__*/React.createElement("div", {
718
458
  className: "col-12 col-md-8 col-lg-7"
719
- }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
459
+ }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceFormWrapper, {
720
460
  resource: resource,
721
461
  item: editItem,
722
462
  type: type,
723
463
  onSuccess: onSuccess
724
464
  }) : null)))));
725
465
  };
726
- ResourceEditPage.propTypes = propTypes$d;
727
- ResourceEditPage.defaultProps = defaultProps$d;
466
+ ResourceEditPage.propTypes = propTypes$c;
467
+ ResourceEditPage.defaultProps = defaultProps$b;
728
468
 
729
- var propTypes$c = {
730
- resource: PropTypes.resource.isRequired,
731
- className: PropTypes$1.string
469
+ var propTypes$b = {
470
+ resource: PropTypes$1.resource.isRequired,
471
+ className: PropTypes.string
732
472
  };
733
- var defaultProps$c = {
473
+ var defaultProps$a = {
734
474
  className: null
735
475
  };
736
476
  var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
@@ -799,232 +539,35 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
799
539
  onClickOutside: onDropdownClickOutside
800
540
  })) : button;
801
541
  };
802
- ResourceCreateButtom.propTypes = propTypes$c;
803
- ResourceCreateButtom.defaultProps = defaultProps$c;
542
+ ResourceCreateButtom.propTypes = propTypes$b;
543
+ ResourceCreateButtom.defaultProps = defaultProps$a;
804
544
 
805
- var _excluded$4 = ["component", "name", "groupLabel"];
806
- var propTypes$b = {
807
- filters: PropTypes$1.arrayOf(PropTypes$1.shape({
808
- id: PropTypes$1.string,
809
- component: PropTypes$1.string.isRequired
810
- })),
811
- value: PropTypes$1.object,
812
- // eslint-disable-line react/forbid-prop-types
813
- onChange: PropTypes$1.func,
814
- onReset: PropTypes$1.func,
815
- withContainer: PropTypes$1.bool,
816
- withReset: PropTypes$1.bool,
817
- defaultValue: PropTypes$1.objectOf(PropTypes$1.object),
818
- // eslint-disable-line react/forbid-prop-types
819
- className: PropTypes$1.string
820
- };
821
- var defaultProps$b = {
822
- filters: [],
823
- value: null,
824
- onChange: null,
825
- onReset: null,
826
- withContainer: false,
827
- withReset: true,
828
- defaultValue: {
829
- page: null
830
- },
831
- className: null
832
- };
833
- var ResourceFilters = function ResourceFilters(_ref) {
834
- var filters = _ref.filters,
835
- value = _ref.value,
836
- onChange = _ref.onChange,
837
- onReset = _ref.onReset,
838
- withContainer = _ref.withContainer,
839
- withReset = _ref.withReset,
840
- defaultValue = _ref.defaultValue,
841
- className = _ref.className;
842
- var FilterComponents = useFiltersComponents();
843
- var _usePanneauColorSchem = usePanneauColorScheme(),
844
- background = _usePanneauColorSchem.background;
845
- var currentFilters = filters || [];
846
- var onFiltersReset = useCallback(function () {
847
- if (onReset !== null) {
848
- onReset(null);
849
- }
850
- }, [onReset]);
851
- var hasActiveFilter = (currentFilters || []).reduce(function (isActive, item) {
852
- if (value !== null && value[item.name]) {
853
- return true;
854
- }
855
- return isActive;
856
- }, false);
857
- var onFilterChange = useCallback(function (name, newFilterValue) {
858
- if (name !== null && onChange !== null) {
859
- onChange(_objectSpread(_objectSpread({}, value), {}, _defineProperty({}, name, newFilterValue), defaultValue));
860
- }
861
- }, [onChange, value, defaultValue]);
862
- var onFilterClear = useCallback(function (name) {
863
- if (name !== null && onChange !== null) {
864
- var _ref2 = value || {};
865
- _ref2[name];
866
- var newValue = _objectWithoutProperties(_ref2, [name].map(_toPropertyKey));
867
- onChange(_objectSpread(_objectSpread({}, newValue), defaultValue));
868
- }
869
- }, [onChange, value, defaultValue]);
870
- return /*#__PURE__*/React.createElement(Navbar, {
871
- className: classNames([_defineProperty({
872
- 'navbar-expand-md': withContainer
873
- }, className, className !== null), 'justify-content-start', 'align-items-start', 'flex-column', 'flex-md-row']),
874
- theme: background,
875
- withoutCollapse: true
876
- }, currentFilters.map(function (_ref4, index) {
877
- var component = _ref4.component,
878
- name = _ref4.name,
879
- groupLabel = _ref4.groupLabel,
880
- filterProps = _objectWithoutProperties(_ref4, _excluded$4);
881
- var FilterComponent = getComponentFromName(component, FilterComponents, null);
882
- var filterValue = value !== null && value[name] ? value[name] : null;
883
- return FilterComponent !== null ? /*#__PURE__*/React.createElement(FormGroup, {
884
- key: "filter-".concat(name, "-").concat(index + 1),
885
- label: groupLabel,
886
- className: "mb-3 me-3"
887
- }, /*#__PURE__*/React.createElement(FilterComponent, Object.assign({}, filterProps, {
888
- value: filterValue,
889
- onChange: function onChange(newValue) {
890
- return onFilterChange(name, newValue);
891
- },
892
- onClear: function onClear() {
893
- return onFilterClear(name);
894
- }
895
- }))) : null;
896
- }), withReset && hasActiveFilter && currentFilters.length > 0 ? /*#__PURE__*/React.createElement(Button, {
897
- theme: "primary",
898
- onClick: onFiltersReset
899
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
900
- icon: faUndo
901
- })) : null);
902
- };
903
- ResourceFilters.propTypes = propTypes$b;
904
- ResourceFilters.defaultProps = defaultProps$b;
905
-
906
- var _excluded$3 = ["component", "showPagination", "filters", "actions"],
907
- _excluded2$1 = ["page"];
545
+ var _excluded$3 = ["resource"];
908
546
  var propTypes$a = {
909
- resource: PropTypes.resource.isRequired,
910
- query: PropTypes$1.object,
911
- // eslint-disable-line react/forbid-prop-types
912
- paginated: PropTypes$1.bool,
913
- baseUrl: PropTypes$1.string,
914
- component: PropTypes$1.oneOfType([PropTypes$1.elementType, PropTypes$1.string]),
915
- componentProps: PropTypes$1.object,
916
- // eslint-disable-line react/forbid-prop-types
917
- onQueryChange: PropTypes$1.func,
918
- onQueryReset: PropTypes$1.func,
919
- onClickPage: PropTypes$1.func,
920
- showFilters: PropTypes$1.bool,
921
- listProps: PropTypes$1.shape({})
922
- };
923
- var defaultProps$a = {
924
- query: null,
925
- paginated: true,
926
- component: null,
927
- baseUrl: null,
928
- componentProps: null,
929
- onQueryChange: null,
930
- onQueryReset: null,
931
- onClickPage: null,
932
- showFilters: true,
933
- listProps: null
547
+ resource: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
548
+ id: PropTypes.string
549
+ })]).isRequired
934
550
  };
551
+
552
+ // Kept for backward compatibility with exports
935
553
  var ResourceItemsList = function ResourceItemsList(_ref) {
936
554
  var resource = _ref.resource,
937
- query = _ref.query,
938
- baseUrl = _ref.baseUrl,
939
- onQueryChange = _ref.onQueryChange,
940
- onQueryReset = _ref.onQueryReset,
941
- onClickPage = _ref.onClickPage,
942
- paginated = _ref.paginated,
943
- showFilters = _ref.showFilters,
944
- customListProps = _ref.listProps;
945
- var _resource$index = resource.index,
946
- _resource$index2 = _resource$index === void 0 ? {} : _resource$index,
947
- _resource$index2$comp = _resource$index2.component,
948
- listComponent = _resource$index2$comp === void 0 ? null : _resource$index2$comp,
949
- _resource$index2$show = _resource$index2.showPagination,
950
- showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
951
- _resource$index2$filt = _resource$index2.filters,
952
- filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt;
953
- _resource$index2.actions;
954
- var listProps = _objectWithoutProperties(_resource$index2, _excluded$3);
955
- var _usePanneauColorSchem = usePanneauColorScheme(),
956
- _usePanneauColorSchem2 = _usePanneauColorSchem.background,
957
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
958
- var ListComponents = useListsComponents();
959
- var _useMemo = useMemo(function () {
960
- var _ref2 = query || {},
961
- _ref2$page = _ref2.page,
962
- currentPage = _ref2$page === void 0 ? 1 : _ref2$page,
963
- rest = _objectWithoutProperties(_ref2, _excluded2$1);
964
- return [currentPage, rest];
965
- }, [query]),
966
- _useMemo2 = _slicedToArray(_useMemo, 2),
967
- page = _useMemo2[0],
968
- queryWithoutPage = _useMemo2[1];
969
- var itemsProps = useResourceItems(resource, queryWithoutPage, paginated ? parseInt(page, 10) : null);
970
- var _ref3 = itemsProps || {},
971
- _ref3$loaded = _ref3.loaded,
972
- loaded = _ref3$loaded === void 0 ? false : _ref3$loaded,
973
- _ref3$loading = _ref3.loading,
974
- loading = _ref3$loading === void 0 ? false : _ref3$loading,
975
- _ref3$lastPage = _ref3.lastPage,
976
- lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
977
- _ref3$total = _ref3.total,
978
- total = _ref3$total === void 0 ? 0 : _ref3$total;
979
- var finalEmpty = loaded && !loading && total === 0;
980
- var ListComponent = getComponentFromName(listComponent || 'table', ListComponents);
981
- return /*#__PURE__*/React.createElement(React.Fragment, null, showFilters && filters !== null ? /*#__PURE__*/React.createElement(ResourceFilters, {
982
- filters: filters,
983
- value: query,
984
- onChange: onQueryChange,
985
- onReset: onQueryReset
986
- }) : null, paginated && showPagination ? /*#__PURE__*/React.createElement(Pagination, {
987
- page: page,
988
- lastPage: lastPage,
989
- total: total,
990
- url: baseUrl,
991
- query: query,
992
- onClickPage: onClickPage,
993
- className: "mt-1 mb-1"
994
- }) : null, ListComponent !== null ? /*#__PURE__*/React.createElement(ListComponent, Object.assign({}, itemsProps, listProps, {
995
- resource: resource,
996
- baseUrl: baseUrl,
997
- query: query,
998
- onQueryChange: onQueryChange,
999
- onQueryReset: onQueryReset,
1000
- theme: theme,
1001
- showEmptyLabel: finalEmpty,
1002
- emptyLabel: /*#__PURE__*/React.createElement("p", {
1003
- className: "my-2"
1004
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1005
- id: "WgIC2T",
1006
- defaultMessage: [{
1007
- "type": 0,
1008
- "value": "No results found"
1009
- }]
1010
- }))
1011
- }, customListProps)) : null, paginated && showPagination ? /*#__PURE__*/React.createElement(Pagination, {
1012
- page: page,
1013
- lastPage: lastPage,
1014
- total: total,
1015
- url: baseUrl,
1016
- query: query,
1017
- onClickPage: onClickPage,
1018
- className: "mt-4 mb-1"
1019
- }) : null);
555
+ props = _objectWithoutProperties(_ref, _excluded$3);
556
+ var _ref2 = isObject(resource) ? resource : {
557
+ id: resource
558
+ },
559
+ _ref2$id = _ref2.id,
560
+ finalResource = _ref2$id === void 0 ? null : _ref2$id;
561
+ return /*#__PURE__*/React.createElement(ResourceList, Object.assign({
562
+ resource: finalResource
563
+ }, props));
1020
564
  };
1021
565
  ResourceItemsList.propTypes = propTypes$a;
1022
- ResourceItemsList.defaultProps = defaultProps$a;
1023
566
 
1024
567
  var _excluded$2 = ["id", "component"];
1025
568
  var propTypes$9 = {
1026
- resource: PropTypes.resource.isRequired,
1027
- defaultActions: PropTypes$1.arrayOf(PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.object])) // eslint-disable-line react/forbid-prop-types
569
+ resource: PropTypes$1.resource.isRequired,
570
+ defaultActions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])) // eslint-disable-line react/forbid-prop-types
1028
571
  };
1029
572
 
1030
573
  var defaultProps$9 = {
@@ -1157,7 +700,7 @@ ResourceIndexPage.propTypes = propTypes$9;
1157
700
  ResourceIndexPage.defaultProps = defaultProps$9;
1158
701
 
1159
702
  var propTypes$8 = {
1160
- resource: PropTypes.resource.isRequired
703
+ resource: PropTypes$1.resource.isRequired
1161
704
  };
1162
705
  var defaultProps$8 = {};
1163
706
  var ResourceShowPage = function ResourceShowPage(_ref) {
@@ -1181,7 +724,7 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
1181
724
  className: "row justify-content-center"
1182
725
  }, /*#__PURE__*/React.createElement("div", {
1183
726
  className: "col-12 col-md-8 col-lg-7"
1184
- }, /*#__PURE__*/React.createElement(ResourceForm, {
727
+ }, /*#__PURE__*/React.createElement(ResourceFormWrapper, {
1185
728
  resource: resource,
1186
729
  item: item,
1187
730
  type: type,
@@ -1244,8 +787,8 @@ AccountPage.defaultProps = defaultProps$6;
1244
787
 
1245
788
  /* eslint-disable react/jsx-props-no-spreading */
1246
789
  var propTypes$5 = {
1247
- className: PropTypes$1.string,
1248
- onSuccess: PropTypes$1.func
790
+ className: PropTypes.string,
791
+ onSuccess: PropTypes.func
1249
792
  };
1250
793
  var defaultProps$5 = {
1251
794
  className: null,
@@ -1284,8 +827,8 @@ LoginForm.defaultProps = defaultProps$5;
1284
827
  var styles = {};
1285
828
 
1286
829
  var propTypes$4 = {
1287
- children: PropTypes$1.node.isRequired,
1288
- fullscreen: PropTypes$1.bool
830
+ children: PropTypes.node.isRequired,
831
+ fullscreen: PropTypes.bool
1289
832
  };
1290
833
  var defaultProps$4 = {
1291
834
  fullscreen: false
@@ -1448,7 +991,7 @@ var messages = defineMessages({
1448
991
  }
1449
992
  });
1450
993
  var propTypes$2 = {
1451
- statusCode: PropTypes.statusCode
994
+ statusCode: PropTypes$1.statusCode
1452
995
  };
1453
996
  var defaultProps$2 = {
1454
997
  statusCode: null
@@ -1577,7 +1120,7 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1577
1120
  var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1578
1121
  _excluded2 = ["path", "route", "component", "exact"];
1579
1122
  var propTypes$1 = {
1580
- statusCode: PropTypes.statusCode
1123
+ statusCode: PropTypes$1.statusCode
1581
1124
  };
1582
1125
  var defaultProps$1 = {
1583
1126
  statusCode: null
@@ -1726,13 +1269,13 @@ PanneauRoutes.propTypes = propTypes$1;
1726
1269
  PanneauRoutes.defaultProps = defaultProps$1;
1727
1270
 
1728
1271
  var propTypes = {
1729
- definition: PropTypes.panneauDefinition.isRequired,
1730
- components: PropTypes$1.oneOfType([PropTypes$1.objectOf(PropTypes$1.elementType), PropTypes$1.objectOf(PropTypes$1.objectOf(PropTypes$1.elementType))]),
1731
- user: PropTypes.user,
1732
- memoryRouter: PropTypes$1.bool,
1733
- baseUrl: PropTypes$1.string,
1734
- uppy: PropTypes.uppy,
1735
- statusCode: PropTypes.statusCode
1272
+ definition: PropTypes$1.panneauDefinition.isRequired,
1273
+ components: PropTypes.oneOfType([PropTypes.objectOf(PropTypes.elementType), PropTypes.objectOf(PropTypes.objectOf(PropTypes.elementType))]),
1274
+ user: PropTypes$1.user,
1275
+ memoryRouter: PropTypes.bool,
1276
+ baseUrl: PropTypes.string,
1277
+ uppy: PropTypes$1.uppy,
1278
+ statusCode: PropTypes$1.statusCode
1736
1279
  };
1737
1280
  var defaultProps = {
1738
1281
  components: null,
@@ -1810,4 +1353,11 @@ var Container = function Container(_ref) {
1810
1353
  Container.propTypes = propTypes;
1811
1354
  Container.defaultProps = defaultProps;
1812
1355
 
1813
- export { GuestLayout, MainLayout, PageHeader, ResourceFilters, ResourceForm, ResourceItemsList, Container as default };
1356
+ /* eslint-disable react/jsx-props-no-spreading */
1357
+
1358
+ // Kept for backward compatibility with exports
1359
+ var ResourceFilters = function ResourceFilters(props) {
1360
+ return /*#__PURE__*/React.createElement(Filters, props);
1361
+ };
1362
+
1363
+ export { GuestLayout, MainLayout, PageHeader, ResourceFilters, ResourceFormWrapper as ResourceForm, ResourceItemsList, Container as default };