chore: 修复 DropDownButton 在 hover 状态下不好点击按钮的问题 (#3690)

This commit is contained in:
吴多益 2022-03-03 18:57:35 +08:00 committed by GitHub
parent 6dcf81706d
commit 42c658178e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 4 deletions

View File

@ -696,7 +696,7 @@ export const examples = [
{ {
label: 'APP 多页应用', label: 'APP 多页应用',
icon: 'fa fa-cubes', icon: 'fa fa-cubes',
path: '/app/', path: '/examples/app/',
component: () => { component: () => {
// gh-pages // gh-pages
if (/^\/amis/.test(window.location.pathname)) { if (/^\/amis/.test(window.location.pathname)) {

View File

@ -147,12 +147,14 @@ export default class DropDownButton extends React.Component<
}; };
target: any; target: any;
timer: ReturnType<typeof setTimeout>;
constructor(props: DropDownButtonProps) { constructor(props: DropDownButtonProps) {
super(props); super(props);
this.open = this.open.bind(this); this.open = this.open.bind(this);
this.close = this.close.bind(this); this.close = this.close.bind(this);
this.toogle = this.toogle.bind(this); this.toogle = this.toogle.bind(this);
this.keepOpen = this.keepOpen.bind(this);
this.domRef = this.domRef.bind(this); this.domRef = this.domRef.bind(this);
} }
@ -183,9 +185,17 @@ export default class DropDownButton extends React.Component<
} }
close() { close() {
this.setState({ this.timer = setTimeout(() => {
isOpened: false this.setState({
}); isOpened: false
});
}, 200);
}
keepOpen() {
if (this.timer) {
clearTimeout(this.timer);
}
} }
renderButton( renderButton(
@ -260,6 +270,7 @@ export default class DropDownButton extends React.Component<
menuClassName menuClassName
)} )}
onClick={closeOnClick ? this.close : noop} onClick={closeOnClick ? this.close : noop}
onMouseEnter={this.keepOpen}
ref={ref} ref={ref}
> >
{children {children