fix(state): changing species clears language, citizenship, and subspecies selections

This commit is contained in:
lew 2026-03-24 02:33:35 +00:00
parent 48f8b46827
commit c220815b89
20 changed files with 172 additions and 104 deletions

View file

@ -1,16 +1,24 @@
<script lang="ts">
import type { LanguagesField } from '$lib/types';
import { languages } from '$lib/data';
import { languages, species } from '$lib/data';
import { slugify } from '$lib/utils/slugify';
import MultiSelectField from './MultiSelectField.svelte';
let { field, value = ['Tau Ceti Basic'], onChange }: {
let { field, value = [], onChange, data }: {
field: LanguagesField;
value: string[];
onChange: (v: string[]) => void;
data: Record<string, unknown>;
} = $props();
const options = languages.map((l) => ({ value: l.name, label: l.name }));
const multiField = $derived({ ...field, type: 'multi-select' as const, options });
let currentSpecies = $derived(species.find((s) => s.id === data[slugify('Species')]));
let filtered = $derived(
currentSpecies
? languages.filter((l) => currentSpecies!.languages.includes(l.id))
: languages
);
let options = $derived(filtered.map((l) => ({ value: l.name, label: l.name })));
let multiField = $derived({ ...field, type: 'multi-select' as const, options });
</script>
<MultiSelectField field={multiField} {value} {onChange} />