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:
@@ -442,6 +442,10 @@ export const useApproveDraft = () => {
|
|||||||
qc.invalidateQueries({ queryKey: ['review-queue'] })
|
qc.invalidateQueries({ queryKey: ['review-queue'] })
|
||||||
qc.invalidateQueries({ queryKey: ['records'] })
|
qc.invalidateQueries({ queryKey: ['records'] })
|
||||||
qc.invalidateQueries({ queryKey: ['draft'] })
|
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: () => {
|
onSuccess: () => {
|
||||||
qc.invalidateQueries({ queryKey: ['review-queue'] })
|
qc.invalidateQueries({ queryKey: ['review-queue'] })
|
||||||
qc.invalidateQueries({ queryKey: ['draft'] })
|
qc.invalidateQueries({ queryKey: ['draft'] })
|
||||||
|
// Та же причина что в useApproveDraft — "Мои" badge не обновлялся.
|
||||||
|
qc.invalidateQueries({ queryKey: ['drafts'] })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -263,8 +263,14 @@ export const DictionaryEditorDialog = ({ open, mode, onClose, onSuccess }: Props
|
|||||||
isOpen={open}
|
isOpen={open}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
title={isEdit ? `${t('schema.action.edit')}: ${initial?.name}` : t('schema.action.create')}
|
title={isEdit ? `${t('schema.action.edit')}: ${initial?.name}` : t('schema.action.create')}
|
||||||
maxWidth="max-w-5xl"
|
// Desktop ≥880px — expanded (max-w 1400px, реально ~95vw на меньших
|
||||||
panelClassName="max-h-[calc(100vh-2rem)] my-4 flex flex-col"
|
// десктопных широтах). 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"
|
bodyClassName="overflow-y-auto flex-1"
|
||||||
>
|
>
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user