diff --git a/superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx b/superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx index 3890c596e..e3a5db0ca 100644 --- a/superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx +++ b/superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx @@ -529,6 +529,7 @@ const SliceHeaderControls = (props: SliceHeaderControlsPropsWithRouter) => { const [openScopingModal, scopingModal] = useCrossFiltersScopingModal( props.slice.slice_id, ); + const history = useHistory(); const queryMenuRef: RefObject = useRef(null); const menuRef: RefObject = useRef(null); @@ -590,7 +591,12 @@ const SliceHeaderControls = (props: SliceHeaderControlsPropsWithRouter) => { case MenuKeys.ExploreChart: // eslint-disable-next-line no-unused-expressions props.logExploreChart?.(props.slice.slice_id); - window.open(props.exploreUrl); + if (domEvent.metaKey || domEvent.ctrlKey) { + domEvent.preventDefault(); + window.open(props.exploreUrl, '_blank'); + } else { + history.push(props.exploreUrl); + } break; case MenuKeys.ExportCsv: // eslint-disable-next-line no-unused-expressions @@ -907,16 +913,6 @@ const SliceHeaderControls = (props: SliceHeaderControlsPropsWithRouter) => { placement="bottomRight" visible={dropdownIsOpen} onVisibleChange={status => toggleDropdown({ close: !status })} - onBlur={e => { - // close unless the dropdown menu is clicked - const relatedTarget = e.relatedTarget as HTMLElement; - if ( - dropdownIsOpen && - menuRef?.current?.props.id !== relatedTarget?.id - ) { - toggleDropdown({ close: true }); - } - }} onKeyDown={e => handleDropdownNavigation( e,