4.0.0 • Published 4 years ago

@limetech/mdc-p2-top-app-bar v4.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Top App Bar

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 @limetech/mdc-p2-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">
      <button class="material-icons mdc-top-app-bar__navigation-icon mdc-icon-button">menu</button>
      <span class="mdc-top-app-bar__title">Title</span>
    </section>
  </div>
</header>

NOTE: Please see note below about mdc-icon-button in the Top App Bar With Action Items section.

Menu Icons

We recommend using Material Icons from Google Fonts:

<head>
  <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
</head>

However, you can also use SVG, Font Awesome, or any other icon library you wish.

Styles

@import "@limetech/mdc-p2-top-app-bar/mdc-top-app-bar";
@import "@limetech/mdc-p2-icon-button/mdc-icon-button";

JavaScript Instantiation

import {MDCTopAppBar} from '@limetech/mdc-p2-top-app-bar';

// 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. You must also attach the mdc-icon-button class to both the mdc-top-app-bar__navigation-icon and the mdc-top-app-bar__action-item elements in order to get the correct styles applied. For further documentation on icons, please see the mdc-icon-button docs.

<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">
      <button class="material-icons mdc-top-app-bar__navigation-icon mdc-icon-button">menu</button>
      <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">
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Download">file_download</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Print this page">print</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Bookmark this page">bookmark</button>
    </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">
      <button class="material-icons mdc-top-app-bar__navigation-icon mdc-icon-button">menu</button>
      <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">
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Bookmark this page">bookmark</button>
    </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>

Dense

The dense top app bar is shorter.

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

Style Customization

CSS Classes

ClassDescription
mdc-top-app-barMandatory.
mdc-top-app-bar--fixedClass used to style the top app bar as a fixed top app bar.
mdc-top-app-bar--fixed-adjustClass used to style the content below the standard and fixed top app bar to prevent the top app bar from covering it.
mdc-top-app-bar--prominentClass used to style the top app bar as a prominent top app bar.
mdc-top-app-bar--prominent-fixed-adjustClass used to style the content below the prominent top app bar to prevent the top app bar from covering it.
mdc-top-app-bar--denseClass used to style the top app bar as a dense top app bar.
mdc-top-app-bar--dense-fixed-adjustClass used to style the content below the dense top app bar to prevent the top app bar from covering it.
mdc-top-app-bar--dense-prominent-fixed-adjustClass used to style the content below the top app bar when styled as both dense and prominent, to prevent the top app bar from covering it.
mdc-top-app-bar--shortClass used to style the top app bar as a short top app bar.
mdc-top-app-bar--short-collapsedClass used to indicate the short top app bar is collapsed.
mdc-top-app-bar--short-fixed-adjustClass used to style the content below the short top app bar to prevent the top app bar from covering it.

Sass Mixins

MixinDescription
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-shape-radius($radius, $rtl-reflexive)Sets the rounded shape to short top app bar variant (when it is collapsed) with given radius size. Set $rtl-reflexive to true to flip radius values in RTL context, defaults to true.

MDCTopAppBar Properties and Methods

Method SignatureDescription
setScrollTarget(target: element) => voidSets scroll target to different DOM node (default is window).

Events

Event NameEvent Data StructureDescription
MDCTopAppBar:navNoneEmits 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 SignatureDescription
addClass(className: string) => voidAdds a class to the root element of the component.
removeClass(className: string) => voidRemoves a class from the root element of the component.
hasClass(className: string) => booleanChecks if the root element of the component has the given className.
setStyle(property: string, value: string) => voidSets the specified CSS property to the given value on the root element.
getTopAppBarHeight() => numberGets the height in px of the top app bar.
getViewportScrollY() => numberGets the number of pixels that the content of body is scrolled from the top of the page.
getTotalActionItems() => numberGets the number of action items in the top app bar.
notifyNavigationIconClicked() => voidEmits a custom event MDCTopAppBar:nav when the navigation icon is clicked.

Foundations

MDCTopAppBarBaseFoundation, MDCTopAppBarFoundation, MDCFixedTopAppBarFoundation and MDCShortTopAppBarFoundation

All foundations provide the following methods:

Method SignatureDescription
handleTargetScroll() => voidHandles scroll event on specified scrollTarget (defaults to window).
handleWindowResize() => voidHandles resize event on window.
handleNavigationClick() => voidHandles click event on navigation icon.

MDCShortTopAppBarFoundation

In addition to the methods above, the short variant provides the following public methods and properties:

Method SignatureDescription
setAlwaysCollapsed(value: boolean) => voidWhen value is true, sets the short top app bar to always be collapsed.
getAlwaysCollapsed() => booleanGets if the short top app bar is in the "always collapsed" state.
PropertyValue TypeDescription
isCollapsedboolean (read-only)Indicates whether the short top app bar is in the collapsed state.