fix(state): changing species clears language, citizenship, and subspecies selections
This commit is contained in:
parent
48f8b46827
commit
c220815b89
20 changed files with 172 additions and 104 deletions
|
|
@ -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} />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue