Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Chip

Chips represent logical groups of actions contained inside a chip set.

Basic usage

Note: there's work planned to replace the mdc-evolution-* prefix of chips with the standard mdc-chip-* prefix.

HTML structure

Chips must contain a primary action and may contain a trailing action.

Note: all chips must have a unique id.

Layout grid

Both action chips and input chips follow the layout grid interaction pattern. All navigable actions must be contained by a gridcell role and the chip root must have the row role.

Action chips

Action chips have a single mandatory primary action.

<span class="mdc-evolution-chip" role="row" id="c0">
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--primary" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" type="button" tabindex="0">
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
      <span class="mdc-evolution-chip__text-label">Chip label</span>
    </button>
  </span>
</span>

Action chips with buttons can be disabled with the mdc-evolution-chip--disabled class and the disabled attribute on the root. Action chips with links cannot be disabled.

<span class="mdc-evolution-chip mdc-evolution-chip--disabled" role="row" id="c1">
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--primary" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" type="button" tabindex="-1" disabled>
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
      <span class="mdc-evolution-chip__text-label">Chip label</span>
    </button>
  </span>
</span>
Input chips

Input chips have a mandatory primary action and trailing action.

<span class="mdc-evolution-chip" role="row" id="c2">
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--primary" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" type="button" tabindex="0">
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
      <span class="mdc-evolution-chip__text-label">Chip foo</span>
    </button>
  </span>
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--trailing" type="button" tabindex="-1" data-mdc-deletable="true" aria-label="Remove chip foo">
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--trailing"></span>
      <span class="mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing">close</span>
    </button>
  </span>
</span>

If it's desirable to have only the primary action be navigable, the trailing action gridcell role can be excluded and the trailing action can receive aria-hidden="true". In this case, it's recommended to include data-mdc-deletable="true" on the primary action, thus making it deletable via Backspace/Delete key press on focus, and an aria-label indicating the behavior.

<span class="mdc-evolution-chip" role="presentation" id="c3">
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--primary" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" type="button" tabindex="0" data-mdc-deletable="true" aria-label="Chip foo, press backspace or delete to remove">
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
      <span class="mdc-evolution-chip__text-label">Chip foo</span>
    </button>
  </span>
  <button class="mdc-evolution-chip__action mdc-evolution-chip__action--trailing" type="button" tabindex="-1" data-mdc-deletable="true" aria-hidden="true">
    <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--trailing"></span>
    <span class="mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing">close</span>
  </button>
</span>

Similar to action chips, input chips with buttons can be disabled by setting the disabled attribute on the actions and adding the mdc-evolution-chip--disabled class to the root.

<span class="mdc-evolution-chip mdc-evolution-chip--disabled" role="row" id="c4">
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--primary" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" type="button" tabindex="-1" disabled>
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
      <span class="mdc-evolution-chip__text-label">Chip foo</span>
    </button>
  </span>
  <span class="mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing" role="gridcell">
    <button class="mdc-evolution-chip__action mdc-evolution-chip__action--trailing" type="button" tabindex="-1" data-mdc-deletable="true" aria-label="Remove chip foo" disabled>
      <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--trailing"></span>
      <span class="mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing">close</span>
    </button>
  </span>
</span>

Listbox

Filter chips follow the listbox interaction pattern.

Filter chips

Filter chips have a mandatory primary action while the chip root receives a presentation role.

<span class="mdc-evolution-chip" role="presentation" id="c5">
  <span class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" role="option" aria-selected="false" tabindex="0">
    <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
    <span class="mdc-evolution-chip__graphic">
      <span class="mdc-evolution-chip__icon mdc-evolution-chip__icon--primary material-icons">favorite</span> <!-- optional -->
      <span class="mdc-evolution-chip__checkmark">
        <svg class="mdc-evolution-chip__checkmark-svg" viewBox="-2 -3 30 30">
          <path class="mdc-evolution-chip__checkmark-path"
              fill="none" stroke="black" d="M1.73,12.91 8.1,19.28 22.79,4.59" />
        </svg>
      </span>
    </span>
    <span class="mdc-evolution-chip__text-label">Chip label</span>
  </span>
</span>

To disable a filter chip, set aria-disabled="true" on the primary action and add the mdc-evolution-chip--disabled class on the chip root.

<span class="mdc-evolution-chip mdc-evolution-chip--disabled" role="presentation" id="c6">
  <span class="mdc-evolution-chip__action mdc-evolution-chip__action--primary" role="option" aria-selected="false" tabindex="0">
    <span class="mdc-evolution-chip__ripple mdc-evolution-chip__ripple--primary"></span>
    <span class="mdc-evolution-chip__graphic">
      <span class="mdc-evolution-chip__icon mdc-evolution-chip__icon--primary material-icons">favorite</span> <!-- optional -->
      <span class="mdc-evolution-chip__checkmark">
        <svg class="mdc-evolution-chip__checkmark-svg" viewBox="-2 -3 30 30">
          <path class="mdc-evolution-chip__checkmark-path"
              fill="none" stroke="black" d="M1.73,12.91 8.1,19.28 22.79,4.59" />
        </svg>
      </span>
    </span>
    <span class="mdc-evolution-chip__text-label">Chip label</span>
  </span>
</span>

API

CSS classes

CSS Class Description
mdc-evolution-chip Mandatory, for the chip root.
mdc-evolution-chip--selectable Mandatory for selectable (i.e filter) chips.
mdc-evolution-chip--selected Mandatory for selectable chips that are selected. Used in conjunction with *--selectable.
mdc-evolution-chip--with-primary-graphic Mandatory for chips that have a primary graphic (i.e. the checkmark for filter chips and/or an icon)
mdc-evolution-chip--with-primary-icon Mandatory for chips that have an icon in the primary graphic slot (used in conjunction with *--with-primary-graphic). Not mandatory if the primary graphic only contains the filter chip checkmark.
mdc-evolution-chip--with-trailing-action Mandatory for chips with a trailing action.
mdc-evolution-chip--filter Optional for filter chips, making the selected treatment visually distinct.
mdc-evolution-chip--with-avatar Optinal, for chips with a primary graphic icon that should be receive the avatar treatment.
mdc-evolution-chip--disabled Optional, visually styles the chip as disabled.
mdc-evolution-chip__cell Optional, for layout grid chips. Applied to the grid cell.
mdc-evolution-chip__cell--primary Optional, for layout grid chips. Applied to the grid cell containing the primary action.
mdc-evolution-chip__cell--trailing Optional, for layout grid chips. Applied to the grid cell containing the trailing action if the trailing action is navigable.

Sass mixins

Access to theme mixins require importing the chips theme style module.

@use "@material/chips";
Mixin Description
ripple-color($color) Sets the ripple color of a chip.
selected-ripple-color($color) Sets the ripple color of a selected chip.
trailing-action-ripple-color($color) Sets the ripple color of a chip trailing action.
trailing-action-ripple-size($size) Sets the ripple size of a chip trailing action.
density($density) Sets the density of a chip.
height($height) Sets the height of a chip.
shape-radius($radius) Sets the shape radius of a chip.
outline-width($width) Sets the outline width of a chip.
outline-color($color) Sets the outline color of a chip.
selected-outline-color($color) Sets the outline color of a selected chip.
outline-style($style) Sets the outline style of a chip.
container-color($color) Sets the container color of a chip.
selected-container-color($color) Sets the container color of a selected chip.
text-label-color($color) Sets the text label color of a chip.
selected-text-label-color($color) Sets the text label color of a selected chip.
text-label-type-scale($type-scale) Sets the text label type scale of a chip.
graphic-size($size) Sets the graphic size of a chip.
icon-color($color) Sets the icon color of a chip.
icon-container-color($color) Sets the icon container color of a chip.
icon-size($size) Sets the icon size of a chip.
trailing-action-size($size) Sets the trailing action size of a chip.
trailing-action-color($color) Sets the trailing action color of a chip.
checkmark-size($size) Sets the checkmark size of a chip.
checkmark-color($color) Sets the checkmark color of a chip.
checkmark-container-color($color) Sets the checkmark container color of a chip.
horizontal-padding($leading, $trailing) Sets the horizontal padding of a chip with no graphic or trailing action.
with-graphic-horizontal-padding($graphic-leading, $graphic-trailing, $primary-trailing) Sets the horizontal padding of a chip with a primary graphic.
with-trailing-action-horizontal-padding($primary-leading, $trailing-action-leading, $trailing-action-trailing) Sets the horizontal padding of a chip with a trailing action.
with-graphic-and-trailing-action-horizontal-padding($graphic-leading, $graphic-trailing, $trailing-action-leading, $trailing-action-trailing) Sets the horizontal padding of a chip with a primary graphic and trailing action.

