@szhsin/react-menu
Advanced tools
@@ -5,3 +5,3 @@ import { forwardRef, useRef, useMemo } from 'react'; | ||
import { jsx } from 'react/jsx-runtime'; | ||
import { Keys, CloseReason, SettingsContext, EventHandlersContext } from '../utils/constants.js'; | ||
import { SettingsContext, EventHandlersContext, CloseReason, Keys } from '../utils/constants.js'; | ||
import { safeCall } from '../utils/utils.js'; | ||
@@ -8,0 +8,0 @@ |
import { useRef, useContext, useMemo } from 'react'; | ||
import { jsx } from 'react/jsx-runtime'; | ||
import { useItemState } from '../hooks/useItemState.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { useCombinedRef } from '../hooks/useCombinedRef.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { withHovering } from '../utils/withHovering.js'; | ||
@@ -7,0 +7,0 @@ import { EventHandlersContext, roleMenuitem, menuClass, menuItemClass } from '../utils/constants.js'; |
@@ -7,3 +7,3 @@ import { forwardRef, useRef, useCallback, useImperativeHandle, Fragment, cloneElement, version } from 'react'; | ||
import { useCombinedRef } from '../hooks/useCombinedRef.js'; | ||
import { safeCall, mergeProps, getName, isMenuOpen } from '../utils/utils.js'; | ||
import { safeCall, mergeProps, isMenuOpen, getName } from '../utils/utils.js'; | ||
import { FocusPositions, Keys } from '../utils/constants.js'; | ||
@@ -10,0 +10,0 @@ |
import { useMemo } from 'react'; | ||
import { jsx } from 'react/jsx-runtime'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { mergeProps, getTransition, safeCall } from '../utils/utils.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { menuContainerClass, Keys, CloseReason } from '../utils/constants.js'; | ||
import { menuContainerClass, CloseReason, Keys } from '../utils/constants.js'; | ||
@@ -7,0 +7,0 @@ const MenuContainer = ({ |
@@ -5,4 +5,4 @@ import { forwardRef, useRef, useState, useContext } from 'react'; | ||
import { getNormalizedClientRect } from '../positionUtils/getNormalizedClientRect.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { useCombinedRef } from '../hooks/useCombinedRef.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { MenuListContext, menuClass, menuGroupClass } from '../utils/constants.js'; | ||
@@ -9,0 +9,0 @@ |
import { useContext, useMemo } from 'react'; | ||
import { jsx } from 'react/jsx-runtime'; | ||
import { useItemState } from '../hooks/useItemState.js'; | ||
import { EventHandlersContext, RadioGroupContext, roleMenuitem, menuClass, menuItemClass, roleNone, Keys } from '../utils/constants.js'; | ||
import { EventHandlersContext, RadioGroupContext, menuClass, menuItemClass, roleNone, roleMenuitem, Keys } from '../utils/constants.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { useCombinedRef } from '../hooks/useCombinedRef.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { withHovering } from '../utils/withHovering.js'; | ||
import { mergeProps, commonProps, safeCall } from '../utils/utils.js'; | ||
import { mergeProps, safeCall, commonProps } from '../utils/utils.js'; | ||
@@ -10,0 +10,0 @@ const MenuItem = /*#__PURE__*/withHovering('MenuItem', function MenuItem({ |
@@ -6,5 +6,5 @@ import { useState, useReducer, useContext, useRef, useCallback, useEffect, useMemo } from 'react'; | ||
import { createSubmenuCtx } from '../utils/submenuCtx.js'; | ||
import { SettingsContext, MenuListContext, HoverActionTypes, noScrollFocus, menuClass, menuArrowClass, positionAbsolute, MenuListItemContext, HoverItemContext, Keys, CloseReason, FocusPositions } from '../utils/constants.js'; | ||
import { SettingsContext, MenuListContext, HoverActionTypes, noScrollFocus, menuClass, menuArrowClass, positionAbsolute, MenuListItemContext, HoverItemContext, CloseReason, FocusPositions, Keys } from '../utils/constants.js'; | ||
import { useItems } from '../hooks/useItems.js'; | ||
import { getScrollAncestor, commonProps, mergeProps, safeCall, isMenuOpen, getTransition, batchedUpdates } from '../utils/utils.js'; | ||
import { getScrollAncestor, isMenuOpen, batchedUpdates, getTransition, mergeProps, commonProps, safeCall } from '../utils/utils.js'; | ||
import { getPositionHelpers } from '../positionUtils/getPositionHelpers.js'; | ||
@@ -11,0 +11,0 @@ import { positionMenu } from '../positionUtils/positionMenu.js'; |
@@ -8,6 +8,6 @@ import { useContext, useRef, useState, useEffect, useImperativeHandle, useMemo } from 'react'; | ||
import { useItemEffect } from '../hooks/useItemEffect.js'; | ||
import { SettingsContext, MenuListContext, MenuListItemContext, roleNone, roleMenuitem, menuClass, menuItemClass, subMenuClass, HoverActionTypes, Keys, FocusPositions } from '../utils/constants.js'; | ||
import { useBEM } from '../hooks/useBEM.js'; | ||
import { SettingsContext, MenuListContext, MenuListItemContext, menuClass, subMenuClass, roleNone, roleMenuitem, menuItemClass, HoverActionTypes, Keys, FocusPositions } from '../utils/constants.js'; | ||
import { useCombinedRef } from '../hooks/useCombinedRef.js'; | ||
import { mergeProps, commonProps, safeCall, isMenuOpen, batchedUpdates } from '../utils/utils.js'; | ||
import { isMenuOpen, mergeProps, commonProps, safeCall, batchedUpdates } from '../utils/utils.js'; | ||
@@ -119,3 +119,6 @@ const SubMenu = /*#__PURE__*/withHovering('SubMenu', function SubMenu({ | ||
useEffect(() => submenuCtx.toggle(isOpen), [submenuCtx, isOpen]); | ||
useEffect(() => () => clearTimeout(timerId.v), [timerId]); | ||
useEffect(() => () => { | ||
clearTimeout(timerId.v); | ||
submenuCtx.toggle(false); | ||
}, [timerId, submenuCtx]); | ||
useEffect(() => { | ||
@@ -122,0 +125,0 @@ if (isHovering && isParentOpen) { |
import { useCallback } from 'react'; | ||
import { useTransitionState } from 'react-transition-state'; | ||
import { getTransition } from '../utils/utils.js'; | ||
import { MenuStateMap } from '../utils/constants.js'; | ||
import { getTransition } from '../utils/utils.js'; | ||
@@ -6,0 +6,0 @@ const useMenuState = ({ |
@@ -1,2 +0,2 @@ | ||
import { forwardRef, useRef, useContext, memo } from 'react'; | ||
import { forwardRef, useRef, memo, useContext } from 'react'; | ||
import { HoverItemContext } from './constants.js'; | ||
@@ -3,0 +3,0 @@ import { jsx } from 'react/jsx-runtime'; |
@@ -1472,3 +1472,6 @@ 'use strict'; | ||
react.useEffect(() => submenuCtx.toggle(isOpen), [submenuCtx, isOpen]); | ||
react.useEffect(() => () => clearTimeout(timerId.v), [timerId]); | ||
react.useEffect(() => () => { | ||
clearTimeout(timerId.v); | ||
submenuCtx.toggle(false); | ||
}, [timerId, submenuCtx]); | ||
react.useEffect(() => { | ||
@@ -1475,0 +1478,0 @@ if (isHovering && isParentOpen) { |
{ | ||
"name": "@szhsin/react-menu", | ||
"version": "4.3.0", | ||
"version": "4.3.1", | ||
"description": "React component for building accessible menu, dropdown, submenu, context menu and more.", | ||
@@ -48,4 +48,4 @@ "author": "Zheng Song", | ||
"devDependencies": { | ||
"@babel/core": "^7.26.0", | ||
"@babel/preset-env": "^7.26.0", | ||
"@babel/core": "^7.26.9", | ||
"@babel/preset-env": "^7.26.9", | ||
"@babel/preset-react": "^7.26.3", | ||
@@ -55,10 +55,10 @@ "@rollup/plugin-babel": "^6.0.4", | ||
"@testing-library/jest-dom": "^6.6.3", | ||
"@testing-library/react": "^16.1.0", | ||
"@testing-library/react": "^16.2.0", | ||
"@types/jest": "^29.5.14", | ||
"@types/react": "^19.0.4", | ||
"@types/react-dom": "^19.0.2", | ||
"@types/react": "^19.0.8", | ||
"@types/react-dom": "^19.0.4", | ||
"babel-plugin-pure-annotations": "^0.1.2", | ||
"eslint": "^9.17.0", | ||
"eslint-config-prettier": "^9.1.0", | ||
"eslint-plugin-jest": "^28.10.0", | ||
"eslint": "^9.21.0", | ||
"eslint-config-prettier": "^10.0.2", | ||
"eslint-plugin-jest": "^28.11.0", | ||
"eslint-plugin-react": "^7.37.4", | ||
@@ -75,4 +75,4 @@ "eslint-plugin-react-hooks": "^5.1.0", | ||
"react-dom": "^19", | ||
"rollup": "^4.30.1", | ||
"sass": "^1.83.1", | ||
"rollup": "^4.34.8", | ||
"sass": "^1.85.1", | ||
"typescript": "^5.7.3" | ||
@@ -79,0 +79,0 @@ }, |
153270
0.07%4967
0.12%