field-select
La envoltura de field alrededor de un select nativo. A partir de diez opciones, el select activa el combo con filtro de select.js; lo que el formulario envía sigue siendo el select nativo.
Tres opciones: un select nativo
Pon esto dentro de <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="sel_few" >Rol</label >
<select rst-input id ="sel_few" name ="sel_few" >
<option value ="admin" selected >Administrador</option >
<option value ="editor" >Editor</option >
<option value ="member" >Miembro</option >
</select >
</div >
Pon esto dentro de <section rst-box><form rst-form>.
{{ template "field-select" dict
"ID" "sel_few"
"Name" "sel_few"
"Label" "Rol"
"Options" (list
(dict "Label" "Administrador" "Selected" true "Value" "admin" )
(dict "Label" "Editor" "Value" "editor" )
(dict "Label" "Miembro" "Value" "member" ))}}
Doce opciones: el combo con filtro
Pon esto dentro de <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="sel_many" >Ciudad</label >
<select rst-input id ="sel_many" name ="sel_many" data-rst-select data-rst-select-filter ="Escribe para filtrar" data-rst-select-results ="{n} resultados" data-rst-select-result-one ="1 resultado" data-rst-select-no-matches ="No hay coincidencias" aria-describedby ="sel_many-help" >
<option value ="dublin" selected >Dublín</option >
<option value ="lisbon" >Lisboa</option >
<option value ="madrid" >Madrid</option >
<option value ="berlin" >Berlín</option >
<option value ="rome" >Roma</option >
<option value ="athens" >Atenas</option >
<option value ="helsinki" >Helsinki</option >
<option value ="reykjavík" >Reikiavik</option >
<option value ="warsaw" >Varsovia</option >
<option value ="zagreb" >Zagreb</option >
<option value ="tallinn" >Tallin</option >
<option value ="valletta" >La Valeta</option >
</select >
<p rst-field-help id ="sel_many-help" >Empieza a escribir para filtrar.</p >
</div >
Pon esto dentro de <section rst-box><form rst-form>.
{{ template "field-select" dict
"ID" "sel_many"
"Name" "sel_many"
"Label" "Ciudad"
"Options" (list
(dict "Label" "Dublín" "Selected" true "Value" "dublin" )
(dict "Label" "Lisboa" "Value" "lisbon" )
(dict "Label" "Madrid" "Value" "madrid" )
(dict "Label" "Berlín" "Value" "berlin" )
(dict "Label" "Roma" "Value" "rome" )
(dict "Label" "Atenas" "Value" "athens" )
(dict "Label" "Helsinki" "Value" "helsinki" )
(dict "Label" "Reikiavik" "Value" "reykjavík" )
(dict "Label" "Varsovia" "Value" "warsaw" )
(dict "Label" "Zagreb" "Value" "zagreb" )
(dict "Label" "Tallin" "Value" "tallinn" )
(dict "Label" "La Valeta" "Value" "valletta" ))
"Help" "Empieza a escribir para filtrar." }}
A partir de diez opciones, el parcial activa select.js. Por debajo de diez, no: buscar entre un puñado de elementos es mobiliario, no ayuda.
Doce opciones, Plain: la mejora rechazada
Pon esto dentro de <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="sel_plain" >Ciudad</label >
<select rst-input id ="sel_plain" name ="sel_plain" >
<option value ="dublin" selected >Dublín</option >
<option value ="lisbon" >Lisboa</option >
<option value ="madrid" >Madrid</option >
<option value ="berlin" >Berlín</option >
<option value ="rome" >Roma</option >
<option value ="athens" >Atenas</option >
<option value ="helsinki" >Helsinki</option >
<option value ="reykjavík" >Reikiavik</option >
<option value ="warsaw" >Varsovia</option >
<option value ="zagreb" >Zagreb</option >
<option value ="tallinn" >Tallin</option >
<option value ="valletta" >La Valeta</option >
</select >
</div >
Pon esto dentro de <section rst-box><form rst-form>.
{{ template "field-select" dict
"ID" "sel_plain"
"Name" "sel_plain"
"Label" "Ciudad"
"Options" (list
(dict "Label" "Dublín" "Selected" true "Value" "dublin" )
(dict "Label" "Lisboa" "Value" "lisbon" )
(dict "Label" "Madrid" "Value" "madrid" )
(dict "Label" "Berlín" "Value" "berlin" )
(dict "Label" "Roma" "Value" "rome" )
(dict "Label" "Atenas" "Value" "athens" )
(dict "Label" "Helsinki" "Value" "helsinki" )
(dict "Label" "Reikiavik" "Value" "reykjavík" )
(dict "Label" "Varsovia" "Value" "warsaw" )
(dict "Label" "Zagreb" "Value" "zagreb" )
(dict "Label" "Tallin" "Value" "tallinn" )
(dict "Label" "La Valeta" "Value" "valletta" ))
"Plain" true }}
Obligatorio, con un error
Pon esto dentro de <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="sel_error" >Rol</label >
<select rst-input id ="sel_error" name ="sel_error" required aria-invalid ="true" aria-describedby ="sel_error-error" >
<option value ="admin" selected >Administrador</option >
<option value ="editor" >Editor</option >
<option value ="member" >Miembro</option >
</select >
<p rst-field-error id ="sel_error-error" role ="alert" >Elige un rol para esta persona.</p >
</div >
Pon esto dentro de <section rst-box><form rst-form>.
{{ template "field-select" dict
"ID" "sel_error"
"Name" "sel_error"
"Label" "Rol"
"Options" (list
(dict "Label" "Administrador" "Selected" true "Value" "admin" )
(dict "Label" "Editor" "Value" "editor" )
(dict "Label" "Miembro" "Value" "member" ))
"Required" true
"Error" "Elige un rol para esta persona." }}
Escrito a mano, con optgroups
Pon esto dentro de <section rst-box><form rst-form>.
<div rst-field >
<label rst-field-label for ="sel_grouped" >Región</label >
<select rst-input id ="sel_grouped" name ="sel_grouped" data-rst-select data-rst-select-filter ="Escribe para filtrar" data-rst-select-results ="{n} resultados" data-rst-select-result-one ="1 resultado" data-rst-select-no-matches ="No hay coincidencias" >
<optgroup label ="Europa" >
<option value ="dublin" selected >Dublín</option >
<option value ="lisbon" >Lisboa</option >
<option value ="warsaw" >Varsovia</option >
</optgroup >
<optgroup label ="América" >
<option value ="montreal" >Montreal</option >
<option value ="lima" >Lima</option >
<option value ="austin" >Austin</option >
</optgroup >
<optgroup label ="Asia" >
<option value ="osaka" >Osaka</option >
<option value ="hanoi" >Hanói</option >
<option value ="dhaka" >Daca</option >
</optgroup >
<optgroup label ="África" >
<option value ="accra" >Acra</option >
<option value ="nairobi" >Nairobi</option >
<option value ="tunis" >Túnez</option >
</optgroup >
</select >
</div >
Aquí Options es una lista plana, así que las opciones agrupadas son marcado que escribe la aplicación. select.js dibuja los grupos en vez de descartarlos; un select escrito a mano también puede rechazar la mejora del todo con data-rst-select="false".