21
21
* THE SOFTWARE.
22
22
*/
23
23
24
- import { getCorrectPropertyName } from '@material/animation/index.ts ' ;
24
+ import { getCorrectPropertyName } from '@material/animation/index' ;
25
25
import { MDCComponent } from '@material/base/component' ;
26
+ import { MDCTabBar , MDCTabBarFactory } from '../tab-bar/index' ;
27
+ import { MDCTabBarScrollerAdapter } from './adapter' ;
28
+ import { MDCTabBarScrollerFoundation } from './foundation' ;
26
29
27
- import { MDCTabBar } from '../tab-bar/index' ;
28
- import MDCTabBarScrollerFoundation from './foundation' ;
29
-
30
- export { MDCTabBarScrollerFoundation } ;
31
-
32
- export class MDCTabBarScroller extends MDCComponent {
33
- static attachTo ( root ) {
30
+ export class MDCTabBarScroller extends MDCComponent < MDCTabBarScrollerFoundation > {
31
+ static attachTo ( root : Element ) {
34
32
return new MDCTabBarScroller ( root ) ;
35
33
}
36
34
37
35
get tabBar ( ) {
38
36
return this . tabBar_ ;
39
37
}
40
38
41
- initialize ( tabBarFactory = ( root ) => new MDCTabBar ( root ) ) {
42
- this . scrollFrame_ = this . root_ . querySelector ( MDCTabBarScrollerFoundation . strings . FRAME_SELECTOR ) ;
43
- this . tabBarEl_ = this . root_ . querySelector ( MDCTabBarScrollerFoundation . strings . TABS_SELECTOR ) ;
44
- this . forwardIndicator_ = this . root_ . querySelector ( MDCTabBarScrollerFoundation . strings . INDICATOR_FORWARD_SELECTOR ) ;
45
- this . backIndicator_ = this . root_ . querySelector ( MDCTabBarScrollerFoundation . strings . INDICATOR_BACK_SELECTOR ) ;
39
+ protected root_ ! : HTMLElement ; // assigned in MDCComponent constructor
40
+
41
+ private tabBar_ ! : MDCTabBar ; // assigned in initialize()
42
+ private scrollFrame_ ! : HTMLElement ; // assigned in initialize()
43
+ private tabBarEl_ ! : HTMLElement ; // assigned in initialize()
44
+ private forwardIndicator_ ! : HTMLElement ; // assigned in initialize()
45
+ private backIndicator_ ! : HTMLElement ; // assigned in initialize()
46
+
47
+ initialize ( tabBarFactory : MDCTabBarFactory = ( el ) => new MDCTabBar ( el ) ) {
48
+ this . scrollFrame_ =
49
+ this . root_ . querySelector < HTMLElement > ( MDCTabBarScrollerFoundation . strings . FRAME_SELECTOR ) ! ;
50
+ this . tabBarEl_ =
51
+ this . root_ . querySelector < HTMLElement > ( MDCTabBarScrollerFoundation . strings . TABS_SELECTOR ) ! ;
52
+ this . forwardIndicator_ =
53
+ this . root_ . querySelector < HTMLElement > ( MDCTabBarScrollerFoundation . strings . INDICATOR_FORWARD_SELECTOR ) ! ;
54
+ this . backIndicator_ =
55
+ this . root_ . querySelector < HTMLElement > ( MDCTabBarScrollerFoundation . strings . INDICATOR_BACK_SELECTOR ) ! ;
56
+
46
57
this . tabBar_ = tabBarFactory ( this . tabBarEl_ ) ;
47
58
}
48
59
49
60
getDefaultFoundation ( ) {
50
- return new MDCTabBarScrollerFoundation ( {
61
+ // tslint:disable:object-literal-sort-keys
62
+ const adapter : MDCTabBarScrollerAdapter = {
51
63
addClass : ( className ) => this . root_ . classList . add ( className ) ,
52
64
removeClass : ( className ) => this . root_ . classList . remove ( className ) ,
53
65
eventTargetHasClass : ( target , className ) => target . classList . contains ( className ) ,
54
66
addClassToForwardIndicator : ( className ) => this . forwardIndicator_ . classList . add ( className ) ,
55
67
removeClassFromForwardIndicator : ( className ) => this . forwardIndicator_ . classList . remove ( className ) ,
56
68
addClassToBackIndicator : ( className ) => this . backIndicator_ . classList . add ( className ) ,
57
69
removeClassFromBackIndicator : ( className ) => this . backIndicator_ . classList . remove ( className ) ,
58
- isRTL : ( ) =>
59
- getComputedStyle ( this . root_ ) . getPropertyValue ( 'direction' ) === 'rtl' ,
60
- registerBackIndicatorClickHandler : ( handler ) =>
61
- this . backIndicator_ . addEventListener ( 'click' , handler ) ,
62
- deregisterBackIndicatorClickHandler : ( handler ) =>
63
- this . backIndicator_ . removeEventListener ( 'click' , handler ) ,
64
- registerForwardIndicatorClickHandler : ( handler ) =>
65
- this . forwardIndicator_ . addEventListener ( 'click' , handler ) ,
66
- deregisterForwardIndicatorClickHandler : ( handler ) =>
67
- this . forwardIndicator_ . removeEventListener ( 'click' , handler ) ,
68
- registerCapturedInteractionHandler : ( evt , handler ) =>
69
- this . root_ . addEventListener ( evt , handler , true ) ,
70
- deregisterCapturedInteractionHandler : ( evt , handler ) =>
71
- this . root_ . removeEventListener ( evt , handler , true ) ,
72
- registerWindowResizeHandler : ( handler ) =>
73
- window . addEventListener ( 'resize' , handler ) ,
74
- deregisterWindowResizeHandler : ( handler ) =>
75
- window . removeEventListener ( 'resize' , handler ) ,
70
+ isRTL : ( ) => getComputedStyle ( this . root_ ) . getPropertyValue ( 'direction' ) === 'rtl' ,
71
+ registerBackIndicatorClickHandler : ( handler ) => this . backIndicator_ . addEventListener ( 'click' , handler ) ,
72
+ deregisterBackIndicatorClickHandler : ( handler ) => this . backIndicator_ . removeEventListener ( 'click' , handler ) ,
73
+ registerForwardIndicatorClickHandler : ( handler ) => this . forwardIndicator_ . addEventListener ( 'click' , handler ) ,
74
+ deregisterForwardIndicatorClickHandler : ( handler ) => this . forwardIndicator_ . removeEventListener ( 'click' , handler ) ,
75
+ registerCapturedInteractionHandler : ( evt , handler ) => this . root_ . addEventListener ( evt , handler , true ) ,
76
+ deregisterCapturedInteractionHandler : ( evt , handler ) => this . root_ . removeEventListener ( evt , handler , true ) ,
77
+ registerWindowResizeHandler : ( handler ) => window . addEventListener ( 'resize' , handler ) ,
78
+ deregisterWindowResizeHandler : ( handler ) => window . removeEventListener ( 'resize' , handler ) ,
76
79
getNumberOfTabs : ( ) => this . tabBar . tabs . length ,
77
80
getComputedWidthForTabAtIndex : ( index ) => this . tabBar . tabs [ index ] . computedWidth ,
78
81
getComputedLeftForTabAtIndex : ( index ) => this . tabBar . tabs [ index ] . computedLeft ,
@@ -85,7 +88,9 @@ export class MDCTabBarScroller extends MDCComponent {
85
88
} ,
86
89
getOffsetLeftForEventTarget : ( target ) => target . offsetLeft ,
87
90
getOffsetWidthForEventTarget : ( target ) => target . offsetWidth ,
88
- } ) ;
91
+ } ;
92
+ // tslint:enable:object-literal-sort-keys
93
+ return new MDCTabBarScrollerFoundation ( adapter ) ;
89
94
}
90
95
91
96
layout ( ) {
0 commit comments