@ringcentral/spring-ui 1.11.1 → 1.12.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 (174) hide show
  1. package/AccordionHeader.js +4 -2
  2. package/Animation.js +10 -9
  3. package/Autocomplete.js +7 -2
  4. package/BlockHeader.js +3 -1
  5. package/DatePicker.js +5 -3
  6. package/Dialer.js +36 -21
  7. package/Dialog.js +4 -3
  8. package/Dropdown.js +8 -4
  9. package/EmptyState.js +3 -1
  10. package/FormField.js +2 -0
  11. package/ListItem.js +1 -0
  12. package/ListItemText.js +9 -3
  13. package/MenuHeader.js +5 -1
  14. package/MenuItem.js +3 -0
  15. package/MenuItemText.js +2 -0
  16. package/MenuList.js +3 -0
  17. package/Option.js +4 -1
  18. package/PickerTextField.js +2 -0
  19. package/Popper.js +28 -25
  20. package/Rating.js +2 -2
  21. package/Select.js +4 -0
  22. package/SingleFilter.js +4 -0
  23. package/Slider.js +3 -2
  24. package/SortableListItem.js +1 -0
  25. package/SortableVirtualizedList.js +11 -10
  26. package/SplitButton.js +4 -0
  27. package/Squircle.js +2 -2
  28. package/StepContent.js +1 -1
  29. package/SubMenu.js +4 -0
  30. package/SwipeableDrawer.js +16 -18
  31. package/TableCell.js +1 -1
  32. package/TablePagination.js +4 -0
  33. package/Tabs.js +11 -5
  34. package/TextField.js +2 -0
  35. package/Textarea.js +2 -0
  36. package/TimePicker.js +3 -1
  37. package/TrayMenu.js +3 -0
  38. package/VirtualizedList.js +7 -5
  39. package/VirtualizedMenu.js +1 -0
  40. package/chunks/Alert.js +2 -2
  41. package/chunks/Badge.js +1 -1
  42. package/chunks/Drawer.js +3 -2
  43. package/chunks/MenuItemText.js +3 -1
  44. package/chunks/MenuList.js +2 -1
  45. package/chunks/Modal.js +132 -9
  46. package/chunks/Popover.js +13 -5
  47. package/chunks/Select.js +26 -21
  48. package/chunks/SlideIn.js +2 -1
  49. package/chunks/Squircle.js +2 -2
  50. package/chunks/VirtualizedMenu.js +5 -5
  51. package/chunks/composeEventHandlers.js +10 -0
  52. package/chunks/getSlideIn.js +2 -2
  53. package/chunks/hasContent.js +3 -0
  54. package/chunks/useAnimationFrame.js +15 -0
  55. package/chunks/useFocusTrapStack.js +3 -1
  56. package/chunks/useHelperTextId.js +4 -2
  57. package/chunks/useMenuItemSelect.js +37 -26
  58. package/index.css +205 -172
  59. package/index.js +4 -0
  60. package/internal/hooks/index.d.ts +1 -0
  61. package/internal/hooks/useAnimationFrame.d.ts +4 -0
  62. package/internal/utils/hasContent.d.ts +2 -0
  63. package/internal/utils/index.d.ts +3 -0
  64. package/internal/utils/setRef.d.ts +1 -0
  65. package/package.json +8 -8
  66. package/src/Accordion/Accordion.d.ts +1 -1
  67. package/src/AccordionHeader/AccordionHeader.d.ts +1 -1
  68. package/src/Alert/Alert.type.d.ts +2 -1
  69. package/src/Animation/components/Fade/Fade.d.ts +4 -2
  70. package/src/Animation/components/Grow/Grow.d.ts +4 -2
  71. package/src/Animation/components/ShowHideEye/ShowHideEye.d.ts +1 -1
  72. package/src/Animation/components/SlideIn/SlideIn.d.ts +4 -2
  73. package/src/Animation/components/SlideIn/getSlideIn.d.ts +1 -1
  74. package/src/Announcement/Announcement.d.ts +1 -1
  75. package/src/Autocomplete/SuggestionList/SuggestionList.d.ts +1 -1
  76. package/src/Autocomplete/SuggestionList/SuggestionListItem.d.ts +1 -1
  77. package/src/Autocomplete/SuggestionList/utils/useSuggestionList.d.ts +1 -1
  78. package/src/Autocomplete/useAutocomplete.d.ts +74 -50
  79. package/src/Autocomplete/useAutocompleteTag.d.ts +68 -44
  80. package/src/Backdrop/Backdrop.d.ts +1 -1
  81. package/src/Badge/Badge.d.ts +2 -2
  82. package/src/BottomNavigation/BottomNavigationGroup/BottomNavigationGroup.d.ts +1 -1
  83. package/src/CircularProgressIndicator/CircularProgressIndicator.d.ts +1 -1
  84. package/src/DatePicker/DatePicker.d.ts +1 -1
  85. package/src/DatePicker/Day.d.ts +1 -1
  86. package/src/DatePicker/Year.d.ts +1 -1
  87. package/src/DatePicker/utils/DatePickerAriaLabelUtils.d.ts +2 -1
  88. package/src/Dialer/DialDelete/DialDelete.d.ts +2 -2
  89. package/src/Dialer/DialPad/DialPad.d.ts +2 -2
  90. package/src/Dialer/DialTextField/DialTextField.d.ts +1 -1
  91. package/src/Dialer/Dialer.d.ts +4 -2
  92. package/src/Dialog/Dialog.d.ts +4 -4
  93. package/src/Drawer/Drawer.d.ts +1 -1
  94. package/src/Dropdown/Dropdown.type.d.ts +2 -2
  95. package/src/EmptyState/EmptyState.d.ts +1 -1
  96. package/src/FormField/FormField.d.ts +1 -1
  97. package/src/FormLabel/FormLabel.d.ts +1 -1
  98. package/src/Icon/Icon.d.ts +1 -1
  99. package/src/IconButton/IconButtonLabel.d.ts +1 -1
  100. package/src/InlineEditable/InlineEditable.type.d.ts +2 -1
  101. package/src/LinearProgressIndicator/LinearProgressIndicator.d.ts +1 -1
  102. package/src/List/List.d.ts +1 -1
  103. package/src/ListItem/ListItem.d.ts +1 -1
  104. package/src/ListItemText/ListItemText.d.ts +1 -1
  105. package/src/ListNavigation/useListNavigation.d.ts +3 -3
  106. package/src/Menu/Menu.d.ts +1 -1
  107. package/src/MenuActions/MenuActions.d.ts +3 -3
  108. package/src/MenuDivider/MenuDivider.d.ts +1 -1
  109. package/src/MenuFooter/MenuFooter.d.ts +1 -1
  110. package/src/MenuHeader/MenuHeader.d.ts +1 -1
  111. package/src/MenuItem/MenuItem.d.ts +1 -1
  112. package/src/MenuItem/useMenuItem.d.ts +1 -1
  113. package/src/MenuItem/useVirtualizedMenuItem.d.ts +1 -1
  114. package/src/MenuItemText/MenuItemText.d.ts +1 -1
  115. package/src/MenuList/MenuList.type.d.ts +1 -1
  116. package/src/Modal/InnerModal.d.ts +2 -16
  117. package/src/Modal/InnerModal.type.d.ts +1 -0
  118. package/src/Modal/Modal.d.ts +2 -21
  119. package/src/Modal/ModalContext.d.ts +3 -0
  120. package/src/Modal/OverlayBranchRegistry.d.ts +8 -0
  121. package/src/Modal/useOverlayBranch.d.ts +8 -0
  122. package/src/NestedMenuContext/MenuOverlayGroupContext.d.ts +2 -2
  123. package/src/Option/Option.d.ts +1 -1
  124. package/src/PageHeader/PageHeader.d.ts +5 -5
  125. package/src/PickerTextField/PickerTextField.d.ts +1 -1
  126. package/src/Popover/Popover.d.ts +1 -1
  127. package/src/Popper/Popper.d.ts +1 -1
  128. package/src/Popper/Popper.type.d.ts +10 -7
  129. package/src/PopperPaper/PopperPaper.d.ts +1 -1
  130. package/src/RadioGroup/RadioGroup.d.ts +1 -1
  131. package/src/Rating/Rating.d.ts +1 -1
  132. package/src/Rating/RatingItem.d.ts +1 -1
  133. package/src/Rating/utils.d.ts +3 -3
  134. package/src/Select/Select.type.d.ts +1 -1
  135. package/src/SingleFilter/FilterButton/FilterButton.d.ts +1 -1
  136. package/src/SingleFilter/SingleFilter.d.ts +1 -1
  137. package/src/Skeleton/Skeleton.d.ts +1 -1
  138. package/src/Slider/Slider.d.ts +2 -2
  139. package/src/Slider/SliderThumb.d.ts +2 -2
  140. package/src/Snackbar/Snackbar.d.ts +1 -1
  141. package/src/Snackbar/SnackbarContent/SnackbarContent.d.ts +1 -1
  142. package/src/SortableListItem/SortableListItem.d.ts +1 -1
  143. package/src/SortableListItem/SortableListItemOverlay.d.ts +1 -1
  144. package/src/SplitButton/SplitButton.d.ts +1 -1
  145. package/src/Squircle/Squircle.d.ts +1 -1
  146. package/src/StatusIndicator/StatusIndicator.d.ts +2 -2
  147. package/src/StepConnector/StepConnector.d.ts +1 -1
  148. package/src/StepContent/StepContent.d.ts +1 -1
  149. package/src/StepIcon/StepIcon.d.ts +1 -1
  150. package/src/StepLabel/StepLabel.d.ts +1 -1
  151. package/src/SubMenu/PopperMenu.d.ts +1 -1
  152. package/src/SubMenu/PopperMenu.type.d.ts +4 -1
  153. package/src/SubMenu/SubMenu.d.ts +1 -1
  154. package/src/SwipeableDrawer/SwipeableDrawer.d.ts +1 -1
  155. package/src/Tab/Tab.d.ts +1 -1
  156. package/src/TabPanel/TabPanel.d.ts +1 -1
  157. package/src/TableFooter/TableFooter.d.ts +1 -1
  158. package/src/Tabs/TabMoreMenu.d.ts +1 -1
  159. package/src/Tabs/TabScrollButton.d.ts +1 -1
  160. package/src/Tabs/Tabs.d.ts +1 -1
  161. package/src/Tag/Tag.d.ts +1 -1
  162. package/src/TextField/TextField.d.ts +1 -1
  163. package/src/Textarea/Textarea.d.ts +1 -1
  164. package/src/TimePicker/NumberPicker.d.ts +1 -1
  165. package/src/TimePicker/TimeButton.d.ts +1 -1
  166. package/src/TimePicker/ToggleText.d.ts +1 -1
  167. package/src/Tray/Tray.d.ts +1 -1
  168. package/src/Tray/TrayPanel.d.ts +1 -1
  169. package/src/TrayMenu/TrayMenu.d.ts +1 -1
  170. package/src/TrayMenu/TrayMenuItem.d.ts +1 -1
  171. package/src/VirtualizedList/VirtuosoComponents.d.ts +4 -4
  172. package/src/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  173. package/src/internal/utils/index.d.ts +0 -1
  174. /package/{src/internal → internal}/utils/composeEventHandlers.d.ts +0 -0
