fix(PersonTypeahead): sync searchTerm when initialName prop changes
After a person swap the parent navigates to a new URL and the server returns swapped names. The component's searchTerm was only set once from initialName at mount time ($state(initialName) captures the initial value only). Adding a reactive $effect ensures the displayed name updates whenever initialName changes — fixing the swap button showing stale names. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -30,8 +30,16 @@ let {
|
|||||||
onfocused
|
onfocused
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
|
|
||||||
|
// searchTerm must be both prop-derived AND locally writable (user typing), so $state +
|
||||||
|
// $effect is the correct pattern here — writable $derived is read-only and won't work.
|
||||||
|
// eslint-disable-next-line svelte/prefer-writable-derived
|
||||||
let searchTerm = $state(initialName);
|
let searchTerm = $state(initialName);
|
||||||
|
|
||||||
|
// Sync display text when the selected person changes externally (e.g. swap, navigation).
|
||||||
|
$effect(() => {
|
||||||
|
searchTerm = initialName;
|
||||||
|
});
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
const suggested = suggestedName;
|
const suggested = suggestedName;
|
||||||
if (suggested && !untrack(() => value)) {
|
if (suggested && !untrack(() => value)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user