1+ // Author: Jerroyd Moore
2+
3+ L . Control . Button = L . Control . extend ( {
4+ includes : L . Mixin . Events ,
5+ options : {
6+ position : 'topright' ,
7+ } ,
8+ initialize : function ( label , options ) {
9+ L . setOptions ( this , options ) ;
10+ var button = null ;
11+
12+ if ( label instanceof HTMLElement ) {
13+ button = label ;
14+ try {
15+ button . parentNode . removeChild ( button ) ;
16+ } catch ( e ) { }
17+ } else if ( typeof label === "string" ) {
18+ button = L . DomUtil . create ( 'button' , this . options . className )
19+ } else {
20+ throw new Error ( 'L.Control.Button: failed to initialize, label must either be text or a dom element' ) ;
21+ }
22+
23+ L . DomUtil . addClass ( button , this . options . position ) ;
24+
25+ this . _container = button ;
26+
27+ return this ;
28+ } ,
29+ isToggled : function ( ) {
30+ return L . DomUtil . hasClass ( this . _container , this . options . toggleButton ) ;
31+ } ,
32+ _fireClick : function ( e ) {
33+ this . fire ( 'click' ) ;
34+
35+ if ( this . options . toggleButton ) {
36+ var btn = this . _container ;
37+ if ( this . isToggled ( ) ) {
38+ L . DomUtil . removeClass ( this . _container , this . options . toggleButton ) ;
39+ } else {
40+ L . DomUtil . addClass ( this . _container , this . options . toggleButton ) ;
41+ }
42+ }
43+ } ,
44+ onAdd : function ( map ) {
45+ if ( this . _container ) {
46+ L . DomEvent . on ( this . _container , 'click' , this . _fireClick , this ) ;
47+ var stop = L . DomEvent . stopPropagation ;
48+ L . DomEvent . on ( this . _container , 'mousedown' , stop )
49+ . on ( this . _container , 'touchstart' , stop )
50+ . on ( this . _container , 'dblclick' , stop )
51+ . on ( this . _container , 'mousewheel' , stop )
52+ . on ( this . _container , 'MozMozMousePixelScroll' , stop )
53+ this . fire ( 'load' ) ;
54+
55+ this . _map = map ;
56+ }
57+
58+ return this . _container ;
59+ } ,
60+ onRemove : function ( map ) {
61+ if ( this . _container && this . _map ) {
62+ L . DomEvent . off ( this . _container , 'click' , this . _fireClick , this ) ;
63+ L . DomEvent . off ( this . _container , 'mousedown' , stop )
64+ . off ( this . _container , 'touchstart' , stop )
65+ . off ( this . _container , 'dblclick' , stop )
66+ . off ( this . _container , 'mousewheel' , stop )
67+ . off ( this . _container , 'MozMozMousePixelScroll' , stop )
68+
69+ this . fire ( 'unload' ) ;
70+ this . _map = null ;
71+ }
72+
73+ return this ;
74+ }
75+ } ) ;
76+
77+ L . control . button = function ( label , options ) {
78+ return new L . Control . Button ( label , options ) ;
79+ } ;
0 commit comments