@@ -1,12 +1,15 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { createContext, useContext, forwardRef, useRef, useLayoutEffect, useCallback, useMemo } from 'react';
3
- import { useFocusVisible, useActive, useForkRef, useId, useHover, useEventCallback } from '@ringcentral/spring-base';
3
+ import { useFocusVisible, useActive, useForkRef, combineProps, useId, useHover, useEventCallback } from '@ringcentral/spring-base';
4
4
  import { CheckBoldMd } from '@ringcentral/spring-icon';
5
5
  import { useThemeProps, useClassesWithMode } from '@ringcentral/spring-theme';
6
6
  import { I as Icon } from './Icon.js';
7
+ import { u as useAnimationFrame } from './useAnimationFrame.js';
7
8
  import './useNestedParentMenu.js';
8
9
  import { u as useNestedMenuItem } from './useNestedMenuItem.js';
9
10
  import { useVirtualizedItemPropsContext } from '../VirtualizedList.js';
11
+ import { c as composeEventHandlers } from './composeEventHandlers.js';
12
+ import { unstable_setRef } from '@mui/utils';
10
13
  import { useItemNavigation } from '../ListNavigation.js';
11
14
  import { u as useMenuContext } from './Menu.js';
12
15
 
@@ -20,15 +23,6 @@ const SubMenuTriggerNestedIdContext = createContext(null);
20
23
  const MenuItemSelectContext = createContext(null);
