Skip to content

Commit

Permalink
Fix #3398/#3407: SlideMenu add onNavigate, setLevelState (#3411)
Browse files Browse the repository at this point in the history
  • Loading branch information
melloware committed Oct 2, 2022
1 parent 2275791 commit 51e3cad
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 2 deletions.
11 changes: 11 additions & 0 deletions api-generator/components/slidemenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,17 @@ const SlideMenuEvents = [
description: 'Browser event'
}
]
},
{
name: 'onNavigate',
description: 'Callback to invoke when a menu is navigated to.',
arguments: [
{
name: 'event.level',
type: 'number',
description: 'The menu level navigated to'
}
]
}
];

Expand Down
14 changes: 12 additions & 2 deletions components/doc/slidemenu/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -972,6 +972,11 @@ const items = [
<td>void</td>
<td>Navigates the slide menu backwards.</td>
</tr>
<tr>
<td>setLevelState</td>
<td>level: Number of the menu to set</td>
<td>Navigates the slide menu to this specific level.</td>
</tr>
</tbody>
</table>
</div>
Expand All @@ -989,14 +994,19 @@ const items = [
<tbody>
<tr>
<td>onShow</td>
<td>event: Browser event </td>
<td>event: Browser event</td>
<td>Callback to invoke when a popup menu is shown.</td>
</tr>
<tr>
<td>onHide</td>
<td>event: Browser event </td>
<td>event: Browser event</td>
<td>Callback to invoke when a popup menu is hidden.</td>
</tr>
<tr>
<td>onNavigate</td>
<td>level: number</td>
<td>Callback to invoke when a menu is navigated to.</td>
</tr>
</tbody>
</table>
</div>
Expand Down
6 changes: 6 additions & 0 deletions components/lib/slidemenu/SlideMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ export const SlideMenu = React.memo(
setLevelState(0);
}, [props.model]);

useUpdateEffect(() => {
props.onNavigate && props.onNavigate({ level: levelState });
}, [levelState]);

useUnmountEffect(() => {
ZIndexUtils.clear(menuRef.current);
});
Expand All @@ -97,6 +101,7 @@ export const SlideMenu = React.memo(
hide,
navigateForward,
navigateBack,
setLevelState,
getElement: () => menuRef.current
}));

Expand Down Expand Up @@ -171,6 +176,7 @@ SlideMenu.defaultProps = {
model: null,
onHide: null,
onShow: null,
onNavigate: null,
popup: false,
style: null,
transitionOptions: null,
Expand Down
6 changes: 6 additions & 0 deletions components/lib/slidemenu/slidemenu.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { MenuItem } from '../menuitem';

type SlideMenuAppendToType = 'self' | HTMLElement | undefined | null;

interface SlideMenuNavigateParams {
level: number;
}

export interface SlideMenuProps extends Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, 'ref'> {
appendTo?: SlideMenuAppendToType;
autoZIndex?: boolean;
Expand All @@ -19,12 +23,14 @@ export interface SlideMenuProps extends Omit<React.DetailedHTMLProps<React.HTMLA
viewportHeight?: number;
onShow?(e: React.SyntheticEvent): void;
onHide?(e: React.SyntheticEvent): void;
onNavigate?(e: SlideMenuNavigateParams): void;
}

export declare class SlideMenu extends React.Component<SlideMenuProps, any> {
public show(event: React.SyntheticEvent): void;
public hide(event: React.SyntheticEvent): void;
public toggle(event: React.SyntheticEvent): void;
public setLevelState(level: number): void;
public navigateForward(): void;
public navigateBack(): void;
public getElement(): HTMLDivElement;
Expand Down

0 comments on commit 51e3cad

Please sign in to comment.