@panneau/app 1.0.1-alpha.0 → 1.0.3-alpha.2

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 (75) hide show
  1. package/assets/css/styles.css +7 -0
  2. package/es/index.js +1810 -5
  3. package/lib/index.js +1841 -15
  4. package/package.json +66 -54
  5. package/scss/styles.scss +3 -0
  6. package/es/Panneau.js +0 -318
  7. package/es/actions/AuthActions.js +0 -16
  8. package/es/actions/LayoutActions.js +0 -14
  9. package/es/components/App.js +0 -129
  10. package/es/components/Layout.js +0 -68
  11. package/es/components/Panneau.js +0 -79
  12. package/es/components/index.js +0 -3
  13. package/es/components/pages/Account.js +0 -38
  14. package/es/components/pages/Home.js +0 -12
  15. package/es/components/pages/ResourceCreate.js +0 -44
  16. package/es/components/pages/ResourceDelete.js +0 -11
  17. package/es/components/pages/ResourceEdit.js +0 -28
  18. package/es/components/pages/ResourceForm.js +0 -343
  19. package/es/components/pages/ResourceIndex.js +0 -261
  20. package/es/components/pages/ResourceShow.js +0 -15
  21. package/es/components/partials/ResourceFormHeader.js +0 -111
  22. package/es/components/partials/ResourceIndexHeader.js +0 -71
  23. package/es/defaults/routes.json +0 -10
  24. package/es/lib/createStore.js +0 -30
  25. package/es/reducers/AuthReducer.js +0 -32
  26. package/es/reducers/index.js +0 -4
  27. package/lib/Panneau.js +0 -340
  28. package/lib/actions/AuthActions.js +0 -25
  29. package/lib/actions/LayoutActions.js +0 -25
  30. package/lib/components/App.js +0 -159
  31. package/lib/components/Layout.js +0 -87
  32. package/lib/components/Panneau.js +0 -103
  33. package/lib/components/index.js +0 -23
  34. package/lib/components/pages/Account.js +0 -54
  35. package/lib/components/pages/Home.js +0 -23
  36. package/lib/components/pages/ResourceCreate.js +0 -65
  37. package/lib/components/pages/ResourceDelete.js +0 -22
  38. package/lib/components/pages/ResourceEdit.js +0 -44
  39. package/lib/components/pages/ResourceForm.js +0 -376
  40. package/lib/components/pages/ResourceIndex.js +0 -289
  41. package/lib/components/pages/ResourceShow.js +0 -28
  42. package/lib/components/partials/ResourceFormHeader.js +0 -137
  43. package/lib/components/partials/ResourceIndexHeader.js +0 -87
  44. package/lib/defaults/routes.json +0 -10
  45. package/lib/lib/createStore.js +0 -46
  46. package/lib/reducers/AuthReducer.js +0 -43
  47. package/lib/reducers/index.js +0 -15
  48. package/src/Panneau.js +0 -274
  49. package/src/actions/AuthActions.js +0 -17
  50. package/src/actions/LayoutActions.js +0 -12
  51. package/src/components/App.jsx +0 -121
  52. package/src/components/Layout.jsx +0 -51
  53. package/src/components/Panneau.jsx +0 -95
  54. package/src/components/index.js +0 -7
  55. package/src/components/pages/Account.jsx +0 -34
  56. package/src/components/pages/Home.jsx +0 -19
  57. package/src/components/pages/ResourceCreate.jsx +0 -50
  58. package/src/components/pages/ResourceDelete.jsx +0 -18
  59. package/src/components/pages/ResourceEdit.jsx +0 -39
  60. package/src/components/pages/ResourceForm.jsx +0 -361
  61. package/src/components/pages/ResourceIndex.jsx +0 -256
  62. package/src/components/pages/ResourceShow.jsx +0 -23
  63. package/src/components/partials/ResourceFormHeader.jsx +0 -137
  64. package/src/components/partials/ResourceIndexHeader.jsx +0 -84
  65. package/src/defaults/routes.json +0 -10
  66. package/src/index.js +0 -9
  67. package/src/lib/createStore.js +0 -21
  68. package/src/reducers/AuthReducer.js +0 -23
  69. package/src/reducers/index.js +0 -5
  70. package/src/styles/layout.scss +0 -5
  71. package/src/styles/pages/resource-form.scss +0 -42
  72. package/src/styles/pages/resource-index.scss +0 -43
  73. package/src/styles/partials/resource-form-header.scss +0 -7
  74. package/src/styles/partials/resource-index-header.scss +0 -13
  75. package/src/styles/vendor.global.scss +0 -5
