Socket
Socket
Sign inDemoInstall

@material/top-app-bar

Package Overview
Dependencies
11
Maintainers
15
Versions
1665
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @material/top-app-bar

The Material Components for the web top app bar component


Version published
Weekly downloads
890K
decreased by-2.96%
Maintainers
15
Install size
2.29 MB
Created
Weekly downloads
 

Changelog

Source

14.0.0 (2022-04-27)

Bug Fixes

  • button: update HCM shim to use the existing focus-ring (a657abb)
  • checkbox: Add explicit system color for checkmark in HCM. (8c4da22)
  • checkbox: move forced-colors theme out of static styles (bbd1126)
  • checkbox: Update checkbox theme styles mixin to accept css vars (c14e977)
  • chips: Fix typography selector in GMDC-Wiz chips theming (43c7d87)
  • datatable: Adjust data table last row border-radius to support setting row background-color. (ba78e87)
  • dialog: Render dividers in Firefox 94 on Windows HCM (fae6c65)
  • dialog: Set default z-index for close button in FloatingSheet dialog. (3366a71)
  • fab: Add focus ring in HCM. (d57ec74)
  • focus-ring: add 2d padding customizability, RTL bugfix (f81fb1d)
  • focus-ring: box-sizing bugfix to content-box. If box-sizing border-box is inherited the ring spacing will collapse. (e58552c)
  • focus-ring: ignore pointer events (3ef470e)
  • focus-ring: RTL bugfix (e00181e)
  • iconbutton: Fixed max width and height for high contrast mode focus ring on icon buttons. Display only in forced colors mode. (cf42927)
  • iconbutton: Set icon button ripple z-index to -1. (586e740)
  • list: Improve a11y for multi-select lists (9736ddc)
  • list: Remove conflicting validation for checkbox list in setEnabled (353ca7e)
  • list: Update lastSelectedIndex when toggling a checkbox range (dcba26f)
  • menusurface: Add a getOwnerDocument() method to MDCMenuSurfaceAdapter to provide a reference to the document that owns the menu surface DOM element. (3486659)
  • radio: Fix disabled state in Firefox Windows high contrast mode (23043ac)
  • radio: Modify theme styles Sass mixin validation to validate only keys (390220e)
  • select: Add border to select menu in HCM. (5d80969)
  • select: revert down/up arrow on anchor changing selected index (43d08ba)
  • slider: Fix bug where secondary click moves slider thumb. (3ab9565)
  • slider: Fix IE11 bug - unset is unsupported in IE. (f460e23)
  • slider: In updateUI, fix behavior to match jsdoc claim that when thumb param is undefined it updates both thumbs. Input attributes were not being updated at all. (cc4ed13)
  • slider: Make the slider errors easier to debug by providing all relevant values in the error message. (8687937)
  • snackbar: address Trusted Types violation (cbd9358)
  • tooltip: Adjusts logic in validateTooltipWithCaretDistances method. (3e30054)
  • typography: Fixes typography theme-styles mixin... the value being retreived from the $theme map and css property name was swapped. The mixin would request font-size/font-weight/letter-spacing from the $theme map (which expects size/weight/tracking)... so these values would always be null. (32b3913)
  • Remove /** @override */ tags from TypeScript code. (c3cdff0)
  • Simplify MDCAttachable interface to be any object (Function) that has attachTo. (05db65e)
  • Snackbar action button ripple color is applied to the ripple element. (4e66fb2)
  • Work around bug in Sass (037285f), closes sass/sass#3259
  • switch: Restore Firefox 94 HCM outlines (39cf14b)
  • textfield: Fix breaking tests due to no valid pointerId being associated with pointer events. (15db4f1)
  • tooltip: Only sends notification of a tooltip being hidden if showTimeout is not set (indicating that this tooltip is about to be re-shown). (6ca8b8f)

Features

  • banner: Add disableAutoClose params for both banner actions to prevent the banner buttons from automatically closing the banner. Add adapter #notifyActionClicked method. (b094eaa)
  • chips: add focus ring styles (783f6fd)
  • chips: Added elevation tint layer color support in chips (c78ff04)
  • data-table: separate table structure into its own mixin (9f9d928)
  • dialog: Add styling for floating sheets (78305b6)
  • dialog: Add styling for floating sheets with content padding (3e20c1d)
  • Dialog: Adds an API to hide the header for GMDC Fullscreen Dialog in non-fullscreen mode (ab4aba1)
  • Dialog: Adds an API to set custom position for GMDC Dialog (ea9b5b4)
  • Dialog: Adds an API to set custom z-index for GMDC Dialog (96ea061)
  • focus-ring: added a new mixin so we can override just the focus-ring color (641ed08)
  • focus-ring: added a new mixin so we can override just the focus-ring radius (7321d62)
  • iconbutton: Add link icon button Sass. (9803d2d)
  • mdc-list: introduce selection change event (7d8ea46)
  • menu: allow preferentially opening surface below anchor (261f2db)
  • MenuSurface: Add opening event for menus. (53b3cad)
  • select: Add theming mixin boilerplate code to select (ae8a6a3)
  • select: Add validation getter methods. (bdf1d37)
  • select: Added theme mixins to MDC select (dcfe49c)
  • slider: Add minRange param to range sliders to request a minimum gap between the two thumbs. (8fffcb5)
  • slider: Add an option to hide focus styles after pointer interaction. (ec54d90)
  • slider: Keep the slider value indicator within the bounds of the slider if possible. (c047f7c)
  • state: make context aware (b2fe352)
  • switch: Add high contrast mode focus ring to switch (f31a833)
  • text-field: Add theming mixin boilerplate code to text-field (eb382f3)
  • text-field: Added theme mixins to MDC text field (344d528)
  • textfield: adding input-font-size mixin (207230e)
  • theme: allow custom property strings in theme.validate-theme() (4e372fb)
  • add new class and mixin for open state of a menu item (9a02b6e)
  • Indicate which thumb valueToAriaValueTextFn and valueToValueIndicatorTextFn functions are called for. (b6510c8)
  • textfield: adding input-font-family mixin (991fb99)
  • Describe how to add child lists into a list item. (758ce31)

BREAKING CHANGES

  • MenuSurface: Adds #notifyOpening method to menu surface adapter.

PiperOrigin-RevId: 444830518

  • slider: Adds #getValueIndicatorContainerWidth method to slider adapter.

PiperOrigin-RevId: 419837612

Readme

Source

Top app bar

The top app bar provides content and actions related to the current screen. It’s used for branding, screen titles, navigation, and actions.

There are two types of top app bar:

  1. Regular top app bar
  2. Contextual action bar

A regular top app bar can transform into a contextual action bar.

Regular app bar: purple background, white text and icons Contextual app bar: black background, white text and icons

Using the top app bar

Installation

npm install @material/top-app-bar

Styles

@use "@material/icon-button";
@use "@material/top-app-bar/mdc-top-app-bar";

@include icon-button.core-styles;

JavaScript Instantiation

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

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

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

Regular top app bar

The top app bar provides content and actions related to the current screen. It’s used for branding, screen titles, navigation, and actions.

Regular top app bar example

<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" aria-label="Open navigation menu">menu</button>
      <span class="mdc-top-app-bar__title">Page 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="Favorite">favorite</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Search">search</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Options">more_vert</button>
    </section>
  </div>
</header>
<main class="mdc-top-app-bar--fixed-adjust">
  App content
</main>
Menu icons

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.

Contextual action bar

A top app bar can transform into a contextual action bar to provide contextual actions to selected items. For example, upon user selection of photos from a gallery, the top app bar transforms to a contextual app bar with actions related to the selected photos.

When a top app bar transforms into a contextual action bar, the following changes occur:

  • The bar color changes
  • Navigation icon is replaced with a close icon
  • Top app bar title text converts to contextual action bar text
  • Top app bar actions are replaced with contextual actions
  • Upon closing, the contextual action bar transforms back into a top app bar.

Contextual action bar example

The following example shows a contextual action bar with a contextual title, a close icon, two contextual action icons, and an overflow menu:

<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" aria-label="Close">close</button>
      <span class="mdc-top-app-bar__title">Contextual 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="Share">share</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Delete">delete</button>
      <button class="material-icons mdc-top-app-bar__action-item mdc-icon-button" aria-label="Open menu">more_vert</button>
    </section>
  </div>
</header>
<main class="mdc-top-app-bar--fixed-adjust">
  App content
</main>

Other Variants

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>
<main class="mdc-top-app-bar--short-fixed-adjust">
  App content
</main>

Note: 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>
<main class="mdc-top-app-bar--short-fixed-adjust">
  App content
</main>

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>
<main class="mdc-top-app-bar--fixed-adjust">
  App content
</main>

Prominent

The prominent top app bar is taller.

<header class="mdc-top-app-bar mdc-top-app-bar--prominent">
  ...
</header>
<main class="mdc-top-app-bar--prominent-fixed-adjust">
  App content
</main>

Dense

The dense top app bar is shorter.

<header class="mdc-top-app-bar mdc-top-app-bar--dense">
  ...
</header>
<main class="mdc-top-app-bar--dense-fixed-adjust">
  App content
</main>

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 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
ink-color($color)Sets the ink color of the top app bar.
icon-ink-color($color)Sets the ink color of the top app bar icons.
fill-color($color)Sets the fill color of the top app bar.
fill-color-accessible($color)Sets the fill color of the top app bar and automatically sets a high-contrast ink color.
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.

Keywords

FAQs

Last updated on 28 Apr 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc