@panneau/field-resource-item 2.0.59 → 2.0.65

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 +43 -16
  2. package/lib/index.js +47 -18
  3. package/package.json +5 -2
package/es/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
1
2
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
3
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
3
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
@@ -14,6 +15,8 @@ import { isMessage, getPathValue } from '@panneau/core/utils';
14
15
  import { useResourceItems } from '@panneau/data';
15
16
  import Button from '@panneau/element-button';
16
17
  import Select from '@panneau/element-select';
18
+ import ResourceForm from '@panneau/form-resource';
19
+ import { useResourceValues } from '@panneau/intl';
17
20
  import Dialog from '@panneau/modal-dialog';
18
21
 
19
22
  var propTypes = {
@@ -72,7 +75,7 @@ var defaultProps = {
72
75
  onChange: null
73
76
  };
74
77
  var ResourceItemField = function ResourceItemField(_ref) {
75
- var _ref7;
78
+ var _ref8;
76
79
  var name = _ref.name,
77
80
  value = _ref.value,
78
81
  errors = _ref.errors,
@@ -124,9 +127,9 @@ var ResourceItemField = function ResourceItemField(_ref) {
124
127
  _useState12 = _slicedToArray(_useState11, 2),
125
128
  inputTextValue = _useState12[0],
126
129
  setInputTextValue = _useState12[1];
127
- var completeResource = usePanneauResource(resourceId);
128
- console.log(resourceId, completeResource);
129
- var resource = useMemo(function () {
130
+ var resource = usePanneauResource(resourceId);
131
+ var resourceValues = useResourceValues(resource);
132
+ var queryResource = useMemo(function () {
130
133
  return {
131
134
  id: resourceId
132
135
  };
@@ -134,10 +137,17 @@ var ResourceItemField = function ResourceItemField(_ref) {
134
137
  var finalQuery = useMemo(function () {
135
138
  return _objectSpread(_objectSpread({}, query), !isEmpty(inputTextValue) ? _defineProperty({}, searchParamName, inputTextValue) : null);
136
139
  }, [inputTextValue]);
137
- var resourceItems = useResourceItems(resource, finalQuery, page, count, resourceOptions);
140
+ var resourceItems = useResourceItems(queryResource, finalQuery, page, count, resourceOptions);
138
141
  var _ref3 = resourceItems || {},
139
142
  _ref3$items = _ref3.items,
140
- items = _ref3$items === void 0 ? null : _ref3$items;
143
+ responseItems = _ref3$items === void 0 ? null : _ref3$items;
144
+ var _ref4 = value || {},
145
+ _ref4$id = _ref4.id,
146
+ valueId = _ref4$id === void 0 ? null : _ref4$id;
147
+ var filteredItems = responseItems !== null && valueId !== null ? responseItems.filter(function (it) {
148
+ return it !== null && it.id ? it.id !== valueId : true;
149
+ }) : responseItems || [];
150
+ var items = [].concat(_toConsumableArray(filteredItems), _toConsumableArray(value !== null ? value : []));
141
151
  var getItemLabel = useCallback(function (it, path) {
142
152
  var id = get(it, 'id', null);
143
153
  if (itemLabelWithId) {
@@ -167,16 +177,16 @@ var ResourceItemField = function ResourceItemField(_ref) {
167
177
  var onValueChange = useCallback(function (newId) {
168
178
  if (onChange === null) return;
169
179
  if (multiple) {
170
- var newValue = items.filter(function (_ref4) {
171
- var _ref4$id = _ref4.id,
172
- id = _ref4$id === void 0 ? null : _ref4$id;
180
+ var newValue = items.filter(function (_ref5) {
181
+ var _ref5$id = _ref5.id,
182
+ id = _ref5$id === void 0 ? null : _ref5$id;
173
183
  return newId.indexOf(id) !== -1;
174
184
  }) || [];
175
185
  onChange(newValue);
176
186
  } else {
177
- var _newValue = items.filter(function (_ref5) {
178
- var _ref5$id = _ref5.id,
179
- id = _ref5$id === void 0 ? null : _ref5$id;
187
+ var _newValue = items.filter(function (_ref6) {
188
+ var _ref6$id = _ref6.id,
189
+ id = _ref6$id === void 0 ? null : _ref6$id;
180
190
  return id === newId;
181
191
  }) || [];
182
192
  if (_newValue !== null && _newValue.length > 0) {
@@ -192,6 +202,11 @@ var ResourceItemField = function ResourceItemField(_ref) {
192
202
  var onCloseCreate = useCallback(function () {
193
203
  setCreateOpen(false);
194
204
  }, [setCreateOpen]);
205
+ var onCreateSuccess = useCallback(function (newValue) {
206
+ onChange(newValue);
207
+ setCreateOpen(false);
208
+ setInputTextValue('');
209
+ }, [onChange]);
195
210
  return /*#__PURE__*/React.createElement("div", {
196
211
  className: classNames(['position-relative', _defineProperty({}, className, className != null)])
197
212
  }, /*#__PURE__*/React.createElement("div", {
@@ -199,7 +214,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
199
214
  }, /*#__PURE__*/React.createElement("div", {
200
215
  className: "col-auto flex-grow-1"
201
216
  }, /*#__PURE__*/React.createElement(Select, {
202
- className: classNames(['py-1', 'shadow-none', (_ref7 = {}, _defineProperty(_ref7, disabled, disabled), _defineProperty(_ref7, 'is-invalid', errors !== null), _defineProperty(_ref7, inputClassName, inputClassName !== null), _ref7)]),
217
+ className: classNames(['py-1', 'shadow-none', (_ref8 = {}, _defineProperty(_ref8, disabled, disabled), _defineProperty(_ref8, 'is-invalid', errors !== null), _defineProperty(_ref8, inputClassName, inputClassName !== null), _ref8)]),
203
218
  disabled: disabled,
204
219
  name: name,
205
220
  value: finalValue,
@@ -223,10 +238,22 @@ var ResourceItemField = function ResourceItemField(_ref) {
223
238
  icon: "plus-lg",
224
239
  onClick: createOpen ? onCloseCreate : onOpenCreate
225
240
  })) : null, createOpen ? /*#__PURE__*/React.createElement(Dialog, {
241
+ title: /*#__PURE__*/React.createElement(FormattedMessage, {
242
+ values: resourceValues,
243
+ id: "6viUpq",
244
+ defaultMessage: [{
245
+ "type": 0,
246
+ "value": "Create "
247
+ }, {
248
+ "type": 1,
249
+ "value": "a_singular"
250
+ }]
251
+ }),
226
252
  onClickClose: onCloseCreate
227
- }, /*#__PURE__*/React.createElement("div", {
228
- className: "card p-2"
229
- }, /*#__PURE__*/React.createElement("div", null, "My create Modale"))) : null));
253
+ }, /*#__PURE__*/React.createElement(ResourceForm, {
254
+ resource: resource,
255
+ onSuccess: onCreateSuccess
256
+ })) : null));
230
257
  };
231
258
  ResourceItemField.propTypes = propTypes;
232
259
  ResourceItemField.defaultProps = defaultProps;
package/lib/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
5
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
7
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
7
8
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
@@ -18,10 +19,13 @@ var utils = require('@panneau/core/utils');
18
19
  var data = require('@panneau/data');
19
20
  var Button = require('@panneau/element-button');
20
21
  var Select = require('@panneau/element-select');
22
+ var ResourceForm = require('@panneau/form-resource');
23
+ var intl = require('@panneau/intl');
21
24
  var Dialog = require('@panneau/modal-dialog');
22
25
 
23
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
27
 
28
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
25
29
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
26
30
  var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
27
31
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
@@ -33,6 +37,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
33
37
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
38
  var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
35
39
  var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
40
+ var ResourceForm__default = /*#__PURE__*/_interopDefaultLegacy(ResourceForm);
36
41
  var Dialog__default = /*#__PURE__*/_interopDefaultLegacy(Dialog);
37
42
 
38
43
  var propTypes = {
@@ -91,7 +96,7 @@ var defaultProps = {
91
96
  onChange: null
92
97
  };
93
98
  var ResourceItemField = function ResourceItemField(_ref) {
94
- var _ref7;
99
+ var _ref8;
95
100
  var name = _ref.name,
96
101
  value = _ref.value,
97
102
  errors = _ref.errors,
@@ -113,7 +118,7 @@ var ResourceItemField = function ResourceItemField(_ref) {
113
118
  className = _ref.className,
114
119
  inputClassName = _ref.inputClassName,
115
120
  onChange = _ref.onChange;
116
- var intl = reactIntl.useIntl();
121
+ var intl$1 = reactIntl.useIntl();
117
122
  // const [initialValue] = useState(value);
118
123
  var _useState = React.useState(initialQuery),
119
124
  _useState2 = _slicedToArray__default["default"](_useState, 2),
@@ -143,9 +148,9 @@ var ResourceItemField = function ResourceItemField(_ref) {
143
148
  _useState12 = _slicedToArray__default["default"](_useState11, 2),
144
149
  inputTextValue = _useState12[0],
145
150
  setInputTextValue = _useState12[1];
146
- var completeResource = contexts.usePanneauResource(resourceId);
147
- console.log(resourceId, completeResource);
148
- var resource = React.useMemo(function () {
151
+ var resource = contexts.usePanneauResource(resourceId);
152
+ var resourceValues = intl.useResourceValues(resource);
153
+ var queryResource = React.useMemo(function () {
149
154
  return {
150
155
  id: resourceId
151
156
  };
@@ -153,10 +158,17 @@ var ResourceItemField = function ResourceItemField(_ref) {
153
158
  var finalQuery = React.useMemo(function () {
154
159
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, query), !isEmpty__default["default"](inputTextValue) ? _defineProperty__default["default"]({}, searchParamName, inputTextValue) : null);
155
160
  }, [inputTextValue]);
156
- var resourceItems = data.useResourceItems(resource, finalQuery, page, count, resourceOptions);
161
+ var resourceItems = data.useResourceItems(queryResource, finalQuery, page, count, resourceOptions);
157
162
  var _ref3 = resourceItems || {},
158
163
  _ref3$items = _ref3.items,
159
- items = _ref3$items === void 0 ? null : _ref3$items;
164
+ responseItems = _ref3$items === void 0 ? null : _ref3$items;
165
+ var _ref4 = value || {},
166
+ _ref4$id = _ref4.id,
167
+ valueId = _ref4$id === void 0 ? null : _ref4$id;
168
+ var filteredItems = responseItems !== null && valueId !== null ? responseItems.filter(function (it) {
169
+ return it !== null && it.id ? it.id !== valueId : true;
170
+ }) : responseItems || [];
171
+ var items = [].concat(_toConsumableArray__default["default"](filteredItems), _toConsumableArray__default["default"](value !== null ? value : []));
160
172
  var getItemLabel = React.useCallback(function (it, path) {
161
173
  var id = get__default["default"](it, 'id', null);
162
174
  if (itemLabelWithId) {
@@ -186,16 +198,16 @@ var ResourceItemField = function ResourceItemField(_ref) {
186
198
  var onValueChange = React.useCallback(function (newId) {
187
199
  if (onChange === null) return;
188
200
  if (multiple) {
189
- var newValue = items.filter(function (_ref4) {
190
- var _ref4$id = _ref4.id,
191
- id = _ref4$id === void 0 ? null : _ref4$id;
201
+ var newValue = items.filter(function (_ref5) {
202
+ var _ref5$id = _ref5.id,
203
+ id = _ref5$id === void 0 ? null : _ref5$id;
192
204
  return newId.indexOf(id) !== -1;
193
205
  }) || [];
194
206
  onChange(newValue);
195
207
  } else {
196
- var _newValue = items.filter(function (_ref5) {
197
- var _ref5$id = _ref5.id,
198
- id = _ref5$id === void 0 ? null : _ref5$id;
208
+ var _newValue = items.filter(function (_ref6) {
209
+ var _ref6$id = _ref6.id,
210
+ id = _ref6$id === void 0 ? null : _ref6$id;
199
211
  return id === newId;
200
212
  }) || [];
201
213
  if (_newValue !== null && _newValue.length > 0) {
@@ -211,6 +223,11 @@ var ResourceItemField = function ResourceItemField(_ref) {
211
223
  var onCloseCreate = React.useCallback(function () {
212
224
  setCreateOpen(false);
213
225
  }, [setCreateOpen]);
226
+ var onCreateSuccess = React.useCallback(function (newValue) {
227
+ onChange(newValue);
228
+ setCreateOpen(false);
229
+ setInputTextValue('');
230
+ }, [onChange]);
214
231
  return /*#__PURE__*/React__default["default"].createElement("div", {
215
232
  className: classNames__default["default"](['position-relative', _defineProperty__default["default"]({}, className, className != null)])
216
233
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -218,14 +235,14 @@ var ResourceItemField = function ResourceItemField(_ref) {
218
235
  }, /*#__PURE__*/React__default["default"].createElement("div", {
219
236
  className: "col-auto flex-grow-1"
220
237
  }, /*#__PURE__*/React__default["default"].createElement(Select__default["default"], {
221
- className: classNames__default["default"](['py-1', 'shadow-none', (_ref7 = {}, _defineProperty__default["default"](_ref7, disabled, disabled), _defineProperty__default["default"](_ref7, 'is-invalid', errors !== null), _defineProperty__default["default"](_ref7, inputClassName, inputClassName !== null), _ref7)]),
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)]),
222
239
  disabled: disabled,
223
240
  name: name,
224
241
  value: finalValue,
225
242
  options: options,
226
243
  isClearable: true,
227
244
  isSearchable: true,
228
- placeholder: utils.isMessage(placeholder) ? intl.formatMessage(placeholder) : /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
245
+ placeholder: utils.isMessage(placeholder) ? intl$1.formatMessage(placeholder) : /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
229
246
  id: "oc3YLT",
230
247
  defaultMessage: [{
231
248
  "type": 0,
@@ -242,10 +259,22 @@ var ResourceItemField = function ResourceItemField(_ref) {
242
259
  icon: "plus-lg",
243
260
  onClick: createOpen ? onCloseCreate : onOpenCreate
244
261
  })) : null, createOpen ? /*#__PURE__*/React__default["default"].createElement(Dialog__default["default"], {
262
+ title: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
263
+ values: resourceValues,
264
+ id: "6viUpq",
265
+ defaultMessage: [{
266
+ "type": 0,
267
+ "value": "Create "
268
+ }, {
269
+ "type": 1,
270
+ "value": "a_singular"
271
+ }]
272
+ }),
245
273
  onClickClose: onCloseCreate
246
- }, /*#__PURE__*/React__default["default"].createElement("div", {
247
- className: "card p-2"
248
- }, /*#__PURE__*/React__default["default"].createElement("div", null, "My create Modale"))) : null));
274
+ }, /*#__PURE__*/React__default["default"].createElement(ResourceForm__default["default"], {
275
+ resource: resource,
276
+ onSuccess: onCreateSuccess
277
+ })) : null));
249
278
  };
250
279
  ResourceItemField.propTypes = propTypes;
251
280
  ResourceItemField.defaultProps = defaultProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/field-resource-item",
3
- "version": "2.0.59",
3
+ "version": "2.0.65",
4
4
  "description": "An item mapping a resource",
5
5
  "keywords": [
6
6
  "javascript"
@@ -49,6 +49,9 @@
49
49
  "@panneau/data": "^2.0.58",
50
50
  "@panneau/element-button": "^2.0.59",
51
51
  "@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",
52
55
  "classnames": "^2.2.6",
53
56
  "lodash": "^4.17.21",
54
57
  "prop-types": "^15.7.2",
@@ -57,5 +60,5 @@
57
60
  "publishConfig": {
58
61
  "access": "public"
59
62
  },
60
- "gitHead": "c25e7992dd528293d08ca7de09bcda5ab93f9b43"
63
+ "gitHead": "296e9ef82abdc2af9ffd2910a65e2630a630bfd4"
61
64
  }