Skip to content

Commit 9116de0

Browse files
committed
feat: support menu scroll into view
1 parent 9fea4cc commit 9116de0

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

packages/crd-seed/component/Menu/MenuItem.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useEffect, useRef } from 'react'
12
import cx from 'classnames'
23
import { getMenuStyle } from './util'
34
import { useMenuContext } from './context'
@@ -10,6 +11,17 @@ function MenuItem({
1011
level = 0,
1112
}) {
1213
const { theme, selectedKey, onSelect, onHoverKey } = useMenuContext()
14+
const menuItemRef = useRef(null)
15+
const menuItemselected = keyValue.indexOf(selectedKey) > -1
16+
17+
useEffect(() => {
18+
if (menuItemselected) {
19+
menuItemRef.scrollIntoView({
20+
block: 'center',
21+
behavior: 'smooth'
22+
})
23+
}
24+
}, [])
1325

1426
const handleOnClick = () => {
1527
onSelect(keyValue)
@@ -19,14 +31,15 @@ function MenuItem({
1931
return (
2032
<li
2133
className={cx(styles['menu-item'], styles[`menu-${theme}`], {
22-
[styles['menu-item-selected']]: keyValue.indexOf(selectedKey) > -1,
34+
[styles['menu-item-selected']]: menuItemselected,
2335
})}
2436
onMouseEnter={() => {
2537
onHoverKey(keyValue)
2638
}}
2739
onMouseLeave={() => onHoverKey('')}
2840
onClick={handleOnClick}
2941
style={getMenuStyle(level, 'menuItem')}
42+
ref={menuItemRef}
3043
>
3144
{icon ? <span className={cx(styles['menu-icon'])}>{icon}</span> : null}
3245
<span className={cx(styles['menu-item-title'])}>{title}</span>

0 commit comments

Comments
 (0)