MDCChip methods

The MDCChip is exposed only to be called by the parent MDCChipSet. Users should not interact with the MDCChip component nor rely on any exposed APIs or events.

MDCChipEvents

These events are only emitted for consumption by the parent MDCChipSet. Non-wrapping clients should not listen to these events.

Event name Detail Description
MDCChip:animation MDCChipAnimationEventDetail Consumed in the parent chip set handleChipAnimation method.
MDCChip:interaction MDCChipInteractionEventDetail Consumed in the parent chip set handleChipInteraction method.
MDCChip:navigation MDCChipNavigationEventDetail Consumed in the parent chip set handleChipNavigation method.

MDCChipAdapter

Method Signature Description
addClass(className: MDCChipClassNames): void Adds the class name to the chip root.
emitEvent<D extends object>(eventName: MDCChipEvents, eventDetail: D): void Emits the given eventName with the given eventDetail.
getActions(): MDCChipActionType[] Returns the actions of the chip in DOM order.
getAttribute(attrName: MDCChipAttributes): string|null Returns the value of the attribute or null if it does not exist.
getElementID(): string Returns the id of the root element.
getOffsetWidth(): number Returns the offsetWidth of the root element.
hasClass(className: MDCChipCssClasses): boolean Returns true if the class exists on the root element, otherwise returns false.
isActionSelectable(action: MDCChipActionType): boolean Returns the seletability of the action with the given type.
isActionSelected(action: MDCChipActionType): boolean Returns the selected state of the action with the given type.
isActionFocusable(action: MDCChipActionType): boolean Returns the focusability of the action with the given type.
isActionDisabled(action: MDCChipActionType): boolean Returns the disabled state of the action with the given type.
isRTL(): boolean Returns true if the chip is rendered in an RTL context, otherwise returns false.
removeClass(className: MDCChipCssClasses): void Remove the given class from the root.
setActionDisabled(action: MDCChipActionType, isDisabled: boolean): void Sets the disabled state of the action with the given type.
setActionFocus(action: MDCChipActionType, behavior: MDCChipActionFocusBehavior): void Sets the focus behavior of the action with the given type.
setActionSelected(action: MDCChipActionType, isSelected: boolean): void Sets the selected state of the action with the given type.
setStyleProperty(property: string, value: string): void Sets the style property on the root to the given value.

MDCChipFoundation

Method Signature Description
handleAnimationEnd(event: AnimationEvent): void Handles the animationend event.
handleTransitionEnd(): void Handles the transitionend event.
handleActionInteraction(event: ActionInteractionEvent): void Handles the chip action's interaction event.
handleActionNavigation(event: ActionNavigationEvent): void Handles the chip action's navigation event.
getElementID(): string Returns the id of the chip.
setDisabled(isDisabled: boolean): void Sets the disabled state of the chip.
isDisabled(): boolean Returns the disabled state of the chip.
getActions(): ActionType[] Returns the actions of the chip.
isActionFocusable(action: MDCChipActionType): boolean Returns the focusability of the given action.
isActionSelectable(action: MDCChipActionType): boolean Returns the selectability of the given action.
isActionSelected(action: MDCChipActionType): boolean Returns the selected state of the given action.
setActionFocus(action: MDCChipActionType, focus: MDCChipActionFocusBehavior): void Sets the focus behavior of the given action.
setActionSelected(action: MDCChipActionType, isSelected: boolean): void Sets the selected state of the given action.
startAnimation(animation: Animation): void Starts the given animation on the chip.

Usage within frameworks

If you are using a JavaScript framework, such as React or Angular, you can create a chip 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.