1.0.0-alpha.64 • Published 1 year ago

react-formie-forms v1.0.0-alpha.64

Weekly downloads
55
License
MIT
Repository
github
Last release
1 year ago

Integrate Formie forms into React applications faster.

Under the hood we’re using Formik for validation, enabling a more extensible solution via it’s context APIs.

Usage

Below is a simple example. The <Formie /> component will render a full Formie form with validation, including multi-page forms.

import {
  defaultComponents,
  FIELD_TYPE,
  Formie,
  submitForm,
} from "react-formie-forms";
import MyCustomInputComponent from "@/components/MyCustomInputComponent";

// You can override components to style as you want
const components = {
  ...defaultComponents,
  [FIELD_TYPE.SINGLE_LINE_TEXT]: MyCustomInputComponent,
};

export default function FormieWrapper({ formDataFromGraphQl, ...props }) {
  return (
    <Formie
      form={formDataFromGraphQl}
      components={components}
      onSubmit={submitForm("/path/to/formie/submit/action")}
      {...props}
    />
  );
}

Props

  • The required form prop expects the form data queried via GraphQL.
  • The required onSubmit prop expects a promise (i.e. fetch). If you have an endpoint you can just use the submitForm helper method and it’ll take care of everything for you.
  • The components prop allow you to override each different field/component type used in the form.

See the useFormieForm hook and Formik’s useFormik hook for all available props.

The <Formie /> component is a wrapper for the useFormieForm hook and includes some sensible defaults. In 99% of scenarios, this is how you should integrate this library.

GraphQL

The following is an example GraphQL fragment used to query the above form data.

fragment form on FormInterface {
  title
  handle
  settings {
    defaultInstructionsPosition
    defaultLabelPosition
    displayCurrentPageTitle
    displayFormTitle
    displayPageProgress
    displayPageTabs
    loadingIndicator
    loadingIndicatorText
    submitActionFormHide
    submitMethod
  }
  pages {
    id
    name
    rows {
      id
      fields {
        id
        conditions
        containerAttributes {
          label
          value
        }
        cssClasses
        displayName
        enableConditions
        errorMessage
        handle
        inputAttributes {
          label
          value
        }
        labelPosition
        limitAmount
        name
        placeholder
        required
        type
        instructions
        instructionsPosition
        ... on Field_SingleLineText {
          defaultValue
        }
        ... on Field_MultiLineText {
          defaultValue
        }
        ... on Field_Checkboxes {
          options {
            label
            value
            isDefault
          }
        }
        ... on Field_Dropdown {
          options {
            label
            value
            isDefault
          }
        }
        ... on Field_Radio {
          options {
            label
            value
            isDefault
          }
        }
      }
    }
    settings {
      backButtonLabel
      buttonsPosition
      enablePageConditions
      pageConditions
      showBackButton
      submitButtonLabel
    }
  }
}
1.0.0-alpha.64

1 year ago

1.0.0-alpha.52

2 years ago

1.0.0-alpha.51

2 years ago

1.0.0-alpha.54

2 years ago

1.0.0-alpha.53

2 years ago

1.0.0-alpha.59

2 years ago

1.0.0-alpha.56

2 years ago

1.0.0-alpha.58

2 years ago

1.0.0-alpha.57

2 years ago

1.0.0-alpha.63

2 years ago

1.0.0-alpha.62

2 years ago

1.0.0-alpha.61

2 years ago

1.0.0-alpha.60

2 years ago

1.0.0-alpha.50

3 years ago

1.0.0-alpha.38

3 years ago

1.0.0-alpha.39

3 years ago

1.0.0-alpha.41

3 years ago

1.0.0-alpha.40

3 years ago

1.0.0-alpha.43

3 years ago

1.0.0-alpha.42

3 years ago

1.0.0-alpha.49

3 years ago

1.0.0-alpha.48

3 years ago

1.0.0-alpha.45

3 years ago

1.0.0-alpha.44

3 years ago

1.0.0-alpha.47

3 years ago

1.0.0-alpha.46

3 years ago

1.0.0-alpha.37

3 years ago

1.0.0-alpha.36

3 years ago

1.0.0-alpha.35

3 years ago

1.0.0-alpha.34

3 years ago

1.0.0-alpha.33

3 years ago

1.0.0-alpha.30

3 years ago

1.0.0-alpha.32

3 years ago

1.0.0-alpha.31

3 years ago

1.0.0-alpha.27

3 years ago

1.0.0-alpha.29

3 years ago

1.0.0-alpha.28

3 years ago

1.0.0-alpha.19

3 years ago

1.0.0-alpha.16

3 years ago

1.0.0-alpha.15

3 years ago

1.0.0-alpha.18

3 years ago

1.0.0-alpha.17

3 years ago

1.0.0-alpha.14

3 years ago

1.0.0-alpha.21

3 years ago

1.0.0-alpha.20

3 years ago

1.0.0-alpha.26

3 years ago

1.0.0-alpha.23

3 years ago

1.0.0-alpha.22

3 years ago

1.0.0-alpha.25

3 years ago

1.0.0-alpha.24

3 years ago

1.0.0-alpha.12

3 years ago

1.0.0-alpha.13

3 years ago

1.0.0-alpha.11

3 years ago

1.0.0-alpha.10

3 years ago

1.0.0-alpha.9

3 years ago

1.0.0-alpha.8

3 years ago

1.0.0-alpha.6

3 years ago

1.0.0-alpha.4

3 years ago

1.0.0-alpha.3

3 years ago

1.0.0-alpha.2

3 years ago

1.0.0-alpha.1

3 years ago