From 0a868107a3849fee6b12819ec4409e2e90da7d69 Mon Sep 17 00:00:00 2001 From: Joseph Fergusson Date: Tue, 23 Mar 2021 19:43:13 +1100 Subject: [PATCH 1/2] introduced a remainOnSelect property When added to a Menu, this allows the menu to remain active even after the user selects an item. This should be particularly useful for multi-select scenarios. --- docs/examples/multiple.tsx | 1 + src/Menu.tsx | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/examples/multiple.tsx b/docs/examples/multiple.tsx index 9b9f5057..76e30160 100644 --- a/docs/examples/multiple.tsx +++ b/docs/examples/multiple.tsx @@ -27,6 +27,7 @@ function Demo() { onSelect={handleSelect} onDeselect={handleDeselect} defaultSelectedKeys={['2', '1-1']} + remainOnSelect > 0-1 diff --git a/src/Menu.tsx b/src/Menu.tsx index 5048476a..6f68a2ae 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -61,6 +61,9 @@ export interface MenuProps inlineCollapsed?: boolean; + /** allow the menu to remain active after an item is selected. */ + remainOnSelect?: boolean; + /** SiderContextProps of layout in ant design */ siderCollapsed?: boolean; collapsedWidth?: string | number; @@ -242,7 +245,7 @@ class Menu extends React.Component { props: { onOpenChange }, } = this; - if (mode !== 'inline' && !('openKeys' in this.props)) { + if (mode !== 'inline' && !('openKeys' in this.props) && !('remainOnSelect' in this.props)) { // closing vertical popup submenu after click it store.setState({ openKeys: [], From 65ed0c476e7171b77eb714a67c710049ae35bf90 Mon Sep 17 00:00:00 2001 From: Joseph Fergusson Date: Tue, 23 Mar 2021 19:49:47 +1100 Subject: [PATCH 2/2] updated implementation --- README.md | 6 ++++++ src/Menu.tsx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 13de7032..dbe3ef40 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,12 @@ ReactDOM.render( false whether allow multiple select + + remainOnSelect + Boolean + false + whether to allow the menu to remain showing after an item is selected + selectable Boolean diff --git a/src/Menu.tsx b/src/Menu.tsx index 6f68a2ae..e4c83295 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -245,7 +245,7 @@ class Menu extends React.Component { props: { onOpenChange }, } = this; - if (mode !== 'inline' && !('openKeys' in this.props) && !('remainOnSelect' in this.props)) { + if (mode !== 'inline' && !('openKeys' in this.props) && !(this.props.remainOnSelect)) { // closing vertical popup submenu after click it store.setState({ openKeys: [],