1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _react = _interopRequireDefault(require("react"));
|
9 |
|
10 | var _reactSelect = require("react-select");
|
11 |
|
12 | var _async = _interopRequireDefault(require("react-select/async"));
|
13 |
|
14 | var _cond = _interopRequireDefault(require("sharyn/util/cond"));
|
15 |
|
16 | var _core = require("@material-ui/core");
|
17 |
|
18 | var _styles = require("./styles");
|
19 |
|
20 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
21 |
|
22 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
23 |
|
24 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
25 |
|
26 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } else { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } } return target; }
|
27 |
|
28 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
29 |
|
30 | function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
31 |
|
32 | function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
33 |
|
34 | var CustomMenu = function CustomMenu(_ref) {
|
35 | var menuProps = _ref.menuProps,
|
36 | creationAllowed = _ref.creationAllowed,
|
37 | createOptionLabel = _ref.createOptionLabel;
|
38 |
|
39 | var children = menuProps.children;
|
40 | return _react["default"].createElement(_reactSelect.components.Menu, menuProps, children, creationAllowed && createOptionLabel);
|
41 | };
|
42 |
|
43 | CustomMenu.propTypes = {
|
44 | menuProps: _propTypes["default"].object.isRequired,
|
45 | creationAllowed: _propTypes["default"].bool,
|
46 | createOptionLabel: _propTypes["default"].any
|
47 | };
|
48 |
|
49 | var MultiSelectJSX = function MultiSelectJSX(_ref2) {
|
50 | var searchBy = _ref2.searchBy,
|
51 | input = _ref2.input,
|
52 | defaultOptions = _ref2.defaultOptions,
|
53 | multiValues = _ref2.multiValues,
|
54 | handleChange = _ref2.handleChange,
|
55 | handleInputChange = _ref2.handleInputChange,
|
56 | getData = _ref2.getData,
|
57 | disabled = _ref2.disabled,
|
58 | label = _ref2.label,
|
59 | isLoading = _ref2.isLoading,
|
60 | _noOptionsMessage = _ref2.noOptionsMessage,
|
61 | loadingMessage = _ref2.loadingMessage,
|
62 | cancelToken = _ref2.cancelToken,
|
63 | _ref2$withDebounce = _ref2.withDebounce,
|
64 | withDebounce = _ref2$withDebounce === void 0 ? true : _ref2$withDebounce,
|
65 | _ref2$debounceInterva = _ref2.debounceInterval,
|
66 | debounceInterval = _ref2$debounceInterva === void 0 ? 300 : _ref2$debounceInterva,
|
67 | theme = _ref2.theme,
|
68 | _ref2$creationAllowed = _ref2.creationAllowed,
|
69 | creationAllowed = _ref2$creationAllowed === void 0 ? false : _ref2$creationAllowed,
|
70 | createOptionLabel = _ref2.createOptionLabel,
|
71 | customComponents = _ref2.components,
|
72 | rest = _objectWithoutProperties(_ref2, ["searchBy", "input", "defaultOptions", "multiValues", "handleChange", "handleInputChange", "getData", "disabled", "label", "isLoading", "noOptionsMessage", "loadingMessage", "cancelToken", "withDebounce", "debounceInterval", "theme", "creationAllowed", "createOptionLabel", "components"]);
|
73 |
|
74 | var customStyles = {
|
75 | option: function option(provided, state) {
|
76 | return _objectSpread({}, provided, {
|
77 | color: theme.palette.secondary.dark,
|
78 | background: state.isSelected ? 'rgba(0, 0, 0, 0.14)' : 'none',
|
79 | height: 'auto',
|
80 | padding: '11px 16px',
|
81 | lineHeight: '1.5rem',
|
82 | fontSize: '1.14rem',
|
83 | fontWeight: 400,
|
84 | opacity: state.isDisabled ? 0.5 : 1
|
85 | });
|
86 | },
|
87 | control: function control(provided, state) {
|
88 | return _objectSpread({}, provided, {
|
89 | borderStyle: 'solid',
|
90 | borderWidth: '2px',
|
91 | borderRadius: 8,
|
92 | borderColor: (0, _cond["default"])([[state.isDisabled, 'transparent'], [state.isFocused, theme.palette.secondary.dark]], theme.palette.secondary.light),
|
93 | backgroundColor: state.isDisabled ? _styles.secondaryColorExtraLight : 'inherit',
|
94 | boxShadow: 'none',
|
95 | caretColor: theme.palette.primary.main,
|
96 | color: theme.palette.secondary.dark,
|
97 | '&:hover': {
|
98 | borderColor: theme.palette.secondary.dark
|
99 | }
|
100 | });
|
101 | },
|
102 | input: function input() {
|
103 | return {
|
104 | padding: 'calc(1.33rem - 2px) calc(1rem - 8px)',
|
105 | fontSize: '0.875rem',
|
106 | lineHeight: '1.25',
|
107 | fontWeight: 700,
|
108 | '& *': {
|
109 | fontSize: '0.875rem',
|
110 | lineHeight: '1.25',
|
111 | fontWeight: 700
|
112 | }
|
113 | };
|
114 | },
|
115 | placeholder: function placeholder() {
|
116 | return {
|
117 | padding: 'calc(1.33rem - 2px) calc(1rem - 8px)',
|
118 | fontSize: '0.875rem',
|
119 | lineHeight: '1.25',
|
120 | fontWeight: 700,
|
121 | color: theme.palette.secondary.main,
|
122 | position: 'absolute'
|
123 | };
|
124 | },
|
125 | singleValue: function singleValue(provided, state) {
|
126 | return _objectSpread({}, provided, {
|
127 | padding: '1.33rem 0 1.33rem calc(1rem - 8px)',
|
128 | fontSize: '0.875rem',
|
129 | lineHeight: '1.25',
|
130 | fontWeight: 700,
|
131 | color: state.isDisabled ? theme.palette.secondary.main : 'inherit'
|
132 | });
|
133 | },
|
134 | multiValue: function multiValue(provided, state) {
|
135 | return _objectSpread({}, provided, {
|
136 | fontSize: '0.875rem',
|
137 | lineHeight: '1.25',
|
138 | fontWeight: 700,
|
139 | color: state.isDisabled ? theme.palette.secondary.main : 'inherit'
|
140 | });
|
141 | },
|
142 | multiValueRemove: function multiValueRemove(provided, state) {
|
143 | return _objectSpread({}, provided, {
|
144 | display: state.isDisabled ? 'none' : 'flex'
|
145 | });
|
146 | },
|
147 | menuList: function menuList(provided) {
|
148 | return _objectSpread({}, provided, {
|
149 | background: 'white'
|
150 | });
|
151 | },
|
152 | menu: function menu(provided) {
|
153 | return _objectSpread({}, provided, {
|
154 | zIndex: 3
|
155 | });
|
156 | }
|
157 |
|
158 | };
|
159 | var delayedCall = null;
|
160 |
|
161 |
|
162 |
|
163 | var loadOptions = getData ? function (event) {
|
164 | var options = new Promise(function (resolve) {
|
165 | cancelToken && (cancelToken === null || cancelToken === void 0 ? void 0 : cancelToken.cancel) && cancelToken.cancel();
|
166 |
|
167 | if (withDebounce) {
|
168 | delayedCall && clearTimeout(delayedCall);
|
169 | delayedCall = setTimeout(function () {
|
170 | getData(event).then(function (data) {
|
171 | return resolve(data);
|
172 | });
|
173 | }, debounceInterval);
|
174 | } else {
|
175 | getData(event).then(function (data) {
|
176 | return resolve(data);
|
177 | });
|
178 | }
|
179 | });
|
180 | return options;
|
181 | } : null;
|
182 | return _react["default"].createElement(_react["default"].Fragment, null, label && _react["default"].createElement("div", {
|
183 | style: {
|
184 | position: 'relative'
|
185 | }
|
186 | }, _react["default"].createElement("span", {
|
187 | style: {
|
188 | zIndex: 2,
|
189 | position: 'absolute',
|
190 | padding: '0 0.25rem',
|
191 | fontSize: '0.875rem',
|
192 | fontWeight: 700,
|
193 | lineHeight: 1,
|
194 | background: disabled ? 'none' : '#FFFFFF',
|
195 | color: theme.palette.secondary.dark,
|
196 | transform: 'translate(0.9rem, -0.5rem)'
|
197 | }
|
198 | }, label)), _react["default"].createElement(_async["default"], _extends({
|
199 | key: searchBy,
|
200 | isDisabled: disabled,
|
201 | defaultValue: input
|
202 | }, {
|
203 | defaultOptions: defaultOptions,
|
204 | loadingMessage: loadingMessage,
|
205 | loadOptions: loadOptions
|
206 | }, {
|
207 | onChange: handleChange,
|
208 | cacheOptions: false,
|
209 | isMulti: multiValues,
|
210 | onInputChange: handleInputChange,
|
211 | styles: customStyles,
|
212 | noOptionsMessage: function noOptionsMessage() {
|
213 | return isLoading ? loadingMessage && loadingMessage() : _noOptionsMessage && _noOptionsMessage();
|
214 | },
|
215 | components: _objectSpread({}, customComponents, {
|
216 | Menu: function Menu(menuProps) {
|
217 | return _react["default"].createElement(CustomMenu, {
|
218 | menuProps: menuProps,
|
219 | creationAllowed: creationAllowed,
|
220 | createOptionLabel: createOptionLabel
|
221 | });
|
222 | }
|
223 | })
|
224 | }, rest)));
|
225 | };
|
226 |
|
227 | MultiSelectJSX.propTypes = {
|
228 | searchBy: _propTypes["default"].string,
|
229 | input: _propTypes["default"].arrayOf(_propTypes["default"].object.isRequired),
|
230 | defaultOptions: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].arrayOf(_propTypes["default"].object.isRequired)]).isRequired,
|
231 | multiValues: _propTypes["default"].bool,
|
232 | handleChange: _propTypes["default"].func,
|
233 | handleInputChange: _propTypes["default"].func,
|
234 | getData: _propTypes["default"].func,
|
235 | disabled: _propTypes["default"].bool,
|
236 | label: _propTypes["default"].string,
|
237 | isLoading: _propTypes["default"].bool,
|
238 | noOptionsMessage: _propTypes["default"].func,
|
239 | loadingMessage: _propTypes["default"].func,
|
240 | cancelToken: _propTypes["default"].any,
|
241 | withDebounce: _propTypes["default"].bool,
|
242 | debounceInterval: _propTypes["default"].number,
|
243 | theme: _propTypes["default"].object.isRequired,
|
244 | creationAllowed: _propTypes["default"].bool,
|
245 | createOptionLabel: _propTypes["default"].any,
|
246 | components: _propTypes["default"].object
|
247 | };
|
248 |
|
249 | var _default = (0, _core.withTheme)()(MultiSelectJSX);
|
250 |
|
251 | exports["default"] = _default; |
\ | No newline at end of file |