Skip to content

Overview

Form component streamlines form handling and validation by utilizing the powerful felte library. It exports key form-related variables, sets up the form instance as context, and allows for easy management of form data and events.

Usage

Below is code snippet on how the componenet is created.

svelte
<script lang="ts">
  import { createForm } from "felte"
  import { createEventDispatcher, setContext } from "svelte"
  import { key } from "./form"

  export let schema = []
  export let validate = values => { return {} }
  export let transform = values => values
  export let initialValues = {}
  export let validators = []
  export const updateWith = (newData) => {
    Object.keys(newData)
      .forEach(k => {
        setFields(k, newData[k])
      })
  }

  let dispatch = createEventDispatcher()

  let a = {...initialValues}

  const formInfo = createForm({
    onSubmit: (values, context) => {
      dispatch("submit", {values, context})
    },
    validate: validate,
    extend: [...validators],
    transform: transform,
    initialValues: initialValues})

  setContext(key, formInfo)

  const {form, data, setData, setFields } = formInfo

  $: dispatch("change", {values: $data, form: formInfo})
  setTimeout(() => dispatch("ready", formInfo), 0)

  $: window["formInfo"] = formInfo

</script>

<form use:form>
  <slot></slot>
</form>
ts
// form
export const key = {}

Released under the MIT License.