docs: use toast in form demos

This commit is contained in:
Sadegh Barati 2023-10-30 22:59:42 +03:30
parent 849596e870
commit a49cf90226
27 changed files with 142 additions and 30 deletions

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { h, ref } from 'vue'
import * as z from 'zod' import * as z from 'zod'
import { format } from 'date-fns' import { format } from 'date-fns'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
@ -26,6 +26,7 @@ import {
PopoverTrigger, PopoverTrigger,
} from '@/lib/registry/default/ui/popover' } from '@/lib/registry/default/ui/popover'
import { Calendar } from '@/lib/registry/new-york/ui/calendar' import { Calendar } from '@/lib/registry/new-york/ui/calendar'
import { toast } from '@/lib/registry/new-york/ui/toast'
const open = ref(false) const open = ref(false)
@ -63,7 +64,10 @@ const filterFunction = (list: typeof languages, search: string) => list.filter(i
// https://github.com/logaretm/vee-validate/issues/3521 // https://github.com/logaretm/vee-validate/issues/3521
// https://github.com/logaretm/vee-validate/discussions/3571 // https://github.com/logaretm/vee-validate/discussions/3571
async function onSubmit(values: any) { async function onSubmit(values: any) {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
} }
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -9,6 +10,7 @@ import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessa
import { Separator } from '@/lib/registry/new-york/ui/separator' import { Separator } from '@/lib/registry/new-york/ui/separator'
import { RadioGroup, RadioGroupItem } from '@/lib/registry/default/ui/radio-group' import { RadioGroup, RadioGroupItem } from '@/lib/registry/default/ui/radio-group'
import { Button, buttonVariants } from '@/lib/registry/new-york/ui/button' import { Button, buttonVariants } from '@/lib/registry/new-york/ui/button'
import { toast } from '@/lib/registry/new-york/ui/toast'
const appearanceFormSchema = toTypedSchema(z.object({ const appearanceFormSchema = toTypedSchema(z.object({
theme: z.enum(['light', 'dark'], { theme: z.enum(['light', 'dark'], {
@ -29,7 +31,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -7,6 +8,7 @@ import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessa
import { Separator } from '@/lib/registry/new-york/ui/separator' import { Separator } from '@/lib/registry/new-york/ui/separator'
import { Checkbox } from '@/lib/registry/new-york/ui/checkbox' import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
import { Button } from '@/lib/registry/new-york/ui/button' import { Button } from '@/lib/registry/new-york/ui/button'
import { toast } from '@/lib/registry/new-york/ui/toast'
const items = [ const items = [
{ {
@ -53,7 +55,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -9,6 +10,7 @@ import { RadioGroup, RadioGroupItem } from '@/lib/registry/new-york/ui/radio-gro
import { Switch } from '@/lib/registry/new-york/ui/switch' import { Switch } from '@/lib/registry/new-york/ui/switch'
import { Checkbox } from '@/lib/registry/new-york/ui/checkbox' import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
import { Button } from '@/lib/registry/new-york/ui/button' import { Button } from '@/lib/registry/new-york/ui/button'
import { toast } from '@/lib/registry/new-york/ui/toast'
const notificationsFormSchema = toTypedSchema(z.object({ const notificationsFormSchema = toTypedSchema(z.object({
type: z.enum(['all', 'mentions', 'none'], { type: z.enum(['all', 'mentions', 'none'], {
@ -32,7 +34,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values, { resetForm }) => { const onSubmit = handleSubmit((values, { resetForm }) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { h, ref } from 'vue'
import { FieldArray, useForm } from 'vee-validate' import { FieldArray, useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -19,6 +19,7 @@ import {
SelectValue, SelectValue,
} from '@/lib/registry/new-york/ui/select' } from '@/lib/registry/new-york/ui/select'
import { Button } from '@/lib/registry/new-york/ui/button' import { Button } from '@/lib/registry/new-york/ui/button'
import { toast } from '@/lib/registry/new-york/ui/toast'
const verifiedEmails = ref(['m@example.com', 'm@google.com', 'm@support.com']) const verifiedEmails = ref(['m@example.com', 'm@google.com', 'm@support.com'])
@ -58,7 +59,10 @@ const { handleSubmit, resetForm } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Checkbox } from '@/lib/registry/default/ui/checkbox' import { Checkbox } from '@/lib/registry/default/ui/checkbox'
import { toast } from '@/lib/registry/default/ui/toast'
const items = [ const items = [
{ {
@ -55,7 +57,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Checkbox } from '@/lib/registry/default/ui/checkbox' import { Checkbox } from '@/lib/registry/default/ui/checkbox'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
mobile: z.boolean().default(false).optional(), mobile: z.boolean().default(false).optional(),
@ -26,7 +28,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -26,6 +27,7 @@ import {
PopoverContent, PopoverContent,
PopoverTrigger, PopoverTrigger,
} from '@/lib/registry/default/ui/popover' } from '@/lib/registry/default/ui/popover'
import { toast } from '@/lib/registry/default/ui/toast'
const languages = [ const languages = [
{ label: 'English', value: 'en' }, { label: 'English', value: 'en' },
@ -50,7 +52,10 @@ const { handleSubmit, setValues, values } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { format } from 'date-fns' import { format } from 'date-fns'
import { Calendar as CalendarIcon } from 'lucide-vue-next' import { Calendar as CalendarIcon } from 'lucide-vue-next'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
@ -22,6 +23,7 @@ import {
PopoverContent, PopoverContent,
PopoverTrigger, PopoverTrigger,
} from '@/lib/registry/default/ui/popover' } from '@/lib/registry/default/ui/popover'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
dob: z.date({ dob: z.date({
@ -34,7 +36,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,9 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
import { h } from 'vue'
import { Button } from '@/lib/registry/default/ui/button' import { Button } from '@/lib/registry/default/ui/button'
import { import {
FormControl, FormControl,
@ -14,7 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Input } from '@/lib/registry/default/ui/input' import { Input } from '@/lib/registry/default/ui/input'
import { toast } from '@/lib/registry/default/ui/toast/use-toast' import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
username: z.string().min(2).max(50), username: z.string().min(2).max(50),

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -14,6 +15,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Input } from '@/lib/registry/default/ui/input' import { Input } from '@/lib/registry/default/ui/input'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
username: z.string().min(2).max(50), username: z.string().min(2).max(50),
@ -24,7 +26,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -12,6 +13,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { RadioGroup, RadioGroupItem } from '@/lib/registry/default/ui/radio-group' import { RadioGroup, RadioGroupItem } from '@/lib/registry/default/ui/radio-group'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
type: z.enum(['all', 'mentions', 'none'], { type: z.enum(['all', 'mentions', 'none'], {
@ -24,7 +26,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -20,6 +21,7 @@ import {
SelectTrigger, SelectTrigger,
SelectValue, SelectValue,
} from '@/lib/registry/default/ui/select' } from '@/lib/registry/default/ui/select'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
email: z email: z
@ -34,7 +36,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -12,6 +13,7 @@ import {
FormLabel, FormLabel,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Switch } from '@/lib/registry/default/ui/switch' import { Switch } from '@/lib/registry/default/ui/switch'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
marketing_emails: z.boolean().default(false).optional(), marketing_emails: z.boolean().default(false).optional(),
@ -26,7 +28,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/default/ui/form' } from '@/lib/registry/default/ui/form'
import { Textarea } from '@/lib/registry/default/ui/textarea' import { Textarea } from '@/lib/registry/default/ui/textarea'
import { toast } from '@/lib/registry/default/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
bio: z bio: z
@ -30,7 +32,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -12,7 +12,6 @@ const props = defineProps<SwitchRootProps & { class?: string }>()
const emits = defineEmits<SwitchRootEmits>() const emits = defineEmits<SwitchRootEmits>()
const forwarded = useForwardPropsEmits(props, emits) const forwarded = useForwardPropsEmits(props, emits)
console.log(props, forwarded)
</script> </script>
<template> <template>

View File

@ -6,7 +6,7 @@ export { default as ToastClose } from './ToastClose.vue'
export { default as ToastTitle } from './ToastTitle.vue' export { default as ToastTitle } from './ToastTitle.vue'
export { default as ToastDescription } from './ToastDescription.vue' export { default as ToastDescription } from './ToastDescription.vue'
export { default as ToastProvider } from './ToastProvider.vue' export { default as ToastProvider } from './ToastProvider.vue'
export { useToast } from './use-toast' export { toast, useToast } from './use-toast'
import { cva } from 'class-variance-authority' import { cva } from 'class-variance-authority'

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { Checkbox } from '@/lib/registry/new-york/ui/checkbox' import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
import { toast } from '@/lib/registry/new-york/ui/toast'
const items = [ const items = [
{ {
@ -55,7 +57,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { Checkbox } from '@/lib/registry/new-york/ui/checkbox' import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
mobile: z.boolean().default(false).optional(), mobile: z.boolean().default(false).optional(),
@ -26,7 +28,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -26,6 +27,7 @@ import {
PopoverContent, PopoverContent,
PopoverTrigger, PopoverTrigger,
} from '@/lib/registry/new-york/ui/popover' } from '@/lib/registry/new-york/ui/popover'
import { toast } from '@/lib/registry/new-york/ui/toast'
const languages = [ const languages = [
{ label: 'English', value: 'en' }, { label: 'English', value: 'en' },
@ -53,7 +55,10 @@ const { handleSubmit, setValues, values } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { format } from 'date-fns' import { format } from 'date-fns'
import { CalendarIcon } from '@radix-icons/vue' import { CalendarIcon } from '@radix-icons/vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
@ -22,6 +23,7 @@ import {
PopoverContent, PopoverContent,
PopoverTrigger, PopoverTrigger,
} from '@/lib/registry/new-york/ui/popover' } from '@/lib/registry/new-york/ui/popover'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
dob: z.date({ dob: z.date({
@ -34,7 +36,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -14,6 +15,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { Input } from '@/lib/registry/new-york/ui/input' import { Input } from '@/lib/registry/new-york/ui/input'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
username: z.string().min(2).max(50), username: z.string().min(2).max(50),
@ -24,7 +26,10 @@ const { isFieldDirty, handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -12,6 +13,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { RadioGroup, RadioGroupItem } from '@/lib/registry/new-york/ui/radio-group' import { RadioGroup, RadioGroupItem } from '@/lib/registry/new-york/ui/radio-group'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
type: z.enum(['all', 'mentions', 'none'], { type: z.enum(['all', 'mentions', 'none'], {
@ -24,7 +26,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -20,6 +21,7 @@ import {
SelectTrigger, SelectTrigger,
SelectValue, SelectValue,
} from '@/lib/registry/new-york/ui/select' } from '@/lib/registry/new-york/ui/select'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
email: z email: z
@ -34,7 +36,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -12,6 +13,7 @@ import {
FormLabel, FormLabel,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { Switch } from '@/lib/registry/new-york/ui/switch' import { Switch } from '@/lib/registry/new-york/ui/switch'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
marketing_emails: z.boolean().default(false).optional(), marketing_emails: z.boolean().default(false).optional(),
@ -26,7 +28,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { h } from 'vue'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import * as z from 'zod' import * as z from 'zod'
@ -13,6 +14,7 @@ import {
FormMessage, FormMessage,
} from '@/lib/registry/new-york/ui/form' } from '@/lib/registry/new-york/ui/form'
import { Textarea } from '@/lib/registry/new-york/ui/textarea' import { Textarea } from '@/lib/registry/new-york/ui/textarea'
import { toast } from '@/lib/registry/new-york/ui/toast'
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
bio: z bio: z
@ -30,7 +32,10 @@ const { handleSubmit } = useForm({
}) })
const onSubmit = handleSubmit((values) => { const onSubmit = handleSubmit((values) => {
console.log('Form submitted!', values) toast({
title: 'You submitted the following values:',
description: h('pre', { class: 'mt-2 w-[340px] rounded-md bg-slate-950 p-4' }, h('code', { class: 'text-white' }, JSON.stringify(values, null, 2))),
})
}) })
</script> </script>

View File

@ -6,7 +6,7 @@ export { default as ToastClose } from './ToastClose.vue'
export { default as ToastTitle } from './ToastTitle.vue' export { default as ToastTitle } from './ToastTitle.vue'
export { default as ToastDescription } from './ToastDescription.vue' export { default as ToastDescription } from './ToastDescription.vue'
export { default as ToastProvider } from './ToastProvider.vue' export { default as ToastProvider } from './ToastProvider.vue'
export { useToast } from './use-toast' export { toast, useToast } from './use-toast'
import { cva } from 'class-variance-authority' import { cva } from 'class-variance-authority'