Skip to content

Commit

Permalink
Merge pull request #3616 from omnivore-app/fix/web-dismiss-pointer
Browse files Browse the repository at this point in the history
Attempt to wrap modal root onopenchange to handle pointer events
  • Loading branch information
jacksonh authored Mar 4, 2024
2 parents 14bcf40 + 678de05 commit 8d77341
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
10 changes: 9 additions & 1 deletion packages/web/components/patterns/ConfirmationModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
import { VStack, HStack } from '../elements/LayoutPrimitives'
import { Button } from '../elements/Button'
import { StyledText } from '../elements/StyledText'
import { useCallback } from 'react'

type ConfirmationModalProps = {
message?: string
Expand All @@ -18,8 +19,15 @@ type ConfirmationModalProps = {
}

export function ConfirmationModal(props: ConfirmationModalProps): JSX.Element {
const safeOnOpenChange = useCallback(
(open: boolean) => {
document.body.style.removeProperty('pointer-events')
props.onOpenChange(open)
},
[props]
)
return (
<ModalRoot defaultOpen onOpenChange={props.onOpenChange}>
<ModalRoot defaultOpen onOpenChange={safeOnOpenChange}>
<ModalOverlay />
<ModalContent css={{ bg: '$grayBg', maxWidth: '20em', zIndex: '20' }}>
<VStack alignment="center" distribution="center" css={{ p: '15px' }}>
Expand Down
16 changes: 13 additions & 3 deletions packages/web/components/templates/article/SetLabelsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ export function SetLabelsModal(props: SetLabelsModalProps): JSX.Element {
const availableLabels = useGetLabelsQuery()
const [tabCount, setTabCount] = useState(-1)
const [tabStartValue, setTabStartValue] = useState('')
const [errorMessage, setErrorMessage] =
useState<string | undefined>(undefined)
const [errorMessage, setErrorMessage] = useState<string | undefined>(
undefined
)
const errorTimeoutRef = useRef<NodeJS.Timeout | undefined>()
const [highlightLastLabel, setHighlightLastLabel] = useState(false)

Expand Down Expand Up @@ -169,8 +170,17 @@ export function SetLabelsModal(props: SetLabelsModalProps): JSX.Element {
}
}, [highlightLastLabel, selectedLabels, dispatchLabels])

const safeOnOpenChange = useCallback(
(open: boolean) => {
console.log('safe on open change called')
document.body.style.removeProperty('pointer-events')
props.onOpenChange(open)
},
[props]
)

return (
<ModalRoot defaultOpen onOpenChange={props.onOpenChange}>
<ModalRoot defaultOpen onOpenChange={safeOnOpenChange}>
<Dialog.Portal>
<ModalOverlay />
<ModalContent
Expand Down

0 comments on commit 8d77341

Please sign in to comment.