@semcore/dropdown-menu 3.5.2 → 3.6.1

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.
Files changed (35) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/cjs/DropdownMenu.js +32 -25
  3. package/lib/cjs/DropdownMenu.js.map +1 -1
  4. package/lib/cjs/index.d.js.map +1 -1
  5. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +46 -0
  6. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
  7. package/lib/cjs/translations/de.json +3 -0
  8. package/lib/cjs/translations/en.json +3 -0
  9. package/lib/cjs/translations/es.json +3 -0
  10. package/lib/cjs/translations/fr.json +3 -0
  11. package/lib/cjs/translations/it.json +3 -0
  12. package/lib/cjs/translations/ja.json +3 -0
  13. package/lib/cjs/translations/ko.json +3 -0
  14. package/lib/cjs/translations/pt.json +3 -0
  15. package/lib/cjs/translations/tr.json +3 -0
  16. package/lib/cjs/translations/vi.json +3 -0
  17. package/lib/cjs/translations/zh.json +3 -0
  18. package/lib/es6/DropdownMenu.js +30 -25
  19. package/lib/es6/DropdownMenu.js.map +1 -1
  20. package/lib/es6/index.d.js.map +1 -1
  21. package/lib/es6/translations/__intergalactic-dynamic-locales.js +25 -0
  22. package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -0
  23. package/lib/es6/translations/de.json +3 -0
  24. package/lib/es6/translations/en.json +3 -0
  25. package/lib/es6/translations/es.json +3 -0
  26. package/lib/es6/translations/fr.json +3 -0
  27. package/lib/es6/translations/it.json +3 -0
  28. package/lib/es6/translations/ja.json +3 -0
  29. package/lib/es6/translations/ko.json +3 -0
  30. package/lib/es6/translations/pt.json +3 -0
  31. package/lib/es6/translations/tr.json +3 -0
  32. package/lib/es6/translations/vi.json +3 -0
  33. package/lib/es6/translations/zh.json +3 -0
  34. package/lib/types/index.d.ts +1 -0
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [3.6.1] - 2022-12-19
6
+
7
+ ### Changed
8
+
9
+ - Version patch update due to children dependencies update (`@semcore/dropdown` [3.4.0 ~> 3.4.1], `@semcore/utils` [3.44.0 ~> 3.44.1]).
10
+
11
+ ## [3.6.0] - 2022-12-14
12
+
13
+ ### Added
14
+
15
+ - Added internationalization of aria attributes.
16
+
5
17
  ## [3.5.2] - 2022-12-13
6
18
 
7
19
  ### Fixed
@@ -43,6 +43,10 @@ var _scrollArea = _interopRequireDefault(require("@semcore/scroll-area"));
43
43
 
44
44
  var _uniqueID = _interopRequireDefault(require("@semcore/utils/lib/uniqueID"));
45
45
 
46
+ var _i18nEnhance = _interopRequireDefault(require("@semcore/utils/lib/enhances/i18nEnhance"));
47
+
48
+ var _intergalacticDynamicLocales = require("./translations/__intergalactic-dynamic-locales");
49
+
46
50
  var _excluded = ["className"],
47
51
  _excluded2 = ["className"];
48
52
 
@@ -63,23 +67,23 @@ var style = (
63
67
  /*__reshadow_css_start__*/
64
68
  _core.sstyled.insert(
65
69
  /*__inner_css_start__*/
66
- ".___SDropdownMenuList_129k0_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x,4px) 0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_129k0_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_129k0_gg_:hover{background-color:var(--intergalactic-bg-primary-neutral-hover,#f4f5f9)}.___SDropdownMenuItem_129k0_gg_:focus{outline:none}.___SDropdownMenuItem_129k0_gg_.__highlighted_129k0_gg_{z-index:1;box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3)) inset}.___SDropdownMenuItem_129k0_gg_.__selected_129k0_gg_{background-color:var(--intergalactic-dropdown-menu-item-selected,rgba(196,229,254,.7))}.___SDropdownMenuItem_129k0_gg_.__selected_129k0_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-selected-hover,#c4e5fe)}.___SDropdownMenuItem_129k0_gg_.__disabled_129k0_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SDropdownMenuItem_129k0_gg_._size_l_129k0_gg_{font-size:var(--intergalactic-fs-300,16px);line-height:var(--intergalactic-lh-300,150%);padding:var(--intergalactic-spacing-2x,8px) var(--intergalactic-spacing-3x,12px);min-height:40px}.___SDropdownMenuItem_129k0_gg_._size_m_129k0_gg_{font-size:var(--intergalactic-fs-200,14px);line-height:var(--intergalactic-lh-200,142%);padding:calc(var(--intergalactic-spacing-1x, 4px) + var(--intergalactic-spacing-05x, 2px)) var(--intergalactic-spacing-2x,8px);min-height:32px}.___SDropdownMenuItem_129k0_gg_.__notInteractive_129k0_gg_{cursor:default}.___SDropdownMenuItem_129k0_gg_.__notInteractive_129k0_gg_:hover{background:none}.___SDropdownMenuItem_129k0_gg_._variant_hint_129k0_gg_{color:var(--intergalactic-text-secondary,#6c6e79);cursor:default}.___SDropdownMenuItem_129k0_gg_._variant_hint_129k0_gg_:hover{background:none}.___SDropdownMenuItem_129k0_gg_._variant_title_129k0_gg_{font-weight:var(--intergalactic-bold,700);cursor:default}.___SDropdownMenuItem_129k0_gg_._variant_title_129k0_gg_:hover{background:none}.___SDropdownMenuItemAddon_129k0_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-2x,8px);margin-right:var(--intergalactic-spacing-2x,8px)}.___SDropdownMenuItemAddon_129k0_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_129k0_gg_:last-child{margin-right:0}.___SPopper_129k0_gg_:focus{box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3))}"
70
+ ".___SDropdownMenuList_1qsbs_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x,4px) 0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_1qsbs_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_1qsbs_gg_:hover{background-color:var(--intergalactic-bg-primary-neutral-hover,#f4f5f9)}.___SDropdownMenuItem_1qsbs_gg_:focus{outline:none}.___SDropdownMenuItem_1qsbs_gg_.__highlighted_1qsbs_gg_{z-index:1;box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3)) inset}.___SDropdownMenuItem_1qsbs_gg_.__selected_1qsbs_gg_{background-color:var(--intergalactic-dropdown-menu-item-selected,rgba(196,229,254,.7))}.___SDropdownMenuItem_1qsbs_gg_.__selected_1qsbs_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-selected-hover,#c4e5fe)}.___SDropdownMenuItem_1qsbs_gg_.__disabled_1qsbs_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SDropdownMenuItem_1qsbs_gg_._size_l_1qsbs_gg_{font-size:var(--intergalactic-fs-300,16px);line-height:var(--intergalactic-lh-300,150%);padding:var(--intergalactic-spacing-2x,8px) var(--intergalactic-spacing-3x,12px);min-height:40px}.___SDropdownMenuItem_1qsbs_gg_._size_m_1qsbs_gg_{font-size:var(--intergalactic-fs-200,14px);line-height:var(--intergalactic-lh-200,142%);padding:calc(var(--intergalactic-spacing-1x, 4px) + var(--intergalactic-spacing-05x, 2px)) var(--intergalactic-spacing-2x,8px);min-height:32px}.___SDropdownMenuItem_1qsbs_gg_.__notInteractive_1qsbs_gg_{cursor:default}.___SDropdownMenuItem_1qsbs_gg_.__notInteractive_1qsbs_gg_:hover{background:none}.___SDropdownMenuItem_1qsbs_gg_._variant_hint_1qsbs_gg_{color:var(--intergalactic-text-secondary,#6c6e79);cursor:default}.___SDropdownMenuItem_1qsbs_gg_._variant_hint_1qsbs_gg_:hover{background:none}.___SDropdownMenuItem_1qsbs_gg_._variant_title_1qsbs_gg_{font-weight:var(--intergalactic-bold,700);cursor:default}.___SDropdownMenuItem_1qsbs_gg_._variant_title_1qsbs_gg_:hover{background:none}.___SDropdownMenuItemAddon_1qsbs_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-2x,8px);margin-right:var(--intergalactic-spacing-2x,8px)}.___SDropdownMenuItemAddon_1qsbs_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1qsbs_gg_:last-child{margin-right:0}.___SPopper_1qsbs_gg_:focus{box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3))}"
67
71
  /*__inner_css_end__*/
68
- , "129k0_gg_")
72
+ , "1qsbs_gg_")
69
73
  /*__reshadow_css_end__*/
