agegate

4.0.1 • Public • Published

Agegate

A simple function that verifies a date of birth against a country's legal drinking age.

npm i agegate

Usage

import agegate from "agegate";
 
var user = {
  dateOfBirth: new Date("2015-02-14"), // strings are also accepted
  country: "US",
};
 
var isLegal = agegate(user.dateOfBirth, user.country); // false

⚠️ If an invalid date is supplied, the result will be falsy. If an invalid country code is supplied, it will validate against a default legal drinking age of 18.

Use with frameworks (e.g. React)

In order to use this library with frontend UI frameworks, the underlying dataset used to validate is also exported.

import React, { useState } from "react";
import agegate, { getData } from "agegate";
 
const countries = getData();
 
function Modal() {
  const [date, setDate] = useState("");
  const [country, setCountry] = useState(countries[0].code);
  const [legal, setLegal] = useState(false);
 
  const submitHandler = e => {
    e.preventDefault();
 
    if (date && country) {
      const result = agegate(new Date(date), country);
      setLegal(result);
    }
  };
 
  return (
    <div>
      <form onSubmit={submitHandler}>
        <h3>Enter your date of birth</h3>
        <input
          type="date"
          value={date}
          onChange={e => setDate(e.target.value)}
        />
 
        <h3>Enter your country</h3>
        <select value={country} onChange={e => setCountry(e.target.value)}>
          {countries.map(({ code, name }) => (
            <option key={name} value={code}>
              {name}
            </option>
          ))}
        </select>
 
        <button type="submit">Submit</button>
      </form>
 
      <p style={{ color: legal ? "green" : "red" }}>
        RESULT: You are {legal ? "" : "NOT"} old enough!
      </p>
    </div>
  );
}

Please file a new issue if you find any inconsistencies in the countries dataset.

Package Sidebar

Install

npm i agegate

Weekly Downloads

25

Version

4.0.1

License

MIT

Unpacked Size

20.1 kB

Total Files

9

Last publish

Collaborators

  • izolate