npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

formik-mui-hook

v0.2.1

Published

Formik-MUI-Hook is a tiny, robust library designed to make it painless to work with Formik alongside MUI (Material-UI) components. By utilizing the hooks provided, developers can achieve better, simplified, and more readable forms with ease. This library

Downloads

4

Readme

Formik-MUI-Hook

Formik-MUI-Hook is a tiny, robust library designed to make it painless to work with Formik alongside MUI (Material-UI) components. By utilizing the hooks provided, developers can achieve better, simplified, and more readable forms with ease. This library aims to bridge the gap between Formik's powerful form handling capabilities and MUI's wide range of beautifully designed components.

useFormik Hook Documentation

Setup

Before using formik-mui-hook, ensure that you have its peer dependencies installed. You would need both formik and @mui/material. If not, you can install all required libraries with the following command:

npm install formik @mui/material formik-mui-hook

or with yarn:

yarn add formik @mui/material formik-mui-hook

Why?

Creating forms can be a tedious task with a lot of boilerplate, especially when integrating different libraries. Formik-MUI-Hook is here to simplify the process by providing straightforward hooks to seamlessly blend MUI components with Formik's state management. By doing this, developers can avoid repetitive code and focus more on business logic rather than form handling.

Example

Here are some usage examples to get a quick taste of what working with Formik-MUI-Hook looks like.

import React from "react";
import { useFormikMui } from "formik-mui-hook";
import {
  TextField,
  Checkbox,
  FormControlLabel,
  List,
  ListItem,
} from "@mui/material";
import * as yup from "yup";

const MyForm = () => {
  const { formik, formikMuiHelper } = useFormikMui({
    initialValues: {
      confirmText: "",
      checkedGroups: [],
    },
    validationSchema: yup.object().shape({
      confirmText: yup.string().required("Confirmation Text is required"),
      checkedGroups: yup.array().required("You must select at least one group"),
    }),
    onSubmit: (values) => {
      console.log(values);
    },
  });

  const groupOptions = ["group1", "group2", "group3"];

  return (
    <form onSubmit={formik.handleSubmit}>
      <List>
        {groupOptions.map((group) => (
          <ListItem sx={{ pb: 0 }}>
            <FormControlLabel
              label={group}
              control={
                <Checkbox
                  {...formikMuiHelper.passToCheckbox("checkedGroups", group)}
                />
              }
            />
          </ListItem>
        ))}
      </List>

      <TextField
        sx={{ width: "100%" }}
        {...formikMuiHelper.passToTextField("confirmText")}
        placeholder="Confirmation Text"
      />

      <button type="submit">Submit</button>
    </form>
  );
};

export default MyForm;

In this example, we've created a simple form with a checkbox group and a text field. Formik-MUI-Hook provides passToTextField and passToCheckbox helper functions which eliminate the need to manually handle changes and link the MUI components to Formik's state. The validation is also handled seamlessly with Yup, providing a robust solution for client-side validation.

API

The core of this library is the useFormikMui hook and the formikMuiHelper object it returns. This object provides various helper functions designed to pass the necessary props to MUI components. Here are the key helpers provided:

  • passToTextField(key: string, options?: PassToTextFieldOption): TextFieldProps
  • passToCheckbox(key: string, value?: any): { name: string } & CheckboxProps
  • passToRadioGroup(key: string): { name: string } & RadioGroupProps

And many more... Explore the library, and simplify your Formik + MUI forms like never before!