ReferansBileşenler

form

Tipli alanlar ve tek bir gönderim, form gönderimi olarak döndürülür.

Bir cümlenin yetersiz kaldığı durumlar için yapılandırılmış girdi. form, bir ila on arasında tipli alanı toplar ve bunları bir mesajdan ayrı bir istek biçimi olan form_submission olarak geri gönderir; böylece değerler düz metinden ayrıştırılmak yerine tipli olarak iletilir.

Aşağıda listelenen on üç alan türü: altı temel tür (text, number, select, toggle, date, time) ve Flutter 0.41.0 / Web 0.18.0 sürümünden itibaren email, tel, url, multiline, multi_select, date_range ve upload.

İade başlat
Sipariş numarası1042
NedenBirini seçin
Teslim alma tarihiİsteğe bağlıBir gün seçin
Gönder

Ekran görüntüsü değildir; tarayıcınızda SDK'nın kendi boyut ve renkleriyle canlı olarak çizilir.

Flutter SDK ve Web SDK ile, her ikisi de 0.1.0 sürümünden itibaren yerel olarak render edilir; form v2 türleri, autofill, sayı ve tarih sınırları, stepper ve aranabilir seçimler Flutter 0.41.0 ve Web 0.18.0 sürümünden itibaren render edilir.

Ne zaman kullanılmamalı?

Birkaç yanıtı olan tek bir soru için form kullanmayın. Bunun için choice vardır ve iki dokunma yerine tek dokunmayla çalışır.

Randevu almak için time alanı kullanmayın: kullanıcı hangi saatlerin uygun olduğunu bilemez, bu nedenle bunun yerine datetime_slots sunun. Bir şeyi onaylamak için de form kullanmayın: onaylama işlemi sunucu tarafında oluşturulan confirm_card bileşenidir.

Alan türleri

TürÇizdiği bileşenDeğer
text, email, tel, urlEşleşen klavyeye sahip tek satırlı bir alanstring
multilineYazıldıkça genişleyen bir alanstring
numberSayısal bir alan veya stepper ile bir − / + artırıcı; min, max, stepnumber
selectAlanın satırında açılan bir listede options değerlerinden biri; searchable olduğunda bir arama alanı ile birliktestring
multi_selectoptions değerlerinden birkaçıstring[]
toggleBir anahtar (switch)boolean
date, timeAlanın satırında açılan, SDK'nın ay görünümü veya 15 dakikalık aralıklar listesi; tarihler için min_date / max_datestring
date_rangeHer biri bir ayı açan Başlangıç ve Bitiş{name}_start, {name}_end
uploadKameradan veya dosyalardan, accept türünde en fazla max_files adet dosyaupload id değerleri

autofill, alanın ne için olduğunu belirtir (name, email, tel, street_address, postal_code, city, country); böylece cihaz bu alanı otomatik doldurabilir.

Bir formun asla istemeyeceği şeyler

Alanı parola, tek kullanımlık veya SMS kodu, kart numarası, CVV, PIN veya güvenlik kodu, IBAN ya da kimlik veya pasaport numarası olarak adlandırılan, etiketlenen veya tanımlanan bir form, istemde ne yazarsa yazsın asla gösterilmez: sunucu bunun yerine fallback_text değerini koyar. Bir asistanın içinde böyle bir form kimlik avı (phishing) gibi görünür. IBAN yalnızca aksiyonlarınızdan birinin parametresi olarak istenir.

upload, siz Files in forms ayarını açana kadar (Settings → Keys & environments) kapalıdır. Form aracılığıyla gönderilen dosyalar Rendel'e diğer tüm ekler gibi ulaşır ve bunları yükleyen cihaza göre kontrol edilir. Bir dosya, içinde bulunduğu sohbet ile birlikte silinir; bir turda hiçbir zaman gönderilmeyen dosya ise bir gün sonra silinir.

Props

Her blok ayrıca type ve 1 ila 300 karakterden oluşan zorunlu bir fallback_text taşır.

PropTürZorunluKısıtlamalar
form_idstringEvet1 ila 64 karakter. Gönderimle birlikte geri döner.
titlestringHayırEn fazla 120 karakter.
fieldsarrayEvet1 ila 10 öğe.
fields[].kindtext | number | select | toggle | date | time | multi_select | multiline | email | tel | url | date_range | uploadEvetYok
fields[].namestringEvet1 ila 64 karakter. values içindeki anahtar.
fields[].labelstringEvet1 ila 80 karakter.
fields[].requiredbooleanHayırBir toggle için bu, “açık olmalı” anlamına gelir.
fields[].placeholderstringHayırEn fazla 80 karakter. Asla etiket olarak kullanılmaz.
fields[].valuestring | number | boolean | string[]HayırÖnceden doldurma. Kullanıcının hâlihazırda yazmış olduğu bir cevabın üzerine asla yazmaz.
fields[].optionsarrayHayırEn fazla 100 girdi. Bir select bunlara ihtiyaç duyar, ancak şema bunu zorunlu kılmaz; bunlar olmadan gelen bir tanesi etkisiz şekilde oluşturulur.
fields[].options[].labelstringEvetEn fazla 60 karakter.
fields[].options[].valuestringEvetEn fazla 60 karakter.
fields[].autofillname | email | tel | street_address | postal_code | city | countryHayırYok
fields[].minnumberHayırYok
fields[].maxnumberHayırYok
fields[].stepnumberHayır0'dan büyük.
fields[].stepperbooleanHayırYok
fields[].min_datestringHayırYok
fields[].max_datestringHayırYok
fields[].acceptimage | document | anyHayırYok
fields[].max_filesintegerHayır1 ila 4.
fields[].searchablebooleanHayırYok
submit_labelstringEvet1 ila 40 karakter.

