feat: Обновить компоненты интерфейса, добавив новый заголовок страницы и состояние пустого контента в менеджерах ASNs, Domains и IPRanges, а также улучшить стили для адаптивного отображения
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m0s

This commit is contained in:
2025-08-27 17:16:46 +07:00
parent 001b4d9d98
commit 434462f633
13 changed files with 255 additions and 71 deletions
+21 -13
View File
@@ -16,6 +16,10 @@ import {
IconFilter
} from '@tabler/icons-react';
import PageHeaderActions from './components/PageHeaderActions.jsx';
import PageHeader from './components/PageHeader.jsx';
import EmptyState from './components/EmptyState.jsx';
import { TableEmpty } from './components/TableSkeleton.jsx';
import Breadcrumbs from './components/Breadcrumbs.jsx';
const API_URL = '/api';
@@ -224,14 +228,17 @@ function CommunitiesManager() {
return (
<div>
<div className="page-header d-print-none mb-4">
<div className="row align-items-center">
<div className="col">
<h2 className="page-title"><IconFilter className="me-2" />Справочник Community</h2>
<div className="page-pretitle">Главная / Данные / Community</div>
</div>
<div className="col-auto ms-auto d-print-none">
<PageHeaderActions
<PageHeader
title={(<><IconFilter className="me-2" />Справочник Community</>)}
pretitle={(
<Breadcrumbs items={[
{ label: 'Главная', to: '/dashboard' },
{ label: 'Данные' },
{ label: 'Community' },
]} />
)}
actions={(
<PageHeaderActions
loading={loading}
onRefresh={fetchItems}
disableRefresh={loading}
@@ -240,10 +247,9 @@ function CommunitiesManager() {
disableExport={items.length === 0}
onSave={handleSave}
disableSave={loading}
/>
</div>
</div>
</div>
/>
)}
/>
{error && (
<div className="alert alert-danger alert-dismissible" role="alert">
@@ -319,7 +325,9 @@ function CommunitiesManager() {
{loading ? (
<tr><td colSpan={6} className="text-center text-muted py-4">Загрузка...</td></tr>
) : paginated.length === 0 ? (
<tr><td colSpan={6} className="text-center text-muted py-4">Нет записей</td></tr>
<tr><td colSpan={6} className="text-center text-muted py-4">
<EmptyState title="Нет community" description="Добавьте запись, чтобы начать." action={<button className="btn btn-primary" onClick={addItem}>Добавить</button>} />
</td></tr>
) : paginated.map((item) => (
<tr key={item.value} className={editingValue === item.value ? 'table-info' : ''}>
<td>