@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/lib/index.js CHANGED
@@ -26,10 +26,8 @@ var isObject = require('lodash/isObject');
26
26
  var queryString = require('query-string');
27
27
  var reactIntl = require('react-intl');
28
28
  var hooks = require('@panneau/core/hooks');
29
- var utils = require('@panneau/core/utils');
29
+ var ResourceForm = require('@panneau/form-resource');
30
30
  var classNames = require('classnames');
31
- var Button = require('@panneau/element-button');
32
- var Form = require('@panneau/element-form');
33
31
  var elementModal = require('@panneau/element-modal');
34
32
  var isArray = require('lodash/isArray');
35
33
  var Menu = require('@panneau/element-menu');
@@ -37,12 +35,11 @@ var Navbar = require('@panneau/element-navbar');
37
35
  var Label = require('@panneau/element-label');
38
36
  var isString = require('lodash/isString');
39
37
  var Alert = require('@panneau/element-alert');
38
+ var Button = require('@panneau/element-button');
40
39
  var Dropdown = require('@panneau/element-dropdown');
41
- var Pagination = require('@panneau/element-pagination');
42
- var _toPropertyKey = require('@babel/runtime/helpers/toPropertyKey');
43
- var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
44
- var reactFontawesome = require('@fortawesome/react-fontawesome');
45
- var FormGroup = require('@panneau/element-form-group');
40
+ var ResourceList = require('@panneau/list-resource-items');
41
+ var utils = require('@panneau/core/utils');
42
+ var Filters = require('@panneau/filter-filters');
46
43
 
47
44
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
48
45
 
@@ -61,298 +58,41 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_obje
61
58
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
62
59
  var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
63
60
  var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
61
+ var ResourceForm__default = /*#__PURE__*/_interopDefaultLegacy(ResourceForm);
64
62
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
65
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
66
- var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
67
63
  var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
68
64
  var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
69
65
  var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
70
66
  var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
71
67
  var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
72
68
  var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
69
+ var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
73
70
  var Dropdown__default = /*#__PURE__*/_interopDefaultLegacy(Dropdown);
74
- var Pagination__default = /*#__PURE__*/_interopDefaultLegacy(Pagination);
75
- var _toPropertyKey__default = /*#__PURE__*/_interopDefaultLegacy(_toPropertyKey);
76
- var FormGroup__default = /*#__PURE__*/_interopDefaultLegacy(FormGroup);
71
+ var ResourceList__default = /*#__PURE__*/_interopDefaultLegacy(ResourceList);
72
+ var Filters__default = /*#__PURE__*/_interopDefaultLegacy(Filters);
77
73
 
