Fix Input ref timing, PairEditor initialization, and environment variable focus

This commit is contained in:
Gregory Schier
2025-11-04 14:04:12 -08:00
parent fa3a0b57f9
commit 0a6228bf16
3 changed files with 13 additions and 5 deletions

View File

@@ -401,7 +401,7 @@ function EncryptionInput({
setState({ fieldType: 'encrypted', security, value, obscured: true, error: null });
// We're calling this here because we want the input to be fully initialized so the caller
// can do stuff like change the selection.
setRef?.(inputRef.current);
requestAnimationFrame(() => setRef?.(inputRef.current));
},
onError: (value) => {
setState({

View File

@@ -128,14 +128,19 @@ export function PairEditor({
const initPairEditorRow = useCallback(
(id: string, n: RowHandle | null) => {
const isLast = id === pairs[pairs.length - 1]?.id;
if (isLast) return; // Never add the last pair
rowsRef.current[id] = n;
const ready =
Object.values(rowsRef.current).filter((v) => v != null).length === pairs.length - 1; // Ignore the last placeholder pair
const validHandles = Object.values(rowsRef.current).filter((v) => v != null);
// NOTE: Ignore the last placeholder pair
const ready = validHandles.length === pairs.length - 1;
if (ready) {
setRef?.(handle);
}
},
[handle, pairs.length, setRef],
[handle, pairs, setRef],
);
useEffect(() => {

View File

@@ -39,6 +39,8 @@ export async function editEnvironment(
}
}
let didFocusVariable = false;
toggleDialog({
id: 'environment-editor',
noPadding: true,
@@ -48,8 +50,9 @@ export async function editEnvironment(
<EnvironmentEditDialog
initialEnvironmentId={environment?.id ?? null}
setRef={(pairEditor: PairEditorHandle | null) => {
if (focusId) {
if (focusId && !didFocusVariable) {
pairEditor?.focusValue(focusId);
didFocusVariable = true;
}
}}
/>