JSPM

  • Created
  • Published
  • Downloads 59319
  • Score
    100M100P100Q179155F
  • License MIT

Package Exports

  • react-multi-email
  • react-multi-email/dist/commonjs/index.js
  • react-multi-email/dist/es6/index.js
  • react-multi-email/dist/style.css

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-multi-email) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

npm version

react-multi-email

A simple react component to format multiple email as the user types.

  • Simple code
  • No dependency
  • Small size
  • Simple customization

See Demo

Installation

npm install react-multi-email

Usage

import * as React from 'react';
import { ReactMultiEmail, isEmail } from 'react-multi-email';
import 'react-multi-email/dist/style.css';

interface Props {}

function BasicExample(props: Props) {
  const [emails, setEmails] = React.useState<string[]>([]);
  const [focused, setFocused] = React.useState(false);

  return (
    <form>
      <h3>Email</h3>
      <ReactMultiEmail
        placeholder='Input your email'
        emails={emails}
        onChange={(_emails: string[]) => {
          setEmails(_emails);
        }}
        autoFocus={true}
        onFocus={() => setFocused(true)}
        onBlur={() => setFocused(false)}
        getLabel={(email, index, removeEmail) => {
          return (
            <div data-tag key={index}>
              <div data-tag-item>{email}</div>
              <span data-tag-handle onClick={() => removeEmail(index)}>
                ×
              </span>
            </div>
          );
        }}
      />
      <br />
      <h4>react-multi-email value</h4>
      <h3>Focused: {focused ? 'true' : 'false'}</h3>
      <p>{emails.join(', ') || 'empty'}</p>
    </form>
  );
}

export default BasicExample;

Props

Property Type Default Description
id string
emails string[]
onChange (emails: string[]) => void;
enable ({ emailCnt }: { emailCnt: number }) => boolean;
onDisabled () => void;
onChangeInput (value: string) => void;
onFocus () => void;
onBlur () => void;
onKeyDown (evt: React.KeyboardEvent) => void;
onKeyUp (evt: React.KeyboardEvent) => void;
noClass boolean
validateEmail (email: string) => boolean | Promise;
enableSpinner boolean
style React.CSSProperties
getLabel ( email: string, index: number, removeEmail: (index: number, isDisabled?: boolean) => void, ) => React.ReactNode;
className string ''
inputClassName string ''
placeholder string | React.ReactNode;
autoFocus boolean;
spinner () => React.ReactNode;
delimiter string; '[ ,;]'
autoComplete string | undefined
initialInputValue string | undefined ''
disableOnBlurValidation boolean | undefined false
inputValue string | undefined undefined

License

MIT

If you don't mind, don't forget to press "star" before leaving.