mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-26 17:30:07 +00:00
## Summary <!-- One sentence describing what changed and why. --> Add a disabled state to the sign-up button in the cloud onboarding views. The button should be disabled when the form is invalid to prevent users from submitting incomplete or incorrectly formatted information. ## Changes - **What**: <!-- Core functionality added/modified --> - Add disabled state to SignUp button and SignIn button when SignUp or SignIn form is invalid. - **Breaking**: <!-- Any breaking changes (if none, remove this line) --> - **Dependencies**: <!-- New dependencies (if none, remove this line) --> ## Review Focus <!-- Critical design decisions or edge cases that need attention --> Changes for this notion: https://www.notion.so/comfy-org/Implement-Disable-sign-up-button-when-form-is-invalid-in-cloud-onboarding-2c56d73d365081edbf8bf06b1f5e52e5 <!-- If this PR fixes an issue, uncomment and update the line below --> <!-- Fixes #ISSUE_NUMBER --> ## Screenshots (if applicable) Sign In button Before(button not disabled when email is invalid)  After  <!-- Add screenshots or video recording to help explain your changes --> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7376-fix-disable-the-sign-up-and-sign-in-button-when-form-is-invalid-2c66d73d36508139af44cd7cb1e1aeb9) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action <action@github.com>
74 lines
2.0 KiB
Vue
74 lines
2.0 KiB
Vue
<template>
|
|
<Form
|
|
v-slot="$form"
|
|
class="flex flex-col gap-6"
|
|
:resolver="zodResolver(signUpSchema)"
|
|
@submit="onSubmit"
|
|
>
|
|
<!-- Email Field -->
|
|
<FormField v-slot="$field" name="email" class="flex flex-col gap-2">
|
|
<label
|
|
class="mb-2 text-base font-medium opacity-80"
|
|
for="comfy-org-sign-up-email"
|
|
>
|
|
{{ t('auth.signup.emailLabel') }}
|
|
</label>
|
|
<InputText
|
|
pt:root:id="comfy-org-sign-up-email"
|
|
pt:root:autocomplete="email"
|
|
class="h-10"
|
|
type="text"
|
|
:placeholder="t('auth.signup.emailPlaceholder')"
|
|
:invalid="$field.invalid"
|
|
/>
|
|
<small v-if="$field.error" class="text-red-500">{{
|
|
$field.error.message
|
|
}}</small>
|
|
</FormField>
|
|
|
|
<PasswordFields />
|
|
|
|
<!-- Submit Button -->
|
|
<ProgressSpinner v-if="loading" class="mx-auto h-8 w-8" />
|
|
<Button
|
|
v-else
|
|
type="submit"
|
|
:label="t('auth.signup.signUpButton')"
|
|
class="mt-4 h-10 font-medium"
|
|
:disabled="!$form.valid"
|
|
/>
|
|
</Form>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import type { FormSubmitEvent } from '@primevue/forms'
|
|
import { Form, FormField } from '@primevue/forms'
|
|
import { zodResolver } from '@primevue/forms/resolvers/zod'
|
|
import { useThrottleFn } from '@vueuse/core'
|
|
import Button from 'primevue/button'
|
|
import InputText from 'primevue/inputtext'
|
|
import ProgressSpinner from 'primevue/progressspinner'
|
|
import { computed } from 'vue'
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
import { signUpSchema } from '@/schemas/signInSchema'
|
|
import type { SignUpData } from '@/schemas/signInSchema'
|
|
import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'
|
|
|
|
import PasswordFields from './PasswordFields.vue'
|
|
|
|
const { t } = useI18n()
|
|
const authStore = useFirebaseAuthStore()
|
|
const loading = computed(() => authStore.loading)
|
|
|
|
const emit = defineEmits<{
|
|
submit: [values: SignUpData]
|
|
}>()
|
|
|
|
const onSubmit = useThrottleFn((event: FormSubmitEvent) => {
|
|
if (event.valid) {
|
|
emit('submit', event.values as SignUpData)
|
|
}
|
|
}, 1_500)
|
|
</script>
|