70
74
  , {
71
- "__SDropdownMenuList": "___SDropdownMenuList_129k0_gg_",
72
- "__SDropdownMenuItem": "___SDropdownMenuItem_129k0_gg_",
73
- "_highlighted": "__highlighted_129k0_gg_",
74
- "_selected": "__selected_129k0_gg_",
75
- "_disabled": "__disabled_129k0_gg_",
76
- "_size_l": "_size_l_129k0_gg_",
77
- "_size_m": "_size_m_129k0_gg_",
78
- "_notInteractive": "__notInteractive_129k0_gg_",
79
- "_variant_hint": "_variant_hint_129k0_gg_",
80
- "_variant_title": "_variant_title_129k0_gg_",
81
- "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_129k0_gg_",
82
- "__SPopper": "___SPopper_129k0_gg_"
75
+ "__SDropdownMenuList": "___SDropdownMenuList_1qsbs_gg_",
76
+ "__SDropdownMenuItem": "___SDropdownMenuItem_1qsbs_gg_",
77
+ "_highlighted": "__highlighted_1qsbs_gg_",
78
+ "_selected": "__selected_1qsbs_gg_",
79
+ "_disabled": "__disabled_1qsbs_gg_",
80
+ "_size_l": "_size_l_1qsbs_gg_",
81
+ "_size_m": "_size_m_1qsbs_gg_",
82
+ "_notInteractive": "__notInteractive_1qsbs_gg_",
83
+ "_variant_hint": "_variant_hint_1qsbs_gg_",
84
+ "_variant_title": "_variant_title_1qsbs_gg_",
85
+ "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1qsbs_gg_",
86
+ "__SPopper": "___SPopper_1qsbs_gg_"
83
87
  });
84
88
 
85
89
  /*__reshadow-styles__:"./style/scroll-area.shadow.css"*/
@@ -87,16 +91,16 @@ var scrollStyles = (
87
91
  /*__reshadow_css_start__*/
88
92
  _core.sstyled.insert(
89
93
  /*__inner_css_start__*/
90
- ".___SShadowHorizontal_1d7ib_gg_:after,.___SShadowHorizontal_1d7ib_gg_:before{width:16px;height:100%;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowHorizontal_1d7ib_gg_._position_median_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_median_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_start_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_end_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_:after,.___SShadowVertical_1d7ib_gg_:before{width:100%;height:16px;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowVertical_1d7ib_gg_._position_median_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_median_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_start_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_end_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}"
94
+ ".___SShadowHorizontal_xw0rl_gg_:after,.___SShadowHorizontal_xw0rl_gg_:before{width:16px;height:100%;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowHorizontal_xw0rl_gg_._position_median_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_median_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_start_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_end_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_:after,.___SShadowVertical_xw0rl_gg_:before{width:100%;height:16px;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowVertical_xw0rl_gg_._position_median_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_median_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_start_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_end_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}"
91
95
  /*__inner_css_end__*/
92
- , "1d7ib_gg_")
96
+ , "xw0rl_gg_")
93
97
  /*__reshadow_css_end__*/
94
98
  , {
95
- "__SShadowHorizontal": "___SShadowHorizontal_1d7ib_gg_",
96
- "_position_median": "_position_median_1d7ib_gg_",
97
- "_position_start": "_position_start_1d7ib_gg_",
98
- "_position_end": "_position_end_1d7ib_gg_",
99
- "__SShadowVertical": "___SShadowVertical_1d7ib_gg_"
99
+ "__SShadowHorizontal": "___SShadowHorizontal_xw0rl_gg_",
100
+ "_position_median": "_position_median_xw0rl_gg_",
101
+ "_position_start": "_position_start_xw0rl_gg_",
102
+ "_position_end": "_position_end_xw0rl_gg_",
103
+ "__SShadowVertical": "___SShadowVertical_xw0rl_gg_"
100
104
  });
101
105
  var KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];
102
106
  var INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];
@@ -175,13 +179,14 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
175
179
  size = _this$asProps.size,
176
180
  uid = _this$asProps.uid,
177
181
  disablePortal = _this$asProps.disablePortal,
178
- visible = _this$asProps.visible;
182
+ visible = _this$asProps.visible,
183
+ getI18nText = _this$asProps.getI18nText;
179
184
  return {
180
185
  size: size,
181
186
  id: "igc-".concat(uid, "-trigger"),
182
187
  'aria-controls': visible ? "igc-".concat(uid, "-popper") : undefined,
183
188
  'aria-flowto': visible && !disablePortal ? "igc-".concat(uid, "-popper") : undefined,
184
- 'aria-label': visible && !disablePortal ? "Press Tab to go to popover" : undefined,
189
+ 'aria-label': visible && !disablePortal ? getI18nText('triggerHint') : undefined,
185
190
  onKeyDown: this.handlerKeyDown
186
191
  };
187
192
  }
@@ -305,11 +310,13 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
305
310
 
306
311
  (0, _defineProperty2["default"])(DropdownMenuRoot, "displayName", 'DropdownMenu');
307
312
  (0, _defineProperty2["default"])(DropdownMenuRoot, "style", style);
308
- (0, _defineProperty2["default"])(DropdownMenuRoot, "enhance", [(0, _uniqueID["default"])()]);
313
+ (0, _defineProperty2["default"])(DropdownMenuRoot, "enhance", [(0, _uniqueID["default"])(), (0, _i18nEnhance["default"])(_intergalacticDynamicLocales.localizedMessages)]);
309
314
  (0, _defineProperty2["default"])(DropdownMenuRoot, "defaultProps", {
310
315
  size: 'm',
311
316
  defaultVisible: false,
312
- defaultHighlightedIndex: null
317
+ defaultHighlightedIndex: null,
318
+ i18n: _intergalacticDynamicLocales.localizedMessages,
319
+ locale: 'en'
313
320
  });
314
321
 
315
322
  function List(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","names":["KEYS","INTERACTION_TAGS","DropdownMenuRoot","React","createRef","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","highlightedItemRef","current","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","uid","disablePortal","id","undefined","onKeyDown","handlerKeyDown","index","tabIndex","props","highlighted","extraProps","itemProps","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","setTimeout","focus","Children","Dropdown","Component","style","uniqueIDEnhancement","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","ScrollAreaComponent","sstyled","styles","scrollStyles","Menu","DropdownMenu","Item","useFlex","forwardRef","SDropdownMenuItem","className","other","label","cn","Addon","useBox","SDropdownMenuItemAddon","Hint","Flex","Title","Trigger","createComponent","Popper","ItemTitle","ItemHint","parent"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/dropdown-menu.shadow.css';\nimport scrollStyles from './style/scroll-area.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 static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n itemProps = [];\n\n highlightedItemRef = React.createRef();\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.highlightedItemRef.current) this.highlightedItemRef.current.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size, uid, disablePortal, visible } = this.asProps;\n\n return {\n size,\n id: `igc-${uid}-trigger`,\n 'aria-controls': visible ? `igc-${uid}-popper` : undefined,\n 'aria-flowto': visible && !disablePortal ? `igc-${uid}-popper` : undefined,\n 'aria-label': visible && !disablePortal ? `Press Tab to go to popover` : undefined,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n index: this.asProps.highlightedIndex,\n };\n }\n\n getPopperProps() {\n const { uid, disablePortal } = this.asProps;\n\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n id: `igc-${uid}-popper`,\n 'aria-flowto': !disablePortal ? `igc-${uid}-trigger` : undefined,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n this.itemProps[index] = 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.highlightedItemRef.current = 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.itemProps.length - 1;\n const selectedIndex = this.itemProps.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.itemProps[newIndex] && this.itemProps[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n setTimeout(() => {\n this.highlightedItemRef.current?.focus();\n }, 0);\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.itemProps = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n\n return sstyled(props.styles)(\n <SDropdownMenuList\n render={ScrollAreaComponent}\n role=\"menu\"\n aria-activedescendant={props.index}\n shadow={true}\n styles={scrollStyles}\n />,\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 id={props.label}\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)(\n <SDropdownMenuItem render={Flex} variant=\"hint\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItem render={Flex} variant=\"title\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} aria-haspopup=\"true\" />;\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n 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"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","names":["KEYS","INTERACTION_TAGS","DropdownMenuRoot","React","createRef","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","highlightedItemRef","current","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","uid","disablePortal","getI18nText","id","undefined","onKeyDown","handlerKeyDown","index","tabIndex","props","highlighted","extraProps","itemProps","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","setTimeout","focus","Children","Dropdown","Component","style","uniqueIDEnhancement","i18nEnhance","localizedMessages","defaultVisible","defaultHighlightedIndex","i18n","locale","List","SDropdownMenuList","ScrollAreaComponent","sstyled","styles","scrollStyles","Menu","DropdownMenu","Item","useFlex","forwardRef","SDropdownMenuItem","className","other","label","cn","Addon","useBox","SDropdownMenuItemAddon","Hint","Flex","Title","Trigger","createComponent","Popper","ItemTitle","ItemHint","parent"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\nimport style from './style/dropdown-menu.shadow.css';\nimport scrollStyles from './style/scroll-area.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 static enhance = [uniqueIDEnhancement(), i18nEnhance(localizedMessages)];\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n i18n: localizedMessages,\n locale: 'en',\n };\n\n itemProps = [];\n\n highlightedItemRef = React.createRef();\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.highlightedItemRef.current) this.highlightedItemRef.current.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size, uid, disablePortal, visible, getI18nText } = this.asProps;\n\n return {\n size,\n id: `igc-${uid}-trigger`,\n 'aria-controls': visible ? `igc-${uid}-popper` : undefined,\n 'aria-flowto': visible && !disablePortal ? `igc-${uid}-popper` : undefined,\n 'aria-label': visible && !disablePortal ? getI18nText('triggerHint') : undefined,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n index: this.asProps.highlightedIndex,\n };\n }\n\n getPopperProps() {\n const { uid, disablePortal } = this.asProps;\n\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n id: `igc-${uid}-popper`,\n 'aria-flowto': !disablePortal ? `igc-${uid}-trigger` : undefined,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n this.itemProps[index] = 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.highlightedItemRef.current = 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.itemProps.length - 1;\n const selectedIndex = this.itemProps.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.itemProps[newIndex] && this.itemProps[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n setTimeout(() => {\n this.highlightedItemRef.current?.focus();\n }, 0);\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.itemProps = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n\n return sstyled(props.styles)(\n <SDropdownMenuList\n render={ScrollAreaComponent}\n role=\"menu\"\n aria-activedescendant={props.index}\n shadow={true}\n styles={scrollStyles}\n />,\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 id={props.label}\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)(\n <SDropdownMenuItem render={Flex} variant=\"hint\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItem render={Flex} variant=\"title\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} aria-haspopup=\"true\" />;\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n 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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport { IScrollAreaProps } from '@semcore/scroll-area';\n\nexport type DropdownMenuSize = 'm' | 'l';\n\nexport interface IDropdownMenuProps extends IDropdownProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of the element selected by default\n */\n defaultHighlightedIndex?: number;\n /**\n * Index of the selected item\n */\n highlightedIndex?: number;\n /**\n * Callback for highlightedIndex change\n * highlightedIndex - Index of the selected item\n */\n onHighlightedIndexChange?: (highlightedIndex: number) => void;\n}\n\nexport interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}\n\nexport interface IDropdownMenuItemProps extends IFlexProps {\n /**\n * Enables selected state\n */\n selected?: boolean;\n /**\n * Disables the component\n */\n disabled?: boolean;\n /**\n * Adds focus styles around\n */\n highlighted?: boolean;\n /**\n * Makes the element non-interactive\n */\n notInteractive?: boolean;\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemHintProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemTitleProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuContext extends IDropdownContext {\n getListProps: PropGetterFn;\n getItemProps: PropGetterFn;\n getItemHintProps: PropGetterFn;\n getItemTitleProps: PropGetterFn;\n}\n\nexport interface IDropdownMenuHandlers extends IDropdownHandlers {\n highlightedIndex: (index: number) => void;\n}\n\ndeclare const DropdownMenu: (<T>(\n props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n) => ReturnEl) & {\n Trigger: typeof Dropdown.Trigger;\n Popper: typeof Dropdown.Popper;\n List: <T>(\n props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Menu: <T>(\n props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Item: (<T>(\n props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl) & {\n Addon: typeof Box;\n };\n ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;\n ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;\n};\n\nexport default DropdownMenu;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport { IScrollAreaProps } from '@semcore/scroll-area';\n\nexport type DropdownMenuSize = 'm' | 'l';\n\nexport interface IDropdownMenuProps extends IDropdownProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of the element selected by default\n */\n defaultHighlightedIndex?: number;\n /**\n * Index of the selected item\n */\n highlightedIndex?: number;\n /**\n * Callback for highlightedIndex change\n * highlightedIndex - Index of the selected item\n */\n onHighlightedIndexChange?: (highlightedIndex: number) => void;\n locale?: string;\n}\n\nexport interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}\n\nexport interface IDropdownMenuItemProps extends IFlexProps {\n /**\n * Enables selected state\n */\n selected?: boolean;\n /**\n * Disables the component\n */\n disabled?: boolean;\n /**\n * Adds focus styles around\n */\n highlighted?: boolean;\n /**\n * Makes the element non-interactive\n */\n notInteractive?: boolean;\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemHintProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemTitleProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuContext extends IDropdownContext {\n getListProps: PropGetterFn;\n getItemProps: PropGetterFn;\n getItemHintProps: PropGetterFn;\n getItemTitleProps: PropGetterFn;\n}\n\nexport interface IDropdownMenuHandlers extends IDropdownHandlers {\n highlightedIndex: (index: number) => void;\n}\n\ndeclare const DropdownMenu: (<T>(\n props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n) => ReturnEl) & {\n Trigger: typeof Dropdown.Trigger;\n Popper: typeof Dropdown.Popper;\n List: <T>(\n props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Menu: <T>(\n props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Item: (<T>(\n props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl) & {\n Addon: typeof Box;\n };\n ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;\n ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;\n};\n\nexport default DropdownMenu;\n"],"mappings":""}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.localizedMessages = void 0;
