chore: misc improvements

This commit is contained in:
swve 2024-06-15 15:19:11 +01:00
parent 46e09f27c2
commit c8cff9cbb4
4 changed files with 45 additions and 24 deletions

View file

@ -42,6 +42,7 @@ function ForgotPasswordClient() {
email: '' email: ''
}, },
validate, validate,
validateOnBlur: true,
onSubmit: async (values) => { onSubmit: async (values) => {
setIsSubmitting(true) setIsSubmitting(true)
let res = await sendResetLink(values.email, org?.id) let res = await sendResetLink(values.email, org?.id)

View file

@ -51,8 +51,17 @@ const LoginClient = (props: LoginClientProps) => {
password: '', password: '',
}, },
validate, validate,
onSubmit: async (values) => { validateOnBlur: true,
validateOnChange: true,
onSubmit: async (values, {validateForm, setErrors, setSubmitting}) => {
setIsSubmitting(true) setIsSubmitting(true)
const errors = await validateForm(values);
if (Object.keys(errors).length > 0) {
setErrors(errors);
setSubmitting(false);
return;
}
const res = await signIn('credentials', { const res = await signIn('credentials', {
redirect: false, redirect: false,
email: values.email, email: values.email,
@ -139,7 +148,7 @@ const LoginClient = (props: LoginClientProps) => {
onChange={formik.handleChange} onChange={formik.handleChange}
value={formik.values.email} value={formik.values.email}
type="email" type="email"
required
/> />
</Form.Control> </Form.Control>
</FormField> </FormField>
@ -155,7 +164,7 @@ const LoginClient = (props: LoginClientProps) => {
onChange={formik.handleChange} onChange={formik.handleChange}
value={formik.values.password} value={formik.values.password}
type="password" type="password"
required
/> />
</Form.Control> </Form.Control>
</FormField> </FormField>

View file

@ -59,7 +59,7 @@ function DynamicCanvaModal({ submitActivity, chapterId, course }: any) {
</FormMessage> </FormMessage>
</Flex> </Flex>
<Form.Control asChild> <Form.Control asChild>
<Textarea onChange={handleActivityDescriptionChange} required /> <Textarea onChange={handleActivityDescriptionChange} />
</Form.Control> </Form.Control>
</FormField> </FormField>

View file

@ -1,5 +1,5 @@
import { useOrg } from '@components/Contexts/OrgContext' import { useOrg } from '@components/Contexts/OrgContext'
import { getAPIUrl } from '@services/config/config' import { getAPIUrl, getUriWithOrg } from '@services/config/config'
import { createInviteCode, createInviteCodeWithUserGroup } from '@services/organizations/invites' import { createInviteCode, createInviteCodeWithUserGroup } from '@services/organizations/invites'
import { swrFetcher } from '@services/utils/ts/requests' import { swrFetcher } from '@services/utils/ts/requests'
import { Ticket } from 'lucide-react' import { Ticket } from 'lucide-react'
@ -7,6 +7,7 @@ import { useLHSession } from '@components/Contexts/LHSessionContext'
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import toast from 'react-hot-toast' import toast from 'react-hot-toast'
import useSWR, { mutate } from 'swr' import useSWR, { mutate } from 'swr'
import Link from 'next/link'
type OrgInviteCodeGenerateProps = { type OrgInviteCodeGenerateProps = {
setInvitesModal: any setInvitesModal: any
@ -56,6 +57,8 @@ function OrgInviteCodeGenerate(props: OrgInviteCodeGenerateProps) {
<h1 className='mx-auto pt-4 text-gray-600 font-medium'>Invite Code linked to a UserGroup</h1> <h1 className='mx-auto pt-4 text-gray-600 font-medium'>Invite Code linked to a UserGroup</h1>
<h2 className='mx-auto text-xs text-gray-600 font-medium'>On Signup, Users will be automatically linked to a UserGroup of your choice</h2> <h2 className='mx-auto text-xs text-gray-600 font-medium'>On Signup, Users will be automatically linked to a UserGroup of your choice</h2>
<div className='flex items-center space-x-4 pt-3 mx-auto'> <div className='flex items-center space-x-4 pt-3 mx-auto'>
{usergroups?.length >= 1 &&
<div className='flex space-x-4 items-center'>
<select <select
defaultValue={usergroup_id} defaultValue={usergroup_id}
className='flex p-2 w-fit rounded-md text-sm bg-gray-100'> className='flex p-2 w-fit rounded-md text-sm bg-gray-100'>
@ -64,7 +67,9 @@ function OrgInviteCodeGenerate(props: OrgInviteCodeGenerateProps) {
{usergroup.name} {usergroup.name}
</option> </option>
))} ))}
</select> </select>
<div className=''> <div className=''>
<button <button
onClick={createInviteWithUserGroup} onClick={createInviteWithUserGroup}
@ -74,6 +79,12 @@ function OrgInviteCodeGenerate(props: OrgInviteCodeGenerateProps) {
<span> Generate </span> <span> Generate </span>
</button> </button>
</div> </div>
</div>}
{usergroups?.length == 0 &&
<div className='flex space-x-3 items-center text-xs pt-3'>
<span className='px-3 text-yellow-700 font-bold rounded-full py-1 mx-3'>No UserGroups available </span>
<Link className='px-3 text-blue-700 font-bold rounded-full py-1 bg-blue-100 mx-1' target='_blank' href={getUriWithOrg(org.slug, '/dash/users/settings/usergroups')}>Create a UserGroup </Link>
</div>}
</div> </div>
</div> </div>
</div> </div>