backend/src/components/invitation/Invitation.tsx

82 lines
2.1 KiB
TypeScript
Raw Normal View History

2023-02-21 20:11:03 +00:00
import { createForm } from '@felte/solid';
import { Component, createUniqueId } from 'solid-js';
import { TextField, Button } from '@kobalte/core';
2023-02-21 20:11:03 +00:00
import './style.css';
import { createServerAction$ } from 'solid-start/server';
import PouchDb from 'pouchdb';
import { v4 as uuid } from 'uuid';
2023-02-21 10:23:35 +00:00
interface Props {}
const Invitation: Component<Props> = (props) => {
2023-02-21 12:38:43 +00:00
const [saving, save] = createServerAction$(async (values: any) => {
2023-02-21 20:11:03 +00:00
const db = new PouchDb('.db');
2023-02-21 19:40:54 +00:00
const id = `invitation/${uuid()}`;
2023-02-21 12:38:43 +00:00
await db.put({
2023-02-21 15:12:52 +00:00
_id: id,
2023-02-21 20:11:03 +00:00
type: 'invitation',
...values,
date: new Date().toISOString(),
2023-02-21 12:38:43 +00:00
});
2023-02-21 15:12:52 +00:00
return id;
2023-02-21 12:38:43 +00:00
});
2023-02-21 10:23:35 +00:00
const submitHandler = (values: any, context: any) => {
console.log({
2023-02-21 20:11:03 +00:00
caller: 'Invitation / submitHandler',
2023-02-21 10:23:35 +00:00
props,
values,
context,
});
2023-02-21 12:38:43 +00:00
save(values);
2023-02-21 10:23:35 +00:00
};
const { form } = createForm({ onSubmit: submitHandler });
return (
<form use:form>
2023-02-21 20:11:03 +00:00
<TextField.Root>
<TextField.Label>Mail address</TextField.Label>
<TextField.Input
type='mail'
name='mail'
required={true}
placeholder='Email address'
/>
<TextField.ErrorMessage>
Please provide a valid URL
</TextField.ErrorMessage>
</TextField.Root>
<TextField.Root>
<TextField.Label>Database</TextField.Label>
<TextField.Input
2023-02-21 20:11:03 +00:00
type='url'
name='database'
required={true}
2023-02-21 20:11:03 +00:00
placeholder='Database URL'
/>
<TextField.ErrorMessage>
Please provide a valid URL
</TextField.ErrorMessage>
</TextField.Root>
<TextField.Root>
<TextField.Label>Password</TextField.Label>
<TextField.Input
2023-02-21 20:11:03 +00:00
type='text'
name='password'
required={true}
2023-02-21 20:11:03 +00:00
placeholder='Password'
autocomplete='off'
/>
<TextField.ErrorMessage>
Please provide a valid password
</TextField.ErrorMessage>
</TextField.Root>
2023-02-21 20:11:03 +00:00
<Button.Root type='submit'>Create</Button.Root>
2023-02-21 10:23:35 +00:00
</form>
);
};
export default Invitation;