@@ -28,12 +28,11 @@ import TopAppBarRow from './Row';
2828import TopAppBarTitle from './Title' ;
2929import TopAppBarIcon from './Icon' ;
3030import { cssClasses } from './constants' ;
31- import {
32- MDCFixedTopAppBarFoundation ,
33- MDCTopAppBarFoundation ,
34- MDCShortTopAppBarFoundation ,
35- // @ts -ignore no .d.ts file
36- } from '@material/top-app-bar/dist/mdc.topAppBar' ;
31+ import { MDCFixedTopAppBarFoundation } from '@material/top-app-bar/fixed/foundation' ;
32+ import { MDCTopAppBarAdapter } from '@material/top-app-bar/adapter' ;
33+ import { MDCTopAppBarFoundation } from '@material/top-app-bar/standard/foundation' ;
34+ import { MDCShortTopAppBarFoundation } from '@material/top-app-bar/short/foundation' ;
35+ import { SpecificEventListener } from '@material/base/types' ;
3736
3837export type MDCTopAppBarFoundationTypes
3938 = MDCFixedTopAppBarFoundation | MDCTopAppBarFoundation | MDCShortTopAppBarFoundation ;
@@ -57,6 +56,7 @@ export interface TopAppBarProps<T> extends React.HTMLProps<T>, DeprecatedProps {
5756 style ?: React . CSSProperties ;
5857 scrollTarget ?: React . RefObject < HTMLElement > ;
5958 tag ?: string ;
59+ onNavIconClicked ?: ( ) => void ;
6060}
6161
6262interface TopAppBarState {
@@ -72,7 +72,7 @@ class TopAppBar<T extends HTMLElement = HTMLHeadingElement> extends React.Compon
7272 TopAppBarState
7373 > {
7474 topAppBarElement : React . RefObject < HTMLElement > = React . createRef ( ) ;
75- foundation ? : MDCTopAppBarFoundationTypes ;
75+ foundation ! : MDCTopAppBarFoundationTypes ;
7676
7777 state : TopAppBarState = {
7878 classList : new Set ( ) ,
@@ -171,7 +171,7 @@ class TopAppBar<T extends HTMLElement = HTMLHeadingElement> extends React.Compon
171171 return Object . assign ( { } , style , this . props . style ) ;
172172 } ;
173173
174- get adapter ( ) {
174+ get adapter ( ) : MDCTopAppBarAdapter {
175175 return {
176176 addClass : ( className : string ) =>
177177 this . setState ( { classList : this . state . classList . add ( className ) } ) ,
@@ -192,14 +192,14 @@ class TopAppBar<T extends HTMLElement = HTMLHeadingElement> extends React.Compon
192192 }
193193 return 0 ;
194194 } ,
195- registerScrollHandler : ( handler : EventListener ) => {
195+ registerScrollHandler : ( handler : SpecificEventListener < 'scroll' > ) => {
196196 if ( this . state . scrollTarget && this . state . scrollTarget . current ) {
197197 this . state . scrollTarget . current . addEventListener ( 'scroll' , handler ) ;
198198 } else {
199199 window . addEventListener ( 'scroll' , handler ) ;
200200 }
201201 } ,
202- deregisterScrollHandler : ( handler : EventListener ) => {
202+ deregisterScrollHandler : ( handler : SpecificEventListener < 'scroll' > ) => {
203203 if ( this . state . scrollTarget && this . state . scrollTarget . current ) {
204204 this . state . scrollTarget . current . removeEventListener ( 'scroll' , handler ) ;
205205 } else {
@@ -219,6 +219,21 @@ class TopAppBar<T extends HTMLElement = HTMLHeadingElement> extends React.Compon
219219 }
220220 return 0 ;
221221 } ,
222+ registerResizeHandler : ( handler : SpecificEventListener < 'resize' > ) => {
223+ window . addEventListener ( 'resize' , handler ) ;
224+ } ,
225+ deregisterResizeHandler : ( handler : SpecificEventListener < 'resize' > ) => {
226+ window . removeEventListener ( 'resize' , handler ) ;
227+ } ,
228+ // onClick handler of navigation bar is used instead
229+ // see https://github.com/material-components/material-components-web/issues/2813
230+ registerNavigationIconInteractionHandler : ( ) => null ,
231+ deregisterNavigationIconInteractionHandler : ( ) => null ,
232+ notifyNavigationIconClicked : ( ) => {
233+ if ( this . props . onNavIconClicked ) {
234+ this . props . onNavIconClicked ( ) ;
235+ }
236+ } ,
222237 } ;
223238 }
224239
0 commit comments