Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions src/lib/components/ContactForm.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
</script>

<script lang="ts">
import type { IContactUsMessage } from '$api/contact/types';

import { contactUsValidator } from '$api/contact/validator';
import { contactUsValidator, discordRequestValidator } from '$api/contact/validator';
import { page } from '$app/state';
import ValidatedInput from '$components/form/ValidatedInput.svelte';
import ValidatedSelect from '$components/form/ValidatedSelect.svelte';
Expand All @@ -20,34 +18,34 @@
import apiRequest from '$lib/util/apiClient';
import { Button, Spinner, type SelectOptionType } from 'flowbite-svelte';
import { PaperPlaneOutline } from 'flowbite-svelte-icons';
import type { ObjectSchema } from 'yup';

interface Props {
emailRequired?: boolean;
feedbackType?: string;
validator?: ObjectSchema<IContactUsMessage>;
}

let { emailRequired = false, feedbackType, validator = contactUsValidator }: Props = $props();
let { feedbackType }: Props = $props();

const notificationContext = getNotificationContext();

let emailInput: ValidatedInput<'email'> | undefined = $state();
let typeInput: ValidatedSelect<'type'> | string | undefined = $state();
let typeInput: ValidatedSelect<'type'> | undefined = $state();
let nameInput: ValidatedInput<'name'> | undefined = $state();
let messageInput: ValidatedTextarea<'message'> | undefined = $state();

if (feedbackType !== undefined) {
typeInput = feedbackType;
}

let loading = $state(false);

let name = $state('');
let type = $state(page.url.searchParams.get('type') || '');
let email = $state('');
let message = $state('');

if (feedbackType !== undefined) {
type = feedbackType;
}

let emailRequired = $derived(type == 'discord' ? true : false);
let validator = $derived(type == 'discord' ? discordRequestValidator : contactUsValidator);

async function onsubmit(e: Event) {
e.preventDefault();

Expand Down
3 changes: 1 addition & 2 deletions src/routes/(public)/discord/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<script lang="ts">
import { discordRequestValidator } from '$api/contact/validator';
import ContactForm from '$components/ContactForm.svelte';
import ExternalLink from '$components/ExternalLink.svelte';
import SectionHeader from '$components/SectionHeader.svelte';
Expand All @@ -19,6 +18,6 @@
staff member, be sure to use the contact form to get in touch.
</p>
<SectionHeader title="Request access" />
<ContactForm emailRequired feedbackType="discord" validator={discordRequestValidator} />
<ContactForm feedbackType="discord" />
</div>
</div>
Loading