diff --git a/src/Components/I18nWidget.tsx b/src/Components/I18nWidget.tsx index a7514f316..38a628540 100644 --- a/src/Components/I18nWidget.tsx +++ b/src/Components/I18nWidget.tsx @@ -28,9 +28,11 @@ export const I18nWidget = (props: I18nWidgetProps) => { negativeText: , onNegativeFeedback: () => { // Reset the select to show the current language instead of the just selected one. - setNewLanguage(savedLocale); dismissModal(); }, + onDismiss: () => { + setNewLanguage(savedLocale); + }, hasDismissButton: false, backdropDismisses: false, }); diff --git a/src/Components/Modal.tsx b/src/Components/Modal.tsx index 5606872e9..4979508f7 100644 --- a/src/Components/Modal.tsx +++ b/src/Components/Modal.tsx @@ -1,5 +1,6 @@ import { Fragment, ComponentChildren, JSX } from 'preact'; import { useState, useCallback, useMemo, useEffect, useRef, useLayoutEffect } from 'preact/hooks'; +import { createPortal } from 'preact/compat'; import type { MergeExclusive } from 'type-fest'; import t from '../Utility/i18n'; @@ -68,7 +69,7 @@ export const useModal = ( const Modal = useCallback(() => { if (!shown) return ; - return ( + return createPortal(
0 ? ' no-animation' : ''}`}>
options.backdropDismisses && dismiss()} role="presentation" /> @@ -109,7 +110,8 @@ export const useModal = ( ))}
- + , + document.body ); }, [options, dismiss, children, shown]);