@@ -1,376 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports["default"] = exports.messages = void 0;
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
-
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
- var _react = _interopRequireWildcard(require("react"));
21
-
22
- var _propTypes = _interopRequireDefault(require("prop-types"));
23
-
24
- var _isObject = _interopRequireDefault(require("lodash/isObject"));
25
-
26
- var _classnames = _interopRequireDefault(require("classnames"));
27
-
28
- var _reactIntl = require("react-intl");
29
-
30
- var _core = require("@panneau/core");
31
-
32
- var _requests = require("@panneau/core/requests");
33
-
34
- var _components = require("@panneau/core/components");
35
-
36
- var _contexts = require("@panneau/core/contexts");
37
-
38
- var _ResourceFormHeader = _interopRequireDefault(require("../partials/ResourceFormHeader"));
39
-
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
-
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
-
44
- var styles = {
45
- "container": "panneau-app-resource-form-container",
46
- "isFullscreen": "panneau-app-resource-form-isFullscreen",
47
- "noticeIcon": "panneau-app-resource-form-noticeIcon",
48
- "loading": "panneau-app-resource-form-loading",
49
- "inner": "panneau-app-resource-form-inner",
50
- "content": "panneau-app-resource-form-content",
51
- "form": "panneau-app-resource-form-form"
52
- };
53
- var messages = (0, _reactIntl.defineMessages)({
54
- cancel: {
55
- id: 'app.buttons.resources.cancel',
56
- description: 'The label of the "cancel" button',
57
- defaultMessage: 'Cancel'
58
- },
59
- save: {
60
- id: 'app.buttons.resources.save',
61
- description: 'The label of the "save" button',
62
- defaultMessage: 'Save'
63
- },
64
- title: {
65
- id: 'app.titles.resources.default',
66
- description: 'The title of the resource form',
67
- defaultMessage: '{name}'
68
- },
69
- titleTyped: {
70
- id: 'app.titles.resources.typed',
71
- description: 'The title of the typed resource form',
72
- defaultMessage: '{name} <small class="text-muted">({type})</small>'
73
- },
74
- successNotice: {
75
- id: 'app.notices.resources.success',
76
- description: 'The text of the "success" form notice',
77
- defaultMessage: 'Success!'
78
- },
79
- errorNotice: {
80
- id: 'app.notices.resources.error',
81
- description: 'The text of the "error" form notice',
82
- defaultMessage: 'Failed. The form contains errors.'
83
- }
84
- });
85
- exports.messages = messages;
86
- var propTypes = {
87
- action: _propTypes["default"].string,
88
- resource: _core.PropTypes.resource.isRequired,
89
- resourceApi: _core.PropTypes.resourceApi.isRequired,
90
- itemId: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
91
- item: _propTypes["default"].shape({
92
- id: _propTypes["default"].number,
93
- type: _propTypes["default"].string
94
- }),
95
- query: _propTypes["default"].shape({
96
- type: _propTypes["default"].string
97
- }),
98
- successNoticeLabel: _core.PropTypes.label,
99
- errorNoticeLabel: _core.PropTypes.label,
100
- buttons: _core.PropTypes.buttons,
101
- saveButtonLabel: _core.PropTypes.message,
102
- confirmSwitchTypeMessage: _core.PropTypes.message,
103
- errors: _propTypes["default"].arrayOf(_propTypes["default"].string),
104
- formValue: _propTypes["default"].shape({}),
105
- formErrors: _propTypes["default"].objectOf(_propTypes["default"].array),
106
- readOnly: _propTypes["default"].bool,
107
- title: _core.PropTypes.label,
108
- titleTyped: _core.PropTypes.label,
109
- gotoResourceAction: _propTypes["default"].func.isRequired,
110
- onFormComplete: _propTypes["default"].func
111
- };
112
- var defaultProps = {
113
- action: 'create',
114
- title: messages.title,
115
- titleTyped: messages.titleTyped,
116
- query: null,
117
- itemId: null,
118
- item: null,
119
- errors: null,
120
- formValue: null,
121
- formErrors: null,
122
- readOnly: false,
123
- successNoticeLabel: messages.successNotice,
124
- errorNoticeLabel: messages.errorNotice,
125
- confirmSwitchTypeMessage: messages.confirmSwitchType,
126
- buttons: [{
127
- id: 'cancel',
128
- type: 'button',
129
- label: messages.cancel,
130
- className: 'btn-link btn-lg'
131
- }, {
132
- id: 'submit',
133
- type: 'submit',
134
- label: messages.save,
135
- className: 'btn-primary btn-lg'
136
- }],
137
- saveButtonLabel: null,
138
- onFormComplete: null
139
- };
140
-
141
- var ResourceForm = function ResourceForm(_ref) {
142
- var resource = _ref.resource,
143
- currentItem = _ref.item,
144
- itemId = _ref.itemId,
145
- query = _ref.query,
146
- action = _ref.action,
147
- readOnly = _ref.readOnly,
148
- currentErrors = _ref.errors,
149
- initialFormValue = _ref.formValue,
150
- initialFormErrors = _ref.formErrors,
151
- title = _ref.title,
152
- titleTyped = _ref.titleTyped,
153
- buttons = _ref.buttons,
154
- saveButtonLabel = _ref.saveButtonLabel,
155
- successNoticeLabel = _ref.successNoticeLabel,
156
- errorNoticeLabel = _ref.errorNoticeLabel,
157
- customOnFormComplete = _ref.onFormComplete,
158
- gotoResourceAction = _ref.gotoResourceAction;
159
-
160
- var _useState = (0, _react.useState)(currentItem),
161
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
162
- item = _useState2[0],
163
- setItem = _useState2[1];
164
-
165
- var _useState3 = (0, _react.useState)(false),
166
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
167
- isLoading = _useState4[0],
168
- setIsLoading = _useState4[1];
169
-
170
- var _useState5 = (0, _react.useState)(currentErrors || item),
171
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
172
- errors = _useState6[0],
173
- setErrors = _useState6[1];
174
-
175
- var _useState7 = (0, _react.useState)(initialFormValue || item),
176
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
177
- formValue = _useState8[0],
178
- setFormValue = _useState8[1];
179
-
180
- var _useState9 = (0, _react.useState)(initialFormErrors || item),
181
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
182
- formErrors = _useState10[0],
183
- setFormErrors = _useState10[1];
184
-
185
- var _useState11 = (0, _react.useState)(initialFormErrors !== null ? false : null),
186
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
187
- formSuccess = _useState12[0],
188
- setFormSuccess = _useState12[1];
189
-
190
- var resourceApi = (0, _core.useResourceApi)(resource);
191
- var isTyped = resource.type() === 'typed';
192
- var waitingItem = action === 'edit' && item === null; // Load item if needed
193
-
194
- (0, _react.useEffect)(function () {
195
- if (isLoading) {
196
- return;
197
- }
198
-
199
- var onItemLoaded = function onItemLoaded(newItem) {
200
- setItem(newItem);
201
- };
202
-
203
- var onItemLoadError = function onItemLoadError(newErrors) {
204
- setErrors(newErrors);
205
- };
206
-
207
- var itemChanged = item !== null && "".concat(item.id) !== "".concat(itemId);
208
- var itemShouldReload = item === null || itemChanged;
209
-
210
- if ((action === 'edit' || action === 'show') && itemShouldReload) {
211
- setIsLoading(true);
212
- resourceApi.show(itemId).then(onItemLoaded)["catch"](onItemLoadError).then(function () {
213
- setIsLoading(false);
214
- });
215
- }
216
- }, [action, item, itemId, isLoading]); // Get current type
217
-
218
- var currentType = (0, _react.useMemo)(function () {
219
- if (!isTyped || waitingItem) {
220
- return null;
221
- }
222
-
223
- var types = resource.types();
224
- var itemTypeId = item !== null ? item.type || null : null;
225
-
226
- var _ref2 = query || {},
227
- _ref2$type = _ref2.type,
228
- queryTypeId = _ref2$type === void 0 ? null : _ref2$type;
229
-
230
- var typeId = itemTypeId || queryTypeId;
231
- var definedType = typeId !== null ? types.find(function (it) {
232
- return it.id === typeId;
233
- }) || null : null;
234
-
235
- if (definedType !== null) {
236
- return definedType;
237
- }
238
-
239
- return types.length > 0 ? types.find(function (_ref3) {
240
- var _ref3$default = _ref3["default"],
241
- isDefault = _ref3$default === void 0 ? false : _ref3$default;
242
- return isDefault;
243
- }) || types[0] || null : null;
244
- }, [item, query, resource]);
245
- var onClickCancel = (0, _react.useCallback)(function (e) {
246
- e.preventDefault();
247
- gotoResourceAction('index');
248
- }, [gotoResourceAction]);
249
- var formButtons = (0, _react.useMemo)(function () {
250
- return readOnly ? [] : buttons.map(function (button) {
251
- if (button.id === 'save' && saveButtonLabel !== null) {
252
- return _objectSpread({}, button, {
253
- label: saveButtonLabel
254
- });
255
- }
256
-
257
- if (button.id === 'cancel' && typeof button.onClick === 'undefined') {
258
- return _objectSpread({}, button, {
259
- onClick: onClickCancel
260
- });
261
- }
262
-
263
- return button;
264
- });
265
- }, [buttons, readOnly]);
266
- var submitForm = (0, _react.useCallback)(function () {
267
- var data = isTyped ? _objectSpread({
268
- type: currentType !== null ? currentType.id : null
269
- }, formValue || item) : formValue;
270
- setFormSuccess(null);
271
- return action === 'create' ? resourceApi.store(data) : resourceApi.update(item.id, data || item);
272
- }, [resourceApi, action, isTyped, currentType]);
273
- var onFormChange = (0, _react.useCallback)(function (value) {
274
- setFormValue(value);
275
- setFormSuccess(null);
276
- }, []);
277
- var onFormComplete = (0, _react.useCallback)(function (newItem) {
278
- setItem(newItem);
279
- setFormValue(null);
280
- setFormErrors(null);
281
- setFormSuccess(true);
282
-
283
- if (customOnFormComplete !== null) {
284
- customOnFormComplete(item);
285
- }
286
- }, [customOnFormComplete]);
287
- var onFormErrors = (0, _react.useCallback)(function (error) {
288
- var newErrors = (0, _requests.getErrorsFromResponseError)(error);
289
- setFormErrors(newErrors);
290
- setFormSuccess(false);
291
- }, []); // Get form definition
292
-
293
- var _useMemo = (0, _react.useMemo)(function () {
294
- var _resource$form = resource.form(action),
295
- _resource$form$fields = _resource$form.fields,
296
- fields = _resource$form$fields === void 0 ? [] : _resource$form$fields,
297
- form = (0, _objectWithoutProperties2["default"])(_resource$form, ["fields"]);
298
-
299
- var finalFields;
300
-
301
- if (waitingItem) {
302
- finalFields = null;
303
- } else if (currentType !== null && (0, _isObject["default"])(fields)) {
304
- finalFields = fields[currentType.id] || fields["default"] || fields;
305
- } else {
306
- finalFields = fields;
307
- }
308
-
309
- return _objectSpread({
310
- type: 'normal',
311
- fullscreen: false,
312
- fields: finalFields
313
- }, form);
314
- }, [waitingItem, resource, currentType]),
315
- _useMemo$type = _useMemo.type,
316
- formType = _useMemo$type === void 0 ? null : _useMemo$type,
317
- fullscreen = _useMemo.fullscreen,
318
- _useMemo$className = _useMemo.className,
319
- className = _useMemo$className === void 0 ? null : _useMemo$className,
320
- formProps = (0, _objectWithoutProperties2["default"])(_useMemo, ["type", "fullscreen", "className"]);
321
-
322
- var FormComponent = (0, _contexts.useComponent)(formType, 'forms');
323
- var form = !waitingItem && FormComponent !== null ? _react["default"].createElement(FormComponent, (0, _extends2["default"])({}, formProps, {
324
- className: (0, _classnames["default"])([styles.form, (0, _defineProperty2["default"])({}, className, className !== null)]),
325
- readOnly: readOnly,
326
- buttons: formButtons,
327
- value: formValue || item,
328
- errors: formErrors,
329
- notice: formSuccess !== null ? {
330
- type: formSuccess ? 'success' : 'error',
331
- label: formSuccess ? successNoticeLabel : errorNoticeLabel
332
- } : null,
333
- submitForm: submitForm,
334
- onChange: onFormChange,
335
- onComplete: onFormComplete,
336
- onErrors: onFormErrors
337
- })) : null;
338
-
339
- var header = _react["default"].createElement(_ResourceFormHeader["default"], {
340
- resource: resource,
341
- type: currentType,
342
- action: action,
343
- fullscreen: fullscreen,
344
- valueHasChanged: formValue !== null,
345
- title: title,
346
- titleTyped: titleTyped
347
- });
348
-
349
- var errorsMessages = errors !== null && errors.length > 0 ? _react["default"].createElement(_components.Errors, {
350
- errors: errors,
351
- className: styles.errors
352
- }) : null;
353
- var content = isLoading && item === null ? _react["default"].createElement("div", {
354
- className: (0, _classnames["default"])(['py-4', styles.loading])
355
- }, _react["default"].createElement(_components.Loading, {
356
- loading: true
357
- })) : form;
358
- return _react["default"].createElement("div", {
359
- className: (0, _classnames["default"])([styles.container, (0, _defineProperty2["default"])({}, styles.isFullscreen, fullscreen)])
360
- }, fullscreen ? _react["default"].createElement("div", {
361
- className: (0, _classnames["default"])([styles.inner])
362
- }, header, _react["default"].createElement("div", {
363
- className: (0, _classnames["default"])([styles.content])
364
- }, errorsMessages, content)) : _react["default"].createElement("div", {
365
- className: "container"
366
- }, _react["default"].createElement("div", {
367
- className: "row justify-content-md-center"
368
- }, _react["default"].createElement("div", {
369
- className: "col-lg-9"
370
- }, header, errorsMessages, content))));
371
- };
372
-
373
- ResourceForm.propTypes = propTypes;
374
- ResourceForm.defaultProps = defaultProps;
375
- var _default = ResourceForm;
376
- exports["default"] = _default;
@@ -1,289 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports["default"] = void 0;
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
-
18
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
- var _react = _interopRequireWildcard(require("react"));
21
-
22
- var _propTypes = _interopRequireDefault(require("prop-types"));
23
-
24
- var _get = _interopRequireDefault(require("lodash/get"));
25
-
26
- var _classnames = _interopRequireDefault(require("classnames"));
27
-
28
- var _reactIntl = require("react-intl");
29
-
30
- var _core = require("@panneau/core");
31
-
32
- var _utils = require("@panneau/core/utils");
33
-
34
- var _contexts = require("@panneau/core/contexts");
35
-
36
- var _components = require("@panneau/core/components");
37
-
38
- var _ResourceIndexHeader = _interopRequireDefault(require("../partials/ResourceIndexHeader"));
39
-
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
-
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
-
44
- var styles = {
45
- "container": "panneau-app-resource-index-container",
46
- "listContainer": "panneau-app-resource-index-listContainer",
47
- "list": "panneau-app-resource-index-list",
48
- "loading": "panneau-app-resource-index-loading",
49
- "inner": "panneau-app-resource-index-inner",
50
- "middle": "panneau-app-resource-index-middle",
51
- "alone": "panneau-app-resource-index-alone"
52
- };
53
- var messages = (0, _reactIntl.defineMessages)({
54
- add: {
55
- id: 'core.buttons.resources.add',
56
- description: 'The label of the "add" index button',
57
- defaultMessage: 'Add {name}'
58
- },
59
- title: {
60
- id: 'core.titles.resources.index',
61
- description: 'The title of the resource index page',
62
- defaultMessage: '{name}'
63
- },
64
- confirmDelete: {
65
- id: 'core.resources.index.confirm_delete',
66
- description: 'The confirm message when deleting on the resource index page',
67
- defaultMessage: 'Are you sure you want to delete this item from {name}?'
68
- }
69
- });
70
- var propTypes = {
71
- intl: _core.PropTypes.intl.isRequired,
72
- resource: _core.PropTypes.resource.isRequired,
73
- query: _propTypes["default"].shape({
74
- page: _propTypes["default"].string
75
- }),
76
- title: _core.PropTypes.message,
77
- showAddButton: _propTypes["default"].bool,
78
- addButtonLabel: _core.PropTypes.message,
79
- confirmDeleteMessage: _core.PropTypes.message,
80
- getResourceActionUrl: _propTypes["default"].func.isRequired,
81
- gotoResourceAction: _propTypes["default"].func.isRequired
82
- };
83
- var defaultProps = {
84
- query: null,
85
- title: messages.title,
86
- showAddButton: true,
87
- addButtonLabel: messages.add,
88
- confirmDeleteMessage: messages.confirmDelete
89
- };
90
-
91
- var ResourceIndex = function ResourceIndex(_ref) {
92
- var _classNames;
93
-
94
- var intl = _ref.intl,
95
- resource = _ref.resource,
96
- query = _ref.query,
97
- title = _ref.title,
98
- addButtonLabel = _ref.addButtonLabel,
99
- confirmDeleteMessage = _ref.confirmDeleteMessage,
100
- getResourceActionUrl = _ref.getResourceActionUrl,
101
- gotoResourceAction = _ref.gotoResourceAction,
102
- showAddButton = _ref.showAddButton;
103
-
104
- var _useState = (0, _react.useState)({
105
- isLoading: false,
106
- query: null,
107
- items: null,
108
- errors: null,
109
- pagination: null
110
- }),
111
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
112
- request = _useState2[0],
113
- setRequest = _useState2[1];
114
-
115
- var resourceApi = (0, _core.useResourceApi)(resource);
116
- var isLoading = request.isLoading,
117
- items = request.items,
118
- pagination = request.pagination,
119
- errors = request.errors;
120
-
121
- var _resource$list = resource.list('index'),
122
- listType = _resource$list.type,
123
- _resource$list$pagina = _resource$list.pagination,
124
- hasPagination = _resource$list$pagina === void 0 ? false : _resource$list$pagina,
125
- listProps = (0, _objectWithoutProperties2["default"])(_resource$list, ["type", "pagination"]);
126
-
127
- (0, _react.useEffect)(function () {
128
- if (isLoading) {
129
- return null;
130
- }
131
-
132
- var canceled = false;
133
-
134
- var onItemsLoaded = function onItemsLoaded(data) {
135
- if (canceled) {
136
- return;
137
- }
138
-
139
- if (hasPagination) {
140
- var newItems = data.data,
141
- newPagination = (0, _objectWithoutProperties2["default"])(data, ["data"]);
142
- setRequest(_objectSpread({}, request, {
143
- items: newItems,
144
- pagination: newPagination,
145
- isLoading: false
146
- }));
147
- return;
148
- }
149
-
150
- setRequest(_objectSpread({}, request, {
151
- items: data,
152
- isLoading: false
153
- }));
154
- };
155
-
156
- var onItemsLoadError = function onItemsLoadError(newErrors) {
157
- if (canceled) {
158
- return;
159
- }
160
-
161
- setRequest(_objectSpread({}, request, {
162
- errors: newErrors,
163
- isLoading: false
164
- }));
165
- };
166
-
167
- var _ref2 = query || {},
168
- _ref2$page = _ref2.page,
169
- page = _ref2$page === void 0 ? null : _ref2$page;
170
-
171
- var params = {};
172
-
173
- if (hasPagination && page !== null) {
174
- params.page = page;
175
- }
176
-
177
- resourceApi.index(params).then(onItemsLoaded)["catch"](onItemsLoadError);
178
- setRequest(_objectSpread({}, request, {
179
- isLoading: true
180
- }));
181
- return function () {
182
- canceled = true;
183
- };
184
- }, [query, hasPagination]);
185
- var deleteItem = (0, _react.useCallback)(function (id) {
186
- var onItemDeleted = function onItemDeleted(_ref3) {
187
- var itemId = _ref3.id;
188
- setRequest(_objectSpread({}, request, {
189
- items: items.filter(function (it) {
190
- return it.id !== itemId;
191
- })
192
- }));
193
- };
194
-
195
- var name = resource.name;
196
- var confirmMessage = resource.message('confirm_delete', confirmDeleteMessage);
197
- var message = (0, _utils.isMessage)(confirmMessage) ? intl.formatMessage(confirmMessage, {
198
- name: name,
199
- id: id
200
- }) : confirmMessage; // eslint-disable-next-line no-alert
201
-
202
- if (window.confirm(message)) {
203
- resourceApi.destroy(id).then(onItemDeleted);
204
- }
205
- }, [resource, request]);
206
- var onClickAction = (0, _react.useCallback)(function (e, action, it) {
207
- var useRouter = (0, _get["default"])(action, 'useRouter', true);
208
-
209
- switch (action.id) {
210
- case 'edit':
211
- case 'show':
212
- if (useRouter) {
213
- gotoResourceAction(action.id, it.id);
214
- } else {
215
- window.location.href = getResourceActionUrl(action.id);
216
- }
217
-
218
- break;
219
-
220
- case 'delete':
221
- {
222
- var hasPage = (0, _get["default"])(action, 'hasPage', false);
223
-
224
- if (!hasPage) {
225
- deleteItem(it.id);
226
- } else if (useRouter) {
227
- gotoResourceAction(action.id, it.id);
228
- } else {
229
- window.location.href = getResourceActionUrl(action.id);
230
- }
231
-
232
- break;
233
- }
234
-
235
- default:
236
- break;
237
- }
238
- }, [deleteItem, gotoResourceAction, getResourceActionUrl]); // Components
239
-
240
- var ListComponent = (0, _contexts.useComponent)(listType || 'table', 'lists');
241
- var Pagination = (0, _contexts.useComponent)('pagination', 'lists');
242
- return _react["default"].createElement("div", {
243
- className: (0, _classnames["default"])([styles.container])
244
- }, _react["default"].createElement("div", {
245
- className: "container"
246
- }, _react["default"].createElement("div", {
247
- className: "row justify-content-md-center"
248
- }, _react["default"].createElement("div", {
249
- className: "col-lg-8"
250
- }, _react["default"].createElement(_ResourceIndexHeader["default"], {
251
- resource: resource,
252
- title: title,
253
- addButtonLabel: addButtonLabel,
254
- showAddButton: showAddButton,
255
- getResourceActionUrl: getResourceActionUrl
256
- }), _react["default"].createElement("div", {
257
- className: styles.listContainer
258
- }, _react["default"].createElement(_components.Errors, {
259
- errors: errors
260
- }), _react["default"].createElement("div", {
261
- className: styles.list
262
- }, items !== null && ListComponent !== null ? _react["default"].createElement("div", {
263
- className: styles.list
264
- }, _react["default"].createElement(ListComponent, (0, _extends2["default"])({}, listProps, {
265
- items: items || [],
266
- onClickAction: onClickAction
267
- }))) : null), isLoading ? _react["default"].createElement("div", {
268
- className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, styles.loading, true), (0, _defineProperty2["default"])(_classNames, styles.alone, items === null), _classNames))
269
- }, _react["default"].createElement("div", {
270
- className: styles.inner
271
- }, _react["default"].createElement("div", {
272
- className: styles.middle
273
- }, _react["default"].createElement(_components.Loading, {
274
- loading: true
275
- })))) : null), pagination !== null && pagination.last_page > 1 ? _react["default"].createElement(Pagination, {
276
- total: pagination.total,
277
- perPage: pagination.per_page,
278
- currentPage: pagination.current_page,
279
- lastPage: pagination.last_page,
280
- url: getResourceActionUrl('index')
281
- }) : null))));
282
- };
283
-
284
- ResourceIndex.propTypes = propTypes;
285
- ResourceIndex.defaultProps = defaultProps;
286
-
287
- var _default = (0, _reactIntl.injectIntl)(ResourceIndex);
288
-
289
- exports["default"] = _default;
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _ResourceForm = _interopRequireDefault(require("./ResourceForm"));
15
-
16
- var propTypes = {};
17
- var defaultProps = {};
18
-
19
- var ResourceShow = function ResourceShow(props) {
20
- return _react["default"].createElement(_ResourceForm["default"], (0, _extends2["default"])({
21
- readOnly: true
22
- }, props));
23
- };
24
-
25
- ResourceShow.propTypes = propTypes;
26
- ResourceShow.defaultProps = defaultProps;
27
- var _default = ResourceShow;
28
- exports["default"] = _default;