9
+
10
+ var _de = _interopRequireDefault(require("./de.json"));
11
+
12
+ var _en = _interopRequireDefault(require("./en.json"));
13
+
14
+ var _es = _interopRequireDefault(require("./es.json"));
15
+
16
+ var _fr = _interopRequireDefault(require("./fr.json"));
17
+
18
+ var _it = _interopRequireDefault(require("./it.json"));
19
+
20
+ var _ja = _interopRequireDefault(require("./ja.json"));
21
+
22
+ var _ko = _interopRequireDefault(require("./ko.json"));
23
+
24
+ var _pt = _interopRequireDefault(require("./pt.json"));
25
+
26
+ var _tr = _interopRequireDefault(require("./tr.json"));
27
+
28
+ var _vi = _interopRequireDefault(require("./vi.json"));
29
+
30
+ var _zh = _interopRequireDefault(require("./zh.json"));
31
+
32
+ var localizedMessages = {
33
+ de: _de["default"],
34
+ en: _en["default"],
35
+ es: _es["default"],
36
+ fr: _fr["default"],
37
+ it: _it["default"],
38
+ ja: _ja["default"],
39
+ ko: _ko["default"],
40
+ pt: _pt["default"],
41
+ tr: _tr["default"],
42
+ vi: _vi["default"],
43
+ zh: _zh["default"]
44
+ };
45
+ exports.localizedMessages = localizedMessages;
46
+ //# sourceMappingURL=__intergalactic-dynamic-locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["localizedMessages","de","en","es","fr","it","ja","ko","pt","tr","vi","zh"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport pt from './pt.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n pt,\n tr,\n vi,\n zh,\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,IAAMA,iBAAiB,GAAG;EAC/BC,EAAE,EAAFA,cAD+B;EAE/BC,EAAE,EAAFA,cAF+B;EAG/BC,EAAE,EAAFA,cAH+B;EAI/BC,EAAE,EAAFA,cAJ+B;EAK/BC,EAAE,EAAFA,cAL+B;EAM/BC,EAAE,EAAFA,cAN+B;EAO/BC,EAAE,EAAFA,cAP+B;EAQ/BC,EAAE,EAAFA,cAR+B;EAS/BC,EAAE,EAAFA,cAT+B;EAU/BC,EAAE,EAAFA,cAV+B;EAW/BC,EAAE,EAAFA;AAX+B,CAA1B"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Drücken Sie Tab, um zum Popover zu gehen"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Press Tab to go to popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Presiona Tab para ir a Popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Appuyez sur la touche Tab pour accéder au popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Premi Tab per andare a Popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Tabキーを押してポップオーバーに移動"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "팝업창으로 이동하려면 Tab 키를 누르세요"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Pressione Tab para acessar o pop-over"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Popover'a gitmek için Tab tuşuna basın"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Nhấn Tab để chuyển đến cửa sổ bật lên"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "按 T​​ab 转到弹出框"
3
+ }
@@ -34,29 +34,31 @@ import Dropdown from '@semcore/dropdown';
34
34
  import { Flex, useBox, useFlex } from '@semcore/flex-box';
