@panneau/app 2.0.68 → 2.0.70

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 +113 -565
  2. package/lib/index.js +76 -529
  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,286 +31,26 @@ 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
- withAccountForm: PropTypes$1.bool,
311
- className: PropTypes$1.string,
312
- itemClassName: PropTypes$1.string,
313
- linkClassName: PropTypes$1.string
47
+ var propTypes$j = {
48
+ withAccountForm: PropTypes.bool,
49
+ className: PropTypes.string,
50
+ itemClassName: PropTypes.string,
51
+ linkClassName: PropTypes.string
314
52
  };
315
- var defaultProps$k = {
53
+ var defaultProps$i = {
316
54
  withAccountForm: false,
317
55
  className: null,
318
56
  itemClassName: null,
@@ -380,15 +118,15 @@ var AccountMenu = function AccountMenu(_ref) {
380
118
  dropdownAlign: "end"
381
119
  }) : null;
382
120
  };
383
- AccountMenu.propTypes = propTypes$k;
384
- AccountMenu.defaultProps = defaultProps$k;
121
+ AccountMenu.propTypes = propTypes$j;
122
+ AccountMenu.defaultProps = defaultProps$i;
385
123
 
386
- var propTypes$j = {
387
- className: PropTypes$1.string,
388
- itemClassName: PropTypes$1.string,
389
- linkClassName: PropTypes$1.string
124
+ var propTypes$i = {
125
+ className: PropTypes.string,
126
+ itemClassName: PropTypes.string,
127
+ linkClassName: PropTypes.string
390
128
  };
391
- var defaultProps$j = {
129
+ var defaultProps$h = {
392
130
  className: null,
393
131
  itemClassName: null,
394
132
  linkClassName: null
@@ -425,11 +163,11 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
425
163
  linkClassName: linkClassName
426
164
  });
427
165
  };
428
- ResourcesMenu.propTypes = propTypes$j;
429
- ResourcesMenu.defaultProps = defaultProps$j;
166
+ ResourcesMenu.propTypes = propTypes$i;
167
+ ResourcesMenu.defaultProps = defaultProps$h;
430
168
 
431
- var propTypes$i = {};
432
- var defaultProps$i = {};
169
+ var propTypes$h = {};
170
+ var defaultProps$g = {};
433
171
  var MainNavbar = function MainNavbar(props) {
434
172
  var _usePanneau = usePanneau(),
435
173
  name = _usePanneau.name,
@@ -492,16 +230,16 @@ var MainNavbar = function MainNavbar(props) {
492
230
  className: "navbar-brand"
493
231
  }, name) : null, items);
494
232
  };
495
- MainNavbar.propTypes = propTypes$i;
496
- MainNavbar.defaultProps = defaultProps$i;
233
+ MainNavbar.propTypes = propTypes$h;
234
+ MainNavbar.defaultProps = defaultProps$g;
497
235
 
498
236
  var styles$1 = {};
499
237
 
500
- var propTypes$h = {
501
- children: PropTypes$1.node.isRequired,
502
- fullscreen: PropTypes$1.bool
238
+ var propTypes$g = {
239
+ children: PropTypes.node.isRequired,
240
+ fullscreen: PropTypes.bool
503
241
  };
504
- var defaultProps$h = {
242
+ var defaultProps$f = {
505
243
  fullscreen: false
506
244
  };
507
245
  var MainLayout = function MainLayout(_ref) {
@@ -526,17 +264,17 @@ var MainLayout = function MainLayout(_ref) {
526
264
  }, _defineProperty(_ref2, "bg-".concat(background), background !== null), _defineProperty(_ref2, "text-".concat(text), text !== null), _ref2)])
527
265
  }, children), /*#__PURE__*/React.createElement(Modals, null));
528
266
  };
529
- MainLayout.propTypes = propTypes$h;
530
- MainLayout.defaultProps = defaultProps$h;
267
+ MainLayout.propTypes = propTypes$g;
268
+ MainLayout.defaultProps = defaultProps$f;
531
269
 