78
- var _excluded$6 = ["resource", "action", "previous", "status", "value", "onSubmit", "errors", "generalError", "className"];
79
- var propTypes$m = {
80
- resource: core.PropTypes.resource.isRequired,
81
- action: PropTypes__default["default"].string,
82
- previous: PropTypes__default["default"].string,
83
- fields: core.PropTypes.fields.isRequired,
84
- value: PropTypes__default["default"].object,
85
- // eslint-disable-line react/forbid-prop-types
86
- onChange: PropTypes__default["default"].func.isRequired,
87
- onSubmit: PropTypes__default["default"].func,
88
- status: core.PropTypes.formStatus,
89
- generalError: PropTypes__default["default"].string,
90
- errors: PropTypes__default["default"].objectOf(PropTypes__default["default"].arrayOf(PropTypes__default["default"].string)),
91
- className: PropTypes__default["default"].string
92
- };
93
- var defaultProps$m = {
94
- action: null,
95
- previous: null,
96
- status: null,
97
- value: null,
98
- onSubmit: null,
99
- generalError: null,
100
- errors: null,
101
- className: null
102
- };
103
- var DeleteForm = function DeleteForm(_ref) {
104
- var resource = _ref.resource,
105
- action = _ref.action,
106
- previous = _ref.previous;
107
- _ref.status;
108
- var value = _ref.value,
109
- onSubmit = _ref.onSubmit;
110
- _ref.errors;
111
- var generalError = _ref.generalError,
112
- className = _ref.className,
113
- props = _objectWithoutProperties__default["default"](_ref, _excluded$6);
114
- var _ref2 = value || {},
115
- _ref2$id = _ref2.id,
116
- id = _ref2$id === void 0 ? null : _ref2$id;
117
- var resourceValues = intl.useResourceValues(resource, {
118
- id: id
119
- });
120
- // const { text, background } = usePanneauColorScheme();
121
-
122
- return /*#__PURE__*/React__default["default"].createElement(Form__default["default"], Object.assign({
123
- className: classNames__default["default"](['form', _defineProperty__default["default"]({
124
- 'invalid-feedback': generalError !== null
125
- }, className, className !== null)]),
126
- action: action,
127
- onSubmit: onSubmit,
128
- withoutActions: true,
129
- withoutErrors: true
130
- }, props), /*#__PURE__*/React__default["default"].createElement("div", {
131
- className: classNames__default["default"](['card', _defineProperty__default["default"]({}, className, className !== null)])
132
- }, /*#__PURE__*/React__default["default"].createElement("div", {
133
- className: "card-body"
134
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
135
- values: resourceValues,
136
- id: "yzfiXJ",
137
- defaultMessage: [{
138
- "type": 0,
139
- "value": "Are you sure you want to delete "
140
- }, {
141
- "type": 1,
142
- "value": "the_singular"
143
- }, {
144
- "type": 0,
145
- "value": " #"
146
- }, {
147
- "type": 1,
148
- "value": "id"
149
- }, {
150
- "type": 0,
151
- "value": "?"
152
- }]
153
- }), generalError ? /*#__PURE__*/React__default["default"].createElement("p", {
154
- className: "text-danger"
155
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
156
- id: "y9zauY",
157
- defaultMessage: [{
158
- "type": 0,
159
- "value": "An error occured and we could not delete this item successfully."
160
- }]
161
- })) : null), /*#__PURE__*/React__default["default"].createElement("div", {
162
- className: "card-body d-flex"
163
- }, previous !== null ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
164
- href: previous,
165
- className: "me-2",
166
- theme: "secondary",
167
- outline: true
168
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
169
- id: "PyxZY2",
170
- defaultMessage: [{
171
- "type": 0,
172
- "value": "Cancel"
173
- }]
174
- })) : null, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
175
- type: "submit",
176
- className: "ms-auto",
177
- theme: "danger"
178
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
179
- id: "Bhu3B2",
180
- defaultMessage: [{
181
- "type": 0,
182
- "value": "Delete"
183
- }]
184
- })))));
185
- };
186
- DeleteForm.propTypes = propTypes$m;
187
- DeleteForm.defaultProps = defaultProps$m;
188
-
189
- var _excluded$5 = ["component", "resource", "onSuccess", "item", "type", "isDelete"];
190
- var propTypes$l = {
191
- component: PropTypes__default["default"].string,
192
- resource: core.PropTypes.resource.isRequired,
193
- item: PropTypes__default["default"].object,
194
- // eslint-disable-line react/forbid-prop-types
195
- type: PropTypes__default["default"].string,
196
- onSuccess: PropTypes__default["default"].func,
197
- isDelete: PropTypes__default["default"].bool
198
- };
199
- var defaultProps$l = {
200
- component: null,
201
- item: null,
202
- type: null,
203
- onSuccess: null,
204
- isDelete: false
205
- };
206
- var ResourceForm = function ResourceForm(_ref) {
207
- var component = _ref.component,
208
- resource = _ref.resource,
209
- onSuccess = _ref.onSuccess,
210
- item = _ref.item,
211
- type = _ref.type,
212
- isDelete = _ref.isDelete,
213
- props = _objectWithoutProperties__default["default"](_ref, _excluded$5);
214
- var locales = contexts.useLocales();
215
- var FormComponents = contexts.useFormsComponents();
216
- var _resource$fields = resource.fields,
217
- resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
218
- _resource$types = resource.types,
219
- resourceTypes = _resource$types === void 0 ? [] : _resource$types,
220
- forms = resource.forms;
221
- var resourceType = type !== null ? resourceTypes.find(function (it) {
222
- return it.id === type;
223
- }) || null : null;
224
- var _ref2 = resourceType || {},
225
- _ref2$fields = _ref2.fields,
226
- resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
227
- var isCreate = item === null || !item.id;
228
-
229
- // Pick fields from resource root or form
230
- var _ref3 = forms || {},
231
- _ref3$default = _ref3["default"],
232
- defaultForm = _ref3$default === void 0 ? null : _ref3$default,
233
- _ref3$create = _ref3.create,
234
- createForm = _ref3$create === void 0 ? null : _ref3$create,
235
- _ref3$edit = _ref3.edit,
236
- editForm = _ref3$edit === void 0 ? null : _ref3$edit,
237
- _ref3$delete = _ref3["delete"],
238
- deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
239
- var _ref4 = defaultForm || {},
240
- _ref4$fields = _ref4.fields,
241
- defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
242
- defaultComponent = _ref4.component;
243
- var createOrEditSource = isCreate ? createForm || {} : editForm || {};
244
- var _ref5 = isDelete ? deleteForm || {} : createOrEditSource || {},
245
- _ref5$fields = _ref5.fields,
246
- formFields = _ref5$fields === void 0 ? null : _ref5$fields,
247
- _ref5$component = _ref5.component,
248
- formComponent = _ref5$component === void 0 ? null : _ref5$component;
249
- var finalFields = React.useMemo(function () {
250
- return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref6) {
251
- var _ref6$settings = _ref6.settings,
252
- _ref6$settings2 = _ref6$settings === void 0 ? {} : _ref6$settings,
253
- _ref6$settings2$hidde = _ref6$settings2.hiddenInForm,
254
- hiddenInForm = _ref6$settings2$hidde === void 0 ? false : _ref6$settings2$hidde;
255
- return !hiddenInForm;
256
- });
257
- }, [formFields, defaultFields, resourceTypeFields, resourceFields]);
258
-
259
- // Form routes
260
- var resourceRoute = hooks.useResourceUrlGenerator(resource);
261
- var _useResourceStore = data.useResourceStore(resource),
262
- store = _useResourceStore.store;
263
- var _useResourceUpdate = data.useResourceUpdate(resource, item != null ? item.id : null),
264
- update = _useResourceUpdate.update;
265
- var _useResourceDestroy = data.useResourceDestroy(resource, item != null ? item.id : null),
266
- destroy = _useResourceDestroy.destroy;
267
-
268
- // Post actions
269
- var postAction = isCreate ? store : update;
270
- var postForm = React.useCallback(function (action, data) {
271
- return isDelete ? destroy() : postAction(data);
272
- }, [postAction, isDelete, destroy, store, update]);
273
-
274
- // Form state
275
- var getInitialValue = React.useCallback(function () {
276
- return item !== null ? item : finalFields.reduce(function (defaultValues, _ref7) {
277
- var name = _ref7.name,
278
- _ref7$defaultValue = _ref7.defaultValue,
279
- defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
280
- return defaultValue !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, defaultValues), {}, _defineProperty__default["default"]({}, name, defaultValue)) : defaultValues;
281
- }, type !== null ? {
282
- type: type
283
- } : null);
284
- }, [item, type, finalFields]);
285
- var _useState = React.useState(getInitialValue()),
286
- _useState2 = _slicedToArray__default["default"](_useState, 2),
287
- value = _useState2[0],
288
- setValueState = _useState2[1];
289
- var setValue = React.useCallback(function (newValue) {
290
- // console.log('new value in resource form', newValue); // eslint-disable-line
291
- setValueState(newValue);
292
- }, [setValueState]);
293
- var _useForm = hooks.useForm({
294
- fields: finalFields,
295
- value: value,
296
- postForm: postForm,
297
- setValue: setValue,
298
- onComplete: onSuccess,
299
- locales: locales
300
- }),
301
- fields = _useForm.fields,
302
- onSubmit = _useForm.onSubmit,
303
- status = _useForm.status,
304
- generalError = _useForm.generalError,
305
- errors = _useForm.errors;
306
-
307
- // Form action
308
- var modifyAction = isCreate ? resourceRoute('store') : resourceRoute('update', {
309
- id: item.id
310
- });
311
- var action = isDelete ? resourceRoute('destroy', {
312
- id: item.id
313
- }) : modifyAction;
314
- var defaultFormName = isDelete ? component || formComponent || null : component || formComponent || defaultComponent || 'normal';
315
-
316
- // Form component
317
- var FormComponent = utils.getComponentFromName(defaultFormName, FormComponents, isDelete ? DeleteForm : component);
74
+ /* eslint-disable react/jsx-props-no-spreading */
318
75
 
