@panneau/field-resource-item 2.0.79 → 2.0.80
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.
- package/es/index.js +90 -50
- package/lib/index.js +91 -51
- package/package.json +3 -3
package/es/index.js
CHANGED
@@ -3,7 +3,6 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
3
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
5
5
|
import classNames from 'classnames';
|
6
|
-
import get from 'lodash/get';
|
7
6
|
import isArray from 'lodash/isArray';
|
8
7
|
import isEmpty from 'lodash/isEmpty';
|
9
8
|
import PropTypes from 'prop-types';
|
@@ -19,6 +18,8 @@ import Select from '@panneau/element-select';
|
|
19
18
|
import ResourceForm from '@panneau/form-resource';
|
20
19
|
import { useResourceValues } from '@panneau/intl';
|
21
20
|
import Dialog from '@panneau/modal-dialog';
|
21
|
+
import '@panneau/modal-resource-form';
|
22
|
+
import ResourceItemsModal from '@panneau/modal-resource-items';
|
22
23
|
|
23
24
|
var propTypes = {
|
24
25
|
name: PropTypes.string,
|
@@ -47,9 +48,11 @@ var propTypes = {
|
|
47
48
|
placeholder: PropTypes.string,
|
48
49
|
canCreate: PropTypes.bool,
|
49
50
|
canEdit: PropTypes.bool,
|
51
|
+
canFind: PropTypes.bool,
|
50
52
|
withoutModal: PropTypes.bool,
|
51
|
-
createButtonLabel: PropTypes$1.
|
53
|
+
createButtonLabel: PropTypes$1.message,
|
52
54
|
editButtonLabel: PropTypes$1.message,
|
55
|
+
findButtonLabel: PropTypes$1.message,
|
53
56
|
multiple: PropTypes.bool,
|
54
57
|
disabled: PropTypes.bool,
|
55
58
|
className: PropTypes.string,
|
@@ -78,9 +81,11 @@ var defaultProps = {
|
|
78
81
|
placeholder: null,
|
79
82
|
canCreate: false,
|
80
83
|
canEdit: false,
|
84
|
+
canFind: false,
|
81
85
|
withoutModal: false,
|
82
86
|
createButtonLabel: null,
|
83
87
|
editButtonLabel: null,
|
88
|
+
findButtonLabel: null,
|
84
89
|
multiple: false,
|
85
90
|
disabled: false,
|
86
91
|
className: null,
|
@@ -88,7 +93,7 @@ var defaultProps = {
|
|
88
93
|
onChange: null
|
89
94
|
};
|
90
95
|
var ResourceItemField = function ResourceItemField(_ref) {
|
91
|
-
var
|
96
|
+
var _ref10;
|
92
97
|
var name = _ref.name,
|
93
98
|
value = _ref.value,
|
94
99
|
errors = _ref.errors,
|
@@ -110,9 +115,11 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
110
115
|
placeholder = _ref.placeholder,
|
111
116
|
canCreate = _ref.canCreate,
|
112
117
|
canEdit = _ref.canEdit,
|
118
|
+
canFind = _ref.canFind,
|
113
119
|
withoutModal = _ref.withoutModal,
|
114
120
|
createButtonLabel = _ref.createButtonLabel,
|
115
121
|
editButtonLabel = _ref.editButtonLabel,
|
122
|
+
findButtonLabel = _ref.findButtonLabel,
|
116
123
|
multiple = _ref.multiple,
|
117
124
|
disabled = _ref.disabled,
|
118
125
|
className = _ref.className,
|
@@ -123,39 +130,45 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
123
130
|
var resourceValues = useResourceValues(resource);
|
124
131
|
var defaultPage = initialPage || (paginated ? 1 : null);
|
125
132
|
var defaultCount = initialCount || (paginated ? 10 : null);
|
133
|
+
var hasValue = value !== null && !isEmpty(value);
|
134
|
+
|
126
135
|
// const [initialValue] = useState(value);
|
127
136
|
|
128
|
-
var _useState = useState(
|
137
|
+
var _useState = useState(false),
|
129
138
|
_useState2 = _slicedToArray(_useState, 2),
|
130
139
|
formOpen = _useState2[0],
|
131
140
|
setFormOpen = _useState2[1];
|
141
|
+
var _useState3 = useState(false),
|
142
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
143
|
+
listOpen = _useState4[0],
|
144
|
+
setListOpen = _useState4[1];
|
132
145
|
|
133
146
|
// The text input search query
|
134
|
-
var
|
135
|
-
|
136
|
-
inputTextValue =
|
137
|
-
setInputTextValue =
|
147
|
+
var _useState5 = useState(''),
|
148
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
149
|
+
inputTextValue = _useState6[0],
|
150
|
+
setInputTextValue = _useState6[1];
|
138
151
|
var onInputChange = useCallback(function (textValue) {
|
139
152
|
setInputTextValue(textValue);
|
140
153
|
}, []);
|
141
154
|
|
142
155
|
// TODO: list state controls?
|
143
|
-
var
|
144
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
145
|
-
query = _useState6[0];
|
146
|
-
_useState6[1];
|
147
|
-
var _useState7 = useState(defaultPage),
|
156
|
+
var _useState7 = useState(initialQuery),
|
148
157
|
_useState8 = _slicedToArray(_useState7, 2),
|
149
|
-
|
150
|
-
|
151
|
-
var _useState9 = useState(
|
158
|
+
query = _useState8[0];
|
159
|
+
_useState8[1];
|
160
|
+
var _useState9 = useState(defaultPage),
|
152
161
|
_useState10 = _slicedToArray(_useState9, 2),
|
153
|
-
|
154
|
-
_useState10[1];
|
155
|
-
var _useState11 = useState(
|
162
|
+
page = _useState10[0],
|
163
|
+
setPage = _useState10[1];
|
164
|
+
var _useState11 = useState(defaultCount),
|
156
165
|
_useState12 = _slicedToArray(_useState11, 2),
|
157
|
-
|
166
|
+
count = _useState12[0];
|
158
167
|
_useState12[1];
|
168
|
+
var _useState13 = useState(initialOptions),
|
169
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
170
|
+
resourceOptions = _useState14[0];
|
171
|
+
_useState14[1];
|
159
172
|
var queryResource = useMemo(function () {
|
160
173
|
return {
|
161
174
|
id: resourceId
|
@@ -194,13 +207,18 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
194
207
|
}
|
195
208
|
}, [paginated, page, setPage, lastPage]);
|
196
209
|
var getItemLabel = useCallback(function (it, path) {
|
197
|
-
var
|
210
|
+
var _ref4 = it || {},
|
211
|
+
_ref4$id = _ref4.id,
|
212
|
+
id = _ref4$id === void 0 ? null : _ref4$id;
|
198
213
|
if (itemLabelWithId) {
|
199
214
|
var label = initialGetItemLabel(it, path);
|
200
215
|
return label ? "".concat(label, " (#").concat(id, ")") : "#".concat(id);
|
201
216
|
}
|
202
217
|
return path !== null ? initialGetItemLabel(it, path) : "#".concat(id);
|
203
218
|
}, [initialGetItemLabel, itemLabelWithId]);
|
219
|
+
|
220
|
+
// const getItemLabel = getItemLabelFunction(initialGetItemLabel, itemLabelWithId);
|
221
|
+
|
204
222
|
var parseItem = useCallback(function (it) {
|
205
223
|
var label = getItemLabel(it, itemLabelPath);
|
206
224
|
var description = getItemDescription(it, itemDescriptionPath);
|
@@ -210,32 +228,32 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
210
228
|
label: finalLabel
|
211
229
|
};
|
212
230
|
}, [getItemLabel, getItemDescription, itemLabelPath, itemDescriptionPath]);
|
213
|
-
var finalValue = multiple && isArray(value) ? value.map(function (
|
214
|
-
var
|
215
|
-
id =
|
231
|
+
var finalValue = multiple && isArray(value) ? value.map(function (_ref5) {
|
232
|
+
var _ref5$id = _ref5.id,
|
233
|
+
id = _ref5$id === void 0 ? null : _ref5$id;
|
216
234
|
return id;
|
217
235
|
}) : (value === null || value === void 0 ? void 0 : value.id) || null;
|
218
|
-
var
|
236
|
+
var _ref6 = !multiple && hasValue ? value : {
|
219
237
|
type: resourceType
|
220
238
|
},
|
221
|
-
|
222
|
-
finalType =
|
239
|
+
_ref6$type = _ref6.type,
|
240
|
+
finalType = _ref6$type === void 0 ? null : _ref6$type;
|
223
241
|
var options = (items || []).map(function (it) {
|
224
242
|
return parseItem(it);
|
225
243
|
});
|
226
244
|
var onValueChange = useCallback(function (newId) {
|
227
245
|
if (onChange === null) return;
|
228
246
|
if (multiple) {
|
229
|
-
var newValue = items.filter(function (
|
230
|
-
var
|
231
|
-
id =
|
247
|
+
var newValue = items.filter(function (_ref7) {
|
248
|
+
var _ref7$id = _ref7.id,
|
249
|
+
id = _ref7$id === void 0 ? null : _ref7$id;
|
232
250
|
return newId.indexOf(id) !== -1;
|
233
251
|
}) || [];
|
234
252
|
onChange(newValue);
|
235
253
|
} else {
|
236
|
-
var _newValue = items.filter(function (
|
237
|
-
var
|
238
|
-
id =
|
254
|
+
var _newValue = items.filter(function (_ref8) {
|
255
|
+
var _ref8$id = _ref8.id,
|
256
|
+
id = _ref8$id === void 0 ? null : _ref8$id;
|
239
257
|
return id === newId;
|
240
258
|
}) || [];
|
241
259
|
if (_newValue !== null && _newValue.length > 0) {
|
@@ -257,12 +275,24 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
257
275
|
type: resourceType
|
258
276
|
}, newValue) : newValue;
|
259
277
|
if (multiple) {
|
260
|
-
onChange(
|
278
|
+
onChange(isArray(value) ? [].concat(_toConsumableArray(value), [finalNewValue]) : [finalNewValue]);
|
261
279
|
} else {
|
262
280
|
onChange(finalNewValue);
|
263
281
|
}
|
264
282
|
setFormOpen(false);
|
265
283
|
}, [onChange, multiple, value, setFormOpen, resourceType, paginated, initialPage]);
|
284
|
+
var onOpenList = useCallback(function () {
|
285
|
+
setListOpen(false); // TODO: fix this
|
286
|
+
}, [setListOpen]);
|
287
|
+
var onCloseList = useCallback(function () {
|
288
|
+
setListOpen(false);
|
289
|
+
}, [setListOpen]);
|
290
|
+
var onSelectListItem = useCallback(function (newValue) {
|
291
|
+
if (onChange !== null) {
|
292
|
+
onChange(newValue);
|
293
|
+
setListOpen(false);
|
294
|
+
}
|
295
|
+
}, [onChange, setListOpen]);
|
266
296
|
|
267
297
|
// If empty try to fetch
|
268
298
|
var onFocus = useCallback(function () {
|
@@ -294,7 +324,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
294
324
|
}) : null;
|
295
325
|
return /*#__PURE__*/React.createElement("div", {
|
296
326
|
className: classNames(['position-relative', _defineProperty({}, className, className != null)])
|
297
|
-
},
|
327
|
+
}, hasValue && !multiple ? /*#__PURE__*/React.createElement("div", {
|
298
328
|
className: "row"
|
299
329
|
}, /*#__PURE__*/React.createElement("div", {
|
300
330
|
className: "col-10 flex-grow-1"
|
@@ -309,21 +339,15 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
309
339
|
itemImagePath: itemImagePath,
|
310
340
|
itemLabelWithId: itemLabelWithId,
|
311
341
|
disable: disabled,
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
}
|
316
|
-
theme: "primary",
|
317
|
-
icon: editButtonLabel === null ? 'pencil-square' : null,
|
318
|
-
onClick: formOpen ? onCloseForm : onOpenForm,
|
319
|
-
outline: true,
|
320
|
-
disabled: finalValue === null
|
321
|
-
}, editButtonLabel)) : null) : /*#__PURE__*/React.createElement("div", {
|
342
|
+
onClickEdit: canEdit && !multiple ? formOpen ? onCloseForm : onOpenForm : null,
|
343
|
+
onClickRemove: onClickRemove,
|
344
|
+
editButtonLabel: editButtonLabel
|
345
|
+
}))) : /*#__PURE__*/React.createElement("div", {
|
322
346
|
className: "row align-items-center"
|
323
347
|
}, /*#__PURE__*/React.createElement("div", {
|
324
|
-
className: "col-
|
348
|
+
className: "col-8 flex-grow-1"
|
325
349
|
}, /*#__PURE__*/React.createElement(Select, {
|
326
|
-
className: classNames(['py-1', 'shadow-none', (
|
350
|
+
className: classNames(['py-1', 'shadow-none', (_ref10 = {}, _defineProperty(_ref10, disabled, disabled), _defineProperty(_ref10, 'is-invalid', errors !== null), _defineProperty(_ref10, inputClassName, inputClassName !== null), _ref10)]),
|
327
351
|
disabled: disabled,
|
328
352
|
name: name,
|
329
353
|
value: finalValue,
|
@@ -342,7 +366,14 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
342
366
|
onFocus: onFocus,
|
343
367
|
onMenuScrollToBottom: onScrollEnd,
|
344
368
|
multiple: multiple
|
345
|
-
})),
|
369
|
+
})), canFind ? /*#__PURE__*/React.createElement("div", {
|
370
|
+
className: "col-auto"
|
371
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
372
|
+
theme: "primary",
|
373
|
+
icon: findButtonLabel === null ? 'search' : null,
|
374
|
+
onClick: listOpen ? onCloseList : onOpenList,
|
375
|
+
outline: true
|
376
|
+
}, findButtonLabel)) : null, canCreate ? /*#__PURE__*/React.createElement("div", {
|
346
377
|
className: "col-auto"
|
347
378
|
}, /*#__PURE__*/React.createElement(Button, {
|
348
379
|
theme: "primary",
|
@@ -352,7 +383,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
352
383
|
}, createButtonLabel)) : null), formOpen ? withoutModal ? /*#__PURE__*/React.createElement("div", {
|
353
384
|
className: "card mt-4 p-4"
|
354
385
|
}, form) : /*#__PURE__*/React.createElement(Dialog, {
|
355
|
-
title:
|
386
|
+
title: hasValue && !multiple ? /*#__PURE__*/React.createElement(FormattedMessage, {
|
356
387
|
values: resourceValues,
|
357
388
|
id: "mCfzkJ",
|
358
389
|
defaultMessage: [{
|
@@ -375,7 +406,16 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
375
406
|
}),
|
376
407
|
size: "lg",
|
377
408
|
onClose: onCloseForm
|
378
|
-
}, form) : null
|
409
|
+
}, form) : null, listOpen ? /*#__PURE__*/React.createElement(ResourceItemsModal, {
|
410
|
+
resource: resourceId,
|
411
|
+
onClose: onCloseList,
|
412
|
+
listProps: {
|
413
|
+
actions: ['select'],
|
414
|
+
actionsProps: {
|
415
|
+
onClickSelect: onSelectListItem
|
416
|
+
}
|
417
|
+
}
|
418
|
+
}) : null);
|
379
419
|
};
|
380
420
|
ResourceItemField.propTypes = propTypes;
|
381
421
|
ResourceItemField.defaultProps = defaultProps;
|
package/lib/index.js
CHANGED
@@ -7,7 +7,6 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
7
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
8
8
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
9
9
|
var classNames = require('classnames');
|
10
|
-
var get = require('lodash/get');
|
11
10
|
var isArray = require('lodash/isArray');
|
12
11
|
var isEmpty = require('lodash/isEmpty');
|
13
12
|
var PropTypes = require('prop-types');
|
@@ -23,6 +22,8 @@ var Select = require('@panneau/element-select');
|
|
23
22
|
var ResourceForm = require('@panneau/form-resource');
|
24
23
|
var intl = require('@panneau/intl');
|
25
24
|
var Dialog = require('@panneau/modal-dialog');
|
25
|
+
require('@panneau/modal-resource-form');
|
26
|
+
var ResourceItemsModal = require('@panneau/modal-resource-items');
|
26
27
|
|
27
28
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
28
29
|
|
@@ -31,7 +32,6 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
31
32
|
var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
|
32
33
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
33
34
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
34
|
-
var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
|
35
35
|
var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
|
36
36
|
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
37
37
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
@@ -41,6 +41,7 @@ var ResourceCard__default = /*#__PURE__*/_interopDefaultLegacy(ResourceCard);
|
|
41
41
|
var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
|
42
42
|
var ResourceForm__default = /*#__PURE__*/_interopDefaultLegacy(ResourceForm);
|
43
43
|
var Dialog__default = /*#__PURE__*/_interopDefaultLegacy(Dialog);
|
44
|
+
var ResourceItemsModal__default = /*#__PURE__*/_interopDefaultLegacy(ResourceItemsModal);
|
44
45
|
|
45
46
|
var propTypes = {
|
46
47
|
name: PropTypes__default["default"].string,
|
@@ -69,9 +70,11 @@ var propTypes = {
|
|
69
70
|
placeholder: PropTypes__default["default"].string,
|
70
71
|
canCreate: PropTypes__default["default"].bool,
|
71
72
|
canEdit: PropTypes__default["default"].bool,
|
73
|
+
canFind: PropTypes__default["default"].bool,
|
72
74
|
withoutModal: PropTypes__default["default"].bool,
|
73
|
-
createButtonLabel: core.PropTypes.
|
75
|
+
createButtonLabel: core.PropTypes.message,
|
74
76
|
editButtonLabel: core.PropTypes.message,
|
77
|
+
findButtonLabel: core.PropTypes.message,
|
75
78
|
multiple: PropTypes__default["default"].bool,
|
76
79
|
disabled: PropTypes__default["default"].bool,
|
77
80
|
className: PropTypes__default["default"].string,
|
@@ -100,9 +103,11 @@ var defaultProps = {
|
|
100
103
|
placeholder: null,
|
101
104
|
canCreate: false,
|
102
105
|
canEdit: false,
|
106
|
+
canFind: false,
|
103
107
|
withoutModal: false,
|
104
108
|
createButtonLabel: null,
|
105
109
|
editButtonLabel: null,
|
110
|
+
findButtonLabel: null,
|
106
111
|
multiple: false,
|
107
112
|
disabled: false,
|
108
113
|
className: null,
|
@@ -110,7 +115,7 @@ var defaultProps = {
|
|
110
115
|
onChange: null
|
111
116
|
};
|
112
117
|
var ResourceItemField = function ResourceItemField(_ref) {
|
113
|
-
var
|
118
|
+
var _ref10;
|
114
119
|
var name = _ref.name,
|
115
120
|
value = _ref.value,
|
116
121
|
errors = _ref.errors,
|
@@ -132,9 +137,11 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
132
137
|
placeholder = _ref.placeholder,
|
133
138
|
canCreate = _ref.canCreate,
|
134
139
|
canEdit = _ref.canEdit,
|
140
|
+
canFind = _ref.canFind,
|
135
141
|
withoutModal = _ref.withoutModal,
|
136
142
|
createButtonLabel = _ref.createButtonLabel,
|
137
143
|
editButtonLabel = _ref.editButtonLabel,
|
144
|
+
findButtonLabel = _ref.findButtonLabel,
|
138
145
|
multiple = _ref.multiple,
|
139
146
|
disabled = _ref.disabled,
|
140
147
|
className = _ref.className,
|
@@ -145,39 +152,45 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
145
152
|
var resourceValues = intl.useResourceValues(resource);
|
146
153
|
var defaultPage = initialPage || (paginated ? 1 : null);
|
147
154
|
var defaultCount = initialCount || (paginated ? 10 : null);
|
155
|
+
var hasValue = value !== null && !isEmpty__default["default"](value);
|
156
|
+
|
148
157
|
// const [initialValue] = useState(value);
|
149
158
|
|
150
|
-
var _useState = React.useState(
|
159
|
+
var _useState = React.useState(false),
|
151
160
|
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
152
161
|
formOpen = _useState2[0],
|
153
162
|
setFormOpen = _useState2[1];
|
163
|
+
var _useState3 = React.useState(false),
|
164
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
165
|
+
listOpen = _useState4[0],
|
166
|
+
setListOpen = _useState4[1];
|
154
167
|
|
155
168
|
// The text input search query
|
156
|
-
var
|
157
|
-
|
158
|
-
inputTextValue =
|
159
|
-
setInputTextValue =
|
169
|
+
var _useState5 = React.useState(''),
|
170
|
+
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
171
|
+
inputTextValue = _useState6[0],
|
172
|
+
setInputTextValue = _useState6[1];
|
160
173
|
var onInputChange = React.useCallback(function (textValue) {
|
161
174
|
setInputTextValue(textValue);
|
162
175
|
}, []);
|
163
176
|
|
164
177
|
// TODO: list state controls?
|
165
|
-
var
|
166
|
-
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
167
|
-
query = _useState6[0];
|
168
|
-
_useState6[1];
|
169
|
-
var _useState7 = React.useState(defaultPage),
|
178
|
+
var _useState7 = React.useState(initialQuery),
|
170
179
|
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
171
|
-
|
172
|
-
|
173
|
-
var _useState9 = React.useState(
|
180
|
+
query = _useState8[0];
|
181
|
+
_useState8[1];
|
182
|
+
var _useState9 = React.useState(defaultPage),
|
174
183
|
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
175
|
-
|
176
|
-
_useState10[1];
|
177
|
-
var _useState11 = React.useState(
|
184
|
+
page = _useState10[0],
|
185
|
+
setPage = _useState10[1];
|
186
|
+
var _useState11 = React.useState(defaultCount),
|
178
187
|
_useState12 = _slicedToArray__default["default"](_useState11, 2),
|
179
|
-
|
188
|
+
count = _useState12[0];
|
180
189
|
_useState12[1];
|
190
|
+
var _useState13 = React.useState(initialOptions),
|
191
|
+
_useState14 = _slicedToArray__default["default"](_useState13, 2),
|
192
|
+
resourceOptions = _useState14[0];
|
193
|
+
_useState14[1];
|
181
194
|
var queryResource = React.useMemo(function () {
|
182
195
|
return {
|
183
196
|
id: resourceId
|
@@ -216,13 +229,18 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
216
229
|
}
|
217
230
|
}, [paginated, page, setPage, lastPage]);
|
218
231
|
var getItemLabel = React.useCallback(function (it, path) {
|
219
|
-
var
|
232
|
+
var _ref4 = it || {},
|
233
|
+
_ref4$id = _ref4.id,
|
234
|
+
id = _ref4$id === void 0 ? null : _ref4$id;
|
220
235
|
if (itemLabelWithId) {
|
221
236
|
var label = initialGetItemLabel(it, path);
|
222
237
|
return label ? "".concat(label, " (#").concat(id, ")") : "#".concat(id);
|
223
238
|
}
|
224
239
|
return path !== null ? initialGetItemLabel(it, path) : "#".concat(id);
|
225
240
|
}, [initialGetItemLabel, itemLabelWithId]);
|
241
|
+
|
242
|
+
// const getItemLabel = getItemLabelFunction(initialGetItemLabel, itemLabelWithId);
|
243
|
+
|
226
244
|
var parseItem = React.useCallback(function (it) {
|
227
245
|
var label = getItemLabel(it, itemLabelPath);
|
228
246
|
var description = getItemDescription(it, itemDescriptionPath);
|
@@ -232,32 +250,32 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
232
250
|
label: finalLabel
|
233
251
|
};
|
234
252
|
}, [getItemLabel, getItemDescription, itemLabelPath, itemDescriptionPath]);
|
235
|
-
var finalValue = multiple && isArray__default["default"](value) ? value.map(function (
|
236
|
-
var
|
237
|
-
id =
|
253
|
+
var finalValue = multiple && isArray__default["default"](value) ? value.map(function (_ref5) {
|
254
|
+
var _ref5$id = _ref5.id,
|
255
|
+
id = _ref5$id === void 0 ? null : _ref5$id;
|
238
256
|
return id;
|
239
257
|
}) : (value === null || value === void 0 ? void 0 : value.id) || null;
|
240
|
-
var
|
258
|
+
var _ref6 = !multiple && hasValue ? value : {
|
241
259
|
type: resourceType
|
242
260
|
},
|
243
|
-
|
244
|
-
finalType =
|
261
|
+
_ref6$type = _ref6.type,
|
262
|
+
finalType = _ref6$type === void 0 ? null : _ref6$type;
|
245
263
|
var options = (items || []).map(function (it) {
|
246
264
|
return parseItem(it);
|
247
265
|
});
|
248
266
|
var onValueChange = React.useCallback(function (newId) {
|
249
267
|
if (onChange === null) return;
|
250
268
|
if (multiple) {
|
251
|
-
var newValue = items.filter(function (
|
252
|
-
var
|
253
|
-
id =
|
269
|
+
var newValue = items.filter(function (_ref7) {
|
270
|
+
var _ref7$id = _ref7.id,
|
271
|
+
id = _ref7$id === void 0 ? null : _ref7$id;
|
254
272
|
return newId.indexOf(id) !== -1;
|
255
273
|
}) || [];
|
256
274
|
onChange(newValue);
|
257
275
|
} else {
|
258
|
-
var _newValue = items.filter(function (
|
259
|
-
var
|
260
|
-
id =
|
276
|
+
var _newValue = items.filter(function (_ref8) {
|
277
|
+
var _ref8$id = _ref8.id,
|
278
|
+
id = _ref8$id === void 0 ? null : _ref8$id;
|
261
279
|
return id === newId;
|
262
280
|
}) || [];
|
263
281
|
if (_newValue !== null && _newValue.length > 0) {
|
@@ -279,12 +297,24 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
279
297
|
type: resourceType
|
280
298
|
}, newValue) : newValue;
|
281
299
|
if (multiple) {
|
282
|
-
onChange(
|
300
|
+
onChange(isArray__default["default"](value) ? [].concat(_toConsumableArray__default["default"](value), [finalNewValue]) : [finalNewValue]);
|
283
301
|
} else {
|
284
302
|
onChange(finalNewValue);
|
285
303
|
}
|
286
304
|
setFormOpen(false);
|
287
305
|
}, [onChange, multiple, value, setFormOpen, resourceType, paginated, initialPage]);
|
306
|
+
var onOpenList = React.useCallback(function () {
|
307
|
+
setListOpen(false); // TODO: fix this
|
308
|
+
}, [setListOpen]);
|
309
|
+
var onCloseList = React.useCallback(function () {
|
310
|
+
setListOpen(false);
|
311
|
+
}, [setListOpen]);
|
312
|
+
var onSelectListItem = React.useCallback(function (newValue) {
|
313
|
+
if (onChange !== null) {
|
314
|
+
onChange(newValue);
|
315
|
+
setListOpen(false);
|
316
|
+
}
|
317
|
+
}, [onChange, setListOpen]);
|
288
318
|
|
289
319
|
// If empty try to fetch
|
290
320
|
var onFocus = React.useCallback(function () {
|
@@ -316,7 +346,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
316
346
|
}) : null;
|
317
347
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
318
348
|
className: classNames__default["default"](['position-relative', _defineProperty__default["default"]({}, className, className != null)])
|
319
|
-
},
|
349
|
+
}, hasValue && !multiple ? /*#__PURE__*/React__default["default"].createElement("div", {
|
320
350
|
className: "row"
|
321
351
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
322
352
|
className: "col-10 flex-grow-1"
|
@@ -331,21 +361,15 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
331
361
|
itemImagePath: itemImagePath,
|
332
362
|
itemLabelWithId: itemLabelWithId,
|
333
363
|
disable: disabled,
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
}
|
338
|
-
theme: "primary",
|
339
|
-
icon: editButtonLabel === null ? 'pencil-square' : null,
|
340
|
-
onClick: formOpen ? onCloseForm : onOpenForm,
|
341
|
-
outline: true,
|
342
|
-
disabled: finalValue === null
|
343
|
-
}, editButtonLabel)) : null) : /*#__PURE__*/React__default["default"].createElement("div", {
|
364
|
+
onClickEdit: canEdit && !multiple ? formOpen ? onCloseForm : onOpenForm : null,
|
365
|
+
onClickRemove: onClickRemove,
|
366
|
+
editButtonLabel: editButtonLabel
|
367
|
+
}))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
344
368
|
className: "row align-items-center"
|
345
369
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
346
|
-
className: "col-
|
370
|
+
className: "col-8 flex-grow-1"
|
347
371
|
}, /*#__PURE__*/React__default["default"].createElement(Select__default["default"], {
|
348
|
-
className: classNames__default["default"](['py-1', 'shadow-none', (
|
372
|
+
className: classNames__default["default"](['py-1', 'shadow-none', (_ref10 = {}, _defineProperty__default["default"](_ref10, disabled, disabled), _defineProperty__default["default"](_ref10, 'is-invalid', errors !== null), _defineProperty__default["default"](_ref10, inputClassName, inputClassName !== null), _ref10)]),
|
349
373
|
disabled: disabled,
|
350
374
|
name: name,
|
351
375
|
value: finalValue,
|
@@ -364,7 +388,14 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
364
388
|
onFocus: onFocus,
|
365
389
|
onMenuScrollToBottom: onScrollEnd,
|
366
390
|
multiple: multiple
|
367
|
-
})),
|
391
|
+
})), canFind ? /*#__PURE__*/React__default["default"].createElement("div", {
|
392
|
+
className: "col-auto"
|
393
|
+
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
394
|
+
theme: "primary",
|
395
|
+
icon: findButtonLabel === null ? 'search' : null,
|
396
|
+
onClick: listOpen ? onCloseList : onOpenList,
|
397
|
+
outline: true
|
398
|
+
}, findButtonLabel)) : null, canCreate ? /*#__PURE__*/React__default["default"].createElement("div", {
|
368
399
|
className: "col-auto"
|
369
400
|
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
370
401
|
theme: "primary",
|
@@ -374,7 +405,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
374
405
|
}, createButtonLabel)) : null), formOpen ? withoutModal ? /*#__PURE__*/React__default["default"].createElement("div", {
|
375
406
|
className: "card mt-4 p-4"
|
376
407
|
}, form) : /*#__PURE__*/React__default["default"].createElement(Dialog__default["default"], {
|
377
|
-
title:
|
408
|
+
title: hasValue && !multiple ? /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
378
409
|
values: resourceValues,
|
379
410
|
id: "mCfzkJ",
|
380
411
|
defaultMessage: [{
|
@@ -397,7 +428,16 @@ var ResourceItemField = function ResourceItemField(_ref) {
|
|
397
428
|
}),
|
398
429
|
size: "lg",
|
399
430
|
onClose: onCloseForm
|
400
|
-
}, form) : null
|
431
|
+
}, form) : null, listOpen ? /*#__PURE__*/React__default["default"].createElement(ResourceItemsModal__default["default"], {
|
432
|
+
resource: resourceId,
|
433
|
+
onClose: onCloseList,
|
434
|
+
listProps: {
|
435
|
+
actions: ['select'],
|
436
|
+
actionsProps: {
|
437
|
+
onClickSelect: onSelectListItem
|
438
|
+
}
|
439
|
+
}
|
440
|
+
}) : null);
|
401
441
|
};
|
402
442
|
ResourceItemField.propTypes = propTypes;
|
403
443
|
ResourceItemField.defaultProps = defaultProps;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/field-resource-item",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.80",
|
4
4
|
"description": "An item mapping a resource",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -48,7 +48,7 @@
|
|
48
48
|
"@panneau/core": "^2.0.75",
|
49
49
|
"@panneau/data": "^2.0.75",
|
50
50
|
"@panneau/element-button": "^2.0.75",
|
51
|
-
"@panneau/element-resource-card": "^2.0.
|
51
|
+
"@panneau/element-resource-card": "^2.0.80",
|
52
52
|
"@panneau/element-select": "^2.0.75",
|
53
53
|
"@panneau/form-resource": "^2.0.79",
|
54
54
|
"@panneau/intl": "^2.0.79",
|
@@ -61,5 +61,5 @@
|
|
61
61
|
"publishConfig": {
|
62
62
|
"access": "public"
|
63
63
|
},
|
64
|
-
"gitHead": "
|
64
|
+
"gitHead": "5ffbad88f5db131e4352f171cdee8a77a75a7572"
|
65
65
|
}
|