'use client'; import clsx from 'clsx'; import { useCallback, useMemo, useState } from 'react'; import { IconRemove } from '@/components/Icons'; import SelectUser from '@/components/select/SelectUser'; import Label from '@/components/ui/Label'; import MiniButton from '@/components/ui/MiniButton'; import Modal from '@/components/ui/Modal'; import { useUsers } from '@/context/UsersContext'; import { UserID } from '@/models/user'; import TableUsers from './TableUsers'; interface DlgEditEditorsProps { editors: UserID[]; setEditors: (newValue: UserID[]) => void; hideWindow: () => void; } function DlgEditEditors({ hideWindow, editors, setEditors }: DlgEditEditorsProps) { const [selected, setSelected] = useState(editors); const { users } = useUsers(); const filtered = useMemo(() => users.filter(user => !selected.includes(user.id)), [users, selected]); function handleSubmit() { setEditors(selected); } const onDeleteEditor = useCallback((target: UserID) => setSelected(prev => prev.filter(id => id !== target)), []); const onAddEditor = useCallback((target: UserID) => setSelected(prev => [...prev, target]), []); const usersTable = useMemo( () => selected.includes(user.id))} onDelete={onDeleteEditor} />, [users, selected, onDeleteEditor] ); return (
Всего редакторов [{selected.length}] } disabled={selected.length === 0} onClick={() => setSelected([])} />
{usersTable}
); } export default DlgEditEditors;