319
- // Lisen to item value change - this is important
320
- React.useEffect(function () {
321
- // console.log('get initial value from the top'); // eslint-disable-line
322
- setValue(getInitialValue());
323
- }, [getInitialValue, setValue]);
324
- return /*#__PURE__*/React__default["default"].createElement(contexts.FormProvider, {
325
- value: value,
326
- setValue: setValue
327
- }, /*#__PURE__*/React__default["default"].createElement(FormComponent, Object.assign({}, props, {
328
- status: status,
329
- resource: resource,
330
- item: item,
331
- fields: fields,
332
- generalError: generalError,
333
- errors: errors,
334
- action: action,
335
- onSubmit: onSubmit,
336
- isCreate: isCreate,
337
- value: value,
338
- onChange: setValue
339
- })));
76
+ // Kept for backward compatibility with exports
77
+ var ResourceFormWrapper = function ResourceFormWrapper(props) {
78
+ return /*#__PURE__*/React__default["default"].createElement(ResourceForm__default["default"], props);
340
79
  };
341
- ResourceForm.propTypes = propTypes$l;
342
- ResourceForm.defaultProps = defaultProps$l;
343
80
 
344
- var propTypes$k = {
81
+ var propTypes$j = {
82
+ withAccountForm: PropTypes__default["default"].bool,
345
83
  className: PropTypes__default["default"].string,
346
84
  itemClassName: PropTypes__default["default"].string,
347
85
  linkClassName: PropTypes__default["default"].string
348
86
  };
349
- var defaultProps$k = {
87
+ var defaultProps$i = {
88
+ withAccountForm: false,
350
89
  className: null,
351
90
  itemClassName: null,
352
91
  linkClassName: null
353
92
  };
354
93
  var AccountMenu = function AccountMenu(_ref) {
355
- var className = _ref.className,
94
+ var withAccountForm = _ref.withAccountForm,
95
+ className = _ref.className,
356
96
  itemClassName = _ref.itemClassName,
357
97
  linkClassName = _ref.linkClassName;
358
98
  var route = contexts.useUrlGenerator();
@@ -373,17 +113,16 @@ var AccountMenu = function AccountMenu(_ref) {
373
113
  }]
374
114
  }),