532
- var propTypes$g = {
533
- title: PropTypes.label,
534
- actions: PropTypes$1.node,
535
- small: PropTypes$1.bool,
536
- className: PropTypes$1.string,
537
- 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
538
276
  };
539
- var defaultProps$g = {
277
+ var defaultProps$e = {
540
278
  title: null,
541
279
  actions: null,
542
280
  small: false,
@@ -573,13 +311,13 @@ var PageHeader = function PageHeader(_ref) {
573
311
  className: "col-12 col-md-8 col-lg-7"
574
312
  }, inner)) : inner), children);
575
313
  };
576
- PageHeader.propTypes = propTypes$g;
577
- PageHeader.defaultProps = defaultProps$g;
314
+ PageHeader.propTypes = propTypes$f;
315
+ PageHeader.defaultProps = defaultProps$e;
578
316
 
579
- var propTypes$f = {
580
- resource: PropTypes.resource.isRequired
317
+ var propTypes$e = {
318
+ resource: PropTypes$1.resource.isRequired
581
319
  };
582
- var defaultProps$f = {};
320
+ var defaultProps$d = {};
583
321
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
584
322
  var resource = _ref.resource;
585
323
  var navigate = useNavigate();
@@ -616,20 +354,20 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
616
354
  className: "row justify-content-center"
617
355
  }, /*#__PURE__*/React.createElement("div", {
618
356
  className: "col-12 col-md-8 col-lg-7"
619
- }, /*#__PURE__*/React.createElement(ResourceForm, {
357
+ }, /*#__PURE__*/React.createElement(ResourceFormWrapper, {
620
358
  resource: resource,
621
359
  type: type,
622
360
  onSuccess: onSuccess
623
361
  }))))));
624
362
  };
625
- ResourceCreatePage.propTypes = propTypes$f;
626
- ResourceCreatePage.defaultProps = defaultProps$f;
363
+ ResourceCreatePage.propTypes = propTypes$e;
364
+ ResourceCreatePage.defaultProps = defaultProps$d;
627
365
 
628
366
  // import PropTypes from 'prop-types';
629
- var propTypes$e = {
630
- resource: PropTypes.resource.isRequired
367
+ var propTypes$d = {
368
+ resource: PropTypes$1.resource.isRequired
631
369
  };
632
- var defaultProps$e = {};
370
+ var defaultProps$c = {};
633
371
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
634
372
  var resource = _ref.resource;
635
373
  var _useParams = useParams(),
@@ -663,20 +401,20 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
663
401
  className: "row justify-content-center"
664
402
  }, /*#__PURE__*/React.createElement("div", {
665
403
  className: "col-12 col-md-8 col-lg-7"
666
- }, item !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
404
+ }, item !== null ? /*#__PURE__*/React.createElement(ResourceFormWrapper, {
667
405
  resource: resource,
668
406
  item: item,
669
407
  onSuccess: onSuccess,
670
408
  isDelete: true
671
409
  }) : null)))));
672
410
  };
673
- ResourceDeletePage.propTypes = propTypes$e;
674
- ResourceDeletePage.defaultProps = defaultProps$e;
411
+ ResourceDeletePage.propTypes = propTypes$d;
412
+ ResourceDeletePage.defaultProps = defaultProps$c;
675
413
 
676
- var propTypes$d = {
677
- resource: PropTypes.resource.isRequired
414
+ var propTypes$c = {
415
+ resource: PropTypes$1.resource.isRequired
678
416
  };
679
- var defaultProps$d = {};
417
+ var defaultProps$b = {};
680
418
  var ResourceEditPage = function ResourceEditPage(_ref) {
681
419
  var resource = _ref.resource;
682
420
  var _useParams = useParams(),
@@ -718,21 +456,21 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
718
456
  className: "row justify-content-center"
719
457
  }, /*#__PURE__*/React.createElement("div", {
720
458
  className: "col-12 col-md-8 col-lg-7"
721
- }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
459
+ }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceFormWrapper, {
722
460
  resource: resource,
723
461
  item: editItem,
724
462
  type: type,
725
463
  onSuccess: onSuccess
726
464
  }) : null)))));
