Files
router-lists-ui/frontend/src/components/BulkActionsBar.jsx
T
2026-02-17 10:45:34 +07:00

74 lines
1.9 KiB
React

import { IconTrash, IconEdit, IconDownload } from '@tabler/icons-react';
import FloatingBulkActionsBar from './FloatingBulkActionsBar.jsx';
/**
* Панель массовых действий для таблиц (всплывающая, как на скрине).
* Показывается когда выбраны элементы. Использует единый дизайн тёмной плавающей панели.
* «Выбрать все» остаётся в тулбаре/шапке таблицы (чекбокс).
*/
function BulkActionsBar({
selectedCount = 0,
totalCount = 0,
onSelectAll = () => {},
onDeselectAll = () => {},
onDelete = null,
onEdit = null,
onExport = null,
customActions = [],
className = '',
}) {
const actions = [];
if (onExport) {
actions.push({
type: 'button',
label: 'Экспорт',
icon: IconDownload,
onClick: onExport,
title: 'Экспортировать выбранное',
});
}
if (onEdit) {
actions.push({
type: 'button',
label: 'Изменить',
icon: IconEdit,
onClick: onEdit,
title: 'Редактировать выбранное',
});
}
customActions.forEach((action) => {
actions.push({
type: 'button',
label: action.label,
icon: action.icon,
onClick: action.onClick,
variant: action.variant === 'btn-outline-danger' || action.variant === 'danger' ? 'danger' : undefined,
title: action.title,
});
});
if (onDelete) {
actions.push({
type: 'button',
label: 'Удалить',
icon: IconTrash,
onClick: onDelete,
variant: 'danger',
title: 'Удалить выбранное',
});
}
return (
<FloatingBulkActionsBar
selectedCount={selectedCount}
onClearSelection={onDeselectAll}
actions={actions}
/>
);
}
export default BulkActionsBar;