Skip to content

Commit c0d2e1e

Browse files
committed
Union component test
1 parent 54acb80 commit c0d2e1e

File tree

7 files changed

+131
-0
lines changed

7 files changed

+131
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script lang="ts">
2+
import Union from './union.svelte';
3+
import { superForm as _superForm } from '$lib/index.js';
4+
import type { UnionSchema } from './schemas.js';
5+
6+
export let data;
7+
8+
const superForm = _superForm<UnionSchema>(data.form);
9+
</script>
10+
11+
<Union {superForm} />
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { zod } from '$lib/adapters/zod.js';
2+
import { superValidate } from '$lib/index.js';
3+
import { schema } from './schemas.js';
4+
5+
export const load = async () => {
6+
const form = await superValidate(zod(schema));
7+
8+
return { form };
9+
};
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
:root {
2+
--sk-back-h: 206;
3+
--sk-back-3-hsl: ;
4+
--sk-back-1: hsl(0, 0%, 100%);
5+
--sk-back-2: hsl(0, 0%, 100%);
6+
--sk-back-3: hsl(206, 64%, 98%);
7+
--sk-back-4: hsl(206, 44%, 93%);
8+
--sk-back-5: hsl(206, 20%, 80%);
9+
--sk-text-1: hsl(0, 0%, 13%);
10+
--sk-text-2: hsl(0, 0%, 27%);
11+
--sk-text-3: hsl(240, 8%, 44%);
12+
--sk-theme-1: hsl(15, 100%, 55%);
13+
--sk-theme-2: hsl(240, 8%, 44%);
14+
--sk-theme-3: hsl(204, 100%, 63%);
15+
--sk-font: 'Overpass', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
16+
Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
17+
--sk-font-mono: 'Fira Mono', monospace;
18+
}
19+
20+
body {
21+
background-color: var(--sk-back-3);
22+
color: var(--sk-text-1);
23+
margin: 0.75em;
24+
font-family: var(--sk-font);
25+
accent-color: var(--sk-theme-1);
26+
}
27+
28+
@media (prefers-color-scheme: dark) {
29+
:root {
30+
--sk-back-1: hsl(0, 0%, 10%);
31+
--sk-back-2: hsl(0, 0%, 18%);
32+
--sk-back-3: hsl(0, 0%, 14%);
33+
--sk-back-4: hsl(0, 0%, 22%);
34+
--sk-back-5: hsl(0, 0%, 40%);
35+
--sk-text-1: hsl(0, 0%, 90%);
36+
--sk-text-2: hsl(0, 0%, 80%);
37+
--sk-text-3: hsl(0, 0%, 65%);
38+
}
39+
40+
body {
41+
color-scheme: dark;
42+
}
43+
44+
a {
45+
color: var(--sk-theme-3);
46+
}
47+
48+
a:visited {
49+
color: hsl(267, 100%, 75%);
50+
}
51+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts" context="module">
2+
type T = Record<string, unknown>;
3+
</script>
4+
5+
<script lang="ts" generics="T extends Record<string, unknown>">
6+
import type { FormPathLeaves, SuperForm } from '$lib/index.js';
7+
8+
export let superForm: SuperForm<T>;
9+
export let field: FormPathLeaves<T>;
10+
</script>
11+
12+
<p>{superForm.isTainted()}</p>
13+
<p>{field}</p>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { Infer } from '$lib/index.js';
2+
import { z } from 'zod';
3+
4+
export const eventSchema = z.object({
5+
name: z.string(),
6+
desc: z.string().nullable()
7+
});
8+
9+
export const eventTemplateSchema = z.object({
10+
name: z.string(),
11+
id: z.string()
12+
});
13+
14+
export const admissionSchema = z.object({
15+
name: z.string()
16+
});
17+
18+
export const schema = z.union([eventTemplateSchema, eventSchema, admissionSchema]);
19+
20+
export type UnionSchema =
21+
| Infer<typeof eventSchema>
22+
| Infer<typeof admissionSchema>
23+
| Infer<typeof eventTemplateSchema>;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script lang="ts">
2+
import type { SuperForm } from '$lib/index.js';
3+
import { type UnionSchema } from './schemas.js';
4+
import Input from './input.svelte';
5+
6+
export let superForm: SuperForm<UnionSchema>;
7+
</script>
8+
9+
{superForm.isTainted()}
10+
11+
<Input {superForm} field="name" />
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts" context="module">
2+
type T = { name: string };
3+
</script>
4+
5+
<script lang="ts" generics="T extends { name: string }">
6+
import type { SuperForm } from '$lib/index.js';
7+
//import type { admissionSchema, eventTemplateSchema, eventSchema } from './schemas.js';
8+
import Input from './input.svelte';
9+
10+
export let superForm: SuperForm<T>;
11+
</script>
12+
13+
<Input {superForm} field="name" />

0 commit comments

Comments
 (0)