fix(ui): block route render with centered GlobeLoader until queries resolve
Per user feedback ('вот такого не должно быть, лучше лоадер'):
- /dictionaries — full-page LoadingBlock (size lg, centered min-h 60vh)
пока useDictionaries query loading. Раньше size=md без centering
показывался в углу — а на пустой странице это смотрелось куце.
- /dictionaries/$name — same gate на detailQuery.isLoading. Без этого
юзер видел partial render: пустую sidebar info panel, узкую records
колонку (extra columns ещё не computed из schema), битую табличную
toolbar. Теперь — централизованный GlobeLoader пока схема не дойдёт.
This commit is contained in:
@@ -598,6 +598,25 @@ function DictionaryDetail() {
|
||||
return false
|
||||
}, [detailQuery.data?.schemaJson])
|
||||
|
||||
// Full-page loader пока ОБА query (detail + records) не готовы. Иначе
|
||||
// юзер видит partial render — узкая колонка без extra columns, info panel
|
||||
// ещё не появилась, бар нагружается частями. Per user: "вот такого не
|
||||
// должно быть, лучше лоадер".
|
||||
if (detailQuery.isLoading || (!detailQuery.data && !detailQuery.error)) {
|
||||
return (
|
||||
<div className="min-h-[60vh] flex items-center justify-center">
|
||||
<LoadingBlock size="lg" label={t('loading')} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
if (detailQuery.error) {
|
||||
return (
|
||||
<Alert variant="error" title={t('error.failed')}>
|
||||
{String(detailQuery.error)}
|
||||
</Alert>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
{scope && (
|
||||
|
||||
@@ -185,7 +185,13 @@ function DictionariesPage() {
|
||||
</button>
|
||||
) : null
|
||||
|
||||
if (isLoading) return <LoadingBlock size="md" label={t('loading')} />
|
||||
if (isLoading) {
|
||||
return (
|
||||
<div className="min-h-[60vh] flex items-center justify-center">
|
||||
<LoadingBlock size="lg" label={t('loading')} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
if (error) {
|
||||
return (
|
||||
<Alert variant="error" title={t('error.failed')}>
|
||||
|
||||
Reference in New Issue
Block a user