35
35
  import ScrollAreaComponent from '@semcore/scroll-area';
36
36
  import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
37
+ import i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';
38
+ import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
37
39
 
38
40
  /*__reshadow-styles__:"./style/dropdown-menu.shadow.css"*/
39
41
  var style = (
40
42
  /*__reshadow_css_start__*/
41
43
  _sstyled.insert(
42
44
  /*__inner_css_start__*/
43
- ".___SDropdownMenuList_129k0_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x,4px) 0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_129k0_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_129k0_gg_:hover{background-color:var(--intergalactic-bg-primary-neutral-hover,#f4f5f9)}.___SDropdownMenuItem_129k0_gg_:focus{outline:none}.___SDropdownMenuItem_129k0_gg_.__highlighted_129k0_gg_{z-index:1;box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3)) inset}.___SDropdownMenuItem_129k0_gg_.__selected_129k0_gg_{background-color:var(--intergalactic-dropdown-menu-item-selected,rgba(196,229,254,.7))}.___SDropdownMenuItem_129k0_gg_.__selected_129k0_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-selected-hover,#c4e5fe)}.___SDropdownMenuItem_129k0_gg_.__disabled_129k0_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SDropdownMenuItem_129k0_gg_._size_l_129k0_gg_{font-size:var(--intergalactic-fs-300,16px);line-height:var(--intergalactic-lh-300,150%);padding:var(--intergalactic-spacing-2x,8px) var(--intergalactic-spacing-3x,12px);min-height:40px}.___SDropdownMenuItem_129k0_gg_._size_m_129k0_gg_{font-size:var(--intergalactic-fs-200,14px);line-height:var(--intergalactic-lh-200,142%);padding:calc(var(--intergalactic-spacing-1x, 4px) + var(--intergalactic-spacing-05x, 2px)) var(--intergalactic-spacing-2x,8px);min-height:32px}.___SDropdownMenuItem_129k0_gg_.__notInteractive_129k0_gg_{cursor:default}.___SDropdownMenuItem_129k0_gg_.__notInteractive_129k0_gg_:hover{background:none}.___SDropdownMenuItem_129k0_gg_._variant_hint_129k0_gg_{color:var(--intergalactic-text-secondary,#6c6e79);cursor:default}.___SDropdownMenuItem_129k0_gg_._variant_hint_129k0_gg_:hover{background:none}.___SDropdownMenuItem_129k0_gg_._variant_title_129k0_gg_{font-weight:var(--intergalactic-bold,700);cursor:default}.___SDropdownMenuItem_129k0_gg_._variant_title_129k0_gg_:hover{background:none}.___SDropdownMenuItemAddon_129k0_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-2x,8px);margin-right:var(--intergalactic-spacing-2x,8px)}.___SDropdownMenuItemAddon_129k0_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_129k0_gg_:last-child{margin-right:0}.___SPopper_129k0_gg_:focus{box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3))}"
45
+ ".___SDropdownMenuList_1qsbs_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x,4px) 0;position:relative;min-height:26px;min-width:32px}.___SDropdownMenuItem_1qsbs_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_1qsbs_gg_:hover{background-color:var(--intergalactic-bg-primary-neutral-hover,#f4f5f9)}.___SDropdownMenuItem_1qsbs_gg_:focus{outline:none}.___SDropdownMenuItem_1qsbs_gg_.__highlighted_1qsbs_gg_{z-index:1;box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3)) inset}.___SDropdownMenuItem_1qsbs_gg_.__selected_1qsbs_gg_{background-color:var(--intergalactic-dropdown-menu-item-selected,rgba(196,229,254,.7))}.___SDropdownMenuItem_1qsbs_gg_.__selected_1qsbs_gg_:hover{background-color:var(--intergalactic-dropdown-menu-item-selected-hover,#c4e5fe)}.___SDropdownMenuItem_1qsbs_gg_.__disabled_1qsbs_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SDropdownMenuItem_1qsbs_gg_._size_l_1qsbs_gg_{font-size:var(--intergalactic-fs-300,16px);line-height:var(--intergalactic-lh-300,150%);padding:var(--intergalactic-spacing-2x,8px) var(--intergalactic-spacing-3x,12px);min-height:40px}.___SDropdownMenuItem_1qsbs_gg_._size_m_1qsbs_gg_{font-size:var(--intergalactic-fs-200,14px);line-height:var(--intergalactic-lh-200,142%);padding:calc(var(--intergalactic-spacing-1x, 4px) + var(--intergalactic-spacing-05x, 2px)) var(--intergalactic-spacing-2x,8px);min-height:32px}.___SDropdownMenuItem_1qsbs_gg_.__notInteractive_1qsbs_gg_{cursor:default}.___SDropdownMenuItem_1qsbs_gg_.__notInteractive_1qsbs_gg_:hover{background:none}.___SDropdownMenuItem_1qsbs_gg_._variant_hint_1qsbs_gg_{color:var(--intergalactic-text-secondary,#6c6e79);cursor:default}.___SDropdownMenuItem_1qsbs_gg_._variant_hint_1qsbs_gg_:hover{background:none}.___SDropdownMenuItem_1qsbs_gg_._variant_title_1qsbs_gg_{font-weight:var(--intergalactic-bold,700);cursor:default}.___SDropdownMenuItem_1qsbs_gg_._variant_title_1qsbs_gg_:hover{background:none}.___SDropdownMenuItemAddon_1qsbs_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-2x,8px);margin-right:var(--intergalactic-spacing-2x,8px)}.___SDropdownMenuItemAddon_1qsbs_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1qsbs_gg_:last-child{margin-right:0}.___SPopper_1qsbs_gg_:focus{box-shadow:var(--intergalactic-keyboard-focus,0 0 0 3px rgba(0,143,248,.3))}"
44
46
  /*__inner_css_end__*/
45
- , "129k0_gg_")
47
+ , "1qsbs_gg_")
46
48
  /*__reshadow_css_end__*/
47
49
  , {
48
- "__SDropdownMenuList": "___SDropdownMenuList_129k0_gg_",
49
- "__SDropdownMenuItem": "___SDropdownMenuItem_129k0_gg_",
50
- "_highlighted": "__highlighted_129k0_gg_",
51
- "_selected": "__selected_129k0_gg_",
52
- "_disabled": "__disabled_129k0_gg_",
53
- "_size_l": "_size_l_129k0_gg_",
54
- "_size_m": "_size_m_129k0_gg_",
55
- "_notInteractive": "__notInteractive_129k0_gg_",
56
- "_variant_hint": "_variant_hint_129k0_gg_",
57
- "_variant_title": "_variant_title_129k0_gg_",
58
- "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_129k0_gg_",
59
- "__SPopper": "___SPopper_129k0_gg_"
50
+ "__SDropdownMenuList": "___SDropdownMenuList_1qsbs_gg_",
51
+ "__SDropdownMenuItem": "___SDropdownMenuItem_1qsbs_gg_",
52
+ "_highlighted": "__highlighted_1qsbs_gg_",
53
+ "_selected": "__selected_1qsbs_gg_",
54
+ "_disabled": "__disabled_1qsbs_gg_",
55
+ "_size_l": "_size_l_1qsbs_gg_",
56
+ "_size_m": "_size_m_1qsbs_gg_",
57
+ "_notInteractive": "__notInteractive_1qsbs_gg_",
58
+ "_variant_hint": "_variant_hint_1qsbs_gg_",
59
+ "_variant_title": "_variant_title_1qsbs_gg_",
60
+ "__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1qsbs_gg_",
61
+ "__SPopper": "___SPopper_1qsbs_gg_"
60
62
  });
61
63
 
62
64
  /*__reshadow-styles__:"./style/scroll-area.shadow.css"*/
@@ -64,16 +66,16 @@ var scrollStyles = (
64
66
  /*__reshadow_css_start__*/
65
67
  _sstyled2.insert(
66
68
  /*__inner_css_start__*/
67
- ".___SShadowHorizontal_1d7ib_gg_:after,.___SShadowHorizontal_1d7ib_gg_:before{width:16px;height:100%;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowHorizontal_1d7ib_gg_._position_median_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_median_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_start_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_1d7ib_gg_._position_end_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_:after,.___SShadowVertical_1d7ib_gg_:before{width:100%;height:16px;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowVertical_1d7ib_gg_._position_median_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_median_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_start_1d7ib_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_1d7ib_gg_._position_end_1d7ib_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}"
69
+ ".___SShadowHorizontal_xw0rl_gg_:after,.___SShadowHorizontal_xw0rl_gg_:before{width:16px;height:100%;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowHorizontal_xw0rl_gg_._position_median_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_median_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_start_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-left,linear-gradient(90deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowHorizontal_xw0rl_gg_._position_end_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-right,linear-gradient(270deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_:after,.___SShadowVertical_xw0rl_gg_:before{width:100%;height:16px;border-radius:var(--intergalactic-rounded-medium,6px)}.___SShadowVertical_xw0rl_gg_._position_median_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_median_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_start_xw0rl_gg_:before{background:var(--intergalactic-scroll-area-dropdown-menu-top,linear-gradient(180deg,#fff 34.38%,hsla(0,0%,100%,0)))}.___SShadowVertical_xw0rl_gg_._position_end_xw0rl_gg_:after{background:var(--intergalactic-scroll-area-dropdown-menu-bottom,linear-gradient(0deg,#fff 34.38%,hsla(0,0%,100%,0)))}"
68
70
  /*__inner_css_end__*/
69
- , "1d7ib_gg_")
71
+ , "xw0rl_gg_")
70
72
  /*__reshadow_css_end__*/
71
73
  , {
72
- "__SShadowHorizontal": "___SShadowHorizontal_1d7ib_gg_",
73
- "_position_median": "_position_median_1d7ib_gg_",
74
- "_position_start": "_position_start_1d7ib_gg_",
75
- "_position_end": "_position_end_1d7ib_gg_",
76
- "__SShadowVertical": "___SShadowVertical_1d7ib_gg_"
74
+ "__SShadowHorizontal": "___SShadowHorizontal_xw0rl_gg_",
75
+ "_position_median": "_position_median_xw0rl_gg_",
76
+ "_position_start": "_position_start_xw0rl_gg_",
77
+ "_position_end": "_position_end_xw0rl_gg_",
78
+ "__SShadowVertical": "___SShadowVertical_xw0rl_gg_"
77
79
  });
78
80
  var KEYS = ['ArrowDown', 'ArrowUp', 'Enter', ' '];
79
81
  var INTERACTION_TAGS = ['INPUT', 'TEXTAREA'];
@@ -158,13 +160,14 @@ var DropdownMenuRoot = /*#__PURE__*/function (_Component) {
158
160
  size = _this$asProps.size,
159
161
  uid = _this$asProps.uid,
160
162
  disablePortal = _this$asProps.disablePortal,
161
- visible = _this$asProps.visible;
163
+ visible = _this$asProps.visible,
164
+ getI18nText = _this$asProps.getI18nText;
162
165
  return {
163
166
  size: size,
164
167
  id: "igc-".concat(uid, "-trigger"),
165
168
  'aria-controls': visible ? "igc-".concat(uid, "-popper") : undefined,
166
169
  'aria-flowto': visible && !disablePortal ? "igc-".concat(uid, "-popper") : undefined,
167
- 'aria-label': visible && !disablePortal ? "Press Tab to go to popover" : undefined,
170
+ 'aria-label': visible && !disablePortal ? getI18nText('triggerHint') : undefined,
168
171
  onKeyDown: this.handlerKeyDown
169
172
  };
170
173
  }
@@ -291,12 +294,14 @@ _defineProperty(DropdownMenuRoot, "displayName", 'DropdownMenu');
291
294
 
292
295
  _defineProperty(DropdownMenuRoot, "style", style);
293
296
 
294
- _defineProperty(DropdownMenuRoot, "enhance", [uniqueIDEnhancement()]);
297
+ _defineProperty(DropdownMenuRoot, "enhance", [uniqueIDEnhancement(), i18nEnhance(localizedMessages)]);
295
298
 
296
299
  _defineProperty(DropdownMenuRoot, "defaultProps", {
297
300
  size: 'm',
298
301
  defaultVisible: false,
299
- defaultHighlightedIndex: null
302
+ defaultHighlightedIndex: null,
303
+ i18n: localizedMessages,
304
+ locale: 'en'
300
305
  });
301
306
 