Ağ üzerinde

{
  "id": "blk_11",
  "type": "form",
  "fallback_text": "A return request form: order number, reason, number of pairs.",
  "props": {
    "form_id": "return_request",
    "title": "Start a return",
    "fields": [
      {
        "kind": "text",
        "name": "order_id",
        "label": "Order number",
        "required": true,
        "placeholder": "1042"
      },
      {
        "kind": "select",
        "name": "reason",
        "label": "Reason",
        "required": true,
        "options": [
          {
            "label": "Too small",
            "value": "too_small"
          },
          {
            "label": "Arrived damaged",
            "value": "damaged"
          }
        ]
      },
      {
        "kind": "number",
        "name": "pairs",
        "label": "How many pairs",
        "required": true
      },
      {
        "kind": "toggle",
        "name": "keep_box",
        "label": "I still have the original box"
      }
    ],
    "submit_label": "Request pickup"
  }
}

Etkileşim

Gönderim işlemi doğrular, ardından iletir:

{
  "form_submission": {
    "form_id": "return_request",
    "values": { "order_id": "1042", "reason": "damaged", "pairs": 2, "keep_box": true }
  }
}

Değerler string, number, boolean veya dize listesidir. Bir number alanı sayı olarak gönderilir; date YYYY-MM-DD ve time HH:mm biçiminde gönderir; multi_select işaretli değerleri, upload ise upload id değerlerini liste olarak gönderir; date_range ise iki dize gönderir: {name}_start ve {name}_end.

Kısmen doldurulmuş değerler bloğun kendisinde saklanır; bu sayede önceki bir sayfaya geri dönüp tekrar ileri gitmek formu sıfırlamaz.

Durumlar

DurumSDK'nın çizdiği bileşen
GeçersizHatalar, kullanıcının çoktan kaydırıp geçtiği formun en üstünde bir özet olarak değil, ait oldukları alanın altında görünür. Alanın kenarlığı 1,5 pt kalınlığında tam belirginliğe geçer. Gönder butonunun hemen üzerinde bir sayaç (“Yukarıdaki 3 alanın düzeltilmesi gerekiyor.”) yer alır; çünkü uzun bir formda alan bazlı mesajlar butonun bulunduğu ekran alanının yukarısında kalır ve aksi takdirde Gönder butonuna basıldığında hiçbir şey olmamış gibi görünür.
Seçeneği olmayan selectDenetim render edilir ve kendisini seçilmemiş olarak bildirir ancak hareketsizdir: boş bir listeye açılan bir alt sayfa (sheet) açmaz.
BoşHiçbir girdisi olmayan bir fields dizisi veya name taşımayan hiçbir alanın bulunmaması durumunda, plakanın içinde fallback_text render edilir.
GönderiliyorButonda “Gönderiliyor…” yazar ve her alan devre dışı bırakılır.
GönderildiFormun yerini gönderilenlerin salt okunur bir listesi ve bir “Gönderildi” işareti alır. Bu değişim aniden atlamak yerine boyutlandırılarak ve çapraz geçişle (crossfade) gerçekleşir.
Tur hâlâ açıkAsistan yanıtın ortasındaysa gönderim reddedilir ve form bunu bildirir; hiçbir zaman iletilmemiş bir istek için “Gönderildi” raporlanmaz.
YükleniyorBaşlık çubuğu, 44 pt boyutunda iki alan kutusu ve bir buton şekli içeren bir plaka.

Erişilebilirlik

Metin ve sayı alanları, görünür etiketlerini alanın kendi erişilebilir düğümüyle birleştirir; böylece yer tutucu kaybolduğunda bile adlandırılmış kalırlar. Select, date, time ve toggle kendilerine ait eksiksiz bir etiket taşır ve iki kez okunmasını önlemek için görünür etiket ekran okuyucudan gizlenir. Hatalar live region olarak iletilir.

fallback_text, formu göremeyen bir kullanıcının doldurmaya değer olup olmadığını anlayabilmesi için formun ne istediğini açıklamalıdır.