Konu Başlıkları
Yükleniyor...

Cancel ve Close: Modal Pencerede İki Farklı Söz

Modal Pencerelerde Cancel ile Close Ayrımı Nasıl Kurulur?

Cancel ile Close aynı pencereyi kapatır, ama kullanıcıya verdikleri söz birbirinin tersi. Cancel “bu ekranda yaptıklarını yok sayacağım” der; Close “yaptıklarına dokunmuyorum, sadece pencereyi kaldırıyorum” der. Sorun şu ki çoğu modalın sağ üstünde tek bir X var ve o X hangisini yaptığını söylemiyor.

İki düğme, iki ayrı taahhüt

Bir liste ekranının üstünde filtre paneli olduğunu düşünelim. Kullanıcı dört filtreyi değiştirdi, sonra paneli kapattı. Cancel bu durumda listeyi dört filtre öncesine döndürür. Close ise paneli kaldırır, liste yeni filtrelerle kalır. Aynı tıklama, iki farklı sonuç.

Ayrımı kurmanın pratik yolu düğmenin etiketine değil sonucuna bakmak: pencere kapandıktan sonra arkadaki durum değişti mi? Değiştiyse kullanıcıya Close verdin. Değişmediyse ve girilenler atıldıysa Cancel verdin. İsimlendirme bu karardan sonra gelir, öncesinde değil.

Buradan çıkan ilk kural da şu: bir pencerede hem “Kaydet” hem “Kapat” varsa Close zaten değişiklikleri koruyor demektir, o yüzden ikisini yan yana koymak kullanıcıya üç ayrı seçenek sunmuş gibi görünür ama gerçekte iki tanesi aynı işi yapar.

Etiketlemediğin üç çıkış yolu

Görünür düğmeleri tasarlamak kolay kısım. Zor kısım, kullanıcının o düğmelere hiç dokunmadan pencereden çıkabildiği yollar: sağ üstteki X, Esc tuşu, arka karartmaya tıklama.

Esc konusunda platform kararı zaten vermiş. Tarayıcıdaki <dialog> elementinde Esc'e basıldığında önce cancel olayı tetiklenir, ardından close gelir; yani Esc'in sözlükteki karşılığı iptaldir. Kaydedilmemiş veri varsa bu olayı preventDefault() ile durdurup pencereyi açık tutabilirsin. Esc'i “değişiklikleri koru” diye bağladığın anda arayüzün, altında çalıştığı platformun tersini söylemeye başlar.

Arka karartmaya tıklama en zayıf halka, çünkü kullanıcıların önemli bir bölümü oraya kazara dokunur. Kaybedilecek bir şey yoksa bunu Cancel saymak sorun değil. Kaydedilmemiş girdi varsa o tıklamayı hiç dinlememek daha iyi: pencere açık kalır, kullanıcı ne yapacağına düğmelerle karar verir.

X'e gelince, onu bir anlama bağlamak zorundasın. Cancel'a bağlıyorsan aria-label değeri “Kapat” değil “Vazgeç” olsun; ekran okuyucu kullanan birine düğmenin ne yaptığını söyleyen tek şey o metin.

Onay kutusu mu, otomatik kayıt mı?

Kaydedilmemiş değişiklik uyarısını, otomatik kayıt artı geri alma ikilisinden daha zayıf bir çözüm buluyorum. Uyarı penceresi bedeli her çıkışa yayar: ortada kaybedilecek ciddi bir şey olmayan yüzlerce çıkışta da kullanıcı fazladan bir ekran okur, bir süre sonra okumadan onaylamaya başlar. Otomatik kayıt bedeli yalnızca pişmanlık anına yükler, o da nadirdir.

Bunun geçerli olmadığı yer kesin: işlem geri alınamıyorsa ya da sonucu kullanıcının kendi ekranının dışına taşıyorsa. Yayına alma, e-posta gönderme, yetki değiştirme, kayıt silme. Burada onay kutusu yerini hak eder, çünkü geri alma düğmesi takabileceğin bir aşama kalmamıştır. Ölçüt “işlem önemli mi” değil, “sonradan geri alınabilir mi”.

Onayı iki düğmeye de koyarsan ayrım çöker

Yaygın bir tavsiye, kullanıcı Cancel ya da Close'a bastığında niyetini doğrulayan bir onay göstermek. İkisine birlikte uygulandığında bu tavsiye kendi amacını yıkıyor: her iki düğme de iki aşamalı aynı jeste dönüşür, kullanıcı için aralarındaki fark kaybolur ve etiketleri okumayı bırakır.

Cancel'ın kendisi zaten “at gitsin” kararıdır. Onu bir kez daha sormak, acil çıkış kapısının önüne ikinci bir kapı koymak gibi. Onay tek bir yola konur: sessizce emek götüren yola. Kullanıcının çıkışı sırasında arkada veri kalıyorsa soru sormaya gerek yok.

Etiket, eylemi söylemeli

Türkçe arayüzlerde “Kapat” kelimesi iki anlamı da taşıyabildiği için tek başına bilgi vermiyor. Etiketi sonuca göre yaz: değişiklikler atılıyorsa “Vazgeç” ya da “Kaydetmeden çık”, korunuyorsa “Kapat” ya da “Bitti”. Yıkıcı olanla güvenli olanı aynı görsel ağırlıkta, yan yana ve eşit boyutta koymamak da işe yarar; kullanıcı hangi düğmeye bastığını renkten çok konumdan hatırlıyor.

Üç satırlık bir kontrol listesi kalıyor geriye:

  • Pencere kapandıktan sonra arkadaki durumun değişip değişmediğini yaz, sonra etiketi ona göre seç.
  • X, Esc ve arka plan tıklamasının hangi düğmeye karşılık geldiğini açıkça karara bağla; üçü birbirinden farklı davranıyorsa hata var.
  • Onay kutusunu yalnızca geri alınamayan yola koy, ikisine birden değil.