302
307
  function List(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","names":["React","cn","createComponent","Component","sstyled","Root","Dropdown","Flex","useBox","useFlex","ScrollAreaComponent","uniqueIDEnhancement","KEYS","INTERACTION_TAGS","DropdownMenuRoot","createRef","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","highlightedItemRef","current","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","uid","disablePortal","id","undefined","onKeyDown","handlerKeyDown","index","tabIndex","props","highlighted","extraProps","itemProps","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","setTimeout","focus","Children","style","defaultVisible","defaultHighlightedIndex","List","SDropdownMenuList","styles","scrollStyles","Menu","DropdownMenu","Item","forwardRef","SDropdownMenuItem","className","other","label","Addon","SDropdownMenuItemAddon","Hint","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/dropdown-menu.shadow.css';\nimport scrollStyles from './style/scroll-area.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 static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n };\n\n itemProps = [];\n\n highlightedItemRef = React.createRef();\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.highlightedItemRef.current) this.highlightedItemRef.current.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size, uid, disablePortal, visible } = this.asProps;\n\n return {\n size,\n id: `igc-${uid}-trigger`,\n 'aria-controls': visible ? `igc-${uid}-popper` : undefined,\n 'aria-flowto': visible && !disablePortal ? `igc-${uid}-popper` : undefined,\n 'aria-label': visible && !disablePortal ? `Press Tab to go to popover` : undefined,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n index: this.asProps.highlightedIndex,\n };\n }\n\n getPopperProps() {\n const { uid, disablePortal } = this.asProps;\n\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n id: `igc-${uid}-popper`,\n 'aria-flowto': !disablePortal ? `igc-${uid}-trigger` : undefined,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n this.itemProps[index] = 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.highlightedItemRef.current = 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.itemProps.length - 1;\n const selectedIndex = this.itemProps.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.itemProps[newIndex] && this.itemProps[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n setTimeout(() => {\n this.highlightedItemRef.current?.focus();\n }, 0);\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.itemProps = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n\n return sstyled(props.styles)(\n <SDropdownMenuList\n render={ScrollAreaComponent}\n role=\"menu\"\n aria-activedescendant={props.index}\n shadow={true}\n styles={scrollStyles}\n />,\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 id={props.label}\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)(\n <SDropdownMenuItem render={Flex} variant=\"hint\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItem render={Flex} variant=\"title\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} aria-haspopup=\"true\" />;\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n 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"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","names":["React","cn","createComponent","Component","sstyled","Root","Dropdown","Flex","useBox","useFlex","ScrollAreaComponent","uniqueIDEnhancement","i18nEnhance","localizedMessages","KEYS","INTERACTION_TAGS","DropdownMenuRoot","createRef","e","amount","shiftKey","key","includes","target","tagName","preventDefault","handlers","visible","moveHighlightedIndex","highlightedItemRef","current","click","node","scrollIntoView","asProps","highlightedIndex","prevHighlightedIndex","block","inline","size","uid","disablePortal","getI18nText","id","undefined","onKeyDown","handlerKeyDown","index","tabIndex","props","highlighted","extraProps","itemProps","ref","scrollToNode","itemsLastIndex","length","selectedIndex","findIndex","item","selected","newIndex","disabled","setTimeout","focus","Children","style","defaultVisible","defaultHighlightedIndex","i18n","locale","List","SDropdownMenuList","styles","scrollStyles","Menu","DropdownMenu","Item","forwardRef","SDropdownMenuItem","className","other","label","Addon","SDropdownMenuItemAddon","Hint","Title","Trigger","Popper","ItemTitle","ItemHint","parent"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Dropdown from '@semcore/dropdown';\nimport { Flex, useBox, useFlex } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\nimport style from './style/dropdown-menu.shadow.css';\nimport scrollStyles from './style/scroll-area.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 static enhance = [uniqueIDEnhancement(), i18nEnhance(localizedMessages)];\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: null,\n i18n: localizedMessages,\n locale: 'en',\n };\n\n itemProps = [];\n\n highlightedItemRef = React.createRef();\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.highlightedItemRef.current) this.highlightedItemRef.current.click();\n break;\n }\n };\n\n getTriggerProps() {\n const { size, uid, disablePortal, visible, getI18nText } = this.asProps;\n\n return {\n size,\n id: `igc-${uid}-trigger`,\n 'aria-controls': visible ? `igc-${uid}-popper` : undefined,\n 'aria-flowto': visible && !disablePortal ? `igc-${uid}-popper` : undefined,\n 'aria-label': visible && !disablePortal ? getI18nText('triggerHint') : undefined,\n onKeyDown: this.handlerKeyDown,\n };\n }\n\n getListProps() {\n const { size } = this.asProps;\n return {\n size,\n index: this.asProps.highlightedIndex,\n };\n }\n\n getPopperProps() {\n const { uid, disablePortal } = this.asProps;\n\n return {\n tabIndex: 0,\n onKeyDown: this.handlerKeyDown,\n id: `igc-${uid}-popper`,\n 'aria-flowto': !disablePortal ? `igc-${uid}-trigger` : undefined,\n };\n }\n\n getItemProps(props, index) {\n const { size, highlightedIndex } = this.asProps;\n const highlighted = index === highlightedIndex;\n const extraProps = {};\n this.itemProps[index] = 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.highlightedItemRef.current = 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.itemProps.length - 1;\n const selectedIndex = this.itemProps.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.itemProps[newIndex] && this.itemProps[newIndex].disabled) {\n this.moveHighlightedIndex(amount < 0 ? amount - 1 : amount + 1, e);\n } else {\n this.handlers.highlightedIndex(newIndex, e);\n setTimeout(() => {\n this.highlightedItemRef.current?.focus();\n }, 0);\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.itemProps = [];\n\n return (\n <Root render={Dropdown} {...props}>\n <Children />\n </Root>\n );\n }\n}\n\nfunction List(props) {\n const SDropdownMenuList = Root;\n\n return sstyled(props.styles)(\n <SDropdownMenuList\n render={ScrollAreaComponent}\n role=\"menu\"\n aria-activedescendant={props.index}\n shadow={true}\n styles={scrollStyles}\n />,\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 id={props.label}\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)(\n <SDropdownMenuItem render={Flex} variant=\"hint\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Title(props) {\n const SDropdownMenuItem = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItem render={Flex} variant=\"title\" role=\"menuitem\" tabIndex={0} />,\n );\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} aria-haspopup=\"true\" />;\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n 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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport { IScrollAreaProps } from '@semcore/scroll-area';\n\nexport type DropdownMenuSize = 'm' | 'l';\n\nexport interface IDropdownMenuProps extends IDropdownProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of the element selected by default\n */\n defaultHighlightedIndex?: number;\n /**\n * Index of the selected item\n */\n highlightedIndex?: number;\n /**\n * Callback for highlightedIndex change\n * highlightedIndex - Index of the selected item\n */\n onHighlightedIndexChange?: (highlightedIndex: number) => void;\n}\n\nexport interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}\n\nexport interface IDropdownMenuItemProps extends IFlexProps {\n /**\n * Enables selected state\n */\n selected?: boolean;\n /**\n * Disables the component\n */\n disabled?: boolean;\n /**\n * Adds focus styles around\n */\n highlighted?: boolean;\n /**\n * Makes the element non-interactive\n */\n notInteractive?: boolean;\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemHintProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemTitleProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuContext extends IDropdownContext {\n getListProps: PropGetterFn;\n getItemProps: PropGetterFn;\n getItemHintProps: PropGetterFn;\n getItemTitleProps: PropGetterFn;\n}\n\nexport interface IDropdownMenuHandlers extends IDropdownHandlers {\n highlightedIndex: (index: number) => void;\n}\n\ndeclare const DropdownMenu: (<T>(\n props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n) => ReturnEl) & {\n Trigger: typeof Dropdown.Trigger;\n Popper: typeof Dropdown.Popper;\n List: <T>(\n props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Menu: <T>(\n props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Item: (<T>(\n props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl) & {\n Addon: typeof Box;\n };\n ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;\n ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;\n};\n\nexport default DropdownMenu;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport Dropdown, { IDropdownContext, IDropdownProps, IDropdownHandlers } from '@semcore/dropdown';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport { IScrollAreaProps } from '@semcore/scroll-area';\n\nexport type DropdownMenuSize = 'm' | 'l';\n\nexport interface IDropdownMenuProps extends IDropdownProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of the element selected by default\n */\n defaultHighlightedIndex?: number;\n /**\n * Index of the selected item\n */\n highlightedIndex?: number;\n /**\n * Callback for highlightedIndex change\n * highlightedIndex - Index of the selected item\n */\n onHighlightedIndexChange?: (highlightedIndex: number) => void;\n locale?: string;\n}\n\nexport interface IDropdownMenuListProps extends IBoxProps, IScrollAreaProps {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuMenuProps extends IDropdownMenuListProps {}\n\nexport interface IDropdownMenuItemProps extends IFlexProps {\n /**\n * Enables selected state\n */\n selected?: boolean;\n /**\n * Disables the component\n */\n disabled?: boolean;\n /**\n * Adds focus styles around\n */\n highlighted?: boolean;\n /**\n * Makes the element non-interactive\n */\n notInteractive?: boolean;\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemHintProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuItemTitleProps extends IFlexProps {\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n}\n\nexport interface IDropdownMenuContext extends IDropdownContext {\n getListProps: PropGetterFn;\n getItemProps: PropGetterFn;\n getItemHintProps: PropGetterFn;\n getItemTitleProps: PropGetterFn;\n}\n\nexport interface IDropdownMenuHandlers extends IDropdownHandlers {\n highlightedIndex: (index: number) => void;\n}\n\ndeclare const DropdownMenu: (<T>(\n props: CProps<IDropdownMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n) => ReturnEl) & {\n Trigger: typeof Dropdown.Trigger;\n Popper: typeof Dropdown.Popper;\n List: <T>(\n props: CProps<IDropdownMenuListProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Menu: <T>(\n props: CProps<IDropdownMenuMenuProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl;\n Item: (<T>(\n props: CProps<IDropdownMenuItemProps & T, IDropdownMenuContext, IDropdownMenuHandlers>,\n ) => ReturnEl) & {\n Addon: typeof Box;\n };\n ItemTitle: <T>(props: IDropdownMenuItemTitleProps & T) => ReturnEl;\n ItemHint: <T>(props: IDropdownMenuItemHintProps & T) => ReturnEl;\n};\n\nexport default DropdownMenu;\n"],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import de from './de.json';
2
+ import en from './en.json';
3
+ import es from './es.json';
4
+ import fr from './fr.json';
5
+ import it from './it.json';
6
+ import ja from './ja.json';
7
+ import ko from './ko.json';
8
+ import pt from './pt.json';
9
+ import tr from './tr.json';
10
+ import vi from './vi.json';
11
+ import zh from './zh.json';
12
+ export var localizedMessages = {
13
+ de: de,
14
+ en: en,
15
+ es: es,
16
+ fr: fr,
17
+ it: it,
18
+ ja: ja,
19
+ ko: ko,
20
+ pt: pt,
21
+ tr: tr,
22
+ vi: vi,
23
+ zh: zh
24
+ };
25
+ //# sourceMappingURL=__intergalactic-dynamic-locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["de","en","es","fr","it","ja","ko","pt","tr","vi","zh","localizedMessages"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport pt from './pt.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n pt,\n tr,\n vi,\n zh,\n};\n"],"mappings":"AAAA,OAAOA,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AAEA,OAAO,IAAMC,iBAAiB,GAAG;EAC/BX,EAAE,EAAFA,EAD+B;EAE/BC,EAAE,EAAFA,EAF+B;EAG/BC,EAAE,EAAFA,EAH+B;EAI/BC,EAAE,EAAFA,EAJ+B;EAK/BC,EAAE,EAAFA,EAL+B;EAM/BC,EAAE,EAAFA,EAN+B;EAO/BC,EAAE,EAAFA,EAP+B;EAQ/BC,EAAE,EAAFA,EAR+B;EAS/BC,EAAE,EAAFA,EAT+B;EAU/BC,EAAE,EAAFA,EAV+B;EAW/BC,EAAE,EAAFA;AAX+B,CAA1B"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Drücken Sie Tab, um zum Popover zu gehen"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Press Tab to go to popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Presiona Tab para ir a Popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Appuyez sur la touche Tab pour accéder au popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Premi Tab per andare a Popover"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Tabキーを押してポップオーバーに移動"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "팝업창으로 이동하려면 Tab 키를 누르세요"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Pressione Tab para acessar o pop-over"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Popover'a gitmek için Tab tuşuna basın"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "Nhấn Tab để chuyển đến cửa sổ bật lên"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "triggerHint": "按 T​​ab 转到弹出框"
3
+ }
@@ -24,6 +24,7 @@ export interface IDropdownMenuProps extends IDropdownProps {
24
24
  * highlightedIndex - Index of the selected item
25
25
  */
26
26
  onHighlightedIndexChange?: (highlightedIndex: number) => void;
27
+ locale?: string;
27
28
  }
28
29
 
29
30
  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": "3.5.2",
4
+ "version": "3.6.1",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",