Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@material/chips

Package Overview
Dependencies
Maintainers
13
Versions
1672
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@material/chips

The Material Components for the Web chips component

  • 0.39.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
594K
decreased by-15.31%
Maintainers
13
Weekly downloads
 
Created
Source

Chips

Chips are compact elements that allow users to enter information, select a choice, filter content, or trigger an action.

Design & API Documentation

  • Material Design guidelines: Chips
  • Demo

Installation

npm install @material/chips

Basic Usage

HTML Structure

<div class="mdc-chip-set">
  <div class="mdc-chip" tabindex="0">
    <div class="mdc-chip__text">Chip content</div>
  </div>
  ...
</div>

Styles

@import "@material/chips/mdc-chips";

JavaScript Instantiation

import {MDCChipSet} from '@material/chips';

const chipSet = new MDCChipSet(document.querySelector('.mdc-chip-set'));

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

Variants

Leading and Trailing Icons

You can optionally add a leading icon (i.e. thumbnail) and/or a trailing "remove" icon to a chip. To add an icon, add an i element with your preferred icon, give it a class of mdc-chip__icon, and a class of either mdc-chip__icon--leading or mdc-chip__icon--trailing.

Leading icon
<div class="mdc-chip">
  <i class="material-icons mdc-chip__icon mdc-chip__icon--leading">event</i>
  <div class="mdc-chip__text">Add to calendar</div>
</div>
Trailing icon

A trailing icon comes with the functionality to remove the chip from the set. If you're adding a trailing icon, also set tabindex="0" and role="button" to make it accessible by keyboard and screenreader. Trailing icons should only be added to input chips.

<div class="mdc-chip">
  <div class="mdc-chip__text">Jane Smith</div>
  <i class="material-icons mdc-chip__icon mdc-chip__icon--trailing" tabindex="0" role="button">cancel</i>
</div>

Choice Chips

Choice chips are a variant of chips which allow single selection from a set of options. To define a set of chips as choice chips, add the class mdc-chip-set--choice to the chip set element.

<div class="mdc-chip-set mdc-chip-set--choice">
  ...
</div>

Filter Chips

Filter chips are a variant of chips which allow multiple selection from a set of options. To define a set of chips as filter chips, add the class mdc-chip-set--filter to the chip set element. When a filter chip is selected, a checkmark appears as the leading icon. If the chip already has a leading icon, the checkmark replaces it. This requires the HTML structure of a filter chip to differ from other chips:

<div class="mdc-chip-set mdc-chip-set--filter">
  <div class="mdc-chip">
    <div class="mdc-chip__checkmark" >
      <svg class="mdc-chip__checkmark-svg" viewBox="-2 -3 30 30">
        <path class="mdc-chip__checkmark-path" fill="none" stroke="black"
              d="M1.73,12.91 8.1,19.28 22.79,4.59"/>
      </svg>
    </div>
    <div class="mdc-chip__text">Filterable content</div>
  </div>
  ...
</div>

To use a leading icon in a filter chip, put the mdc-chip__icon--leading element before the mdc-chip__checkmark element:

<div class="mdc-chip-set mdc-chip-set--filter">
  <div class="mdc-chip">
    <i class="material-icons mdc-chip__icon mdc-chip__icon--leading">face</i>
    <div class="mdc-chip__checkmark" >
      <svg class="mdc-chip__checkmark-svg" viewBox="-2 -3 30 30">
        <path class="mdc-chip__checkmark-path" fill="none" stroke="black"
              d="M1.73,12.91 8.1,19.28 22.79,4.59"/>
      </svg>
    </div>
    <div class="mdc-chip__text">Filterable content</div>
  </div>
  ...
</div>

Input Chips

Input chips are a variant of chips which enable user input by converting text into chips. To define a set of chips as input chips, add the class mdc-chip-set--input to the chip set element.

<div class="mdc-chip-set mdc-chip-set--input">
  ...
</div>

You'd also want to add an event listener that calls addChip on the MDCChipSet to convert text to a chip. More information can be found in the "MDCChip Properties and Methods" section below.

Pre-selected

To display a pre-selected filter or choice chip, add the class mdc-chip--selected to the root chip element.

<div class="mdc-chip mdc-chip--selected">
  <div class="mdc-chip__text">Add to calendar</div>
