From 53fe94d08178edd8cd4658cb38354b1dcd21f3fc Mon Sep 17 00:00:00 2001 From: myronliu347 Date: Wed, 22 May 2019 11:16:01 +0800 Subject: [PATCH] fix(Message): can`t close after click selectMode = 'multiple' fixed https://github.com/alibaba-fusion/next/issues/662 --- src/menu-button/index.jsx | 9 ++++++++- test/menu-button/index-spec.js | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/menu-button/index.jsx b/src/menu-button/index.jsx index 7121b6e58c..269b966077 100644 --- a/src/menu-button/index.jsx +++ b/src/menu-button/index.jsx @@ -67,7 +67,7 @@ class MenuButton extends React.Component { /** * 菜单的选择模式,同 Menu */ - selectMode: PropTypes.string, + selectMode: PropTypes.oneOf(['single', 'multiple']), /** * 点击菜单项后的回调,同 Menu */ @@ -119,7 +119,14 @@ class MenuButton extends React.Component { } clickMenuItem = (key, ...others) => { + const { selectMode } = this.props; + this.props.onItemClick(key, ...others); + + if (selectMode === 'multiple') { + return; + } + this.onPopupVisibleChange(false, 'menuSelect'); }; diff --git a/test/menu-button/index-spec.js b/test/menu-button/index-spec.js index f2e39df1d7..1f9a7db9b5 100644 --- a/test/menu-button/index-spec.js +++ b/test/menu-button/index-spec.js @@ -1,5 +1,6 @@ import React from 'react'; import Enzyme, { mount } from 'enzyme'; +import sinon from 'sinon'; import Adapter from 'enzyme-adapter-react-16'; import assert from 'power-assert'; import MenuButton from '../../src/menu-button/index'; @@ -107,5 +108,18 @@ describe('MenuButton', () => { .hasClass('next-selected') ); }); + + it('should mulitple select can`t close', () => { + const onVisibleChange = sinon.spy(); + const onItemClick = sinon.spy(); + const wrapper = mount( + + {menu} + + ); + wrapper.find('li[title="b"][role="listitem"]').simulate('click'); + assert(onItemClick.calledOnce); + assert(onVisibleChange.notCalled); + }) }); });