375
115
  href: route('account'),
376
- dropdown: [
377
- // {
378
- // label: (
379
- // <FormattedMessage
380
- // defaultMessage="Update account"
381
- // description="Menu label"
382
- // />
383
- // ),
384
- // href: route('account'),
385
- // },
386
- {
116
+ dropdown: [].concat(_toConsumableArray__default["default"](withAccountForm ? [{
117
+ label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
118
+ id: "V7Us0a",
119
+ defaultMessage: [{
120
+ "type": 0,
121
+ "value": "Update account"
122
+ }]
123
+ }),
124
+ href: route('account')
125
+ }] : []), [{
387
126
  label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
388
127
  id: "REIcPg",
389
128
  defaultMessage: [{
@@ -393,7 +132,7 @@ var AccountMenu = function AccountMenu(_ref) {
393
132
  }),
394
133
  href: route('auth.logout'),
395
134
  onClick: onClickLogout
396
- }]
135
+ }])
397
136
  }] : [{
398
137
  label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
399
138
  id: "d0g58T",
@@ -404,7 +143,7 @@ var AccountMenu = function AccountMenu(_ref) {
404
143
  }),
405
144
  href: route('auth.login')
406
145
  }];
407
- }, [user, route, onClickLogout]);
146
+ }, [user, route, onClickLogout, withAccountForm]);
408
147
  return items !== null ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
409
148
  className: className,
410
149
  itemClassName: itemClassName,
@@ -413,15 +152,15 @@ var AccountMenu = function AccountMenu(_ref) {
413
152
  dropdownAlign: "end"
414
153
  }) : null;
415
154
  };
416
- AccountMenu.propTypes = propTypes$k;
417
- AccountMenu.defaultProps = defaultProps$k;
155
+ AccountMenu.propTypes = propTypes$j;
156
+ AccountMenu.defaultProps = defaultProps$i;
418
157
 
419
- var propTypes$j = {
158
+ var propTypes$i = {
420
159
  className: PropTypes__default["default"].string,
421
160
  itemClassName: PropTypes__default["default"].string,
422
161
  linkClassName: PropTypes__default["default"].string
423
162
  };
424
- var defaultProps$j = {
163
+ var defaultProps$h = {
425
164
  className: null,
426
165
  itemClassName: null,
427
166
  linkClassName: null
@@ -458,11 +197,11 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
458
197
  linkClassName: linkClassName
459
198
  });
460
199
  };
461
- ResourcesMenu.propTypes = propTypes$j;
462
- ResourcesMenu.defaultProps = defaultProps$j;
200
+ ResourcesMenu.propTypes = propTypes$i;
201
+ ResourcesMenu.defaultProps = defaultProps$h;
463
202
 
464
- var propTypes$i = {};
465
- var defaultProps$i = {};
203
+ var propTypes$h = {};
204
+ var defaultProps$g = {};
466
205
  var MainNavbar = function MainNavbar(props) {
467
206
  var _usePanneau = contexts.usePanneau(),
468
207
  name = _usePanneau.name,
@@ -525,16 +264,16 @@ var MainNavbar = function MainNavbar(props) {
525
264
  className: "navbar-brand"
526
265
  }, name) : null, items);
527
266
  };
528
- MainNavbar.propTypes = propTypes$i;
529
- MainNavbar.defaultProps = defaultProps$i;
267
+ MainNavbar.propTypes = propTypes$h;
268
+ MainNavbar.defaultProps = defaultProps$g;
530
269
 
531
270
  var styles$1 = {};
532
271
 
533
- var propTypes$h = {
272
+ var propTypes$g = {
534
273
  children: PropTypes__default["default"].node.isRequired,
535
274
  fullscreen: PropTypes__default["default"].bool
536
275
  };
537
- var defaultProps$h = {
276
+ var defaultProps$f = {
538
277
  fullscreen: false
539
278
  };
540
279
  var MainLayout = function MainLayout(_ref) {
@@ -559,17 +298,17 @@ var MainLayout = function MainLayout(_ref) {
559
298
  }, _defineProperty__default["default"](_ref2, "bg-".concat(background), background !== null), _defineProperty__default["default"](_ref2, "text-".concat(text), text !== null), _ref2)])
560
299
  }, children), /*#__PURE__*/React__default["default"].createElement(elementModal.Modals, null));
561
300
  };
562
- MainLayout.propTypes = propTypes$h;
563
- MainLayout.defaultProps = defaultProps$h;
301
+ MainLayout.propTypes = propTypes$g;
302
+ MainLayout.defaultProps = defaultProps$f;
564
303
 
565
- var propTypes$g = {
304
+ var propTypes$f = {
566
305
  title: core.PropTypes.label,
567
306
  actions: PropTypes__default["default"].node,
568
307
  small: PropTypes__default["default"].bool,
569
308
  className: PropTypes__default["default"].string,
570
309
  children: PropTypes__default["default"].node
571
310
  };
572
- var defaultProps$g = {
311
+ var defaultProps$e = {
573
312
  title: null,
574
313
  actions: null,
575
314
  small: false,
@@ -606,13 +345,13 @@ var PageHeader = function PageHeader(_ref) {
606
345
  className: "col-12 col-md-8 col-lg-7"
607
346
  }, inner)) : inner), children);
608
347
  };
609
- PageHeader.propTypes = propTypes$g;
610
- PageHeader.defaultProps = defaultProps$g;
348
+ PageHeader.propTypes = propTypes$f;
349
+ PageHeader.defaultProps = defaultProps$e;
611
350
 
612
- var propTypes$f = {
351
+ var propTypes$e = {
613
352
  resource: core.PropTypes.resource.isRequired
614
353
  };
615
- var defaultProps$f = {};
354
+ var defaultProps$d = {};
616
355
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
617
356
  var resource = _ref.resource;
618
357
  var navigate = reactRouter.useNavigate();
@@ -649,20 +388,20 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
649
388
  className: "row justify-content-center"
650
389
  }, /*#__PURE__*/React__default["default"].createElement("div", {
651
390
  className: "col-12 col-md-8 col-lg-7"
652
- }, /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
391
+ }, /*#__PURE__*/React__default["default"].createElement(ResourceFormWrapper, {
653
392
  resource: resource,
654
393
  type: type,
655
394
  onSuccess: onSuccess
656
395
  }))))));
657
396
  };
658
- ResourceCreatePage.propTypes = propTypes$f;
659
- ResourceCreatePage.defaultProps = defaultProps$f;
397
+ ResourceCreatePage.propTypes = propTypes$e;
398
+ ResourceCreatePage.defaultProps = defaultProps$d;
660
399
 
661
400
  // import PropTypes from 'prop-types';
662
- var propTypes$e = {
401
+ var propTypes$d = {
663
402
  resource: core.PropTypes.resource.isRequired
664
403
  };
665
- var defaultProps$e = {};
404
+ var defaultProps$c = {};
666
405
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
667
406
  var resource = _ref.resource;
668
407
  var _useParams = reactRouter.useParams(),
@@ -696,20 +435,20 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
696
435
  className: "row justify-content-center"
697
436
  }, /*#__PURE__*/React__default["default"].createElement("div", {
698
437
  className: "col-12 col-md-8 col-lg-7"
699
- }, item !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
438
+ }, item !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceFormWrapper, {
700
439
  resource: resource,
701
440
  item: item,
702
441
  onSuccess: onSuccess,
703
442
  isDelete: true
704
443
  }) : null)))));
705
444
  };
706
- ResourceDeletePage.propTypes = propTypes$e;
707
- ResourceDeletePage.defaultProps = defaultProps$e;
445
+ ResourceDeletePage.propTypes = propTypes$d;
446
+ ResourceDeletePage.defaultProps = defaultProps$c;
708
447
 
709
- var propTypes$d = {
448
+ var propTypes$c = {
710
449
  resource: core.PropTypes.resource.isRequired
711
450
  };
712
- var defaultProps$d = {};
451
+ var defaultProps$b = {};
713
452
  var ResourceEditPage = function ResourceEditPage(_ref) {
714
453
  var resource = _ref.resource;
715
454
  var _useParams = reactRouter.useParams(),
@@ -751,21 +490,21 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
751
490
  className: "row justify-content-center"
752
491
  }, /*#__PURE__*/React__default["default"].createElement("div", {
753
492
  className: "col-12 col-md-8 col-lg-7"
754
- }, editItem !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
493
+ }, editItem !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceFormWrapper, {
755
494
  resource: resource,
756
495
  item: editItem,
757
496
  type: type,
758
497
  onSuccess: onSuccess
759
498
  }) : null)))));
