orc-shared 5.99.0-dev.5 → 5.99.0-dev.7

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.
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.selectEventUpdater = exports.default = void 0;
4
+ exports.default = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
+ var _reactIntl = require("react-intl");
6
7
  var _Select = _interopRequireDefault(require("../../MaterialUI/Inputs/Select"));
7
- var _utils = require("../../../utils");
8
8
  var _SelectProps = _interopRequireDefault(require("../../MaterialUI/Inputs/SelectProps"));
9
- var _excluded = ["value", "options", "update"];
9
+ var _sharedMessages = _interopRequireDefault(require("../../../sharedMessages"));
10
+ var _excluded = ["value", "width", "options", "update", "addClearSelectAll", "multipleRenderValue"];
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
12
  (function () {
12
13
  var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
@@ -24,29 +25,81 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
24
25
  var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
25
26
  return a;
26
27
  };
27
- var selectEventUpdater = exports.selectEventUpdater = (0, _utils.memoize)(function (update) {
28
- return function (value) {
29
- return update(value);
30
- };
31
- });
28
+ var clearValue = "__#Clear#__";
29
+ var selectAllValue = "__#SelectAll#__";
32
30
  var MultiSelector = function MultiSelector(_ref) {
33
31
  var value = _ref.value,
32
+ _ref$width = _ref.width,
33
+ width = _ref$width === void 0 ? 700 : _ref$width,
34
34
  options = _ref.options,
35
35
  update = _ref.update,
36
+ addClearSelectAll = _ref.addClearSelectAll,
37
+ multipleRenderValue = _ref.multipleRenderValue,
36
38
  props = _objectWithoutProperties(_ref, _excluded);
39
+ var _useIntl = (0, _reactIntl.useIntl)(),
40
+ formatMessage = _useIntl.formatMessage;
41
+ var valueUpdater = function valueUpdater(value) {
42
+ if (value.indexOf(clearValue) >= 0) {
43
+ update([]);
44
+ } else if (value.indexOf(selectAllValue) >= 0) {
45
+ update(options.map(function (x) {
46
+ return x.value;
47
+ }));
48
+ } else {
49
+ update(value);
50
+ }
51
+ };
37
52
  var selectProps = new _SelectProps.default();
53
+ var selectionOptions = [];
54
+ if (addClearSelectAll) {
55
+ if (value.length > 0) {
56
+ selectionOptions.push({
57
+ label: formatMessage(_sharedMessages.default.clear),
58
+ value: clearValue
59
+ });
60
+ }
61
+ if (value.length !== options.length) {
62
+ selectionOptions.push({
63
+ label: formatMessage(_sharedMessages.default.selectAll),
64
+ value: selectAllValue
65
+ });
66
+ }
67
+ }
68
+ var allOptions = [].concat(selectionOptions, options);
38
69
  selectProps.set(_SelectProps.default.propNames.value, value);
39
70
  selectProps.set(_SelectProps.default.propNames.onClose, props.onBlur);
40
71
  selectProps.set(_SelectProps.default.propNames.disabled, props.disabled);
41
72
  selectProps.set(_SelectProps.default.propNames.multiple, true);
42
- selectProps.set(_SelectProps.default.propNames.update, selectEventUpdater(update));
73
+ selectProps.set(_SelectProps.default.propNames.multipleSelectWidth, width);
74
+ selectProps.set(_SelectProps.default.propNames.update, valueUpdater);
75
+ selectProps.set(_SelectProps.default.propNames.autoWidth, false);
76
+ selectProps.set(_SelectProps.default.propNames.autoFocus, false);
77
+ selectProps.set(_SelectProps.default.propNames.renderValue, multipleRenderValue ? function () {
78
+ return multipleRenderValue(value, options);
79
+ } : null);
80
+ selectProps.set(_SelectProps.default.propNames.positionOverride, {
81
+ anchorOrigin: {
82
+ vertical: "bottom",
83
+ horizontal: "left"
84
+ },
85
+ transformOrigin: {
86
+ vertical: "top",
87
+ horizontal: "left"
88
+ }
89
+ });
43
90
  var hasError = props.required && (!Array.isArray(value) || value.length === 0);
44
91
  selectProps.set(_SelectProps.default.propNames.error, hasError);
45
92
  return /*#__PURE__*/_react.default.createElement(_Select.default, {
46
- options: options,
93
+ options: allOptions,
47
94
  selectProps: selectProps
48
95
  });
49
96
  };
97
+ __signature__(MultiSelector, "useIntl{{ formatMessage }}", function () {
98
+ return [_reactIntl.useIntl];
99
+ });
100
+ __signature__(MultiSelector, "useIntl{{ formatMessage }}", function () {
101
+ return [_reactIntl.useIntl];
102
+ });
50
103
  var _default = MultiSelector;
51
104
  var _default2 = _default;
52
105
  var _default3 = exports.default = _default2;
@@ -56,7 +109,8 @@ var _default3 = exports.default = _default2;
56
109
  if (!reactHotLoader) {
57
110
  return;
58
111
  }
59
- reactHotLoader.register(selectEventUpdater, "selectEventUpdater", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
112
+ reactHotLoader.register(clearValue, "clearValue", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
113
+ reactHotLoader.register(selectAllValue, "selectAllValue", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
60
114
  reactHotLoader.register(MultiSelector, "MultiSelector", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
61
115
  reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
62
116
  })();
@@ -71,7 +125,8 @@ var _default3 = exports.default = _default2;
71
125
  if (!reactHotLoader) {
72
126
  return;
73
127
  }
74
- reactHotLoader.register(selectEventUpdater, "selectEventUpdater", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
128
+ reactHotLoader.register(clearValue, "clearValue", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
129
+ reactHotLoader.register(selectAllValue, "selectAllValue", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
75
130
  reactHotLoader.register(MultiSelector, "MultiSelector", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
76
131
  reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/components/Form/Inputs/MultiSelector.js");
77
132
  })();
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.selectEventUpdater = exports.default = void 0;
4
+ exports.default = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
6
  var _Select = _interopRequireDefault(require("../../MaterialUI/Inputs/Select"));
7
- var _utils = require("../../../utils");
8
7
  var _SelectProps = _interopRequireDefault(require("../../MaterialUI/Inputs/SelectProps"));
9
8
  var _excluded = ["value", "options", "update"];
10
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -24,11 +23,6 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
24
23
  var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
25
24
  return a;
26
25
  };
27
- var selectEventUpdater = exports.selectEventUpdater = (0, _utils.memoize)(function (update) {
28
- return function (value) {
29
- return update(value);
30
- };
31
- });
32
26
  var Selector = function Selector(_ref) {
33
27
  var value = _ref.value,
34
28
  options = _ref.options,
@@ -38,7 +32,18 @@ var Selector = function Selector(_ref) {
38
32
  selectProps.set(_SelectProps.default.propNames.value, value);
39
33
  selectProps.set(_SelectProps.default.propNames.onClose, props.onBlur);
40
34
  selectProps.set(_SelectProps.default.propNames.disabled, props.disabled);
41
- selectProps.set(_SelectProps.default.propNames.update, selectEventUpdater(update));
35
+ selectProps.set(_SelectProps.default.propNames.update, update);
36
+ selectProps.set(_SelectProps.default.propNames.autoWidth, false);
37
+ selectProps.set(_SelectProps.default.propNames.positionOverride, {
38
+ anchorOrigin: {
39
+ vertical: "bottom",
40
+ horizontal: "left"
41
+ },
42
+ transformOrigin: {
43
+ vertical: "top",
44
+ horizontal: "left"
45
+ }
46
+ });
42
47
  var hasError = props.required && !value ? true : false;
43
48
  selectProps.set(_SelectProps.default.propNames.error, hasError);
44
49
  return /*#__PURE__*/_react.default.createElement(_Select.default, {
@@ -55,7 +60,6 @@ var _default3 = exports.default = _default2;
55
60
  if (!reactHotLoader) {
56
61
  return;
57
62
  }
58
- reactHotLoader.register(selectEventUpdater, "selectEventUpdater", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
59
63
  reactHotLoader.register(Selector, "Selector", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
60
64
  reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
61
65
  })();
@@ -70,7 +74,6 @@ var _default3 = exports.default = _default2;
70
74
  if (!reactHotLoader) {
71
75
  return;
72
76
  }
73
- reactHotLoader.register(selectEventUpdater, "selectEventUpdater", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
74
77
  reactHotLoader.register(Selector, "Selector", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
75
78
  reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/components/Form/Inputs/Selector.js");
76
79
  })();
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.default = exports.SelectIconButton = void 0;
4
+ exports.renderMultipleValues = exports.default = exports.SelectIconButton = void 0;
5
5
  var _react = _interopRequireWildcard(require("react"));
6
6
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
7
7
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
@@ -12,6 +12,8 @@ var _TooltippedTypography = _interopRequireDefault(require("./../DataDisplay/Too
12
12
  var _Icon = _interopRequireDefault(require("./../DataDisplay/Icon"));
13
13
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
14
14
  var _core = require("@material-ui/core");
15
+ var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
16
+ var _useWindowSize = _interopRequireDefault(require("../../../hooks/useWindowSize"));
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -23,11 +25,6 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
23
25
  var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
24
26
  enterModule && enterModule(module);
25
27
  })();
26
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
28
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
29
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
30
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
31
28
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
32
29
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
30
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -35,6 +32,11 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
35
32
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
33
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
37
34
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
35
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
37
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
38
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
39
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
38
40
  var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
39
41
  return a;
40
42
  };
@@ -43,8 +45,12 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
43
45
  };
44
46
  var useStyles = (0, _styles.makeStyles)(function (theme) {
45
47
  return {
46
- baseItem: {
47
- maxWidth: theme.spacing(35)
48
+ baseItem: function baseItem(props) {
49
+ return _objectSpread({}, props.autoWidth ? {
50
+ maxWidth: theme.spacing(35)
51
+ } : {
52
+ maxWidth: theme.spacing(props.multipleWidthSpacing)
53
+ });
48
54
  },
49
55
  level0: {},
50
56
  level1: {
@@ -75,35 +81,45 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
75
81
  display: "flex",
76
82
  flexDirection: "column"
77
83
  },
78
- selectPaper: {
79
- border: "1px solid ".concat(theme.palette.grey.borders),
80
- minWidth: "auto !important",
81
- width: "auto !important",
82
- "& ul": {
83
- minWidth: theme.spacing(17.5),
84
- maxHeight: theme.spacing(30),
85
- paddingTop: 0,
86
- paddingBottom: 0
87
- },
88
- "& li": {
89
- fontSize: theme.typography.fontSize,
90
- fontFamily: theme.typography.fontFamily,
91
- textTransform: "none",
92
- color: theme.palette.grey.dark,
93
- paddingTop: theme.spacing(1),
94
- paddingBottom: theme.spacing(1),
95
- borderRadius: 0,
96
- whiteSpace: "normal",
97
- "&:hover": {
98
- backgroundColor: theme.palette.primary.light
84
+ selectPaper: function selectPaper(props) {
85
+ return _objectSpread({
86
+ border: "1px solid ".concat(theme.palette.grey.borders),
87
+ "& ul": {
88
+ minWidth: theme.spacing(17.5),
89
+ maxHeight: theme.spacing(30),
90
+ paddingTop: 0,
91
+ paddingBottom: 0
99
92
  },
100
- "&:focus, &:active": {
93
+ "& li": {
94
+ fontSize: theme.typography.fontSize,
95
+ fontFamily: theme.typography.fontFamily,
96
+ textTransform: "none",
97
+ color: theme.palette.grey.dark,
98
+ paddingTop: theme.spacing(1),
99
+ paddingBottom: theme.spacing(1),
101
100
  borderRadius: 0,
101
+ whiteSpace: "normal",
102
102
  "&:hover": {
103
- backgroundColor: theme.palette.primary.light
103
+ backgroundColor: theme.palette.primary.main,
104
+ "&:not(.Mui-selected) > p": {
105
+ color: "".concat(theme.palette.primary.contrastText)
106
+ },
107
+ "&.Mui-selected": {
108
+ backgroundColor: theme.palette.secondary.light
109
+ }
110
+ },
111
+ "&:focus, &:active": {
112
+ borderRadius: 0,
113
+ boxShadow: props.multiple ? "none" : "0 0 ".concat(theme.spacing(0.4), " #4fa1f0"),
114
+ "&:hover": {
115
+ backgroundColor: theme.palette.primary.main
116
+ }
104
117
  }
105
118
  }
106
- }
119
+ }, props.autoWidth ? {
120
+ minWidth: "auto !important",
121
+ width: "auto !important"
122
+ } : {});
107
123
  },
108
124
  label: {
109
125
  fontSize: theme.typography.fontSize,
@@ -136,6 +152,12 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
136
152
  color: theme.palette.text.primary,
137
153
  backgroundColor: theme.palette.grey.light,
138
154
  border: 0
155
+ },
156
+ formControl: function formControl(props) {
157
+ return {
158
+ maxWidth: theme.spacing(props.multipleWidthSpacing),
159
+ minWidth: theme.spacing(props.multipleWidthSpacing)
160
+ };
139
161
  }
140
162
  };
141
163
  });
@@ -185,13 +207,18 @@ __signature__(SelectIconButton, "useStyles{classes}", function () {
185
207
  __signature__(SelectIconButton, "useStyles{classes}", function () {
186
208
  return [useStyles];
187
209
  });
188
- var renderMultipleValues = function renderMultipleValues(selected) {
189
- return selected == null ? void 0 : selected.join(", ");
210
+ var renderMultipleValues = exports.renderMultipleValues = function renderMultipleValues(value, options) {
211
+ return options.filter(function (x) {
212
+ return value.indexOf(x.value) !== -1;
213
+ }).map(function (x) {
214
+ return x.label;
215
+ }).join(", ");
190
216
  };
191
217
  var selectEmptyValue = "~~#~~";
192
218
  var Select = function Select(_ref) {
193
219
  var _selectProps$get;
194
- var options = _ref.options,
220
+ var _ref$options = _ref.options,
221
+ options = _ref$options === void 0 ? [] : _ref$options,
195
222
  selectProps = _ref.selectProps,
196
223
  children = _ref.children;
197
224
  if ((0, _SelectProps.isSelectProps)(selectProps) === false) {
@@ -202,7 +229,6 @@ var Select = function Select(_ref) {
202
229
  open = _useState2[0],
203
230
  setOpen = _useState2[1];
204
231
  var ref = (0, _react.useRef)(null);
205
- var classes = useStyles();
206
232
  var update = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.update);
207
233
  var value = (_selectProps$get = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.value)) != null ? _selectProps$get : "";
208
234
  var sortType = (selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.sortType)) || _SelectProps.sortTypeEnum.none;
@@ -215,129 +241,159 @@ var Select = function Select(_ref) {
215
241
  var native = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.native);
216
242
  var onClose = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.onClose);
217
243
  var inputProps = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.inputProps);
218
- var multiple = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.multiple);
244
+ var multiple = (selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.multiple)) || false;
245
+ var renderValue = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.renderValue);
246
+ var autoWidth = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.autoWidth);
247
+ var autoFocus = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.autoFocus);
248
+ var multipleSelectWidth = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.multipleSelectWidth);
219
249
  var hasError = !!error;
220
- if (sortType === _SelectProps.sortTypeEnum.numeric) {
221
- options.sort(function (a, b) {
222
- return a.sortOrder.localeCompare(b.sortOrder, undefined, {
223
- numeric: true,
224
- sensitivity: "base"
250
+ var windowSize = (0, _useWindowSize.default)();
251
+
252
+ // When too many elements are selected from the list, the component can be longer than the screen, not very convenient
253
+ // We need a fix length unfortunately, for large screen, we use 100% of the multipleSelectWidth, for medium length, 75%
254
+ // But for very small width, we use the inner width of the browser minus 150px (completely arbitrary value), otherwise
255
+ // the drop-down is too large and hard to read
256
+ var multipleSelectWidthFactor = windowSize.innerWidth > 1200 ? 1 : 0.75;
257
+ var multipleWidthSpacing = windowSize.innerWidth > 750 ? multipleSelectWidth / 10 * multipleSelectWidthFactor : (windowSize.innerWidth - 150) / 10;
258
+ var classes = useStyles({
259
+ multiple: multiple,
260
+ autoWidth: autoWidth,
261
+ multipleWidthSpacing: multipleWidthSpacing
262
+ });
263
+ var buildOptionsItems = function buildOptionsItems() {
264
+ var allOptions = [].concat(options);
265
+ if (sortType === _SelectProps.sortTypeEnum.numeric) {
266
+ allOptions.sort(function (a, b) {
267
+ return a.sortOrder.localeCompare(b.sortOrder, undefined, {
268
+ numeric: true,
269
+ sensitivity: "base"
270
+ });
225
271
  });
226
- });
227
- } else if (sortType === _SelectProps.sortTypeEnum.default) {
228
- options.sort(function (a, b) {
229
- return a.sortOrder > b.sortOrder ? 1 : -1;
230
- });
231
- } else if (sortType === _SelectProps.sortTypeEnum.alphabetical) {
232
- options.sort(function (a, b) {
233
- if (a.value === selectEmptyValue) {
234
- return -1;
235
- }
236
- if (b.value === selectEmptyValue) {
237
- return 1;
272
+ } else if (sortType === _SelectProps.sortTypeEnum.default) {
273
+ allOptions.sort(function (a, b) {
274
+ return a.sortOrder > b.sortOrder ? 1 : -1;
275
+ });
276
+ } else if (sortType === _SelectProps.sortTypeEnum.alphabetical) {
277
+ allOptions.sort(function (a, b) {
278
+ if (a.value === selectEmptyValue) {
279
+ return -1;
280
+ }
281
+ if (b.value === selectEmptyValue) {
282
+ return 1;
283
+ }
284
+ return a.label.localeCompare(b.label);
285
+ });
286
+ }
287
+ if (showAllValue && showAllLabel) {
288
+ allOptions.unshift({
289
+ value: showAllValue,
290
+ label: showAllLabel
291
+ });
292
+ }
293
+ return allOptions.map(function (option) {
294
+ var clss = option != null && option.level ? classes["level" + option.level] : "";
295
+ var appliedClasses = (0, _classnames.default)(classes.baseItem, clss);
296
+ var labelClss = (0, _classnames.default)(_defineProperty(_defineProperty({}, classes.label, true), classes.emptyLabel, option.value === "" || option.value === selectEmptyValue));
297
+ var disabled = !!option.disabled;
298
+ var groupHeader = !!option.isGroupHeader;
299
+ if (groupHeader) {
300
+ return /*#__PURE__*/_react.default.createElement(_core.ListSubheader, {
301
+ key: option.value,
302
+ className: appliedClasses
303
+ }, option.label);
304
+ } else {
305
+ return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
306
+ key: option.value,
307
+ value: option.value,
308
+ className: appliedClasses,
309
+ disabled: disabled
310
+ }, /*#__PURE__*/_react.default.createElement(_TooltippedTypography.default, {
311
+ noWrap: true,
312
+ className: labelClss,
313
+ children: option.label,
314
+ titleValue: option.label
315
+ }));
238
316
  }
239
- return a.label.localeCompare(b.label);
240
317
  });
241
- }
242
- if (showAllValue && showAllLabel) {
243
- options.unshift({
244
- value: showAllValue,
245
- label: showAllLabel
246
- });
247
- }
318
+ };
248
319
  var handleChange = function handleChange(event) {
249
320
  update(event.target.value);
250
321
  };
251
322
  var defaultMenuProps = _objectSpread(_objectSpread({
252
323
  classes: {
253
324
  paper: (0, _classnames.default)(classes.selectPaper, selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.paper))
254
- }
325
+ },
326
+ autoFocus: autoFocus
255
327
  }, MenuProps), positionOverride);
256
328
  var iconSelectMenuProps = _objectSpread(_objectSpread({
257
329
  classes: {
258
330
  paper: (0, _classnames.default)(classes.selectPaper, selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.paper))
259
- }
331
+ },
332
+ autoFocus: autoFocus
260
333
  }, positionOverride), getIconButtonMenuProps(ref.current));
261
- var items = options == null ? void 0 : options.map(function (option) {
262
- var clss = option != null && option.level ? classes["level" + option.level] : "";
263
- var appliedClasses = (0, _classnames.default)(classes.baseItem, clss);
264
- var labelClss = (0, _classnames.default)(_defineProperty(_defineProperty({}, classes.label, true), classes.emptyLabel, option.value === "" || option.value === selectEmptyValue));
265
- var disabled = !!option.disabled;
266
- var groupHeader = !!option.isGroupHeader;
267
- if (groupHeader) {
268
- return /*#__PURE__*/_react.default.createElement(_core.ListSubheader, {
269
- key: option.value,
270
- className: appliedClasses
271
- }, option.label);
272
- } else {
273
- return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
274
- key: option.value,
275
- value: option.value,
276
- className: appliedClasses,
277
- disabled: disabled
278
- }, /*#__PURE__*/_react.default.createElement(_TooltippedTypography.default, {
279
- noWrap: true,
280
- className: labelClss,
281
- children: option.label,
282
- titleValue: option.label
283
- }));
284
- }
285
- });
286
- var defaultSelect = /*#__PURE__*/_react.default.createElement(_Select.default, {
334
+ var items = native ? null : buildOptionsItems();
335
+ var iconSelect = isIconSelect && /*#__PURE__*/_react.default.createElement(_Select.default, {
336
+ open: open,
287
337
  value: value,
338
+ ref: ref,
288
339
  onChange: handleChange,
289
- onClose: onClose,
290
340
  disableUnderline: true,
291
- IconComponent: SelectIcon,
292
- MenuProps: defaultMenuProps,
341
+ IconComponent: SelectIconButton,
342
+ MenuProps: iconSelectMenuProps,
293
343
  disabled: disabled,
294
344
  error: hasError,
295
345
  native: native,
296
346
  inputProps: inputProps,
297
347
  multiple: multiple,
298
- renderValue: multiple ? renderMultipleValues : undefined,
299
348
  classes: {
300
349
  icon: classes.icon,
301
350
  root: selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.root),
351
+ select: classes.displayNone,
302
352
  disabled: classes.disabled
353
+ },
354
+ onClick: function onClick() {
355
+ return setOpen(!open);
303
356
  }
304
- }, native ? children : items);
305
- var iconSelect = /*#__PURE__*/_react.default.createElement(_Select.default, {
306
- open: open,
357
+ }, items != null ? items : children);
358
+
359
+ // Render the normal select is the icon one is NULL
360
+ var selectToRender = iconSelect || /*#__PURE__*/_react.default.createElement(_Select.default, {
307
361
  value: value,
308
- ref: ref,
309
362
  onChange: handleChange,
363
+ onClose: onClose,
310
364
  disableUnderline: true,
311
- IconComponent: SelectIconButton,
312
- MenuProps: iconSelectMenuProps,
365
+ IconComponent: SelectIcon,
366
+ autoWidth: autoWidth,
367
+ MenuProps: defaultMenuProps,
313
368
  disabled: disabled,
314
369
  error: hasError,
315
370
  native: native,
316
371
  inputProps: inputProps,
317
372
  multiple: multiple,
318
- renderValue: multiple ? renderMultipleValues : undefined,
373
+ renderValue: renderValue != null ? renderValue : multiple ? function (value) {
374
+ return renderMultipleValues(value, options);
375
+ } : undefined,
319
376
  classes: {
320
377
  icon: classes.icon,
321
378
  root: selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.root),
322
- select: classes.displayNone,
323
379
  disabled: classes.disabled
324
- },
325
- onClick: function onClick() {
326
- return setOpen(!open);
327
380
  }
328
- }, native ? children : items);
329
- var select = isIconSelect ? iconSelect : defaultSelect;
330
- return error && /*#__PURE__*/_react.default.createElement("div", {
381
+ }, items != null ? items : children);
382
+ var selectToRenderWithError = hasError && /*#__PURE__*/_react.default.createElement("div", {
331
383
  className: classes.container
332
- }, select, /*#__PURE__*/_react.default.createElement("div", {
384
+ }, selectToRender, /*#__PURE__*/_react.default.createElement("div", {
333
385
  className: (0, _classnames.default)(classes.errorText)
334
- }, error)) || select;
386
+ }, error));
387
+ var selectControl = selectToRenderWithError || selectToRender;
388
+ return multiple === false ? selectControl : /*#__PURE__*/_react.default.createElement(_FormControl.default, {
389
+ className: classes.formControl
390
+ }, selectControl);
335
391
  };
