fix(edit-menu): render mod edit modal in FloatingPortal to escape reply card containment

This commit is contained in:
plebeius
2026-02-27 15:00:39 +08:00
parent 326b40300f
commit f19ebe5f33
+3 -1
View File
@@ -1,6 +1,6 @@
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { Trans, useTranslation } from 'react-i18next'; import { Trans, useTranslation } from 'react-i18next';
import { autoUpdate, FloatingFocusManager, offset, shift, useClick, useDismiss, useFloating, useId, useInteractions, useRole } from '@floating-ui/react'; import { autoUpdate, FloatingFocusManager, FloatingPortal, offset, shift, useClick, useDismiss, useFloating, useId, useInteractions, useRole } from '@floating-ui/react';
import { import {
Comment, Comment,
PublishCommentEditOptions, PublishCommentEditOptions,
@@ -271,6 +271,7 @@ const EditMenu = ({ post }: { post: Comment }) => {
/> />
</span> </span>
{isEditMenuOpen && (isAccountCommentAuthor || isAccountMod) && ( {isEditMenuOpen && (isAccountCommentAuthor || isAccountMod) && (
<FloatingPortal>
<FloatingFocusManager context={context} modal={false}> <FloatingFocusManager context={context} modal={false}>
<div className={styles.modal} ref={refs.setFloating} style={floatingStyles} aria-labelledby={headingId} {...getFloatingProps()}> <div className={styles.modal} ref={refs.setFloating} style={floatingStyles} aria-labelledby={headingId} {...getFloatingProps()}>
<div className={styles.editMenu}> <div className={styles.editMenu}>
@@ -400,6 +401,7 @@ const EditMenu = ({ post }: { post: Comment }) => {
</div> </div>
</div> </div>
</FloatingFocusManager> </FloatingFocusManager>
</FloatingPortal>
)} )}
</> </>
); );