ContextMenu

Sağ tıkla imlecin olduğu yerde, ya da focus'lu bir elemanda ContextMenu tuşu / Shift+F10 ile açılan aksiyon menüsü. DropdownMenu'nun öğelerini, klavye modelini ve stillerini paylaşır.

Buraya sağ tıkla ya da dosyaya focus verip Shift+F10'a bas

Son işlem: henüz yok

Import

import { ContextMenu } from "@meridui/react";

Anatomi

<ContextMenu.Root>
  <ContextMenu.Trigger />
  <ContextMenu.Content>
    <ContextMenu.Label />
    <ContextMenu.Group>
      <ContextMenu.Item />
      <ContextMenu.CheckboxItem />
    </ContextMenu.Group>
    <ContextMenu.Separator />
  </ContextMenu.Content>
</ContextMenu.Root>
  • Root açık/kapalı state'ini ve menünün erişilebilir adını (label) tutar.
  • Trigger contextmenu event'ini dinleyen alandır. Bir <div>'dir (ya da asChild ile senin elemanın) ve kendisi focus almaz: klavye kullanıcılarının menüyü ContextMenu tuşu ya da Shift+F10 ile açabilmesi için içine focus alabilen içerik koy.
  • Content ve öğeler DropdownMenu'dekilerin aynısıdır; orada bildiğin her şey burada da geçerli.

Örnekler

Konum

Menü imlecin olduğu yerde açılır. Klavyeden açıldığında imleç konumu olmadığı için focus'lu elemanın altında açılır. Viewport içinde kalmak için yön değiştirir ve kayar.

Tarayıcı menüsünü korumak

Tarayıcının kendi bağlam menüsünün görünmesi için Trigger'a disabled ver; örneğin bir metin alanının içinde.

API referansı

Root

PropTipVarsayılanAçıklama
openboolean–Controlled açık/kapalı state'i.
defaultOpenbooleanfalseUncontrolled kullanımda başlangıç state'i.
onOpenChange(open: boolean) => void–Açık/kapalı state'i değişmesi gerektiğinde çağrılır.
labelstring"Context menu"Menünün erişilebilir adı.
childrenReactNode–Trigger ve Content.

Trigger

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

PropTipVarsayılanAçıklama
asChildbooleanfalseSağ tık alanı olarak tek child elemanı render'lar.
disabledbooleanfalseOnun yerine tarayıcının kendi bağlam menüsü görünür.
refRef<HTMLDivElement>–Alan elemanına iletilen ref.

Content, Item, CheckboxItem, Group, Label, Separator

Prop'ları DropdownMenu'deki karşılıklarıyla aynı. Content, imlece göre varsayılan olarak placement="bottom-start" ve sideOffset={2} kullanır.

Stil verme

ContextMenu, DropdownMenu sayfasında listelenen menü sınıflarını (.mrd-menu, .mrd-menu__item, …) kullanır. Tetikleyici alanın sınıfı .mrd-context-menu__trigger'dır (asChild değilse); devre dışıyken data-disabled taşır.

Erişilebilirlik

WAI-ARIA Menu desenini izler. Menünün adı label'dan gelir; açılınca focus ilk öğeye geçer, Escape ile ya da bir seçim yapılınca önceki elemana döner.

TuşNe yapar
ShiftF10Tetikleyicinin içindeki focus'lu bir elemanda: menüyü açar.
ContextMenuShift+F10 ile aynı.
ArrowDownSonraki öğe; sona gelince başa döner.
ArrowUpÖnceki öğe; başa gelince sona döner.
Homeİlk öğe.
EndSon öğe.
EnterÖğeyi çalıştırır.
SpaceÖğeyi çalıştırır.
A–ZYazılan metinle başlayan bir sonraki öğeye gider (typeahead).
EscapeKapatır ve focus'u geri verir.

Kullanım ilkeleri

Yap

Bağlam menüsünü başka yerden de (bir toolbar, bir satır menüsü) ulaşılabilen aksiyonlar için kısayol olarak kullan.

Kaçın

Aksiyonları yalnızca sağ tıkın arkasına saklamak. Dokunmatik kullanıcılar ve pek çok klavye kullanıcısı onları hiç bulamaz.

İlgili sayfalar

  • DropdownMenu: aynı menü, bir butondan açılır.
  • Toolbar: aynı aksiyonlar için görünür kontroller.