This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch live-edits
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 3cfd75f5f3a8a5b6b2d14c0ea8376271f0c580be
Author: Evan Rusackas <[email protected]>
AuthorDate: Fri Jan 9 11:27:46 2026 -0800

    fix(dashboard): make EditableTitle respond immediately to editing prop
    
    - Use editing prop directly: isEditing = editing || isEditingInternal
    - This ensures the component enters edit mode immediately when prop changes
    - Simplify state syncing and onEditingChange notification logic
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <[email protected]>
---
 .../src/components/EditableTitle/index.tsx         | 23 +++++++++++-----------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-core/src/components/EditableTitle/index.tsx
 
b/superset-frontend/packages/superset-ui-core/src/components/EditableTitle/index.tsx
index a0077a4f721..1fd36aefac8 100644
--- 
a/superset-frontend/packages/superset-ui-core/src/components/EditableTitle/index.tsx
+++ 
b/superset-frontend/packages/superset-ui-core/src/components/EditableTitle/index.tsx
@@ -89,7 +89,10 @@ export function EditableTitle({
   onEditingChange,
   ...rest
 }: EditableTitleProps) {
-  const [isEditing, setIsEditing] = useState(editing);
+  const [isEditingInternal, setIsEditingInternal] = useState(editing);
+  // Use editing prop directly when provided, otherwise use internal state
+  const isEditing = editing || isEditingInternal;
+  const setIsEditing = setIsEditingInternal;
   const [currentTitle, setCurrentTitle] = useState(title);
   const [lastTitle, setLastTitle] = useState(title);
   const [inputWidth, setInputWidth] = useState<number>(0);
@@ -123,12 +126,12 @@ export function EditableTitle({
     }
   }, [title]);
 
-  // Support controlled editing mode - sync isEditing when editing prop 
changes to true
+  // Sync internal state when editing prop changes (for controlled mode)
   useEffect(() => {
-    if (editing && !isEditing) {
-      setIsEditing(true);
+    if (editing) {
+      setIsEditingInternal(true);
     }
-  }, [editing, isEditing]);
+  }, [editing]);
 
   useEffect(() => {
     if (isEditing && contentRef.current) {
@@ -140,16 +143,12 @@ export function EditableTitle({
         textArea.scrollTop = textArea.scrollHeight;
       }
     }
-    // Skip notification only when entering controlled mode
-    // (editing=true, isEditing=false, and isEditing was already false before)
-    // This distinguishes from exiting edit mode (where prevIsEditing was true)
-    const isEnteringControlledMode =
-      editing && !isEditing && !prevIsEditingRef.current;
-    if (!isEnteringControlledMode) {
+    // Notify parent of editing state changes
+    if (prevIsEditingRef.current !== isEditing) {
       onEditingChange?.(isEditing);
     }
     prevIsEditingRef.current = isEditing;
-  }, [isEditing, editing, onEditingChange]);
+  }, [isEditing, onEditingChange]);
 
   function handleClick() {
     if (!canEdit || isEditing) return;

Reply via email to