ConceptPortal-public/rsconcept/frontend/src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx

59 lines
1.8 KiB
TypeScript
Raw Normal View History

'use client';
import clsx from 'clsx';
2023-12-07 01:21:27 +03:00
import { useMemo, useState } from 'react';
import Checkbox from '@/components/ui/Checkbox';
import Modal, { ModalProps } from '@/components/ui/Modal';
import { IRSForm } from '@/models/rsform';
import { classnames, prefixes } from '@/utils/constants';
2023-12-07 01:21:27 +03:00
import ConstituentsList from './ConstituentsList';
2023-12-28 14:04:44 +03:00
interface DlgDeleteCstProps extends Pick<ModalProps, 'hideWindow'> {
selected: number[];
onDelete: (items: number[]) => void;
schema: IRSForm;
2023-12-07 01:21:27 +03:00
}
function DlgDeleteCst({ hideWindow, selected, schema, onDelete }: DlgDeleteCstProps) {
const [expandOut, setExpandOut] = useState(false);
const expansion: number[] = useMemo(() => schema.graph.expandOutputs(selected), [selected, schema.graph]);
function handleSubmit() {
hideWindow();
if (expandOut) {
onDelete(selected.concat(expansion));
} else {
onDelete(selected);
}
}
return (
2023-12-28 14:04:44 +03:00
<Modal
canSubmit
header='Удаление конституент'
submitText={expandOut ? 'Удалить с зависимыми' : 'Удалить'}
hideWindow={hideWindow}
onSubmit={handleSubmit}
className={clsx('max-w-[60vw] min-w-[30rem]', 'px-6', classnames.flex_col)}
>
<ConstituentsList
title='Выбраны к удалению'
list={selected}
items={schema.items}
prefix={prefixes.cst_delete_list}
/>
<ConstituentsList
title='Зависимые конституенты'
list={expansion}
items={schema.items}
prefix={prefixes.cst_dependant_list}
/>
<Checkbox label='Удалить зависимые конституенты' value={expandOut} setValue={value => setExpandOut(value)} />
</Modal>
);
2023-12-07 01:21:27 +03:00
}
2023-12-28 14:04:44 +03:00
export default DlgDeleteCst;