import { FC, useState, useCallback } from 'react'; import { Input } from 'antd'; import { DISABLE_AUTO_COMPLETE } from '@/utils'; export default function useColumns(columns: any[] = []) { const [opType, setOpType] = useState(''); const [opRecord, setRecord] = useState | null>(null); const [opTime, setNow] = useState(null); const [opExtra, setExtra] = useState(null); const handleRecord = useCallback((row: Record | null, type: string) => { setOpType(type); setRecord(row); setNow(Date.now()); }, []); const resetRecord = useCallback(() => { setRecord(null); setOpType(''); setNow(Date.now()); }, []); const opNew = useCallback(() => handleRecord(null, 'new'), [handleRecord]); const cols = columns.map((i: any) => { if (i.render) { const opRender = i.render; i.render = (text: string, row: Record) => { return opRender(text, row, { setRecord: handleRecord, setExtra }); }; } return i; }); return { opTime, opType, opNew, columns: cols, opRecord, setRecord: handleRecord, resetRecord, setExtra, opExtra, }; } interface EditRowProps { rowKey: string; row: Record; actions: any; } export const EditRow: FC = ({ rowKey, row, actions }) => { const [isEdit, setEdit] = useState(false); const [val, setVal] = useState(row[rowKey]); const handleEdit = () => { setEdit(true); }; const handleChange = (e: React.ChangeEvent) => { setVal(e.target.value) }; const handleSave = () => { setEdit(false); row[rowKey] = val; actions?.setRecord(row, 'rowedit') }; return isEdit ? ( ) : (
{val}
); };