760
499
  };
761
- ResourceEditPage.propTypes = propTypes$d;
762
- ResourceEditPage.defaultProps = defaultProps$d;
500
+ ResourceEditPage.propTypes = propTypes$c;
501
+ ResourceEditPage.defaultProps = defaultProps$b;
763
502
 
764
- var propTypes$c = {
503
+ var propTypes$b = {
765
504
  resource: core.PropTypes.resource.isRequired,
766
505
  className: PropTypes__default["default"].string
767
506
  };
768
- var defaultProps$c = {
507
+ var defaultProps$a = {
769
508
  className: null
770
509
  };
771
510
  var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
@@ -834,227 +573,30 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
834
573
  onClickOutside: onDropdownClickOutside
835
574
  })) : button;
836
575
  };
837
- ResourceCreateButtom.propTypes = propTypes$c;
838
- ResourceCreateButtom.defaultProps = defaultProps$c;
576
+ ResourceCreateButtom.propTypes = propTypes$b;
577
+ ResourceCreateButtom.defaultProps = defaultProps$a;
839
578
 
840
- var _excluded$4 = ["component", "name", "groupLabel"];
841
- var propTypes$b = {
842
- filters: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
843
- id: PropTypes__default["default"].string,
844
- component: PropTypes__default["default"].string.isRequired
845
- })),
846
- value: PropTypes__default["default"].object,
847
- // eslint-disable-line react/forbid-prop-types
848
- onChange: PropTypes__default["default"].func,
849
- onReset: PropTypes__default["default"].func,
850
- withContainer: PropTypes__default["default"].bool,
851
- withReset: PropTypes__default["default"].bool,
852
- defaultValue: PropTypes__default["default"].objectOf(PropTypes__default["default"].object),
853
- // eslint-disable-line react/forbid-prop-types
854
- className: PropTypes__default["default"].string
855
- };
856
- var defaultProps$b = {
857
- filters: [],
858
- value: null,
859
- onChange: null,
860
- onReset: null,
861
- withContainer: false,
862
- withReset: true,
863
- defaultValue: {
864
- page: null
865
- },
866
- className: null
867
- };
868
- var ResourceFilters = function ResourceFilters(_ref) {
869
- var filters = _ref.filters,
870
- value = _ref.value,
871
- onChange = _ref.onChange,
872
- onReset = _ref.onReset,
873
- withContainer = _ref.withContainer,
874
- withReset = _ref.withReset,
875
- defaultValue = _ref.defaultValue,
876
- className = _ref.className;
877
- var FilterComponents = contexts.useFiltersComponents();
878
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
879
- background = _usePanneauColorSchem.background;
880
- var currentFilters = filters || [];
881
- var onFiltersReset = React.useCallback(function () {
882
- if (onReset !== null) {
883
- onReset(null);
884
- }
885
- }, [onReset]);
886
- var hasActiveFilter = (currentFilters || []).reduce(function (isActive, item) {
887
- if (value !== null && value[item.name]) {
888
- return true;
889
- }
890
- return isActive;
891
- }, false);
892
- var onFilterChange = React.useCallback(function (name, newFilterValue) {
893
- if (name !== null && onChange !== null) {
894
- onChange(_objectSpread__default["default"](_objectSpread__default["default"]({}, value), {}, _defineProperty__default["default"]({}, name, newFilterValue), defaultValue));
895
- }
896
- }, [onChange, value, defaultValue]);
897
- var onFilterClear = React.useCallback(function (name) {
898
- if (name !== null && onChange !== null) {
899
- var _ref2 = value || {};
900
- _ref2[name];
901
- var newValue = _objectWithoutProperties__default["default"](_ref2, [name].map(_toPropertyKey__default["default"]));
902
- onChange(_objectSpread__default["default"](_objectSpread__default["default"]({}, newValue), defaultValue));
903
- }
904
- }, [onChange, value, defaultValue]);
905
- return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], {
906
- className: classNames__default["default"]([_defineProperty__default["default"]({
907
- 'navbar-expand-md': withContainer
908
- }, className, className !== null), 'justify-content-start', 'align-items-start', 'flex-column', 'flex-md-row']),
909
- theme: background,
910
- withoutCollapse: true
911
- }, currentFilters.map(function (_ref4, index) {
912
- var component = _ref4.component,
913
- name = _ref4.name,
914
- groupLabel = _ref4.groupLabel,
915
- filterProps = _objectWithoutProperties__default["default"](_ref4, _excluded$4);
916
- var FilterComponent = utils.getComponentFromName(component, FilterComponents, null);
917
- var filterValue = value !== null && value[name] ? value[name] : null;
918
- return FilterComponent !== null ? /*#__PURE__*/React__default["default"].createElement(FormGroup__default["default"], {
919
- key: "filter-".concat(name, "-").concat(index + 1),
920
- label: groupLabel,
921
- className: "mb-3 me-3"
922
- }, /*#__PURE__*/React__default["default"].createElement(FilterComponent, Object.assign({}, filterProps, {
923
- value: filterValue,
924
- onChange: function onChange(newValue) {
925
- return onFilterChange(name, newValue);
926
- },
927
- onClear: function onClear() {
928
- return onFilterClear(name);
929
- }
930
- }))) : null;
931
- }), withReset && hasActiveFilter && currentFilters.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
932
- theme: "primary",
933
- onClick: onFiltersReset
934
- }, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
935
- icon: freeSolidSvgIcons.faUndo
936
- })) : null);
937
- };
938
- ResourceFilters.propTypes = propTypes$b;
939
- ResourceFilters.defaultProps = defaultProps$b;
940
-
941
- var _excluded$3 = ["component", "showPagination", "filters", "actions"],
942
- _excluded2$1 = ["page"];
579
+ var _excluded$3 = ["resource"];
943
580
  var propTypes$a = {
944
- resource: core.PropTypes.resource.isRequired,
945
- query: PropTypes__default["default"].object,
946
- // eslint-disable-line react/forbid-prop-types
947
- paginated: PropTypes__default["default"].bool,
948
- baseUrl: PropTypes__default["default"].string,
949
- component: PropTypes__default["default"].oneOfType([PropTypes__default["default"].elementType, PropTypes__default["default"].string]),
950
- componentProps: PropTypes__default["default"].object,
951
- // eslint-disable-line react/forbid-prop-types
952
- onQueryChange: PropTypes__default["default"].func,
953
- onQueryReset: PropTypes__default["default"].func,
954
- onClickPage: PropTypes__default["default"].func,
955
- showFilters: PropTypes__default["default"].bool,
956
- listProps: PropTypes__default["default"].shape({})
957
- };
958
- var defaultProps$a = {
959
- query: null,
960
- paginated: true,
961
- component: null,
962
- baseUrl: null,
963
- componentProps: null,
964
- onQueryChange: null,
965
- onQueryReset: null,
966
- onClickPage: null,
967
- showFilters: true,
968
- listProps: null
581
+ resource: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].shape({
582
+ id: PropTypes__default["default"].string
583
+ })]).isRequired
969
584
  };
