Fix workspace board portal layering (#2096)
This commit is contained in:
parent
e9029feec1
commit
fad2162d87
|
|
@ -49,7 +49,7 @@ export default function WorkspaceStatusAppearancePopover({
|
|||
align="end"
|
||||
side="left"
|
||||
sideOffset={8}
|
||||
className="w-72 p-2"
|
||||
className="z-[80] w-72 p-2"
|
||||
data-workspace-status-appearance-popover=""
|
||||
onOpenAutoFocus={(event) => event.preventDefault()}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,27 @@
|
|||
import { useEffect } from 'react'
|
||||
import type React from 'react'
|
||||
|
||||
const WORKSPACE_BOARD_KEEP_OPEN_SELECTOR =
|
||||
'[data-workspace-board-trigger], [data-workspace-board-preserve-open]'
|
||||
const WORKSPACE_BOARD_KEEP_OPEN_SELECTOR = [
|
||||
'[data-workspace-board-trigger]',
|
||||
'[data-workspace-board-preserve-open]',
|
||||
'[data-workspace-status-appearance-popover]',
|
||||
'[data-radix-popper-content-wrapper]',
|
||||
'[data-slot="dropdown-menu-content"]',
|
||||
'[data-slot="context-menu-content"]',
|
||||
'[data-slot="popover-content"]',
|
||||
'[data-slot="dialog-content"]',
|
||||
'[data-slot="dialog-overlay"]',
|
||||
'[role="dialog"][data-state="open"]',
|
||||
'[role="alertdialog"][data-state="open"]',
|
||||
'[role="menu"][data-state="open"]'
|
||||
].join(', ')
|
||||
|
||||
export function isWorkspaceBoardKeepOpenTarget(target: EventTarget | null): boolean {
|
||||
return target instanceof Element && Boolean(target.closest(WORKSPACE_BOARD_KEEP_OPEN_SELECTOR))
|
||||
const element =
|
||||
target instanceof Element ? target : target instanceof Node ? target.parentElement : null
|
||||
// Why: board-owned menus and confirmation dialogs portal to document.body,
|
||||
// so DOM containment alone would treat their clicks/focus as board exits.
|
||||
return Boolean(element?.closest(WORKSPACE_BOARD_KEEP_OPEN_SELECTOR))
|
||||
}
|
||||
|
||||
export function useWorkspaceKanbanOutsideDismiss(params: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue