@os-design/core 1.0.182 → 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/Alert/index.d.ts +1 -1
- package/dist/types/Alert/index.d.ts.map +1 -1
- package/dist/types/Avatar/index.d.ts +1 -1
- package/dist/types/Avatar/index.d.ts.map +1 -1
- package/dist/types/AvatarSkeleton/index.d.ts +2 -2
- package/dist/types/AvatarSkeleton/index.d.ts.map +1 -1
- package/dist/types/Breadcrumb/index.d.ts +1 -1
- package/dist/types/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/Button/index.d.ts +2 -2
- package/dist/types/Button/index.d.ts.map +1 -1
- package/dist/types/Checkbox/index.d.ts +1 -1
- package/dist/types/Checkbox/index.d.ts.map +1 -1
- package/dist/types/CheckboxSkeleton/index.d.ts +2 -2
- package/dist/types/CheckboxSkeleton/index.d.ts.map +1 -1
- package/dist/types/DatePicker/index.d.ts +2 -2
- package/dist/types/DatePicker/index.d.ts.map +1 -1
- package/dist/types/Drawer/index.d.ts +1 -1
- package/dist/types/Drawer/index.d.ts.map +1 -1
- package/dist/types/Form/index.d.ts +1 -1
- package/dist/types/Form/index.d.ts.map +1 -1
- package/dist/types/FormDivider/index.d.ts +1 -1
- package/dist/types/FormDivider/index.d.ts.map +1 -1
- package/dist/types/FormItem/index.d.ts +1 -1
- package/dist/types/FormItem/index.d.ts.map +1 -1
- package/dist/types/Gallery/index.d.ts +1 -1
- package/dist/types/Gallery/index.d.ts.map +1 -1
- package/dist/types/Image/index.d.ts +1 -1
- package/dist/types/Image/index.d.ts.map +1 -1
- package/dist/types/ImageSkeleton/index.d.ts +1 -1
- package/dist/types/ImageSkeleton/index.d.ts.map +1 -1
- package/dist/types/Input/index.d.ts +2 -2
- package/dist/types/Input/index.d.ts.map +1 -1
- package/dist/types/InputSkeleton/index.d.ts +1 -1
- package/dist/types/InputSkeleton/index.d.ts.map +1 -1
- package/dist/types/Link/index.d.ts +1 -1
- package/dist/types/Link/index.d.ts.map +1 -1
- package/dist/types/LinkButton/index.d.ts +2 -2
- package/dist/types/LinkButton/index.d.ts.map +1 -1
- package/dist/types/List/utils/useRWLoadNext.d.ts +1 -1
- package/dist/types/List/utils/useRWLoadNext.d.ts.map +1 -1
- package/dist/types/ListItemActions/index.d.ts +1 -1
- package/dist/types/ListItemActions/index.d.ts.map +1 -1
- package/dist/types/ListItemLink/index.d.ts +2 -2
- package/dist/types/ListItemLink/index.d.ts.map +1 -1
- package/dist/types/LogoLink/index.d.ts +1 -1
- package/dist/types/LogoLink/index.d.ts.map +1 -1
- package/dist/types/MenuDivider/index.d.ts +1 -1
- package/dist/types/MenuDivider/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/Modal/index.d.ts +2 -2
- package/dist/types/Modal/index.d.ts.map +1 -1
- package/dist/types/Navigation/index.d.ts +1 -1
- package/dist/types/Navigation/index.d.ts.map +1 -1
- package/dist/types/NavigationItem/index.d.ts +1 -1
- package/dist/types/NavigationItem/index.d.ts.map +1 -1
- package/dist/types/PageContent/index.d.ts +1 -1
- package/dist/types/PageContent/index.d.ts.map +1 -1
- package/dist/types/PageHeader/index.d.ts +1 -1
- package/dist/types/PageHeader/index.d.ts.map +1 -1
- package/dist/types/PageHeaderSkeleton/index.d.ts +1 -1
- package/dist/types/PageHeaderSkeleton/index.d.ts.map +1 -1
- package/dist/types/Popover/index.d.ts +1 -1
- package/dist/types/Popover/index.d.ts.map +1 -1
- package/dist/types/Popover/utils/usePopoverPosition.d.ts +1 -1
- package/dist/types/Popover/utils/usePopoverPosition.d.ts.map +1 -1
- package/dist/types/Progress/index.d.ts +1 -1
- package/dist/types/Progress/index.d.ts.map +1 -1
- package/dist/types/RadioGroup/index.d.ts +1 -1
- package/dist/types/RadioGroup/index.d.ts.map +1 -1
- package/dist/types/Result/index.d.ts +1 -1
- package/dist/types/Result/index.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +66 -8
- package/dist/types/Select/index.d.ts.map +1 -1
- package/dist/types/Skeleton/index.d.ts +1 -1
- package/dist/types/Skeleton/index.d.ts.map +1 -1
- package/dist/types/Switch/index.d.ts +1 -1
- package/dist/types/Switch/index.d.ts.map +1 -1
- package/dist/types/SwitchSkeleton/index.d.ts +1 -1
- package/dist/types/SwitchSkeleton/index.d.ts.map +1 -1
- package/dist/types/Tag/index.d.ts +2 -2
- package/dist/types/Tag/index.d.ts.map +1 -1
- package/dist/types/TagLink/index.d.ts +2 -2
- package/dist/types/TagLink/index.d.ts.map +1 -1
- package/dist/types/TagList/index.d.ts +1 -1
- package/dist/types/TagList/index.d.ts.map +1 -1
- package/dist/types/TextArea/index.d.ts +1 -1
- package/dist/types/TextArea/index.d.ts.map +1 -1
- package/dist/types/TextAreaSkeleton/index.d.ts +1 -1
- package/dist/types/TextAreaSkeleton/index.d.ts.map +1 -1
- package/dist/types/ThemeSwitcher/index.d.ts +1 -1
- package/dist/types/ThemeSwitcher/index.d.ts.map +1 -1
- package/dist/types/Video/index.d.ts +2 -2
- package/dist/types/Video/index.d.ts.map +1 -1
- package/package.json +7 -7
- 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
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = exports.Title = exports.RightAddon = exports.Placeholder = exports.LeftAddon = exports.IconContainer = exports.Content = exports.Container = exports.ClearIcon = void 0;
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
-
var _icons = require("@os-design/icons");
|
|
11
|
-
var _styles = require("@os-design/styles");
|
|
12
|
-
var _utils = require("@os-design/utils");
|
|
13
|
-
var _theming = require("@os-design/theming");
|
|
14
|
-
var _react2 = require("@emotion/react");
|
|
15
|
-
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
16
|
-
var _Button = _interopRequireDefault(require("../Button"));
|
|
17
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
|
-
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); }
|
|
20
|
-
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; }
|
|
21
|
-
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
22
|
-
var Container = _styled["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n"])));
|
|
23
|
-
exports.Container = Container;
|
|
24
|
-
var notHasLeftStyles = function notHasLeftStyles(p) {
|
|
25
|
-
return !p.hasLeft && (0, _react2.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
26
|
-
};
|
|
27
|
-
var notHasRightStyles = function notHasRightStyles(p) {
|
|
28
|
-
return !p.hasRight && !p.unbordered && (0, _react2.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
29
|
-
};
|
|
30
|
-
var Content = (0, _styled["default"])('div', (0, _utils.omitEmotionProps)('hasLeft', 'hasRight', 'unbordered'))(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n ", ";\n ", ";\n ", ";\n"])), notHasLeftStyles, notHasRightStyles, _styles.ellipsisStyles);
|
|
31
|
-
exports.Content = Content;
|
|
32
|
-
var Placeholder = _styled["default"].span(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n"])), function (p) {
|
|
33
|
-
return (0, _theming.clr)(p.theme.inputColorPlaceholder);
|
|
34
|
-
}, _styles.ellipsisStyles);
|
|
35
|
-
exports.Placeholder = Placeholder;
|
|
36
|
-
var unborderedTitleStyles = function unborderedTitleStyles(p) {
|
|
37
|
-
return p.unbordered && (0, _react2.css)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-weight: 500;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
|
|
38
|
-
};
|
|
39
|
-
var disabledStyles = function disabledStyles(p) {
|
|
40
|
-
return p.disabled && (0, _react2.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n color: ", ";\n "])), (0, _theming.clr)(p.theme.inputDisabledColorText));
|
|
41
|
-
};
|
|
42
|
-
var Title = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('disabled', 'unbordered'))(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n ", ";\n ", ";\n"])), function (p) {
|
|
43
|
-
return (0, _theming.clr)(p.theme.colorText);
|
|
44
|
-
}, unborderedTitleStyles, disabledStyles, _styles.ellipsisStyles);
|
|
45
|
-
exports.Title = Title;
|
|
46
|
-
var ListItem = (0, _styled["default"])(_Tag["default"], (0, _utils.omitEmotionProps)('disabled'))(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ", "em;\n ", ";\n"])), function (p) {
|
|
47
|
-
return p.theme.selectToggleListItemHeight;
|
|
48
|
-
}, disabledStyles);
|
|
49
|
-
var List = _styled["default"].div(_templateObject10 || (_templateObject10 = _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) {
|
|
50
|
-
return p.theme.selectToggleListItemGap;
|
|
51
|
-
}, function (p) {
|
|
52
|
-
return -p.theme.selectToggleListItemGap;
|
|
53
|
-
}, function (p) {
|
|
54
|
-
return p.theme.selectToggleListItemGap;
|
|
55
|
-
}, function (p) {
|
|
56
|
-
return p.theme.selectToggleListItemGap;
|
|
57
|
-
});
|
|
58
|
-
var DeleteButton = _styled["default"].button(_templateObject11 || (_templateObject11 = _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) {
|
|
59
|
-
return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIcon);
|
|
60
|
-
}, function (p) {
|
|
61
|
-
return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIconHover);
|
|
62
|
-
}, (0, _styles.transitionStyles)('color'));
|
|
63
|
-
var unborderedIconContainerStyles = function unborderedIconContainerStyles(p) {
|
|
64
|
-
return p.unbordered && (0, _react2.css)(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n padding-top: 0.2em;\n font-size: 0.8em;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
|
|
65
|
-
};
|
|
66
|
-
var IconContainer = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('unbordered', 'disabled'))(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: ", ";\n line-height: 1;\n ", ";\n"])), function (p) {
|
|
67
|
-
return (0, _theming.clr)(p.theme.selectColorIcon);
|
|
68
|
-
}, unborderedIconContainerStyles);
|
|
69
|
-
exports.IconContainer = IconContainer;
|
|
70
|
-
var ClearIcon = (0, _styled["default"])(_icons.CloseCircle)(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n transform: scale(1.2) !important;\n"])));
|
|
71
|
-
exports.ClearIcon = ClearIcon;
|
|
72
|
-
var Addon = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('hasPadding'))(_templateObject15 || (_templateObject15 = _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) {
|
|
73
|
-
return (0, _theming.clr)(p.theme.inputColorPlaceholder);
|
|
74
|
-
});
|
|
75
|
-
var LeftAddon = (0, _styled["default"])(Addon)(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n ", "\n"])), function (p) {
|
|
76
|
-
return p.theme.inputAddonPaddingHorizontal;
|
|
77
|
-
}, function (p) {
|
|
78
|
-
return p.hasPadding && (0, _react2.css)(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
79
|
-
});
|
|
80
|
-
exports.LeftAddon = LeftAddon;
|
|
81
|
-
var RightAddon = (0, _styled["default"])(Addon)(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n ", "\n"])), function (p) {
|
|
82
|
-
return p.theme.inputAddonPaddingHorizontal;
|
|
83
|
-
}, function (p) {
|
|
84
|
-
return p.hasPadding && (0, _react2.css)(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
|
|
85
|
-
});
|
|
86
|
-
exports.RightAddon = RightAddon;
|
|
87
|
-
var SelectToggle = function SelectToggle(_ref) {
|
|
88
|
-
var selectedItems = _ref.selectedItems,
|
|
89
|
-
onDelete = _ref.onDelete,
|
|
90
|
-
onClear = _ref.onClear,
|
|
91
|
-
opened = _ref.opened,
|
|
92
|
-
multiple = _ref.multiple,
|
|
93
|
-
left = _ref.left,
|
|
94
|
-
_ref$leftHasPadding = _ref.leftHasPadding,
|
|
95
|
-
leftHasPadding = _ref$leftHasPadding === void 0 ? false : _ref$leftHasPadding,
|
|
96
|
-
right = _ref.right,
|
|
97
|
-
_ref$rightHasPadding = _ref.rightHasPadding,
|
|
98
|
-
rightHasPadding = _ref$rightHasPadding === void 0 ? false : _ref$rightHasPadding,
|
|
99
|
-
placeholder = _ref.placeholder,
|
|
100
|
-
unbordered = _ref.unbordered,
|
|
101
|
-
loading = _ref.loading,
|
|
102
|
-
disabled = _ref.disabled,
|
|
103
|
-
clearVisible = _ref.clearVisible,
|
|
104
|
-
locale = _ref.locale;
|
|
105
|
-
var renderContent = (0, _react.useCallback)(function () {
|
|
106
|
-
if (selectedItems.length === 0) {
|
|
107
|
-
return /*#__PURE__*/_react["default"].createElement(Placeholder, null, placeholder);
|
|
108
|
-
}
|
|
109
|
-
if (multiple) {
|
|
110
|
-
return /*#__PURE__*/_react["default"].createElement(List, null, selectedItems.map(function (_ref2) {
|
|
111
|
-
var title = _ref2.title,
|
|
112
|
-
value = _ref2.value;
|
|
113
|
-
return /*#__PURE__*/_react["default"].createElement(ListItem, {
|
|
114
|
-
key: value,
|
|
115
|
-
disabled: disabled,
|
|
116
|
-
right: !disabled ? /*#__PURE__*/_react["default"].createElement(DeleteButton, {
|
|
117
|
-
onClick: function onClick(e) {
|
|
118
|
-
onDelete(value);
|
|
119
|
-
e.stopPropagation();
|
|
120
|
-
},
|
|
121
|
-
onKeyDown: function onKeyDown(e) {
|
|
122
|
-
return e.stopPropagation();
|
|
123
|
-
},
|
|
124
|
-
"aria-label": "".concat(locale.deleteLabel, " ").concat(title),
|
|
125
|
-
"aria-hidden": true
|
|
126
|
-
}, /*#__PURE__*/_react["default"].createElement(_icons.Close, null)) : undefined,
|
|
127
|
-
"aria-hidden": true
|
|
128
|
-
}, title);
|
|
129
|
-
}));
|
|
130
|
-
}
|
|
131
|
-
return /*#__PURE__*/_react["default"].createElement(Title, {
|
|
132
|
-
disabled: disabled,
|
|
133
|
-
unbordered: unbordered
|
|
134
|
-
}, selectedItems[0].title);
|
|
135
|
-
}, [selectedItems, multiple, disabled, unbordered, placeholder, locale.deleteLabel, onDelete]);
|
|
136
|
-
var showClearButton = (0, _react.useMemo)(function () {
|
|
137
|
-
return clearVisible && selectedItems.length > 0;
|
|
138
|
-
}, [clearVisible, selectedItems.length]);
|
|
139
|
-
var rightValue = (0, _react.useMemo)(function () {
|
|
140
|
-
if (loading) return /*#__PURE__*/_react["default"].createElement(_icons.Loading, null);
|
|
141
|
-
if (showClearButton) {
|
|
142
|
-
return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
143
|
-
type: "ghost",
|
|
144
|
-
wide: "never",
|
|
145
|
-
size: "small",
|
|
146
|
-
disabled: disabled,
|
|
147
|
-
onClick: function onClick(e) {
|
|
148
|
-
onClear();
|
|
149
|
-
e.stopPropagation();
|
|
150
|
-
},
|
|
151
|
-
onKeyDown: function onKeyDown(e) {
|
|
152
|
-
if (e.key === 'Enter') onClear();
|
|
153
|
-
e.stopPropagation();
|
|
154
|
-
},
|
|
155
|
-
"aria-label": locale.clearLabel
|
|
156
|
-
}, /*#__PURE__*/_react["default"].createElement(ClearIcon, null));
|
|
157
|
-
}
|
|
158
|
-
return right || /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
159
|
-
unbordered: unbordered,
|
|
160
|
-
disabled: disabled
|
|
161
|
-
}, opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null));
|
|
162
|
-
}, [disabled, loading, locale.clearLabel, onClear, opened, right, showClearButton, unbordered]);
|
|
163
|
-
var rightHasPaddingValue = (0, _react.useMemo)(function () {
|
|
164
|
-
if (loading) return true;
|
|
165
|
-
if (showClearButton) return false;
|
|
166
|
-
return right ? rightHasPadding : true;
|
|
167
|
-
}, [loading, right, rightHasPadding, showClearButton]);
|
|
168
|
-
return /*#__PURE__*/_react["default"].createElement(Container, null, left && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
|
|
169
|
-
overrides: function overrides(t) {
|
|
170
|
-
return {
|
|
171
|
-
buttonPaddingHorizontal: 0.8,
|
|
172
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
}, /*#__PURE__*/_react["default"].createElement(LeftAddon, {
|
|
176
|
-
hasPadding: leftHasPadding
|
|
177
|
-
}, left)), /*#__PURE__*/_react["default"].createElement(Content, {
|
|
178
|
-
hasLeft: !!left,
|
|
179
|
-
hasRight: !!right,
|
|
180
|
-
unbordered: unbordered
|
|
181
|
-
}, renderContent()), rightValue && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
|
|
182
|
-
overrides: function overrides(t) {
|
|
183
|
-
return {
|
|
184
|
-
buttonPaddingHorizontal: 0.8,
|
|
185
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
}, /*#__PURE__*/_react["default"].createElement(RightAddon, {
|
|
189
|
-
hasPadding: rightHasPaddingValue
|
|
190
|
-
}, rightValue)));
|
|
191
|
-
};
|
|
192
|
-
SelectToggle.displayName = 'SelectToggle';
|
|
193
|
-
var _default = SelectToggle;
|
|
194
|
-
exports["default"] = _default;
|
|
195
|
-
//# sourceMappingURL=SelectToggle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectToggle.js","names":["Container","styled","div","notHasLeftStyles","p","hasLeft","css","theme","inputPaddingHorizontal","notHasRightStyles","hasRight","unbordered","Content","omitEmotionProps","ellipsisStyles","Placeholder","span","clr","inputColorPlaceholder","unborderedTitleStyles","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","Tag","selectToggleListItemHeight","List","selectToggleListItemGap","DeleteButton","button","resetButtonStyles","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","transitionStyles","unborderedIconContainerStyles","IconContainer","selectColorIcon","ClearIcon","CloseCircle","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","left","leftHasPadding","right","rightHasPadding","placeholder","loading","clearVisible","locale","renderContent","useCallback","length","map","title","value","e","stopPropagation","deleteLabel","undefined","showClearButton","useMemo","rightValue","key","clearLabel","rightHasPaddingValue","t","buttonPaddingHorizontal","baseHeight","sizes","small","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n left?: React.ReactNode;\n leftHasPadding?: boolean;\n right?: React.ReactNode;\n rightHasPadding?: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Container = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const Content = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ContentProps>`\n flex: 1;\n ${notHasLeftStyles};\n ${notHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n multiple,\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n unbordered,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const showClearButton = useMemo(\n () => clearVisible && selectedItems.length > 0,\n [clearVisible, selectedItems.length]\n );\n\n const rightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (showClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </IconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n onClear,\n opened,\n right,\n showClearButton,\n unbordered,\n ]);\n\n const rightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (showClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, showClearButton]);\n\n return (\n <Container>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right} unbordered={unbordered}>\n {renderContent()}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </Container>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
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); }
|
|
2
|
-
import React, { useCallback, useMemo } from 'react';
|
|
3
|
-
import { FixedSizeList } from 'react-window';
|
|
4
|
-
import { useFontSize, useSize } from '@os-design/utils';
|
|
5
|
-
import { useTheme } from '@os-design/theming';
|
|
6
|
-
import { useIsMinWidth } from '@os-design/media';
|
|
7
|
-
import { useSelectHandler } from '@os-design/menu-utils';
|
|
8
|
-
import MenuItem from '../MenuItem';
|
|
9
|
-
import useRWLoadNext from '../List/utils/useRWLoadNext';
|
|
10
|
-
const SelectList = ({
|
|
11
|
-
searchVisible,
|
|
12
|
-
options,
|
|
13
|
-
visibleCount,
|
|
14
|
-
overscanCount,
|
|
15
|
-
threshold,
|
|
16
|
-
onLoadNext,
|
|
17
|
-
maxSelectedItems,
|
|
18
|
-
containerRef,
|
|
19
|
-
value,
|
|
20
|
-
onChange = () => {},
|
|
21
|
-
id,
|
|
22
|
-
size
|
|
23
|
-
}) => {
|
|
24
|
-
const windowSize = useSize();
|
|
25
|
-
const isMinXs = useIsMinWidth('xs');
|
|
26
|
-
const fontSize = useFontSize(document.body);
|
|
27
|
-
const {
|
|
28
|
-
theme
|
|
29
|
-
} = useTheme();
|
|
30
|
-
const scaleFactor = useMemo(() => {
|
|
31
|
-
const s = size || 'medium';
|
|
32
|
-
return ['small', 'medium', 'large'].includes(s) ? theme.sizes[s] : Number(s.replace(/^([0-9]+(\.[0-9]+)?).*/, '$1')) || 1; // Extract the number
|
|
33
|
-
}, [size, theme.sizes]);
|
|
34
|
-
const paddingBottom = useMemo(() => {
|
|
35
|
-
const paddingEm = isMinXs ? theme.menuPaddingVertical : theme.modalBodyPaddingVertical[0];
|
|
36
|
-
return paddingEm * fontSize * scaleFactor;
|
|
37
|
-
}, [isMinXs, theme.menuPaddingVertical, theme.modalBodyPaddingVertical, fontSize, scaleFactor]);
|
|
38
|
-
const paddingTop = useMemo(() => searchVisible ? 5 * scaleFactor : paddingBottom, [searchVisible, scaleFactor, paddingBottom]);
|
|
39
|
-
const searchInputHeight = useMemo(() => searchVisible ? (theme.baseHeight + theme.menuPaddingVertical) * fontSize * scaleFactor : 0, [searchVisible, theme.baseHeight, theme.menuPaddingVertical, fontSize, scaleFactor]);
|
|
40
|
-
const itemSize = useMemo(() => theme.menuItemHeight * fontSize * scaleFactor, [theme.menuItemHeight, fontSize, scaleFactor]);
|
|
41
|
-
const height = useMemo(() => {
|
|
42
|
-
// Modal
|
|
43
|
-
if (!isMinXs) {
|
|
44
|
-
const maxHeight = windowSize.height - theme.modalHeaderHeight * fontSize * scaleFactor - searchInputHeight;
|
|
45
|
-
const curHeight = options.length * itemSize + paddingTop + paddingBottom;
|
|
46
|
-
return curHeight < maxHeight ? curHeight : maxHeight;
|
|
47
|
-
}
|
|
48
|
-
// Popover
|
|
49
|
-
const count = options.length < visibleCount ? options.length : visibleCount;
|
|
50
|
-
return count * itemSize + paddingTop + paddingBottom;
|
|
51
|
-
}, [isMinXs, options.length, visibleCount, itemSize, windowSize.height, theme.modalHeaderHeight, fontSize, scaleFactor, searchInputHeight, paddingTop, paddingBottom]);
|
|
52
|
-
const scrollHandler = useRWLoadNext({
|
|
53
|
-
itemCount: options.length,
|
|
54
|
-
threshold,
|
|
55
|
-
itemSize,
|
|
56
|
-
paddingTop,
|
|
57
|
-
height,
|
|
58
|
-
onLoadNext
|
|
59
|
-
});
|
|
60
|
-
const onSelect = useSelectHandler({
|
|
61
|
-
value: value || [],
|
|
62
|
-
onChange,
|
|
63
|
-
maxSelectedItems
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
-
const InnerElement = useCallback(({
|
|
68
|
-
style,
|
|
69
|
-
...innerElementRest
|
|
70
|
-
}) => /*#__PURE__*/React.createElement("div", _extends({
|
|
71
|
-
style: {
|
|
72
|
-
...style,
|
|
73
|
-
height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`
|
|
74
|
-
},
|
|
75
|
-
role: "listbox",
|
|
76
|
-
id: id
|
|
77
|
-
}, innerElementRest)), [id, paddingBottom, paddingTop]);
|
|
78
|
-
const listItemFn = useCallback(({
|
|
79
|
-
index,
|
|
80
|
-
style
|
|
81
|
-
}) => {
|
|
82
|
-
const {
|
|
83
|
-
title: optionTitle,
|
|
84
|
-
value: optionValue,
|
|
85
|
-
onClick: optionOnClick,
|
|
86
|
-
...restOption
|
|
87
|
-
} = options[index];
|
|
88
|
-
return /*#__PURE__*/React.createElement(MenuItem, _extends({
|
|
89
|
-
style: {
|
|
90
|
-
...style,
|
|
91
|
-
top: `${parseFloat(style.top ? style.top.toString() : '0') + paddingTop}px`
|
|
92
|
-
},
|
|
93
|
-
selected: (value || []).includes(optionValue || ''),
|
|
94
|
-
onClick: e => {
|
|
95
|
-
if (!optionValue) return;
|
|
96
|
-
onSelect(optionValue);
|
|
97
|
-
|
|
98
|
-
// Focus the input.
|
|
99
|
-
// Otherwise, if the max number of selected items equals 1
|
|
100
|
-
// and the user presses enter to select an item,
|
|
101
|
-
// the input will lose focus.
|
|
102
|
-
if (containerRef.current && maxSelectedItems === 1) {
|
|
103
|
-
containerRef.current.focus();
|
|
104
|
-
}
|
|
105
|
-
if (optionOnClick) optionOnClick(e);
|
|
106
|
-
},
|
|
107
|
-
role: "option",
|
|
108
|
-
"aria-selected": (value || []).includes(optionValue || '')
|
|
109
|
-
}, restOption), optionTitle);
|
|
110
|
-
}, [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]);
|
|
111
|
-
return /*#__PURE__*/React.createElement(FixedSizeList, {
|
|
112
|
-
width: "100%",
|
|
113
|
-
height: height,
|
|
114
|
-
itemSize: itemSize,
|
|
115
|
-
itemCount: options.length,
|
|
116
|
-
overscanCount: overscanCount,
|
|
117
|
-
onScroll: ({
|
|
118
|
-
scrollOffset
|
|
119
|
-
}) => scrollHandler(scrollOffset),
|
|
120
|
-
innerElementType: InnerElement
|
|
121
|
-
}, listItemFn);
|
|
122
|
-
};
|
|
123
|
-
SelectList.displayName = 'SelectList';
|
|
124
|
-
export default SelectList;
|
|
125
|
-
//# sourceMappingURL=SelectList.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectList.js","names":["React","useCallback","useMemo","FixedSizeList","useFontSize","useSize","useTheme","useIsMinWidth","useSelectHandler","MenuItem","useRWLoadNext","SelectList","searchVisible","options","visibleCount","overscanCount","threshold","onLoadNext","maxSelectedItems","containerRef","value","onChange","id","size","windowSize","isMinXs","fontSize","document","body","theme","scaleFactor","s","includes","sizes","Number","replace","paddingBottom","paddingEm","menuPaddingVertical","modalBodyPaddingVertical","paddingTop","searchInputHeight","baseHeight","itemSize","menuItemHeight","height","maxHeight","modalHeaderHeight","curHeight","length","count","scrollHandler","itemCount","onSelect","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","title","optionTitle","optionValue","onClick","optionOnClick","restOption","top","toString","e","current","focus","scrollOffset","displayName"],"sources":["../../../src/Select/SelectList.tsx"],"sourcesContent":["import React, { RefObject, useCallback, useMemo } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport { useFontSize, useSize } from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { useSelectHandler } from '@os-design/menu-utils';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\n\nexport interface OptionProps extends MenuItemProps {\n title?: string;\n}\n\ninterface SelectListProps extends WithSize {\n searchVisible: boolean;\n options: OptionProps[];\n visibleCount: number;\n overscanCount: number;\n threshold: number;\n onLoadNext: () => void;\n maxSelectedItems: number | 'all';\n containerRef: RefObject<HTMLDivElement>;\n value?: string[];\n onChange?: (value: string[]) => void;\n id?: string;\n}\n\nconst SelectList: React.FC<SelectListProps> = ({\n searchVisible,\n options,\n visibleCount,\n overscanCount,\n threshold,\n onLoadNext,\n maxSelectedItems,\n containerRef,\n value,\n onChange = () => {},\n id,\n size,\n}) => {\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight = options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count = options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n const onSelect = useSelectHandler({\n value: value || [],\n onChange,\n maxSelectedItems,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`,\n }}\n role='listbox'\n id={id}\n {...innerElementRest}\n />\n ),\n [id, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={(value || []).includes(optionValue || '')}\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if the max number of selected items equals 1\n // and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && maxSelectedItems === 1) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={(value || []).includes(optionValue || '')}\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]\n );\n\n return (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n );\n};\n\nSelectList.displayName = 'SelectList';\n\nexport default SelectList;\n"],"mappings":"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"}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo } from 'react';
|
|
2
|
-
import styled from '@emotion/styled';
|
|
3
|
-
import { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';
|
|
4
|
-
import { ellipsisStyles, resetButtonStyles, transitionStyles } from '@os-design/styles';
|
|
5
|
-
import { omitEmotionProps } from '@os-design/utils';
|
|
6
|
-
import { clr, ThemeOverrider } from '@os-design/theming';
|
|
7
|
-
import { css } from '@emotion/react';
|
|
8
|
-
import Tag from '../Tag';
|
|
9
|
-
import Button from '../Button';
|
|
10
|
-
export const Container = styled.div`
|
|
11
|
-
flex: 1;
|
|
12
|
-
display: flex;
|
|
13
|
-
align-items: center;
|
|
14
|
-
overflow: hidden;
|
|
15
|
-
`;
|
|
16
|
-
const notHasLeftStyles = p => !p.hasLeft && css`
|
|
17
|
-
padding-left: ${p.theme.inputPaddingHorizontal}em;
|
|
18
|
-
`;
|
|
19
|
-
const notHasRightStyles = p => !p.hasRight && !p.unbordered && css`
|
|
20
|
-
padding-right: ${p.theme.inputPaddingHorizontal}em;
|
|
21
|
-
`;
|
|
22
|
-
export const Content = styled('div', omitEmotionProps('hasLeft', 'hasRight', 'unbordered'))`
|
|
23
|
-
flex: 1;
|
|
24
|
-
${notHasLeftStyles};
|
|
25
|
-
${notHasRightStyles};
|
|
26
|
-
${ellipsisStyles};
|
|
27
|
-
`;
|
|
28
|
-
export const Placeholder = styled.span`
|
|
29
|
-
color: ${p => clr(p.theme.inputColorPlaceholder)};
|
|
30
|
-
${ellipsisStyles};
|
|
31
|
-
`;
|
|
32
|
-
const unborderedTitleStyles = p => p.unbordered && css`
|
|
33
|
-
font-weight: 500;
|
|
34
|
-
${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}
|
|
35
|
-
`;
|
|
36
|
-
const disabledStyles = p => p.disabled && css`
|
|
37
|
-
color: ${clr(p.theme.inputDisabledColorText)};
|
|
38
|
-
`;
|
|
39
|
-
export const Title = styled('span', omitEmotionProps('disabled', 'unbordered'))`
|
|
40
|
-
color: ${p => clr(p.theme.colorText)};
|
|
41
|
-
${unborderedTitleStyles};
|
|
42
|
-
${disabledStyles};
|
|
43
|
-
${ellipsisStyles};
|
|
44
|
-
`;
|
|
45
|
-
const ListItem = styled(Tag, omitEmotionProps('disabled'))`
|
|
46
|
-
// Reset tag styles
|
|
47
|
-
padding-top: 0;
|
|
48
|
-
padding-bottom: 0;
|
|
49
|
-
|
|
50
|
-
height: ${p => p.theme.selectToggleListItemHeight}em;
|
|
51
|
-
${disabledStyles};
|
|
52
|
-
`;
|
|
53
|
-
const List = styled.div`
|
|
54
|
-
display: flex;
|
|
55
|
-
flex-wrap: wrap;
|
|
56
|
-
overflow: hidden; // For ellipsis styles
|
|
57
|
-
|
|
58
|
-
margin: 0 ${p => p.theme.selectToggleListItemGap}em
|
|
59
|
-
${p => -p.theme.selectToggleListItemGap}em 0;
|
|
60
|
-
|
|
61
|
-
& > div {
|
|
62
|
-
margin: 0 ${p => p.theme.selectToggleListItemGap}em
|
|
63
|
-
${p => p.theme.selectToggleListItemGap}em 0;
|
|
64
|
-
}
|
|
65
|
-
`;
|
|
66
|
-
const DeleteButton = styled.button`
|
|
67
|
-
${resetButtonStyles};
|
|
68
|
-
cursor: pointer;
|
|
69
|
-
display: inherit;
|
|
70
|
-
font-size: 1em;
|
|
71
|
-
margin-left: 0.2em;
|
|
72
|
-
|
|
73
|
-
background-color: transparent;
|
|
74
|
-
color: ${p => clr(p.theme.selectToggleDeleteButtonColorIcon)};
|
|
75
|
-
|
|
76
|
-
@media (hover: hover) {
|
|
77
|
-
&:hover,
|
|
78
|
-
&:focus {
|
|
79
|
-
color: ${p => clr(p.theme.selectToggleDeleteButtonColorIconHover)};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
${transitionStyles('color')};
|
|
84
|
-
`;
|
|
85
|
-
const unborderedIconContainerStyles = p => p.unbordered && css`
|
|
86
|
-
padding-top: 0.2em;
|
|
87
|
-
font-size: 0.8em;
|
|
88
|
-
${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}
|
|
89
|
-
`;
|
|
90
|
-
export const IconContainer = styled('span', omitEmotionProps('unbordered', 'disabled'))`
|
|
91
|
-
color: ${p => clr(p.theme.selectColorIcon)};
|
|
92
|
-
line-height: 1;
|
|
93
|
-
${unborderedIconContainerStyles};
|
|
94
|
-
`;
|
|
95
|
-
export const ClearIcon = styled(CloseCircle)`
|
|
96
|
-
transform: scale(1.2) !important;
|
|
97
|
-
`;
|
|
98
|
-
const Addon = styled('span', omitEmotionProps('hasPadding'))`
|
|
99
|
-
display: flex;
|
|
100
|
-
align-items: center;
|
|
101
|
-
user-select: none;
|
|
102
|
-
color: ${p => clr(p.theme.inputColorPlaceholder)};
|
|
103
|
-
|
|
104
|
-
svg {
|
|
105
|
-
transform: scale(1.2);
|
|
106
|
-
}
|
|
107
|
-
`;
|
|
108
|
-
export const LeftAddon = styled(Addon)`
|
|
109
|
-
padding-right: ${p => p.theme.inputAddonPaddingHorizontal}em;
|
|
110
|
-
${p => p.hasPadding && css`
|
|
111
|
-
padding-left: ${p.theme.inputPaddingHorizontal}em;
|
|
112
|
-
`}
|
|
113
|
-
`;
|
|
114
|
-
export const RightAddon = styled(Addon)`
|
|
115
|
-
padding-left: ${p => p.theme.inputAddonPaddingHorizontal}em;
|
|
116
|
-
${p => p.hasPadding && css`
|
|
117
|
-
padding-right: ${p.theme.inputPaddingHorizontal}em;
|
|
118
|
-
`}
|
|
119
|
-
`;
|
|
120
|
-
const SelectToggle = ({
|
|
121
|
-
selectedItems,
|
|
122
|
-
onDelete,
|
|
123
|
-
onClear,
|
|
124
|
-
opened,
|
|
125
|
-
multiple,
|
|
126
|
-
left,
|
|
127
|
-
leftHasPadding = false,
|
|
128
|
-
right,
|
|
129
|
-
rightHasPadding = false,
|
|
130
|
-
placeholder,
|
|
131
|
-
unbordered,
|
|
132
|
-
loading,
|
|
133
|
-
disabled,
|
|
134
|
-
clearVisible,
|
|
135
|
-
locale
|
|
136
|
-
}) => {
|
|
137
|
-
const renderContent = useCallback(() => {
|
|
138
|
-
if (selectedItems.length === 0) {
|
|
139
|
-
return /*#__PURE__*/React.createElement(Placeholder, null, placeholder);
|
|
140
|
-
}
|
|
141
|
-
if (multiple) {
|
|
142
|
-
return /*#__PURE__*/React.createElement(List, null, selectedItems.map(({
|
|
143
|
-
title,
|
|
144
|
-
value
|
|
145
|
-
}) => /*#__PURE__*/React.createElement(ListItem, {
|
|
146
|
-
key: value,
|
|
147
|
-
disabled: disabled,
|
|
148
|
-
right: !disabled ? /*#__PURE__*/React.createElement(DeleteButton, {
|
|
149
|
-
onClick: e => {
|
|
150
|
-
onDelete(value);
|
|
151
|
-
e.stopPropagation();
|
|
152
|
-
},
|
|
153
|
-
onKeyDown: e => e.stopPropagation(),
|
|
154
|
-
"aria-label": `${locale.deleteLabel} ${title}`,
|
|
155
|
-
"aria-hidden": true
|
|
156
|
-
}, /*#__PURE__*/React.createElement(Close, null)) : undefined,
|
|
157
|
-
"aria-hidden": true
|
|
158
|
-
}, title)));
|
|
159
|
-
}
|
|
160
|
-
return /*#__PURE__*/React.createElement(Title, {
|
|
161
|
-
disabled: disabled,
|
|
162
|
-
unbordered: unbordered
|
|
163
|
-
}, selectedItems[0].title);
|
|
164
|
-
}, [selectedItems, multiple, disabled, unbordered, placeholder, locale.deleteLabel, onDelete]);
|
|
165
|
-
const showClearButton = useMemo(() => clearVisible && selectedItems.length > 0, [clearVisible, selectedItems.length]);
|
|
166
|
-
const rightValue = useMemo(() => {
|
|
167
|
-
if (loading) return /*#__PURE__*/React.createElement(Loading, null);
|
|
168
|
-
if (showClearButton) {
|
|
169
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
170
|
-
type: "ghost",
|
|
171
|
-
wide: "never",
|
|
172
|
-
size: "small",
|
|
173
|
-
disabled: disabled,
|
|
174
|
-
onClick: e => {
|
|
175
|
-
onClear();
|
|
176
|
-
e.stopPropagation();
|
|
177
|
-
},
|
|
178
|
-
onKeyDown: e => {
|
|
179
|
-
if (e.key === 'Enter') onClear();
|
|
180
|
-
e.stopPropagation();
|
|
181
|
-
},
|
|
182
|
-
"aria-label": locale.clearLabel
|
|
183
|
-
}, /*#__PURE__*/React.createElement(ClearIcon, null));
|
|
184
|
-
}
|
|
185
|
-
return right || /*#__PURE__*/React.createElement(IconContainer, {
|
|
186
|
-
unbordered: unbordered,
|
|
187
|
-
disabled: disabled
|
|
188
|
-
}, opened ? /*#__PURE__*/React.createElement(Up, null) : /*#__PURE__*/React.createElement(Down, null));
|
|
189
|
-
}, [disabled, loading, locale.clearLabel, onClear, opened, right, showClearButton, unbordered]);
|
|
190
|
-
const rightHasPaddingValue = useMemo(() => {
|
|
191
|
-
if (loading) return true;
|
|
192
|
-
if (showClearButton) return false;
|
|
193
|
-
return right ? rightHasPadding : true;
|
|
194
|
-
}, [loading, right, rightHasPadding, showClearButton]);
|
|
195
|
-
return /*#__PURE__*/React.createElement(Container, null, left && /*#__PURE__*/React.createElement(ThemeOverrider, {
|
|
196
|
-
overrides: t => ({
|
|
197
|
-
buttonPaddingHorizontal: 0.8,
|
|
198
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
199
|
-
})
|
|
200
|
-
}, /*#__PURE__*/React.createElement(LeftAddon, {
|
|
201
|
-
hasPadding: leftHasPadding
|
|
202
|
-
}, left)), /*#__PURE__*/React.createElement(Content, {
|
|
203
|
-
hasLeft: !!left,
|
|
204
|
-
hasRight: !!right,
|
|
205
|
-
unbordered: unbordered
|
|
206
|
-
}, renderContent()), rightValue && /*#__PURE__*/React.createElement(ThemeOverrider, {
|
|
207
|
-
overrides: t => ({
|
|
208
|
-
buttonPaddingHorizontal: 0.8,
|
|
209
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
210
|
-
})
|
|
211
|
-
}, /*#__PURE__*/React.createElement(RightAddon, {
|
|
212
|
-
hasPadding: rightHasPaddingValue
|
|
213
|
-
}, rightValue)));
|
|
214
|
-
};
|
|
215
|
-
SelectToggle.displayName = 'SelectToggle';
|
|
216
|
-
export default SelectToggle;
|
|
217
|
-
//# sourceMappingURL=SelectToggle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectToggle.js","names":["React","useCallback","useMemo","styled","Up","Down","Loading","Close","CloseCircle","ellipsisStyles","resetButtonStyles","transitionStyles","omitEmotionProps","clr","ThemeOverrider","css","Tag","Button","Container","div","notHasLeftStyles","p","hasLeft","theme","inputPaddingHorizontal","notHasRightStyles","hasRight","unbordered","Content","Placeholder","span","inputColorPlaceholder","unborderedTitleStyles","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","selectToggleListItemHeight","List","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","unborderedIconContainerStyles","IconContainer","selectColorIcon","ClearIcon","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","left","leftHasPadding","right","rightHasPadding","placeholder","loading","clearVisible","locale","renderContent","length","map","title","value","e","stopPropagation","deleteLabel","undefined","showClearButton","rightValue","key","clearLabel","rightHasPaddingValue","t","buttonPaddingHorizontal","baseHeight","sizes","small","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n left?: React.ReactNode;\n leftHasPadding?: boolean;\n right?: React.ReactNode;\n rightHasPadding?: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Container = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const Content = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ContentProps>`\n flex: 1;\n ${notHasLeftStyles};\n ${notHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n multiple,\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n unbordered,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const showClearButton = useMemo(\n () => clearVisible && selectedItems.length > 0,\n [clearVisible, selectedItems.length]\n );\n\n const rightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (showClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </IconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n onClear,\n opened,\n right,\n showClearButton,\n unbordered,\n ]);\n\n const rightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (showClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, showClearButton]);\n\n return (\n <Container>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right} unbordered={unbordered}>\n {renderContent()}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </Container>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
|