@panneau/field-resource-item 2.0.66 → 2.0.68

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 +51 -21
  2. package/lib/index.js +52 -21
  3. package/package.json +7 -5
package/es/index.js CHANGED
@@ -14,6 +14,7 @@ import { usePanneauResource } from '@panneau/core/contexts';
14
14
  import { isMessage, getPathValue } from '@panneau/core/utils';
15
15
  import { useResourceItems } from '@panneau/data';
16
16
  import Button from '@panneau/element-button';
17
+ import ResourceCard from '@panneau/element-resource-card';
17
18
  import Select from '@panneau/element-select';
18
19
  import ResourceForm from '@panneau/form-resource';
19
20
  import { useResourceValues } from '@panneau/intl';
@@ -43,6 +44,7 @@ var propTypes = {
43
44
  itemLabelWithId: PropTypes.bool,
44
45
  placeholder: PropTypes.string,
45
46
  canCreate: PropTypes.bool,
47
+ createInPlace: PropTypes.bool,
46
48
  multiple: PropTypes.bool,
47
49
  disabled: PropTypes.bool,
48
50
  className: PropTypes.string,
@@ -68,6 +70,7 @@ var defaultProps = {
68
70
  itemLabelWithId: false,
69
71
  placeholder: null,
70
72
  canCreate: false,
73
+ createInPlace: false,
71
74
  multiple: false,
72
75
  disabled: false,
73
76
  className: null,
@@ -75,7 +78,7 @@ var defaultProps = {
75
78
  onChange: null
76
79
  };
77
80
  var ResourceItemField = function ResourceItemField(_ref) {
78
- var _ref8;
81
+ var _ref9;
79
82
  var name = _ref.name,
80
83
  value = _ref.value,
81
84
  errors = _ref.errors,
@@ -92,6 +95,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
92
95
  itemLabelWithId = _ref.itemLabelWithId,
93
96
  placeholder = _ref.placeholder,
94
97
  canCreate = _ref.canCreate,
98
+ createInPlace = _ref.createInPlace,
95
99
  multiple = _ref.multiple,
96
100
  disabled = _ref.disabled,
97
101
  className = _ref.className,
@@ -135,19 +139,26 @@ var ResourceItemField = function ResourceItemField(_ref) {
135
139
  };
136
140
  }, [resourceId]);
137
141
  var finalQuery = useMemo(function () {
138
- return _objectSpread(_objectSpread({}, query), !isEmpty(inputTextValue) ? _defineProperty({}, searchParamName, inputTextValue) : null);
142
+ return _objectSpread(_objectSpread(_objectSpread({}, query), !isEmpty(inputTextValue) ? _defineProperty({}, searchParamName, inputTextValue) : null), {}, {
143
+ paginated: false // TODO: implement this hahahaha
144
+ });
139
145
  }, [inputTextValue]);
146
+
147
+ // console.log('resource', resourceId, resource);
148
+ // console.log('value', value);
149
+
140
150
  var resourceItems = useResourceItems(queryResource, finalQuery, page, count, resourceOptions);
141
151
  var _ref3 = resourceItems || {},
142
- _ref3$data = _ref3.data,
143
- responseItems = _ref3$data === void 0 ? null : _ref3$data;
152
+ _ref3$items = _ref3.items,
153
+ responseItems = _ref3$items === void 0 ? null : _ref3$items;
144
154
  var _ref4 = value || {},
145
155
  _ref4$id = _ref4.id,
146
156
  valueId = _ref4$id === void 0 ? null : _ref4$id;
147
157
  var filteredItems = responseItems !== null && valueId !== null ? responseItems.filter(function (it) {
148
158
  return it !== null && it.id ? it.id !== valueId : true;
149
159
  }) : responseItems || [];
150
- var items = [].concat(_toConsumableArray(filteredItems), _toConsumableArray(value !== null ? value : []));
160
+ var arrayedValue = multiple ? value : [value];
161
+ var items = [].concat(_toConsumableArray(filteredItems), _toConsumableArray(value !== null ? arrayedValue : []));
151
162
  var getItemLabel = useCallback(function (it, path) {
152
163
  var id = get(it, 'id', null);
153
164
  if (itemLabelWithId) {
@@ -168,25 +179,32 @@ var ResourceItemField = function ResourceItemField(_ref) {
168
179
  var options = (items || []).map(function (it) {
169
180
  return parseItem(it);
170
181
  });
171
- var finalValue = multiple && isArray(value) ? value.map(function (it) {
182
+ var partialValue = multiple && isArray(value) ? value.map(function (it) {
172
183
  return parseItem(it);
173
- }) : value;
184
+ }) : value || null;
185
+ var finalValue = multiple && isArray(partialValue) ? partialValue.map(function (_ref5) {
186
+ var _ref5$id = _ref5.id,
187
+ id = _ref5$id === void 0 ? null : _ref5$id;
188
+ return id;
189
+ }) : value === null || value === void 0 ? void 0 : value.id;
190
+ // console.log('ultimate', options, finalValue);
191
+
174
192
  var onInputChange = useCallback(function (textValue) {
175
193
  setInputTextValue(textValue);
176
194
  }, []);
177
195
  var onValueChange = useCallback(function (newId) {
178
196
  if (onChange === null) return;
179
197
  if (multiple) {
180
- var newValue = items.filter(function (_ref5) {
181
- var _ref5$id = _ref5.id,
182
- id = _ref5$id === void 0 ? null : _ref5$id;
198
+ var newValue = items.filter(function (_ref6) {
199
+ var _ref6$id = _ref6.id,
200
+ id = _ref6$id === void 0 ? null : _ref6$id;
183
201
  return newId.indexOf(id) !== -1;
184
202
  }) || [];
185
203
  onChange(newValue);
186
204
  } else {
187
- var _newValue = items.filter(function (_ref6) {
188
- var _ref6$id = _ref6.id,
189
- id = _ref6$id === void 0 ? null : _ref6$id;
205
+ var _newValue = items.filter(function (_ref7) {
206
+ var _ref7$id = _ref7.id,
207
+ id = _ref7$id === void 0 ? null : _ref7$id;
190
208
  return id === newId;
191
209
  }) || [];
192
210
  if (_newValue !== null && _newValue.length > 0) {
@@ -203,18 +221,26 @@ var ResourceItemField = function ResourceItemField(_ref) {
203
221
  setCreateOpen(false);
204
222
  }, [setCreateOpen]);
205
223
  var onCreateSuccess = useCallback(function (newValue) {
206
- onChange(newValue);
207
- setCreateOpen(false);
208
- // setInputTextValue('');
209
- }, [onChange]);
224
+ // console.log('newValue', newValue);
225
+ if (multiple) {
226
+ onChange(value !== null && isArray(value) ? [].concat(_toConsumableArray(value), [newValue]) : [newValue]);
227
+ } else {
228
+ onChange(newValue);
229
+ }
230
+ setTimeout(function () {
231
+ setCreateOpen(false);
232
+ }, 1000);
233
+ }, [onChange, multiple, value]);
210
234
  return /*#__PURE__*/React.createElement("div", {
211
235
  className: classNames(['position-relative', _defineProperty({}, className, className != null)])
212
- }, /*#__PURE__*/React.createElement("div", {
236
+ }, value !== null && !multiple ? /*#__PURE__*/React.createElement(ResourceCard, {
237
+ item: value
238
+ }) : /*#__PURE__*/React.createElement("div", {
213
239
  className: classNames(['row', 'align-items-center'])
214
240
  }, /*#__PURE__*/React.createElement("div", {
215
241
  className: "col-auto flex-grow-1"
216
242
  }, /*#__PURE__*/React.createElement(Select, {
217
- className: classNames(['py-1', 'shadow-none', (_ref8 = {}, _defineProperty(_ref8, disabled, disabled), _defineProperty(_ref8, 'is-invalid', errors !== null), _defineProperty(_ref8, inputClassName, inputClassName !== null), _ref8)]),
243
+ className: classNames(['py-1', 'shadow-none', (_ref9 = {}, _defineProperty(_ref9, disabled, disabled), _defineProperty(_ref9, 'is-invalid', errors !== null), _defineProperty(_ref9, inputClassName, inputClassName !== null), _ref9)]),
218
244
  disabled: disabled,
219
245
  name: name,
220
246
  value: finalValue,
@@ -236,8 +262,12 @@ var ResourceItemField = function ResourceItemField(_ref) {
236
262
  }, /*#__PURE__*/React.createElement(Button, {
237
263
  theme: "primary",
238
264
  icon: "plus-lg",
239
- onClick: createOpen ? onCloseCreate : onOpenCreate
240
- })) : null, createOpen ? /*#__PURE__*/React.createElement(Dialog, {
265
+ onClick: createOpen ? onCloseCreate : onOpenCreate,
266
+ outline: true
267
+ })) : null, createOpen ? createInPlace ? /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ResourceForm, {
268
+ resource: resource,
269
+ onSuccess: onCreateSuccess
270
+ })) : /*#__PURE__*/React.createElement(Dialog, {
241
271
  title: /*#__PURE__*/React.createElement(FormattedMessage, {
242
272
  values: resourceValues,
243
273
  id: "6viUpq",
package/lib/index.js CHANGED
@@ -18,6 +18,7 @@ var contexts = require('@panneau/core/contexts');
18
18
  var utils = require('@panneau/core/utils');
19
19
  var data = require('@panneau/data');
20
20
  var Button = require('@panneau/element-button');
21
+ var ResourceCard = require('@panneau/element-resource-card');
21
22
  var Select = require('@panneau/element-select');
22
23
  var ResourceForm = require('@panneau/form-resource');
23
24
  var intl = require('@panneau/intl');
@@ -36,6 +37,7 @@ var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
36
37
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
37
38
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
38
39
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
40
+ var ResourceCard__default = /*#__PURE__*/_interopDefaultLegacy(ResourceCard);
39
41
  var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
40
42
  var ResourceForm__default = /*#__PURE__*/_interopDefaultLegacy(ResourceForm);
41
43
  var Dialog__default = /*#__PURE__*/_interopDefaultLegacy(Dialog);
@@ -64,6 +66,7 @@ var propTypes = {
64
66
  itemLabelWithId: PropTypes__default["default"].bool,
65
67
  placeholder: PropTypes__default["default"].string,
66
68
  canCreate: PropTypes__default["default"].bool,
69
+ createInPlace: PropTypes__default["default"].bool,
67
70
  multiple: PropTypes__default["default"].bool,
68
71
  disabled: PropTypes__default["default"].bool,
69
72
  className: PropTypes__default["default"].string,
@@ -89,6 +92,7 @@ var defaultProps = {
89
92
  itemLabelWithId: false,
90
93
  placeholder: null,
91
94
  canCreate: false,
95
+ createInPlace: false,
92
96
  multiple: false,
93
97
  disabled: false,
94
98
  className: null,
@@ -96,7 +100,7 @@ var defaultProps = {
96
100
  onChange: null
97
101
  };
98
102
  var ResourceItemField = function ResourceItemField(_ref) {
99
- var _ref8;
103
+ var _ref9;
100
104
  var name = _ref.name,
101
105
  value = _ref.value,
102
106
  errors = _ref.errors,
@@ -113,6 +117,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
113
117
  itemLabelWithId = _ref.itemLabelWithId,
114
118
  placeholder = _ref.placeholder,
115
119
  canCreate = _ref.canCreate,
120
+ createInPlace = _ref.createInPlace,
116
121
  multiple = _ref.multiple,
117
122
  disabled = _ref.disabled,
118
123
  className = _ref.className,
@@ -156,19 +161,26 @@ var ResourceItemField = function ResourceItemField(_ref) {
156
161
  };
157
162
  }, [resourceId]);
158
163
  var finalQuery = React.useMemo(function () {
159
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, query), !isEmpty__default["default"](inputTextValue) ? _defineProperty__default["default"]({}, searchParamName, inputTextValue) : null);
164
+ return _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, query), !isEmpty__default["default"](inputTextValue) ? _defineProperty__default["default"]({}, searchParamName, inputTextValue) : null), {}, {
165
+ paginated: false // TODO: implement this hahahaha
166
+ });
160
167
  }, [inputTextValue]);
168
+
169
+ // console.log('resource', resourceId, resource);
170
+ // console.log('value', value);
171
+
161
172
  var resourceItems = data.useResourceItems(queryResource, finalQuery, page, count, resourceOptions);
162
173
  var _ref3 = resourceItems || {},
163
- _ref3$data = _ref3.data,
164
- responseItems = _ref3$data === void 0 ? null : _ref3$data;
174
+ _ref3$items = _ref3.items,
175
+ responseItems = _ref3$items === void 0 ? null : _ref3$items;
165
176
  var _ref4 = value || {},
166
177
  _ref4$id = _ref4.id,
167
178
  valueId = _ref4$id === void 0 ? null : _ref4$id;
168
179
  var filteredItems = responseItems !== null && valueId !== null ? responseItems.filter(function (it) {
169
180
  return it !== null && it.id ? it.id !== valueId : true;
170
181
  }) : responseItems || [];
171
- var items = [].concat(_toConsumableArray__default["default"](filteredItems), _toConsumableArray__default["default"](value !== null ? value : []));
182
+ var arrayedValue = multiple ? value : [value];
183
+ var items = [].concat(_toConsumableArray__default["default"](filteredItems), _toConsumableArray__default["default"](value !== null ? arrayedValue : []));
172
184
  var getItemLabel = React.useCallback(function (it, path) {
173
185
  var id = get__default["default"](it, 'id', null);
174
186
  if (itemLabelWithId) {
@@ -189,25 +201,32 @@ var ResourceItemField = function ResourceItemField(_ref) {
189
201
  var options = (items || []).map(function (it) {
190
202
  return parseItem(it);
191
203
  });
192
- var finalValue = multiple && isArray__default["default"](value) ? value.map(function (it) {
204
+ var partialValue = multiple && isArray__default["default"](value) ? value.map(function (it) {
193
205
  return parseItem(it);
194
- }) : value;
206
+ }) : value || null;
207
+ var finalValue = multiple && isArray__default["default"](partialValue) ? partialValue.map(function (_ref5) {
208
+ var _ref5$id = _ref5.id,
209
+ id = _ref5$id === void 0 ? null : _ref5$id;
210
+ return id;
211
+ }) : value === null || value === void 0 ? void 0 : value.id;
212
+ // console.log('ultimate', options, finalValue);
213
+
195
214
  var onInputChange = React.useCallback(function (textValue) {
196
215
  setInputTextValue(textValue);
197
216
  }, []);
198
217
  var onValueChange = React.useCallback(function (newId) {
199
218
  if (onChange === null) return;
200
219
  if (multiple) {
201
- var newValue = items.filter(function (_ref5) {
202
- var _ref5$id = _ref5.id,
203
- id = _ref5$id === void 0 ? null : _ref5$id;
220
+ var newValue = items.filter(function (_ref6) {
221
+ var _ref6$id = _ref6.id,
222
+ id = _ref6$id === void 0 ? null : _ref6$id;
204
223
  return newId.indexOf(id) !== -1;
205
224
  }) || [];
206
225
  onChange(newValue);
207
226
  } else {
208
- var _newValue = items.filter(function (_ref6) {
209
- var _ref6$id = _ref6.id,
210
- id = _ref6$id === void 0 ? null : _ref6$id;
227
+ var _newValue = items.filter(function (_ref7) {
228
+ var _ref7$id = _ref7.id,
229
+ id = _ref7$id === void 0 ? null : _ref7$id;
211
230
  return id === newId;
212
231
  }) || [];
213
232
  if (_newValue !== null && _newValue.length > 0) {
@@ -224,18 +243,26 @@ var ResourceItemField = function ResourceItemField(_ref) {
224
243
  setCreateOpen(false);
225
244
  }, [setCreateOpen]);
226
245
  var onCreateSuccess = React.useCallback(function (newValue) {
227
- onChange(newValue);
228
- setCreateOpen(false);
229
- // setInputTextValue('');
230
- }, [onChange]);
246
+ // console.log('newValue', newValue);
247
+ if (multiple) {
248
+ onChange(value !== null && isArray__default["default"](value) ? [].concat(_toConsumableArray__default["default"](value), [newValue]) : [newValue]);
249
+ } else {
250
+ onChange(newValue);
251
+ }
252
+ setTimeout(function () {
253
+ setCreateOpen(false);
254
+ }, 1000);
255
+ }, [onChange, multiple, value]);
231
256
  return /*#__PURE__*/React__default["default"].createElement("div", {
232
257
  className: classNames__default["default"](['position-relative', _defineProperty__default["default"]({}, className, className != null)])
233
- }, /*#__PURE__*/React__default["default"].createElement("div", {
258
+ }, value !== null && !multiple ? /*#__PURE__*/React__default["default"].createElement(ResourceCard__default["default"], {
259
+ item: value
260
+ }) : /*#__PURE__*/React__default["default"].createElement("div", {
234
261
  className: classNames__default["default"](['row', 'align-items-center'])
235
262
  }, /*#__PURE__*/React__default["default"].createElement("div", {
236
263
  className: "col-auto flex-grow-1"
237
264
  }, /*#__PURE__*/React__default["default"].createElement(Select__default["default"], {
238
- className: classNames__default["default"](['py-1', 'shadow-none', (_ref8 = {}, _defineProperty__default["default"](_ref8, disabled, disabled), _defineProperty__default["default"](_ref8, 'is-invalid', errors !== null), _defineProperty__default["default"](_ref8, inputClassName, inputClassName !== null), _ref8)]),
265
+ className: classNames__default["default"](['py-1', 'shadow-none', (_ref9 = {}, _defineProperty__default["default"](_ref9, disabled, disabled), _defineProperty__default["default"](_ref9, 'is-invalid', errors !== null), _defineProperty__default["default"](_ref9, inputClassName, inputClassName !== null), _ref9)]),
239
266
  disabled: disabled,
240
267
  name: name,
241
268
  value: finalValue,
@@ -257,8 +284,12 @@ var ResourceItemField = function ResourceItemField(_ref) {
257
284
  }, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
258
285
  theme: "primary",
259
286
  icon: "plus-lg",
260
- onClick: createOpen ? onCloseCreate : onOpenCreate
261
- })) : null, createOpen ? /*#__PURE__*/React__default["default"].createElement(Dialog__default["default"], {
287
+ onClick: createOpen ? onCloseCreate : onOpenCreate,
288
+ outline: true
289
+ })) : null, createOpen ? createInPlace ? /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(ResourceForm__default["default"], {
290
+ resource: resource,
291
+ onSuccess: onCreateSuccess
292
+ })) : /*#__PURE__*/React__default["default"].createElement(Dialog__default["default"], {
262
293
  title: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
263
294
  values: resourceValues,
264
295
  id: "6viUpq",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/field-resource-item",
3
- "version": "2.0.66",
3
+ "version": "2.0.68",
4
4
  "description": "An item mapping a resource",
5
5
  "keywords": [
6
6
  "javascript"
@@ -48,10 +48,12 @@
48
48
  "@panneau/core": "^2.0.58",
49
49
  "@panneau/data": "^2.0.58",
50
50
  "@panneau/element-button": "^2.0.59",
51
+ "@panneau/element-modal": "^2.0.58",
52
+ "@panneau/element-resource-card": "^2.0.68",
51
53
  "@panneau/element-select": "^2.0.58",
52
- "@panneau/form-resource": "^2.0.58",
53
- "@panneau/intl": "^2.0.58",
54
- "@panneau/modal-dialog": "^2.0.65",
54
+ "@panneau/form-resource": "^2.0.68",
55
+ "@panneau/intl": "^2.0.68",
56
+ "@panneau/modal-dialog": "^2.0.68",
55
57
  "classnames": "^2.2.6",
56
58
  "lodash": "^4.17.21",
57
59
  "prop-types": "^15.7.2",
@@ -60,5 +62,5 @@
60
62
  "publishConfig": {
61
63
  "access": "public"
62
64
  },
63
- "gitHead": "c4bdabed61ebb59f383ced1055d859a4a331dfa4"
65
+ "gitHead": "7f91dc52ac77f545d1438dd2d612845bfd445522"
64
66
  }