Skip to Content

Collapse

접기/펼치기 가능한 섹션을 제공하는 접이식 패널 컴포넌트


개요

Collapse는 Foundation Accordion을 래핑하여 여러 CollapseItem을 감싸는 컨테이너입니다. 열린 아이템 상태를 value: string[] 배열로 제어하며, 다중 열기와 아코디언(단일 열기) 모드를 모두 지원합니다.

주요 특징

  • 다중/단일 열기: accordion prop으로 한 번에 하나의 아이템만 열리도록 제한
  • Controlled/Uncontrolled: value·defaultValue·onChange로 열림 상태 제어
  • 아이콘 위치: iconPosition으로 화살표 아이콘 좌/우 배치
  • 아이콘 전용 토글: arrowOnly로 화살표 클릭 시에만 접기/펼치기 동작
  • 개별 제어: 아이템별 disabled·visible 지원
  • 디자인 토큰: Foundation Accordion 토큰 시스템 호환

기본 사용

Collapse 안에 CollapseItem을 배치하고 defaultValue로 초기 열림 아이템을 지정합니다. 기본은 다중 열기 모드입니다.

섹션 A의 내용입니다.


아코디언 모드

accordion을 true로 설정하면 한 번에 하나의 아이템만 열립니다.

A 내용


열림 상태 제어 (Controlled)

valueonChange로 열린 아이템을 외부에서 제어합니다. 외부 조건에 따라 아이템을 자동으로 열거나 닫을 수 있습니다.


아이콘 위치

iconPosition으로 접기/펼치기 화살표 아이콘의 위치를 지정합니다. 기본값은 "right"입니다.


아이콘 전용 토글 (arrowOnly)

arrowOnly를 true로 설정하면 제목 클릭은 무시되고 화살표 아이콘 클릭 시에만 토글됩니다.

제목 클릭은 무시됩니다


비활성 아이템

disabled인 아이템은 클릭이 동작하지 않고 비활성 스타일이 적용됩니다.


API Reference

Collapse Props

PropTypeDefaultDescription
valuestring[]-열린 아이템 키 목록 (controlled)
defaultValuestring[]-초기 열린 아이템 키 목록 (uncontrolled)
accordionbooleanfalsetrue이면 한 번에 하나의 아이템만 열림
visiblebooleantrue표시 여부 (false → 렌더 안 함)
classNamestring-컨테이너 CSS 클래스
styleCSSProperties-인라인 스타일
childrenReactNode-CollapseItem 목록

CollapseItem Props

PropTypeDefaultDescription
itemKeystring(필수)아이템 식별 키 (Collapse value에 사용)
titleReactNode-헤더 제목 (ReactNode로 자유 구성 가능)
iconPosition"left" | "right""right"접기/펼치기 화살표 아이콘 위치
arrowOnlybooleanfalsetrue이면 화살표 아이콘 클릭 시에만 토글
disabledboolean-비활성화 (클릭 무시 + 비활성 스타일)
visiblebooleantrue표시 여부 (false → 해당 아이템 렌더 안 함)
classNamestring-아이템 컨테이너 CSS 클래스
triggerClassNamestring-헤더(트리거) CSS 클래스
contentClassNamestring-본문 콘텐츠 CSS 클래스
childrenReactNode-본문 콘텐츠

Events

EventTypeDescription
onChange(value: string[]) => void열린 아이템 상태 변경 콜백

접근성

권장 사항

  • ✅ 트리거가 button + aria-expanded로 노출됨 (Foundation Accordion 제공)
  • ✅ disabled 아이템 트리거에 aria-disabled 자동 적용
  • ✅ arrowOnly 모드의 화살표 트리거에 aria-label 자동 제공
  • ❌ 아이템 제목 없이 본문만 제공하지 않기 (헤더가 토글 진입점)

관련 컴포넌트

Last updated on