'use client'; import clsx from 'clsx'; import { useState } from 'react'; import { MiniButton } from '@/components/Control'; import DataTable, { createColumnHelper } from '@/components/DataTable'; import { IconMoveDown, IconMoveUp, IconRemove } from '@/components/Icons'; import { CProps } from '@/components/props'; import { NoData } from '@/components/View'; import { IOperation, OperationID } from '../models/oss'; import SelectOperation from './SelectOperation'; interface PickMultiOperationProps extends CProps.Styling { value: OperationID[]; onChange: React.Dispatch>; items: IOperation[]; rows?: number; } const columnHelper = createColumnHelper(); function PickMultiOperation({ rows, items, value, onChange, className, ...restProps }: PickMultiOperationProps) { const selectedItems = value.map(itemID => items.find(item => item.id === itemID)!); const nonSelectedItems = items.filter(item => !value.includes(item.id)); const [lastSelected, setLastSelected] = useState(undefined); function handleDelete(operation: OperationID) { onChange(prev => prev.filter(item => item !== operation)); } function handleSelect(operation?: IOperation) { if (operation) { setLastSelected(operation); onChange(prev => [...prev, operation.id]); setTimeout(() => setLastSelected(undefined), 1000); } } function handleMoveUp(operation: OperationID) { const index = value.indexOf(operation); if (index > 0) { onChange(prev => { const newSelected = [...prev]; newSelected[index] = newSelected[index - 1]; newSelected[index - 1] = operation; return newSelected; }); } } function handleMoveDown(operation: OperationID) { const index = value.indexOf(operation); if (index < value.length - 1) { onChange(prev => { const newSelected = [...prev]; newSelected[index] = newSelected[index + 1]; newSelected[index + 1] = operation; return newSelected; }); } } const columns = [ columnHelper.accessor('alias', { id: 'alias', header: 'Шифр', size: 300, minSize: 150, maxSize: 300 }), columnHelper.accessor('title', { id: 'title', header: 'Название', size: 1200, minSize: 300, maxSize: 1200, cell: props =>
{props.getValue()}
}), columnHelper.display({ id: 'actions', size: 0, cell: props => (
} onClick={() => handleDelete(props.row.original.id)} /> } onClick={() => handleMoveUp(props.row.original.id)} /> } onClick={() => handleMoveDown(props.row.original.id)} />
) }) ]; return (

Список пуст

} />
); } export default PickMultiOperation;