ember-click-outside-modifier
Version:
Ember modifier to catch events outside marked DOM element
77 lines (50 loc) • 2.1 kB
Markdown
Ember modifier to react on clicks outside an element without stopping the event propagation. Great for closing dialogues, menus among other things.
If you need more control on click outside - take a look at [ember-click-outside](https://github.com/zeppelin/ember-click-outside)
Inspired by [v-click-outside](https://github.com/ndelvalle/v-click-outside)
* Ember.js v3.20 or above
- Embroider or ember-auto-import v2 (this is [v2 addon](https://emberjs.github.io/rfcs/0507-embroider-v2-package-format.html))
## Installation
```
ember install ember-click-outside-modifier
```
## Usage
```hbs
<div {{click-outside this.onClickOutside}}></div>
```
You can also provide specific events that you want to bind to with the `event` or `events` named arguments.
```hbs
<div {{click-outside this.onClickOutside event='mouseup'}}></div>
<div {{click-outside this.onClickOutside events=(array 'click' 'mouseup')}}></div>
```
`ember-click-outside-modifier` is a glint enabled addon. Add this to your
`types/global.d.ts` file:
```ts
import '@glint/environment-ember-loose';
import type EmberClickOutsideRegistry from 'ember-click-outside-modifier/template-registry';
declare module '@glint/environment-ember-loose/registry' {
export default interface Registry extends EmberClickOutsideRegistry, /* other addon registries */ {
// local entries
}
}
```
For the entire guide, please refer to [Using
Addons](https://typed-ember.gitbook.io/glint/environments/ember/using-addons#using-glint-enabled-addons)
section on the glint handbook.
Types are made available through package.json `exports` field.
For usage in `gts` or `gjs` files, modifier are exported from the index:
```hbs
import { clickOutside } from 'ember-click-outside-modifier';
<template>
<div {{clickOutside this.handleClickOutside}}>
Lorem ipsum.
</div>
</template>
```
See the [Contributing](CONTRIBUTING.md) guide for details.
This project is licensed under the [MIT License](LICENSE.md).