21
24
  const useMenuItemSelectContext = () => useContext(MenuItemSelectContext);
22
25
 
23
- const composeEventHandlers = (externalEventHandler, internalEventHandler, options = {}) => (event, ...args) => {
24
- const { checkForDefaultPrevented = true } = options;
25
- externalEventHandler?.(event, ...args);
26
- if (checkForDefaultPrevented && event.defaultPrevented) {
27
- return;
28
- }
29
- internalEventHandler?.(event, ...args);
30
- };
31
-
32
26
  const useMenuItem = (props) => {
33
27
  const { onBlur, onFocus, onKeyDown, onKeyUp, onClick, ref, disabled, autoClose, } = props;
34
28
  const { keyboardNavHandlers, itemRef } = useItemNavigation() ?? {};
@@ -59,15 +53,20 @@ const useMenuItem = (props) => {
59
53
  onClick: handleClick,
60
54
  });
61
55
  const handleItemRef = useForkRef(ref, focusVisibleRef, itemRef);
62
- const getRootProps = (otherProps) => {
56
+ const getRootProps = (otherProps = {}) => {
57
+ const { ref: otherRef, ...restOtherProps } = otherProps;
63
58
  return {
64
59
  role: 'menuitem',
65
60
  tabIndex: '-1',
66
- disabled,
67
- ...otherProps,
68
- ...focusVisibleHandlers,
69
- ...activeHandlers,
70
- ref: handleItemRef,
61
+ ...(disabled ? { 'aria-disabled': true } : null),
62
+ ...combineProps(restOtherProps, {
63
+ ...focusVisibleHandlers,
64
+ ...activeHandlers,
65
+ }),
66
+ ref: (instance) => {
67
+ unstable_setRef(otherRef, instance);
68
+ unstable_setRef(handleItemRef, instance);
69
+ },
71
70
  };
72
71
  };
73
72
  return { getRootProps, focusVisible, active };
@@ -104,15 +103,21 @@ const useVirtualizedMenuItem = (props) => {
104
103
  onClick: handleClick,
105
104
  });
