@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
@@ -2,6 +2,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useClasses, useFocusVisible, useForkRef, getTitle } from '@ringcentral/spring-base';
4
4
  import { useThemeProps } from '@ringcentral/spring-theme';
5
+ import { h as hasContent } from './chunks/hasContent.js';
6
+ import '@mui/utils';
5
7
  import { u as useAccordionContext } from './chunks/AccordionContext.js';
6
8
  import { E as ExpandCollapseCaret } from './chunks/ExpandCollapseCaret.js';
7
9
  import 'framer-motion';
@@ -13,7 +15,7 @@ var AccordionHeader$1 = {"sui-accordion-header-root":"sui-accordion-header-root"
13
15
 
14
16
  const AccordionHeader = forwardRef((inProps, ref) => {
15
17
  const props = useThemeProps({ props: inProps, name: 'AccordionHeader' });
16
- const { classes, className, children, onClick, secondarySlot, disabled, expandIcon = true, ExpandCollapseCaretProps, ...rest } = props;
18
+ const { classes, className, children, onClick, secondarySlot, disabled, expandIcon = true, ExpandCollapseCaretProps, id: idProp, 'aria-controls': ariaControlsProp, ...rest } = props;
17
19
  const { id, ariaControls, expanded, toggle } = useAccordionContext();
18
20
  const handleChange = (event) => {
19
21
  if (toggle) {
@@ -26,7 +28,7 @@ const AccordionHeader = forwardRef((inProps, ref) => {
26
28
  const cls = useClasses('accordion-header', classes, className);
27
29
  const { focusVisible, focusVisibleRef, focusVisibleHandlers } = useFocusVisible(props);
28
30
  const buttonRef = useForkRef(ref, focusVisibleRef);
29
- return (jsxs("button", { className: cls('root', { focusVisible, disabled }), "aria-expanded": expanded, disabled: disabled, ...rest, id: id, "aria-controls": ariaControls, ref: buttonRef, onClick: handleChange, ...focusVisibleHandlers, children: [jsxs("span", { className: cls('content'), children: [jsx("span", { className: cls('primary-text'), title: getTitle(children), children: children }), secondarySlot && (jsx("span", { className: cls('secondary-slot'), children: secondarySlot }))] }), expandIcon && (jsx(ExpandCollapseCaret, { expanded: !!expanded, orientation: 'vertical', ...ExpandCollapseCaretProps }))] }));
31
+ return (jsxs("button", { className: cls('root', { focusVisible, disabled }), "aria-expanded": expanded, disabled: disabled, ...rest, type: "button", id: id ?? idProp, "aria-controls": ariaControls ?? ariaControlsProp, ref: buttonRef, onClick: handleChange, ...focusVisibleHandlers, children: [jsxs("span", { className: cls('content'), children: [jsx("span", { className: cls('primary-text'), title: getTitle(children), children: children }), hasContent(secondarySlot) && (jsx("span", { className: cls('secondary-slot'), children: secondarySlot }))] }), expandIcon && (jsx(ExpandCollapseCaret, { expanded: !!expanded, orientation: 'vertical', ...ExpandCollapseCaretProps }))] }));
30
32
  });
31
33
  AccordionHeader.displayName = 'SuiAccordionHeader';
32
34
 
package/Animation.js CHANGED
@@ -29,16 +29,17 @@ const Fade = (props) => {
29
29
  };
30
30
 
31
31
  const Grow = (props) => {
32
- const { toggle, toggleOffTransition, toggleOnTransition, children, transformOrigin, direction = 'both', ...rest } = props;
32
+ const { toggle, toggleOffTransition, toggleOnTransition, children, transformOrigin, direction = 'both', style, ...rest } = props;
33
33
  const prefersReducedMotion = usePrefersReducedMotion();
34
- return (jsx(motion.div, { ...getGrow({
35
- toggle,
36
- direction,
37
- prefersReducedMotion,
38
- toggleOffTransition,
39
- toggleOnTransition,
40
- transformOrigin,
41
- }), ...rest, children: children }));
34
+ const growProps = getGrow({
35
+ toggle,
36
+ direction,
37
+ prefersReducedMotion,
38
+ toggleOffTransition,
39
+ toggleOnTransition,
40
+ transformOrigin,
41
+ });
42
+ return (jsx(motion.div, { ...growProps, ...rest, style: { ...growProps.style, ...style }, children: children }));
42
43
  };
43
44
 
44
45
  var ShowHideEye = {"sui-show-hide-eye-root":"sui-show-hide-eye-root"};
package/Autocomplete.js CHANGED
@@ -14,6 +14,7 @@ import { g as getFade } from './chunks/getFade.js';
14
14
  import { C as Chip } from './chunks/Chip.js';
15
15
  import { Popper } from './Popper.js';
16
16
  import { T as TextField } from './chunks/TextField.js';
17
+ import { u as useAnimationFrame } from './chunks/useAnimationFrame.js';
17
18
  import uniqueId from 'lodash/uniqueId';
18
19
  import './chunks/useMotionSafeTransition.js';
19
20
  import '@mui/base';
@@ -27,6 +28,8 @@ import './chunks/useFocusTrapStack.js';
27
28
  import './chunks/Backdrop.js';
28
29
  import './chunks/ShowHideEye.js';
29
30
  import './chunks/useHelperTextId.js';
31
+ import './chunks/hasContent.js';
32
+ import '@mui/utils';
30
33
 
31
34
  var SuggestionList$1 = {"sui-suggestion-list-root":"sui-suggestion-list-root","sui-suggestion-list-item":"sui-suggestion-list-item","sui-suggestion-list-readonly":"sui-suggestion-list-readonly","sui-disabled":"sui-disabled","sui-focus-visible":"sui-focus-visible","sui-suggestion-list-selected":"sui-suggestion-list-selected","sui-suggestion-list-highlighted":"sui-suggestion-list-highlighted","sui-suggestion-list-group-title-readonly":"sui-suggestion-list-group-title-readonly","sui-suggestion-list-expand-icon":"sui-suggestion-list-expand-icon","sui-compact":"sui-compact"};
32
35
 
@@ -1090,6 +1093,7 @@ const useAutocomplete = ({ multiple: multipleProp, variant, inputValue: inputVal
1090
1093
  const keepHighlightedIndexRef = useRef(false);
1091
1094
  const popperElementRef = useRef(null);
1092
1095
  const { sleep, getSleeping } = useSleep();
1096
+ const { requestAnimationFrame } = useAnimationFrame();
1093
1097
  const multiple = isAutocomplete ? false : multipleProp;
1094
1098
  const inputContainerScrollToBottom = () => {
1095
1099
  requestAnimationFrame(() => {
@@ -1620,7 +1624,7 @@ const TextInput = forwardRef(({ renderInput, ...rest }, ref) => {
1620
1624
  const Autocomplete = forwardRef((inProps, ref) => {
1621
1625
  const props = useThemeProps({ props: inProps, name: 'Autocomplete' });
1622
1626
  const isAutocomplete = props.variant === 'autocomplete';
1623
- const { inputVariant = 'standard', variant, groupExpanded, onGroupExpanded, groupDefaultExpanded, groupVariant = 'normal', getExpandIconProps, groupBy, value: valueProp, autoHighlight = true, clearBtn = false, toggleButton = false, multiple = false, ClearButtonProps, onClear, ToggleButtonProps, getToggleButtonProps: getToggleButtonPropsProp, inputValue: inputValueProp, onKeyDown: onKeyDownProp, helperText: helperTextProp, options, openOnFocus = true, toggleWithInput = true, getOptionLabel = DEFAULT_GET_OPTION_LABEL, renderInput, label, inputRef: inputRefProp, error, placeholder, showPlaceholderWithTags, freeSolo, keyToTags = DEFAULT_KEY_TO_CHIPS, maxFreeSolo, SuggestionListProps: { virtualize = true, ...SuggestionListProps } = {}, autoSelect, PopperComponent = Popper, PopperProps: { anchorElType = 'root', ...PopperProps } = {}, initialIsOpen, disabled, required: requiredProp, disableCloseOnSelect = multiple, onChange: onChangeProp, onInputChange: onInputChangeProp, onMaxFreeSolo, FormHelperTextProps, action, filterOptions, renderOption, renderTags, getOptionDisabled, renderGroup, renderNoOptions, noOptionsText = 'No matches found', inputProps, debug, disabledItemsHighlightable, open: openProp, addNoOptionItem, onOpen, onClose, focused, classes, className, fullWidth = true, size = 'xlarge', isOptionEqualToValue, ...rest } = props;
1627
+ const { inputVariant = 'standard', variant, groupExpanded, onGroupExpanded, groupDefaultExpanded, groupVariant = 'normal', getExpandIconProps, groupBy, value: valueProp, autoHighlight = true, clearBtn = false, toggleButton = false, multiple = false, ClearButtonProps, onClear, ToggleButtonProps, getToggleButtonProps: getToggleButtonPropsProp, inputValue: inputValueProp, onKeyDown: onKeyDownProp, helperText: helperTextProp, options, openOnFocus = true, toggleWithInput = true, getOptionLabel = DEFAULT_GET_OPTION_LABEL, renderInput, label, inputRef: inputRefProp, error, placeholder, showPlaceholderWithTags, freeSolo, keyToTags = DEFAULT_KEY_TO_CHIPS, maxFreeSolo, SuggestionListProps: { virtualize = true, ...SuggestionListProps } = {}, autoSelect, PopperComponent = Popper, PopperProps: { anchorElType = 'root', children: _popperChildrenIgnored, ...PopperProps } = {}, initialIsOpen, disabled, required: requiredProp, disableCloseOnSelect = multiple, onChange: onChangeProp, onInputChange: onInputChangeProp, onMaxFreeSolo, FormHelperTextProps, action, filterOptions, renderOption, renderTags, getOptionDisabled, renderGroup, renderNoOptions, noOptionsText = 'No matches found', inputProps, debug, disabledItemsHighlightable, open: openProp, addNoOptionItem, onOpen, onClose, focused, classes, className, fullWidth = true, size = 'xlarge', isOptionEqualToValue, ...rest } = props;
1624
1628
  const cls = useClasses('autocomplete', classes, className);
1625
1629
  const innerInputRef = useRef(null);
1626
1630
  const textFieldRef = useRef(null);
@@ -1672,6 +1676,7 @@ const Autocomplete = forwardRef((inProps, ref) => {
1672
1676
  disabledItemsHighlightable,
1673
1677
  onGroupExpanded,
1674
1678
  isOptionEqualToValue,
1679
+ onClear,
1675
1680
  });
1676
1681
  const open = Boolean((isOpen || noOptionItem) && textFieldRef.current);
1677
1682
  const { onBlur, ...InputProps } = getInputProps(inputProps);
@@ -1700,7 +1705,7 @@ const Autocomplete = forwardRef((inProps, ref) => {
1700
1705
  return (jsx(Chip, { "aria-label": `${itemChipProps.label}, press Backspace to remove`, color: selectedItem.error ? 'error' : undefined, ...itemChipProps }, key));
1701
1706
  });
1702
1707
  })();
1703
- const endAdornment = (toggleButton || clearBtn) && (jsxs(Fragment, { children: [clearBtn && (selectedItems.length > 0 || inputValue) && (jsx(IconButton, { shape: 'squircle', background: false, color: 'secondary', variant: "contained", size: "small", className: cls('clear'), symbol: Xsm, ...getClearButtonProps(ClearButtonProps) })), toggleButton && (jsx(IconButton, { "aria-hidden": true, tabIndex: -1, shape: 'squircle', color: 'secondary', background: false, variant: "contained", size: "small", className: cls('chevron', error && 'error-chevron', open && `${inputVariant}-expanded-chevron`), children: jsx(ExpandCollapseCaret, { size: 'small', expanded: open }), ...getToggleButtonProps({
1708
+ const endAdornment = (toggleButton || clearBtn) && (jsxs(Fragment, { children: [clearBtn && (selectedItems.length > 0 || inputValue) && (jsx(IconButton, { shape: 'squircle', background: false, color: 'secondary', variant: "contained", size: "small", symbol: Xsm, ...getClearButtonProps(combineProps({ className: cls('clear') }, ClearButtonProps)) })), toggleButton && (jsx(IconButton, { "aria-hidden": true, tabIndex: -1, shape: 'squircle', color: 'secondary', background: false, variant: "contained", size: "small", className: cls('chevron', error && 'error-chevron', open && `${inputVariant}-expanded-chevron`), children: jsx(ExpandCollapseCaret, { size: 'small', expanded: open }), ...getToggleButtonProps({
1704
1709
  ...ToggleButtonProps,
1705
1710
  ...getToggleButtonPropsProp?.(open),
1706
1711
  }) }))] }));
package/BlockHeader.js CHANGED
@@ -2,6 +2,8 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useClasses } from '@ringcentral/spring-base';
4
4
  import { useThemeProps } from '@ringcentral/spring-theme';
5
+ import { h as hasContent } from './chunks/hasContent.js';
6
+ import '@mui/utils';
5
7
  import { D as Divider } from './chunks/Divider.js';
6
8
 
7
9
  var BlockHeader$1 = {"sui-block-header-root":"sui-block-header-root","sui-block-header-title":"sui-block-header-title","sui-block-header-end-slot":"sui-block-header-end-slot","sui-block-header-divider":"sui-block-header-divider"};
@@ -11,7 +13,7 @@ const BlockHeader = forwardRef((inProps, ref) => {
11
13
  const { component: BlockHeaderRoot = 'div', classes, className, children, endSlot, divider = false, ...rest } = props;
12
14
  const cls = useClasses('block-header', classes, className);
13
15
  const title = typeof children === 'string' ? children : undefined;
14
- return (jsxs(Fragment, { children: [jsxs(BlockHeaderRoot, { className: cls('root'), ...rest, ref: ref, children: [jsx("div", { title: title, className: cls('title'), children: children }), endSlot && jsx("div", { className: cls('end-slot'), children: endSlot })] }), divider && (jsx(Divider, { className: cls('divider'), orientation: "horizontal", flexItem: true }))] }));
16
+ return (jsxs(Fragment, { children: [jsxs(BlockHeaderRoot, { className: cls('root'), ...rest, ref: ref, children: [jsx("div", { title: title, className: cls('title'), children: children }), hasContent(endSlot) && (jsx("div", { className: cls('end-slot'), children: endSlot }))] }), divider && (jsx(Divider, { className: cls('divider'), orientation: "horizontal", flexItem: true }))] }));
15
17
  });
16
18
  BlockHeader.displayName = 'SuiBlockHeader';
17
19
 
package/DatePicker.js CHANGED
@@ -30,6 +30,8 @@ import './chunks/Squircle.js';
30
30
  import './chunks/Popover.js';
31
31
  import './chunks/getGrow.js';
32
32
  import './chunks/useHelperTextId.js';
33
+ import './chunks/hasContent.js';
34
+ import '@mui/utils';
33
35
  import './chunks/TextField.js';
34
36
  import './chunks/ShowHideEye.js';
35
37
  import './chunks/VisuallyHidden.js';
@@ -41,7 +43,7 @@ const HeaderAction = (props) => {
41
43
  const { className, disabled, ...rest } = props;
42
44
  const cls = useDatePickerClasses();
43
45
  const { focusVisible, focusVisibleRef, focusVisibleHandlers } = useFocusVisible();
44
- return (jsx("button", { className: clsx(className, cls('header-action', { focusVisible, disabled })), ref: focusVisibleRef, ...rest, ...focusVisibleHandlers }));
46
+ return (jsx("button", { className: clsx(className, cls('header-action', { focusVisible, disabled })), ref: focusVisibleRef, ...rest, ...focusVisibleHandlers, type: "button" }));
45
47
  };
46
48
 
47
49
  const defaultScreenReaderProps = {
@@ -172,7 +174,7 @@ const Day = forwardRef((props, ref) => {
172
174
  disabled,
173
175
  today: current,
174
176
  focused,
175
- }), ...rest, ...combineProps({ onBlur, onFocus }, focusVisibleHandlers), children: children }));
177
+ }), ...rest, ...combineProps({ onBlur, onFocus }, focusVisibleHandlers), type: "button", children: children }));
176
178
  });
177
179
  Day.displayName = 'SuiDay';
178
180
 
@@ -187,7 +189,7 @@ const Year = forwardRef((props, ref) => {
187
189
  selected,
188
190
  disabled,
189
191
  focusVisible,
190
- }), "data-sui-picker-year": value, "aria-label": getYearAriaLabel?.(value, selected), ...rest, ...combineProps({ onBlur, onFocus }, focusVisibleHandlers), children: children }));
192
+ }), "data-sui-picker-year": value, "aria-label": getYearAriaLabel?.(value, selected), ...rest, ...combineProps({ onBlur, onFocus }, focusVisibleHandlers), type: "button", children: children }));
191
193
  });
192
194
  Year.displayName = 'SuiYear';
193
195
 
package/Dialer.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { createContext, useContext, cloneElement, useRef, useEffect, forwardRef, useCallback, useImperativeHandle, useLayoutEffect, useMemo } from 'react';
2
- import { useLongPress, useForkRef, useWindowContext, useId, useClasses, useEventCallback, useAudio, logInDev, useOnlyOneFocusable, useKeyboardMoveFocus, globalStateClasses, getSelectionPosition, setSelectionPosition, useKeyDownOnce, useSleep, combineProps } from '@ringcentral/spring-base';
2
+ import { useLongPress, useForkRef, useWindowContext, useId, useClasses, useEventCallback, useAudio, logInDev, useOnlyOneFocusable, useKeyboardMoveFocus, globalStateClasses, combineProps, getSelectionPosition, setSelectionPosition, useKeyDownOnce, useSleep } from '@ringcentral/spring-base';
3
3
  import { useThemeProps } from '@ringcentral/spring-theme';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
+ import { c as composeEventHandlers } from './chunks/composeEventHandlers.js';
6
+ import '@mui/utils';
5
7
  import { V as VisuallyHidden } from './chunks/VisuallyHidden.js';
6
8
  import { I as IconButton } from './chunks/IconButtonLabel.js';
7
9
  import { DialButton1Lg, DialButton1Sm, DialButton2Lg, DialButton2Sm, DialButton3Lg, DialButton3Sm, DialButton4Lg, DialButton4Sm, DialButton5Lg, DialButton5Sm, DialButton6Lg, DialButton6Sm, DialButton7Lg, DialButton7Sm, DialButton8Lg, DialButton8Sm, DialButton9Lg, DialButton9Sm, AsteriskMd, DialButton0Lg, DialButton0Sm, HashMd } from '@ringcentral/spring-icon';
@@ -24,6 +26,7 @@ import './chunks/PopperPaper.js';
24
26
  import './chunks/ShowHideEye.js';
25
27
  import './chunks/useMotionSafeTransition.js';
26
28
  import './chunks/useHelperTextId.js';
29
+ import './chunks/hasContent.js';
27
30
 
28
31
  const DialerContext = createContext({});
29
32
  const useDialerContext = () => useContext(DialerContext);
@@ -42,7 +45,7 @@ const DialDelete = (inProps) => {
42
45
  onDeleteRef?.current?.(e, reason);
43
46
  };
44
47
  const { ref, ...events } = useLongPress({ onTap: handleDelete, onPress: handleClear }, children.props, { delay: holdTime, externalWindow: props.externalWindow });
45
- const forkEleRef = useForkRef(children.props.ref, ref);
48
+ const forkEleRef = useForkRef(children.ref, ref);
46
49
  return cloneElement(children, {
47
50
  ref: forkEleRef,
48
51
  ...events,
@@ -156,10 +159,13 @@ const useKeyAudio = ({ sounds, processor }) => {
156
159
  };
157
160
  };
158
161
 
162
+ const MOVE_FOCUSED_ATTR_KEY = 'data-move-focused';
163
+ const DIAL_BUTTON_ATTR_KEY = 'data-dial-button';
159
164
  const DialPad = forwardRef((inProps, ref) => {
160
165
  const props = useThemeProps({ props: inProps, name: 'DialPad' });
161
166
  const { size = 'large', sounds, autoSize, classes, onChange: onChangeProp, action, control, getDialPadButtonProps, sinkId, persistBgTime = 200, volume = 1, muted = false, longPressDelay = 1000, className, ...divProps } = props;
162
- const { externalWindow } = useWindowContext();
167
+ const { externalWindow, globalThis: contextGlobal } = useWindowContext();
168
+ const contextWindow = externalWindow ?? contextGlobal;
163
169
  const cls = useClasses('dial-pad', classes, className);
164
170
  const containerRef = useRef(null);
165
171
  const hiddenRef = useRef(null);
@@ -171,7 +177,6 @@ const DialPad = forwardRef((inProps, ref) => {
171
177
  focusedIndexRef,
172
178
  containerRef,
173
179
  });
174
- const dialButtonKey = `${moveFocusedId}-dial-button`;
175
180
  const { onKeyFocusedIndexHandle } = useKeyboardMoveFocus({
176
181
  options: DIALER_PAD_ICONS,
177
182
  focusedIndexRef,
@@ -184,12 +189,13 @@ const DialPad = forwardRef((inProps, ref) => {
184
189
  },
185
190
  });
186
191
  const audioProcessor = useCallback((audio) => {
192
+ const audioWithSinkId = audio;
187
193
  if (typeof volume !== 'undefined')
188
194
  audio.volume = volume;
189
195
  if (typeof muted !== 'undefined')
190
196
  audio.muted = muted;
191
- if (typeof audio['setSinkId'] === 'function')
192
- audio['setSinkId'](sinkId || '');
197
+ if (typeof audioWithSinkId.setSinkId === 'function')
198
+ void audioWithSinkId.setSinkId(sinkId || '');
193
199
  }, [muted, sinkId, volume]);
194
200
  const play = useKeyAudio({
195
201
  sounds,
@@ -197,13 +203,13 @@ const DialPad = forwardRef((inProps, ref) => {
197
203
  });
198
204
  const playAudio = useEventCallback((value) => {
199
205
  const key = value === DIALER_PAD_PLUS ? '0' : value;
200
- const keyButtonElm = containerRef.current?.querySelector(`[${dialButtonKey}="${key}"]`);
206
+ const keyButtonElm = containerRef.current?.querySelector(`[${MOVE_FOCUSED_ATTR_KEY}="${moveFocusedId}"][${DIAL_BUTTON_ATTR_KEY}="${key}"]`);
201
207
  if (keyButtonElm) {
202
208
  const oldTimer = keyTimerMapRef.current[key];
203
209
  if (oldTimer)
204
- clearTimeout(oldTimer);
210
+ contextWindow.clearTimeout(oldTimer);
205
211
  keyButtonElm.classList.add(globalStateClasses.active);
206
- keyTimerMapRef.current[key] = window.setTimeout(() => {
212
+ keyTimerMapRef.current[key] = contextWindow.setTimeout(() => {
207
213
  keyButtonElm.classList.remove(globalStateClasses.active);
208
214
  delete keyTimerMapRef.current[key];
209
215
  }, persistBgTime);
@@ -220,9 +226,10 @@ const DialPad = forwardRef((inProps, ref) => {
220
226
  handleChange(value, 'customKeyboard');
221
227
  const toIndex = ACCEPTABLE_KEYS.findIndex((x) => x === value);
222
228
  focusedIndexRef.current = toIndex;
223
- if (externalWindow &&
224
- externalWindow.document.activeElement?.getAttribute(dialButtonKey) !==
225
- null) {
229
+ const activeElement = externalWindow?.document.activeElement;
230
+ if (activeElement?.getAttribute(MOVE_FOCUSED_ATTR_KEY) ===
231
+ moveFocusedId &&
232
+ activeElement.getAttribute(DIAL_BUTTON_ATTR_KEY) !== null) {
226
233
  hiddenRef.current?.focus();
227
234
  }
228
235
  }
@@ -237,9 +244,9 @@ const DialPad = forwardRef((inProps, ref) => {
237
244
  ]);
238
245
  useEffect(() => () => {
239
246
  for (const timer of Object.values(keyTimerMapRef.current)) {
240
- clearTimeout(timer);
247
+ contextWindow.clearTimeout(timer);
241
248
  }
242
- }, []);
249
+ }, [contextWindow]);
243
250
  return (jsxs("div", { ref: forkRef, className: cls('root', { 'auto-size': autoSize }), ...divProps, children: [jsx(VisuallyHidden, { ref: hiddenRef, tabIndex: -1 }), DIALER_PAD_ICONS.map(([lgIcon, smIcon, key, additionLabel], index) => {
244
251
  const ariaLabelArr = additionLabel
245
252
  ? [key, additionLabel]
@@ -248,12 +255,18 @@ const DialPad = forwardRef((inProps, ref) => {
248
255
  ? 'medium'
249
256
  : 'large';
250
257
  const icon = size === 'large' ? lgIcon : smIcon;
251
- return (jsx(DialPadButton, { classes: classes, symbol: icon, value: key, onKeyEffect: handleKeyEffect, ...getItemProps(index), "aria-label": ariaLabelArr.join(', '), onKeyDown: onKeyFocusedIndexHandle, [dialButtonKey]: key, ...getDialPadButtonProps?.(key), ...(key === '0'
252
- ? {
253
- longPressValue: DIALER_PAD_PLUS,
254
- longPressDelay,
255
- }
256
- : {}), size: size === 'large' ? 'xxxlarge' : 'xxlarge', iconSize: iconSize }, key));
258
+ const itemProps = getItemProps(index);
259
+ const { onKeyDown: customOnKeyDown, ...customButtonProps } = getDialPadButtonProps?.(key) ?? {};
260
+ return (jsx(DialPadButton, { classes: classes, symbol: icon, value: key, onKeyEffect: handleKeyEffect, ...combineProps(itemProps, {
261
+ 'aria-label': ariaLabelArr.join(', '),
262
+ ...customButtonProps,
263
+ ...(key === '0'
264
+ ? {
265
+ longPressValue: DIALER_PAD_PLUS,
266
+ longPressDelay,
267
+ }
268
+ : {}),
269
+ }), [DIAL_BUTTON_ATTR_KEY]: key, onKeyDown: composeEventHandlers(customOnKeyDown, onKeyFocusedIndexHandle), tabIndex: itemProps.tabIndex, size: size === 'large' ? 'xxxlarge' : 'xxlarge', iconSize: iconSize }, key));
257
270
  })] }));
258
271
  });
259
272
  DialPad.displayName = 'SuiDialPad';
@@ -342,7 +355,9 @@ const DialTextField = forwardRef((inProps, ref) => {
342
355
  const forkInputRef = useForkRef(inputRefProp, forkContextRef);
343
356
  const scrollToPositionRef = useRef();
344
357
  const isNotTriggerRefocusRef = useRef(false);
345
- const maxLength = keypadMode ? undefined : inputPropsProp?.maxLength || 30;
358
+ const maxLength = keypadMode
359
+ ? undefined
360
+ : (inputPropsProp?.maxLength ?? 30);
346
361
  const checkNotReFocus = useEventCallback((reason, isFocus) => {
347
362
  const elm = inputRef.current;
348
363
  const isInputFocus = isFocus ?? externalWindow.document.activeElement === elm;
package/Dialog.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { motion } from 'framer-motion';
4
+ import clsx from 'clsx';
4
5
  import kebabCase from 'lodash/kebabCase';
5
- import { useEventCallback, combineProps, useClasses } from '@ringcentral/spring-base';
6
+ import { useEventCallback, useForkRef, combineProps, useClasses } from '@ringcentral/spring-base';
6
7
  import { Xsm } from '@ringcentral/spring-icon';
7
8
  import { useThemeProps, useClassesWithMode, motionTransition } from '@ringcentral/spring-theme';
8
9
  import './chunks/Icon.js';
@@ -14,7 +15,6 @@ import '@mui/base';
14
15
  import './chunks/Squircle.js';
15
16
  import './chunks/withTooltip.js';
16
17
  import './chunks/Tooltip.js';
17
- import 'clsx';
18
18
  import './chunks/getFade.js';
19
19
  import './Popper.js';
20
20
  import '@floating-ui/react-dom';
@@ -45,7 +45,8 @@ const Dialog = forwardRef((inProps, ref) => {
45
45
  const handleCloseButtonClick = useEventCallback((e) => {
46
46
  onClose?.(e, 'closeButtonClick');
47
47
  });
48
- return (jsx(Modal, { open: open, onClose: onClose, blocking: blocking, className: cls('root', { 'non-blocking': !blocking }), ...rest, children: jsxs(motion.div, { role: "dialog", "aria-modal": blocking, ...(isFullHeight && slideInProps), ...bodyProps, ref: ref, tabIndex: blocking ? -1 : undefined, className: cls('body', toSize, isFullHeight && placement), children: [children, closeButtonClassName && (jsx(IconButton, { size: 'large', color: 'secondary', symbol: Xsm, variant: "contained", ...combineProps({
48
+ const handleBodyRef = useForkRef(ref, bodyProps?.ref);
49
+ return (jsx(Modal, { open: open, onClose: onClose, blocking: blocking, className: cls('root', { 'non-blocking': !blocking }), ...rest, children: jsxs(motion.div, { role: "dialog", "aria-modal": blocking, ...(isFullHeight && slideInProps), ...bodyProps, ref: handleBodyRef, tabIndex: bodyProps?.tabIndex ?? (blocking ? -1 : undefined), className: clsx(cls('body', toSize, isFullHeight && placement), bodyProps?.className), children: [children, closeButtonClassName && (jsx(IconButton, { size: 'large', color: 'secondary', symbol: Xsm, variant: "contained", ...combineProps({
49
50
  className: closeButtonClassName,
50
51
  onClick: handleCloseButtonClick,
51
52
  'aria-label': 'Close',
package/Dropdown.js CHANGED
@@ -7,6 +7,7 @@ import 'framer-motion';
7
7
  import './chunks/Icon.js';
8
8
  import { M as Menu } from './chunks/Menu.js';
9
9
  import { c as useMenuItemSelect, a as MenuItemSelectContext } from './chunks/useMenuItemSelect.js';
10
+ import '@mui/utils';
10
11
  import 'tabbable';
11
12
  import './chunks/useListNavigation.js';
12
13
  import './VirtualizedList.js';
@@ -27,7 +28,9 @@ import './chunks/Backdrop.js';
27
28
  import './Popper.js';
28
29
  import './chunks/PopperPaper.js';
29
30
  import '@ringcentral/spring-icon';
31
+ import './chunks/useAnimationFrame.js';
30
32
  import './chunks/useNestedMenuItem.js';
33
+ import './chunks/composeEventHandlers.js';
31
34
  import './ListNavigation.js';
32
35
  import 'react-virtuoso';
33
36
  import './chunks/List.js';
@@ -37,7 +40,7 @@ var Dropdown$1 = {"sui-dropdown-value":"sui-dropdown-value","sui-dropdown-chevro
37
40
 
38
41
  const Dropdown = forwardRef((inProps, ref) => {
39
42
  const props = useThemeProps({ props: inProps, name: 'Dropdown' });
40
- const { classes, className, children, defaultOpen, open: openProp, onOpenChange, disabled, virtualize = true, MenuProps, rootProps, buttonProps: buttonPropsProp = {}, value: valueProp, defaultValue = null, onChange: onChangeProp, renderValue = String, placeholder, label, buttonRef, getSelectedIndex = (value) => {
43
+ const { classes, className, children, defaultOpen, open: openProp, onOpenChange, autoFocus = false, disabled, virtualize = true, MenuProps, rootProps, buttonProps: buttonPropsProp = {}, value: valueProp, defaultValue = null, onChange: onChangeProp, renderValue = String, placeholder, label, buttonRef, getSelectedIndex = (value) => {
41
44
  return data.findIndex((v) => v === value);
42
45
  }, data, } = props;
43
46
  const [anchorEl, setAnchorEl] = useState(null);
@@ -79,13 +82,14 @@ const Dropdown = forwardRef((inProps, ref) => {
79
82
  });
80
83
  const buttonProps = combineProps({
81
84
  onClick: () => {
82
- if (!open)
85
+ if (!disabled && !open)
83
86
  handleOpen(true);
84
87
  },
85
88
  onKeyDown: (e) => {
86
89
  if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
87
90
  e.preventDefault();
88
- handleOpen(true);
91
+ if (!disabled)
92
+ handleOpen(true);
89
93
  }
90
94
  },
91
95
  }, buttonPropsProp);
@@ -118,7 +122,7 @@ const Dropdown = forwardRef((inProps, ref) => {
118
122
  }), ref: ref, children: [label && (jsxs(Fragment, { children: [jsx("span", { className: cls('label'), children: label }), jsx("span", { className: cls('colon'), children: ":" })] })), jsxs("button", { className: cls('button', {
119
123
  activated: open,
120
124
  focusVisible,
121
- }), ...buttonProps, ...focusVisibleHandlers, ref: handleButtonRef, children: [jsx("span", { className: cls('value'), children: value === null ? placeholder : renderValue(value) }), jsx(Squircle, { className: cls('chevron'), interactive: false, ref: chevronRef, children: jsx(ExpandCollapseCaret, { size: 'small', expanded: open }) })] })] }), anchorEl && menu] }));
125
+ }), ...buttonProps, ...focusVisibleHandlers, type: "button", autoFocus: autoFocus && !disabled, disabled: disabled, ref: handleButtonRef, children: [jsx("span", { className: cls('value'), children: value === null ? placeholder : renderValue(value) }), jsx(Squircle, { className: cls('chevron'), interactive: false, ref: chevronRef, children: jsx(ExpandCollapseCaret, { size: 'small', expanded: open }) })] })] }), anchorEl && menu] }));
122
126
  });
123
127
  Dropdown.displayName = 'SuiDropdown';
124
128
 
package/EmptyState.js CHANGED
@@ -2,6 +2,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useClasses, getTitle } from '@ringcentral/spring-base';
4
4
  import { useThemeProps } from '@ringcentral/spring-theme';
5
+ import { h as hasContent } from './chunks/hasContent.js';
6
+ import '@mui/utils';
5
7
  import { I as Icon } from './chunks/Icon.js';
6
8
 
7
9
  var EmptyState$1 = {"sui-empty-state-root":"sui-empty-state-root","sui-empty-state-icon":"sui-empty-state-icon","sui-empty-state-text-container":"sui-empty-state-text-container","sui-empty-state-title":"sui-empty-state-title","sui-empty-state-description":"sui-empty-state-description","sui-empty-state-actions":"sui-empty-state-actions"};
@@ -10,7 +12,7 @@ const EmptyState = forwardRef((inProps, ref) => {
10
12
  const props = useThemeProps({ props: inProps, name: 'EmptyState' });
11
13
  const { classes, className, title, description, icon, actions, ...rest } = props;
12
14
  const cls = useClasses('empty-state', classes, className);
13
- return (jsxs("div", { ...rest, className: cls('root'), children: [icon && (jsx("div", { className: cls('icon'), children: jsx(Icon, { size: "xxxlarge", symbol: icon }) })), (title || description) && (jsxs("div", { className: cls('text-container'), children: [title && (jsx("span", { className: cls('title'), title: getTitle(title), children: title })), description && (jsx("span", { className: cls('description'), title: getTitle(description), children: description }))] })), actions && actions.length > 0 && (jsx("div", { className: cls('actions'), children: actions }))] }));
15
+ return (jsxs("div", { ...rest, ref: ref, className: cls('root'), children: [icon && (jsx("div", { className: cls('icon'), children: jsx(Icon, { size: "xxxlarge", symbol: icon }) })), (hasContent(title) || hasContent(description)) && (jsxs("div", { className: cls('text-container'), children: [hasContent(title) && (jsx("span", { className: cls('title'), title: getTitle(title), children: title })), hasContent(description) && (jsx("span", { className: cls('description'), title: getTitle(description), children: description }))] })), actions && actions.length > 0 && (jsx("div", { className: cls('actions'), children: actions }))] }));
14
16
  });
15
17
  EmptyState.displayName = 'SuiEmptyState';
16
18
 
package/FormField.js CHANGED
@@ -4,6 +4,8 @@ import 'react';
4
4
  import 'clsx';
5
5
  import '@ringcentral/spring-base';
6
6
  import '@ringcentral/spring-theme';
7
+ import './chunks/hasContent.js';
8
+ import '@mui/utils';
7
9
 
8
10
  var FormField = {"sui-form-field-label":"sui-form-field-label","sui-form-field-helper-text":"sui-form-field-helper-text","sui-form-field-content":"sui-form-field-content","sui-form-field-container":"sui-form-field-container","sui-form-field-focus-effect":"sui-form-field-focus-effect","sui-form-field-outlined":"sui-form-field-outlined","sui-form-field-contained":"sui-form-field-contained","sui-form-field-outlined-label":"sui-form-field-outlined-label","sui-form-field-contained-label":"sui-form-field-contained-label","sui-form-field-outlined-xlarge":"sui-form-field-outlined-xlarge","sui-form-field-contained-xlarge":"sui-form-field-contained-xlarge","sui-form-field-outlined-large":"sui-form-field-outlined-large","sui-form-field-contained-large":"sui-form-field-contained-large","sui-form-field-outlined-medium":"sui-form-field-outlined-medium","sui-form-field-contained-medium":"sui-form-field-contained-medium","sui-form-field-outlined-content":"sui-form-field-outlined-content","sui-form-field-contained-content":"sui-form-field-contained-content","sui-disabled":"sui-disabled","sui-focused":"sui-focused","sui-form-field-standard-content":"sui-form-field-standard-content","sui-form-field-standard-focus-effect":"sui-form-field-standard-focus-effect","sui-form-field-standard":"sui-form-field-standard","sui-form-field-quiet-content":"sui-form-field-quiet-content","sui-form-field-xlarge-content":"sui-form-field-xlarge-content","sui-form-field-large-content":"sui-form-field-large-content","sui-form-field-medium-content":"sui-form-field-medium-content","sui-form-field-error-helper-text":"sui-form-field-error-helper-text","sui-form-field-error-label":"sui-form-field-error-label","sui-form-field-error-focus-effect":"sui-form-field-error-focus-effect","sui-form-field-error-content":"sui-form-field-error-content","sui-form-field-error-standard-content":"sui-form-field-error-standard-content","sui-form-field-error-contained-content":"sui-form-field-error-contained-content","sui-form-field":"sui-form-field"};
9
11
 
package/ListItem.js CHANGED
@@ -9,6 +9,7 @@ import './chunks/useListNavigation.js';
9
9
  import 'tabbable';
10
10
  import './VirtualizedList.js';
11
11
  import 'react-virtuoso';
12
+ import './chunks/useAnimationFrame.js';
12
13
  import './chunks/List.js';
13
14
  import 'framer-motion';
14
15
  import './chunks/Icon.js';
package/ListItemText.js CHANGED
@@ -2,6 +2,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useClasses } from '@ringcentral/spring-base';
4
4
  import { useThemeProps } from '@ringcentral/spring-theme';
5
+ import { h as hasContent } from './chunks/hasContent.js';
6
+ import '@mui/utils';
5
7
 
6
8
  var ListItemText$1 = {"sui-list-item-text-root":"sui-list-item-text-root","sui-list-item-text-primary-text":"sui-list-item-text-primary-text","sui-list-item-text-secondary-text":"sui-list-item-text-secondary-text","sui-list-item-text-primary":"sui-list-item-text-primary","sui-list-item-text-primary-primary-text":"sui-list-item-text-primary-primary-text","sui-list-item-text-secondary":"sui-list-item-text-secondary","sui-list-item-text-secondary-primary-text":"sui-list-item-text-secondary-primary-text"};
7
9
 
@@ -9,9 +11,13 @@ const ListItemText = forwardRef((inProps, ref) => {
9
11
  const props = useThemeProps({ props: inProps, name: 'ListItemText' });
10
12
  const { classes, className, primary, secondary, primaryText, secondaryText, variant = 'primary', children, ...rest } = props;
11
13
  const cls = useClasses('list-item-text', classes, className);
12
- const primaryContent = primary || primaryText || children;
13
- const secondaryContent = secondary || secondaryText;
14
- return (jsxs("div", { className: cls('root', variant), ...rest, ref: ref, children: [jsx("span", { className: cls('primary-text', `${variant}-primary-text`), children: primaryContent }), secondaryContent && (jsx("span", { className: cls('secondary-text', `${variant}-secondary-text`), children: secondaryContent }))] }));
14
+ const primaryContent = hasContent(primary)
15
+ ? primary
16
+ : hasContent(primaryText)
17
+ ? primaryText
18
+ : children;
19
+ const secondaryContent = hasContent(secondary) ? secondary : secondaryText;
20
+ return (jsxs("div", { className: cls('root', variant), ...rest, ref: ref, children: [jsx("span", { className: cls('primary-text', `${variant}-primary-text`), children: primaryContent }), hasContent(secondaryContent) && (jsx("span", { className: cls('secondary-text', `${variant}-secondary-text`), children: secondaryContent }))] }));
15
21
  });
16
22
  ListItemText.displayName = 'SuiListItemText';
17
23
 
package/MenuHeader.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useThemeProps, useClassesWithMode } from '@ringcentral/spring-theme';
4
+ import { h as hasContent } from './chunks/hasContent.js';
5
+ import '@mui/utils';
4
6
  import { M as MenuDivider } from './chunks/MenuDivider.js';
5
7
  import './chunks/Divider.js';
6
8
  import '@ringcentral/spring-base';
@@ -11,7 +13,9 @@ const MenuHeader = forwardRef((inProps, ref) => {
11
13
  const props = useThemeProps({ props: inProps, name: 'MenuHeader' });
12
14
  const { classes, className, children, start, end, divider = true, ...rest } = props;
13
15
  const cls = useClassesWithMode('menu-header', classes, className);
14
- return (jsxs(Fragment, { children: [jsxs("div", { className: cls('root'), ...rest, ref: ref, children: [start && jsx("div", { className: cls('start'), children: start }), end && jsx("div", { className: cls('end'), children: end }), typeof children === 'string' ? (jsx("span", { className: cls('title'), title: children, children: children })) : (children)] }), divider && jsx(MenuDivider, {})] }));
16
+ const hasStart = hasContent(start);
17
+ const hasEnd = hasContent(end);
18
+ return (jsxs(Fragment, { children: [jsxs("div", { className: cls('root'), ...rest, ref: ref, children: [hasStart && jsx("div", { className: cls('start'), children: start }), hasEnd && jsx("div", { className: cls('end'), children: end }), typeof children === 'string' ? (jsx("span", { className: cls('title'), title: children, children: children })) : (children)] }), divider && jsx(MenuDivider, {})] }));
15
19
  });
16
20
  MenuHeader.displayName = 'SuiMenuHeader';
17
21
 
package/MenuItem.js CHANGED
@@ -5,6 +5,7 @@ import '@ringcentral/spring-base';
5
5
  import '@ringcentral/spring-icon';
6
6
  import '@ringcentral/spring-theme';
7
7
  import './chunks/Icon.js';
8
+ import './chunks/useAnimationFrame.js';
8
9
  import './chunks/useNestedParentMenu.js';
9
10
  import './chunks/useNestedMenuItem.js';
10
11
  import './VirtualizedList.js';
@@ -12,6 +13,8 @@ import 'react-virtuoso';
12
13
  import './chunks/List.js';
13
14
  import './chunks/useListNavigation.js';
14
15
  import 'tabbable';
16
+ import './chunks/composeEventHandlers.js';
17
+ import '@mui/utils';
15
18
  import './ListNavigation.js';
16
19
  import './chunks/Menu.js';
17
20
  import './chunks/Popover.js';
package/MenuItemText.js CHANGED
@@ -3,6 +3,8 @@ import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '@ringcentral/spring-base';
5
5
  import '@ringcentral/spring-theme';
6
+ import './chunks/hasContent.js';
7
+ import '@mui/utils';
6
8
 
7
9
  var MenuItemText = {"sui-menu-item-text-root":"sui-menu-item-text-root","sui-menu-item-text-primary-text":"sui-menu-item-text-primary-text","sui-menu-item-text-info-text":"sui-menu-item-text-info-text","sui-compact":"sui-compact"};
8
10
 
package/MenuList.js CHANGED
@@ -22,10 +22,13 @@ import './chunks/useFocusTrapStack.js';
22
22
  import './chunks/Backdrop.js';
23
23
  import './Popper.js';
24
24
  import './chunks/PopperPaper.js';
25
+ import '@mui/utils';
25
26
  import './VirtualizedList.js';
26
27
  import 'react-virtuoso';
28
+ import './chunks/useAnimationFrame.js';
27
29
  import '@ringcentral/spring-icon';
28
30
  import './chunks/useNestedMenuItem.js';
31
+ import './chunks/composeEventHandlers.js';
29
32
  import './ListNavigation.js';
30
33
 
31
34
  var MenuList = {"sui-menu-list-root":"sui-menu-list-root"};
package/Option.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useThemeProps } from '@ringcentral/spring-theme';
4
- import { u as useMenuItemSelectContext, M as MenuItem, g as composeEventHandlers } from './chunks/useMenuItemSelect.js';
4
+ import { c as composeEventHandlers } from './chunks/composeEventHandlers.js';
5
+ import '@mui/utils';
6
+ import { u as useMenuItemSelectContext, M as MenuItem } from './chunks/useMenuItemSelect.js';
5
7
  import '@ringcentral/spring-base';
6
8
  import 'tabbable';
7
9
  import './chunks/useListNavigation.js';
@@ -9,6 +11,7 @@ import './chunks/Menu.js';
9
11
  import './VirtualizedList.js';
10
12
  import '@ringcentral/spring-icon';
11
13
  import './chunks/Icon.js';
14
+ import './chunks/useAnimationFrame.js';
12
15
  import './chunks/useNestedParentMenu.js';
13
16
  import './chunks/useNestedMenuItem.js';
14
17
  import './ListNavigation.js';
@@ -18,6 +18,8 @@ import './Popper.js';
18
18
  import './chunks/PopperPaper.js';
19
19
  import './chunks/useHelperTextId.js';
20
20
  import 'clsx';
21
+ import './chunks/hasContent.js';
22
+ import '@mui/utils';
21
23
  import './chunks/TextField.js';
22
24
  import '@ringcentral/spring-icon';
23
25
  import './chunks/ShowHideEye.js';