@os-design/core 1.0.183 → 1.0.184
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/dist/cjs/DatePicker/index.js +7 -8
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/MenuGroup/index.js +37 -16
- package/dist/cjs/MenuGroup/index.js.map +1 -1
- package/dist/cjs/Select/index.js +321 -63
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/esm/DatePicker/index.js +5 -6
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/MenuGroup/index.js +44 -32
- package/dist/esm/MenuGroup/index.js.map +1 -1
- package/dist/esm/Select/index.js +342 -59
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/types/DatePicker/index.d.ts.map +1 -1
- package/dist/types/MenuGroup/index.d.ts +13 -6
- package/dist/types/MenuGroup/index.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +65 -7
- package/dist/types/Select/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/Select/SelectList.js +0 -146
- package/dist/cjs/Select/SelectList.js.map +0 -1
- package/dist/cjs/Select/SelectToggle.js +0 -195
- package/dist/cjs/Select/SelectToggle.js.map +0 -1
- package/dist/esm/Select/SelectList.js +0 -125
- package/dist/esm/Select/SelectList.js.map +0 -1
- package/dist/esm/Select/SelectToggle.js +0 -217
- package/dist/esm/Select/SelectToggle.js.map +0 -1
- package/dist/types/Select/SelectList.d.ts +0 -22
- package/dist/types/Select/SelectList.d.ts.map +0 -1
- package/dist/types/Select/SelectToggle.d.ts +0 -73
- package/dist/types/Select/SelectToggle.d.ts.map +0 -1
package/dist/cjs/Select/index.js
CHANGED
|
@@ -4,26 +4,39 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports["default"] = exports.SelectContainer = void 0;
|
|
7
|
+
exports["default"] = exports.ToggleRightAddon = exports.ToggleLeftAddon = exports.ToggleIconContainer = exports.ToggleContent = exports.ToggleContainer = exports.Title = exports.SelectContainer = exports.Placeholder = exports.ClearIcon = void 0;
|
|
8
8
|
var _react = require("@emotion/react");
|
|
9
9
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
+
var _icons = require("@os-design/icons");
|
|
10
11
|
var _media = require("@os-design/media");
|
|
11
12
|
var _styles = require("@os-design/styles");
|
|
12
13
|
var _theming = require("@os-design/theming");
|
|
13
14
|
var _utils = require("@os-design/utils");
|
|
14
15
|
var _react2 = _interopRequireWildcard(require("react"));
|
|
16
|
+
var _reactWindow = require("react-window");
|
|
17
|
+
var _Button = _interopRequireDefault(require("../Button"));
|
|
15
18
|
var _Input = require("../Input");
|
|
16
19
|
var _InputSearch = _interopRequireDefault(require("../InputSearch"));
|
|
20
|
+
var _useRWLoadNext = _interopRequireDefault(require("../List/utils/useRWLoadNext"));
|
|
17
21
|
var _Menu = _interopRequireDefault(require("../Menu"));
|
|
18
|
-
var
|
|
19
|
-
var
|
|
22
|
+
var _MenuItem = _interopRequireDefault(require("../MenuItem"));
|
|
23
|
+
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
20
24
|
var _defaultLocale = _interopRequireDefault(require("./utils/defaultLocale"));
|
|
21
|
-
var _excluded = ["options", "left", "leftHasPadding", "right", "rightHasPadding", "placeholder", "searchVisible", "searchProps", "notFoundText", "unbordered", "loading", "disabled", "autoFocus", "autoOpen", "clearVisible", "threshold", "visibleCount", "overscanCount", "maxSelectedItems", "locale", "value", "defaultValue", "onChange", "onLoadNext", "onClose", "onBlur", "size", "placement"]
|
|
22
|
-
|
|
25
|
+
var _excluded = ["options", "left", "leftHasPadding", "right", "rightHasPadding", "placeholder", "searchVisible", "searchProps", "notFoundText", "unbordered", "loading", "disabled", "autoFocus", "autoOpen", "clearVisible", "threshold", "visibleCount", "overscanCount", "multiple", "maxSelectedItems", "locale", "value", "defaultValue", "onChange", "onLoadNext", "onClose", "onBlur", "size", "placement"],
|
|
26
|
+
_excluded2 = ["style"],
|
|
27
|
+
_excluded3 = ["title", "value", "onClick"];
|
|
28
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
|
|
23
29
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
26
32
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
33
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
34
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
|
+
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; }
|
|
36
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
37
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
38
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
39
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
27
40
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
28
41
|
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."); }
|
|
29
42
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -33,24 +46,24 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
33
46
|
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; }
|
|
34
47
|
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; }
|
|
35
48
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
36
|
-
var
|
|
49
|
+
var selectContainerPaddingStyles = function selectContainerPaddingStyles(p) {
|
|
37
50
|
var paddingVertical = (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;
|
|
38
51
|
return (0, _react.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: calc(", "em - 1px) 0;\n "])), paddingVertical);
|
|
39
52
|
};
|
|
40
|
-
var
|
|
53
|
+
var selectContainerOpenedStyles = function selectContainerOpenedStyles(p) {
|
|
41
54
|
return p.opened && !p.unbordered && (0, _react.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-color: ", ";\n box-shadow: 0 0 0 0.15em ", ";\n "])), (0, _theming.clr)(p.theme.inputFocusColorBorder), (0, _theming.clr)(p.theme.inputFocusColorShadow));
|
|
42
55
|
};
|
|
43
|
-
var
|
|
56
|
+
var selectContainerUnborderedStyles = function selectContainerUnborderedStyles(p) {
|
|
44
57
|
return p.unbordered && (0, _react.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n border: 0;\n box-shadow: none !important;\n ", ";\n "])), (0, _styles.transitionStyles)('background-color')(p));
|
|
45
58
|
};
|
|
46
|
-
var
|
|
59
|
+
var selectContainerUnborderedHoverStyles = function selectContainerUnborderedHoverStyles(p) {
|
|
47
60
|
return p.unbordered && !p.disabled && (0, _react.css)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ", ";\n }\n }\n "])), (0, _theming.clr)(p.theme.buttonGhostColorBgHover));
|
|
48
61
|
};
|
|
49
62
|
var SelectContainer = (0, _styled["default"])(_Input.InputContainer, (0, _utils.omitEmotionProps)('opened', 'unbordered', 'disabled'))(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n cursor: ", ";\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ", "em;\n\n ", ";\n ", ";\n ", ";\n ", ";\n"])), function (p) {
|
|
50
63
|
return !p.disabled ? 'pointer' : 'not-allowed';
|
|
51
64
|
}, function (p) {
|
|
52
65
|
return p.theme.baseHeight;
|
|
53
|
-
},
|
|
66
|
+
}, selectContainerPaddingStyles, selectContainerOpenedStyles, selectContainerUnborderedStyles, selectContainerUnborderedHoverStyles);
|
|
54
67
|
exports.SelectContainer = SelectContainer;
|
|
55
68
|
var SelectMenu = (0, _styled["default"])(_Menu["default"], (0, _utils.omitEmotionProps)('width'))(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ", " {\n width: ", "px;\n }\n"])), _media.m.min.xs, function (p) {
|
|
56
69
|
return p.width;
|
|
@@ -67,10 +80,75 @@ var InputSearchContainer = _styled["default"].div(_templateObject8 || (_template
|
|
|
67
80
|
}, function (p) {
|
|
68
81
|
return p.theme.inputPaddingHorizontal;
|
|
69
82
|
});
|
|
83
|
+
var ToggleContainer = _styled["default"].div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n"])));
|
|
84
|
+
exports.ToggleContainer = ToggleContainer;
|
|
85
|
+
var toggleContentNotHasLeftStyles = function toggleContentNotHasLeftStyles(p) {
|
|
86
|
+
return !p.hasLeft && (0, _react.css)(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
87
|
+
};
|
|
88
|
+
var toggleContentNotHasRightStyles = function toggleContentNotHasRightStyles(p) {
|
|
89
|
+
return !p.hasRight && !p.unbordered && (0, _react.css)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
90
|
+
};
|
|
91
|
+
var ToggleContent = (0, _styled["default"])('div', (0, _utils.omitEmotionProps)('hasLeft', 'hasRight', 'unbordered'))(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n flex: 1;\n ", ";\n ", ";\n ", ";\n"])), toggleContentNotHasLeftStyles, toggleContentNotHasRightStyles, _styles.ellipsisStyles);
|
|
92
|
+
exports.ToggleContent = ToggleContent;
|
|
93
|
+
var Placeholder = _styled["default"].span(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n"])), function (p) {
|
|
94
|
+
return (0, _theming.clr)(p.theme.inputColorPlaceholder);
|
|
95
|
+
}, _styles.ellipsisStyles);
|
|
96
|
+
exports.Placeholder = Placeholder;
|
|
97
|
+
var titleUnborderedTitleStyles = function titleUnborderedTitleStyles(p) {
|
|
98
|
+
return p.unbordered && (0, _react.css)(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n font-weight: 500;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
|
|
99
|
+
};
|
|
100
|
+
var titleDisabledStyles = function titleDisabledStyles(p) {
|
|
101
|
+
return p.disabled && (0, _react.css)(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n color: ", ";\n "])), (0, _theming.clr)(p.theme.inputDisabledColorText));
|
|
102
|
+
};
|
|
103
|
+
var Title = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('disabled', 'unbordered'))(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n ", ";\n ", ";\n"])), function (p) {
|
|
104
|
+
return (0, _theming.clr)(p.theme.colorText);
|
|
105
|
+
}, titleUnborderedTitleStyles, titleDisabledStyles, _styles.ellipsisStyles);
|
|
106
|
+
exports.Title = Title;
|
|
107
|
+
var ToggleListItem = (0, _styled["default"])(_Tag["default"], (0, _utils.omitEmotionProps)('disabled'))(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ", "em;\n ", ";\n"])), function (p) {
|
|
108
|
+
return p.theme.selectToggleListItemHeight;
|
|
109
|
+
}, titleDisabledStyles);
|
|
110
|
+
var ToggleList = _styled["default"].div(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ", "em\n ", "em 0;\n\n & > div {\n margin: 0 ", "em\n ", "em 0;\n }\n"])), function (p) {
|
|
111
|
+
return p.theme.selectToggleListItemGap;
|
|
112
|
+
}, function (p) {
|
|
113
|
+
return -p.theme.selectToggleListItemGap;
|
|
114
|
+
}, function (p) {
|
|
115
|
+
return p.theme.selectToggleListItemGap;
|
|
116
|
+
}, function (p) {
|
|
117
|
+
return p.theme.selectToggleListItemGap;
|
|
118
|
+
});
|
|
119
|
+
var DeleteButton = _styled["default"].button(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ", ";\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ", ";\n }\n }\n\n ", ";\n"])), _styles.resetButtonStyles, function (p) {
|
|
120
|
+
return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIcon);
|
|
121
|
+
}, function (p) {
|
|
122
|
+
return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIconHover);
|
|
123
|
+
}, (0, _styles.transitionStyles)('color'));
|
|
124
|
+
var toggleIconUnborderedStyles = function toggleIconUnborderedStyles(p) {
|
|
125
|
+
return p.unbordered && (0, _react.css)(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n padding-top: 0.2em;\n font-size: 0.8em;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
|
|
126
|
+
};
|
|
127
|
+
var ToggleIconContainer = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('unbordered', 'disabled'))(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n color: ", ";\n line-height: 1;\n ", ";\n"])), function (p) {
|
|
128
|
+
return (0, _theming.clr)(p.theme.selectColorIcon);
|
|
129
|
+
}, toggleIconUnborderedStyles);
|
|
130
|
+
exports.ToggleIconContainer = ToggleIconContainer;
|
|
131
|
+
var ClearIcon = (0, _styled["default"])(_icons.CloseCircle)(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n transform: scale(1.2) !important;\n"])));
|
|
132
|
+
exports.ClearIcon = ClearIcon;
|
|
133
|
+
var Addon = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('hasPadding'))(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n user-select: none;\n color: ", ";\n\n svg {\n transform: scale(1.2);\n }\n"])), function (p) {
|
|
134
|
+
return (0, _theming.clr)(p.theme.inputColorPlaceholder);
|
|
135
|
+
});
|
|
136
|
+
var ToggleLeftAddon = (0, _styled["default"])(Addon)(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n ", "\n"])), function (p) {
|
|
137
|
+
return p.theme.inputAddonPaddingHorizontal;
|
|
138
|
+
}, function (p) {
|
|
139
|
+
return p.hasPadding && (0, _react.css)(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
140
|
+
});
|
|
141
|
+
exports.ToggleLeftAddon = ToggleLeftAddon;
|
|
142
|
+
var ToggleRightAddon = (0, _styled["default"])(Addon)(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n ", "\n"])), function (p) {
|
|
143
|
+
return p.theme.inputAddonPaddingHorizontal;
|
|
144
|
+
}, function (p) {
|
|
145
|
+
return p.hasPadding && (0, _react.css)(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
146
|
+
});
|
|
70
147
|
|
|
71
148
|
/**
|
|
72
149
|
* The component that allows to pick a value from predefined options.
|
|
73
150
|
*/
|
|
151
|
+
exports.ToggleRightAddon = ToggleRightAddon;
|
|
74
152
|
var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
75
153
|
var _ref$options = _ref.options,
|
|
76
154
|
options = _ref$options === void 0 ? [] : _ref$options,
|
|
@@ -105,8 +183,10 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
105
183
|
visibleCount = _ref$visibleCount === void 0 ? 6 : _ref$visibleCount,
|
|
106
184
|
_ref$overscanCount = _ref.overscanCount,
|
|
107
185
|
overscanCount = _ref$overscanCount === void 0 ? 10 : _ref$overscanCount,
|
|
186
|
+
_ref$multiple = _ref.multiple,
|
|
187
|
+
multiple = _ref$multiple === void 0 ? false : _ref$multiple,
|
|
108
188
|
_ref$maxSelectedItems = _ref.maxSelectedItems,
|
|
109
|
-
maxSelectedItems = _ref$maxSelectedItems === void 0 ?
|
|
189
|
+
maxSelectedItems = _ref$maxSelectedItems === void 0 ? 0 : _ref$maxSelectedItems,
|
|
110
190
|
_ref$locale = _ref.locale,
|
|
111
191
|
locale = _ref$locale === void 0 ? _defaultLocale["default"] : _ref$locale,
|
|
112
192
|
value = _ref.value,
|
|
@@ -134,6 +214,7 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
134
214
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
135
215
|
opened = _useState4[0],
|
|
136
216
|
setOpened = _useState4[1];
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
137
218
|
var _useForwardedState = (0, _utils.useForwardedState)({
|
|
138
219
|
value: value,
|
|
139
220
|
defaultValue: defaultValue,
|
|
@@ -144,8 +225,7 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
144
225
|
setForwardedValue = _useForwardedState2[1];
|
|
145
226
|
(0, _react2.useEffect)(function () {
|
|
146
227
|
var _containerRef$current;
|
|
147
|
-
if (
|
|
148
|
-
(_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.focus();
|
|
228
|
+
if (autoFocus) (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.focus();
|
|
149
229
|
}, [autoFocus, containerRef]);
|
|
150
230
|
var onCloseRef = (0, _react2.useRef)(onClose);
|
|
151
231
|
(0, _react2.useEffect)(function () {
|
|
@@ -182,23 +262,205 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
182
262
|
if (!containerRef.current) return;
|
|
183
263
|
containerRef.current.setAttribute('aria-haspopup', 'listbox');
|
|
184
264
|
}, []);
|
|
185
|
-
var selectedItems = (0, _react2.useMemo)(function () {
|
|
186
|
-
return (forwardedValue || []).map(function (v) {
|
|
187
|
-
var option = (options || []).find(function (item) {
|
|
188
|
-
return item.value === v;
|
|
189
|
-
});
|
|
190
|
-
return {
|
|
191
|
-
title: option ? option.title || '' : '',
|
|
192
|
-
value: v
|
|
193
|
-
};
|
|
194
|
-
});
|
|
195
|
-
}, [forwardedValue, options]);
|
|
196
265
|
var listBoxId = (0, _react2.useMemo)(function () {
|
|
197
266
|
return "listbox-".concat(Math.random().toString(36).slice(2, 11));
|
|
198
267
|
}, []);
|
|
199
268
|
var blurHandler = (0, _react2.useCallback)(function (e) {
|
|
200
269
|
if (!opened) onBlur(e);
|
|
201
270
|
}, [onBlur, opened]);
|
|
271
|
+
var onDelete = (0, _react2.useCallback)(function (v) {
|
|
272
|
+
if (!multiple) return;
|
|
273
|
+
setForwardedValue((forwardedValue || []).filter(function (item) {
|
|
274
|
+
return item !== v;
|
|
275
|
+
}));
|
|
276
|
+
}, [forwardedValue, multiple, setForwardedValue]);
|
|
277
|
+
var toggleContent = (0, _react2.useMemo)(function () {
|
|
278
|
+
if (multiple) {
|
|
279
|
+
if (!forwardedValue || forwardedValue.length === 0) {
|
|
280
|
+
return /*#__PURE__*/_react2["default"].createElement(Placeholder, null, placeholder);
|
|
281
|
+
}
|
|
282
|
+
var items = forwardedValue.map(function (v) {
|
|
283
|
+
var option = (options || []).find(function (item) {
|
|
284
|
+
return item.value === v;
|
|
285
|
+
});
|
|
286
|
+
return {
|
|
287
|
+
title: option ? option.title || '' : '',
|
|
288
|
+
value: v
|
|
289
|
+
};
|
|
290
|
+
});
|
|
291
|
+
return /*#__PURE__*/_react2["default"].createElement(ToggleList, null, items.map(function (_ref2) {
|
|
292
|
+
var title = _ref2.title,
|
|
293
|
+
v = _ref2.value;
|
|
294
|
+
return /*#__PURE__*/_react2["default"].createElement(ToggleListItem, {
|
|
295
|
+
key: v,
|
|
296
|
+
disabled: disabled,
|
|
297
|
+
right: !disabled ? /*#__PURE__*/_react2["default"].createElement(DeleteButton, {
|
|
298
|
+
onClick: function onClick(e) {
|
|
299
|
+
onDelete(v);
|
|
300
|
+
e.stopPropagation();
|
|
301
|
+
},
|
|
302
|
+
onKeyDown: function onKeyDown(e) {
|
|
303
|
+
return e.stopPropagation();
|
|
304
|
+
},
|
|
305
|
+
"aria-label": "".concat(locale.deleteLabel, " ").concat(title),
|
|
306
|
+
"aria-hidden": true
|
|
307
|
+
}, /*#__PURE__*/_react2["default"].createElement(_icons.Close, null)) : undefined,
|
|
308
|
+
"aria-hidden": true
|
|
309
|
+
}, title);
|
|
310
|
+
}));
|
|
311
|
+
}
|
|
312
|
+
if (!forwardedValue) {
|
|
313
|
+
return /*#__PURE__*/_react2["default"].createElement(Placeholder, null, placeholder);
|
|
314
|
+
}
|
|
315
|
+
var option = (options || []).find(function (item) {
|
|
316
|
+
return item.value === forwardedValue;
|
|
317
|
+
});
|
|
318
|
+
return /*#__PURE__*/_react2["default"].createElement(Title, {
|
|
319
|
+
disabled: disabled,
|
|
320
|
+
unbordered: unbordered
|
|
321
|
+
}, option ? option.title : '');
|
|
322
|
+
}, [disabled, forwardedValue, locale.deleteLabel, multiple, onDelete, options, placeholder, unbordered]);
|
|
323
|
+
var toggleShowClearButton = (0, _react2.useMemo)(function () {
|
|
324
|
+
if (!clearVisible) return false;
|
|
325
|
+
if (multiple) return forwardedValue && forwardedValue.length > 0;
|
|
326
|
+
return !!forwardedValue;
|
|
327
|
+
}, [clearVisible, forwardedValue, multiple]);
|
|
328
|
+
var toggleOnClear = (0, _react2.useCallback)(function () {
|
|
329
|
+
setForwardedValue(multiple ? [] : null);
|
|
330
|
+
if (!containerRef.current) return;
|
|
331
|
+
containerRef.current.focus();
|
|
332
|
+
}, [containerRef, multiple, setForwardedValue]);
|
|
333
|
+
var toggleRightValue = (0, _react2.useMemo)(function () {
|
|
334
|
+
if (loading) return /*#__PURE__*/_react2["default"].createElement(_icons.Loading, null);
|
|
335
|
+
if (toggleShowClearButton) {
|
|
336
|
+
return /*#__PURE__*/_react2["default"].createElement(_Button["default"], {
|
|
337
|
+
type: "ghost",
|
|
338
|
+
wide: "never",
|
|
339
|
+
size: "small",
|
|
340
|
+
disabled: disabled,
|
|
341
|
+
onClick: function onClick(e) {
|
|
342
|
+
toggleOnClear();
|
|
343
|
+
e.stopPropagation();
|
|
344
|
+
},
|
|
345
|
+
onKeyDown: function onKeyDown(e) {
|
|
346
|
+
if (e.key === 'Enter') toggleOnClear();
|
|
347
|
+
e.stopPropagation();
|
|
348
|
+
},
|
|
349
|
+
"aria-label": locale.clearLabel
|
|
350
|
+
}, /*#__PURE__*/_react2["default"].createElement(ClearIcon, null));
|
|
351
|
+
}
|
|
352
|
+
return right || /*#__PURE__*/_react2["default"].createElement(ToggleIconContainer, {
|
|
353
|
+
unbordered: unbordered,
|
|
354
|
+
disabled: disabled
|
|
355
|
+
}, opened ? /*#__PURE__*/_react2["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react2["default"].createElement(_icons.Down, null));
|
|
356
|
+
}, [disabled, loading, locale.clearLabel, opened, right, toggleOnClear, toggleShowClearButton, unbordered]);
|
|
357
|
+
var toggleRightHasPaddingValue = (0, _react2.useMemo)(function () {
|
|
358
|
+
if (loading) return true;
|
|
359
|
+
if (toggleShowClearButton) return false;
|
|
360
|
+
return right ? rightHasPadding : true;
|
|
361
|
+
}, [loading, right, rightHasPadding, toggleShowClearButton]);
|
|
362
|
+
var onSelect = (0, _react2.useCallback)(function (v) {
|
|
363
|
+
if (multiple) {
|
|
364
|
+
// Delete the value because it was already selected
|
|
365
|
+
if ((forwardedValue || []).includes(v)) {
|
|
366
|
+
setForwardedValue((forwardedValue || []).filter(function (item) {
|
|
367
|
+
return item !== v;
|
|
368
|
+
}));
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Add a new value if the number of selected items is less than max
|
|
373
|
+
if (maxSelectedItems === 0 || (forwardedValue || []).length < maxSelectedItems) {
|
|
374
|
+
setForwardedValue([].concat(_toConsumableArray(forwardedValue || []), [v]));
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
setForwardedValue(v);
|
|
380
|
+
}, [forwardedValue, maxSelectedItems, multiple, setForwardedValue]);
|
|
381
|
+
var windowSize = (0, _utils.useSize)();
|
|
382
|
+
var isMinXs = (0, _media.useIsMinWidth)('xs');
|
|
383
|
+
var fontSize = (0, _utils.useFontSize)(document.body);
|
|
384
|
+
var _useTheme = (0, _theming.useTheme)(),
|
|
385
|
+
theme = _useTheme.theme;
|
|
386
|
+
var scaleFactor = (0, _react2.useMemo)(function () {
|
|
387
|
+
var s = size || 'medium';
|
|
388
|
+
return ['small', 'medium', 'large'].includes(s) ? theme.sizes[s] : Number(s.replace(/^([0-9]+(\.[0-9]+)?).*/, '$1')) || 1; // Extract the number
|
|
389
|
+
}, [size, theme.sizes]);
|
|
390
|
+
var paddingBottom = (0, _react2.useMemo)(function () {
|
|
391
|
+
var paddingEm = isMinXs ? theme.menuPaddingVertical : theme.modalBodyPaddingVertical[0];
|
|
392
|
+
return paddingEm * fontSize * scaleFactor;
|
|
393
|
+
}, [isMinXs, theme.menuPaddingVertical, theme.modalBodyPaddingVertical, fontSize, scaleFactor]);
|
|
394
|
+
var paddingTop = (0, _react2.useMemo)(function () {
|
|
395
|
+
return searchVisible ? 5 * scaleFactor : paddingBottom;
|
|
396
|
+
}, [searchVisible, scaleFactor, paddingBottom]);
|
|
397
|
+
var searchInputHeight = (0, _react2.useMemo)(function () {
|
|
398
|
+
return searchVisible ? (theme.baseHeight + theme.menuPaddingVertical) * fontSize * scaleFactor : 0;
|
|
399
|
+
}, [searchVisible, theme.baseHeight, theme.menuPaddingVertical, fontSize, scaleFactor]);
|
|
400
|
+
var itemSize = (0, _react2.useMemo)(function () {
|
|
401
|
+
return theme.menuItemHeight * fontSize * scaleFactor;
|
|
402
|
+
}, [theme.menuItemHeight, fontSize, scaleFactor]);
|
|
403
|
+
var height = (0, _react2.useMemo)(function () {
|
|
404
|
+
// Modal
|
|
405
|
+
if (!isMinXs) {
|
|
406
|
+
var maxHeight = windowSize.height - theme.modalHeaderHeight * fontSize * scaleFactor - searchInputHeight;
|
|
407
|
+
var curHeight = options.length * itemSize + paddingTop + paddingBottom;
|
|
408
|
+
return curHeight < maxHeight ? curHeight : maxHeight;
|
|
409
|
+
}
|
|
410
|
+
// Popover
|
|
411
|
+
var count = options.length < visibleCount ? options.length : visibleCount;
|
|
412
|
+
return count * itemSize + paddingTop + paddingBottom;
|
|
413
|
+
}, [isMinXs, options.length, visibleCount, itemSize, windowSize.height, theme.modalHeaderHeight, fontSize, scaleFactor, searchInputHeight, paddingTop, paddingBottom]);
|
|
414
|
+
var scrollHandler = (0, _useRWLoadNext["default"])({
|
|
415
|
+
itemCount: options.length,
|
|
416
|
+
threshold: threshold,
|
|
417
|
+
itemSize: itemSize,
|
|
418
|
+
paddingTop: paddingTop,
|
|
419
|
+
height: height,
|
|
420
|
+
onLoadNext: onLoadNext
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
424
|
+
var InnerElement = (0, _react2.useCallback)(function (_ref3) {
|
|
425
|
+
var style = _ref3.style,
|
|
426
|
+
innerElementRest = _objectWithoutProperties(_ref3, _excluded2);
|
|
427
|
+
return /*#__PURE__*/_react2["default"].createElement("div", _extends({
|
|
428
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
429
|
+
height: "".concat(parseFloat(style.height) + paddingTop + paddingBottom, "px")
|
|
430
|
+
}),
|
|
431
|
+
role: "listbox",
|
|
432
|
+
id: listBoxId
|
|
433
|
+
}, innerElementRest));
|
|
434
|
+
}, [listBoxId, paddingBottom, paddingTop]);
|
|
435
|
+
var listItemFn = (0, _react2.useCallback)(function (_ref4) {
|
|
436
|
+
var index = _ref4.index,
|
|
437
|
+
style = _ref4.style;
|
|
438
|
+
var _options$index = options[index],
|
|
439
|
+
optionTitle = _options$index.title,
|
|
440
|
+
optionValue = _options$index.value,
|
|
441
|
+
optionOnClick = _options$index.onClick,
|
|
442
|
+
restOption = _objectWithoutProperties(_options$index, _excluded3);
|
|
443
|
+
return /*#__PURE__*/_react2["default"].createElement(_MenuItem["default"], _extends({
|
|
444
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
445
|
+
top: "".concat(parseFloat(style.top ? style.top.toString() : '0') + paddingTop, "px")
|
|
446
|
+
}),
|
|
447
|
+
selected: multiple && (forwardedValue || []).includes(optionValue || '') || !multiple && forwardedValue === optionValue,
|
|
448
|
+
onClick: function onClick(e) {
|
|
449
|
+
if (!optionValue) return;
|
|
450
|
+
onSelect(optionValue);
|
|
451
|
+
|
|
452
|
+
// Focus the input.
|
|
453
|
+
// Otherwise, if multiple is false and the user presses enter to select an item,
|
|
454
|
+
// the input will lose focus.
|
|
455
|
+
if (containerRef.current && !multiple) {
|
|
456
|
+
containerRef.current.focus();
|
|
457
|
+
}
|
|
458
|
+
if (optionOnClick) optionOnClick(e);
|
|
459
|
+
},
|
|
460
|
+
role: "option",
|
|
461
|
+
"aria-selected": multiple && (forwardedValue || []).includes(optionValue || '') || !multiple && forwardedValue === optionValue
|
|
462
|
+
}, restOption), optionTitle);
|
|
463
|
+
}, [containerRef, forwardedValue, multiple, onSelect, options, paddingTop]);
|
|
202
464
|
return /*#__PURE__*/_react2["default"].createElement(_react2["default"].Fragment, null, /*#__PURE__*/_react2["default"].createElement(SelectContainer, _extends({
|
|
203
465
|
opened: opened,
|
|
204
466
|
unbordered: unbordered,
|
|
@@ -227,31 +489,29 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
227
489
|
"aria-owns": listBoxId
|
|
228
490
|
}, rest, {
|
|
229
491
|
ref: mergedContainerRef
|
|
230
|
-
}), /*#__PURE__*/_react2["default"].createElement(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
locale: locale
|
|
254
|
-
})), /*#__PURE__*/_react2["default"].createElement(SelectMenu, {
|
|
492
|
+
}), /*#__PURE__*/_react2["default"].createElement(ToggleContainer, null, left && /*#__PURE__*/_react2["default"].createElement(_theming.ThemeOverrider, {
|
|
493
|
+
overrides: function overrides(t) {
|
|
494
|
+
return {
|
|
495
|
+
buttonPaddingHorizontal: 0.8,
|
|
496
|
+
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
}, /*#__PURE__*/_react2["default"].createElement(ToggleLeftAddon, {
|
|
500
|
+
hasPadding: leftHasPadding
|
|
501
|
+
}, left)), /*#__PURE__*/_react2["default"].createElement(ToggleContent, {
|
|
502
|
+
hasLeft: !!left,
|
|
503
|
+
hasRight: !!right,
|
|
504
|
+
unbordered: unbordered
|
|
505
|
+
}, toggleContent), toggleRightValue && /*#__PURE__*/_react2["default"].createElement(_theming.ThemeOverrider, {
|
|
506
|
+
overrides: function overrides(t) {
|
|
507
|
+
return {
|
|
508
|
+
buttonPaddingHorizontal: 0.8,
|
|
509
|
+
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
}, /*#__PURE__*/_react2["default"].createElement(ToggleRightAddon, {
|
|
513
|
+
hasPadding: toggleRightHasPaddingValue
|
|
514
|
+
}, toggleRightValue)))), /*#__PURE__*/_react2["default"].createElement(SelectMenu, {
|
|
255
515
|
trigger: containerRef,
|
|
256
516
|
visible: opened,
|
|
257
517
|
onClose: function onClose() {
|
|
@@ -259,25 +519,23 @@ var Select = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
|
|
|
259
519
|
},
|
|
260
520
|
size: size,
|
|
261
521
|
width: width,
|
|
262
|
-
closeOnSelect:
|
|
522
|
+
closeOnSelect: !multiple,
|
|
263
523
|
modalTitle: placeholder,
|
|
264
524
|
placement: placement
|
|
265
525
|
}, searchVisible && /*#__PURE__*/_react2["default"].createElement(InputSearchContainer, {
|
|
266
526
|
ref: inputSearchContainerRef
|
|
267
|
-
}, /*#__PURE__*/_react2["default"].createElement(_InputSearch["default"], searchProps)), options.length > 0 ? /*#__PURE__*/_react2["default"].createElement(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
527
|
+
}, /*#__PURE__*/_react2["default"].createElement(_InputSearch["default"], searchProps)), options.length > 0 ? /*#__PURE__*/_react2["default"].createElement(_reactWindow.FixedSizeList, {
|
|
528
|
+
width: "100%",
|
|
529
|
+
height: height,
|
|
530
|
+
itemSize: itemSize,
|
|
531
|
+
itemCount: options.length,
|
|
271
532
|
overscanCount: overscanCount,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
id: listBoxId,
|
|
279
|
-
size: size
|
|
280
|
-
}) : /*#__PURE__*/_react2["default"].createElement(NotFound, null, notFoundText)));
|
|
533
|
+
onScroll: function onScroll(_ref5) {
|
|
534
|
+
var scrollOffset = _ref5.scrollOffset;
|
|
535
|
+
return scrollHandler(scrollOffset);
|
|
536
|
+
},
|
|
537
|
+
innerElementType: InnerElement
|
|
538
|
+
}, listItemFn) : /*#__PURE__*/_react2["default"].createElement(NotFound, null, notFoundText)));
|
|
281
539
|
});
|
|
282
540
|
Select.displayName = 'Select';
|
|
283
541
|
var _default = Select;
|