336
- __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseStyles{classes}", function () {
337
- return [useStyles];
392
+ __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseWindowSize{windowSize}\nuseStyles{classes}", function () {
393
+ return [_useWindowSize.default, useStyles];
338
394
  });
339
- __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseStyles{classes}", function () {
340
- return [useStyles];
395
+ __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseWindowSize{windowSize}\nuseStyles{classes}", function () {
396
+ return [_useWindowSize.default, useStyles];
341
397
  });
342
398
  var _default = Select;
343
399
  var _default2 = _default;
@@ -45,7 +45,11 @@ var SelectProps = /*#__PURE__*/function (_ComponentProps) {
45
45
  _this.componentProps.set(_this.constructor.propNames.onClose, null);
46
46
  _this.componentProps.set(_this.constructor.propNames.native, null);
47
47
  _this.componentProps.set(_this.constructor.propNames.inputProps, null);
48
- _this.componentProps.set(_this.constructor.propNames.multiple, null);
48
+ _this.componentProps.set(_this.constructor.propNames.multiple, false);
49
+ _this.componentProps.set(_this.constructor.propNames.autoWidth, true);
50
+ _this.componentProps.set(_this.constructor.propNames.autoFocus, true);
51
+ _this.componentProps.set(_this.constructor.propNames.renderValue, null);
52
+ _this.componentProps.set(_this.constructor.propNames.multipleSelectWidth, 700);
49
53
  _this.componentClasses.set(_this.constructor.ruleNames.root, null);
50
54
  _this.componentClasses.set(_this.constructor.ruleNames.paper, null);
51
55
  _this._isSelectProps = true;
@@ -73,7 +77,11 @@ _defineProperty(SelectProps, "propNames", {
73
77
  onClose: "onClose",
74
78
  native: "native",
75
79
  inputProps: "inputProps",
76
- multiple: "multiple"
80
+ multiple: "multiple",
81
+ autoWidth: "autoWidth",
82
+ autoFocus: "autoFocus",
83
+ renderValue: "renderValue",
84
+ multipleSelectWidth: "multipleSelectWidth"
77
85
  });
78
86
  _defineProperty(SelectProps, "ruleNames", {
79
87
  root: "root",