Skip to content

Commit afcb4dc

Browse files
added slug display to create project
Signed-off-by: Benjamin Strasser <bp.strasser@gmail.com>
1 parent 2b5fc2f commit afcb4dc

File tree

5 files changed

+30
-12
lines changed

5 files changed

+30
-12
lines changed

pnpm-lock.yaml

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1+
import { createSlug } from 'services/util/slug/slug-service'
12
import { z } from 'zod'
23

3-
export const createProjectSchema = z.object({
4-
name: z
5-
.string({ required_error: 'Project name is required' })
6-
.min(1, 'Project name must have at least one character'),
7-
base_language_code: z
8-
.string({ required_error: 'Base language is required' })
9-
.min(1, 'Base language must have at least one character')
10-
})
4+
export const createProjectSchema = z
5+
.object({
6+
name: z
7+
.string({ required_error: 'Project name is required' })
8+
.min(1, 'Project name must have at least one character'),
9+
base_language_code: z
10+
.string({ required_error: 'Base language is required' })
11+
.min(1, 'Base language must have at least one character')
12+
})
13+
.refine((data) => createSlug(data.name).length > 0, {
14+
message: 'URL must have at least one character',
15+
path: ['name']
16+
})
1117

1218
export type CreateProjectFormSchema = z.infer<typeof createProjectSchema>

src/components/container/projects/create-project.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import * as Form from '$components/ui/form'
99
import { page } from '$app/stores'
1010
import { toast } from 'svelte-sonner'
11+
import SlugDisplay from './slug-display.svelte'
1112
1213
export let data: SuperValidated<Infer<typeof createProjectSchema>>
1314
@@ -56,6 +57,7 @@
5657
bind:value={$formData.name}
5758
/>
5859
</Form.Control>
60+
<SlugDisplay name={$formData.name} />
5961
<Form.FieldErrors />
6062
</Form.Field>
6163
<Form.Field {form} name="base_language_code">
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script lang="ts">
2+
import { createSlug } from 'services/util/slug/slug-service'
3+
4+
export let name: string
5+
</script>
6+
7+
<div class="ml-3 flex text-xs">
8+
URL will be: /projects/
9+
<div class="font-bold">{createSlug(name)}</div>
10+
</div>

vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ export default defineConfig({
66
test: {
77
include: ['src/**/*.{test,spec}.{js,ts}', 'services/**/*.{test,spec}.{js,ts}']
88
},
9-
server: { port: 3000 },
9+
server: { port: 3000, fs: { allow: ['services/src/util/slug'] } }, // Add shared workspace and move slug to shared
1010
preview: { port: 3000 }
1111
})

0 commit comments

Comments
 (0)