import { Button, Flex, Grid, NumberInput, Select, SelectItem } from '@mantine/core'; import { useForm } from '@mantine/form'; import { useTranslation } from 'next-i18next'; import { useConfigContext } from '../../../../config/provider'; interface ChangePositionModalProps { initialX?: number; initialY?: number; initialWidth?: number; initialHeight?: number; widthData: SelectItem[]; heightData: SelectItem[]; onSubmit: (x: number, y: number, width: number, height: number) => void; onCancel: () => void; } export const ChangePositionModal = ({ initialX, initialY, initialWidth, initialHeight, widthData, heightData, onCancel, onSubmit, }: ChangePositionModalProps) => { const { name: configName } = useConfigContext(); const form = useForm({ initialValues: { x: initialX ?? null, y: initialY ?? null, width: initialWidth?.toString() ?? '', height: initialHeight?.toString() ?? '', }, validateInputOnChange: true, validateInputOnBlur: true, }); const handleSubmit = () => { if (!configName) { return; } const width = parseInt(form.values.width, 10); const height = parseInt(form.values.height, 10); if (!form.values.x || !form.values.y || Number.isNaN(width) || Number.isNaN(height)) return; onSubmit(form.values.x, form.values.y, width, height); }; const { t } = useTranslation(['layout/modals/change-position', 'common']); return (
); }; type FormType = { x: number | null; y: number | null; width: string; height: string; };