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

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,39 @@ 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
+ },
105
+ "&:focus, &:active": {
106
+ borderRadius: 0,
107
+ boxShadow: props.multiple ? "none" : "0 0 ".concat(theme.spacing(0.4), " #4fa1f0"),
108
+ "&:hover": {
109
+ backgroundColor: theme.palette.primary.main
110
+ }
104
111
  }
105
112
  }
106
- }
113
+ }, props.autoWidth ? {
114
+ minWidth: "auto !important",
115
+ width: "auto !important"
116
+ } : {});
107
117
  },
108
118
  label: {
109
119
  fontSize: theme.typography.fontSize,
@@ -136,6 +146,12 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
136
146
  color: theme.palette.text.primary,
137
147
  backgroundColor: theme.palette.grey.light,
138
148
  border: 0
149
+ },
150
+ formControl: function formControl(props) {
151
+ return {
152
+ maxWidth: theme.spacing(props.multipleWidthSpacing),
153
+ minWidth: theme.spacing(props.multipleWidthSpacing)
154
+ };
139
155
  }
140
156
  };
141
157
  });
@@ -185,13 +201,18 @@ __signature__(SelectIconButton, "useStyles{classes}", function () {
185
201
  __signature__(SelectIconButton, "useStyles{classes}", function () {
186
202
  return [useStyles];
187
203
  });
188
- var renderMultipleValues = function renderMultipleValues(selected) {
189
- return selected == null ? void 0 : selected.join(", ");
204
+ var renderMultipleValues = exports.renderMultipleValues = function renderMultipleValues(value, options) {
205
+ return options.filter(function (x) {
206
+ return value.indexOf(x.value) !== -1;
207
+ }).map(function (x) {
208
+ return x.label;
209
+ }).join(", ");
190
210
  };
191
211
  var selectEmptyValue = "~~#~~";
192
212
  var Select = function Select(_ref) {
193
213
  var _selectProps$get;
194
- var options = _ref.options,
214
+ var _ref$options = _ref.options,
215
+ options = _ref$options === void 0 ? [] : _ref$options,
195
216
  selectProps = _ref.selectProps,
196
217
  children = _ref.children;
197
218
  if ((0, _SelectProps.isSelectProps)(selectProps) === false) {
@@ -202,7 +223,6 @@ var Select = function Select(_ref) {
202
223
  open = _useState2[0],
203
224
  setOpen = _useState2[1];
204
225
  var ref = (0, _react.useRef)(null);
205
- var classes = useStyles();
206
226
  var update = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.update);
207
227
  var value = (_selectProps$get = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.value)) != null ? _selectProps$get : "";
208
228
  var sortType = (selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.sortType)) || _SelectProps.sortTypeEnum.none;
@@ -215,129 +235,159 @@ var Select = function Select(_ref) {
215
235
  var native = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.native);
216
236
  var onClose = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.onClose);
217
237
  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);
238
+ var multiple = (selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.multiple)) || false;
239
+ var renderValue = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.renderValue);
240
+ var autoWidth = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.autoWidth);
241
+ var autoFocus = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.autoFocus);
242
+ var multipleSelectWidth = selectProps == null ? void 0 : selectProps.get(_SelectProps.default.propNames.multipleSelectWidth);
219
243
  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"
244
+ var windowSize = (0, _useWindowSize.default)();
245
+
246
+ // When too many elements are selected from the list, the component can be longer than the screen, not very convenient
247
+ // We need a fix length unfortunately, for large screen, we use 100% of the multipleSelectWidth, for medium length, 75%
248
+ // But for very small width, we use the inner width of the browser minus 150px (completely arbitrary value), otherwise
249
+ // the drop-down is too large and hard to read
250
+ var multipleSelectWidthFactor = windowSize.innerWidth > 1200 ? 1 : 0.75;
251
+ var multipleWidthSpacing = windowSize.innerWidth > 750 ? multipleSelectWidth / 10 * multipleSelectWidthFactor : (windowSize.innerWidth - 150) / 10;
252
+ var classes = useStyles({
253
+ multiple: multiple,
254
+ autoWidth: autoWidth,
255
+ multipleWidthSpacing: multipleWidthSpacing
256
+ });
257
+ var buildOptionsItems = function buildOptionsItems() {
258
+ var allOptions = [].concat(options);
259
+ if (sortType === _SelectProps.sortTypeEnum.numeric) {
260
+ allOptions.sort(function (a, b) {
261
+ return a.sortOrder.localeCompare(b.sortOrder, undefined, {
262
+ numeric: true,
263
+ sensitivity: "base"
264
+ });
225
265
  });
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;
266
+ } else if (sortType === _SelectProps.sortTypeEnum.default) {
267
+ allOptions.sort(function (a, b) {
268
+ return a.sortOrder > b.sortOrder ? 1 : -1;
269
+ });
270
+ } else if (sortType === _SelectProps.sortTypeEnum.alphabetical) {
271
+ allOptions.sort(function (a, b) {
272
+ if (a.value === selectEmptyValue) {
273
+ return -1;
274
+ }
275
+ if (b.value === selectEmptyValue) {
276
+ return 1;
277
+ }
278
+ return a.label.localeCompare(b.label);
279
+ });
280
+ }
281
+ if (showAllValue && showAllLabel) {
282
+ allOptions.unshift({
283
+ value: showAllValue,
284
+ label: showAllLabel
285
+ });
286
+ }
287
+ return allOptions.map(function (option) {
288
+ var clss = option != null && option.level ? classes["level" + option.level] : "";
289
+ var appliedClasses = (0, _classnames.default)(classes.baseItem, clss);
290
+ var labelClss = (0, _classnames.default)(_defineProperty(_defineProperty({}, classes.label, true), classes.emptyLabel, option.value === "" || option.value === selectEmptyValue));
291
+ var disabled = !!option.disabled;
292
+ var groupHeader = !!option.isGroupHeader;
293
+ if (groupHeader) {
294
+ return /*#__PURE__*/_react.default.createElement(_core.ListSubheader, {
295
+ key: option.value,
296
+ className: appliedClasses
297
+ }, option.label);
298
+ } else {
299
+ return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
300
+ key: option.value,
301
+ value: option.value,
302
+ className: appliedClasses,
303
+ disabled: disabled
304
+ }, /*#__PURE__*/_react.default.createElement(_TooltippedTypography.default, {
305
+ noWrap: true,
306
+ className: labelClss,
307
+ children: option.label,
308
+ titleValue: option.label
309
+ }));
238
310
  }
239
- return a.label.localeCompare(b.label);
240
311
  });
