gohud

Formulir dan daftar

← Widget

GoField — baris yang bisa salah

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.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

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

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

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

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.