2
0

🐛 (editor) Fix popover zIndex

This commit is contained in:
Baptiste Arnaud
2023-01-06 15:03:39 +01:00
parent fadf34ad61
commit 2d20f1c41c
7 changed files with 35 additions and 9 deletions

View File

@ -20,6 +20,7 @@ import React, { useState, useRef, ChangeEvent, useEffect } from 'react'
import { useDebouncedCallback } from 'use-debounce'
import { byId, env, isDefined, isNotDefined } from 'utils'
import { useOutsideClick } from '@/hooks/useOutsideClick'
import { useParentModal } from '@/features/graph'
type Props = {
initialVariableId?: string
@ -62,6 +63,7 @@ export const VariableSearchInput = ({
const inputRef = useRef<HTMLInputElement>(null)
const createVariableItemRef = useRef<HTMLButtonElement | null>(null)
const itemsRef = useRef<(HTMLButtonElement | null)[]>([])
const { ref: parentModalRef } = useParentModal()
useOutsideClick({
ref: dropdownRef,
@ -190,7 +192,7 @@ export const VariableSearchInput = ({
{...inputProps}
/>
</PopoverAnchor>
<Portal>
<Portal containerRef={parentModalRef}>
<PopoverContent
maxH="35vh"
overflowY="scroll"

View File

@ -37,6 +37,7 @@ import {
useGraph,
useBlockDnd,
useDragDistance,
ParentModalProvider,
} from '../../../providers'
import { hasDefaultConnector } from '../../../utils'
@ -239,12 +240,14 @@ export const BlockNode = ({
onExpandClick={handleExpandClick}
onBlockChange={handleBlockUpdate}
/>
<SettingsModal isOpen={isModalOpen} onClose={handleModalClose}>
<BlockSettings
block={block}
onBlockChange={handleBlockUpdate}
/>
</SettingsModal>
<ParentModalProvider>
<SettingsModal isOpen={isModalOpen} onClose={handleModalClose}>
<BlockSettings
block={block}
onBlockChange={handleBlockUpdate}
/>
</SettingsModal>
</ParentModalProvider>
</>
)}
{typebot && isMediaBubbleBlock(block) && (

View File

@ -1,3 +1,4 @@
import { useParentModal } from '@/features/graph'
import {
Modal,
ModalOverlay,
@ -20,13 +21,14 @@ export const SettingsModal = ({
onClose,
...props
}: Props & ModalBodyProps) => {
const { ref } = useParentModal()
const handleMouseDown = (e: React.MouseEvent) => {
e.stopPropagation()
}
return (
<Modal isOpen={isOpen} onClose={onClose}>
<ModalOverlay />
<ModalContent onMouseDown={handleMouseDown}>
<ModalContent onMouseDown={handleMouseDown} ref={ref}>
<ModalHeader mb="2">
<ModalCloseButton />
</ModalHeader>

View File

@ -1,10 +1,12 @@
export { Graph } from './components/Graph'
export {
ParentModalProvider,
GraphProvider,
GroupsCoordinatesProvider,
GraphDndProvider,
type Coordinates,
useGraph,
useBlockDnd,
useParentModal,
} from './providers'
export { parseNewBlock } from './utils'

View File

@ -0,0 +1,17 @@
import { createContext, ReactNode, useContext, useRef } from 'react'
const parentModalContext = createContext<{
ref?: React.MutableRefObject<HTMLDivElement | null>
}>({})
export const ParentModalProvider = ({ children }: { children: ReactNode }) => {
const ref = useRef<HTMLDivElement | null>(null)
return (
<parentModalContext.Provider value={{ ref }}>
{children}
</parentModalContext.Provider>
)
}
export const useParentModal = () => useContext(parentModalContext)

View File

@ -1,3 +1,4 @@
export * from './GraphDndProvider'
export * from './GraphProvider'
export * from './GroupsCoordinateProvider'
export * from './ParentModalProvider'

View File

@ -93,7 +93,6 @@ const Popover = createMultiStyleConfigHelpers(
popper: {
width: 'fit-content',
maxWidth: 'fit-content',
zIndex: 'popover',
},
content: {
bg: colorMode === 'dark' ? 'gray.800' : 'white',