Material Design

Top App Bar

Top App Bar screenshot

MDC Top App Bar acts as a container for items such as application title, navigation icon, and action items.

Design & API Documentation

Installation

npm install @material/top-app-bar

Basic Usage

HTML Structure

<header class="mdc-top-app-bar">
  <div class="mdc-top-app-bar__row">
    <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start">
      <a href="#" class="material-icons mdc-top-app-bar__navigation-icon">menu</a>
      <span class="mdc-top-app-bar__title">Title</span>
    </section>
  </div>
</header>

Styles

@import "@material/top-app-bar/mdc-top-app-bar";

JavaScript Instantiation

import {MDCTopAppBar} from '@material/top-app-bar/index';

// Instantiation
const topAppBarElement = document.querySelector('.mdc-top-app-bar');
const topAppBar = new MDCTopAppBar(topAppBarElement);

See Importing the JS component for more information on how to import JavaScript.

Variants

Top App Bar With Action Items

Top app bars can contain action items which are placed on the side opposite the navigation icon.

<header class="mdc-top-app-bar">
  <div class="mdc-top-app-bar__row">
    <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start">
      <a href="#" class="material-icons mdc-top-app-bar__navigation-icon">menu</a>
      <span class="mdc-top-app-bar__title">Title</span>
    </section>
    <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-end" role="toolbar">
      <a href="#" class="material-icons mdc-top-app-bar__action-item" aria-label="Download" alt="Download">file_download</a>
      <a href="#" class="material-icons mdc-top-app-bar__action-item" aria-label="Print this page" alt="Print this page">print</a>
      <a href="#" class="material-icons mdc-top-app-bar__action-item" aria-label="Bookmark this page" alt="Bookmark this page">bookmark</a>
    </section>
  </div>
</header>

Short

Short top app bars are top app bars that can collapse to the navigation icon side when scrolled.

<header class="mdc-top-app-bar mdc-top-app-bar--short">
  <div class="mdc-top-app-bar__row">
    <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start">
      <a href="#" class="material-icons mdc-top-app-bar__navigation-icon">menu</a>
      <span class="mdc-top-app-bar__title">Title</span>
    </section>
    <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-end" role="toolbar">
      <a href="#" class="material-icons mdc-top-app-bar__action-item" aria-label="Bookmark this page" alt="Bookmark this page">bookmark</a>
    </section>
  </div>
</header>

Short top app bars should be used with no more than 1 action item.

Short - Always Closed

Short top app bars can be configured to always appear collapsed by applying the mdc-top-app-bar--short-collapsed before instantiating the component :

<header class="mdc-top-app-bar mdc-top-app-bar--short mdc-top-app-bar--short-collapsed">
  ...
</header>

Fixed

Fixed top app bars stay at the top of the page and elevate above the content when scrolled.

<header class="mdc-top-app-bar mdc-top-app-bar--fixed">
  ...
</header>

Prominent

The prominent top app bar is taller.

<header class="mdc-top-app-bar mdc-top-app-bar--prominent">
  ...
</header>

Style Customization

CSS Classes

Class Description
mdc-top-app-bar Mandatory.
mdc-top-app-bar--fixed Class used to style the top app bar as a fixed top app bar.
mdc-top-app-bar--prominent Class used to style the top app bar as a prominent top app bar.
mdc-top-app-bar--short Class used to style the top app bar as a short top app bar.
mdc-top-app-bar--short-collapsed Class used to indicate the short top app bar is collapsed.

Sass Mixins

Mixin Description
mdc-top-app-bar-ink-color($color) Sets the ink color of the top app bar.
mdc-top-app-bar-icon-ink-color($color) Sets the ink color of the top app bar icons.
mdc-top-app-bar-fill-color($color) Sets the fill color of the top app bar.
mdc-top-app-bar-fill-color-accessible($color) Sets the fill color of the top app bar and automatically sets a high-contrast ink color.
mdc-top-app-bar-short-border-radius($border-radius) Sets the border-bottom-radius property on the action item side. Used only for the short top app bar when collapsed.

MDCTopAppBar Properties and Methods

MDCTopAppBar does not contain any properties or methods aside from those inherited from MDCComponent.

Events

Event Name Event Data Structure Description
MDCTopAppBar:nav None Emits when the navigation icon is clicked.

Usage within Web Frameworks

If you are using a JavaScript framework, such as React or Angular, you can create a Top App Bar for your framework. Depending on your needs, you can use the Simple Approach: Wrapping MDC Web Vanilla Components, or the Advanced Approach: Using Foundations and Adapters. Please follow the instructions here.

MDCTopAppBarAdapter

Method Signature Description
hasClass(className: string) => boolean Checks if the root element of the component has the given className.
addClass(className: string) => void Adds a class to the root element of the component.
removeClass(className: string) => void Removes a class from the root element of the component.
registerNavigationIconInteractionHandler(evtType: string, handler: EventListener) => void Registers an event listener on the native navigation icon element for a given event.
deregisterNavigationIconInteractionHandler(evtType: string, handler: EventListener) => void Deregisters an event listener on the native navigation icon element for a given event.
notifyNavigationIconClicked() => void Emits a custom event MDCTopAppBar:nav when the navigation icon is clicked.
registerScrollHandler(handler) => void Registers a handler to be called when user scrolls. Our default implementation adds the handler as a listener to the window’s scroll event.
deregisterScrollHandler(handler) => void Unregisters a handler to be called when user scrolls. Our default implementation removes the handler as a listener to the window’s scroll event.
getViewportScrollY() => number Gets the number of pixels that the content of body is scrolled from the top of the page.
getTotalActionItems() => number Gets the number of action items in the top app bar.

Foundations: MDCTopAppBarBaseFoundation, MDCTopAppBarFoundation, MDCFixedTopAppBarFoundation and MDCShortTopAppBarFoundation

The foundations do not contain any public properties or methods aside from those inherited from MDCFoundation.