Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ava/use-email-autocomplete

📬 React hook for email autocomplete inputs
https://github.com/ava/use-email-autocomplete

Last synced: 6 days ago
JSON representation

📬 React hook for email autocomplete inputs

Awesome Lists containing this project

README

        


useEmailAutocomplete

📬 A React hook for email autocomplete inputs


npm i use-email-autocomplete













undefined





Known Vulnerabilities


Known Vulnerabilities

This should work with other libraries including `material-ui`.
Play with it [here](https://alex-cory.github.io/email-autocomplete-input/)!

Usage
-----

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

```jsx
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
}
```

Custom Autocomplete Input
-------------------------

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

```jsx
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
}
```

Usage with Material UI
----------------------

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

```jsx
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
}
```

### Examples

- [Codesandbox](https://codesandbox.io/s/useemailautocomplete-material-ui-j5m1x)

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

```js

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,
})
```