Skip to main content

rc-chip-group

Adaptive wrapping and horizontal-scrolling layout for chip collections and arbitrary direct children.

Package
@rcarls/rc-chip-group
Element
<rc-chip-group>
Native dependency
Author-owned fieldset and radio/checkbox controls
State model
Auto overflow disclosure and optional assist roving focus
Main events
rc-chip-group-toggle

Installation

npm install @rcarls/rc-chip-group
import '@rcarls/rc-chip-group/define';

The define entry also registers rc-chip, which the group uses for its internal Show all/Show less action.

Native filter markup

Keep fieldset, legend, form value, and selection semantics native:

<fieldset>
<legend>Recipe scope</legend>
<rc-chip-group kind="filter" selection="single">
<rc-chip>
<label><input type="radio" name="scope" value="all" checked />All</label>
</rc-chip>
<rc-chip>
<label><input type="radio" name="scope" value="favorites" />Favorites</label>
</rc-chip>
</rc-chip-group>
</fieldset>

Use selection="multiple" with checkboxes. Use selection="none" for menu-backed filter buttons with aria-haspopup; their menu owns the eventual selection.

Live demo

Adaptive layout

layout="auto" is the default. The group first measures its natural wrapped layout. When the content needs more than max-rows="2", it becomes one horizontally scrolling row and inserts a leading Show all action. Expanded content returns to natural wrapping and the same action becomes Show less. The action uses the MDI tune icon and a vertical separator to distinguish the disclosure control from the authored chip collection.

Use layout="wrap" to always wrap or layout="scroll" to always keep one horizontal row. The component uses actual rendered rows, so container size, text scaling, localization, and consumer content all participate in the decision without device-pixel-ratio special cases.

Coordination modes

  • kind="generic" is layout-only and accepts any direct HTMLElement.
  • kind="assist" exposes a labeled toolbar with one tab stop and horizontal arrow/Home/End navigation.
  • kind="filter" synchronizes native radio/checkbox state to direct rc-chip children. Put the group inside an author-owned fieldset.

API

Properties

PropertyMarkupTypeDefaultDescription
layoutlayoutRCChipGroupLayout'auto'Layout strategy.
maxRowsmax-rowsnumber2Maximum natural rows before auto layout collapses to horizontal scrolling.
kindkindRCChipGroupKind'generic'Child coordination mode.
selectionselectionRCChipGroupSelection'none'Native filter selection hint.
labellabelstring'Chip actions'Accessible label used when `kind="assist"` exposes toolbar semantics.
showAllLabelshow-all-labelstring'Show all'Collapsed overflow action label.
showLessLabelshow-less-labelstring'Show less'Expanded overflow action label.
expandedexpandedbooleanNot specifiedCurrent auto-layout disclosure state. Host writes are silent.
defaultExpandeddefault-expandedbooleanNot specifiedInitial uncontrolled disclosure state.

Methods

No public methods are documented in the custom elements manifest.

Events

EventDetail typeDescription
rc-chip-group-toggleNo detail type documentedFired after the user activates Show all or Show less.

Slots

NameDescription
(default)Direct chip or arbitrary-element children.

CSS Custom Properties

PropertyDefaultDescription
--rc-chip-group-column-gap0.5remInline gap between items.
--rc-chip-group-row-gap0Block gap between wrapped rows.
--rc-chip-group-padding-block0Group block-axis padding.
--rc-chip-group-scroll-padding-inline0Horizontal scroll padding.
--rc-chip-group-scrollbar-widthnoneStandards-based scrollbar width.
--rc-chip-group-toggle-gap0.5remGap between the disclosure icon and label.
--rc-chip-group-toggle-separator-gap0.5remGap before the disclosure separator.
--rc-chip-group-toggle-icon-size1.125remDisclosure icon size.
--rc-chip-group-toggle-separator-block-size1.5remSeparator block size.
--rc-chip-group-toggle-separator-inline-size1pxSeparator thickness.
--rc-chip-group-toggle-separator-colorcurrentColorSeparator color.

CSS Parts

PartDescription
rootFlex layout and horizontal scroll container.
toggleInternal leading disclosure chip.
toggle-iconMDI tune icon inside the disclosure chip.
toggle-separatorVertical separator after the disclosure chip.