'use client'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import Modal from '@/components/ui/Modal'; import SelectSingle from '@/components/ui/SelectSingle'; import TextInput from '@/components/ui/TextInput'; import usePartialUpdate from '@/hooks/usePartialUpdate'; import { HelpTopic } from '@/models/miscellaneous'; import { CstType, ICstRenameData, IRSForm } from '@/models/rsform'; import { generateAlias, validateNewAlias } from '@/models/rsformAPI'; import { useDialogsStore } from '@/stores/dialogs'; import { labelCstType } from '@/utils/labels'; import { SelectorCstType } from '@/utils/selectors'; export interface DlgRenameCstProps { schema: IRSForm; initial: ICstRenameData; allowChangeType: boolean; onRename: (data: ICstRenameData) => void; } function DlgRenameCst() { const { schema, initial, allowChangeType, onRename } = useDialogsStore(state => state.props as DlgRenameCstProps); const [validated, setValidated] = useState(false); const [cstData, updateData] = usePartialUpdate(initial); useEffect(() => { if (schema && initial && cstData.cst_type !== initial.cst_type) { updateData({ alias: generateAlias(cstData.cst_type, schema) }); } }, [initial, cstData.cst_type, updateData, schema]); useEffect(() => { setValidated( !!schema && cstData.alias !== initial.alias && validateNewAlias(cstData.alias, cstData.cst_type, schema) ); }, [cstData.cst_type, cstData.alias, initial, schema]); return ( onRename(cstData)} className={clsx('w-[30rem]', 'py-6 pr-3 pl-6 flex gap-3 justify-center items-center ')} helpTopic={HelpTopic.CC_CONSTITUENTA} > updateData({ cst_type: data?.value ?? CstType.BASE })} /> updateData({ alias: event.target.value })} /> ); } export default DlgRenameCst;