refactor(CommunitiesManager): enhance button actions and layout for improved user interaction and functionality
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m57s

This commit is contained in:
2026-02-16 22:18:04 +07:00
parent f380be5d21
commit 6fad114b22
+51 -16
View File
@@ -14,10 +14,13 @@ import {
IconLink,
IconRefresh,
IconSortAscending,
IconSortDescending
IconSortDescending,
IconUpload,
IconDownload,
IconDeviceFloppy
} from '@tabler/icons-react';
import PageHeader from './components/PageHeader.jsx';
import PageHeaderActions from './components/PageHeaderActions.jsx';
import PortalDropdown from './components/PortalDropdown.jsx';
import EmptyState from './components/EmptyState.jsx';
import CommunityStats from './components/CommunityStats.jsx';
import SavedFilters from './components/SavedFilters.jsx';
@@ -354,18 +357,6 @@ function CommunitiesManager() {
<PageHeader
title="Справочник Community"
icon={<IconFilter size={24} />}
actions={
<PageHeaderActions
loading={loading}
onRefresh={fetchItems}
disableRefresh={loading}
onImport={handleImport}
onExport={handleExport}
disableExport={items.length === 0}
onSave={handleSave}
disableSave={loading}
/>
}
/>
{/* Уведомления */}
@@ -386,8 +377,8 @@ function CommunitiesManager() {
</div>
)}
{/* Табы в стиле NetworkConfigManager (как на скрине) */}
<div className="mb-3">
{/* Табы и кнопки в одной строке, единый стиль btn-primary */}
<div className="d-flex flex-wrap align-items-center justify-content-between gap-2 mb-3">
<div className="btn-group" role="tablist" aria-label="Переключение режимов страницы">
<button
type="button"
@@ -428,6 +419,50 @@ function CommunitiesManager() {
</span>
</button>
</div>
<div className="btn-group">
<button
type="button"
className="btn btn-primary"
onClick={fetchItems}
disabled={loading}
title="Обновить данные"
>
<IconRefresh size={16} className={loading ? 'spin me-1' : 'me-1'} />
Обновить
</button>
<PortalDropdown
buttonClassName="btn btn-primary dropdown-toggle"
buttonProps={{ title: 'Импорт/Экспорт' }}
align="left"
buttonContent={<><IconDownload className="me-1" /> Импорт/Экспорт</>}
>
<button type="button" className="dropdown-item" onClick={handleImport}>
<IconUpload className="me-1" /> Импорт
</button>
<button
type="button"
className="dropdown-item"
onClick={handleExport}
disabled={items.length === 0}
>
<IconDownload className="me-1" /> Экспорт
</button>
</PortalDropdown>
<button
type="button"
className="btn btn-primary"
onClick={handleSave}
disabled={loading}
title="Сохранить"
>
{loading ? (
<span className="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true" />
) : (
<IconDeviceFloppy className="me-1" />
)}
Сохранить
</button>
</div>
</div>
{/* Отображение списка communities */}