@panneau/field-resource-item 2.0.56
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 +236 -0
- package/lib/index.js +255 -0
- package/package.json +61 -0
package/es/index.js
ADDED
@@ -0,0 +1,236 @@
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
2
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
3
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
4
|
+
import classNames from 'classnames';
|
5
|
+
import get from 'lodash/get';
|
6
|
+
import isArray from 'lodash/isArray';
|
7
|
+
import isEmpty from 'lodash/isEmpty';
|
8
|
+
import PropTypes from 'prop-types';
|
9
|
+
import React, { useState, useMemo, useCallback } from 'react';
|
10
|
+
import { useIntl, FormattedMessage } from 'react-intl';
|
11
|
+
import { PropTypes as PropTypes$1 } from '@panneau/core';
|
12
|
+
import { usePanneauResource } from '@panneau/core/contexts';
|
13
|
+
import { isMessage, getPathValue } from '@panneau/core/utils';
|
14
|
+
import { useResourceItems } from '@panneau/data';
|
15
|
+
import Button from '@panneau/element-button';
|
16
|
+
import Select from '@panneau/element-select';
|
17
|
+
|
18
|
+
// import Dialog from '@panneau/modal-dialog';
|
19
|
+
|
20
|
+
var propTypes = {
|
21
|
+
name: PropTypes.string,
|
22
|
+
value: PropTypes.object,
|
23
|
+
// eslint-disable-line react/forbid-prop-types
|
24
|
+
errors: PropTypes$1.formErrors,
|
25
|
+
resource: PropTypes.string,
|
26
|
+
query: PropTypes.object,
|
27
|
+
// eslint-disable-line react/forbid-prop-types
|
28
|
+
page: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
29
|
+
// eslint-disable-line react/forbid-prop-types
|
30
|
+
count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
31
|
+
// eslint-disable-line react/forbid-prop-types
|
32
|
+
options: PropTypes.object,
|
33
|
+
// eslint-disable-line react/forbid-prop-types
|
34
|
+
searchParamName: PropTypes.string,
|
35
|
+
getItemLabel: PropTypes.func,
|
36
|
+
getItemDescription: PropTypes.func,
|
37
|
+
// getItemImage: PropTypes.func,
|
38
|
+
itemLabelPath: PropTypes.string,
|
39
|
+
itemDescriptionPath: PropTypes.string,
|
40
|
+
// itemImagePath: PropTypes.string,
|
41
|
+
itemLabelWithId: PropTypes.bool,
|
42
|
+
placeholder: PropTypes.string,
|
43
|
+
canCreate: PropTypes.bool,
|
44
|
+
multiple: PropTypes.bool,
|
45
|
+
disabled: PropTypes.bool,
|
46
|
+
className: PropTypes.string,
|
47
|
+
inputClassName: PropTypes.string,
|
48
|
+
onChange: PropTypes.func
|
49
|
+
};
|
50
|
+
var defaultProps = {
|
51
|
+
name: null,
|
52
|
+
value: null,
|
53
|
+
errors: null,
|
54
|
+
resource: null,
|
55
|
+
query: null,
|
56
|
+
page: null,
|
57
|
+
count: null,
|
58
|
+
options: null,
|
59
|
+
searchParamName: 'search',
|
60
|
+
getItemLabel: getPathValue,
|
61
|
+
getItemDescription: getPathValue,
|
62
|
+
// getItemImage: getPathValue,
|
63
|
+
itemLabelPath: 'label',
|
64
|
+
itemDescriptionPath: null,
|
65
|
+
// itemImagePath: 'image',
|
66
|
+
itemLabelWithId: false,
|
67
|
+
placeholder: null,
|
68
|
+
canCreate: false,
|
69
|
+
multiple: false,
|
70
|
+
disabled: false,
|
71
|
+
className: null,
|
72
|
+
inputClassName: null,
|
73
|
+
onChange: null
|
74
|
+
};
|
75
|
+
var ResourceItemField = function ResourceItemField(_ref) {
|
76
|
+
var _ref7;
|
77
|
+
var name = _ref.name,
|
78
|
+
value = _ref.value,
|
79
|
+
errors = _ref.errors,
|
80
|
+
resourceId = _ref.resource,
|
81
|
+
initialQuery = _ref.query,
|
82
|
+
initialPage = _ref.page,
|
83
|
+
initialCount = _ref.count,
|
84
|
+
initialOptions = _ref.options,
|
85
|
+
searchParamName = _ref.searchParamName,
|
86
|
+
initialGetItemLabel = _ref.getItemLabel,
|
87
|
+
getItemDescription = _ref.getItemDescription,
|
88
|
+
itemLabelPath = _ref.itemLabelPath,
|
89
|
+
itemDescriptionPath = _ref.itemDescriptionPath,
|
90
|
+
itemLabelWithId = _ref.itemLabelWithId,
|
91
|
+
placeholder = _ref.placeholder,
|
92
|
+
canCreate = _ref.canCreate,
|
93
|
+
multiple = _ref.multiple,
|
94
|
+
disabled = _ref.disabled,
|
95
|
+
className = _ref.className,
|
96
|
+
inputClassName = _ref.inputClassName,
|
97
|
+
onChange = _ref.onChange;
|
98
|
+
var intl = useIntl();
|
99
|
+
// const [initialValue] = useState(value);
|
100
|
+
var _useState = useState(initialQuery),
|
101
|
+
_useState2 = _slicedToArray(_useState, 2),
|
102
|
+
query = _useState2[0];
|
103
|
+
_useState2[1];
|
104
|
+
var _useState3 = useState(initialPage),
|
105
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
106
|
+
page = _useState4[0];
|
107
|
+
_useState4[1];
|
108
|
+
var _useState5 = useState(initialCount),
|
109
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
110
|
+
count = _useState6[0];
|
111
|
+
_useState6[1];
|
112
|
+
var _useState7 = useState(initialOptions),
|
113
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
114
|
+
resourceOptions = _useState8[0];
|
115
|
+
_useState8[1];
|
116
|
+
|
117
|
+
// The create option
|
118
|
+
var _useState9 = useState(initialCount),
|
119
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
120
|
+
createOpen = _useState10[0],
|
121
|
+
setCreateOpen = _useState10[1];
|
122
|
+
|
123
|
+
// The search query
|
124
|
+
var _useState11 = useState(''),
|
125
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
126
|
+
inputTextValue = _useState12[0],
|
127
|
+
setInputTextValue = _useState12[1];
|
128
|
+
var completeResource = usePanneauResource(resourceId);
|
129
|
+
console.log(resourceId, completeResource);
|
130
|
+
var resource = useMemo(function () {
|
131
|
+
return {
|
132
|
+
id: resourceId
|
133
|
+
};
|
134
|
+
}, [resourceId]);
|
135
|
+
var finalQuery = useMemo(function () {
|
136
|
+
return _objectSpread(_objectSpread({}, query), !isEmpty(inputTextValue) ? _defineProperty({}, searchParamName, inputTextValue) : null);
|
137
|
+
}, [inputTextValue]);
|
138
|
+
var resourceItems = useResourceItems(resource, finalQuery, page, count, resourceOptions);
|
139
|
+
var _ref3 = resourceItems || {},
|
140
|
+
_ref3$items = _ref3.items,
|
141
|
+
items = _ref3$items === void 0 ? null : _ref3$items;
|
142
|
+
var getItemLabel = useCallback(function (it, path) {
|
143
|
+
var id = get(it, 'id', null);
|
144
|
+
if (itemLabelWithId) {
|
145
|
+
var label = initialGetItemLabel(it, path);
|
146
|
+
return label ? "".concat(label, " (#").concat(id, ")") : "#".concat(id);
|
147
|
+
}
|
148
|
+
return path !== null ? initialGetItemLabel(it, path) : "#".concat(id);
|
149
|
+
}, [initialGetItemLabel, itemLabelWithId]);
|
150
|
+
var parseItem = useCallback(function (it) {
|
151
|
+
var label = getItemLabel(it, itemLabelPath);
|
152
|
+
var description = getItemDescription(it, itemDescriptionPath);
|
153
|
+
var finalLabel = description !== null ? "".concat(label, ": ").concat(description) : label;
|
154
|
+
return {
|
155
|
+
value: it.id,
|
156
|
+
label: finalLabel
|
157
|
+
};
|
158
|
+
}, [getItemLabel, getItemDescription, itemLabelPath, itemDescriptionPath]);
|
159
|
+
var options = (items || []).map(function (it) {
|
160
|
+
return parseItem(it);
|
161
|
+
});
|
162
|
+
var finalValue = multiple && isArray(value) ? value.map(function (it) {
|
163
|
+
return parseItem(it);
|
164
|
+
}) : value;
|
165
|
+
var onInputChange = useCallback(function (textValue) {
|
166
|
+
setInputTextValue(textValue);
|
167
|
+
}, []);
|
168
|
+
var onValueChange = useCallback(function (newId) {
|
169
|
+
if (onChange === null) return;
|
170
|
+
if (multiple) {
|
171
|
+
var newValue = items.filter(function (_ref4) {
|
172
|
+
var _ref4$id = _ref4.id,
|
173
|
+
id = _ref4$id === void 0 ? null : _ref4$id;
|
174
|
+
return newId.indexOf(id) !== -1;
|
175
|
+
}) || [];
|
176
|
+
onChange(newValue);
|
177
|
+
} else {
|
178
|
+
var _newValue = items.filter(function (_ref5) {
|
179
|
+
var _ref5$id = _ref5.id,
|
180
|
+
id = _ref5$id === void 0 ? null : _ref5$id;
|
181
|
+
return id === newId;
|
182
|
+
}) || [];
|
183
|
+
if (_newValue !== null && _newValue.length > 0) {
|
184
|
+
onChange(_newValue[0]);
|
185
|
+
} else {
|
186
|
+
onChange(null);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}, [items, onChange, multiple]);
|
190
|
+
var onOpenCreate = useCallback(function () {
|
191
|
+
setCreateOpen(true);
|
192
|
+
}, [setCreateOpen]);
|
193
|
+
var onCloseCreate = useCallback(function () {
|
194
|
+
setCreateOpen(false);
|
195
|
+
}, [setCreateOpen]);
|
196
|
+
return /*#__PURE__*/React.createElement("div", {
|
197
|
+
className: classNames(['position-relative', _defineProperty({}, className, className != null)])
|
198
|
+
}, /*#__PURE__*/React.createElement("div", {
|
199
|
+
className: classNames(['row', 'align-items-center'])
|
200
|
+
}, /*#__PURE__*/React.createElement("div", {
|
201
|
+
className: "col-auto flex-grow-1"
|
202
|
+
}, /*#__PURE__*/React.createElement(Select, {
|
203
|
+
className: classNames(['py-1', 'shadow-none', (_ref7 = {}, _defineProperty(_ref7, disabled, disabled), _defineProperty(_ref7, 'is-invalid', errors !== null), _defineProperty(_ref7, inputClassName, inputClassName !== null), _ref7)]),
|
204
|
+
disabled: disabled,
|
205
|
+
name: name,
|
206
|
+
value: finalValue,
|
207
|
+
options: options,
|
208
|
+
isClearable: true,
|
209
|
+
isSearchable: true,
|
210
|
+
placeholder: isMessage(placeholder) ? intl.formatMessage(placeholder) : /*#__PURE__*/React.createElement(FormattedMessage, {
|
211
|
+
id: "oc3YLT",
|
212
|
+
defaultMessage: [{
|
213
|
+
"type": 0,
|
214
|
+
"value": "Choose an item"
|
215
|
+
}]
|
216
|
+
}),
|
217
|
+
onChange: onValueChange,
|
218
|
+
onInputChange: onInputChange,
|
219
|
+
multiple: multiple
|
220
|
+
})), canCreate ? /*#__PURE__*/React.createElement("div", {
|
221
|
+
className: "col-auto"
|
222
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
223
|
+
theme: "primary",
|
224
|
+
icon: "plus-lg",
|
225
|
+
onClick: createOpen ? onCloseCreate : onOpenCreate
|
226
|
+
})) : null));
|
227
|
+
};
|
228
|
+
ResourceItemField.propTypes = propTypes;
|
229
|
+
ResourceItemField.defaultProps = defaultProps;
|
230
|
+
|
231
|
+
var definition = {
|
232
|
+
id: 'resource-item',
|
233
|
+
component: 'ResourceItem'
|
234
|
+
};
|
235
|
+
|
236
|
+
export { ResourceItemField as default, definition };
|
package/lib/index.js
ADDED
@@ -0,0 +1,255 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
6
|
+
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
7
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
8
|
+
var classNames = require('classnames');
|
9
|
+
var get = require('lodash/get');
|
10
|
+
var isArray = require('lodash/isArray');
|
11
|
+
var isEmpty = require('lodash/isEmpty');
|
12
|
+
var PropTypes = require('prop-types');
|
13
|
+
var React = require('react');
|
14
|
+
var reactIntl = require('react-intl');
|
15
|
+
var core = require('@panneau/core');
|
16
|
+
var contexts = require('@panneau/core/contexts');
|
17
|
+
var utils = require('@panneau/core/utils');
|
18
|
+
var data = require('@panneau/data');
|
19
|
+
var Button = require('@panneau/element-button');
|
20
|
+
var Select = require('@panneau/element-select');
|
21
|
+
|
22
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
23
|
+
|
24
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
25
|
+
var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
|
26
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
27
|
+
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
28
|
+
var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
|
29
|
+
var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
|
30
|
+
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
31
|
+
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
32
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
33
|
+
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
34
|
+
var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
|
35
|
+
|
36
|
+
// import Dialog from '@panneau/modal-dialog';
|
37
|
+
|
38
|
+
var propTypes = {
|
39
|
+
name: PropTypes__default["default"].string,
|
40
|
+
value: PropTypes__default["default"].object,
|
41
|
+
// eslint-disable-line react/forbid-prop-types
|
42
|
+
errors: core.PropTypes.formErrors,
|
43
|
+
resource: PropTypes__default["default"].string,
|
44
|
+
query: PropTypes__default["default"].object,
|
45
|
+
// eslint-disable-line react/forbid-prop-types
|
46
|
+
page: PropTypes__default["default"].oneOfType([PropTypes__default["default"].number, PropTypes__default["default"].string]),
|
47
|
+
// eslint-disable-line react/forbid-prop-types
|
48
|
+
count: PropTypes__default["default"].oneOfType([PropTypes__default["default"].number, PropTypes__default["default"].string]),
|
49
|
+
// eslint-disable-line react/forbid-prop-types
|
50
|
+
options: PropTypes__default["default"].object,
|
51
|
+
// eslint-disable-line react/forbid-prop-types
|
52
|
+
searchParamName: PropTypes__default["default"].string,
|
53
|
+
getItemLabel: PropTypes__default["default"].func,
|
54
|
+
getItemDescription: PropTypes__default["default"].func,
|
55
|
+
// getItemImage: PropTypes.func,
|
56
|
+
itemLabelPath: PropTypes__default["default"].string,
|
57
|
+
itemDescriptionPath: PropTypes__default["default"].string,
|
58
|
+
// itemImagePath: PropTypes.string,
|
59
|
+
itemLabelWithId: PropTypes__default["default"].bool,
|
60
|
+
placeholder: PropTypes__default["default"].string,
|
61
|
+
canCreate: PropTypes__default["default"].bool,
|
62
|
+
multiple: PropTypes__default["default"].bool,
|
63
|
+
disabled: PropTypes__default["default"].bool,
|
64
|
+
className: PropTypes__default["default"].string,
|
65
|
+
inputClassName: PropTypes__default["default"].string,
|
66
|
+
onChange: PropTypes__default["default"].func
|
67
|
+
};
|
68
|
+
var defaultProps = {
|
69
|
+
name: null,
|
70
|
+
value: null,
|
71
|
+
errors: null,
|
72
|
+
resource: null,
|
73
|
+
query: null,
|
74
|
+
page: null,
|
75
|
+
count: null,
|
76
|
+
options: null,
|
77
|
+
searchParamName: 'search',
|
78
|
+
getItemLabel: utils.getPathValue,
|
79
|
+
getItemDescription: utils.getPathValue,
|
80
|
+
// getItemImage: getPathValue,
|
81
|
+
itemLabelPath: 'label',
|
82
|
+
itemDescriptionPath: null,
|
83
|
+
// itemImagePath: 'image',
|
84
|
+
itemLabelWithId: false,
|
85
|
+
placeholder: null,
|
86
|
+
canCreate: false,
|
87
|
+
multiple: false,
|
88
|
+
disabled: false,
|
89
|
+
className: null,
|
90
|
+
inputClassName: null,
|
91
|
+
onChange: null
|
92
|
+
};
|
93
|
+
var ResourceItemField = function ResourceItemField(_ref) {
|
94
|
+
var _ref7;
|
95
|
+
var name = _ref.name,
|
96
|
+
value = _ref.value,
|
97
|
+
errors = _ref.errors,
|
98
|
+
resourceId = _ref.resource,
|
99
|
+
initialQuery = _ref.query,
|
100
|
+
initialPage = _ref.page,
|
101
|
+
initialCount = _ref.count,
|
102
|
+
initialOptions = _ref.options,
|
103
|
+
searchParamName = _ref.searchParamName,
|
104
|
+
initialGetItemLabel = _ref.getItemLabel,
|
105
|
+
getItemDescription = _ref.getItemDescription,
|
106
|
+
itemLabelPath = _ref.itemLabelPath,
|
107
|
+
itemDescriptionPath = _ref.itemDescriptionPath,
|
108
|
+
itemLabelWithId = _ref.itemLabelWithId,
|
109
|
+
placeholder = _ref.placeholder,
|
110
|
+
canCreate = _ref.canCreate,
|
111
|
+
multiple = _ref.multiple,
|
112
|
+
disabled = _ref.disabled,
|
113
|
+
className = _ref.className,
|
114
|
+
inputClassName = _ref.inputClassName,
|
115
|
+
onChange = _ref.onChange;
|
116
|
+
var intl = reactIntl.useIntl();
|
117
|
+
// const [initialValue] = useState(value);
|
118
|
+
var _useState = React.useState(initialQuery),
|
119
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
120
|
+
query = _useState2[0];
|
121
|
+
_useState2[1];
|
122
|
+
var _useState3 = React.useState(initialPage),
|
123
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
124
|
+
page = _useState4[0];
|
125
|
+
_useState4[1];
|
126
|
+
var _useState5 = React.useState(initialCount),
|
127
|
+
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
128
|
+
count = _useState6[0];
|
129
|
+
_useState6[1];
|
130
|
+
var _useState7 = React.useState(initialOptions),
|
131
|
+
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
132
|
+
resourceOptions = _useState8[0];
|
133
|
+
_useState8[1];
|
134
|
+
|
135
|
+
// The create option
|
136
|
+
var _useState9 = React.useState(initialCount),
|
137
|
+
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
138
|
+
createOpen = _useState10[0],
|
139
|
+
setCreateOpen = _useState10[1];
|
140
|
+
|
141
|
+
// The search query
|
142
|
+
var _useState11 = React.useState(''),
|
143
|
+
_useState12 = _slicedToArray__default["default"](_useState11, 2),
|
144
|
+
inputTextValue = _useState12[0],
|
145
|
+
setInputTextValue = _useState12[1];
|
146
|
+
var completeResource = contexts.usePanneauResource(resourceId);
|
147
|
+
console.log(resourceId, completeResource);
|
148
|
+
var resource = React.useMemo(function () {
|
149
|
+
return {
|
150
|
+
id: resourceId
|
151
|
+
};
|
152
|
+
}, [resourceId]);
|
153
|
+
var finalQuery = React.useMemo(function () {
|
154
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, query), !isEmpty__default["default"](inputTextValue) ? _defineProperty__default["default"]({}, searchParamName, inputTextValue) : null);
|
155
|
+
}, [inputTextValue]);
|
156
|
+
var resourceItems = data.useResourceItems(resource, finalQuery, page, count, resourceOptions);
|
157
|
+
var _ref3 = resourceItems || {},
|
158
|
+
_ref3$items = _ref3.items,
|
159
|
+
items = _ref3$items === void 0 ? null : _ref3$items;
|
160
|
+
var getItemLabel = React.useCallback(function (it, path) {
|
161
|
+
var id = get__default["default"](it, 'id', null);
|
162
|
+
if (itemLabelWithId) {
|
163
|
+
var label = initialGetItemLabel(it, path);
|
164
|
+
return label ? "".concat(label, " (#").concat(id, ")") : "#".concat(id);
|
165
|
+
}
|
166
|
+
return path !== null ? initialGetItemLabel(it, path) : "#".concat(id);
|
167
|
+
}, [initialGetItemLabel, itemLabelWithId]);
|
168
|
+
var parseItem = React.useCallback(function (it) {
|
169
|
+
var label = getItemLabel(it, itemLabelPath);
|
170
|
+
var description = getItemDescription(it, itemDescriptionPath);
|
171
|
+
var finalLabel = description !== null ? "".concat(label, ": ").concat(description) : label;
|
172
|
+
return {
|
173
|
+
value: it.id,
|
174
|
+
label: finalLabel
|
175
|
+
};
|
176
|
+
}, [getItemLabel, getItemDescription, itemLabelPath, itemDescriptionPath]);
|
177
|
+
var options = (items || []).map(function (it) {
|
178
|
+
return parseItem(it);
|
179
|
+
});
|
180
|
+
var finalValue = multiple && isArray__default["default"](value) ? value.map(function (it) {
|
181
|
+
return parseItem(it);
|
182
|
+
}) : value;
|
183
|
+
var onInputChange = React.useCallback(function (textValue) {
|
184
|
+
setInputTextValue(textValue);
|
185
|
+
}, []);
|
186
|
+
var onValueChange = React.useCallback(function (newId) {
|
187
|
+
if (onChange === null) return;
|
188
|
+
if (multiple) {
|
189
|
+
var newValue = items.filter(function (_ref4) {
|
190
|
+
var _ref4$id = _ref4.id,
|
191
|
+
id = _ref4$id === void 0 ? null : _ref4$id;
|
192
|
+
return newId.indexOf(id) !== -1;
|
193
|
+
}) || [];
|
194
|
+
onChange(newValue);
|
195
|
+
} else {
|
196
|
+
var _newValue = items.filter(function (_ref5) {
|
197
|
+
var _ref5$id = _ref5.id,
|
198
|
+
id = _ref5$id === void 0 ? null : _ref5$id;
|
199
|
+
return id === newId;
|
200
|
+
}) || [];
|
201
|
+
if (_newValue !== null && _newValue.length > 0) {
|
202
|
+
onChange(_newValue[0]);
|
203
|
+
} else {
|
204
|
+
onChange(null);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
}, [items, onChange, multiple]);
|
208
|
+
var onOpenCreate = React.useCallback(function () {
|
209
|
+
setCreateOpen(true);
|
210
|
+
}, [setCreateOpen]);
|
211
|
+
var onCloseCreate = React.useCallback(function () {
|
212
|
+
setCreateOpen(false);
|
213
|
+
}, [setCreateOpen]);
|
214
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
215
|
+
className: classNames__default["default"](['position-relative', _defineProperty__default["default"]({}, className, className != null)])
|
216
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
217
|
+
className: classNames__default["default"](['row', 'align-items-center'])
|
218
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
219
|
+
className: "col-auto flex-grow-1"
|
220
|
+
}, /*#__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)]),
|
222
|
+
disabled: disabled,
|
223
|
+
name: name,
|
224
|
+
value: finalValue,
|
225
|
+
options: options,
|
226
|
+
isClearable: true,
|
227
|
+
isSearchable: true,
|
228
|
+
placeholder: utils.isMessage(placeholder) ? intl.formatMessage(placeholder) : /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
|
229
|
+
id: "oc3YLT",
|
230
|
+
defaultMessage: [{
|
231
|
+
"type": 0,
|
232
|
+
"value": "Choose an item"
|
233
|
+
}]
|
234
|
+
}),
|
235
|
+
onChange: onValueChange,
|
236
|
+
onInputChange: onInputChange,
|
237
|
+
multiple: multiple
|
238
|
+
})), canCreate ? /*#__PURE__*/React__default["default"].createElement("div", {
|
239
|
+
className: "col-auto"
|
240
|
+
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
241
|
+
theme: "primary",
|
242
|
+
icon: "plus-lg",
|
243
|
+
onClick: createOpen ? onCloseCreate : onOpenCreate
|
244
|
+
})) : null));
|
245
|
+
};
|
246
|
+
ResourceItemField.propTypes = propTypes;
|
247
|
+
ResourceItemField.defaultProps = defaultProps;
|
248
|
+
|
249
|
+
var definition = {
|
250
|
+
id: 'resource-item',
|
251
|
+
component: 'ResourceItem'
|
252
|
+
};
|
253
|
+
|
254
|
+
exports["default"] = ResourceItemField;
|
255
|
+
exports.definition = definition;
|
package/package.json
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
{
|
2
|
+
"name": "@panneau/field-resource-item",
|
3
|
+
"version": "2.0.56",
|
4
|
+
"description": "An item mapping a resource",
|
5
|
+
"keywords": [
|
6
|
+
"javascript"
|
7
|
+
],
|
8
|
+
"homepage": "https://github.com/folkloreinc/panneau-js",
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "git+https://github.com/folkloreinc/panneau-js.git"
|
12
|
+
},
|
13
|
+
"author": {
|
14
|
+
"name": "Folklore",
|
15
|
+
"email": "info@folklore.email"
|
16
|
+
},
|
17
|
+
"contributors": [
|
18
|
+
{
|
19
|
+
"name": "David Mongeau-Petitpas",
|
20
|
+
"email": "dmp@folklore.email"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"name": "Nicolas Roy-Bourdages",
|
24
|
+
"email": "nrb@folklore.email"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"license": "ISC",
|
28
|
+
"main": "lib/index.js",
|
29
|
+
"module": "es/index.js",
|
30
|
+
"files": [
|
31
|
+
"lib",
|
32
|
+
"es",
|
33
|
+
"assets"
|
34
|
+
],
|
35
|
+
"scripts": {
|
36
|
+
"prepare": "../../scripts/prepare-package.sh"
|
37
|
+
},
|
38
|
+
"devDependencies": {
|
39
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
40
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
41
|
+
},
|
42
|
+
"peerDependencies": {
|
43
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
44
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
45
|
+
},
|
46
|
+
"dependencies": {
|
47
|
+
"@babel/runtime": "^7.12.5",
|
48
|
+
"@panneau/core": "^2.0.56",
|
49
|
+
"@panneau/data": "^2.0.56",
|
50
|
+
"@panneau/element-button": "^2.0.56",
|
51
|
+
"@panneau/element-select": "^2.0.56",
|
52
|
+
"classnames": "^2.2.6",
|
53
|
+
"lodash": "^4.17.21",
|
54
|
+
"prop-types": "^15.7.2",
|
55
|
+
"react-intl": "^5.15.8||^6.0.0"
|
56
|
+
},
|
57
|
+
"publishConfig": {
|
58
|
+
"access": "public"
|
59
|
+
},
|
60
|
+
"gitHead": "edb76a5622f04136db62c1dd0c4b2e362de6878a"
|
61
|
+
}
|