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

use-form-custom-hook

v1.1.3

Published

Forms Simplified

Downloads

8

Readme

use-form-custom-hook

It is a react library which simplies form validation and error handling using react hooks

Installation

Install use-form-custom-hook library with npm

  npm install use-form-custom-hook

Usage/Examples

import { useFormHook } from "use-form-custom-hook";

const HomePage = () => {
  const {
    err: endDateError,
    value: endDateValue,
    valueChangeHandler: endDateChangeHandler,
  } = useFormHook("Start Date", { required: true });

  return (
    <div>
      <label htmlFor="startDate">Start Date</label>
      <input
        id="startDate"
        type="date"
        placeholder="Start Days"
        ref={daysRef}
        min={new Date().toLocaleString().split(",")[0]}
        onBlur={startDateChangeHandler}
      />
      <div>
        {startDateError && (
          <p className="text-xs color text-red-600 pl-1">{startDateError}</p>
        )}
      </div>
    </div>
  );
};

In the above example we provided two things

  1. Form Control Name - "Start Date"
  2. Validation Object - "{ required: true }"

let us understand this

  1. You can provide any name to any input Control
  2. You can provide different types of validation and also there custom validation message to be shown

in the above example I provided with required validation with no custom message so in case no value is provided onBlur following message will be shown 'Start Date is required'

In case you want to provide custom required message you can pass following Object

'{ required: true, requiredErrorMessage: 'Start Date is Mandatory'}'

This was the one simple use case, for the other such generic use cases- eg(max, min , pattern) you can refer the validation type description

export type validation = {
  max?: number;
  min?: number;
  pattern?: string;
  required?: boolean;
  custom?: any;
  requiredErrorMessage?: string;
  minErrorMessage?: string;
  maxErrorMessage?: string;
  minMaxErrorMessage?: string;
  patternErrorMessage?: string;
  customErrorMessage?: string;
};

Moving on to complex use cases-

Custom validation - you can provide your own validaiton definition in custom property which will require the value of your own input Control

eg -

const customValidator = (startValue: any) => {
  // perform some computation here with the value passed
  // return true if the computation is successful
  // return false if the computation fails
};

and provide that custom validator function in the validation object as shown below

{
  custom: customValidator;
}

if the validation fails and no customErrorMessage is provided the following error is displayed

" is invalid"