Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ava/use-email-autocomplete

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

42 Commits

Repository files navigation

useEmailAutocomplete

πŸ“¬ A React hook for email autocomplete inputs


undefined Known Vulnerabilities Known Vulnerabilities

This should work with other libraries including material-ui. Play with it here!

Usage

⚠️ email cannot be destructured. It must be used like email.address and email.isValid ⚠️

import useEmailAutocomplete from 'use-email-autocomplete'
const App = () => {
 const { email, bind } = useEmailAutocomplete()
 
 const onSubmit = () => /* you an use `email.address` from above just like from `state` */
 
 return <input {...bind} />
}

Custom Autocomplete Input

⚠️ email cannot be destructured. It must be used like email.address and email.isValid ⚠️

export const EmailInput = ({ onChange, ...props }) => {
 const { email, onChange: handleEmailChange, bind } = useEmailAutocomplete()
 const { address, isValid } = email // WRONG, DO NOT DO THIS
 
 const handleChange = e => {
 handleEmailChange(e)
 if (!email.isValid) conosle.log('Email is not valid') // RIGHT
 onChange(email.address) // RIGHT
 }
 return <input {...bind} {...props} onChange={handleChange} />
}

Usage with Material UI

Requires @material-ui/core: 4.0.0 and above.

import { TextField } from '@material-ui/core'
export const EmailInput = ({ onChange, ...props }) => {
 const { email, onChange: handleEmailChange, bind } = useEmailAutocomplete()
 
 const handleChange = e => {
 handleEmailChange(e)
 onChange(email.address)
 }
 return <TextField {...bind} {...props} onChange={handleChange} />
}

Examples

Options

Option Description
validation If you don't want to validate, set this to false. Default is true
domains All email domains you want to autocomplete for. Defaults to a predefined array of email domains.

Option Usage

const {
 // `email` is the `value` + `auto suggestion`
 email: { address, isValid },
 // spread `bind` on an `input` or component and it will
 // apply all html valid attributes
 bind,
 // everything within `bind` is below. `bind.value` through `bind.onFocus`
 value,
 onChange,
 ref,
 onBlur,
 onFocus,
} = useEmailAutocomplete({
 domains: [],
 validation: true,
})

About

πŸ“¬ React hook for email autocomplete inputs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /