@semcore/dropdown-menu 2.3.10 → 3.0.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [3.0.0] - 2022-05-17
6
+
7
+ ### BREAK
8
+
9
+ - Updated styles according to the library redesign policy.
10
+ - Removed deprecated props `onSelect, optionCount, triggerType`.
11
+ - Removed value "xl" for "size".
12
+
13
+ ## [2.3.12] - 2022-04-25
14
+
15
+ ### Changed
16
+
17
+ - Version patch update due to children dependencies update (`@semcore/scroll-area` [3.7.0 ~> 3.7.1]).
18
+
19
+ ## [2.3.11] - 2022-04-21
20
+
21
+ ### Changed
22
+
23
+ - Version patch update due to children dependencies update (`@semcore/scroll-area` [3.6.4 ~> 3.7.0]).
24
+
5
25
  ## [2.3.10] - 2022-03-14
6
26
 
7
27
  ### Changed
@@ -11,10 +11,10 @@ exports["default"] = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
-
16
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
15
 
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
19
 
20
20
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -41,11 +41,8 @@ var _flexBox = require("@semcore/flex-box");
41
41
 
42
42
  var _scrollArea = _interopRequireDefault(require("@semcore/scroll-area"));
43
43
 
44
- var _logger = _interopRequireDefault(require("@semcore/utils/lib/logger"));
45
-
46
- var _excluded = ["Children", "optionCount", "triggerType", "onSelect"],
47
- _excluded2 = ["className"],
48
- _excluded3 = ["className"];
44
+ var _excluded = ["className"],
45
+ _excluded2 = ["className"];
49
46
 
50
47
  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); }
51
48
 
@@ -64,24 +61,23 @@ var style = (
64
61
  /*__reshadow_css_start__*/
65
62
  _core.sstyled.insert(
66
63
  /*__inner_css_start__*/
67
- ".___SDropdownMenuList_1sdvk_gg_{max-height:240px;margin:4px 0;padding:0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_1sdvk_gg_{display:flex;align-items:center;position:relative;text-decoration:none;box-sizing:border-box;cursor:pointer;width:100%;text-align:left;line-height:normal}.___SDropdownMenuItem_1sdvk_gg_:hover{background-color:rgba(0,0,0,.1)}.___SDropdownMenuItem_1sdvk_gg_:focus{outline:none}.___SDropdownMenuItem_1sdvk_gg_.__highlighted_1sdvk_gg_{z-index:1;box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3) inset}.___SDropdownMenuItem_1sdvk_gg_.__selected_1sdvk_gg_{background-color:rgba(43,148,225,.2)}.___SDropdownMenuItem_1sdvk_gg_.__selected_1sdvk_gg_:hover{background-color:rgba(43,148,225,.2)}.___SDropdownMenuItem_1sdvk_gg_.__disabled_1sdvk_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SDropdownMenuItem_1sdvk_gg_._size_xl_1sdvk_gg_{font-size:16px;line-height:1.5;padding:8px 12px;min-height:42px}.___SDropdownMenuItem_1sdvk_gg_._size_l_1sdvk_gg_{font-size:14px;line-height:1.42;padding:6px 8px;min-height:32px}.___SDropdownMenuItem_1sdvk_gg_._size_m_1sdvk_gg_{font-size:12px;line-height:1.5;padding:4px 8px;min-height:26px}.___SDropdownMenuItem_1sdvk_gg_.__notInteractive_1sdvk_gg_{cursor:default}.___SDropdownMenuItem_1sdvk_gg_.__notInteractive_1sdvk_gg_:hover{background:none}.___SDropdownMenuItem_1sdvk_gg_._variant_hint_1sdvk_gg_{color:#757575;cursor:default}.___SDropdownMenuItem_1sdvk_gg_._variant_hint_1sdvk_gg_:hover{background:none}.___SDropdownMenuItem_1sdvk_gg_._variant_title_1sdvk_gg_{font-weight:700;cursor:default}.___SDropdownMenuItem_1sdvk_gg_._variant_title_1sdvk_gg_:hover{background:none}.___SDropdownMenuItemAddon_1sdvk_gg_{display:inline-flex;margin-left:8px;margin-right:8px}.___SDropdownMenuItemAddon_1sdvk_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1sdvk_gg_:last-child{margin-right:0}.___SPopper_1sdvk_gg_:focus{box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3)}"
64
+ ".___SDropdownMenuList_wus9c_gg_{max-height:240px;margin:4px 0;padding:0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_wus9c_gg_{display:flex;align-items:center;position:relative;text-decoration:none;box-sizing:border-box;cursor:pointer;width:100%;text-align:left;line-height:normal}.___SDropdownMenuItem_wus9c_gg_:hover{background-color:#f4f5f9}.___SDropdownMenuItem_wus9c_gg_:focus{outline:none}.___SDropdownMenuItem_wus9c_gg_.__highlighted_wus9c_gg_{z-index:1;box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2) inset}.___SDropdownMenuItem_wus9c_gg_.__selected_wus9c_gg_{background-color:rgba(196,229,254,.7)}.___SDropdownMenuItem_wus9c_gg_.__selected_wus9c_gg_:hover{background-color:#c4e5fe}.___SDropdownMenuItem_wus9c_gg_.__disabled_wus9c_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SDropdownMenuItem_wus9c_gg_._size_l_wus9c_gg_{font-size:16px;line-height:1.5;padding:8px 12px;min-height:40px}.___SDropdownMenuItem_wus9c_gg_._size_m_wus9c_gg_{font-size:14px;line-height:1.42;padding:6px 8px;min-height:32px}.___SDropdownMenuItem_wus9c_gg_.__notInteractive_wus9c_gg_{cursor:default}.___SDropdownMenuItem_wus9c_gg_.__notInteractive_wus9c_gg_:hover{background:none}.___SDropdownMenuItem_wus9c_gg_._variant_hint_wus9c_gg_{color:#6c6e79;cursor:default}.___SDropdownMenuItem_wus9c_gg_._variant_hint_wus9c_gg_:hover{background:none}.___SDropdownMenuItem_wus9c_gg_._variant_title_wus9c_gg_{font-weight:700;cursor:default}.___SDropdownMenuItem_wus9c_gg_._variant_title_wus9c_gg_:hover{background:none}.___SDropdownMenuItemAddon_wus9c_gg_{display:inline-flex;margin-left:8px;margin-right:8px}.___SDropdownMenuItemAddon_wus9c_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_wus9c_gg_:last-child{margin-right:0}.___SPopper_wus9c_gg_:focus{box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2)}"
68
65
  /*__inner_css_end__*/
69
- , "19x58cq_gg_")
66
+ , "1c6qqff_gg_")
70
67
  /*__reshadow_css_end__*/
71
68
  , {
72
- "__SDropdownMenuList": "___SDropdownMenuList_1sdvk_gg_",
73
- "__SDropdownMenuItem": "___SDropdownMenuItem_1sdvk_gg_",
74
- "_highlighted": "__highlighted_1sdvk_gg_",
75
- "_selected": "__selected_1sdvk_gg_",
76
- "_disabled": "__disabled_1sdvk_gg_",
77
- "_size_xl": "_size_xl_1sdvk_gg_",
78
- "_size_l": "_size_l_1sdvk_gg_",
79
- "_size_m": "_size_m_1sdvk_gg_",
80
- "_notInteractive": "__notInteractive_1sdvk_gg_",
81
- "_variant_hint": "_variant_hint_1sdvk_gg_",
82
- "_variant_title": "_variant_title_1sdvk_gg_",
83
- "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1sdvk_gg_",
84
- "__SPopper": "___SPopper_1sdvk_gg_"
69
+ "__SDropdownMenuList": "___SDropdownMenuList_wus9c_gg_",
70
+ "__SDropdownMenuItem": "___SDropdownMenuItem_wus9c_gg_",
71
+ "_highlighted": "__highlighted_wus9c_gg_",
72
+ "_selected": "__selected_wus9c_gg_",
73
+ "_disabled": "__disabled_wus9c_gg_",
74
+ "_size_l": "_size_l_wus9c_gg_",
75
+ "_size_m": "_size_m_wus9c_gg_",
76
+ "_notInteractive": "__notInteractive_wus9c_gg_",
77
+ "_variant_hint": "_variant_hint_wus9c_gg_",
78
+ "_variant_title": "_variant_title_wus9c_gg_",
79
+ "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_wus9c_gg_",
80
+ "__SPopper": "___SPopper_wus9c_gg_"
85
81
  });
86
82
  var KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];
87
83
  var INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];
@@ -129,20 +125,6 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
129
125
  break;
130
126
  }
131
127
  });
132
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerFallbackSelect", function (props, index) {
133
- return function () {
134
- var _this$asProps = _this.asProps,
135
- onSelect = _this$asProps.onSelect,
136
- multiselect = _this$asProps.multiselect;
137
- var result = onSelect(_objectSpread({
138
- index: index
139
- }, props));
140
-
141
- if (!multiselect && result !== false) {
142
- _this.handlers.visible(false);
143
- }
144
- };
145
- });
146
128
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollToNode", function (node) {
147
129
  _this._highlightedItem = node;
148
130
 
@@ -195,17 +177,12 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
195
177
  }, {
196
178
  key: "getItemProps",
197
179
  value: function getItemProps(props, index) {
198
- var _this$asProps2 = this.asProps,
199
- size = _this$asProps2.size,
200
- highlightedIndex = _this$asProps2.highlightedIndex,
201
- onSelect = _this$asProps2.onSelect;
180
+ var _this$asProps = this.asProps,
181
+ size = _this$asProps.size,
182
+ highlightedIndex = _this$asProps.highlightedIndex;
202
183
  var highlighted = index === highlightedIndex;
203
184
  var extraProps = {};
204
185
 
205
- if (onSelect !== undefined) {
206
- extraProps.onClick = this.bindHandlerFallbackSelect(props, index);
207
- }
208
-
209
186
  this._items.push(props);
210
187
 
211
188
  if (highlighted) {
@@ -279,27 +256,10 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
279
256
  }, {
280
257
  key: "render",
281
258
  value: function render() {
282
- var _ref = this ? this.asProps : arguments[0];
283
-
284
- var _this$asProps3 = this.asProps,
285
- Children = _this$asProps3.Children,
286
- optionCount = _this$asProps3.optionCount,
287
- triggerType = _this$asProps3.triggerType,
288
- onSelect = _this$asProps3.onSelect,
289
- other = (0, _objectWithoutProperties2["default"])(_this$asProps3, _excluded);
259
+ var _ref = this.asProps;
260
+ var Children = this.asProps.Children;
290
261
  var props = {};
291
262
  this._items = [];
292
-
293
- _logger["default"].warn(onSelect !== undefined, "Property 'onSelect' is deprecated, subscribe to the 'onClick' of the needed 'Item'", other['data-ui-name'] || DropdownMenu.displayName);
294
-
295
- _logger["default"].warn(optionCount !== undefined, "The 'optionCount' property is deprecated and is now automatically determined from the number of Item", other['data-ui-name'] || DropdownMenu.displayName);
296
-
297
- _logger["default"].warn(triggerType !== undefined, "The 'triggerType' property is deprecated, use 'interaction=\"focus\"'", other['data-ui-name'] || DropdownMenu.displayName);
298
-
299
- if (triggerType === 'input') {
300
- props.interaction = 'focus';
301
- }
302
-
303
263
  return /*#__PURE__*/_react["default"].createElement(_dropdown["default"], (0, _core.assignProps)(_objectSpread({}, props), _ref), /*#__PURE__*/_react["default"].createElement(Children, null));
304
264
  }
305
265
  }]);
@@ -315,7 +275,7 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
315
275
  });
316
276
 
317
277
  function List(props) {
318
- var _ref2 = this ? this.asProps : arguments[0],
278
+ var _ref2 = arguments[0],
319
279
  _ref6;
320
280
 
321
281
  var SDropdownMenuList = _flexBox.Box;
@@ -326,8 +286,7 @@ function List(props) {
326
286
  }
327
287
 
328
288
  function Menu() {
329
- var _ref3 = this ? this.asProps : arguments[0];
330
-
289
+ var _ref3 = arguments[0];
331
290
  return /*#__PURE__*/_react["default"].createElement(DropdownMenu.Popper, null, /*#__PURE__*/_react["default"].createElement(DropdownMenu.List, (0, _core.assignProps)({}, _ref3)));
332
291
  }
333
292
 
@@ -337,7 +296,7 @@ function Item(props) {
337
296
  SDropdownMenuItem = _useFlex2[0],
338
297
  _useFlex2$ = _useFlex2[1],
339
298
  className = _useFlex2$.className,
340
- other = (0, _objectWithoutProperties2["default"])(_useFlex2$, _excluded2);
299
+ other = (0, _objectWithoutProperties2["default"])(_useFlex2$, _excluded);
341
300
 
342
301
  var styles = (0, _core.sstyled)(props.styles);
343
302
  return /*#__PURE__*/_react["default"].createElement(SDropdownMenuItem, (0, _extends2["default"])({
@@ -355,7 +314,7 @@ function Addon(props) {
355
314
  SDropdownMenuItemAddon = _useBox2[0],
356
315
  _useBox2$ = _useBox2[1],
357
316
  className = _useBox2$.className,
358
- other = (0, _objectWithoutProperties2["default"])(_useBox2$, _excluded3);
317
+ other = (0, _objectWithoutProperties2["default"])(_useBox2$, _excluded2);
359
318
 
360
319
  var styles = (0, _core.sstyled)(props.styles);
361
320
  return /*#__PURE__*/_react["default"].createElement(SDropdownMenuItemAddon, (0, _extends2["default"])({
@@ -364,7 +323,7 @@ function Addon(props) {
364
323
  }
365
324
 
366
325
  function Hint(props) {
367
- var _ref4 = this ? this.asProps : arguments[0],
326
+ var _ref4 = arguments[0],
368
327
  _ref7;
369
328
 
370
329
  var SDropdownMenuItem = _flexBox.Flex;
@@ -374,7 +333,7 @@ function Hint(props) {
374
333
  }
375
334
 
376
335
  function Title(props) {
377
- var _ref5 = this ? this.asProps : arguments[0],
336
+ var _ref5 = arguments[0],
378
337
  _ref8;
379
338
 
380
339
  var SDropdownMenuItem = _flexBox.Flex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/DropdownMenu.jsx"],"names":["KEYS","INTERACTION_TAGS","DropdownMenuRoot","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","_highlightedItem","click","props","index","asProps","onSelect","multiselect","result","node","scrollIntoView","highlightedIndex","prevHighlightedIndex","block","inline","size","onKeyDown","handlerKeyDown","tabIndex","highlighted","extraProps","undefined","onClick","bindHandlerFallbackSelect","_items","push","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","Children","optionCount","triggerType","other","logger","warn","DropdownMenu","displayName","interaction","Dropdown","Component","style","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","Box","styles","ScrollAreaComponent","Menu","Item","forwardRef","SDropdownMenuItem","className","cn","Addon","SDropdownMenuItemAddon","Hint","Flex","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Box, Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport logger from '@semcore/utils/lib/logger';\n\nimport style from './style/dropdown-menu.shadow.css';\n\nconst KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];\nconst INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];\n\nclass DropdownMenuRoot extends Component {\n static displayName = 'DropdownMenu';\n static style = style;\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n _items = [];\n\n _highlightedItem = null;\n\n prevHighlightedIndex = null;\n\n uncontrolledProps() {\n return {\n highlightedIndex: null,\n visible: null,\n };\n }\n\n handlerKeyDown = (e) => {\n const amount = e.shiftKey ? 5 : 1;\n\n if (e.key === ' ' && INTERACTION_TAGS.includes(e.target.tagName)) return;\n if (!KEYS.includes(e.key)) return;\n\n e.preventDefault();\n\n this.handlers.visible(true);\n\n switch (e.key) {\n case 'ArrowDown':\n this.moveHighlightedIndex(amount, e);\n break;\n case 'ArrowUp':\n this.moveHighlightedIndex(-amount, e);\n break;\n case ' ':\n case 'Enter':\n if (this._highlightedItem) this._highlightedItem.click();\n break;\n }\n };\n\n bindHandlerFallbackSelect = (props, index) => () => {\n const { onSelect, multiselect } = this.asProps;\n const result = onSelect({\n index,\n ...props,\n });\n\n if (!multiselect && result !== false) {\n this.handlers.visible(false);\n }\n };\n\n getTriggerProps() {\n const { size } = this.asProps;\n return {\n size,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getPopperProps() {\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex, onSelect } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n\n if (onSelect !== undefined) {\n extraProps.onClick = this.bindHandlerFallbackSelect(props, index);\n }\n\n this._items.push(props);\n if (highlighted) {\n extraProps.ref = this.scrollToNode;\n }\n\n return {\n size,\n highlighted,\n ...extraProps,\n };\n }\n\n getItemHintProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getItemTitleProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n scrollToNode = (node) => {\n this._highlightedItem = node;\n if (node && node.scrollIntoView) {\n if (this.asProps.highlightedIndex !== this.prevHighlightedIndex) {\n this.prevHighlightedIndex = this.asProps.highlightedIndex;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n };\n\n moveHighlightedIndex(amount, e) {\n let { highlightedIndex } = this.asProps;\n const itemsLastIndex = this._items.length - 1;\n const selectedIndex = this._items.findIndex((item) => item.selected);\n\n if (itemsLastIndex < 0) return;\n\n if (highlightedIndex == null) {\n if (selectedIndex !== -1) {\n highlightedIndex = selectedIndex;\n } else {\n highlightedIndex = amount < 0 ? 0 : itemsLastIndex;\n }\n }\n\n let newIndex = highlightedIndex + amount;\n if (newIndex < 0) {\n newIndex = amount + itemsLastIndex + 1;\n } else if (newIndex > itemsLastIndex) {\n newIndex = newIndex - itemsLastIndex - 1;\n }\n\n if (this._items[newIndex] && this._items[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n }\n }\n\n componentDidUpdate() {\n const { visible } = this.asProps;\n\n if (!visible) {\n this.handlers.highlightedIndex(null);\n }\n }\n\n render() {\n const { Children, optionCount, triggerType, onSelect, ...other } = this.asProps;\n const props = {};\n\n this._items = [];\n\n logger.warn(\n onSelect !== undefined,\n \"Property 'onSelect' is deprecated, subscribe to the 'onClick' of the needed 'Item'\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n logger.warn(\n optionCount !== undefined,\n \"The 'optionCount' property is deprecated and is now automatically determined from the number of Item\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n logger.warn(\n triggerType !== undefined,\n \"The 'triggerType' property is deprecated, use 'interaction=\\\"focus\\\"'\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n if (triggerType === 'input') {\n props.interaction = 'focus';\n }\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n return sstyled(props.styles)(\n <SDropdownMenuList render={Box} tag={ScrollAreaComponent} role=\"menu\" />,\n );\n}\n\nfunction Menu() {\n return (\n <DropdownMenu.Popper>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n );\n}\n\nfunction Item(props) {\n const [SDropdownMenuItem, { className, ...other }] = useFlex(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItem\n role=\"menuitem\"\n tabIndex={-1}\n className={\n cn(\n styles.cn('SDropdownMenuItem', {\n ...props,\n highlighted: !props.disabled && props.highlighted,\n }).className,\n className,\n ) || undefined\n }\n {...other}\n />\n );\n}\n\nfunction Addon(props) {\n const [SDropdownMenuItemAddon, { className, ...other }] = useBox(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItemAddon\n className={cn(styles.cn('SDropdownMenuItemAddon', props).className, className) || undefined}\n {...other}\n />\n );\n}\n\nfunction Hint(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"hint\" />);\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"title\" />);\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger: Dropdown.Trigger,\n Popper: Dropdown.Popper,\n List,\n Menu,\n Item: [Item, { Addon }],\n ItemTitle: Title,\n ItemHint: Hint,\n },\n {\n parent: [Dropdown],\n },\n);\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
1
+ {"version":3,"sources":["../../src/DropdownMenu.jsx"],"names":["KEYS","INTERACTION_TAGS","DropdownMenuRoot","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","_highlightedItem","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","onKeyDown","handlerKeyDown","tabIndex","props","index","highlighted","extraProps","_items","push","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","Children","Dropdown","Component","style","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","Box","styles","ScrollAreaComponent","Menu","DropdownMenu","Item","forwardRef","SDropdownMenuItem","className","other","cn","undefined","Addon","SDropdownMenuItemAddon","Hint","Flex","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAFA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,IAAI,GAAG,CAAC,WAAD,EAAc,SAAd,EAAyB,OAAzB,EAAkC,GAAlC,CAAb;AACA,IAAMC,gBAAgB,GAAG,CAAC,OAAD,EAAU,UAAV,CAAzB;;IAEMC,gB;;;;;;;;;;;;;;;+FAUK,E;yGAEU,I;6GAEI,I;uGASN,UAACC,CAAD,EAAO;AACtB,UAAMC,MAAM,GAAGD,CAAC,CAACE,QAAF,GAAa,CAAb,GAAiB,CAAhC;AAEA,UAAIF,CAAC,CAACG,GAAF,KAAU,GAAV,IAAiBL,gBAAgB,CAACM,QAAjB,CAA0BJ,CAAC,CAACK,MAAF,CAASC,OAAnC,CAArB,EAAkE;AAClE,UAAI,CAACT,IAAI,CAACO,QAAL,CAAcJ,CAAC,CAACG,GAAhB,CAAL,EAA2B;AAE3BH,MAAAA,CAAC,CAACO,cAAF;;AAEA,YAAKC,QAAL,CAAcC,OAAd,CAAsB,IAAtB;;AAEA,cAAQT,CAAC,CAACG,GAAV;AACE,aAAK,WAAL;AACE,gBAAKO,oBAAL,CAA0BT,MAA1B,EAAkCD,CAAlC;;AACA;;AACF,aAAK,SAAL;AACE,gBAAKU,oBAAL,CAA0B,CAACT,MAA3B,EAAmCD,CAAnC;;AACA;;AACF,aAAK,GAAL;AACA,aAAK,OAAL;AACE,cAAI,MAAKW,gBAAT,EAA2B,MAAKA,gBAAL,CAAsBC,KAAtB;AAC3B;AAVJ;AAYD,K;qGAuDc,UAACC,IAAD,EAAU;AACvB,YAAKF,gBAAL,GAAwBE,IAAxB;;AACA,UAAIA,IAAI,IAAIA,IAAI,CAACC,cAAjB,EAAiC;AAC/B,YAAI,MAAKC,OAAL,CAAaC,gBAAb,KAAkC,MAAKC,oBAA3C,EAAiE;AAC/D,gBAAKA,oBAAL,GAA4B,MAAKF,OAAL,CAAaC,gBAAzC;AACAH,UAAAA,IAAI,CAACC,cAAL,CAAoB;AAClBI,YAAAA,KAAK,EAAE,SADW;AAElBC,YAAAA,MAAM,EAAE;AAFU,WAApB;AAID;AACF;AACF,K;;;;;;WA/FD,6BAAoB;AAClB,aAAO;AACLH,QAAAA,gBAAgB,EAAE,IADb;AAELP,QAAAA,OAAO,EAAE;AAFJ,OAAP;AAID;;;WA0BD,2BAAkB;AAChB,UAAQW,IAAR,GAAiB,KAAKL,OAAtB,CAAQK,IAAR;AACA,aAAO;AACLA,QAAAA,IAAI,EAAJA,IADK;AAELC,QAAAA,SAAS,EAAE,KAAKC;AAFX,OAAP;AAID;;;WAED,wBAAe;AACb,UAAQF,IAAR,GAAiB,KAAKL,OAAtB,CAAQK,IAAR;AACA,aAAO;AACLA,QAAAA,IAAI,EAAJA;AADK,OAAP;AAGD;;;WAED,0BAAiB;AACf,aAAO;AACLG,QAAAA,QAAQ,EAAE,CADL;AAELF,QAAAA,SAAS,EAAE,KAAKC;AAFX,OAAP;AAID;;;WAED,sBAAaE,KAAb,EAAoBC,KAApB,EAA2B;AACzB,0BAAmC,KAAKV,OAAxC;AAAA,UAAQK,IAAR,iBAAQA,IAAR;AAAA,UAAcJ,gBAAd,iBAAcA,gBAAd;AACA,UAAMU,WAAW,GAAGD,KAAK,KAAKT,gBAA9B;AACA,UAAMW,UAAU,GAAG,EAAnB;;AAEA,WAAKC,MAAL,CAAYC,IAAZ,CAAiBL,KAAjB;;AACA,UAAIE,WAAJ,EAAiB;AACfC,QAAAA,UAAU,CAACG,GAAX,GAAiB,KAAKC,YAAtB;AACD;;AAED;AACEX,QAAAA,IAAI,EAAJA,IADF;AAEEM,QAAAA,WAAW,EAAXA;AAFF,SAGKC,UAHL;AAKD;;;WAED,4BAAmB;AACjB,UAAQP,IAAR,GAAiB,KAAKL,OAAtB,CAAQK,IAAR;AACA,aAAO;AACLA,QAAAA,IAAI,EAAJA;AADK,OAAP;AAGD;;;WAED,6BAAoB;AAClB,UAAQA,IAAR,GAAiB,KAAKL,OAAtB,CAAQK,IAAR;AACA,aAAO;AACLA,QAAAA,IAAI,EAAJA;AADK,OAAP;AAGD;;;WAeD,8BAAqBnB,MAArB,EAA6BD,CAA7B,EAAgC;AAC9B,UAAMgB,gBAAN,GAA2B,KAAKD,OAAhC,CAAMC,gBAAN;AACA,UAAMgB,cAAc,GAAG,KAAKJ,MAAL,CAAYK,MAAZ,GAAqB,CAA5C;;AACA,UAAMC,aAAa,GAAG,KAAKN,MAAL,CAAYO,SAAZ,CAAsB,UAACC,IAAD;AAAA,eAAUA,IAAI,CAACC,QAAf;AAAA,OAAtB,CAAtB;;AAEA,UAAIL,cAAc,GAAG,CAArB,EAAwB;;AAExB,UAAIhB,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,YAAIkB,aAAa,KAAK,CAAC,CAAvB,EAA0B;AACxBlB,UAAAA,gBAAgB,GAAGkB,aAAnB;AACD,SAFD,MAEO;AACLlB,UAAAA,gBAAgB,GAAGf,MAAM,GAAG,CAAT,GAAa,CAAb,GAAiB+B,cAApC;AACD;AACF;;AAED,UAAIM,QAAQ,GAAGtB,gBAAgB,GAAGf,MAAlC;;AACA,UAAIqC,QAAQ,GAAG,CAAf,EAAkB;AAChBA,QAAAA,QAAQ,GAAGrC,MAAM,GAAG+B,cAAT,GAA0B,CAArC;AACD,OAFD,MAEO,IAAIM,QAAQ,GAAGN,cAAf,EAA+B;AACpCM,QAAAA,QAAQ,GAAGA,QAAQ,GAAGN,cAAX,GAA4B,CAAvC;AACD;;AAED,UAAI,KAAKJ,MAAL,CAAYU,QAAZ,KAAyB,KAAKV,MAAL,CAAYU,QAAZ,EAAsBC,QAAnD,EAA6D;AAC3D,aAAK7B,oBAAL,CAA0BT,MAAM,GAAG,CAAT,GAAaA,MAAM,GAAG,CAAtB,GAA0BA,MAAM,GAAG,CAA7D,EAAgED,CAAhE;AACD,OAFD,MAEO;AACL,aAAKQ,QAAL,CAAcQ,gBAAd,CAA+BsB,QAA/B,EAAyCtC,CAAzC;AACD;AACF;;;WAED,8BAAqB;AACnB,UAAQS,OAAR,GAAoB,KAAKM,OAAzB,CAAQN,OAAR;;AAEA,UAAI,CAACA,OAAL,EAAc;AACZ,aAAKD,QAAL,CAAcQ,gBAAd,CAA+B,IAA/B;AACD;AACF;;;WAED,kBAAS;AAAA;AACP,UAAQwB,QAAR,GAAqB,KAAKzB,OAA1B,CAAQyB,QAAR;AACA,UAAMhB,KAAK,GAAG,EAAd;AAEA,WAAKI,MAAL,GAAc,EAAd;AAEA,0BACE,gCAAca,oBAAd,2CAA4BjB,KAA5B,uBACE,gCAAC,QAAD,OADF,CADF;AAKD;;;EAjK4BkB,e;;iCAAzB3C,gB,iBACiB,c;iCADjBA,gB,WAEW4C,K;iCAFX5C,gB,kBAIkB;AACpBqB,EAAAA,IAAI,EAAE,GADc;AAEpBwB,EAAAA,cAAc,EAAE,KAFI;AAGpBC,EAAAA,uBAAuB,EAAE;AAHL,C;;AAgKxB,SAASC,IAAT,CAActB,KAAd,EAAqB;AAAA;AAAA;;AACnB,MAAMuB,iBAAiB,GAEMC,YAF7B;AACA,iBAAO,mBAAQxB,KAAK,CAACyB,MAAd,CAAP,eACE,gCAAC,iBAAD;AAAA,WAAqCC,sBAArC;AAAA,YAA+D;AAA/D,cADF;AAGD;;AAED,SAASC,IAAT,GAAgB;AAAA;AACd,sBACE,gCAAC,YAAD,CAAc,MAAd,qBACE,gCAAcC,YAAY,CAACN,IAA3B,oCADF,CADF;AAKD;;AAED,SAASO,IAAT,CAAc7B,KAAd,EAAqB;AACnB,iBAAqD,sBAAQA,KAAR,EAAeA,KAAK,CAAC8B,UAArB,CAArD;AAAA;AAAA,MAAOC,iBAAP;AAAA;AAAA,MAA4BC,SAA5B,cAA4BA,SAA5B;AAAA,MAA0CC,KAA1C;;AACA,MAAMR,MAAM,GAAG,mBAAQzB,KAAK,CAACyB,MAAd,CAAf;AACA,sBACE,gCAAC,iBAAD;AACE,IAAA,IAAI,EAAC,UADP;AAEE,IAAA,QAAQ,EAAE,CAAC,CAFb;AAGE,IAAA,SAAS,EACP,4BACEA,MAAM,CAACS,EAAP,CAAU,mBAAV,kCACKlC,KADL;AAEEE,MAAAA,WAAW,EAAE,CAACF,KAAK,CAACe,QAAP,IAAmBf,KAAK,CAACE;AAFxC,QAGG8B,SAJL,EAKEA,SALF,KAMKG;AAVT,KAYMF,KAZN,EADF;AAgBD;;AAED,SAASG,KAAT,CAAepC,KAAf,EAAsB;AACpB,gBAA0D,qBAAOA,KAAP,EAAcA,KAAK,CAAC8B,UAApB,CAA1D;AAAA;AAAA,MAAOO,sBAAP;AAAA;AAAA,MAAiCL,SAAjC,aAAiCA,SAAjC;AAAA,MAA+CC,KAA/C;;AACA,MAAMR,MAAM,GAAG,mBAAQzB,KAAK,CAACyB,MAAd,CAAf;AACA,sBACE,gCAAC,sBAAD;AACE,IAAA,SAAS,EAAE,4BAAGA,MAAM,CAACS,EAAP,CAAU,wBAAV,EAAoClC,KAApC,EAA2CgC,SAA9C,EAAyDA,SAAzD,KAAuEG;AADpF,KAEMF,KAFN,EADF;AAMD;;AAED,SAASK,IAAT,CAActC,KAAd,EAAqB;AAAA;AAAA;;AACnB,MAAM+B,iBAAiB,GACiCQ,aADxD;AACA,iBAAO,mBAAQvC,KAAK,CAACyB,MAAd,CAAP,eAA6B,gCAAC,iBAAD;AAAA,eAAyC;AAAzC,cAA7B;AACD;;AAED,SAASe,KAAT,CAAexC,KAAf,EAAsB;AAAA;AAAA;;AACpB,MAAM+B,iBAAiB,GACiCQ,aADxD;AACA,iBAAO,mBAAQvC,KAAK,CAACyB,MAAd,CAAP,eAA6B,gCAAC,iBAAD;AAAA,eAAyC;AAAzC,cAA7B;AACD;;AAED,IAAMG,YAAY,GAAG,sBACnBrD,gBADmB,EAEnB;AACEkE,EAAAA,OAAO,EAAExB,qBAASwB,OADpB;AAEEC,EAAAA,MAAM,EAAEzB,qBAASyB,MAFnB;AAGEpB,EAAAA,IAAI,EAAJA,IAHF;AAIEK,EAAAA,IAAI,EAAJA,IAJF;AAKEE,EAAAA,IAAI,EAAE,CAACA,IAAD,EAAO;AAAEO,IAAAA,KAAK,EAALA;AAAF,GAAP,CALR;AAMEO,EAAAA,SAAS,EAAEH,KANb;AAOEI,EAAAA,QAAQ,EAAEN;AAPZ,CAFmB,EAWnB;AACEO,EAAAA,MAAM,EAAE,CAAC5B,oBAAD;AADV,CAXmB,CAArB;eAgBeW,Y","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Box, Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\n\nimport style from './style/dropdown-menu.shadow.css';\n\nconst KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];\nconst INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];\n\nclass DropdownMenuRoot extends Component {\n static displayName = 'DropdownMenu';\n static style = style;\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n _items = [];\n\n _highlightedItem = null;\n\n prevHighlightedIndex = null;\n\n uncontrolledProps() {\n return {\n highlightedIndex: null,\n visible: null,\n };\n }\n\n handlerKeyDown = (e) => {\n const amount = e.shiftKey ? 5 : 1;\n\n if (e.key === ' ' && INTERACTION_TAGS.includes(e.target.tagName)) return;\n if (!KEYS.includes(e.key)) return;\n\n e.preventDefault();\n\n this.handlers.visible(true);\n\n switch (e.key) {\n case 'ArrowDown':\n this.moveHighlightedIndex(amount, e);\n break;\n case 'ArrowUp':\n this.moveHighlightedIndex(-amount, e);\n break;\n case ' ':\n case 'Enter':\n if (this._highlightedItem) this._highlightedItem.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size } = this.asProps;\n return {\n size,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getPopperProps() {\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n\n this._items.push(props);\n if (highlighted) {\n extraProps.ref = this.scrollToNode;\n }\n\n return {\n size,\n highlighted,\n ...extraProps,\n };\n }\n\n getItemHintProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getItemTitleProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n scrollToNode = (node) => {\n this._highlightedItem = node;\n if (node && node.scrollIntoView) {\n if (this.asProps.highlightedIndex !== this.prevHighlightedIndex) {\n this.prevHighlightedIndex = this.asProps.highlightedIndex;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n };\n\n moveHighlightedIndex(amount, e) {\n let { highlightedIndex } = this.asProps;\n const itemsLastIndex = this._items.length - 1;\n const selectedIndex = this._items.findIndex((item) => item.selected);\n\n if (itemsLastIndex < 0) return;\n\n if (highlightedIndex == null) {\n if (selectedIndex !== -1) {\n highlightedIndex = selectedIndex;\n } else {\n highlightedIndex = amount < 0 ? 0 : itemsLastIndex;\n }\n }\n\n let newIndex = highlightedIndex + amount;\n if (newIndex < 0) {\n newIndex = amount + itemsLastIndex + 1;\n } else if (newIndex > itemsLastIndex) {\n newIndex = newIndex - itemsLastIndex - 1;\n }\n\n if (this._items[newIndex] && this._items[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n }\n }\n\n componentDidUpdate() {\n const { visible } = this.asProps;\n\n if (!visible) {\n this.handlers.highlightedIndex(null);\n }\n }\n\n render() {\n const { Children } = this.asProps;\n const props = {};\n\n this._items = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n return sstyled(props.styles)(\n <SDropdownMenuList render={Box} tag={ScrollAreaComponent} role=\"menu\" />,\n );\n}\n\nfunction Menu() {\n return (\n <DropdownMenu.Popper>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n );\n}\n\nfunction Item(props) {\n const [SDropdownMenuItem, { className, ...other }] = useFlex(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItem\n role=\"menuitem\"\n tabIndex={-1}\n className={\n cn(\n styles.cn('SDropdownMenuItem', {\n ...props,\n highlighted: !props.disabled && props.highlighted,\n }).className,\n className,\n ) || undefined\n }\n {...other}\n />\n );\n}\n\nfunction Addon(props) {\n const [SDropdownMenuItemAddon, { className, ...other }] = useBox(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItemAddon\n className={cn(styles.cn('SDropdownMenuItemAddon', props).className, className) || undefined}\n {...other}\n />\n );\n}\n\nfunction Hint(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"hint\" />);\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"title\" />);\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger: Dropdown.Trigger,\n Popper: Dropdown.Popper,\n List,\n Menu,\n Item: [Item, { Addon }],\n ItemTitle: Title,\n ItemHint: Hint,\n },\n {\n parent: [Dropdown],\n },\n);\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
@@ -0,0 +1,110 @@
1
+ import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';
2
+ import Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';
3
+ import { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';
4
+ import { IScrollAreaProps } from '@semcore/scroll-area';
5
+
6
+ export type DropdownMenuSize = 'm' | 'l' | 'xl';
7
+
8
+ export interface IDropdownMenuProps extends IDropdownProps {
9
+ /**
10
+ * Size of the menu
11
+ * @default m
12
+ */
13
+ size?: DropdownMenuSize;
14
+ /**
15
+ * Index of the element selected by default
16
+ */
17
+ defaultHighlightedIndex?: number;
18
+ /**
19
+ * Index of the selected item
20
+ */
21
+ highlightedIndex?: number;
22
+ /**
23
+ * Callback for highlightedIndex change
24
+ * highlightedIndex - Index of the selected item
25
+ */
26
+ onHighlightedIndexChange?: (highlightedIndex: number) => void;
27
+ }
28
+
29
+ export interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {
30
+ /**
31
+ * Size of the menu
32
+ * @default m
33
+ */
34
+ size?: DropdownMenuSize;
35
+ }
36
+
37
+ export interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}
38
+
39
+ export interface IDropdownMenuItemProps extends IFlexProps {
40
+ /**
41
+ * Enables selected state
42
+ */
43
+ selected?: boolean;
44
+ /**
45
+ * Disables the component
46
+ */
47
+ disabled?: boolean;
48
+ /**
49
+ * Adds focus styles around
50
+ */
51
+ highlighted?: boolean;
52
+ /**
53
+ * Makes the element non-interactive
54
+ */
55
+ notInteractive?: boolean;
56
+ /**
57
+ * Size of the component
58
+ * @default m
59
+ */
60
+ size?: DropdownMenuSize;
61
+ }
62
+
63
+ export interface IDropdownMenuItemHintProps extends IFlexProps {
64
+ /**
65
+ * Size of the component
66
+ * @default m
67
+ */
68
+ size?: DropdownMenuSize;
69
+ }
70
+
71
+ export interface IDropdownMenuItemTitleProps extends IFlexProps {
72
+ /**
73
+ * Size of the component
74
+ * @default m
75
+ */
76
+ size?: DropdownMenuSize;
77
+ }
78
+
79
+ export interface IDropdownMenuContext extends IDropdownContext {
80
+ getListProps: PropGetterFn;
81
+ getItemProps: PropGetterFn;
82
+ getItemHintProps: PropGetterFn;
83
+ getItemTitleProps: PropGetterFn;
84
+ }
85
+
86
+ export interface IDropdownMenuHandlers extends IDropdownHandlers {
87
+ highlightedIndex: (index: number) => void;
88
+ }
89
+
90
+ declare const DropdownMenu: (<T>(
91
+ props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
92
+ ) => ReturnEl) & {
93
+ Trigger: typeof Dropdown.Trigger;
94
+ Popper: typeof Dropdown.Popper;
95
+ List: <T>(
96
+ props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
97
+ ) => ReturnEl;
98
+ Menu: <T>(
99
+ props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
100
+ ) => ReturnEl;
101
+ Item: (<T>(
102
+ props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
103
+ ) => ReturnEl) & {
104
+ Addon: typeof Box;
105
+ };
106
+ ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;
107
+ ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;
108
+ };
109
+
110
+ export default DropdownMenu;
package/lib/cjs/index.js CHANGED
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- var _exportNames = {};
9
8
  Object.defineProperty(exports, "default", {
10
9
  enumerable: true,
11
10
  get: function get() {
@@ -13,21 +12,5 @@ Object.defineProperty(exports, "default", {
13
12
  }
14
13
  });
15
14
 
16
- var _DropdownMenu = _interopRequireWildcard(require("./DropdownMenu"));
17
-
18
- Object.keys(_DropdownMenu).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
- if (key in exports && exports[key] === _DropdownMenu[key]) return;
22
- Object.defineProperty(exports, key, {
23
- enumerable: true,
24
- get: function get() {
25
- return _DropdownMenu[key];
26
- }
27
- });
28
- });
29
-
30
- 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); }
31
-
32
- 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; }
15
+ var _DropdownMenu = _interopRequireDefault(require("./DropdownMenu"));
33
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default } from './DropdownMenu';\nexport * from './DropdownMenu';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export { default } from './DropdownMenu';\n"],"file":"index.js"}
@@ -21,7 +21,7 @@ SDropdownMenuItem {
21
21
  line-height: normal;
22
22
 
23
23
  &:hover {
24
- background-color: color-mod(black a(10%));
24
+ background-color: var(--gray-50);
25
25
  }
26
26
 
27
27
  &:focus {
@@ -31,14 +31,14 @@ SDropdownMenuItem {
31
31
 
32
32
  SDropdownMenuItem[highlighted] {
33
33
  z-index: 1;
34
- box-shadow: var(--keyborad-focus) inset;
34
+ box-shadow: var(--keyboard-focus) inset;
35
35
  }
36
36
 
37
37
  SDropdownMenuItem[selected] {
38
- background-color: color-mod(var(--light-blue) a(20%));
38
+ background-color: color-mod(var(--blue-100) a(70%));
39
39
 
40
40
  &:hover {
41
- background-color: color-mod(var(--light-blue) a(20%));
41
+ background-color: var(--blue-100);
42
42
  }
43
43
  }
44
44
 
@@ -48,30 +48,20 @@ SDropdownMenuItem[disabled] {
48
48
  pointer-events: none;
49
49
  }
50
50
 
51
- SDropdownMenuItem[size='xl'] {
51
+ SDropdownMenuItem[size='l'] {
52
52
  font-size: var(--fs-300);
53
53
  line-height: var(--lh-300);
54
-
55
54
  padding: 8px 12px;
56
- min-height: 42px;
55
+ min-height: 40px;
57
56
  }
58
57
 
59
- SDropdownMenuItem[size='l'] {
58
+ SDropdownMenuItem[size='m'] {
60
59
  font-size: var(--fs-200);
61
60
  line-height: var(--lh-200);
62
-
63
61
  padding: 6px 8px;
64
62
  min-height: 32px;
65
63
  }
66
64
 
67
- SDropdownMenuItem[size='m'] {
68
- font-size: var(--fs-100);
69
- line-height: var(--lh-100);
70
-
71
- padding: 4px 8px;
72
- min-height: 26px;
73
- }
74
-
75
65
  SDropdownMenuItem[notInteractive] {
76
66
  cursor: default;
77
67
 
@@ -81,7 +71,7 @@ SDropdownMenuItem[notInteractive] {
81
71
  }
82
72
 
83
73
  SDropdownMenuItem[variant='hint'] {
84
- color: var(--gray60);
74
+ color: var(--gray-500);
85
75
  cursor: default;
86
76
 
87
77
  &:hover {
@@ -114,6 +104,6 @@ SDropdownMenuItemAddon {
114
104
 
115
105
  SPopper {
116
106
  &:focus {
117
- box-shadow: var(--keyborad-focus);
107
+ box-shadow: var(--keyboard-focus);
118
108
  }
119
109
  }
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
5
  import _createClass from "@babel/runtime/helpers/createClass";
6
6
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
@@ -14,9 +14,8 @@ import { assignProps as _assignProps4 } from "@semcore/core";
14
14
  import { assignProps as _assignProps3 } from "@semcore/core";
15
15
  import { assignProps as _assignProps2 } from "@semcore/core";
16
16
  import { assignProps as _assignProps } from "@semcore/core";
17
- var _excluded = ["Children", "optionCount", "triggerType", "onSelect"],
18
- _excluded2 = ["className"],
19
- _excluded3 = ["className"];
17
+ var _excluded = ["className"],
18
+ _excluded2 = ["className"];
20
19
 
21
20
  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; }
22
21
 
@@ -32,31 +31,29 @@ import createComponent, { Component, sstyled, Root } from '@semcore/core';
32
31
  import Dropdown from '@semcore/dropdown';
33
32
  import { Box, Flex, useBox, useFlex } from '@semcore/flex-box';
34
33
  import ScrollAreaComponent from '@semcore/scroll-area';
35
- import logger from '@semcore/utils/lib/logger';
36
34
 
37
35
  /*__reshadow-styles__:"./style/dropdown-menu.shadow.css"*/
38
36
  var style = (
39
37
  /*__reshadow_css_start__*/
40
38
  _sstyled.insert(
41
39
  /*__inner_css_start__*/
42
- ".___SDropdownMenuList_1sdvk_gg_{max-height:240px;margin:4px 0;padding:0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_1sdvk_gg_{display:flex;align-items:center;position:relative;text-decoration:none;box-sizing:border-box;cursor:pointer;width:100%;text-align:left;line-height:normal}.___SDropdownMenuItem_1sdvk_gg_:hover{background-color:rgba(0,0,0,.1)}.___SDropdownMenuItem_1sdvk_gg_:focus{outline:none}.___SDropdownMenuItem_1sdvk_gg_.__highlighted_1sdvk_gg_{z-index:1;box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3) inset}.___SDropdownMenuItem_1sdvk_gg_.__selected_1sdvk_gg_{background-color:rgba(43,148,225,.2)}.___SDropdownMenuItem_1sdvk_gg_.__selected_1sdvk_gg_:hover{background-color:rgba(43,148,225,.2)}.___SDropdownMenuItem_1sdvk_gg_.__disabled_1sdvk_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SDropdownMenuItem_1sdvk_gg_._size_xl_1sdvk_gg_{font-size:16px;line-height:1.5;padding:8px 12px;min-height:42px}.___SDropdownMenuItem_1sdvk_gg_._size_l_1sdvk_gg_{font-size:14px;line-height:1.42;padding:6px 8px;min-height:32px}.___SDropdownMenuItem_1sdvk_gg_._size_m_1sdvk_gg_{font-size:12px;line-height:1.5;padding:4px 8px;min-height:26px}.___SDropdownMenuItem_1sdvk_gg_.__notInteractive_1sdvk_gg_{cursor:default}.___SDropdownMenuItem_1sdvk_gg_.__notInteractive_1sdvk_gg_:hover{background:none}.___SDropdownMenuItem_1sdvk_gg_._variant_hint_1sdvk_gg_{color:#757575;cursor:default}.___SDropdownMenuItem_1sdvk_gg_._variant_hint_1sdvk_gg_:hover{background:none}.___SDropdownMenuItem_1sdvk_gg_._variant_title_1sdvk_gg_{font-weight:700;cursor:default}.___SDropdownMenuItem_1sdvk_gg_._variant_title_1sdvk_gg_:hover{background:none}.___SDropdownMenuItemAddon_1sdvk_gg_{display:inline-flex;margin-left:8px;margin-right:8px}.___SDropdownMenuItemAddon_1sdvk_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1sdvk_gg_:last-child{margin-right:0}.___SPopper_1sdvk_gg_:focus{box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3)}"
40
+ ".___SDropdownMenuList_wus9c_gg_{max-height:240px;margin:4px 0;padding:0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_wus9c_gg_{display:flex;align-items:center;position:relative;text-decoration:none;box-sizing:border-box;cursor:pointer;width:100%;text-align:left;line-height:normal}.___SDropdownMenuItem_wus9c_gg_:hover{background-color:#f4f5f9}.___SDropdownMenuItem_wus9c_gg_:focus{outline:none}.___SDropdownMenuItem_wus9c_gg_.__highlighted_wus9c_gg_{z-index:1;box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2) inset}.___SDropdownMenuItem_wus9c_gg_.__selected_wus9c_gg_{background-color:rgba(196,229,254,.7)}.___SDropdownMenuItem_wus9c_gg_.__selected_wus9c_gg_:hover{background-color:#c4e5fe}.___SDropdownMenuItem_wus9c_gg_.__disabled_wus9c_gg_{opacity:0.3;cursor:default;pointer-events:none}.___SDropdownMenuItem_wus9c_gg_._size_l_wus9c_gg_{font-size:16px;line-height:1.5;padding:8px 12px;min-height:40px}.___SDropdownMenuItem_wus9c_gg_._size_m_wus9c_gg_{font-size:14px;line-height:1.42;padding:6px 8px;min-height:32px}.___SDropdownMenuItem_wus9c_gg_.__notInteractive_wus9c_gg_{cursor:default}.___SDropdownMenuItem_wus9c_gg_.__notInteractive_wus9c_gg_:hover{background:none}.___SDropdownMenuItem_wus9c_gg_._variant_hint_wus9c_gg_{color:#6c6e79;cursor:default}.___SDropdownMenuItem_wus9c_gg_._variant_hint_wus9c_gg_:hover{background:none}.___SDropdownMenuItem_wus9c_gg_._variant_title_wus9c_gg_{font-weight:700;cursor:default}.___SDropdownMenuItem_wus9c_gg_._variant_title_wus9c_gg_:hover{background:none}.___SDropdownMenuItemAddon_wus9c_gg_{display:inline-flex;margin-left:8px;margin-right:8px}.___SDropdownMenuItemAddon_wus9c_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_wus9c_gg_:last-child{margin-right:0}.___SPopper_wus9c_gg_:focus{box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2)}"
43
41
  /*__inner_css_end__*/
44
- , "19x58cq_gg_")
42
+ , "1c6qqff_gg_")
45
43
  /*__reshadow_css_end__*/
46
44
  , {
47
- "__SDropdownMenuList": "___SDropdownMenuList_1sdvk_gg_",
48
- "__SDropdownMenuItem": "___SDropdownMenuItem_1sdvk_gg_",
49
- "_highlighted": "__highlighted_1sdvk_gg_",
50
- "_selected": "__selected_1sdvk_gg_",
51
- "_disabled": "__disabled_1sdvk_gg_",
52
- "_size_xl": "_size_xl_1sdvk_gg_",
53
- "_size_l": "_size_l_1sdvk_gg_",
54
- "_size_m": "_size_m_1sdvk_gg_",
55
- "_notInteractive": "__notInteractive_1sdvk_gg_",
56
- "_variant_hint": "_variant_hint_1sdvk_gg_",
57
- "_variant_title": "_variant_title_1sdvk_gg_",
58
- "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1sdvk_gg_",
59
- "__SPopper": "___SPopper_1sdvk_gg_"
45
+ "__SDropdownMenuList": "___SDropdownMenuList_wus9c_gg_",
46
+ "__SDropdownMenuItem": "___SDropdownMenuItem_wus9c_gg_",
47
+ "_highlighted": "__highlighted_wus9c_gg_",
48
+ "_selected": "__selected_wus9c_gg_",
49
+ "_disabled": "__disabled_wus9c_gg_",
50
+ "_size_l": "_size_l_wus9c_gg_",
51
+ "_size_m": "_size_m_wus9c_gg_",
52
+ "_notInteractive": "__notInteractive_wus9c_gg_",
53
+ "_variant_hint": "_variant_hint_wus9c_gg_",
54
+ "_variant_title": "_variant_title_wus9c_gg_",
55
+ "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_wus9c_gg_",
56
+ "__SPopper": "___SPopper_wus9c_gg_"
60
57
  });
61
58
  var KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];
62
59
  var INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];
@@ -109,21 +106,6 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
109
106
  }
110
107
  });
111
108
 
112
- _defineProperty(_assertThisInitialized(_this), "bindHandlerFallbackSelect", function (props, index) {
113
- return function () {
114
- var _this$asProps = _this.asProps,
115
- onSelect = _this$asProps.onSelect,
116
- multiselect = _this$asProps.multiselect;
117
- var result = onSelect(_objectSpread({
118
- index: index
119
- }, props));
120
-
121
- if (!multiselect && result !== false) {
122
- _this.handlers.visible(false);
123
- }
124
- };
125
- });
126
-
127
109
  _defineProperty(_assertThisInitialized(_this), "scrollToNode", function (node) {
128
110
  _this._highlightedItem = node;
129
111
 
@@ -177,17 +159,12 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
177
159
  }, {
178
160
  key: "getItemProps",
179
161
  value: function getItemProps(props, index) {
180
- var _this$asProps2 = this.asProps,
181
- size = _this$asProps2.size,
182
- highlightedIndex = _this$asProps2.highlightedIndex,
183
- onSelect = _this$asProps2.onSelect;
162
+ var _this$asProps = this.asProps,
163
+ size = _this$asProps.size,
164
+ highlightedIndex = _this$asProps.highlightedIndex;
184
165
  var highlighted = index === highlightedIndex;
185
166
  var extraProps = {};
186
167
 
187
- if (onSelect !== undefined) {
188
- extraProps.onClick = this.bindHandlerFallbackSelect(props, index);
189
- }
190
-
191
168
  this._items.push(props);
192
169
 
193
170
  if (highlighted) {
@@ -261,25 +238,10 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
261
238
  }, {
262
239
  key: "render",
263
240
  value: function render() {
264
- var _ref = this ? this.asProps : arguments[0];
265
-
266
- var _this$asProps3 = this.asProps,
267
- Children = _this$asProps3.Children,
268
- optionCount = _this$asProps3.optionCount,
269
- triggerType = _this$asProps3.triggerType,
270
- onSelect = _this$asProps3.onSelect,
271
- other = _objectWithoutProperties(_this$asProps3, _excluded);
272
-
241
+ var _ref = this.asProps;
242
+ var Children = this.asProps.Children;
273
243
  var props = {};
274
244
  this._items = [];
275
- logger.warn(onSelect !== undefined, "Property 'onSelect' is deprecated, subscribe to the 'onClick' of the needed 'Item'", other['data-ui-name'] || DropdownMenu.displayName);
276
- logger.warn(optionCount !== undefined, "The 'optionCount' property is deprecated and is now automatically determined from the number of Item", other['data-ui-name'] || DropdownMenu.displayName);
277
- logger.warn(triggerType !== undefined, "The 'triggerType' property is deprecated, use 'interaction=\"focus\"'", other['data-ui-name'] || DropdownMenu.displayName);
278
-
279
- if (triggerType === 'input') {
280
- props.interaction = 'focus';
281
- }
282
-
283
245
  return /*#__PURE__*/React.createElement(Dropdown, _assignProps(_objectSpread({}, props), _ref), /*#__PURE__*/React.createElement(Children, null));
284
246
  }
285
247
  }]);
@@ -298,7 +260,7 @@ _defineProperty(DropdownMenuRoot, "defaultProps", {
298
260
  });
299
261
 
300
262
  function List(props) {
301
- var _ref2 = this ? this.asProps : arguments[0],
263
+ var _ref2 = arguments[0],
302
264
  _ref6;
303
265
 
304
266
  var SDropdownMenuList = Box;
@@ -309,8 +271,7 @@ function List(props) {
309
271
  }
310
272
 
311
273
  function Menu() {
312
- var _ref3 = this ? this.asProps : arguments[0];
313
-
274
+ var _ref3 = arguments[0];
314
275
  return /*#__PURE__*/React.createElement(DropdownMenu.Popper, null, /*#__PURE__*/React.createElement(DropdownMenu.List, _assignProps3({}, _ref3)));
315
276
  }
316
277
 
@@ -320,7 +281,7 @@ function Item(props) {
320
281
  SDropdownMenuItem = _useFlex2[0],
321
282
  _useFlex2$ = _useFlex2[1],
322
283
  className = _useFlex2$.className,
323
- other = _objectWithoutProperties(_useFlex2$, _excluded2);
284
+ other = _objectWithoutProperties(_useFlex2$, _excluded);
324
285
 
325
286
  var styles = sstyled(props.styles);
326
287
  return /*#__PURE__*/React.createElement(SDropdownMenuItem, _extends({
@@ -338,7 +299,7 @@ function Addon(props) {
338
299
  SDropdownMenuItemAddon = _useBox2[0],
339
300
  _useBox2$ = _useBox2[1],
340
301
  className = _useBox2$.className,
341
- other = _objectWithoutProperties(_useBox2$, _excluded3);
302
+ other = _objectWithoutProperties(_useBox2$, _excluded2);
342
303
 
343
304
  var styles = sstyled(props.styles);
344
305
  return /*#__PURE__*/React.createElement(SDropdownMenuItemAddon, _extends({
@@ -347,7 +308,7 @@ function Addon(props) {
347
308
  }
348
309
 
349
310
  function Hint(props) {
350
- var _ref4 = this ? this.asProps : arguments[0],
311
+ var _ref4 = arguments[0],
351
312
  _ref7;
352
313
 
353
314
  var SDropdownMenuItem = Flex;
@@ -357,7 +318,7 @@ function Hint(props) {
357
318
  }
358
319
 
359
320
  function Title(props) {
360
- var _ref5 = this ? this.asProps : arguments[0],
321
+ var _ref5 = arguments[0],
361
322
  _ref8;
362
323
 
363
324
  var SDropdownMenuItem = Flex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/DropdownMenu.jsx"],"names":["React","cn","createComponent","Component","sstyled","Root","Dropdown","Box","Flex","useBox","useFlex","ScrollAreaComponent","logger","KEYS","INTERACTION_TAGS","DropdownMenuRoot","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","_highlightedItem","click","props","index","asProps","onSelect","multiselect","result","node","scrollIntoView","highlightedIndex","prevHighlightedIndex","block","inline","size","onKeyDown","handlerKeyDown","tabIndex","highlighted","extraProps","undefined","onClick","bindHandlerFallbackSelect","_items","push","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","Children","optionCount","triggerType","other","warn","DropdownMenu","displayName","interaction","style","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","styles","Menu","Item","forwardRef","SDropdownMenuItem","className","Addon","SDropdownMenuItemAddon","Hint","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Box, Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport logger from '@semcore/utils/lib/logger';\n\nimport style from './style/dropdown-menu.shadow.css';\n\nconst KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];\nconst INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];\n\nclass DropdownMenuRoot extends Component {\n static displayName = 'DropdownMenu';\n static style = style;\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n _items = [];\n\n _highlightedItem = null;\n\n prevHighlightedIndex = null;\n\n uncontrolledProps() {\n return {\n highlightedIndex: null,\n visible: null,\n };\n }\n\n handlerKeyDown = (e) => {\n const amount = e.shiftKey ? 5 : 1;\n\n if (e.key === ' ' && INTERACTION_TAGS.includes(e.target.tagName)) return;\n if (!KEYS.includes(e.key)) return;\n\n e.preventDefault();\n\n this.handlers.visible(true);\n\n switch (e.key) {\n case 'ArrowDown':\n this.moveHighlightedIndex(amount, e);\n break;\n case 'ArrowUp':\n this.moveHighlightedIndex(-amount, e);\n break;\n case ' ':\n case 'Enter':\n if (this._highlightedItem) this._highlightedItem.click();\n break;\n }\n };\n\n bindHandlerFallbackSelect = (props, index) => () => {\n const { onSelect, multiselect } = this.asProps;\n const result = onSelect({\n index,\n ...props,\n });\n\n if (!multiselect && result !== false) {\n this.handlers.visible(false);\n }\n };\n\n getTriggerProps() {\n const { size } = this.asProps;\n return {\n size,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getPopperProps() {\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex, onSelect } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n\n if (onSelect !== undefined) {\n extraProps.onClick = this.bindHandlerFallbackSelect(props, index);\n }\n\n this._items.push(props);\n if (highlighted) {\n extraProps.ref = this.scrollToNode;\n }\n\n return {\n size,\n highlighted,\n ...extraProps,\n };\n }\n\n getItemHintProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getItemTitleProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n scrollToNode = (node) => {\n this._highlightedItem = node;\n if (node && node.scrollIntoView) {\n if (this.asProps.highlightedIndex !== this.prevHighlightedIndex) {\n this.prevHighlightedIndex = this.asProps.highlightedIndex;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n };\n\n moveHighlightedIndex(amount, e) {\n let { highlightedIndex } = this.asProps;\n const itemsLastIndex = this._items.length - 1;\n const selectedIndex = this._items.findIndex((item) => item.selected);\n\n if (itemsLastIndex < 0) return;\n\n if (highlightedIndex == null) {\n if (selectedIndex !== -1) {\n highlightedIndex = selectedIndex;\n } else {\n highlightedIndex = amount < 0 ? 0 : itemsLastIndex;\n }\n }\n\n let newIndex = highlightedIndex + amount;\n if (newIndex < 0) {\n newIndex = amount + itemsLastIndex + 1;\n } else if (newIndex > itemsLastIndex) {\n newIndex = newIndex - itemsLastIndex - 1;\n }\n\n if (this._items[newIndex] && this._items[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n }\n }\n\n componentDidUpdate() {\n const { visible } = this.asProps;\n\n if (!visible) {\n this.handlers.highlightedIndex(null);\n }\n }\n\n render() {\n const { Children, optionCount, triggerType, onSelect, ...other } = this.asProps;\n const props = {};\n\n this._items = [];\n\n logger.warn(\n onSelect !== undefined,\n \"Property 'onSelect' is deprecated, subscribe to the 'onClick' of the needed 'Item'\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n logger.warn(\n optionCount !== undefined,\n \"The 'optionCount' property is deprecated and is now automatically determined from the number of Item\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n logger.warn(\n triggerType !== undefined,\n \"The 'triggerType' property is deprecated, use 'interaction=\\\"focus\\\"'\",\n other['data-ui-name'] || DropdownMenu.displayName,\n );\n if (triggerType === 'input') {\n props.interaction = 'focus';\n }\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n return sstyled(props.styles)(\n <SDropdownMenuList render={Box} tag={ScrollAreaComponent} role=\"menu\" />,\n );\n}\n\nfunction Menu() {\n return (\n <DropdownMenu.Popper>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n );\n}\n\nfunction Item(props) {\n const [SDropdownMenuItem, { className, ...other }] = useFlex(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItem\n role=\"menuitem\"\n tabIndex={-1}\n className={\n cn(\n styles.cn('SDropdownMenuItem', {\n ...props,\n highlighted: !props.disabled && props.highlighted,\n }).className,\n className,\n ) || undefined\n }\n {...other}\n />\n );\n}\n\nfunction Addon(props) {\n const [SDropdownMenuItemAddon, { className, ...other }] = useBox(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItemAddon\n className={cn(styles.cn('SDropdownMenuItemAddon', props).className, className) || undefined}\n {...other}\n />\n );\n}\n\nfunction Hint(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"hint\" />);\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"title\" />);\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger: Dropdown.Trigger,\n Popper: Dropdown.Popper,\n List,\n Menu,\n Item: [Item, { Addon }],\n ItemTitle: Title,\n ItemHint: Hint,\n },\n {\n parent: [Dropdown],\n },\n);\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
1
+ {"version":3,"sources":["../../src/DropdownMenu.jsx"],"names":["React","cn","createComponent","Component","sstyled","Root","Dropdown","Box","Flex","useBox","useFlex","ScrollAreaComponent","KEYS","INTERACTION_TAGS","DropdownMenuRoot","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","_highlightedItem","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","onKeyDown","handlerKeyDown","tabIndex","props","index","highlighted","extraProps","_items","push","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","Children","style","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","styles","Menu","DropdownMenu","Item","forwardRef","SDropdownMenuItem","className","other","undefined","Addon","SDropdownMenuItemAddon","Hint","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Box, Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\n\nimport style from './style/dropdown-menu.shadow.css';\n\nconst KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];\nconst INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];\n\nclass DropdownMenuRoot extends Component {\n static displayName = 'DropdownMenu';\n static style = style;\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n _items = [];\n\n _highlightedItem = null;\n\n prevHighlightedIndex = null;\n\n uncontrolledProps() {\n return {\n highlightedIndex: null,\n visible: null,\n };\n }\n\n handlerKeyDown = (e) => {\n const amount = e.shiftKey ? 5 : 1;\n\n if (e.key === ' ' && INTERACTION_TAGS.includes(e.target.tagName)) return;\n if (!KEYS.includes(e.key)) return;\n\n e.preventDefault();\n\n this.handlers.visible(true);\n\n switch (e.key) {\n case 'ArrowDown':\n this.moveHighlightedIndex(amount, e);\n break;\n case 'ArrowUp':\n this.moveHighlightedIndex(-amount, e);\n break;\n case ' ':\n case 'Enter':\n if (this._highlightedItem) this._highlightedItem.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size } = this.asProps;\n return {\n size,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getPopperProps() {\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n\n this._items.push(props);\n if (highlighted) {\n extraProps.ref = this.scrollToNode;\n }\n\n return {\n size,\n highlighted,\n ...extraProps,\n };\n }\n\n getItemHintProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n getItemTitleProps() {\n const { size } = this.asProps;\n return {\n size,\n };\n }\n\n scrollToNode = (node) => {\n this._highlightedItem = node;\n if (node && node.scrollIntoView) {\n if (this.asProps.highlightedIndex !== this.prevHighlightedIndex) {\n this.prevHighlightedIndex = this.asProps.highlightedIndex;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n };\n\n moveHighlightedIndex(amount, e) {\n let { highlightedIndex } = this.asProps;\n const itemsLastIndex = this._items.length - 1;\n const selectedIndex = this._items.findIndex((item) => item.selected);\n\n if (itemsLastIndex < 0) return;\n\n if (highlightedIndex == null) {\n if (selectedIndex !== -1) {\n highlightedIndex = selectedIndex;\n } else {\n highlightedIndex = amount < 0 ? 0 : itemsLastIndex;\n }\n }\n\n let newIndex = highlightedIndex + amount;\n if (newIndex < 0) {\n newIndex = amount + itemsLastIndex + 1;\n } else if (newIndex > itemsLastIndex) {\n newIndex = newIndex - itemsLastIndex - 1;\n }\n\n if (this._items[newIndex] && this._items[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n }\n }\n\n componentDidUpdate() {\n const { visible } = this.asProps;\n\n if (!visible) {\n this.handlers.highlightedIndex(null);\n }\n }\n\n render() {\n const { Children } = this.asProps;\n const props = {};\n\n this._items = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n return sstyled(props.styles)(\n <SDropdownMenuList render={Box} tag={ScrollAreaComponent} role=\"menu\" />,\n );\n}\n\nfunction Menu() {\n return (\n <DropdownMenu.Popper>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n );\n}\n\nfunction Item(props) {\n const [SDropdownMenuItem, { className, ...other }] = useFlex(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItem\n role=\"menuitem\"\n tabIndex={-1}\n className={\n cn(\n styles.cn('SDropdownMenuItem', {\n ...props,\n highlighted: !props.disabled && props.highlighted,\n }).className,\n className,\n ) || undefined\n }\n {...other}\n />\n );\n}\n\nfunction Addon(props) {\n const [SDropdownMenuItemAddon, { className, ...other }] = useBox(props, props.forwardRef);\n const styles = sstyled(props.styles);\n return (\n <SDropdownMenuItemAddon\n className={cn(styles.cn('SDropdownMenuItemAddon', props).className, className) || undefined}\n {...other}\n />\n );\n}\n\nfunction Hint(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"hint\" />);\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(<SDropdownMenuItem render={Flex} variant=\"title\" />);\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger: Dropdown.Trigger,\n Popper: Dropdown.Popper,\n List,\n Menu,\n Item: [Item, { Addon }],\n ItemTitle: Title,\n ItemHint: Hint,\n },\n {\n parent: [Dropdown],\n },\n);\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
@@ -0,0 +1,110 @@
1
+ import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';
2
+ import Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';
3
+ import { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';
4
+ import { IScrollAreaProps } from '@semcore/scroll-area';
5
+
6
+ export type DropdownMenuSize = 'm' | 'l' | 'xl';
7
+
8
+ export interface IDropdownMenuProps extends IDropdownProps {
9
+ /**
10
+ * Size of the menu
11
+ * @default m
12
+ */
13
+ size?: DropdownMenuSize;
14
+ /**
15
+ * Index of the element selected by default
16
+ */
17
+ defaultHighlightedIndex?: number;
18
+ /**
19
+ * Index of the selected item
20
+ */
21
+ highlightedIndex?: number;
22
+ /**
23
+ * Callback for highlightedIndex change
24
+ * highlightedIndex - Index of the selected item
25
+ */
26
+ onHighlightedIndexChange?: (highlightedIndex: number) => void;
27
+ }
28
+
29
+ export interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {
30
+ /**
31
+ * Size of the menu
32
+ * @default m
33
+ */
34
+ size?: DropdownMenuSize;
35
+ }
36
+
37
+ export interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}
38
+
39
+ export interface IDropdownMenuItemProps extends IFlexProps {
40
+ /**
41
+ * Enables selected state
42
+ */
43
+ selected?: boolean;
44
+ /**
45
+ * Disables the component
46
+ */
47
+ disabled?: boolean;
48
+ /**
49
+ * Adds focus styles around
50
+ */
51
+ highlighted?: boolean;
52
+ /**
53
+ * Makes the element non-interactive
54
+ */
55
+ notInteractive?: boolean;
56
+ /**
57
+ * Size of the component
58
+ * @default m
59
+ */
60
+ size?: DropdownMenuSize;
61
+ }
62
+
63
+ export interface IDropdownMenuItemHintProps extends IFlexProps {
64
+ /**
65
+ * Size of the component
66
+ * @default m
67
+ */
68
+ size?: DropdownMenuSize;
69
+ }
70
+
71
+ export interface IDropdownMenuItemTitleProps extends IFlexProps {
72
+ /**
73
+ * Size of the component
74
+ * @default m
75
+ */
76
+ size?: DropdownMenuSize;
77
+ }
78
+
79
+ export interface IDropdownMenuContext extends IDropdownContext {
80
+ getListProps: PropGetterFn;
81
+ getItemProps: PropGetterFn;
82
+ getItemHintProps: PropGetterFn;
83
+ getItemTitleProps: PropGetterFn;
84
+ }
85
+
86
+ export interface IDropdownMenuHandlers extends IDropdownHandlers {
87
+ highlightedIndex: (index: number) => void;
88
+ }
89
+
90
+ declare const DropdownMenu: (<T>(
91
+ props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
92
+ ) => ReturnEl) & {
93
+ Trigger: typeof Dropdown.Trigger;
94
+ Popper: typeof Dropdown.Popper;
95
+ List: <T>(
96
+ props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
97
+ ) => ReturnEl;
98
+ Menu: <T>(
99
+ props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
100
+ ) => ReturnEl;
101
+ Item: (<T>(
102
+ props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,
103
+ ) => ReturnEl) & {
104
+ Addon: typeof Box;
105
+ };
106
+ ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;
107
+ ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;
108
+ };
109
+
110
+ export default DropdownMenu;
package/lib/es6/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export { default } from './DropdownMenu';
2
- export * from './DropdownMenu';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,gBAAxB;AACA,cAAc,gBAAd","sourcesContent":["export { default } from './DropdownMenu';\nexport * from './DropdownMenu';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,gBAAxB","sourcesContent":["export { default } from './DropdownMenu';\n"],"file":"index.js"}
@@ -21,7 +21,7 @@ SDropdownMenuItem {
21
21
  line-height: normal;
22
22
 
23
23
  &:hover {
24
- background-color: color-mod(black a(10%));
24
+ background-color: var(--gray-50);
25
25
  }
26
26
 
27
27
  &:focus {
@@ -31,14 +31,14 @@ SDropdownMenuItem {
31
31
 
32
32
  SDropdownMenuItem[highlighted] {
33
33
  z-index: 1;
34
- box-shadow: var(--keyborad-focus) inset;
34
+ box-shadow: var(--keyboard-focus) inset;
35
35
  }
36
36
 
37
37
  SDropdownMenuItem[selected] {
38
- background-color: color-mod(var(--light-blue) a(20%));
38
+ background-color: color-mod(var(--blue-100) a(70%));
39
39
 
40
40
  &:hover {
41
- background-color: color-mod(var(--light-blue) a(20%));
41
+ background-color: var(--blue-100);
42
42
  }
43
43
  }
44
44
 
@@ -48,30 +48,20 @@ SDropdownMenuItem[disabled] {
48
48
  pointer-events: none;
49
49
  }
50
50
 
51
- SDropdownMenuItem[size='xl'] {
51
+ SDropdownMenuItem[size='l'] {
52
52
  font-size: var(--fs-300);
53
53
  line-height: var(--lh-300);
54
-
55
54
  padding: 8px 12px;
56
- min-height: 42px;
55
+ min-height: 40px;
57
56
  }
58
57
 
59
- SDropdownMenuItem[size='l'] {
58
+ SDropdownMenuItem[size='m'] {
60
59
  font-size: var(--fs-200);
61
60
  line-height: var(--lh-200);
62
-
63
61
  padding: 6px 8px;
64
62
  min-height: 32px;
65
63
  }
66
64
 
67
- SDropdownMenuItem[size='m'] {
68
- font-size: var(--fs-100);
69
- line-height: var(--lh-100);
70
-
71
- padding: 4px 8px;
72
- min-height: 26px;
73
- }
74
-
75
65
  SDropdownMenuItem[notInteractive] {
76
66
  cursor: default;
77
67
 
@@ -81,7 +71,7 @@ SDropdownMenuItem[notInteractive] {
81
71
  }
82
72
 
83
73
  SDropdownMenuItem[variant='hint'] {
84
- color: var(--gray60);
74
+ color: var(--gray-500);
85
75
  cursor: default;
86
76
 
87
77
  &:hover {
@@ -114,6 +104,6 @@ SDropdownMenuItemAddon {
114
104
 
115
105
  SPopper {
116
106
  &:focus {
117
- box-shadow: var(--keyborad-focus);
107
+ box-shadow: var(--keyboard-focus);
118
108
  }
119
109
  }
@@ -24,17 +24,6 @@ export interface IDropdownMenuProps extends IDropdownProps {
24
24
  * highlightedIndex - Index of the selected item
25
25
  */
26
26
  onHighlightedIndexChange?: (highlightedIndex: number) => void;
27
- /** @deprecated v2.0.0 */
28
- optionCount?: number;
29
- /** Trigger type selection
30
- * @deprecated v2.0.0 */
31
- triggerType?: 'button' | 'input';
32
- /** Handler in option selection
33
- * @deprecated v2.0.0 */
34
- onSelect?: (item: any) => void;
35
- /** Multiple choice of options
36
- * @deprecated v2.0.0 {@link ISelectProps.multiselect} */
37
- multiselect?: boolean;
38
27
  }
39
28
 
40
29
  export interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/dropdown-menu",
3
3
  "description": "SEMRush DropdownMenu Component",
4
- "version": "2.3.10",
4
+ "version": "3.0.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,9 +14,10 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@semcore/utils": "^3.15",
17
- "@semcore/dropdown": "^2",
17
+ "@semcore/dropdown": "^3",
18
18
  "@semcore/flex-box": "^4",
19
- "@semcore/scroll-area": "^3"
19
+ "@semcore/scroll-area": "^4.0.0",
20
+ "classnames": "2.2.6"
20
21
  },
21
22
  "peerDependencies": {
22
23
  "@semcore/core": "^1.11",
@@ -29,5 +30,8 @@
29
30
  "type": "git",
30
31
  "url": "https://github.com/semrush/intergalactic.git",
31
32
  "directory": "semcore/dropdown-menu"
33
+ },
34
+ "devDependencies": {
35
+ "@semcore/jest-preset-ui": "1.0.0"
32
36
  }
33
37
  }
@@ -4,7 +4,6 @@ import createComponent, { Component, sstyled, Root } from '@semcore/core';
4
4
  import Dropdown from '@semcore/dropdown';
5
5
  import { Box, Flex, useBox, useFlex } from '@semcore/flex-box';
6
6
  import ScrollAreaComponent from '@semcore/scroll-area';
7
- import logger from '@semcore/utils/lib/logger';
8
7
 
9
8
  import style from './style/dropdown-menu.shadow.css';
10
9
 
@@ -58,18 +57,6 @@ class DropdownMenuRoot extends Component {
58
57
  }
59
58
  };
60
59
 
61
- bindHandlerFallbackSelect = (props, index) => () => {
62
- const { onSelect, multiselect } = this.asProps;
63
- const result = onSelect({
64
- index,
65
- ...props,
66
- });
67
-
68
- if (!multiselect && result !== false) {
69
- this.handlers.visible(false);
70
- }
71
- };
72
-
73
60
  getTriggerProps() {
74
61
  const { size } = this.asProps;
75
62
  return {
@@ -93,14 +80,10 @@ class DropdownMenuRoot extends Component {
93
80
  }
94
81
 
95
82
  getItemProps(props, index) {
96
- const { size, highlightedIndex, onSelect } = this.asProps;
83
+ const { size, highlightedIndex } = this.asProps;
97
84
  const highlighted = index === highlightedIndex;
98
85
  const extraProps = {};
99
86
 
100
- if (onSelect !== undefined) {
101
- extraProps.onClick = this.bindHandlerFallbackSelect(props, index);
102
- }
103
-
104
87
  this._items.push(props);
105
88
  if (highlighted) {
106
89
  extraProps.ref = this.scrollToNode;
@@ -178,30 +161,11 @@ class DropdownMenuRoot extends Component {
178
161
  }
179
162
 
180
163
  render() {
181
- const { Children, optionCount, triggerType, onSelect, ...other } = this.asProps;
164
+ const { Children } = this.asProps;
182
165
  const props = {};
183
166
 
184
167
  this._items = [];
185
168
 
186
- logger.warn(
187
- onSelect !== undefined,
188
- "Property 'onSelect' is deprecated, subscribe to the 'onClick' of the needed 'Item'",
189
- other['data-ui-name'] || DropdownMenu.displayName,
190
- );
191
- logger.warn(
192
- optionCount !== undefined,
193
- "The 'optionCount' property is deprecated and is now automatically determined from the number of Item",
194
- other['data-ui-name'] || DropdownMenu.displayName,
195
- );
196
- logger.warn(
197
- triggerType !== undefined,
198
- "The 'triggerType' property is deprecated, use 'interaction=\"focus\"'",
199
- other['data-ui-name'] || DropdownMenu.displayName,
200
- );
201
- if (triggerType === 'input') {
202
- props.interaction = 'focus';
203
- }
204
-
205
169
  return (
206
170
  <Root render={Dropdown} {...props}>
207
171
  <Children />
package/src/index.d.ts CHANGED
@@ -24,17 +24,6 @@ export interface IDropdownMenuProps extends IDropdownProps {
24
24
  * highlightedIndex - Index of the selected item
25
25
  */
26
26
  onHighlightedIndexChange?: (highlightedIndex: number) => void;
27
- /** @deprecated v2.0.0 */
28
- optionCount?: number;
29
- /** Trigger type selection
30
- * @deprecated v2.0.0 */
31
- triggerType?: 'button' | 'input';
32
- /** Handler in option selection
33
- * @deprecated v2.0.0 */
34
- onSelect?: (item: any) => void;
35
- /** Multiple choice of options
36
- * @deprecated v2.0.0 {@link ISelectProps.multiselect} */
37
- multiselect?: boolean;
38
27
  }
39
28
 
40
29
  export interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {
package/src/index.js CHANGED
@@ -1,2 +1 @@
1
1
  export { default } from './DropdownMenu';
2
- export * from './DropdownMenu';
@@ -21,7 +21,7 @@ SDropdownMenuItem {
21
21
  line-height: normal;
22
22
 
23
23
  &:hover {
24
- background-color: color-mod(black a(10%));
24
+ background-color: var(--gray-50);
25
25
  }
26
26
 
27
27
  &:focus {
@@ -31,14 +31,14 @@ SDropdownMenuItem {
31
31
 
32
32
  SDropdownMenuItem[highlighted] {
33
33
  z-index: 1;
34
- box-shadow: var(--keyborad-focus) inset;
34
+ box-shadow: var(--keyboard-focus) inset;
35
35
  }
36
36
 
37
37
  SDropdownMenuItem[selected] {
38
- background-color: color-mod(var(--light-blue) a(20%));
38
+ background-color: color-mod(var(--blue-100) a(70%));
39
39
 
40
40
  &:hover {
41
- background-color: color-mod(var(--light-blue) a(20%));
41
+ background-color: var(--blue-100);
42
42
  }
43
43
  }
44
44
 
@@ -48,30 +48,20 @@ SDropdownMenuItem[disabled] {
48
48
  pointer-events: none;
49
49
  }
50
50
 
51
- SDropdownMenuItem[size='xl'] {
51
+ SDropdownMenuItem[size='l'] {
52
52
  font-size: var(--fs-300);
53
53
  line-height: var(--lh-300);
54
-
55
54
  padding: 8px 12px;
56
- min-height: 42px;
55
+ min-height: 40px;
57
56
  }
58
57
 
59
- SDropdownMenuItem[size='l'] {
58
+ SDropdownMenuItem[size='m'] {
60
59
  font-size: var(--fs-200);
61
60
  line-height: var(--lh-200);
62
-
63
61
  padding: 6px 8px;
64
62
  min-height: 32px;
65
63
  }
66
64
 
67
- SDropdownMenuItem[size='m'] {
68
- font-size: var(--fs-100);
69
- line-height: var(--lh-100);
70
-
71
- padding: 4px 8px;
72
- min-height: 26px;
73
- }
74
-
75
65
  SDropdownMenuItem[notInteractive] {
76
66
  cursor: default;
77
67
 
@@ -81,7 +71,7 @@ SDropdownMenuItem[notInteractive] {
81
71
  }
82
72
 
83
73
  SDropdownMenuItem[variant='hint'] {
84
- color: var(--gray60);
74
+ color: var(--gray-500);
85
75
  cursor: default;
86
76
 
87
77
  &:hover {
@@ -114,6 +104,6 @@ SDropdownMenuItemAddon {
114
104
 
115
105
  SPopper {
116
106
  &:focus {
117
- box-shadow: var(--keyborad-focus);
107
+ box-shadow: var(--keyboard-focus);
118
108
  }
119
109
  }