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

1. reviews.tsx: ReviewDrawer звал useLiveRecord для ЛЮБОГО черновика,
   включая CREATE. У CREATE-черновика live-записи нет по определению →
   GET /dictionaries/{id}/records/{key} → 404 (красный шум в консоли на
   каждый CREATE-draft). Теперь для CREATE запрос не запускается, блок
   «текущая версия» показывает «нет текущей версии».

2. modal.tsx: Modal рендерил DialogTitle только при наличии prop title.
   Без title Radix писал в консоль «DialogContent requires a DialogTitle»
   + warning про aria-describedby. Теперь Modal всегда рендерит DialogTitle
   (sr-only fallback) и гасит aria-describedby когда описания нет.
This commit is contained in:
Zimin A.N.
2026-05-21 16:05:09 +03:00
parent 7621f0a95f
commit 2a82a875c8
2 changed files with 19 additions and 4 deletions
+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>