727
465
  };
728
- ResourceEditPage.propTypes = propTypes$d;
729
- ResourceEditPage.defaultProps = defaultProps$d;
466
+ ResourceEditPage.propTypes = propTypes$c;
467
+ ResourceEditPage.defaultProps = defaultProps$b;
730
468
 
731
- var propTypes$c = {
732
- resource: PropTypes.resource.isRequired,
733
- className: PropTypes$1.string
469
+ var propTypes$b = {
470
+ resource: PropTypes$1.resource.isRequired,
471
+ className: PropTypes.string
734
472
  };
735
- var defaultProps$c = {
473
+ var defaultProps$a = {
736
474
  className: null
737
475
  };
738
476
  var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
@@ -801,232 +539,35 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
801
539
  onClickOutside: onDropdownClickOutside
802
540
  })) : button;
803
541
  };
804
- ResourceCreateButtom.propTypes = propTypes$c;
805
- ResourceCreateButtom.defaultProps = defaultProps$c;
542
+ ResourceCreateButtom.propTypes = propTypes$b;
543
+ ResourceCreateButtom.defaultProps = defaultProps$a;
806
544
 
807
- var _excluded$4 = ["component", "name", "groupLabel"];
808
- var propTypes$b = {
809
- filters: PropTypes$1.arrayOf(PropTypes$1.shape({
810
- id: PropTypes$1.string,
811
- component: PropTypes$1.string.isRequired
812
- })),
813
- value: PropTypes$1.object,
814
- // eslint-disable-line react/forbid-prop-types
815
- onChange: PropTypes$1.func,
816
- onReset: PropTypes$1.func,
817
- withContainer: PropTypes$1.bool,
818
- withReset: PropTypes$1.bool,
819
- defaultValue: PropTypes$1.objectOf(PropTypes$1.object),
820
- // eslint-disable-line react/forbid-prop-types
821
- className: PropTypes$1.string
822
- };
823
- var defaultProps$b = {
824
- filters: [],
825
- value: null,
826
- onChange: null,
827
- onReset: null,
828
- withContainer: false,
829
- withReset: true,
830
- defaultValue: {
831
- page: null
832
- },
833
- className: null
834
- };
835
- var ResourceFilters = function ResourceFilters(_ref) {
836
- var filters = _ref.filters,
837
- value = _ref.value,
838
- onChange = _ref.onChange,
839
- onReset = _ref.onReset,
840
- withContainer = _ref.withContainer,
841
- withReset = _ref.withReset,
842
- defaultValue = _ref.defaultValue,
843
- className = _ref.className;
844
- var FilterComponents = useFiltersComponents();
845
- var _usePanneauColorSchem = usePanneauColorScheme(),
846
- background = _usePanneauColorSchem.background;
847
- var currentFilters = filters || [];
848
- var onFiltersReset = useCallback(function () {
849
- if (onReset !== null) {
850
- onReset(null);
851
- }
852
- }, [onReset]);
853
- var hasActiveFilter = (currentFilters || []).reduce(function (isActive, item) {
854
- if (value !== null && value[item.name]) {
855
- return true;
856
- }
857
- return isActive;
858
- }, false);
859
- var onFilterChange = useCallback(function (name, newFilterValue) {
860
- if (name !== null && onChange !== null) {
861
- onChange(_objectSpread(_objectSpread({}, value), {}, _defineProperty({}, name, newFilterValue), defaultValue));
862
- }
863
- }, [onChange, value, defaultValue]);
864
- var onFilterClear = useCallback(function (name) {
865
- if (name !== null && onChange !== null) {
866
- var _ref2 = value || {};
867
- _ref2[name];
868
- var newValue = _objectWithoutProperties(_ref2, [name].map(_toPropertyKey));
869
- onChange(_objectSpread(_objectSpread({}, newValue), defaultValue));
870
- }
871
- }, [onChange, value, defaultValue]);
872
- return /*#__PURE__*/React.createElement(Navbar, {
873
- className: classNames([_defineProperty({
874
- 'navbar-expand-md': withContainer
875
- }, className, className !== null), 'justify-content-start', 'align-items-start', 'flex-column', 'flex-md-row']),
876
- theme: background,
877
- withoutCollapse: true
878
- }, currentFilters.map(function (_ref4, index) {
879
- var component = _ref4.component,
880
- name = _ref4.name,
881
- groupLabel = _ref4.groupLabel,
882
- filterProps = _objectWithoutProperties(_ref4, _excluded$4);
883
- var FilterComponent = getComponentFromName(component, FilterComponents, null);
884
- var filterValue = value !== null && value[name] ? value[name] : null;
885
- return FilterComponent !== null ? /*#__PURE__*/React.createElement(FormGroup, {
886
- key: "filter-".concat(name, "-").concat(index + 1),
887
- label: groupLabel,
888
- className: "mb-3 me-3"
889
- }, /*#__PURE__*/React.createElement(FilterComponent, Object.assign({}, filterProps, {
890
- value: filterValue,
891
- onChange: function onChange(newValue) {
892
- return onFilterChange(name, newValue);
893
- },
894
- onClear: function onClear() {
895
- return onFilterClear(name);
896
- }
897
- }))) : null;
898
- }), withReset && hasActiveFilter && currentFilters.length > 0 ? /*#__PURE__*/React.createElement(Button, {
899
- theme: "primary",
900
- onClick: onFiltersReset
901
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
902
- icon: faUndo
903
- })) : null);
904
- };
905
- ResourceFilters.propTypes = propTypes$b;
906
- ResourceFilters.defaultProps = defaultProps$b;
907
-
908
- var _excluded$3 = ["component", "showPagination", "filters", "actions"],
909
- _excluded2$1 = ["page"];
545
+ var _excluded$3 = ["resource"];
910
546
  var propTypes$a = {
911
- resource: PropTypes.resource.isRequired,
912
- query: PropTypes$1.object,
913
- // eslint-disable-line react/forbid-prop-types
914
- paginated: PropTypes$1.bool,
915
- baseUrl: PropTypes$1.string,
916
- component: PropTypes$1.oneOfType([PropTypes$1.elementType, PropTypes$1.string]),
917
- componentProps: PropTypes$1.object,
918
- // eslint-disable-line react/forbid-prop-types
919
- onQueryChange: PropTypes$1.func,
920
- onQueryReset: PropTypes$1.func,
921
- onClickPage: PropTypes$1.func,
922
- showFilters: PropTypes$1.bool,
923
- listProps: PropTypes$1.shape({})
924
- };
925
- var defaultProps$a = {
926
- query: null,
927
- paginated: true,
928
- component: null,
929
- baseUrl: null,
930
- componentProps: null,
931
- onQueryChange: null,
932
- onQueryReset: null,
933
- onClickPage: null,
934
- showFilters: true,
935
- listProps: null
547
+ resource: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
548
+ id: PropTypes.string
549
+ })]).isRequired
936
550
  };
551
+
552
+ // Kept for backward compatibility with exports
937
553
  var ResourceItemsList = function ResourceItemsList(_ref) {
938
554
  var resource = _ref.resource,
939
- query = _ref.query,
940
- baseUrl = _ref.baseUrl,
941
- onQueryChange = _ref.onQueryChange,
942
- onQueryReset = _ref.onQueryReset,
943
- onClickPage = _ref.onClickPage,
944
- paginated = _ref.paginated,
945
- showFilters = _ref.showFilters,
946
- customListProps = _ref.listProps;
947
- var _resource$index = resource.index,
948
- _resource$index2 = _resource$index === void 0 ? {} : _resource$index,
949
- _resource$index2$comp = _resource$index2.component,
950
- listComponent = _resource$index2$comp === void 0 ? null : _resource$index2$comp,
951
- _resource$index2$show = _resource$index2.showPagination,
952
- showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
953
- _resource$index2$filt = _resource$index2.filters,
954
- filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt;
955
- _resource$index2.actions;
956
- var listProps = _objectWithoutProperties(_resource$index2, _excluded$3);
957
- var _usePanneauColorSchem = usePanneauColorScheme(),
958
- _usePanneauColorSchem2 = _usePanneauColorSchem.background,
959
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
960
- var ListComponents = useListsComponents();
961
- var _useMemo = useMemo(function () {
962
- var _ref2 = query || {},
963
- _ref2$page = _ref2.page,
964
- currentPage = _ref2$page === void 0 ? 1 : _ref2$page,
965
- rest = _objectWithoutProperties(_ref2, _excluded2$1);
966
- return [currentPage, rest];
967
- }, [query]),
968
- _useMemo2 = _slicedToArray(_useMemo, 2),
969
- page = _useMemo2[0],
970
- queryWithoutPage = _useMemo2[1];
971
- var itemsProps = useResourceItems(resource, queryWithoutPage, paginated ? parseInt(page, 10) : null);
972
- var _ref3 = itemsProps || {},
973
- _ref3$loaded = _ref3.loaded,
974
- loaded = _ref3$loaded === void 0 ? false : _ref3$loaded,
975
- _ref3$loading = _ref3.loading,
976
- loading = _ref3$loading === void 0 ? false : _ref3$loading,
977
- _ref3$lastPage = _ref3.lastPage,
978
- lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
979
- _ref3$total = _ref3.total,
980
- total = _ref3$total === void 0 ? 0 : _ref3$total;
981
- var finalEmpty = loaded && !loading && total === 0;
982
- var ListComponent = getComponentFromName(listComponent || 'table', ListComponents);
983
- return /*#__PURE__*/React.createElement(React.Fragment, null, showFilters && filters !== null ? /*#__PURE__*/React.createElement(ResourceFilters, {
984
- filters: filters,
985
- value: query,
986
- onChange: onQueryChange,
987
- onReset: onQueryReset
988
- }) : null, paginated && showPagination ? /*#__PURE__*/React.createElement(Pagination, {
989
- page: page,
990
- lastPage: lastPage,
991
- total: total,
992
- url: baseUrl,
993
- query: query,
994
- onClickPage: onClickPage,
995
- className: "mt-1 mb-1"
996
- }) : null, ListComponent !== null ? /*#__PURE__*/React.createElement(ListComponent, Object.assign({}, itemsProps, listProps, {
997
- resource: resource,
998
- baseUrl: baseUrl,
999
- query: query,
1000
- onQueryChange: onQueryChange,
1001
- onQueryReset: onQueryReset,
1002
- theme: theme,
1003
- showEmptyLabel: finalEmpty,
1004
- emptyLabel: /*#__PURE__*/React.createElement("p", {
1005
- className: "my-2"
1006
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1007
- id: "WgIC2T",
1008
- defaultMessage: [{
1009
- "type": 0,
1010
- "value": "No results found"
1011
- }]
1012
- }))
1013
- }, customListProps)) : null, paginated && showPagination ? /*#__PURE__*/React.createElement(Pagination, {
1014
- page: page,
1015
- lastPage: lastPage,
1016
- total: total,
1017
- url: baseUrl,
1018
- query: query,
1019
- onClickPage: onClickPage,
1020
- className: "mt-4 mb-1"
1021
- }) : 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));
1022
564
  };
