1.0.25 • Published 4 months ago

svelte-form-zod v1.0.25

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Sobre

Svelte Form Zod é uma biblioteca de formulários para SvelteKit que usa Zod para validação de dados.

Instalação

npm install svelte-form-zod

ou

yarn add svelte-form-zod

Como usar

Criando um formulário

Para criar um formulário, você precisa criar um arquivo .svelte e importar a função createForm e o z do Zod.

<script lang="ts">
	import { createForm, z } from 'svelte-form-zod';

	const schema = z.object({
		name: z.string().min(3).max(50),
		email: z.string().email(),
		password: z.string().min(6).max(50),
		phone: z.string(),
		cnpj: z.string()
	});

	const initialValues = {
		name: '',
		email: '',
		password: '',
		phone: '',
		cnpj: ''
	};

	const { form, errors } = createForm({
		schema,
		initialValues,
		masked: {
			phone: '(99) 9999-9999', // ou ['(99) 9999-9999','(99) 9 9999-9999']
			cnpj: '99.999.999/9999-99'
		},
		onSubmit: (values) => {
			const { name, email, password, phone, cnpj } = values;
			console.log(name, email, password, phone, cnpj);
		}
	});
</script>

<form use:form>
	<label>
		<input type="text" name="name" />
		{#if $errors.name}
			<span>{$errors.name}</span>
		{/if}
	</label>
	<label>
		<input type="text" name="email" />
		{#if $errors.email}
			<span>{$errors.email}</span>
		{/if}
	</label>
	<label>
		<input type="password" name="password" />
		{#if $errors.password}
			<span>{$errors.password}</span>
		{/if}
	</label>

	<label>
		<input type="text" name="phone" />
		{#if $errors.phone}
			<span>{$errors.phone}</span>
		{/if}
	</label>

	<label>
		<input type="text" name="cnpj" />
		{#if $errors.cnpj}
			<span>{$errors.cnpj}</span>
		{/if}
	</label>

	<button type="submit">Enviar</button>
</form>

createForm

  • schema - Esquema de validação do formulário
  • initialValues - Objeto com os valores iniciais do formulário
  • onSubmit - Função que será executada quando o formulário for submetido
  • masked - Objeto com os campos que devem ser mascarados
  • errors - Objeto com os erros de validação do formulário
  • watch - Objeto com os valores dos campos do formulário
  • form - Objeto use:form do formulário Svelte
  • reset - Função que reseta o formulário para os valores iniciais
  • updateField - Função que atualiza um campo específico do formulário
  • updateFields - Função que atualiza vários campos do formulário
  • setError - Função que define um erro de validação para um campo específico do formulário
  • setErrors - Função que define vários erros de validação para o formulário
  • resetError - Função que remove o erro de validação de um campo específico do formulário
  • resetErrors - Função que remove todos os erros de validação do formulário
  • getValue - Função que retorna o valor de um campo específico do formulário
  • getValues - Função que retorna um objeto com os valores de todos os campos do formulário

Masked

const { form } = createForm({
	schema,
	initialValues,
	masked: {
		phone: '(99) 9999-9999', // ou ['(99) 9999-9999','(99) 9 9999-9999']
		uf: 'AA'
	},
	onSubmit
});

errors

const { form, errors, setError, setErrors, resetError, resetErrors } = createForm({
    schema,
    initialValues,
    onSubmit
})

{#if $errors.name}
    <span>{$errors.name}</span>
{/if}

setError('name', 'Nome inválido')
setErrors({
    name: 'Nome inválido',
    email: 'Email inválido'
})

resetError('name')
resetErrors()

watch

const { form, watch } = createForm({
    schema,
    initialValues,
    onSubmit
})

{#if $watch.name}
    <span>{$watch.name}</span>
{/if}


<input type="text" bind:value={$watch.name} />
<input type="text" bind:value={$watch.email} />

updateField

const { form, updateField } = createForm({
    schema,
    initialValues,
    onSubmit
})

updateField('name', 'Name')
updateField('email', 'Email')

ou

<input type="text" on:input={e => updateField('name', e.target.value)} />
<input type="text" on:input={e => updateField('email', e.target.value)} />

updateFields

const { form, updateFields } = createForm({
    schema,
    initialValues,
    onSubmit
})

updateFields({ name: 'Name', email: 'Email' })

ou

<input type="text" on:input={e => updateFields({ name: e.target.value })} />
<input type="text" on:input={e => updateFields({ email: e.target.value })} />

getValue

const { form, getValue } = createForm({
	schema,
	initialValues,
	onSubmit
});

const name = getValue('name');
const email = getValue('email');

getValues

const { form, getValues } = createForm({
	schema,
	initialValues,
	onSubmit
});

const { name, email } = getValues();

reset

const { form, reset } = createForm({
	schema,
	initialValues,
	onSubmit
});

reset();

Autor

@viniribeirodev
1.0.25

4 months ago

1.0.24

4 months ago

1.0.23

4 months ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago