Toast

Notifikasi sementara setelah aksi pengguna, dengan durasi, tombol aksi, dan posisi yang bisa diatur.

Tampilan

Kartu toast memakai warna dan variant yang sama dengan Alert. Contoh statis ini memperlihatkan tampilannya; tombol pada bagian berikut membuka notifikasi di sudut layar.

Jadwal tersimpan

Pengangkutan berikutnya sudah dijadwalkan.

Periksa koneksi

Sambungkan kembali sebelum mencoba mengirim laporan.

Pemasangan

Pasang satu W4cToaster di app.vue atau layout yang tetap terpasang. Nuxt layer menyediakan useToast sebagai auto-import. Ambil composable di setup atau plugin Nuxt, lalu panggil metodenya dari event pengguna atau setelah operasi di browser selesai.

vue
<template>
<NuxtPage />
<W4cToaster />
</template>

Dasar

Gunakan success, error, warning, atau info untuk pesan sesuai hasil aksi. Notifikasi tidak memindahkan fokus secara otomatis. Antrean terpisah per aplikasi Nuxt, termasuk saat render server; panggilan saat SSR tidak diteruskan ke browser.

Tumpukan notifikasi

Toast tampil sebagai tumpukan kartu, dengan pesan terbaru di depan. Tepi tiga kartu sebelumnya menjadi penanda bahwa masih ada pesan lain. Menutup kartu depan memperlihatkan pesan berikutnya.

Membuka dan meringkas tumpukan adalah satu gerakan: kartu tidak berganti tata letak, hanya bergeser dan berubah skala ke posisi barunya. Gunakan Lihat notifikasi untuk membuka kartu aktif, termasuk melalui keyboard atau layar sentuh. Timer hanya berjalan pada kartu depan saat tumpukan ringkas, tanpa hover atau fokus. Pesan yang tertutup tidak habis sebelum dibaca. Contoh ini memakai duration: 0 supaya bisa dicoba tanpa terburu-buru.

Variant

Tersedia tiga varian visual: soft (default, berlatar lembut), outline (dengan bingkai warna semantik), dan solid (warna pekat penuh).

Dengan aksi

Toast dapat memuat tombol aksi interaktif, seperti tombol 'Batalkan' setelah aksi lokal. Contoh ini menyimulasikan aksi; handler aplikasi yang melakukan pemulihan atau unduhan sebenarnya. Tombol aksi tidak menutup toast otomatis; panggil remove(id) jika aksi sudah selesai.

Posisi

Viewport <W4cToaster /> mendukung 6 pilihan posisi di layar. Posisi bawaan adalah kanan atas (top-right). Klik posisi untuk memindahkan notifikasi contoh. Halaman ini memakai satu Toaster yang ada dalam contoh posisi, sehingga notifikasi tidak muncul ganda.

Persisten dan ikon

Setel duration: 0 jika pesan harus tetap tampil hingga pengguna mengklik tombol tutup secara manual. Ikon juga dapat dikustomisasi dengan ikon Iconify pilihan.

Selama duration lebih dari nol, garis di tepi bawah kartu menyusut sesuai waktu yang tersisa, jadi pembaca tahu berapa lama lagi pesannya ada. Garis itu berhenti saat kartu di-hover atau menerima fokus keyboard — sama seperti timernya — dan tidak ditampilkan sama sekali bila sistem meminta prefers-reduced-motion, karena garis yang tidak menyusut akan mengaku waktunya masih penuh. Matikan dengan progress: false bila tidak diinginkan.

API

Metode useToast()

MetodeTipeDefaultKeterangan
add(options: W4cToastOptions) => string—Menambahkan notifikasi toast baru ke antrean dan mengembalikan ID toast.
success(title: string, desc?: string, options?: Partial<W4cToastOptions>) => string—Pintasan menambahkan notifikasi dengan warna success.
error(title: string, desc?: string, options?: Partial<W4cToastOptions>) => string—Pintasan menambahkan notifikasi dengan warna danger.
warning(title: string, desc?: string, options?: Partial<W4cToastOptions>) => string—Pintasan menambahkan notifikasi dengan warna warning.
info(title: string, desc?: string, options?: Partial<W4cToastOptions>) => string—Pintasan menambahkan notifikasi dengan warna primary.
remove(id: string) => void—Menutup dan menghapus toast tertentu berdasarkan ID.
clear() => void—Menutup dan membersihkan seluruh toast aktif di layar.

Opsi useToast().add()

OpsiTipeDefaultKeterangan
idstring—ID opsional. add dengan ID yang sama memperbarui pesan dan mengulang durasinya.
titlestring—Judul singkat notifikasi, dicetak tebal.
descriptionstring—Deskripsi detail atau penjelasan tambahan pesan notifikasi.
color'primary' | 'neutral' | 'success' | 'warning' | 'danger''primary'Makna semantik pesan: primary (info), success (berhasil), warning (peringatan), danger (gagal/error), neutral (netral).
variant'soft' | 'outline' | 'solid''soft'Gaya visual tampilan toast.
iconstring | false—Nama ikon Iconify. Otomatis disesuaikan dengan warna jika tidak disetel; false untuk menyembunyikan ikon.
durationnumber4000Lama tampil dalam milidetik. Setel ke 0 untuk membuat toast tetap terbuka (persistent) hingga ditutup pengguna.
dismissiblebooleantrueMenampilkan tombol tutup di pojok kanan toast.
closeLabelstring'Tutup'Label tombol tutup untuk pembaca layar (screen reader).
action{ label: string; onClick?: (event: MouseEvent) => void; color?: ButtonColor; variant?: ButtonVariant }—Tombol aksi opsional di bagian bawah konten toast (misal: "Batalkan", "Lihat").
progressbooleantrueMenampilkan garis waktu mundur (progress bar) saat duration > 0.
onClose() => void—Fungsi callback saat toast ditutup.

Props Toaster

PropTipeDefaultKeterangan
expandLabel / collapseLabelstringLihat notifikasi / Ringkas notifikasiLabel tombol untuk membuka atau meringkas tumpukan.
position'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center''top-right'Posisi viewport penampung kumpulan notifikasi di layar.
maxnumber5Jumlah kartu dalam tumpukan aktif. Pesan terbaru atau yang baru diperbarui berada di depan. Sisanya tetap mengantre; max=0 menyembunyikan semuanya.

Props Toast

PropTipeDefaultKeterangan
titlestring—Judul singkat notifikasi, dicetak tebal.
descriptionstring—Deskripsi detail atau penjelasan tambahan pesan notifikasi.
color'primary' | 'neutral' | 'success' | 'warning' | 'danger''primary'Makna semantik pesan: primary (info), success (berhasil), warning (peringatan), danger (gagal/error), neutral (netral).
variant'soft' | 'outline' | 'solid''soft'Gaya visual tampilan toast.
iconstring | false—Nama ikon Iconify. Otomatis disesuaikan dengan warna jika tidak disetel; false untuk menyembunyikan ikon.
durationnumber4000Lama tampil dalam milidetik. Setel ke 0 untuk membuat toast tetap terbuka (persistent) hingga ditutup pengguna.
dismissiblebooleantrueMenampilkan tombol tutup di pojok kanan toast.
closeLabelstring'Tutup'Label tombol tutup untuk pembaca layar (screen reader).
action{ label: string; onClick?: (event: MouseEvent) => void; color?: ButtonColor; variant?: ButtonVariant }—Tombol aksi opsional di bagian bawah konten toast (misal: "Batalkan", "Lihat").
progressbooleantrueMenampilkan garis waktu mundur (progress bar) saat duration > 0.
pausedbooleanfalseMenjeda timer dan progress Toast mandiri. Toaster mengaturnya otomatis untuk kartu di belakang dan saat tumpukan dibuka.

Slots Toast

SlotTipeDefaultKeterangan
default——Isi pesan, menggantikan description.
title——Menggantikan title.
icon——Menggantikan ikon otomatis.
action——Aksi custom, menggantikan prop action.

Events Toast

EventTipeDefaultKeterangan
close() => void—Dipanggil sekali ketika durasi selesai atau tombol tutup ditekan. Untuk Toast mandiri, hapus komponen melalui handler ini.