1023
565
  ResourceItemsList.propTypes = propTypes$a;
1024
- ResourceItemsList.defaultProps = defaultProps$a;
1025
566
 
1026
567
  var _excluded$2 = ["id", "component"];
1027
568
  var propTypes$9 = {
1028
- resource: PropTypes.resource.isRequired,
1029
- 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
1030
571
  };
1031
572
 
1032
573
  var defaultProps$9 = {
@@ -1159,7 +700,7 @@ ResourceIndexPage.propTypes = propTypes$9;
1159
700
  ResourceIndexPage.defaultProps = defaultProps$9;
1160
701
 
1161
702
  var propTypes$8 = {
1162
- resource: PropTypes.resource.isRequired
703
+ resource: PropTypes$1.resource.isRequired
1163
704
  };
1164
705
  var defaultProps$8 = {};
1165
706
  var ResourceShowPage = function ResourceShowPage(_ref) {
@@ -1183,7 +724,7 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
1183
724
  className: "row justify-content-center"
1184
725
  }, /*#__PURE__*/React.createElement("div", {
1185
726
  className: "col-12 col-md-8 col-lg-7"
1186
- }, /*#__PURE__*/React.createElement(ResourceForm, {
727
+ }, /*#__PURE__*/React.createElement(ResourceFormWrapper, {
1187
728
  resource: resource,
1188
729
  item: item,
1189
730
  type: type,
@@ -1246,8 +787,8 @@ AccountPage.defaultProps = defaultProps$6;
1246
787
 
1247
788
  /* eslint-disable react/jsx-props-no-spreading */
1248
789
  var propTypes$5 = {
1249
- className: PropTypes$1.string,
1250
- onSuccess: PropTypes$1.func
790
+ className: PropTypes.string,
791
+ onSuccess: PropTypes.func
1251
792
  };
1252
793
  var defaultProps$5 = {
1253
794
  className: null,
@@ -1286,8 +827,8 @@ LoginForm.defaultProps = defaultProps$5;
1286
827
  var styles = {};
1287
828
 
1288
829
  var propTypes$4 = {
1289
- children: PropTypes$1.node.isRequired,
1290
- fullscreen: PropTypes$1.bool
830
+ children: PropTypes.node.isRequired,
831
+ fullscreen: PropTypes.bool
1291
832
  };
1292
833
  var defaultProps$4 = {
1293
834
  fullscreen: false
@@ -1450,7 +991,7 @@ var messages = defineMessages({
1450
991
  }
1451
992
  });
1452
993
  var propTypes$2 = {
1453
- statusCode: PropTypes.statusCode
994
+ statusCode: PropTypes$1.statusCode
1454
995
  };
1455
996
  var defaultProps$2 = {
1456
997
  statusCode: null
@@ -1579,7 +1120,7 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1579
1120
  var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1580
1121
  _excluded2 = ["path", "route", "component", "exact"];
1581
1122
  var propTypes$1 = {
1582
- statusCode: PropTypes.statusCode
1123
+ statusCode: PropTypes$1.statusCode
1583
1124
  };
1584
1125
  var defaultProps$1 = {
1585
1126
  statusCode: null
@@ -1728,13 +1269,13 @@ PanneauRoutes.propTypes = propTypes$1;
1728
1269
  PanneauRoutes.defaultProps = defaultProps$1;
1729
1270
 
1730
1271
  var propTypes = {
1731
- definition: PropTypes.panneauDefinition.isRequired,
1732
- components: PropTypes$1.oneOfType([PropTypes$1.objectOf(PropTypes$1.elementType), PropTypes$1.objectOf(PropTypes$1.objectOf(PropTypes$1.elementType))]),
1733
- user: PropTypes.user,
1734
- memoryRouter: PropTypes$1.bool,
1735
- baseUrl: PropTypes$1.string,
1736
- uppy: PropTypes.uppy,
1737
- 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
1738
1279
  };
1739
1280
  var defaultProps = {
1740
1281
  components: null,
@@ -1812,4 +1353,11 @@ var Container = function Container(_ref) {
1812
1353
  Container.propTypes = propTypes;
1813
1354
  Container.defaultProps = defaultProps;
1814
1355
 
1815
- 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 };