import {
IconRefresh,
IconUpload,
IconDownload,
IconDeviceFloppy,
IconPlayerPlay,
IconBolt,
IconEraser,
IconDots,
IconEye
} from '@tabler/icons-react';
import PortalDropdown from './PortalDropdown.jsx';
import { IconClock } from '@tabler/icons-react';
import { formatDateTimeWithRelative } from '../lib/datetime.js';
function PageHeaderActions({
loading = false,
onPreview,
disablePreview = false,
onRefresh,
disableRefresh = false,
onImport,
onExport,
disableExport = false,
onClear,
disableClear = false,
onClearCommunities,
disableClearCommunities = false,
onSave,
disableSave = false,
onHistory,
lastModified,
onOnlineUpdate,
onBackgroundUpdate,
}) {
const secondaryButtons = Boolean(onPreview || onImport || onExport || onClear || onClearCommunities || onHistory);
// Рендер плейсхолдеров во время загрузки/перезагрузки страницы
if (loading) {
const showUpdateGroup = Boolean(onBackgroundUpdate || onOnlineUpdate);
const placeholderBtn = (width = 120) => (
);
return (
{showUpdateGroup && (
{placeholderBtn(170)}
)}
{onRefresh && placeholderBtn(120)}
{(onImport || onExport) && placeholderBtn(160)}
{onClear && placeholderBtn(130)}
{onClearCommunities && placeholderBtn(180)}
{onSave && placeholderBtn(140)}
{onHistory && placeholderBtn(110)}
);
}
return (
{(onBackgroundUpdate || onOnlineUpdate) && (
{/* Дефолтное действие — фоновое обновление */}
{(onBackgroundUpdate && onOnlineUpdate) && (
)}
)}
{onPreview && (
)}
{onRefresh && (
)}
{(onImport || onExport) && (
Импорт/Экспорт>}
>
{onImport && (
)}
{onExport && (
)}
)}
{onClear && (
)}
{onClearCommunities && (
)}
{onSave && (
)}
{onHistory && (
{lastModified && (
)}
)}
{/* Компактное меню для маленьких экранов */}
{secondaryButtons && (
Ещё>}
>
{onPreview && (
)}
{onRefresh && (
)}
{onImport && (
)}
{onExport && (
)}
{onClear && (
)}
{onClearCommunities && (
)}
{onHistory && (
)}
)}
);
}
export default PageHeaderActions;