12t - Sağ Tık Menü Sistemi | Frontend Bölümü
Sonraki
Context Menu

Sağ Tık Menü Sistemi

Masaüstünde sağ tık, mobilde uzun basma - hızlı erişim menüsü.

Bu Ne İşe Yarar?

Bir şarkıya sağ tıklayın - anında seçenekler çıkar: Çal, Sıraya Ekle, Favorilere Ekle, Puan Ver... Telefonunuzda mı? Şarkıya 500ms basılı tutun - aynı menü açılır. Her içerik türü için farklı seçenekler: Şarkı menüsü, albüm menüsü, playlist menüsü.

Nasıl Açılır?

Masaüstü
Sağ Tık

Farenin sağ tuşuna basın. Menü imlecin yanında açılır. Tıklayarak seçim yapın.

Mobil
Uzun Basma (500ms)

Parmağınızı yarım saniye basılı tutun. Hafif titreşim + menü açılır. Kaydırarak seçin.

İçerik Tipine Göre Menüler

Şarkı Menüsü
  • Şimdi Çal
  • Sıraya Ekle
  • Favorilere Ekle
  • Puan Ver
  • Playlist'e Ekle
  • Sanatçıya Git
  • Albüme Git
  • Paylaş
Albüm Menüsü
  • Albümü Çal
  • Karışık Çal
  • Favorilere Ekle
  • Sıraya Ekle
  • Sanatçıya Git
  • Paylaş
Playlist Menüsü
  • Playlist'i Çal
  • Karışık Çal
  • Düzenle
  • Kopyala
  • Paylaş
  • Sil

Akıllı Davranışlar

Pozisyon Ayarı

Menü ekran dışına taşmaz. Sağda yer yoksa solda açılır, altta yer yoksa yukarıda açılır.

Dinamik İçerik

Zaten favorilerdeyse "Favorilerden Çıkar" yazar. Bağlama göre seçenekler değişir.

Hızlı Kapanma

Dışarı tıkla veya ESC tuşuna bas - menü kapanır. Seçim yaptığında da kapanır.

Haptic Feedback

Mobilde menü açılınca telefon hafifçe titrer. Dokunsal geri bildirim.

Bu Sayfanın Anahtar Terimleri

Context Menu (Bağlam Menüsü)
Sağ tıkla açılan menü. İçeriğe özel seçenekler sunar.
Long Press (Uzun Basma)
Parmağı belirli süre basılı tutma. Mobilde sağ tık yerine kullanılır.
Haptic Feedback
Titreşimle dokunsal geri bildirim. Kullanıcıya işlemin gerçekleştiğini hissettirir.
Dynamic Menu
Duruma göre değişen menü içeriği. Favorideyse "çıkar", değilse "ekle" gösterir.

Arkaplanda Neler Çalışıyor?

Kullanıcı sağ tık yaptığında context menu gösterilirken arka planda şu işlemler gerçekleşir:

1. Event Yakalama

contextmenu eventi dinlenir, preventDefault() ile tarayıcının varsayılan menüsü engellenir. Tıklanan elementin data-context attribute'u okunarak hangi içerik türü olduğu (şarkı, albüm, playlist) belirlenir.

@contextmenu.prevent="showMenu($event, item)"

2. Pozisyon Hesaplama

Mouse koordinatları (clientX, clientY) alınır. Menü boyutu hesaplanır. Ekran kenarlarına taşma kontrolü yapılır. Gerekirse menü yukarı veya sola kayar.

style="left: ${Math.min(x, window.innerWidth - menuWidth)}px"

3. Dinamik Menü Oluşturma

İçerik türüne göre menü öğeleri belirlenir. Şarkı için "Sıraya Ekle", "Favorilere Ekle", albüm için "Tümünü Çal" gibi seçenekler gösterilir. Kullanıcı yetkisine göre bazı seçenekler gizlenir.

menuItems.filter(item => item.canShow(currentUser, target))

4. Durum Kontrolü

Şarkı zaten favorilerde mi? Playlistte mi? Bu kontroller yapılır ve menü metni buna göre değişir. "Favorilere Ekle" veya "Favorilerden Çıkar" dinamik olarak gösterilir.

isFavorite ? 'Favorilerden Çıkar' : 'Favorilere Ekle'

5. Aksiyon İşleme

Menü öğesine tıklandığında ilgili aksiyon tetiklenir. AJAX ile sunucuya istek gönderilir (favori ekle/çıkar). Başarılı olursa toast notification gösterilir, UI güncellenir.

fetch('/api/favorites', {method: 'POST'}).then(showToast)

6. Menü Kapatma

Başka yere tıklandığında veya Escape tuşuna basıldığında menü kapanır. Click-outside pattern ile window'a eklenen listener menüyü kapatır ve kendini temizler.

@click.away="menuOpen = false" @keydown.escape="menuOpen = false"
CONTEXT MENU
Sağ Tık = Hızlı Erişim
Şarkı Adı
Sanatçı Adı
Sağ Tık
500ms