</div>

To pre-select filter chips that have a leading icon, also add the class mdc-chip__icon--leading-hidden to the mdc-chip__icon--leading element. This will ensure that the checkmark displaces the leading icon.

<div class="mdc-chip mdc-chip--selected">
  <i class="material-icons mdc-chip__icon mdc-chip__icon--leading mdc-chip__icon--leading-hidden">face</i>
  <div class="mdc-chip__checkmark">
    <svg class="mdc-chip__checkmark-svg" viewBox="-2 -3 30 30">
      <path class="mdc-chip__checkmark-path" fill="none" stroke="black"
            d="M1.73,12.91 8.1,19.28 22.79,4.59"/>
    </svg>
  </div>
  <div class="mdc-chip__text">Filterable content</div>
</div>

Style Customization

CSS Classes

CSS ClassDescription
mdc-chip-setMandatory. Indicates the set that the chip belongs to.
mdc-chip-set--inputOptional. Indicates that the chips in the set are input chips, which enable user input by converting text into chips.
mdc-chip-set--choiceOptional. Indicates that the chips in the set are choice chips, which allow a single selection from a set of options.
mdc-chip-set--filterOptional. Indicates that the chips in the set are filter chips, which allow multiple selection from a set of options.
mdc-chipMandatory.
mdc-chip--selectedOptional. Indicates that the chip is selected.
mdc-chip__textMandatory. Indicates the text content of the chip.
mdc-chip__iconOptional. Indicates an icon in the chip.
mdc-chip__icon--leadingOptional. Indicates a leading icon in the chip.
mdc-chip__icon--leading-hiddenOptional. Hides the leading icon in a filter chip when the chip is selected.
mdc-chip__icon--trailingOptional. Indicates a trailing icon which removes the chip from the DOM. Only use with input chips.
mdc-chip__checkmarkOptional. Indicates the checkmark in a filter chip.
mdc-chip__checkmark-svgMandatory with the use of mdc-chip__checkmark. Indicates the checkmark SVG element in a filter chip.
mdc-chip__checkmark-pathMandatory with the use of mdc-chip__checkmark. Indicates the checkmark SVG path in a filter chip.

NOTE: Every element that has an mdc-chip__icon class must also have either the mdc-chip__icon--leading or mdc-chip__icon--trailing class.

Sass Mixins

MixinDescription
mdc-chip-set-spacing($gap-size)Customizes the amount of space between each chip in the set
mdc-chip-corner-radius($radius)Customizes the corner radius for a chip
mdc-chip-fill-color-accessible($color)Customizes the background fill color for a chip, and updates the chip's ink, icon and ripple colors to meet accessibility standards
mdc-chip-fill-color($color)Customizes the background fill color for a chip
mdc-chip-ink-color($color)Customizes the text ink color for a chip, and updates the chip's ripple color to match
mdc-chip-selected-ink-color($color)Customizes text ink and ripple color of a chip in the selected state
mdc-chip-outline($width, $style, $color)Customizes the outline properties for a chip
mdc-chip-outline-width($width)Customizes the outline width for a chip
mdc-chip-outline-style($style)Customizes the outline style for a chip
mdc-chip-outline-color($color)Customizes the outline color for a chip
mdc-chip-height($height)Customizes the height for a chip
mdc-chip-leading-icon-color($color, $opacity)Customizes the color of a leading icon in a chip, optionally customizes opacity
mdc-chip-trailing-icon-color($color, $opacity, $hover-opacity, $focus-opacity)Customizes the color of a trailing icon in a chip, optionally customizes regular/hover/focus opacities
mdc-chip-leading-icon-size($size)Customizes the size of a leading icon in a chip
mdc-chip-trailing-icon-size($size)Customizes the size of a trailing icon in a chip

NOTE: mdc-chip-set-spacing also sets the amount of space between a chip and the edge of the set it's contained in.

MDCChip and MDCChipSet Properties and Methods

The MDC Chips package is composed of two JavaScript classes:

  • MDCChip defines the behavior of a single chip.
  • MDCChipSet defines the behavior of chips within a specific set. For example, chips in an input chip set behave differently from those in a filter chip set.

To use the MDCChip and MDCChipSet classes, import both classes from @material/chips.

