Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m55s
74 lines
1.9 KiB
React
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;
|