gohud

Formulir dan daftar

← Widget

GoField — baris yang bisa salah

GoField — Label, kontrol, dan petunjuk, dengan galat di bawah kolom yang salah.
GoField · set_error()

Satu baris di atas formulir berisi lima kolom yang berbunyi "periksa masukan Anda" tidak memberi tahu kolom yang mana. Hal satu itulah yang membuat orang meninggalkan pendaftaran.

var name_field := GoField.make("Nama karakter", GoStyle.line_edit("2-12"), "Tidak bisa diubah nanti")
name_field.set_error("Nama itu sudah dipakai")   # servernya menolak
name_field.clear_error()

Petunjuknya bersembunyi selagi pesan kesalahannya tampil, jadi barisnya tidak bertambah satu baris dan mendorong segala sesuatu di bawahnya, dan teks kesalahannya digabungkan ke dalam nama aksesibilitas kontrolnya — garis tepi merah saja tidak mengatakan apa-apa kepada orang yang tidak bisa melihat merah.

GoStyle.field() adalah versi statisnya: label, kontrol, petunjuk, tanpa keadaan kesalahan. Pakai pabriknya bila tak ada yang bisa salah, dan node-nya untuk apa pun yang bisa ditolak server.

GoInputGroup — masukan yang dilas ke tombolnya

GoInputGroup — Input dan tombolnya dilas menjadi satu bentuk.
GoInputGroup
GoInputGroup.make(GoStyle.line_edit("Pesan"), {"suffix": GoStyle.icon_button(&"send", send)})
GoInputGroup.make(GoStyle.line_edit("Nama"), {"prefix_icon": &"search"})

Yang ia pecahkan adalah sudut. Dua bentuk membulat yang bertemu di tengah tampak terjepit, dan jarak bawaannya membuat keduanya terbaca sebagai dua objek. Sudut luarnya tetap bulat, yang bersentuhan menjadi siku — pada setiap keadaan tombol, kalau tidak kelompoknya terbelah begitu ditekan. Skin ber-chamfer sama sekali tidak punya properti sudut, jadi di sana ia membiarkannya apa adanya dan muka-muka sikunya bertemu dengan rapi.

GoCombobox — pemilih yang bisa mencari

GoCombobox — Pemilih yang mencari di dalam nama, bukan hanya dari awalnya.
GoCombobox

Di bawah sepuluh entri GoStyle.select() lebih baik: satu ketukan lebih sedikit dan seluruh daftarnya terlihat. Lewat tiga puluh, memindainya jadi pekerjaan.

var picker := GoCombobox.make(server_names, 0, "Pilih server")
picker.picked.connect(func(i: int) -> void: connect_to(servers[i]))
Pencariannya mencocokkan di dalam nama, bukan hanya awalannya. Pencocokan awalan nyaris tidak menemukan apa pun pada daftar berbahasa Korea atau Jepang, yang kata pembeda dua entrinya jarang menjadi kata pertama.

GoCodeInput — kode kupon dan hadiah

GoCodeInput — Kode kupon dan hadiah sebagai sel; tempel dan input IME tetap berfungsi.
GoCodeInput

Sebuah kode jauh lebih sering ditempel dari sebuah pesan daripada diketik. Dua belas kolom sungguhan akan mematahkan penempelan di sel pertama dan kehilangan karakter ke IME, jadi satu kolom tersembunyi yang menerima teksnya dan sel-selnya digambar. ABCD-EFGH-IJKL kehilangan tanda hubungnya di jalan masuk.

var coupon := GoCodeInput.make(12, 4)
coupon.completed.connect(func(code: String) -> void: server.redeem(code))
coupon.set_error("Sudah dipakai")

GoTable — kepala kolom yang bisa diurutkan, baris yang bisa dipilih

GoTable — Header yang bisa diurutkan dan baris yang bisa dipilih; angka diurutkan sebagai angka.
GoTable
var board := GoTable.make(
    [{"text": "Peringkat", "width": 56}, {"text": "Nama"}, {"text": "Skor", "numeric": true}], rows)
board.row_selected.connect(func(i: int) -> void: open_profile(rows[i]))
numeric: true, kalau tidak peringkatnya terbalik. Dibandingkan sebagai teks, "9124" mengalahkan "91240" — dan skor, emas, serta kerusakan semuanya punya jumlah digit yang campur aduk.

row_selected memberi indeks pada array asli Anda, bukan posisi setelah diurutkan. Arah pengurutannya ditunjukkan dengan sebuah glif, bukan hanya warna, dan seluruh barisnya bisa ditekan supaya tak seorang pun harus mengenai satu sel. GoStyle.table() tetap menjadi grid yang hanya bisa dibaca.

GoPagination — halaman, atau baris Selengkapnya

GoPagination — Halaman bernomor yang menjaga halaman aktif di tengah, atau satu baris Muat lagi.
GoPagination
var pager := GoPagination.make(1, 12, func(page: int) -> void: load_mail(page))
var more := GoPagination.more(load_next)   # varian yang ramah ponsel

Angka itu UI untuk tetikus; pada ponsel baris Selengkapnya lebih terbaca. Halaman yang sedang dibuka tetap terpusat di jendelanya, jadi menekan berikutnya tidak mengacak ulang setiap angka. Total 0 berarti "tidak diketahui" dan hanya panahnya yang digambar — ia tidak mengarang jumlah halaman yang tidak diberikan kepadanya.