2024-10-23 09:55:14 +00:00
< template >
< DocSectionText v-bind ="$attrs" >
2024-10-30 10:26:41 +00:00
< p > InputNumber integrates seamlessly with the < NuxtLink to = "/forms" > PrimeVue Forms < / NuxtLink > library . < / p >
2024-10-23 09:55:14 +00:00
< / DocSectionText >
< div class = "card flex justify-center" >
< Form v-slot ="$form" :resolver="resolver" :initialValues="initialValues" @submit="onFormSubmit" class="flex flex-col gap-4 w-full sm:w-56" >
2024-10-30 10:26:41 +00:00
< div class = "flex flex-col gap-1" >
2024-10-30 11:28:01 +00:00
< InputNumber name = "amount" fluid / >
< Message v-if ="$form.amount?.invalid" severity="error" size="small" variant="simple" > {{ $ form.amount.error ? .message }} < / Message >
2024-10-23 09:55:14 +00:00
< / div >
< Button type = "submit" severity = "secondary" label = "Submit" / >
< / Form >
< / div >
< DocSectionCode :code ="code" : dependencies = "{ zod: '3.23.8' }" / >
< / template >
< script >
2024-11-01 21:54:30 +00:00
import { zodResolver } from '@primevue/forms/resolvers/zod' ;
2024-10-23 09:55:14 +00:00
import { z } from 'zod' ;
export default {
data ( ) {
return {
initialValues : {
2024-10-30 11:28:01 +00:00
amount : 5
2024-10-23 09:55:14 +00:00
} ,
resolver : zodResolver (
z . object ( {
2024-10-30 11:28:01 +00:00
amount : z . union ( [ z . number ( ) . gt ( 0 , { message : 'Must be greater than 0.' } ) . lt ( 10 , { message : 'Must be less than 10.' } ) , z . literal ( null ) ] ) . refine ( ( val ) => val !== null , { message : 'Number is required.' } )
2024-10-23 09:55:14 +00:00
} )
) ,
code : {
basic : `
< Form v-slot ="$form" :resolver="resolver" :initialValues="initialValues" @submit="onFormSubmit" class="flex flex-col gap-4 w-full sm:w-56" >
2024-10-30 10:26:41 +00:00
< div class = "flex flex-col gap-1" >
2024-10-30 11:28:01 +00:00
< InputNumber name = "amount" fluid / >
< Message v-if ="$form.amount?.invalid" severity="error" size="small" variant="simple" > {{ $ form.amount.error ? .message }} < / Message >
2024-10-23 09:55:14 +00:00
< / div >
< Button type = "submit" severity = "secondary" label = "Submit" / >
< / Form >
` ,
options : `
< template >
< div class = "card flex justify-center" >
< Form v-slot ="$form" :resolver="resolver" :initialValues="initialValues" @submit="onFormSubmit" class="flex flex-col gap-4 w-full sm:w-56" >
2024-10-30 10:26:41 +00:00
< div class = "flex flex-col gap-1" >
2024-10-30 11:28:01 +00:00
< InputNumber name = "amount" fluid / >
< Message v-if ="$form.amount?.invalid" severity="error" size="small" variant="simple" > {{ $ form.amount.error ? .message }} < / Message >
2024-10-23 09:55:14 +00:00
< / div >
< Button type = "submit" severity = "secondary" label = "Submit" / >
< / Form >
< / div >
< / template >
< script >
2024-11-01 21:54:30 +00:00
import { zodResolver } from '@primevue/forms/resolvers/zod' ;
2024-10-23 09:55:14 +00:00
import { z } from 'zod' ;
export default {
data ( ) {
return {
initialValues : {
2024-10-30 11:28:01 +00:00
amount : 5
2024-10-23 09:55:14 +00:00
} ,
resolver : zodResolver (
z . object ( {
2024-10-30 11:28:01 +00:00
amount : z . union ( [ z . number ( ) . gt ( 0 , { message : 'Must be greater than 0.' } ) . lt ( 10 , { message : 'Must be less than 10.' } ) , z . literal ( null ) ] ) . refine ( ( val ) => val !== null , { message : 'Number is required.' } )
2024-10-23 09:55:14 +00:00
} )
)
}
} ,
methods : {
onFormSubmit ( { valid } ) {
if ( valid ) {
this . $toast . add ( { severity : 'success' , summary : 'Form is submitted.' , life : 3000 } ) ;
}
}
}
}
< \ / script >
` ,
composition : `
< template >
< div class = "card flex justify-center" >
< Form v-slot ="$form" :resolver="resolver" :initialValues="initialValues" @submit="onFormSubmit" class="flex flex-col gap-4 w-full sm:w-56" >
2024-10-30 10:26:41 +00:00
< div class = "flex flex-col gap-1" >
2024-10-30 11:28:01 +00:00
< InputNumber name = "amount" fluid / >
< Message v-if ="$form.amount?.invalid" severity="error" size="small" variant="simple" > {{ $ form.amount.error ? .message }} < / Message >
2024-10-23 09:55:14 +00:00
< / div >
< Button type = "submit" severity = "secondary" label = "Submit" / >
< / Form >
< / div >
< / template >
< script setup >
import { ref } from 'vue' ;
2024-11-01 21:54:30 +00:00
import { zodResolver } from '@primevue/forms/resolvers/zod' ;
2024-10-23 09:55:14 +00:00
import { useToast } from "primevue/usetoast" ;
import { z } from 'zod' ;
const toast = useToast ( ) ;
const initialValues = ref ( {
2024-10-30 11:28:01 +00:00
amount : 5
2024-10-23 09:55:14 +00:00
} ) ;
const resolver = ref ( zodResolver (
z . object ( {
2024-10-30 11:28:01 +00:00
amount : z . union ( [ z . number ( ) . gt ( 0 , { message : 'Must be greater than 0.' } ) . lt ( 10 , { message : 'Must be less than 10.' } ) , z . literal ( null ) ] ) . refine ( ( val ) => val !== null , { message : 'Number is required.' } )
2024-10-23 09:55:14 +00:00
} )
) ) ;
const onFormSubmit = ( { valid } ) => {
if ( valid ) {
toast . add ( { severity : 'success' , summary : 'Form is submitted.' , life : 3000 } ) ;
}
} ;
< \ / script >
`
}
} ;
} ,
methods : {
onFormSubmit ( { valid } ) {
if ( valid ) {
this . $toast . add ( { severity : 'success' , summary : 'Form is submitted.' , life : 3000 } ) ;
}
}
}
} ;
< / script >