Vercel UI SDK 0.1.0-beta.1 üzerine kurulu. API’si değişebilir.
Tree
Vercel UI SDK üzerinde dosyalar ve iç içe sayfalar için; dosya yolları, onay kutuları, bağlantılar ve isteğe bağlı yüklenen alt öğeler sunan bir ağaç görünümü.
- Veri gösterim bileşenleri
- 7 parça
- 12 örnek
@tabler/icons-react@ui-sdk/core@ui-sdk/reactclass-variance-authority
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-tree.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @ui-sdk/react@0.1.0-beta.1 @ui-sdk/core@0.1.0-beta.1 @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-tree.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
UI SDK, ui-sdk adlı bir cascade katmanında kendi CSS’ini biraz ekler. Sınıflarınızın kazanması için bu katmanı genel stil dosyanızın en üstünde, Tailwind import’unun üzerinde tanımlayın.
İçinde TreeGroup olan bir öğe daldır. Her öğeye benzersiz bir value, ağaca da erişilebilir bir ad verin. Odak öğede kalır ve label gördüğünüz satırdır; bu yüzden seçili, geçerli ve odaklı stillerin hepsi label’a uygulanır.
items verip alt öğe vermezseniz ağaç sizin için oklu, stilli satırlar çizer. Her öğenin bir value, bir label ve isteğe bağlı children değeri vardır.
Dosya gezgini için klasörler önce gelecek şekilde paths verin. activation="automatic" ile ok tuşları seçer; promise döndüren bir onAction, satırı sonuçlanana kadar beklemede gösterir.
mode="multiple" ile Cmd veya Ctrl tıklama bir öğeyi açıp kapatır, Shift bir aralığı genişletir. expandOnPress={false} genişletmeyi oka ve ok tuşlarına bırakır.
checkable ekleyin ve her label içine bir TreeItemCheckbox koyun. Bir dalı işaretlemek içindeki her şeyi işaretler; kısmen işaretli bir dal tire gösterir.
href içeren öğeler bağlantı olarak çizilir. mode="none" ve current ile geçerli sayfa aria-current alır, üst öğeleri açılır ve sekme durağını alır.
Alt öğeleri oluşmadan bir öğeyi branch olarak işaretleyin; loadChildren ilk açılışta çalışır. Ok yüklenirken dönen simgeye, başarısız olursa yeniden deneme simgesine dönüşür. Archive bir kez başarısız olur.
variant="lines" her açık grup için bir girinti çizgisi çizer, size="sm" satırları kısaltır.
createTreeController() ile oluşturulan bir controller, öğeleri her yerden genişletir, daraltır, seçer ve gösterir.
hiddenUntilFound ile kapalı gruplar sayfada kalır; böylece tarayıcının sayfada bul özelliği Phobos’u bulur ve göstermek için Mars’ı açar.
Devre dışı bir öğe ekran okuyucuların bulabilmesi için yine odak alır, ancak seçilemez, işaretlenemez veya açılamaz.
Satırlar sağdan girintilenir, ok sola bakar ve sol ile sağ ok tuşları yer değiştirir.
| Tuş | Action |
|---|---|
| ↓↑ | Sonraki veya önceki görünür öğeye geçer. |
| → | Bir dalı açar veya ilk alt öğesine geçer. |
| ← | Bir dalı kapatır veya üst öğesine geçer. |
| HomeEnd | İlk veya son görünür öğeye geçer. |
| Alt→ | Bir dalı ve içindeki her şeyi açar. |
| * | Odaktaki dalın yanındaki tüm dalları açar. |
| Enter | Öğeyi seçer ve eylemini çalıştırır ya da bağlantısını izler. |
| Space | Ağaç işaretlenebilirse öğeyi işaretler, değilse seçer. |
| Shift↓ | Çoklu seçimi genişletir. |
| ⌘A | Çoklu modda tüm görünür öğeleri seçer. |
Ağaç, tek sekme duraklı WAI-ARIA ağaç görünümü desenini izler. Tab geçerli sayfaya, seçili öğeye veya ilk öğeye gelir. Bir harf yazmak, onunla başlayan sonraki öğeye geçer. Yavaş bir onAction çalışırken ekran okuyucular bir saniye sonra pendingAnnouncement metnini duyar; bu yüzden onu sayfanızın dilinde ayarlayın.
Gruplar yalnızca harekete izin verildiğinde yükseklik animasyonuyla açılıp kapanır. Dokunmatik ekranlarda satırlar daha uzundur; zorunlu renkler modunda seçili ve geçerli satırlar bir çerçeve alır.
Her parça aynı adlı UI SDK parçasını sarar ve render ile parçanın durumuna bağlı bir fonksiyon olabilen className dahil tüm prop’larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
itemsTüm hiyerarşi. Alt öğe verilmezse ağaç ondan stilli satırlar çizer. | TreeItemData[] | – |
pathsDosya yolları. Klasörler dal olur; / ile biten bir yol boş klasördür. | string[] | – |
mode | "single" | "multiple" | "none" | "single" |
value | string | string[] | null | – |
defaultValue | string | string[] | null | – |
onValueChange | (value, details) => void | – |
activation | "automatic" | "manual" | "manual" |
expanded | string[] | – |
defaultExpanded | string[] | – |
onExpandedChange | (expanded, details) => void | – |
expandOnPress | boolean | true |
checkable | boolean | false |
checked | string[] | – |
defaultChecked | string[] | – |
onCheckedChange | (checked, details) => void | – |
checkStrategy | "leaf" | "trunk" | "branch" | "independent" | "leaf" |
onActionBasınca veya Enter ile çalışır. Öğeyi beklemede göstermek için bir promise döndürün. | (value, details) => unknown | – |
pendingAnnouncement | string | – |
loadChildren | (value, { signal }) => Promise<unknown> | – |
current | string | null | – |
disabled | boolean | false |
hiddenUntilFound | boolean | false |
keepMounted | boolean | false |
variant | "default" | "lines" | "default" |
size | "default" | "sm" | "default" |
controllercreateTreeController() ile oluşturulur. | TreeController | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree" | CSS’te ağacı hedefler. |
data-variant | Varyant: default veya lines. |
data-size | Boyut: default veya sm. |
--tree-row-height | Her satırın yüksekliği; size ile ayarlanır. |
--tree-indent | Her seviyenin ne kadar girintilendiği. |
| Prop | Tür | Varsayılan |
|---|---|---|
valueAğaçta benzersiz. | string | – |
branchAlt öğeleri sonra yüklenen bir dal için ayarlayın. | boolean | – |
disabled | boolean | false |
labelLabel düz metin değilse, yazarak aramanın eşleştirdiği metin. | string | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree-item" | CSS’te bir öğeyi hedefler. Odak ondadır. |
data-level | 1’den başlayan derinlik. |
data-branch | Bir dalda bulunur. |
data-expanded | Bir dal açıkken bulunur. |
--tree-level | Düz bir listeyi girintilemek için derinlik. |
| Prop | Tür | Varsayılan |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree-label" | CSS’te bir satırı hedefler. |
data-selected | Öğe seçiliyken bulunur. |
data-current | Geçerli sayfanın öğesinde bulunur. |
data-expanded | Bir dal açıkken bulunur. |
data-pending | Öğenin onAction’ı çalışırken bulunur. |
data-disabled | Öğe devre dışıyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak bir ok, yüklenirken dönen simge ve hatadan sonra yeniden deneme simgesi. | ReactNode | (state) => ReactNode | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree-indicator" | CSS'te ok işaretini hedefler. |
data-loading | Alt öğeler yüklenirken bulunur. |
data-failed | Alt öğeler yüklenemedikten sonra bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak onay işareti, karışık durumda tire. | ReactNode | (state) => ReactNode | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree-checkbox" | CSS’te onay kutusunu hedefler. |
data-checked | İşaretliyken bulunur. |
data-indeterminate | Bir dal kısmen işaretliyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
keepMounted | boolean | – |
hiddenUntilFound | boolean | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="tree-group" | CSS’te bir grubu hedefler. |
data-open | Açıkken bulunur. |
--tree-group-height | Grubun animasyon sırasındaki yüksekliği. |
- AvatarBaş harf yedekli kullanıcı fotoğrafları, durum rozetleri ve sayıya daralan yığılmış gruplar.
- BadgeRenkli noktalı durum etiketleri, kayarak kapanan kaldırılabilir etiketler ve yeni değerine dönen sayaçlar.
- Cardİçeriği gruplamak için bir yüzey; üç varyant, kenardan kenara medya, eşmerkezli yarıçaplar ve tüm kartı kaplayan bağlantılar içerir.
- ChartTema renkli Recharts grafikleri; etiketleri tek bir yapılandırmadan okuyan bir tooltip ve gösterge, ayrıca görünür odak halkalı klavye gezintisi.
- Data tableGerçek veriler için bir tablo; sıralama, arama, satır seçimi, sabitlenmiş sütunlar, yapışkan başlık ve sayfalama içerir.
- ItemListeler, ayarlar ve seçiciler için medya, metin ve eylemlerden oluşan bir satır; gruplanmış bir yüzey ve satırlar arasında kayan bir hover vurgusu içerir.