Merge branch 'fix/tails-404-dialogtitle' into 'main'

fix: хвосты — 404 на CREATE-черновиках + Radix DialogTitle warning

See merge request 2-6/2-6-4/terravault/ordinis!253
This commit is contained in:
Александр Зимин
2026-05-21 13:06:12 +00:00
2 changed files with 19 additions and 4 deletions
+7 -3
View File
@@ -614,9 +614,13 @@ function ReviewDrawer({ draftId, onClose }: DrawerProps) {
const currentSub = auth.user?.profile?.sub
const draftQ = useDraft(draftId)
const draft = draftQ.data
// CREATE-черновик не имеет live-записи по определению — не пробуем её
// загружать (GET /dictionaries/{id}/records/{key} → 404, красный шум в
// консоли на каждый CREATE-draft). Для UPDATE/CLOSE — грузим как раньше.
const isCreateDraft = draft?.operation === 'CREATE'
const liveQ = useLiveRecord(
draft ? draft.dictionaryId : undefined,
draft ? draft.businessKey : undefined,
draft && !isCreateDraft ? draft.dictionaryId : undefined,
draft && !isCreateDraft ? draft.businessKey : undefined,
)
const approveMut = useApproveDraft()
const rejectMut = useRejectDraft()
@@ -810,7 +814,7 @@ function ReviewDrawer({ draftId, onClose }: DrawerProps) {
{t('reviews.drawer.live')}
</p>
{liveQ.isLoading && <LoadingBlock size="sm" label={t('loading')} />}
{liveQ.data === null && (
{(liveQ.data === null || isCreateDraft) && (
<p className="text-cell text-mute italic">
{t('reviews.drawer.noLive')}
</p>
+12 -1
View File
@@ -70,13 +70,24 @@ export function Modal({
if (!open) onClose()
}}
>
<DialogContent size={resolved} hideClose={hideClose} className={panelClassName}>
<DialogContent
size={resolved}
hideClose={hideClose}
className={panelClassName}
// Без DialogDescription Radix предупреждает о missing aria-describedby —
// явно гасим, когда описания нет.
{...(description ? {} : { 'aria-describedby': undefined })}
>
{(title || description) && (
<DialogHeader>
{title && <DialogTitle>{title}</DialogTitle>}
{description && <DialogDescription>{description}</DialogDescription>}
</DialogHeader>
)}
{/* Radix требует DialogTitle в каждом DialogContent для скринридеров.
* Если callsite не передал title — рендерим sr-only fallback, иначе
* console-warning + диалог без названия для a11y. */}
{!title && <DialogTitle className="sr-only">Диалог</DialogTitle>}
{bodyClassName ? <div className={bodyClassName}>{children}</div> : children}
</DialogContent>
</Dialog>