@ringcentral/spring-ui 1.11.2 → 1.13.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.
Files changed (241) hide show
  1. package/Accordion.js +90 -34
  2. package/AccordionHeader.js +72 -20
  3. package/Alert.js +120 -28
  4. package/Animation.js +2 -45
  5. package/Announcement.js +46 -35
  6. package/Autocomplete.js +1011 -580
  7. package/Avatar.js +134 -73
  8. package/AvatarGroup.js +50 -7
  9. package/Backdrop.js +45 -7
  10. package/Badge.js +77 -15
  11. package/Block.js +34 -12
  12. package/BlockHeader.js +55 -11
  13. package/BottomNavigation.js +181 -65
  14. package/BottomNavigationItem.js +93 -30
  15. package/Button.js +160 -24
  16. package/CallButton.js +53 -31
  17. package/Checkbox.js +88 -26
  18. package/Chip.js +126 -26
  19. package/CircularProgressIndicator.js +80 -8
  20. package/ClickAwayListener.js +4 -1
  21. package/ComponentsProps.js +1 -0
  22. package/DatePicker.js +611 -190
  23. package/DateUtilsContext.js +43 -25
  24. package/Dialer.js +576 -250
  25. package/Dialog.js +100 -45
  26. package/Divider.js +43 -7
  27. package/DragHandle.js +32 -6
  28. package/Drawer.js +117 -19
  29. package/Dropdown.js +154 -74
  30. package/EmptyState.js +63 -11
  31. package/FabButton.js +51 -17
  32. package/FocusTrap.js +109 -12
  33. package/FormField.js +106 -8
  34. package/FormLabel.js +81 -7
  35. package/Icon.js +1 -8
  36. package/IconButton.js +142 -26
  37. package/IconButtonGroup.js +35 -12
  38. package/InlineEditable.js +98 -44
  39. package/LinearProgressIndicator.js +73 -24
  40. package/Link.js +40 -11
  41. package/List.js +54 -9
  42. package/ListItem.js +152 -23
  43. package/ListItemText.js +44 -16
  44. package/ListNavigation.js +272 -20
  45. package/Menu.js +139 -23
  46. package/MenuActions.js +37 -12
  47. package/MenuDivider.js +34 -8
  48. package/MenuFooter.js +36 -12
  49. package/MenuHeader.js +54 -15
  50. package/MenuItem.js +402 -33
  51. package/MenuItemText.js +51 -8
  52. package/MenuList.js +87 -34
  53. package/Modal.js +345 -16
  54. package/NestedMenuContext.js +183 -11
  55. package/Option.js +32 -34
  56. package/Overlap.js +54 -7
  57. package/PageHeader.js +62 -24
  58. package/PickerTextField.js +156 -33
  59. package/Popover.js +262 -21
  60. package/Popper.js +130 -77
  61. package/PopperPaper.js +54 -8
  62. package/Portal.js +6 -1
  63. package/Radio.js +65 -21
  64. package/RadioGroup.js +56 -17
  65. package/Rating.js +223 -87
  66. package/Select.js +387 -41
  67. package/SingleFilter.js +148 -77
  68. package/Skeleton.js +68 -17
  69. package/Slider.js +168 -69
  70. package/Snackbar.js +122 -59
  71. package/SortableList.js +32 -12
  72. package/SortableListDndContext.js +69 -22
  73. package/SortableListItem.js +92 -47
  74. package/SortableVirtualizedList.js +52 -28
  75. package/SplitButton.js +124 -86
  76. package/Squircle.js +4 -7
  77. package/StatusIndicator.js +51 -9
  78. package/Step.js +63 -38
  79. package/StepButton.js +51 -23
  80. package/StepConnector.js +48 -8
  81. package/StepContent.js +68 -25
  82. package/StepIcon.js +90 -9
  83. package/StepLabel.js +90 -14
  84. package/Stepper.js +65 -23
  85. package/SubMenu.js +203 -99
  86. package/SwipeableDrawer.js +439 -194
  87. package/Switch.js +70 -23
  88. package/Tab.js +120 -57
  89. package/TabContext.js +59 -15
  90. package/TabPanel.js +40 -13
  91. package/Table.js +60 -17
  92. package/TableBody.js +42 -12
  93. package/TableCell.js +84 -50
  94. package/TableContainer.js +32 -10
  95. package/TableFooter.js +38 -10
  96. package/TableHead.js +49 -15
  97. package/TablePagination.js +153 -77
  98. package/TableRow.js +60 -21
  99. package/Tabs.js +593 -268
  100. package/Tag.js +51 -16
  101. package/Text.js +68 -37
  102. package/TextField.js +209 -29
  103. package/Textarea.js +51 -40
  104. package/TimePicker.js +490 -230
  105. package/Tooltip.js +48 -23
  106. package/Tray.js +237 -13
  107. package/TrayMenu.js +62 -41
  108. package/VirtualizedList.js +208 -109
  109. package/VirtualizedMenu.js +359 -29
  110. package/VisuallyHidden.js +29 -6
  111. package/chunks/1250.js +98 -0
  112. package/chunks/1294.js +126 -0
  113. package/chunks/2956.js +18 -0
  114. package/chunks/4476.js +460 -0
  115. package/chunks/4491.js +10 -0
  116. package/chunks/4535.js +364 -0
  117. package/chunks/5047.js +3 -0
  118. package/chunks/6335.js +24 -0
  119. package/chunks/7279.js +10 -0
  120. package/chunks/8011.js +8 -0
  121. package/chunks/8307.js +56 -0
  122. package/chunks/8467.js +8 -0
  123. package/chunks/8809.js +8 -0
  124. package/chunks/{RadioGroup.context.js → 9551.js} +12 -6
  125. package/chunks/987.js +8 -0
  126. package/index.css +2624 -2416
  127. package/index.js +245 -193
  128. package/internal/utils/index.d.ts +1 -0
  129. package/internal/utils/setRef.d.ts +2 -0
  130. package/package.json +8 -8
  131. package/src/Alert/Alert.type.d.ts +2 -1
  132. package/src/Animation/components/Fade/Fade.d.ts +4 -2
  133. package/src/Animation/components/Grow/Grow.d.ts +4 -2
  134. package/src/Animation/components/ShowHideEye/ShowHideEye.d.ts +1 -1
  135. package/src/Animation/components/SlideIn/SlideIn.d.ts +4 -2
  136. package/src/Animation/components/SlideIn/getSlideIn.d.ts +1 -1
  137. package/src/Animation/hooks/useMotionSafeTransition/useMotionSafeTransition.d.ts +2 -0
  138. package/src/Autocomplete/SuggestionList/SuggestionList.d.ts +1 -1
  139. package/src/Autocomplete/useAutocomplete.d.ts +18 -18
  140. package/src/Autocomplete/useAutocompleteTag.d.ts +18 -18
  141. package/src/Badge/Badge.d.ts +2 -1
  142. package/src/Button/Button.classes.d.ts +1 -1
  143. package/src/ComponentsProps.d.ts +111 -110
  144. package/src/DatePicker/DatePickerDataAttributes.d.ts +11 -0
  145. package/src/DatePicker/utils/DatePickerAriaLabelUtils.d.ts +2 -1
  146. package/src/DatePicker/utils/DatePickerUtils.d.ts +1 -1
  147. package/src/Dialer/DialDelete/DialDelete.d.ts +2 -2
  148. package/src/Dialer/DialPad/DialPad.d.ts +2 -2
  149. package/src/Dialer/Dialer.d.ts +4 -2
  150. package/src/Dropdown/Dropdown.type.d.ts +2 -2
  151. package/src/InlineEditable/InlineEditable.type.d.ts +2 -1
  152. package/src/ListNavigation/useListNavigation.d.ts +3 -3
  153. package/src/MenuActions/MenuActions.d.ts +2 -2
  154. package/src/MenuItem/MenuItem.type.d.ts +1 -0
  155. package/src/MenuItem/useMenuItem.d.ts +1 -1
  156. package/src/MenuItem/useVirtualizedMenuItem.d.ts +1 -1
  157. package/src/MenuList/MenuList.type.d.ts +1 -1
  158. package/src/MenuList/MenuListContext.d.ts +2 -3
  159. package/src/Modal/Modal.type.d.ts +1 -0
  160. package/src/NestedMenuContext/MenuOverlayGroupContext.d.ts +2 -2
  161. package/src/Popover/Popover.classes.d.ts +1 -1
  162. package/src/Popover/Popover.internal.d.ts +8 -0
  163. package/src/Popover/Popover.type.d.ts +1 -0
  164. package/src/Popper/Popper.type.d.ts +10 -7
  165. package/src/Rating/utils.d.ts +3 -2
  166. package/src/Select/Select.type.d.ts +7 -5
  167. package/src/Slider/Slider.d.ts +2 -2
  168. package/src/Slider/SliderThumb.d.ts +2 -1
  169. package/src/Squircle/Squircle.d.ts +1 -1
  170. package/src/StatusIndicator/StatusIndicator.d.ts +2 -1
  171. package/src/SubMenu/PopperMenu.type.d.ts +4 -1
  172. package/src/Table/Table.type.d.ts +3 -0
  173. package/src/Table/TableContext.d.ts +3 -0
  174. package/src/Table/TableRowContext.d.ts +7 -0
  175. package/src/Table/index.d.ts +1 -0
  176. package/src/TableCell/TableCell.classes.d.ts +1 -1
  177. package/src/TableFooter/TableFooter.classes.d.ts +1 -1
  178. package/src/TableFooter/TableFooter.type.d.ts +1 -0
  179. package/src/TableHead/TableHead.classes.d.ts +1 -1
  180. package/src/TableHead/TableHead.type.d.ts +1 -0
  181. package/src/TableRow/TableRow.type.d.ts +2 -0
  182. package/chunks/AccordionContext.js +0 -6
  183. package/chunks/Alert.js +0 -48
  184. package/chunks/AvatarGroup.js +0 -22
  185. package/chunks/Backdrop.js +0 -18
  186. package/chunks/Badge.js +0 -32
  187. package/chunks/BottomNavigationItem.js +0 -36
  188. package/chunks/Button.js +0 -88
  189. package/chunks/Chip.js +0 -73
  190. package/chunks/CircularProgressIndicator.js +0 -36
  191. package/chunks/Divider.js +0 -19
  192. package/chunks/DragHandle.js +0 -11
  193. package/chunks/Drawer.js +0 -32
  194. package/chunks/ExpandCollapseCaret.js +0 -24
  195. package/chunks/FormLabel.js +0 -27
  196. package/chunks/Icon.js +0 -25
  197. package/chunks/IconButtonLabel.js +0 -68
  198. package/chunks/List.js +0 -22
  199. package/chunks/ListItem.js +0 -83
  200. package/chunks/Menu.js +0 -61
  201. package/chunks/MenuDivider.js +0 -14
  202. package/chunks/MenuItemText.js +0 -17
  203. package/chunks/MenuList.js +0 -46
  204. package/chunks/Modal.js +0 -212
  205. package/chunks/Overlap.js +0 -25
  206. package/chunks/PickerTextField.js +0 -85
  207. package/chunks/Popover.js +0 -53
  208. package/chunks/PopperPaper.js +0 -15
  209. package/chunks/Select.js +0 -220
  210. package/chunks/ShowHideEye.js +0 -56
  211. package/chunks/SlideIn.js +0 -19
  212. package/chunks/SortableArrow.js +0 -73
  213. package/chunks/Squircle.js +0 -31
  214. package/chunks/StatusIndicator.js +0 -20
  215. package/chunks/StepConnector.js +0 -21
  216. package/chunks/StepIcon.js +0 -43
  217. package/chunks/StepLabel.js +0 -29
  218. package/chunks/StepperContext.js +0 -9
  219. package/chunks/TableContext.js +0 -6
  220. package/chunks/Tablelvl2Context.js +0 -6
  221. package/chunks/TabsContext.js +0 -6
  222. package/chunks/TextField.js +0 -110
  223. package/chunks/Tooltip.js +0 -217
  224. package/chunks/VirtualizedMenu.js +0 -164
  225. package/chunks/VisuallyHidden.js +0 -12
  226. package/chunks/getFade.js +0 -27
  227. package/chunks/getGrow.js +0 -70
  228. package/chunks/getSlideIn.js +0 -30
  229. package/chunks/hasContent.js +0 -3
  230. package/chunks/useAnimationFrame.js +0 -15
  231. package/chunks/useFocusTrapStack.js +0 -36
  232. package/chunks/useHelperTextId.js +0 -22
  233. package/chunks/useListNavigation.js +0 -199
  234. package/chunks/useMenuItemSelect.js +0 -273
  235. package/chunks/useMotionSafeTransition.js +0 -9
  236. package/chunks/useNestedMenuItem.js +0 -27
  237. package/chunks/useNestedParentMenu.js +0 -113
  238. package/chunks/usePrefersReducedMotion.js +0 -36
  239. package/chunks/useTooltipForceHide.js +0 -27
  240. package/chunks/useTrayNavigate.js +0 -150
  241. package/chunks/withTooltip.js +0 -15
package/SubMenu.js CHANGED
@@ -1,126 +1,159 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { forwardRef, useState, useCallback, useEffect, useRef } from 'react';
3
- import { useClasses, useWindowContext, useForkRef, useId, useFocusVisible, useEventCallback } from '@ringcentral/spring-base';
4
- import { a as useNestedParentMenu, N as NestedMenuContext } from './chunks/useNestedParentMenu.js';
5
- import { Popper } from './Popper.js';
6
- import { CaretRightMd } from '@ringcentral/spring-icon';
7
- import { useThemeProps } from '@ringcentral/spring-theme';
8
- import { I as Icon } from './chunks/Icon.js';
9
- import { S as SubMenuTriggerNestedIdContext, M as MenuItem } from './chunks/useMenuItemSelect.js';
10
- import 'tabbable';
11
- import './chunks/useListNavigation.js';
12
- import { b as useMenuOverlayGroupContext } from './chunks/Menu.js';
13
- import './VirtualizedList.js';
14
- import { useNestedChildMenu } from './NestedMenuContext.js';
15
- import { u as useNestedMenuItem } from './chunks/useNestedMenuItem.js';
16
- import { M as MenuItemText } from './chunks/MenuItemText.js';
17
- import '@floating-ui/react-dom';
18
- import './chunks/Modal.js';
19
- import '@mui/base';
20
- import 'framer-motion';
21
- import './chunks/usePrefersReducedMotion.js';
22
- import './chunks/getFade.js';
23
- import './chunks/useFocusTrapStack.js';
24
- import './chunks/Backdrop.js';
25
- import './chunks/useAnimationFrame.js';
26
- import './ListNavigation.js';
27
- import './chunks/Popover.js';
28
- import './chunks/getGrow.js';
29
- import './chunks/PopperPaper.js';
30
- import 'react-virtuoso';
31
- import './chunks/List.js';
32
- import './chunks/hasContent.js';
33
-
34
- var PopperMenu$1 = {"sui-popper-menu-root":"sui-popper-menu-root","sui-popper-menu-paper":"sui-popper-menu-paper"};
35
-
36
- const PopperMenu = forwardRef((props, ref) => {
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, useCallback, useEffect, useRef, useState } from "react";
3
+ import { useClasses, useEventCallback, useFocusVisible, useForkRef, useId, useWindowContext } from "@ringcentral/spring-base";
4
+ import { CaretRightMd } from "@ringcentral/spring-icon";
5
+ import { useThemeProps } from "@ringcentral/spring-theme";
6
+ import { useNestedParentMenu, useNestedChildMenu, useNestedMenuItem, NestedMenuContext } from "./NestedMenuContext.js";
7
+ import { Popper } from "./Popper.js";
8
+ import { Icon as Icon_Icon } from "./chunks/8307.js";
9
+ import { SubMenuTriggerNestedIdContext, MenuItem as MenuItem_MenuItem } from "./MenuItem.js";
10
+ import { useMenuOverlayGroupContext } from "./Menu.js";
11
+ import { MenuItemText as MenuItemText_MenuItemText } from "./MenuItemText.js";
12
+
13
+
14
+
15
+
16
+ // extracted by css-extract-rspack-plugin
17
+ /* export default */ var PopperMenu = ({"sui-popper-menu-root":"sui-popper-menu-root","sui-popper-menu-paper":"sui-popper-menu-paper"});
18
+
19
+
20
+
21
+
22
+
23
+
24
+ const PopperMenu_PopperMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
37
25
  const { classes, children, actions, className, onClickCapture, onPointerMove, ...rest } = props;
38
26
  const cls = useClasses('popper-menu', classes, className);
39
27
  const { contentClickHandlers, contentPointerHandlers, contextValue } = useNestedParentMenu({
40
- open: true,
28
+ open: true
41
29
  });
42
- return (jsx(Popper, { className: cls('root'), ...rest, onClickCapture: (event) => {
30
+ return /*#__PURE__*/ jsx(Popper, {
31
+ className: cls('root'),
32
+ ...rest,
33
+ onClickCapture: (event)=>{
43
34
  onClickCapture?.(event);
44
35
  contentClickHandlers.onClickCapture(event);
45
- }, onPointerMove: (event) => {
36
+ },
37
+ onPointerMove: (event)=>{
46
38
  onPointerMove?.(event);
47
39
  contentPointerHandlers.onPointerMove(event);
48
- }, ref: ref, children: jsx("div", { className: cls('paper'), children: jsx(NestedMenuContext.Provider, { value: contextValue, children: children }) }) }));
40
+ },
41
+ ref: ref,
42
+ children: /*#__PURE__*/ jsx("div", {
43
+ className: cls('paper'),
44
+ children: /*#__PURE__*/ jsx(NestedMenuContext.Provider, {
45
+ value: contextValue,
46
+ children: children
47
+ })
48
+ })
49
+ });
49
50
  });
50
- PopperMenu.displayName = 'SuiPopperMenu';
51
+ PopperMenu_PopperMenu.displayName = 'SuiPopperMenu';
52
+
53
+
54
+
55
+
56
+
51
57
 
52
- const useSubMenuInteractionState = ({ open, focusVisibleWithin, isPointerGraceActive, clearPointerGrace, }) => {
58
+
59
+
60
+
61
+ const useSubMenuInteractionState = ({ open, focusVisibleWithin, isPointerGraceActive, clearPointerGrace })=>{
53
62
  const [hasEnteredMenuContent, setHasEnteredMenuContent] = useState(false);
54
63
  const [isPointerInsideTrigger, setIsPointerInsideTrigger] = useState(false);
55
- const resetInteractionState = useCallback(() => {
64
+ const resetInteractionState = useCallback(()=>{
56
65
  setHasEnteredMenuContent(false);
57
66
  setIsPointerInsideTrigger(false);
58
67
  }, []);
59
- const markTriggerPointerMoved = useCallback(() => {
68
+ const markTriggerPointerMoved = useCallback(()=>{
60
69
  setIsPointerInsideTrigger(true);
61
70
  setHasEnteredMenuContent(false);
62
71
  }, []);
63
- const markTriggerPointerLeft = useCallback(() => {
72
+ const markTriggerPointerLeft = useCallback(()=>{
64
73
  setIsPointerInsideTrigger(false);
65
74
  setHasEnteredMenuContent(false);
66
75
  }, []);
67
- const markMenuContentEntered = useCallback(() => {
76
+ const markMenuContentEntered = useCallback(()=>{
68
77
  setHasEnteredMenuContent(true);
69
78
  clearPointerGrace();
70
- }, [clearPointerGrace]);
71
- const shouldKeepSubMenuOpen = isPointerInsideTrigger ||
72
- hasEnteredMenuContent ||
73
- focusVisibleWithin ||
74
- isPointerGraceActive;
75
- useEffect(() => {
79
+ }, [
80
+ clearPointerGrace
81
+ ]);
82
+ const shouldKeepSubMenuOpen = isPointerInsideTrigger || hasEnteredMenuContent || focusVisibleWithin || isPointerGraceActive;
83
+ useEffect(()=>{
76
84
  if (!open) {
77
85
  resetInteractionState();
78
86
  }
79
- }, [open, resetInteractionState]);
87
+ }, [
88
+ open,
89
+ resetInteractionState
90
+ ]);
80
91
  return {
81
92
  markTriggerPointerLeft,
82
93
  markTriggerPointerMoved,
83
94
  markMenuContentEntered,
84
95
  resetInteractionState,
85
- shouldKeepSubMenuOpen,
96
+ shouldKeepSubMenuOpen
86
97
  };
87
98
  };
88
99
 
100
+
101
+
102
+
103
+
89
104
  const POINTER_GRACE_TIMEOUT = 300;
90
105
  const POINTER_GRACE_BLEED = 5;
91
- const getSubMenuSide = (anchorRect, menuRect) => {
106
+ const getSubMenuSide = (anchorRect, menuRect)=>{
92
107
  const anchorCenterX = anchorRect.left + anchorRect.width / 2;
93
108
  const menuCenterX = menuRect.left + menuRect.width / 2;
94
109
  return menuCenterX >= anchorCenterX ? 'right' : 'left';
95
110
  };
96
- const getPointerGraceIntent = (event, menuRect, side) => {
111
+ const getPointerGraceIntent = (event, menuRect, side)=>{
97
112
  const bleed = side === 'right' ? -POINTER_GRACE_BLEED : POINTER_GRACE_BLEED;
98
113
  const contentNearEdge = menuRect[side === 'right' ? 'left' : 'right'];
99
114
  const contentFarEdge = menuRect[side === 'right' ? 'right' : 'left'];
100
115
  return {
101
116
  area: [
102
- { x: event.clientX + bleed, y: event.clientY },
103
- { x: contentNearEdge, y: menuRect.top },
104
- { x: contentFarEdge, y: menuRect.top },
105
- { x: contentFarEdge, y: menuRect.bottom },
106
- { x: contentNearEdge, y: menuRect.bottom },
117
+ {
118
+ x: event.clientX + bleed,
119
+ y: event.clientY
120
+ },
121
+ {
122
+ x: contentNearEdge,
123
+ y: menuRect.top
124
+ },
125
+ {
126
+ x: contentFarEdge,
127
+ y: menuRect.top
128
+ },
129
+ {
130
+ x: contentFarEdge,
131
+ y: menuRect.bottom
132
+ },
133
+ {
134
+ x: contentNearEdge,
135
+ y: menuRect.bottom
136
+ }
107
137
  ],
108
- side,
138
+ side
109
139
  };
110
140
  };
111
- const useSubMenuPointerGrace = (props) => {
141
+ const useSubMenuPointerGrace = (props)=>{
112
142
  const { isPointerMovingToSubMenu, onPointerGraceIntentChange } = props;
113
143
  const { externalWindow, globalThis: contextGlobal } = useWindowContext();
114
144
  const contextWindow = externalWindow ?? contextGlobal;
115
145
  const [isPointerGraceActive, setIsPointerGraceActive] = useState(false);
116
146
  const timerRef = useRef();
117
- const clearPointerGrace = useCallback(() => {
147
+ const clearPointerGrace = useCallback(()=>{
118
148
  contextWindow.clearTimeout(timerRef.current);
119
149
  timerRef.current = undefined;
120
150
  setIsPointerGraceActive(false);
121
151
  onPointerGraceIntentChange?.(null);
122
- }, [contextWindow, onPointerGraceIntentChange]);
123
- const startPointerGrace = useCallback((event, anchorElement, menuElement) => {
152
+ }, [
153
+ contextWindow,
154
+ onPointerGraceIntentChange
155
+ ]);
156
+ const startPointerGrace = useCallback((event, anchorElement, menuElement)=>{
124
157
  if (!anchorElement || !menuElement) {
125
158
  clearPointerGrace();
126
159
  return;
@@ -146,23 +179,43 @@ const useSubMenuPointerGrace = (props) => {
146
179
  clearPointerGrace,
147
180
  contextWindow,
148
181
  isPointerMovingToSubMenu,
149
- onPointerGraceIntentChange,
182
+ onPointerGraceIntentChange
150
183
  ]);
151
- useEffect(() => {
184
+ useEffect(()=>{
152
185
  return clearPointerGrace;
153
- }, [clearPointerGrace]);
186
+ }, [
187
+ clearPointerGrace
188
+ ]);
154
189
  return {
155
190
  isPointerGraceActive,
156
191
  clearPointerGrace,
157
- startPointerGrace,
192
+ startPointerGrace
158
193
  };
159
194
  };
160
195
 
161
- const isSubMenuNavigationOpenEvent = (event) => ['ArrowRight'].includes(event.key);
162
- const isSubMenuKeyboardActivationEvent = (event) => (event.type === 'keydown' && event.key === 'Enter') ||
163
- (event.type === 'keyup' && event.key === ' ');
164
- const SubMenu = forwardRef((inProps, ref) => {
165
- const props = useThemeProps({ props: inProps, name: 'SubMenu' });
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+ const isSubMenuNavigationOpenEvent = (event)=>[
211
+ 'ArrowRight'
212
+ ].includes(event.key);
213
+ const isSubMenuKeyboardActivationEvent = (event)=>event.type === 'keydown' && event.key === 'Enter' || event.type === 'keyup' && event.key === ' ';
214
+ const SubMenu = /*#__PURE__*/ forwardRef((inProps, ref)=>{
215
+ const props = useThemeProps({
216
+ props: inProps,
217
+ name: 'SubMenu'
218
+ });
166
219
  const { classes, children, itemContent, onClick: onClickProp, onKeyDown: onKeyDownProp, onPointerLeave: onPointerLeaveProp, onPointerMove: onPointerMoveProp, disabled, ...rest } = props;
167
220
  const [anchor, setAnchor] = useState(null);
168
221
  const itemRef = useRef(null);
@@ -170,21 +223,23 @@ const SubMenu = forwardRef((inProps, ref) => {
170
223
  const menuRef = useRef(null);
171
224
  const open = Boolean(anchor);
172
225
  const id = useId();
173
- const { isPointerMovingToSubMenu, onPointerGraceIntentChange } = useNestedMenuItem({ id });
226
+ const { isPointerMovingToSubMenu, onPointerGraceIntentChange } = useNestedMenuItem({
227
+ id
228
+ });
174
229
  const { isPointerGraceActive, clearPointerGrace, startPointerGrace } = useSubMenuPointerGrace({
175
230
  isPointerMovingToSubMenu,
176
- onPointerGraceIntentChange,
231
+ onPointerGraceIntentChange
177
232
  });
178
233
  const { focusVisibleWithin, focusVisibleHandlers } = useFocusVisible({
179
- within: true,
234
+ within: true
180
235
  });
181
- const { markTriggerPointerLeft, markTriggerPointerMoved, markMenuContentEntered, resetInteractionState, shouldKeepSubMenuOpen, } = useSubMenuInteractionState({
236
+ const { markTriggerPointerLeft, markTriggerPointerMoved, markMenuContentEntered, resetInteractionState, shouldKeepSubMenuOpen } = useSubMenuInteractionState({
182
237
  open,
183
238
  focusVisibleWithin,
184
239
  isPointerGraceActive,
185
- clearPointerGrace,
240
+ clearPointerGrace
186
241
  });
187
- const closeSubMenu = useEventCallback((options) => {
242
+ const closeSubMenu = useEventCallback((options)=>{
188
243
  if (options?.restoreFocus) {
189
244
  itemRef.current?.focus();
190
245
  }
@@ -194,7 +249,7 @@ const SubMenu = forwardRef((inProps, ref) => {
194
249
  });
195
250
  const overlayGroupContext = useMenuOverlayGroupContext();
196
251
  const overlayContainer = overlayGroupContext?.container;
197
- const handleTriggerPointerMove = (event) => {
252
+ const handleTriggerPointerMove = (event)=>{
198
253
  onPointerMoveProp?.(event);
199
254
  if (event.pointerType !== 'mouse' || event.defaultPrevented || disabled) {
200
255
  return;
@@ -207,32 +262,45 @@ const SubMenu = forwardRef((inProps, ref) => {
207
262
  clearPointerGrace();
208
263
  setAnchor(event.currentTarget);
209
264
  };
210
- const handleTriggerPointerLeave = (event) => {
265
+ const handleTriggerPointerLeave = (event)=>{
211
266
  onPointerLeaveProp?.(event);
212
267
  if (event.pointerType === 'mouse') {
213
268
  markTriggerPointerLeft();
214
269
  startPointerGrace(event, itemRef.current, menuRef.current);
215
270
  }
216
271
  };
217
- const openSubMenuFromTrigger = (trigger) => {
272
+ const openSubMenuFromTrigger = (trigger)=>{
218
273
  markMenuContentEntered();
219
274
  setAnchor(trigger);
220
275
  };
221
- const getAnchorElement = useCallback(() => itemRef.current, []);
276
+ const getAnchorElement = useCallback(()=>itemRef.current, []);
222
277
  useNestedChildMenu({
223
278
  open,
224
279
  closeMenu: closeSubMenu,
225
280
  getAnchorElement,
226
- id,
281
+ id
227
282
  });
228
- useEffect(() => {
229
- if (!open)
230
- return;
283
+ useEffect(()=>{
284
+ if (!open) return;
231
285
  if (!shouldKeepSubMenuOpen) {
232
286
  closeSubMenu();
233
287
  }
234
- }, [closeSubMenu, open, shouldKeepSubMenuOpen]);
235
- return (jsxs(Fragment, { children: [jsx(SubMenuTriggerNestedIdContext.Provider, { value: id, children: jsxs(MenuItem, { "aria-haspopup": "menu", ...rest, "aria-expanded": open, autoClose: false, disabled: disabled, onKeyDown: (e) => {
288
+ }, [
289
+ closeSubMenu,
290
+ open,
291
+ shouldKeepSubMenuOpen
292
+ ]);
293
+ return /*#__PURE__*/ jsxs(Fragment, {
294
+ children: [
295
+ /*#__PURE__*/ jsx(SubMenuTriggerNestedIdContext.Provider, {
296
+ value: id,
297
+ children: /*#__PURE__*/ jsxs(MenuItem_MenuItem, {
298
+ "aria-haspopup": "menu",
299
+ ...rest,
300
+ "aria-expanded": open,
301
+ autoClose: false,
302
+ disabled: disabled,
303
+ onKeyDown: (e)=>{
236
304
  if (disabled) {
237
305
  return;
238
306
  }
@@ -243,7 +311,8 @@ const SubMenu = forwardRef((inProps, ref) => {
243
311
  if (isSubMenuNavigationOpenEvent(e)) {
244
312
  openSubMenuFromTrigger(e.currentTarget);
245
313
  }
246
- }, onClick: (e) => {
314
+ },
315
+ onClick: (e)=>{
247
316
  if (disabled) {
248
317
  return;
249
318
  }
@@ -254,18 +323,53 @@ const SubMenu = forwardRef((inProps, ref) => {
254
323
  if (isSubMenuKeyboardActivationEvent(e)) {
255
324
  openSubMenuFromTrigger(e.currentTarget);
256
325
  }
257
- }, onPointerMove: handleTriggerPointerMove, onPointerLeave: handleTriggerPointerLeave, ref: handleRef, children: [typeof itemContent === 'string' ? (jsx(MenuItemText, { children: itemContent })) : (itemContent), jsx(Icon, { symbol: CaretRightMd })] }) }), open && (jsx(PopperMenu, { anchorEl: anchor, container: overlayContainer ?? undefined, disablePortal: overlayContainer ? false : undefined, placement: "right-start", offset: -4, ref: menuRef, onKeyDown: (e) => {
258
- if ((e.key === 'ArrowLeft' || e.key === 'Escape') &&
259
- e.currentTarget.contains(e.target)) {
326
+ },
327
+ onPointerMove: handleTriggerPointerMove,
328
+ onPointerLeave: handleTriggerPointerLeave,
329
+ ref: handleRef,
330
+ children: [
331
+ typeof itemContent === 'string' ? /*#__PURE__*/ jsx(MenuItemText_MenuItemText, {
332
+ children: itemContent
333
+ }) : itemContent,
334
+ /*#__PURE__*/ jsx(Icon_Icon, {
335
+ symbol: CaretRightMd
336
+ })
337
+ ]
338
+ })
339
+ }),
340
+ open && /*#__PURE__*/ jsx(PopperMenu_PopperMenu, {
341
+ anchorEl: anchor,
342
+ container: overlayContainer ?? undefined,
343
+ disablePortal: overlayContainer ? false : undefined,
344
+ placement: "right-start",
345
+ offset: -4,
346
+ ref: menuRef,
347
+ onKeyDown: (e)=>{
348
+ if ((e.key === 'ArrowLeft' || e.key === 'Escape') && e.currentTarget.contains(e.target)) {
260
349
  e.stopPropagation();
261
- closeSubMenu({ restoreFocus: true });
350
+ closeSubMenu({
351
+ restoreFocus: true
352
+ });
262
353
  }
263
- }, onPointerMove: (event) => {
354
+ },
355
+ onPointerMove: (event)=>{
264
356
  if (event.pointerType === 'mouse') {
265
357
  markMenuContentEntered();
266
358
  }
267
- }, ...focusVisibleHandlers, children: children }))] }));
359
+ },
360
+ ...focusVisibleHandlers,
361
+ children: children
362
+ })
363
+ ]
364
+ });
268
365
  });
269
366
  SubMenu.displayName = 'SuiSubMenu';
270
367
 
271
- export { PopperMenu, SubMenu, PopperMenu$1 as popperMenuStyle };
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+ export { PopperMenu as popperMenuStyle, PopperMenu_PopperMenu as PopperMenu, SubMenu };