1
1
< link rel ="import " href ="../polymer/polymer.html ">
2
+ < link rel ="import " href ="../elliptical-polymer-behaviors/component-behavior.html ">
3
+ < link rel ="import " href ="../elliptical-mutation-summary/elliptical-mutation-summary.html ">
2
4
< script src ="ftscroller.js "> </ script >
3
5
4
6
< dom-module id ="md-scroll ">
12
14
13
15
is : 'md-scroll' ,
14
16
17
+ behaviors : [ Elliptical . ComponentBehavior ] ,
15
18
16
19
properties : {
17
- selector :{
18
- type :String ,
19
- value :null
20
- } ,
21
- _scroller :{
22
- type :Object ,
23
- value :null
24
- }
20
+ selector :{
21
+ type :String ,
22
+ value :'[md-scroll]'
23
+ } ,
24
+ _scroller :{
25
+ type :Object ,
26
+ value :null
27
+ }
25
28
} ,
26
29
27
30
ready :function ( ) {
28
- var self = this ;
29
- setTimeout ( function ( ) {
30
- self . _initScroll ( ) ;
31
- } , 500 ) ;
31
+ this . _events ( ) ;
32
32
} ,
33
33
34
34
detached :function ( ) {
35
- var scroller = this . _scroller ;
36
- scroller . destroy ( ) ;
35
+ this . _destroyScroller ( ) ;
37
36
} ,
38
37
39
- _initScroll :function ( ) {
40
- var selector = ( this . selector ) ? this . selector : '[md-scroll]' ;
41
- var container = $ ( document ) . find ( selector ) [ 0 ] ;
42
- if ( container ) {
43
- var scroller = new FTScroller ( container , {
44
- scrollbars : false ,
45
- scrollingX : false
46
- } ) ;
47
- this . _scroller = scroller ;
38
+ _events :function ( ) {
39
+ this . _event ( $ ( document ) , 'OnDocumentMutation' , this . _onMutation . bind ( this ) ) ;
40
+ } ,
48
41
42
+ _onMutation :function ( event , summary ) {
43
+ var self = this ;
44
+ var scrollable ;
45
+ var added = summary . added ;
46
+ var removed = summary . removed ;
47
+ if ( added && added . length > 0 ) {
48
+ if ( this . _scroller ) return ;
49
+ added = $ ( added ) ;
50
+ scrollable = added . find ( this . selector ) ;
51
+ if ( scrollable [ 0 ] ) {
52
+ setTimeout ( function ( ) {
53
+ self . _initScroll ( scrollable [ 0 ] ) ;
54
+ } , 1250 ) ;
55
+ }
56
+ }
57
+ if ( removed && removed . length ) {
58
+ if ( ! this . _scroller ) return ;
59
+ removed = $ ( removed ) ;
60
+ scrollable = removed . find ( this . selector ) ;
61
+ if ( scrollable [ 0 ] ) this . _destroyScroller ( ) ;
49
62
}
50
63
} ,
51
64
65
+ _destroyScroller :function ( ) {
66
+ var scroller = this . _scroller ;
67
+ if ( scroller ) scroller . destroy ( ) ;
68
+ } ,
69
+
70
+ _initScroll :function ( scrollable ) {
71
+ var scroller = new FTScroller ( scrollable , {
72
+ scrollbars : false ,
73
+ scrollingX : false
74
+ } ) ;
75
+
76
+ this . _scroller = scroller ;
77
+ }
78
+
52
79
} ) ;
53
80
54
81
</ script >
0 commit comments