@panneau/form-resource 3.0.284 → 3.0.285

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 (2) hide show
  1. package/es/index.js +53 -40
  2. package/package.json +3 -3
package/es/index.js CHANGED
@@ -8,7 +8,7 @@ import { PropTypes } from '@panneau/core';
8
8
  import { useLocales, useFormsComponents, FormProvider } from '@panneau/core/contexts';
9
9
  import { useResourceUrlGenerator, useForm } from '@panneau/core/hooks';
10
10
  import { getComponentFromName } from '@panneau/core/utils';
11
- import { useResourceStore, useResourceUpdate, useResourceDestroy } from '@panneau/data';
11
+ import { useResourceStore, useResourceUpdate, useResourceDestroy, useResourceClone } from '@panneau/data';
12
12
  import classNames from 'classnames';
13
13
  import { FormattedMessage } from 'react-intl';
14
14
  import Button from '@panneau/element-button';
@@ -267,6 +267,9 @@ var ResourceForm = function ResourceForm(_ref) {
267
267
  props = _objectWithoutProperties(_ref, _excluded);
268
268
  var locales = useLocales();
269
269
  var FormComponents = useFormsComponents();
270
+ var _ref2 = item || {},
271
+ _ref2$id = _ref2.id,
272
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
270
273
  var _resource$fields = resource.fields,
271
274
  resourceFields = _resource$fields === void 0 ? [] : _resource$fields,
272
275
  _resource$types = resource.types,
@@ -275,37 +278,37 @@ var ResourceForm = function ResourceForm(_ref) {
275
278
  var resourceType = type !== null ? resourceTypes.find(function (it) {
276
279
  return it.id === type;
277
280
  }) || null : null;
278
- var _ref2 = resourceType || {},
279
- _ref2$fields = _ref2.fields,
280
- resourceTypeFields = _ref2$fields === void 0 ? null : _ref2$fields;
281
- var isCreate = item === null || !item.id;
281
+ var _ref3 = resourceType || {},
282
+ _ref3$fields = _ref3.fields,
283
+ resourceTypeFields = _ref3$fields === void 0 ? null : _ref3$fields;
284
+ var isCreate = item === null || !itemId;
282
285
 
283
286
  // Pick fields from resource root or form
284
- var _ref3 = forms || {},
285
- _ref3$default = _ref3["default"],
286
- defaultForm = _ref3$default === void 0 ? null : _ref3$default,
287
- _ref3$create = _ref3.create,
288
- createForm = _ref3$create === void 0 ? null : _ref3$create,
289
- _ref3$edit = _ref3.edit,
290
- editForm = _ref3$edit === void 0 ? null : _ref3$edit,
291
- _ref3$delete = _ref3["delete"],
292
- deleteForm = _ref3$delete === void 0 ? null : _ref3$delete;
293
- var _ref4 = defaultForm || {},
294
- _ref4$fields = _ref4.fields,
295
- defaultFields = _ref4$fields === void 0 ? null : _ref4$fields,
296
- defaultComponent = _ref4.component;
297
- var createOrEditSource = isCreate ? createForm || {} : editForm || {};
298
- var _ref5 = isDelete ? deleteForm || {} : createOrEditSource || {},
287
+ var _ref4 = forms || {},
288
+ _ref4$default = _ref4["default"],
289
+ defaultForm = _ref4$default === void 0 ? null : _ref4$default,
290
+ _ref4$create = _ref4.create,
291
+ createForm = _ref4$create === void 0 ? null : _ref4$create,
292
+ _ref4$edit = _ref4.edit,
293
+ editForm = _ref4$edit === void 0 ? null : _ref4$edit,
294
+ _ref4$delete = _ref4["delete"],
295
+ deleteForm = _ref4$delete === void 0 ? null : _ref4$delete;
296
+ var _ref5 = defaultForm || {},
299
297
  _ref5$fields = _ref5.fields,
300
- formFields = _ref5$fields === void 0 ? null : _ref5$fields,
301
- _ref5$component = _ref5.component,
302
- formComponent = _ref5$component === void 0 ? null : _ref5$component;
298
+ defaultFields = _ref5$fields === void 0 ? null : _ref5$fields,
299
+ defaultComponent = _ref5.component;
300
+ var createOrEditSource = isCreate ? createForm || {} : editForm || {};
301
+ var _ref6 = isDelete ? deleteForm || {} : createOrEditSource || {},
302
+ _ref6$fields = _ref6.fields,
303
+ formFields = _ref6$fields === void 0 ? null : _ref6$fields,
304
+ _ref6$component = _ref6.component,
305
+ formComponent = _ref6$component === void 0 ? null : _ref6$component;
303
306
  var finalFields = useMemo(function () {
304
- return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref6) {
305
- var _ref6$settings = _ref6.settings,
306
- _ref6$settings2 = _ref6$settings === void 0 ? {} : _ref6$settings,
307
- _ref6$settings2$hidde = _ref6$settings2.hiddenInForm,
308
- hiddenInForm = _ref6$settings2$hidde === void 0 ? false : _ref6$settings2$hidde;
307
+ return (formFields || defaultFields || resourceTypeFields || resourceFields).filter(function (_ref7) {
308
+ var _ref7$settings = _ref7.settings,
309
+ _ref7$settings2 = _ref7$settings === void 0 ? {} : _ref7$settings,
310
+ _ref7$settings2$hidde = _ref7$settings2.hiddenInForm,
311
+ hiddenInForm = _ref7$settings2$hidde === void 0 ? false : _ref7$settings2$hidde;
309
312
  return !hiddenInForm;
310
313
  });
311
314
  }, [formFields, defaultFields, resourceTypeFields, resourceFields]);
@@ -314,23 +317,33 @@ var ResourceForm = function ResourceForm(_ref) {
314
317
  var resourceRoute = useResourceUrlGenerator(resource);
315
318
  var _useResourceStore = useResourceStore(resource),
316
319
  store = _useResourceStore.store;
317
- var _useResourceUpdate = useResourceUpdate(resource, item != null ? item.id : null),
320
+ var _useResourceUpdate = useResourceUpdate(resource, item !== null ? itemId : null),
318
321
  update = _useResourceUpdate.update;
319
- var _useResourceDestroy = useResourceDestroy(resource, item != null ? item.id : null),
322
+ var _useResourceDestroy = useResourceDestroy(resource, item !== null ? itemId : null),
320
323
  destroy = _useResourceDestroy.destroy;
324
+ var _useResourceClone = useResourceClone(resource, item !== null ? itemId : null),
325
+ clone = _useResourceClone.clone;
321
326
 
322
327
  // Post actions
323
- var postAction = isCreate ? store : update;
324
328
  var postForm = useCallback(function (action, data) {
325
- return isDelete ? destroy() : postAction(data);
326
- }, [postAction, isDelete, destroy, store, update]);
329
+ if (isDelete) {
330
+ return destroy();
331
+ }
332
+ if (isDuplicate) {
333
+ return clone();
334
+ }
335
+ if (isCreate) {
336
+ return store(data);
337
+ }
338
+ return update(data);
339
+ }, [itemId, isCreate, isDelete, isDuplicate, destroy, clone, store, update]);
327
340
 
328
341
  // Form state
329
342
  var getInitialValue = useCallback(function () {
330
- return item !== null ? item : finalFields.reduce(function (defaultValues, _ref7) {
331
- var name = _ref7.name,
332
- _ref7$defaultValue = _ref7.defaultValue,
333
- defaultValue = _ref7$defaultValue === void 0 ? null : _ref7$defaultValue;
343
+ return item !== null ? item : finalFields.reduce(function (defaultValues, _ref8) {
344
+ var name = _ref8.name,
345
+ _ref8$defaultValue = _ref8.defaultValue,
346
+ defaultValue = _ref8$defaultValue === void 0 ? null : _ref8$defaultValue;
334
347
  return defaultValue !== null ? _objectSpread(_objectSpread({}, defaultValues), {}, _defineProperty({}, name, defaultValue)) : defaultValues;
335
348
  }, type !== null ? {
336
349
  type: type
@@ -346,13 +359,13 @@ var ResourceForm = function ResourceForm(_ref) {
346
359
 
347
360
  // Form action
348
361
  var action = isCreate ? resourceRoute('store') : resourceRoute('update', {
349
- id: item.id
362
+ id: itemId
350
363
  });
351
364
  action = isDelete ? resourceRoute('destroy', {
352
- id: item.id
365
+ id: itemId
353
366
  }) : action;
354
367
  action = isDuplicate ? resourceRoute('clone', {
355
- id: item.id
368
+ id: itemId
356
369
  }) : action;
357
370
  var _useForm = useForm({
358
371
  action: action,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/form-resource",
3
- "version": "3.0.284",
3
+ "version": "3.0.285",
4
4
  "description": "Default resource forms",
5
5
  "keywords": [
6
6
  "javascript"
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@babel/runtime": "^7.12.5",
52
52
  "@panneau/core": "^3.0.283",
53
- "@panneau/data": "^3.0.283",
53
+ "@panneau/data": "^3.0.285",
54
54
  "@panneau/element-button": "^3.0.283",
55
55
  "@panneau/element-form": "^3.0.283",
56
56
  "@panneau/field-fields": "^3.0.283",
@@ -64,5 +64,5 @@
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  },
67
- "gitHead": "7655729e5f9c05e780d5ea84156c92b8d868054c"
67
+ "gitHead": "81e9321c9caae2004bcaae0c35fcd61fe0fa0fb7"
68
68
  }