Lynx

Accordion

관련된 정보 섹션을 접고 펼쳐 화면을 간결하게 구성하는 컴포넌트입니다.

Engine ≥ 3.6
사용 가능 버전@seed-design/lynx-react@0.5.0, @seed-design/lynx-css@0.9.0
Lynx 예제를 불러오는 중입니다.

Installation

npx @seed-design/cli@latest add ui:accordion

Props

Accordion

Prop

Type

values?string[] | undefined
defaultValues?string[] | undefined
onValuesChange?((values: string[]) => void) | undefined
disabled?boolean | undefined
multiple?boolean | undefined
style?CSSProperties | undefined
children?React.ReactNode
className?string | undefined

AccordionItem

Prop

Type

valuestring
disabled?boolean | undefined
style?CSSProperties | undefined
children?React.ReactNode
className?string | undefined

AccordionTrigger

Prop

Type

titleReact.ReactNode
description?React.ReactNode
prefix?React.ReactNode
suffixIcon?React.ReactElement<LynxIconElementProps, string | React.JSXElementConstructor<any>> | undefined
className?string | undefined
bindtap?EventHandler<BaseTouchEvent<Target>> | undefined
expandedAccessibilityValue?string | undefined
collapsedAccessibilityValue?string | undefined
style?CSSProperties | undefined

AccordionContent

Prop

Type

style?CSSProperties | undefined
children?React.ReactNode
className?string | undefined

Examples

Inline Variant

기본 variant입니다. 아이템이 연속된 흐름으로 제공되며, 아이템 사이에 구분선이 표시됩니다.

Lynx 예제를 불러오는 중입니다.

Separated

variant="separated" 를 사용하면 각 항목이 분리된 카드 형태로 표시됩니다.

Lynx 예제를 불러오는 중입니다.

Multiple

기본적으로 한 번에 하나의 항목만 펼칠 수 있습니다. multiple prop을 사용하면 여러 항목을 동시에 펼칠 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Always one open

valuesonValuesChange를 사용해 controlled 패턴으로 운영하면, 빈 배열이 들어올 때 setter를 호출하지 않는 가드만 추가하여 항상 하나의 항목이 열려 있도록 강제할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Size

size로 Accordion의 크기를 정합니다. (default: medium)

Lynx에서는 mediumlarge를 사용할 수 있습니다. 화면 너비에 따라 자동으로 바뀌는 responsive는 지원하지 않으므로, 필요하면 앱에서 화면 너비에 따라 두 값 중 하나를 선택해 주세요.

Lynx 예제를 불러오는 중입니다.

Prefix

prefix prop에 아이콘 같은 앞쪽 요소를 전달할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Description

description prop으로 트리거에 부가 설명을 추가할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Disabled

disabled prop으로 전체 또는 개별 항목을 비활성화할 수 있습니다.

  • Accordiondisabled를 설정하면 모든 항목이 비활성화됩니다.
  • AccordionItemdisabled를 설정하면 해당 항목만 비활성화됩니다.
Lynx 예제를 불러오는 중입니다.

Controlled

valuesonValuesChange를 사용하여 열림 상태를 직접 제어할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Value Array Changes

controlled 모드에서는 현재 열려 있는 항목이 values 배열로 전달됩니다. 아래 예시는 트리거를 누를 때마다 최신 values와 최근 onValuesChange 결과를 함께 보여줍니다.

Lynx 예제를 불러오는 중입니다.

Default Expanded

defaultValues를 사용하여 초기 열림 상태를 지정할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Custom Content

AccordionContent는 열림/닫힘 애니메이션 컨테이너 역할만 합니다. 기본 패딩, 배경색, 테두리, 타이포그래피 스타일은 제공하지 않으므로 내부 콘텐츠에서 직접 구성해야 합니다. 아래 예시처럼 Box로 패딩과 배경을 명시적으로 주는 패턴을 권장합니다.

Lynx 예제를 불러오는 중입니다.

Web Version Differences

Lynx Accordion은 React 버전과 다음 차이가 있습니다.

  • Native elements: HTML heading, button, region 대신 Lynx <view><text>를 렌더링합니다.
  • Interaction: 키보드 탐색 대신 Trigger의 native tap 이벤트로 항목을 열고 닫습니다.
  • Accessibility: DOM ARIA 대신 accessibility-heading, accessibility-role-description, accessibility-value를 사용합니다.
  • Responsive size: Lynx preset은 viewport media query를 지원하지 않아 size="responsive"를 제공하지 않습니다.
  • Content transition: React 버전은 CSS custom property로 높이를 전달하고, Lynx 버전은 layoutchange로 콘텐츠 높이를 측정해 같은 duration과 easing의 transition을 적용합니다.

Unsupported Lynx Features

기능설명
asChildLynx에는 Slot 기반 polymorphic 렌더링이 없습니다.
headingLevelLynx의 heading 접근성 속성은 HTML heading level을 받지 않습니다.
DOM ARIA 연결aria-controls, aria-labelledby, role="region" 대신 Lynx native 접근성 속성을 사용합니다.
Arrow / Home / End 키 탐색Lynx native 화면에는 웹과 같은 키보드 포커스 모델이 없습니다.
size="responsive"Lynx preset은 viewport media query를 지원하지 않습니다.

Last updated on

목차