Accordion

Alt alta dizilmiş, açılıp kapanan bölümler; aynı anda bir ya da birden çok panel gösterir.

KararlıKaynak kod

Her aktif kullanıcı için aylık ödeme yaparsın. Kullanılmayan kullanıcılar hesabına kredi olarak geçer.

Import

tsx
import { Accordion } from "@merid/react";

Anatomi

tsx
<Accordion.Root type="single">
  <Accordion.Item value="a">
    <Accordion.Trigger />
    <Accordion.Content />
  </Accordion.Item>
</Accordion.Root>
  • Root, aynı anda tek bir item'ın mı (type="single") yoksa birden çok item'ın mı (type="multiple") açık olabileceğini belirler.
  • Item, bir tetikleyiciyi ve onun içeriğini benzersiz bir value altında gruplar.
  • Trigger, bir başlığın (varsayılan olarak h3) içine yerleştirilmiş, artı ikonlu bir <button>'dır.
  • Content, tetikleyicisiyle etiketlenen bir role="region"'dır. Children yalnızca açıkken render'lanır.

Örnekler

Multiple, controlled

type="multiple" ile value ve onValueChange bir string[] kullanır. headingLevel, sarmalayan başlığın seviyesini sayfanın başlık hiyerarşisine uyacak şekilde ayarlar.

Siparişler iki iş günü içinde kargoya verilir.

Açık: a

Her zaman biri açık

Single bir accordion'da collapsible={false}, açık item'ın kapatılmasını engeller.

Repository'ni bağla.

API referansı

Root (single)

defaultValue ve onChange dışındaki tüm <div> attribute'larını kabul eder.

PropTipVarsayılanAçıklama
typeZorunlu"single"–Aynı anda tek item açık olur.
valuestring–Controlled açık item (hiçbiri için "").
defaultValuestring–Uncontrolled kullanımda başlangıçta açık olan item.
onValueChange(value: string) => void–Açık item'ın value'su ile çağrılır (hepsi kapalıyken "").
collapsiblebooleantrueAçık item'ın kapatılmasına izin verir.
headingLevel2 | 3 | 4 | 5 | 63Her tetikleyiciyi saran başlığın seviyesi.
refRef<HTMLDivElement>–Root elemanına iletilen ref.

Root (multiple)

PropTipVarsayılanAçıklama
typeZorunlu"multiple"–İstenen sayıda item açık olabilir.
valuestring[]–Controlled açık item'lar.
defaultValuestring[]–Uncontrolled kullanımda başlangıçta açık olan item'lar.
onValueChange(value: string[]) => void–Açık item'ların value'larıyla çağrılır.
headingLevel2 | 3 | 4 | 5 | 63Her tetikleyiciyi saran başlığın seviyesi.
refRef<HTMLDivElement>–Root elemanına iletilen ref.

Item

Tüm <div> attribute'larını kabul eder.

PropTipVarsayılanAçıklama
valueZorunlustring–Bu item'ın benzersiz değeri.
disabledbooleanfalseAçılıp kapanmasını engeller.

Trigger

Tüm <button> attribute'larını kabul eder.

PropTipVarsayılanAçıklama
refRef<HTMLButtonElement>–Butona iletilen ref.

Content

Tüm <div> attribute'larını kabul eder.

PropTipVarsayılanAçıklama
refRef<HTMLDivElement>–Region elemanına iletilen ref.

Stil verme

SınıfEleman
.mrd-accordionRoot
.mrd-accordion__itemItem
.mrd-accordion__headingTetikleyiciyi saran başlık
.mrd-accordion__trigger, .mrd-accordion__trigger-textTetikleyici ve metni
.mrd-accordion__iconArtı ikonu (açıkken döner)
.mrd-accordion__contentİçerik bölgesi
AttributeNeredeDeğerler
data-stateItem, Trigger, Contentopen, closed
aria-expandedTriggertrue, false
aria-disabled="true", data-disabledTriggeritem devre dışıyken

Erişilebilirlik

WAI-ARIA Accordion desenini izler. Her tetikleyici bir başlığın içinde durur, aria-expanded ve aria-controls taşır; bölgesi de tetikleyiciyle etiketlenir. Devre dışı tetikleyicilere Tab ile hâlâ ulaşılır (aria-disabled ile), böylece ekran okuyucu onları okumaya devam eder; ama ok tuşları, Home ve End onları atlar.

TuşNe yapar
EnterFocus'taki bölümü açar ya da kapatır.
SpaceFocus'taki bölümü açar ya da kapatır.
TabAçık içeriğin içindekiler dahil, focus alabilen bir sonraki elemana geçer.
ArrowDownBir sonraki etkin tetikleyiciye geçer; sona gelince başa döner.
ArrowUpBir önceki etkin tetikleyiciye geçer; başa gelince sona döner.
Homeİlk etkin tetikleyiciye geçer.
EndSon etkin tetikleyiciye geçer.

Kullanım ilkeleri

Yap

Accordion'ı, kullanıcıların başlığa bakarak taradığı ikincil içerik için kullan: SSS, ayar grupları, detaylar.

Kaçın

Herkesin okuması gereken içeriği gizlemek ya da accordion'a tek bir item koymak.

Yap

Tetikleyicileri soru ya da konu olarak yaz; sayfanın başlık yapısı düzgün okunsun.

Kaçın

Accordion'ları iç içe koymak.

İlgili sayfalar