fix(contract-number): input шифра заказчика снова редактируемый
- Убрано локальное состояние customerValue, теперь значение берётся напрямую из parsed.value - Убран лишний useEffect, который мог сбрасывать ввод при глобальном редактировании - Состояние mode продолжает синхронизироваться с value prop
This commit is contained in:
@@ -60,23 +60,17 @@ export default function ContractNumberField({
|
|||||||
}: ContractNumberFieldProps) {
|
}: ContractNumberFieldProps) {
|
||||||
const parsed = parseValue(value);
|
const parsed = parseValue(value);
|
||||||
const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode);
|
const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode);
|
||||||
const [customerValue, setCustomerValue] = useState(parsed.mode === 'customer' ? parsed.value : '');
|
const customerValue = parsed.mode === 'customer' ? parsed.value : '';
|
||||||
const [preview, setPreview] = useState<string>('');
|
const [preview, setPreview] = useState<string>('');
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [error, setError] = useState<string>('');
|
const [error, setError] = useState<string>('');
|
||||||
|
|
||||||
// Синхронизируем локальное состояние с value prop, чтобы при повторном открытии
|
// Синхронизируем локальное состояние mode с value prop, чтобы при повторном открытии
|
||||||
// глобального редактирования mode и customerValue соответствовали сохранённому значению.
|
// глобального редактирования переключатель соответствовал сохранённому значению.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setMode(parsed.mode);
|
setMode(parsed.mode);
|
||||||
}, [parsed.mode]);
|
}, [parsed.mode]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (parsed.mode === 'customer') {
|
|
||||||
setCustomerValue(parsed.value);
|
|
||||||
}
|
|
||||||
}, [parsed.mode, parsed.value]);
|
|
||||||
|
|
||||||
const legalEntityFormId = config?.legalEntityFormId;
|
const legalEntityFormId = config?.legalEntityFormId;
|
||||||
const legalEntityTaskId = parsed.legalEntityTaskId;
|
const legalEntityTaskId = parsed.legalEntityTaskId;
|
||||||
|
|
||||||
@@ -125,12 +119,11 @@ export default function ContractNumberField({
|
|||||||
if (newMode === 'mine') {
|
if (newMode === 'mine') {
|
||||||
onChange({ mode: 'mine', value: '', legalEntityTaskId: parsed.legalEntityTaskId });
|
onChange({ mode: 'mine', value: '', legalEntityTaskId: parsed.legalEntityTaskId });
|
||||||
} else {
|
} else {
|
||||||
onChange({ mode: 'customer', value: customerValue, legalEntityTaskId: parsed.legalEntityTaskId });
|
onChange({ mode: 'customer', value: parsed.value || '', legalEntityTaskId: parsed.legalEntityTaskId });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCustomerChange = (val: string) => {
|
const handleCustomerChange = (val: string) => {
|
||||||
setCustomerValue(val);
|
|
||||||
onChange({ mode: 'customer', value: val, legalEntityTaskId: parsed.legalEntityTaskId });
|
onChange({ mode: 'customer', value: val, legalEntityTaskId: parsed.legalEntityTaskId });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user