Portal/rsconcept/frontend/src/dialogs/DlgSubstituteCst.tsx

52 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-06-07 20:17:03 +03:00
'use client';
import clsx from 'clsx';
import { useState } from 'react';
2024-06-07 20:17:03 +03:00
import PickSubstitutions from '@/components/select/PickSubstitutions';
import Modal from '@/components/ui/Modal';
2024-10-29 12:05:23 +03:00
import { HelpTopic } from '@/models/miscellaneous';
2025-01-23 19:41:31 +03:00
import { ICstSubstitute, ICstSubstitutions } from '@/models/oss';
import { IRSForm } from '@/models/rsform';
import { useDialogsStore } from '@/stores/dialogs';
2024-06-07 20:17:03 +03:00
export interface DlgSubstituteCstProps {
schema: IRSForm;
2025-01-23 19:41:31 +03:00
onSubstitute: (data: ICstSubstitutions) => void;
2024-06-07 20:17:03 +03:00
}
function DlgSubstituteCst() {
const { onSubstitute, schema } = useDialogsStore(state => state.props as DlgSubstituteCstProps);
const [substitutions, setSubstitutions] = useState<ICstSubstitute[]>([]);
const canSubmit = substitutions.length > 0;
2024-06-07 20:17:03 +03:00
function handleSubmit() {
2025-01-23 19:41:31 +03:00
const data: ICstSubstitutions = {
substitutions: substitutions
2024-06-07 20:17:03 +03:00
};
onSubstitute(data);
}
return (
<Modal
header='Отождествление'
submitText='Отождествить'
2024-08-23 22:53:32 +03:00
submitInvalidTooltip='Выберите две различные конституенты'
2024-06-07 20:17:03 +03:00
canSubmit={canSubmit}
onSubmit={handleSubmit}
className={clsx('w-[40rem]', 'px-6 pb-3')}
2024-10-29 12:05:23 +03:00
helpTopic={HelpTopic.UI_SUBSTITUTIONS}
2024-06-07 20:17:03 +03:00
>
<PickSubstitutions
allowSelfSubstitution
value={substitutions}
onChange={setSubstitutions}
2024-06-07 20:17:03 +03:00
rows={6}
schemas={[schema]}
2024-06-07 20:17:03 +03:00
/>
</Modal>
);
}
export default DlgSubstituteCst;