From e4726b6284a494c54a94ec93aa8b03e59d854fb9 Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Fri, 24 Jul 2026 17:26:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RealtimeTable/Cell/EditCell/EditCell.jsx | 59 ++++++++----------- .../RealtimeTable/RealtimeTable.jsx | 1 - .../components/RealtimeTable/tableColumns.jsx | 22 +------ 3 files changed, 26 insertions(+), 56 deletions(-) diff --git a/web/src/components/RealtimeTable/Cell/EditCell/EditCell.jsx b/web/src/components/RealtimeTable/Cell/EditCell/EditCell.jsx index b9b4554..696b8ef 100644 --- a/web/src/components/RealtimeTable/Cell/EditCell/EditCell.jsx +++ b/web/src/components/RealtimeTable/Cell/EditCell/EditCell.jsx @@ -23,7 +23,7 @@ const FORMULA_INDICATOR_STYLES = { const TEXTAREA_STYLES = { width: '100%', - height: 'auto', + height: '3rem', fieldSizing: 'content', fontSize: 'inherit', }; @@ -32,7 +32,6 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta const { endEditing: contextEndEditing } = useRealtime(); const storageKey = `formula_${tableId}_${cellId}`; - // Объединенное состояние const [state, setState] = useState(() => ({ currentValue: value, displayValue: value, @@ -40,7 +39,7 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta })); // Позиция ячейки - const [position, setPosition] = useState({ left: 0, width: 0, translateY: '' }); + const [position, setPosition] = useState(); const textareaRef = useRef(null); const refFinished = useRef(false); @@ -89,8 +88,8 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta if (!el) return; const resize = () => { - el.style.height = 'auto'; el.style.minHeight = '3rem'; + el.style.height = '3rem'; el.style.height = el.scrollHeight + 'px'; el.style.maxHeight = '180px'; }; @@ -102,16 +101,6 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta return () => observer.disconnect(); }, [state.currentValue]); - // Фокус при монтировании - useEffect(() => { - const el = textareaRef.current; - if (el && !disabled) { - el.focus(); - el.setSelectionRange(el.value.length, el.value.length); - } - }, [disabled]); - - // Сохранение const handleSave = useCallback(() => { const { currentValue } = state; @@ -146,9 +135,8 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta } }, [state, storageKey, onChange]); - // Завершение редактирования const finishEditing = useCallback(() => { - if(refFinished.current) return; + if (refFinished.current) return; refFinished.current = true; if (!disabled) { handleSave(); @@ -170,7 +158,6 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta return () => document.removeEventListener('mousedown', handleClickOutside); }, [finishEditing]); - // Обработчики событий const handleChange = useCallback((e) => { const value = e.target.value; setState(prev => ({ @@ -187,12 +174,11 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta } }, [finishEditing]); - // Мемоизация стилей const editorStyles = useMemo(() => ({ ...EDITOR_STYLES, - left: position.left, - width: position.width, - transform: position.translateY, + left: position?.left || 0, + width: position?.width || 0, + transform: position?.translateY || 0, }), [position]); const textareaStyles = useMemo(() => ({ @@ -204,20 +190,23 @@ const EditCell = memo(({ refCell, onChange, disabled, value, tableId, cellId, ta return ( -
- {state.isFormulaMode && ( -
fx
- )} -