forked from yuehu/toggle
/
index.js
63 lines (53 loc) · 1.23 KB
/
index.js
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
* Toggle
*
* Toggle labels for the given element.
*
* Copyright (c) 2014 by Hsiaoming Yang.
*/
var query = require('query');
var classes = require('classes');
var events = require('event');
var emitter = require('emitter');
function Toggle(el) {
if (!(this instanceof Toggle)) {
return new Toggle(el);
}
el._class = el._class || classes(el);
el._class.add('toggle');
var me = this;
me.el = el;
var repl;
if (!query('.toggle-hover-active', el)) {
repl = query('.toggle-inner-active', el);
if (repl) {
repl.className += ' toggle-hover-active';
}
}
if (!query('.toggle-hover-inactive', el)) {
repl = query('.toggle-inner-inactive', el);
if (repl) {
repl.className += ' toggle-hover-inactive';
}
}
events.bind(el, 'click', function(e) {
e.preventDefault();
if (el._class.has('toggle-active')) {
me.emit('inactive');
me.inactive();
} else {
me.emit('active');
me.active();
}
});
}
emitter(Toggle.prototype);
// show on label
Toggle.prototype.active = function() {
this.el._class.add('toggle-active');
};
// show off label
Toggle.prototype.inactive = function() {
this.el._class.remove('toggle-active');
};
module.exports = Toggle;