106
105
  const handleItemRef = useForkRef(ref, focusVisibleRef, itemRef);
107
- const getRootProps = (otherProps) => {
106
+ const getRootProps = (otherProps = {}) => {
107
+ const { ref: otherRef, ...restOtherProps } = otherProps;
108
108
  return {
109
109
  role: 'menuitem',
110
110
  tabIndex: -1,
111
- ...otherProps,
112
- ...focusVisibleHandlers,
113
- ...activeHandlers,
114
- ...vlItemProps,
115
- ref: handleItemRef,
111
+ ...(disabled ? { 'aria-disabled': true } : null),
112
+ ...combineProps(restOtherProps, {
113
+ ...focusVisibleHandlers,
114
+ ...activeHandlers,
115
+ ...vlItemProps,
116
+ }),
117
+ ref: (instance) => {
118
+ unstable_setRef(otherRef, instance);
119
+ unstable_setRef(handleItemRef, instance);
120
+ },
116
121
  };
117
122
  };
118
123
  return { getRootProps, focusVisible, active };
@@ -120,10 +125,11 @@ const useVirtualizedMenuItem = (props) => {
120
125
 
121
126
  const MenuItem = forwardRef((inProps, ref) => {
122
127
  const props = useThemeProps({ props: inProps, name: 'MenuItem' });
123
- const { classes, className, children, selected, disabled, onMouseEnter, onMouseLeave, onPointerMove, highlighted = false, focused = false, autoClose = true, autoFocus, ...rest } = props;
128
+ const { classes, className, children, selected, disabled, onMouseEnter, onMouseLeave, onPointerMove, onBlur, onFocus, onKeyDown, onKeyUp, onClick, highlighted = false, focused = false, autoClose = true, autoFocus, ...rest } = props;
124
129
  const cls = useClassesWithMode('menu-item', classes, className);
125
130
  const vlItemProps = useVirtualizedItemPropsContext();
126
131
  const isInVlRef = useRef(Boolean(vlItemProps));
132
+ const { requestAnimationFrame } = useAnimationFrame();
127
133
  const useMenuItemHook = (() => {
128
134
  if (isInVlRef.current) {
129
135
  return useVirtualizedMenuItem;
@@ -135,8 +141,13 @@ const MenuItem = forwardRef((inProps, ref) => {
135
141
  const itemRef = useRef(null);
136
142
  const handleRef = useForkRef(itemRef, ref);
137
143
  const { getRootProps, focusVisible, active } = useMenuItemHook({
138
- ...props,
139
144
  autoClose,
145
+ disabled,
146
+ onBlur,
147
+ onClick,
148
+ onFocus,
149
+ onKeyDown,
150
+ onKeyUp,
140
151
  ref: handleRef,
141
152
  });
142
153
  const selectable = !(selected === undefined);
@@ -177,7 +188,7 @@ const MenuItem = forwardRef((inProps, ref) => {
177
188
  });
178
189
  });
179
190
  }
180
- }, [autoFocus]);
191
+ }, [autoFocus, requestAnimationFrame]);
181
192
  return (jsx("div", { className: cls('root', {
182
193
  selectable,
183
194
  selected,
@@ -268,4 +279,4 @@ const useMenuItemSelect = (props) => {
268
279
  };
269
280
  };
270
281
 
271
- export { Action as A, MenuItem as M, SubMenuTriggerNestedIdContext as S, MenuItemSelectContext as a, useMenuItem as b, useMenuItemSelect as c, useVirtualizedMenuItem as d, MenuListContext as e, useMenuListContext as f, composeEventHandlers as g, useMenuItemSelectContext as u };
282
+ export { Action as A, MenuItem as M, SubMenuTriggerNestedIdContext as S, MenuItemSelectContext as a, useMenuItem as b, useMenuItemSelect as c, useVirtualizedMenuItem as d, MenuListContext as e, useMenuListContext as f, useMenuItemSelectContext as u };