241
- }
242
- if (showAllValue && showAllLabel) {
243
- options.unshift({
244
- value: showAllValue,
245
- label: showAllLabel
246
- });
247
- }
312
+ };
248
313
  var handleChange = function handleChange(event) {
249
314
  update(event.target.value);
250
315
  };
251
316
  var defaultMenuProps = _objectSpread(_objectSpread({
252
317
  classes: {
253
318
  paper: (0, _classnames.default)(classes.selectPaper, selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.paper))
254
- }
319
+ },
320
+ autoFocus: autoFocus
255
321
  }, MenuProps), positionOverride);
256
322
  var iconSelectMenuProps = _objectSpread(_objectSpread({
257
323
  classes: {
258
324
  paper: (0, _classnames.default)(classes.selectPaper, selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.paper))
259
- }
325
+ },
326
+ autoFocus: autoFocus
260
327
  }, 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, {
328
+ var items = native ? null : buildOptionsItems();
329
+ var iconSelect = isIconSelect && /*#__PURE__*/_react.default.createElement(_Select.default, {
330
+ open: open,
287
331
  value: value,
332
+ ref: ref,
288
333
  onChange: handleChange,
289
- onClose: onClose,
290
334
  disableUnderline: true,
291
- IconComponent: SelectIcon,
292
- MenuProps: defaultMenuProps,
335
+ IconComponent: SelectIconButton,
336
+ MenuProps: iconSelectMenuProps,
293
337
  disabled: disabled,
294
338
  error: hasError,
295
339
  native: native,
296
340
  inputProps: inputProps,
297
341
  multiple: multiple,
298
- renderValue: multiple ? renderMultipleValues : undefined,
299
342
  classes: {
300
343
  icon: classes.icon,
301
344
  root: selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.root),
345
+ select: classes.displayNone,
302
346
  disabled: classes.disabled
347
+ },
348
+ onClick: function onClick() {
349
+ return setOpen(!open);
303
350
  }
304
- }, native ? children : items);
305
- var iconSelect = /*#__PURE__*/_react.default.createElement(_Select.default, {
306
- open: open,
351
+ }, items != null ? items : children);
352
+
353
+ // Render the normal select is the icon one is NULL
354
+ var selectToRender = iconSelect || /*#__PURE__*/_react.default.createElement(_Select.default, {
307
355
  value: value,
308
- ref: ref,
309
356
  onChange: handleChange,
357
+ onClose: onClose,
310
358
  disableUnderline: true,
311
- IconComponent: SelectIconButton,
312
- MenuProps: iconSelectMenuProps,
359
+ IconComponent: SelectIcon,
360
+ autoWidth: autoWidth,
361
+ MenuProps: defaultMenuProps,
313
362
  disabled: disabled,
314
363
  error: hasError,
315
364
  native: native,
316
365
  inputProps: inputProps,
317
366
  multiple: multiple,
318
- renderValue: multiple ? renderMultipleValues : undefined,
367
+ renderValue: renderValue != null ? renderValue : multiple ? function (value) {
368
+ return renderMultipleValues(value, options);
369
+ } : undefined,
319
370
  classes: {
320
371
  icon: classes.icon,
321
372
  root: selectProps == null ? void 0 : selectProps.getStyle(_SelectProps.default.ruleNames.root),
322
- select: classes.displayNone,
323
373
  disabled: classes.disabled
324
- },
325
- onClick: function onClick() {
326
- return setOpen(!open);
327
374
  }
328
- }, native ? children : items);
329
- var select = isIconSelect ? iconSelect : defaultSelect;
330
- return error && /*#__PURE__*/_react.default.createElement("div", {
375
+ }, items != null ? items : children);
376
+ var selectToRenderWithError = hasError && /*#__PURE__*/_react.default.createElement("div", {
331
377
  className: classes.container
332
- }, select, /*#__PURE__*/_react.default.createElement("div", {
378
+ }, selectToRender, /*#__PURE__*/_react.default.createElement("div", {
333
379
  className: (0, _classnames.default)(classes.errorText)
334
- }, error)) || select;
380
+ }, error));
381
+ var selectControl = selectToRenderWithError || selectToRender;
382
+ return multiple === false ? selectControl : /*#__PURE__*/_react.default.createElement(_FormControl.default, {
383
+ className: classes.formControl
384
+ }, selectControl);
335
385
  };
336
- __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseStyles{classes}", function () {
337
- return [useStyles];
386
+ __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseWindowSize{windowSize}\nuseStyles{classes}", function () {
387
+ return [_useWindowSize.default, useStyles];
338
388
  });
339
- __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseStyles{classes}", function () {
340
- return [useStyles];
389
+ __signature__(Select, "useState{[open, setOpen](false)}\nuseRef{ref}\nuseWindowSize{windowSize}\nuseStyles{classes}", function () {
390
+ return [_useWindowSize.default, useStyles];
341
391
  });
342
392
  var _default = Select;
343
393
  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",