#[non_exhaustive]pub enum FieldKind {
Text,
Secret,
Number,
Email,
Url,
Tel,
Textarea,
Select,
Checkbox,
Hidden,
}Expand description
What kind of value a form field takes.
The union of the two vocabularies that diverged, which is what triggered
this crate. They have since converged on their own: both apps now have a
renderFormField emitting the same anatomy, and what is left differing is
the kind set, the error shape, and whether the return is a string or a node.
Validation is deliberately absent. Neither app has a shared story (goingson
validates after collecting the form data, with per-field transform hooks;
Balanced Breakfast has required and nothing else), and a schema that
describes fields but not constraints acquires a constraint layer per app,
which is exactly how the current divergence started. Naming it absent is a
decision; leaving it unmentioned would not be.
#[non_exhaustive] for the reason Fill is: renderers match on this and
the set keeps growing, so growth must not be a lockstep event. Email, Url
and Tel arriving in 0.5.0 is the second growth in two releases.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Text
A single line of text.
Secret
A single line of text that must never be echoed, logged or round-tripped through anything that might persist it.
Number
A number.
An email address.
Distinct from Text because the distinction is not
decoration: a webview renderer emits type="email", which on a touch
device changes the keyboard that appears and turns on the platform’s own
validation. goingson ships to iOS, so collapsing this into text costs a
keyboard with no @ on it.
Added 0.5.0, from goingson’s contact form.
Url
A URL. Same reasoning as Email.
Added 0.5.0, from goingson’s contact-social and contact-feed forms.
Tel
A telephone number. Same reasoning as Email, and the
clearest case of it: the keyboard is a numeric pad rather than letters.
Added 0.5.0, from goingson’s contact-phone form.
Textarea
Several lines of text.
Select
One of a fixed set.
Checkbox
On or off.
Hidden
Carried through the form and never shown.
Implementations§
Source§impl FieldKind
impl FieldKind
Sourcepub const fn confidential(self) -> bool
pub const fn confidential(self) -> bool
Whether the value must be kept out of logs and diagnostics.
Sourcepub const fn labels_itself(self) -> bool
pub const fn labels_itself(self) -> bool
Where the field’s own label sits.
A checkbox labels itself on the right of the box; everything else takes a label above. Both webview apps already do this and both special-case it inline, which is the tell that it belongs in the description.