1.6.2 ā€¢ Published 12 months ago

bubbleform v1.6.2

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

BubbleForm

  1. Installation
  2. Usage
  3. configuration
  4. examples
  5. License

šŸ’½ Installation

 npm install bubbleform

šŸ“„ Usage

Install in your main ts or js file

  import BubbleForm from "bubbleForm"  
  
  const {} = BubbleForm({})

šŸ›  Configuration

const {
    data: loginData,
    handleChange,
    handleSubmit,
    errors,
    handleBlur,
  } = useForm({
    initialErrorMessage: loginErrorMessage,
    initialValues: loginFormData,
    sanitizeFn: (value) => {
      return value.trim();
    },
    validations: {
      email: {
        required: {
          value: true,
          message: "Email is required",
        },
        pattern: {
          value: "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$",
          message: "Email is invalid",
        },
      },
      password: {
        required: {
          value: true,
          message: "Password is required",
        },
        pattern: {
          value: "^(?=.*[a-z])[a-zA-Z\\d]{8,}$",
          message: "Password must be at least 8 characters",
        },
        custom: {  
          length: { //any custom name 
            isValid: (value: any) => value.length > 6,
            message: "First name must be at least 8 characters",
          },
        },
      },
    },
    onSubmit: () => {
      dispatch(LoginApi(loginData));
    },
  });

šŸ“¦ Props

Bubble Form takes in some parameter to work properly

ParamsDescriptionTypeDefault
datareturn object containing the form dataObjectnone
handleChangeonChange event handler. Useful for when you need to track whether an input has been touched or not. This should be passed to <input onBlur={handleChange()} ... />Functionnone
handleSubmitSubmit handler. This should be passed to <form onSubmit={props.handleSubmit}> Functionnone
handleBluronBlur event handler. Useful for when you need to track whether an input has been touched or not. This should be passed to <input onBlur={handleBlur()} ... />Functionnone

šŸ›  initialErrorMessage

Initial error message to be displayed when the form is rendered for the first time should an empty string or an object with the same keys as the form data

const loginErrorMessage = {
    email: "",
    password: "",
    };
    

Initial values for the form data should an empty string or an object with the same keys as the form data

const loginFormData = {
    email: "",
    password: "",
    };
    

šŸ›  sanitizeFn

A function that takes in the value of the input and returns the sanitized value

const sanitizeFn = (value) => {
    return value.trim();
    };
    

šŸ›  validations

An object containing the validation rules for the form data

const loginValidations = {
    email: {
        required: {
            value: true,
            message: "Email is required",
            },
        pattern: {
            value: "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$",
            message: "Email is invalid",
            },
        },
    password: {
        required: {
            value: true,
            message: "Password is required",
            },
        pattern: {
            value: "^(?=.*[a-z])[a-zA-Z\\d]{8,}$",
            message: "Password must be at least 8 characters",
            },
            custom: { // take in an object of custom rules
            length: { //any custom name
                isValid: (value: any) => value.length > 6, // Function that takes in the value of the input and returns a boolean
                message: "First name must be at least 8 characters", // error message
                },
            },
        },
    };

Issues

If you experience any anomaly or bug while using the component, feel free to create an issue on this repo issues

šŸ‘·šŸ½ Contribution Guide

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request