diff --git a/packages/chakra-ui-core/src/CMenu/CMenu.js b/packages/chakra-ui-core/src/CMenu/CMenu.js index ca6f8a42..abbaa196 100644 --- a/packages/chakra-ui-core/src/CMenu/CMenu.js +++ b/packages/chakra-ui-core/src/CMenu/CMenu.js @@ -384,7 +384,7 @@ const CMenuList = { } }, render (h) { - const { isOpen, buttonNode, menuId, buttonId, placement, closeMenu } = this.context + const { isOpen, buttonNode, menuId, buttonId, placement, closeMenu, closeOnBlur } = this.context return h(CPopper, { props: { usePortal: false, @@ -399,7 +399,7 @@ const CMenuList = { } } ], - closeOnClickAway: true, + closeOnClickAway: closeOnBlur, hasArrow: false }, attrs: { diff --git a/packages/chakra-ui-core/src/CMenu/CMenu.stories.js b/packages/chakra-ui-core/src/CMenu/CMenu.stories.js index 1cdb5b99..77012e76 100644 --- a/packages/chakra-ui-core/src/CMenu/CMenu.stories.js +++ b/packages/chakra-ui-core/src/CMenu/CMenu.stories.js @@ -1,46 +1,29 @@ import { storiesOf } from '@storybook/vue' -import { CMenu, CMenuGroup, CMenuButton, CMenuList, CMenuOptionGroup, CImage, CMenuItemOption, CMenuItem, CMenuDivider, CIcon, defaultTheme } from '..' +import { CMenu, CFade, CMenuGroup, CMenuButton, CMenuList, CMenuOptionGroup, CImage, CMenuItemOption, CMenuItem, CMenuDivider, CIcon, defaultTheme } from '..' console.log({ defaultTheme }) storiesOf('UI | Menu', module) - .add('Default Menu', () => ({ - components: { CMenu, CMenuGroup, CMenuButton, CMenuList, CMenuItem, CMenuDivider, CIcon }, - template: ` - - - Actions - - - Download - Create a Copy - Mark as Draft - Delete - - Attend a Workshop - - - - ` - })) .add('With internal state', () => ({ - components: { CMenu, CMenuGroup, CMenuButton, CMenuList, CMenuItem, CMenuDivider }, + components: { CFade, CMenu, CMenuGroup, CMenuButton, CMenuList, CMenuItem, CMenuDivider }, template: ` - + {{ isOpen ? 'Close' : 'Open' }} - - - My Account - Payments - - - - Docs - FAQ - - + + + + My Account + Payments + + + + Docs + FAQ + + + ` })) @@ -123,3 +106,22 @@ storiesOf('UI | Menu', module) ` })) + .add('No close on blur', () => ({ + components: { CMenu, CMenuGroup, CMenuButton, CMenuList, CMenuItem, CMenuDivider, CIcon }, + template: ` + + + Actions + + + Download + Create a Copy + Mark as Draft + Delete + + Attend a Workshop + + + + ` + })) diff --git a/packages/chakra-ui-core/src/CPopper/CPopper.js b/packages/chakra-ui-core/src/CPopper/CPopper.js index 6ed1ca26..d495e05b 100644 --- a/packages/chakra-ui-core/src/CPopper/CPopper.js +++ b/packages/chakra-ui-core/src/CPopper/CPopper.js @@ -259,7 +259,7 @@ const CPopper = { */ wrapClose (e) { if (this.popper && !(this.anchor.contains(e.target))) { - this.handleClose() + this.closeOnClickAway && this.handleClose() } },