fix(admin-ui): badge на «Мои» не обновлялся + editor wider на десктопе

1. useApproveDraft/useRejectDraft теперь инвалидируют ['drafts'] key
   (my-drafts + by-dict lists). До этого инвалидировался только ['draft']
   (single by id), поэтому after-approve "Мои" badge продолжал показывать
   pending-счётчик даже когда все драфты уже APPROVED — useMyDrafts отдавал
   стейл-кеш. useWithdrawDraft уже это делал, теперь подтянули approve/reject.

2. DictionaryEditorDialog: на десктопе (≥880px) modal теперь max-w 1400px
   вместо max-w-5xl (880px после маппинга в SIZE_CLASSES.xl). На <880px
   осталось w-[95vw] (compact mobile modal). На 1440p мониторе editor
   больше не выглядит вжатым, tabs+schema+preview помещаются без скролла.
   Override через panelClassName c `!` чтобы перебить SIZE_CLASSES.
This commit is contained in:
Zimin A.N.
2026-05-25 14:59:57 +03:00
parent ac4f554e34
commit b828225b28
2 changed files with 14 additions and 2 deletions
+6
View File
@@ -442,6 +442,10 @@ export const useApproveDraft = () => {
qc.invalidateQueries({ queryKey: ['review-queue'] })
qc.invalidateQueries({ queryKey: ['records'] })
qc.invalidateQueries({ queryKey: ['draft'] })
// ['drafts'] = my-drafts list + by-dict list. Без этого "Мои" tab
// badge продолжал показывать счётчик после approve (status
// pending → decided, но cached list не обновлялся).
qc.invalidateQueries({ queryKey: ['drafts'] })
},
})
}
@@ -467,6 +471,8 @@ export const useRejectDraft = () => {
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['review-queue'] })
qc.invalidateQueries({ queryKey: ['draft'] })
// Та же причина что в useApproveDraft — "Мои" badge не обновлялся.
qc.invalidateQueries({ queryKey: ['drafts'] })
},
})
}
@@ -263,8 +263,14 @@ export const DictionaryEditorDialog = ({ open, mode, onClose, onSuccess }: Props
isOpen={open}
onClose={onClose}
title={isEdit ? `${t('schema.action.edit')}: ${initial?.name}` : t('schema.action.create')}
maxWidth="max-w-5xl"
panelClassName="max-h-[calc(100vh-2rem)] my-4 flex flex-col"
// Desktop ≥880px — expanded (max-w 1400px, реально ~95vw на меньших
// десктопных широтах). Mobile <880px — наследует w-[95vw] от
// DialogContent (compact, full-width modal). Override через
// panelClassName c `!` чтобы перебить SIZE_CLASSES.xl (880px).
// Раньше maxWidth="max-w-5xl" → xl → 880px — на 1440p мониторе
// editor выглядел вжатым, форма с tabs не помещалась без скролла.
size="md"
panelClassName="max-h-[calc(100vh-2rem)] my-4 flex flex-col min-[880px]:!max-w-[1400px]"
bodyClassName="overflow-y-auto flex-1"
>
<div className="space-y-4">