MDCChip
Method SignatureDescription
beginExit() => voidProxies to the foundation's beginExit method
PropertyValue TypeDescription
idstringUnique identifier on the chip*
selectedBooleanProxies to the foundation's isSelected/setSelected methods
shouldRemoveOnTrailingIconClickBooleanProxies to the foundation's getShouldRemoveOnTrailingIconClick/setShouldRemoveOnTrailingIconClick methods**
rippleMDCRippleThe MDCRipple instance for the root element that MDCChip initializes

*NOTE: This will be the same as the id attribute on the root element. If an id is not provided, a unique one will be generated.

**NOTE: If shouldRemoveOnTrailingIconClick is set to false, you must manually call beginExit() on the chip to remove it.

MDCChipSet
Method SignatureDescription
addChip(chipEl: Element) => voidAdds a new MDCChip instance to the chip set based on the given mdc-chip element
getSelectedChipIds() => booleanReturns an array of the IDs of all selected chips
PropertyValue TypeDescription
chipsArray<MDCChip>An array of the MDCChip objects that represent chips in the set

Usage within Web Frameworks

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

Adapters: MDCChipAdapter and MDCChipSetAdapter

MDCChipAdapter
Method SignatureDescription
addClass(className: string) => voidAdds a class to the root element
removeClass(className: string) => voidRemoves a class from the root element
hasClass(className: string) => booleanReturns true if the root element contains the given class
addClassToLeadingIcon(className: string) => voidAdds a class to the leading icon element
removeClassFromLeadingIcon(className: string) => voidRemoves a class from the leading icon element
eventTargetHasClass(target: EventTarget, className: string) => booleanReturns true if target has className, false otherwise
notifyInteraction() => voidEmits a custom event MDCChip:interaction denoting the chip has been interacted with*
notifyTrailingIconInteraction() => voidEmits a custom event MDCChip:trailingIconInteraction denoting the chip's trailing icon has been interacted with*
notifyRemoval() => voidEmits a custom event MDCChip:removal denoting the chip will be removed**
getComputedStyleValue(propertyName: string) => stringReturns the computed property value of the given style property on the root element
setStyleProperty(propertyName: string, value: string) => voidSets the property value of the given style property on the root element

*NOTE: The custom events emitted by notifyInteraction and notifyTrailingIconInteraction must pass along the target chip's ID via event.detail.chipId, as well as bubble to the parent mdc-chip-set element.

**NOTE: The custom event emitted by notifyRemoval must pass along the target chip's ID via event.detail.chipId and its root element via event.detail.root, as well as bubble to the parent mdc-chip-set element.

MDCChipSetAdapter
Method SignatureDescription
hasClass(className: string) => booleanReturns whether the chip set element has the given class
removeChip(chipId: string) => voidRemoves the chip with the given id from the chip set
setSelected(chipId: string, selected: boolean) => voidSets the selected state of the chip with the given id

Foundations: MDCChipFoundation and MDCChipSetFoundation

MDCChipFoundation
Method SignatureDescription
isSelected() => booleanReturns true if the chip is selected
setSelected(selected: boolean) => voidSets the chip's selected state
getShouldRemoveOnTrailingIconClick() => booleanReturns whether a trailing icon click should trigger exit/removal of the chip
setShouldRemoveOnTrailingIconClick(shouldRemove: boolean) => voidSets whether a trailing icon click should trigger exit/removal of the chip
beginExit() => voidBegins the exit animation which leads to removal of the chip
handleInteraction(evt: Event) => voidHandles an interaction event on the root element
handleTransitionEnd(evt: Event) => voidHandles a transition end event on the root element
handleTrailingIconInteraction(evt: Event) => voidHandles an interaction event on the trailing icon element
MDCChipSetFoundation
Method SignatureDescription
getSelectedChipIds() => booleanReturns an array of the IDs of all selected chips
select(chipId: string) => voidSelects the chip with the given id
deselect(chipId: string) => voidDeselects the chip with the given id
toggleSelect(chipId: string) => voidToggles selection of the chip with the given id
handleChipInteraction(evt: Event) => voidHandles a custom MDCChip:interaction event on the root element
handleChipRemoval(evt: Event) => voidHandles a custom MDCChip:removal event on the root element

Keywords

FAQs

Package last updated on 31 Aug 2018

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc