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

@sajith-pj/react-former

v0.1.20

Published

This package will helps you to deals with the forms in React JS. Its will helps you to create forms, validate the forms and to deal with the form submission. This package will take array and return the curresponding form

Downloads

0

Readme

Introduction

This package will helps you to deals with the forms in React JS. Its will helps you to create forms, validate the forms and to deal with the form submission. This package will take array and return the curresponding form

Usage

To auotmate the code or to reduce the efforts in the implimentation of forms in React JS.

Installation

npm install @sajith-pj/react-former

Once the package is installed, you can import the <Form/> using import:

import Form from "@sajith-pj/react-former"

Read From Here

An input will have three parts 1.Label(<Label>), 2.input(<input/>) and a wrapper 3.Div(<div>) which will wrap the input and label.

| Keys | Usage | | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | template | This will be an array of object and each object will contains the information about lable, input and teh container div | | container | This is key included in the object of template array. This will used to define the properties of the container div like className, name,id etc. | | label | This is key included in the object of template array. This will used to define the properties of the label tag like className, name,id etc.Here, One thing you should remember is the innerText of label is passed as text(Example will available in the example sections) | | input | This is key included in the object of template array. This will used to define the properties of the input tag like className, name,id etc. Here, One thing you should remember is In case of radio input and checkbox you should pass a extra key "value"(Example will available in the example sections) | | render | This is key included in the object of template array. This will used to used to render custom input fields or you can use this funcntion to render some extra information in between your form. This function will receive handleChange, touched, errors, and values. (Example will available in the example sections) | | buttons | This key is used to specify the buttons that you want use in the form. This will be a object with keys items and containerClassName. The items will be an array of objects, each object will contains the properties of button items array would not be a empty array, one of the button should be a type of submit The containerClassName will helps you to style the parent div of buttons | | validationSchema | This is an object to set your validation. We expect a Yup object for validation | | submit | This is an object which helps you to deal with form submission.This object contains onBeforeSubmit: This function will run before the api call onAfterApiSuccess: This function will run after the api response is success onAfterApiFail: This function will run after the api fails body: This could be an array or an function that defines the body of the api request method:This key will help you to define the http method |

Examples

A simple example will save your minutes

//  formConfig.js

   const let form = {
        // Each object of template array will generate
        // <div> => container object
        // <label>Example Label</label> => label object
        // <input type="text" name="example" id="example" /> => input object
        // </div>
         template: [
                    {
                        container: {
                            className: "",
                        },
                        label: {
                            text: "Username*", // innerText of label tag
                            className: "",
                        },
                        input: {
                            type: "text",
                            name: "username",
                            placeholder: "Enter Username",
                            className: "",
                        },
                    },
                    {
                        container: {
                            className: "",
                        },
                        label: {
                            text: "Password*",// innerText of label tag
                            className: "",
                        },
                        input: {
                            type: "password",
                            name: "password",
                            placeholder: "Password",
                            className: "",
                        },
                    },
                    {
                    render: () => ( // you can render function to render custim fields like this
                        <div className=" flex w-full justify-end mb-4">
                        <Link href="/forgot-password">
                            {" "}
                            <span className="text-white"> Forgot Password ? </span>
                        </Link>
                        </div>
                    ),
                    },
                ],
         buttons: {
                    containerClassName: "center",
                    // button will rendered inside a container div, containerClassName will assigned to the container div
                    items: [
                        // button object
                    {
                        type: "submit",
                        name: "submit",
                        id: "submit",
                        displayText: "Sign In", // innerText of button
                        className: "", // className for button
                    },
                    ],
                },
                validationSchema:{
                     username: Yup.string().required("Please enter the username"), // username is name of input type text
                     password: Yup.string().required("Please enter the password"),// password is name of input type  password
                },
            submit: {
                // if api is defined
                api: "/login",
                method: "POST",
                onBeforeSubmit:()=>{},
                onAfterApiSuccess:()=>{},
                onAfterApiFail:()=>{},
                // if body is a function
                body: ({ values }) => { // values is a object with input values
                    return { otp: `${values.password}${values.username}` };
                },
                // if body is array
                body: ["username", "password"],
            }
        }
export { form }
import * as Yup from "yup";
import Form, { config } from "react-former-package";
import config from "./axiosConfig";
import { form } from "./formConfig"

config(config);  //=> config function will expect a object with key axios, eg: { axios: axiosInstance }
const App = () => {

    return(
        <Form {...form}>
    )
}

Config

We are using axios to make api calls, so you can config the axios instance using this config function. Its is expected to be called in the entry point of your app (index.js in React JS).

// axiosConfig.js.
// you can seperate the axios config.
import axios from "axios";

// axios instance for making requests
const axiosInstance = axios.create();
// request interceptor for adding token
axiosInstance.interceptors.request.use((config) => {
  // add token to request headers
  config.baseURL = `https://your-base-url/api`;
  config.headers = Object.assign(
    {
      Authorization: `${localStorage.getItem("accessToken")}`,
    },
    config.headers
  );
  //   ... rest of your config.
  return config;
});

axiosInstance.interceptors.response.use(
  (response) => {
    return response;
  },
  (err) => {
    return Promise.reject(err);
  }
);

const config = { axios: axiosInstance };
export default config;
import React from "react";
import Form, { config } from "react-former-package";
import { form } from "./formConfig"
import config from "./axiosConfig";

config(config); //=> config function will expect a object with key axios, eg: { axios: axiosInstance }
function App() {
  return (
    <div className="App">
      <Form {...form} />
    </div>
  );
}

export default App;