1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| /**
| * Listen to click outside event
| */
| import { on, off } from '../utils/dom/event';
| export var ClickOutsideMixin = function ClickOutsideMixin(config) {
| return {
| props: {
| closeOnClickOutside: {
| type: Boolean,
| default: true
| }
| },
| data: function data() {
| var _this = this;
|
| var clickOutsideHandler = function clickOutsideHandler(event) {
| if (_this.closeOnClickOutside && !_this.$el.contains(event.target)) {
| _this[config.method]();
| }
| };
|
| return {
| clickOutsideHandler: clickOutsideHandler
| };
| },
| mounted: function mounted() {
| on(document, config.event, this.clickOutsideHandler);
| },
| beforeDestroy: function beforeDestroy() {
| off(document, config.event, this.clickOutsideHandler);
| }
| };
| };
|
|