585
+
586
+ // Kept for backward compatibility with exports
970
587
  var ResourceItemsList = function ResourceItemsList(_ref) {
971
588
  var resource = _ref.resource,
972
- query = _ref.query,
973
- baseUrl = _ref.baseUrl,
974
- onQueryChange = _ref.onQueryChange,
975
- onQueryReset = _ref.onQueryReset,
976
- onClickPage = _ref.onClickPage,
977
- paginated = _ref.paginated,
978
- showFilters = _ref.showFilters,
979
- customListProps = _ref.listProps;
980
- var _resource$index = resource.index,
981
- _resource$index2 = _resource$index === void 0 ? {} : _resource$index,
982
- _resource$index2$comp = _resource$index2.component,
983
- listComponent = _resource$index2$comp === void 0 ? null : _resource$index2$comp,
984
- _resource$index2$show = _resource$index2.showPagination,
985
- showPagination = _resource$index2$show === void 0 ? true : _resource$index2$show,
986
- _resource$index2$filt = _resource$index2.filters,
987
- filters = _resource$index2$filt === void 0 ? null : _resource$index2$filt;
988
- _resource$index2.actions;
989
- var listProps = _objectWithoutProperties__default["default"](_resource$index2, _excluded$3);
990
- var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
991
- _usePanneauColorSchem2 = _usePanneauColorSchem.background,
992
- theme = _usePanneauColorSchem2 === void 0 ? null : _usePanneauColorSchem2;
993
- var ListComponents = contexts.useListsComponents();
994
- var _useMemo = React.useMemo(function () {
995
- var _ref2 = query || {},
996
- _ref2$page = _ref2.page,
997
- currentPage = _ref2$page === void 0 ? 1 : _ref2$page,
998
- rest = _objectWithoutProperties__default["default"](_ref2, _excluded2$1);
999
- return [currentPage, rest];
1000
- }, [query]),
1001
- _useMemo2 = _slicedToArray__default["default"](_useMemo, 2),
1002
- page = _useMemo2[0],
1003
- queryWithoutPage = _useMemo2[1];
1004
- var itemsProps = data.useResourceItems(resource, queryWithoutPage, paginated ? parseInt(page, 10) : null);
1005
- var _ref3 = itemsProps || {},
1006
- _ref3$loaded = _ref3.loaded,
1007
- loaded = _ref3$loaded === void 0 ? false : _ref3$loaded,
1008
- _ref3$loading = _ref3.loading,
1009
- loading = _ref3$loading === void 0 ? false : _ref3$loading,
1010
- _ref3$lastPage = _ref3.lastPage,
1011
- lastPage = _ref3$lastPage === void 0 ? 0 : _ref3$lastPage,
1012
- _ref3$total = _ref3.total,
1013
- total = _ref3$total === void 0 ? 0 : _ref3$total;
1014
- var finalEmpty = loaded && !loading && total === 0;
1015
- var ListComponent = utils.getComponentFromName(listComponent || 'table', ListComponents);
1016
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, showFilters && filters !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceFilters, {
1017
- filters: filters,
1018
- value: query,
1019
- onChange: onQueryChange,
1020
- onReset: onQueryReset
1021
- }) : null, paginated && showPagination ? /*#__PURE__*/React__default["default"].createElement(Pagination__default["default"], {
1022
- page: page,
1023
- lastPage: lastPage,
1024
- total: total,
1025
- url: baseUrl,
1026
- query: query,
1027
- onClickPage: onClickPage,
1028
- className: "mt-1 mb-1"
1029
- }) : null, ListComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ListComponent, Object.assign({}, itemsProps, listProps, {
1030
- resource: resource,
1031
- baseUrl: baseUrl,
1032
- query: query,
1033
- onQueryChange: onQueryChange,
1034
- onQueryReset: onQueryReset,
1035
- theme: theme,
1036
- showEmptyLabel: finalEmpty,
1037
- emptyLabel: /*#__PURE__*/React__default["default"].createElement("p", {
1038
- className: "my-2"
1039
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1040
- id: "WgIC2T",
1041
- defaultMessage: [{
1042
- "type": 0,
1043
- "value": "No results found"
1044
- }]
1045
- }))
1046
- }, customListProps)) : null, paginated && showPagination ? /*#__PURE__*/React__default["default"].createElement(Pagination__default["default"], {
1047
- page: page,
1048
- lastPage: lastPage,
1049
- total: total,
1050
- url: baseUrl,
1051
- query: query,
1052
- onClickPage: onClickPage,
1053
- className: "mt-4 mb-1"
1054
- }) : null);
589
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
590
+ var _ref2 = isObject__default["default"](resource) ? resource : {
591
+ id: resource
592
+ },
593
+ _ref2$id = _ref2.id,
594
+ finalResource = _ref2$id === void 0 ? null : _ref2$id;
595
+ return /*#__PURE__*/React__default["default"].createElement(ResourceList__default["default"], Object.assign({
596
+ resource: finalResource
597
+ }, props));
1055
598
  };
1056
599
  ResourceItemsList.propTypes = propTypes$a;
1057
- ResourceItemsList.defaultProps = defaultProps$a;
1058
600
 
1059
601
  var _excluded$2 = ["id", "component"];
1060
602
  var propTypes$9 = {
@@ -1216,7 +758,7 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
1216
758
  className: "row justify-content-center"
1217
759
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1218
760
  className: "col-12 col-md-8 col-lg-7"
1219
- }, /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
761
+ }, /*#__PURE__*/React__default["default"].createElement(ResourceFormWrapper, {
1220
762
  resource: resource,
1221
763
  item: item,
1222
764
  type: type,
@@ -1845,10 +1387,17 @@ var Container = function Container(_ref) {
1845
1387
  Container.propTypes = propTypes;
1846
1388
  Container.defaultProps = defaultProps;
1847
1389
 
1390
+ /* eslint-disable react/jsx-props-no-spreading */
1391
+
1392
+ // Kept for backward compatibility with exports
1393
+ var ResourceFilters = function ResourceFilters(props) {
1394
+ return /*#__PURE__*/React__default["default"].createElement(Filters__default["default"], props);
1395
+ };
1396
+
1848
1397
  exports.GuestLayout = GuestLayout;
1849
1398
  exports.MainLayout = MainLayout;
1850
1399
  exports.PageHeader = PageHeader;
1851
1400
  exports.ResourceFilters = ResourceFilters;
1852
- exports.ResourceForm = ResourceForm;
1401
+ exports.ResourceForm = ResourceFormWrapper;
1853
1402
  exports.ResourceItemsList = ResourceItemsList;
1854
1403
  exports["default"] = Container;