@**
* Generate an HTML select.
*
* Example:
* {{{
* @select(
* field = myForm("mySelect"),
* options = Seq(
* "Foo" -> "foo text",
* "Bar" -> "bar text",
* "Baz" -> "baz text"
* ),
* '_default -> "Choose One",
* '_disabled -> Seq("FooKey", "BazKey")
* 'cust_att_name -> "cust_att_value"
* )
* }}}
*
* @param field The form field.
* @param options Sequence of options as pairs of value and HTML.
* @param args Set of extra attributes.
* @param handler The field constructor.
*@
@(field: play.api.data.Field, options: Seq[(String,String)], args: (Symbol,Any)*)(implicit handler: FieldConstructor, messages: play.api.i18n.Messages)
@input(field, args:_*) { (id, name, value, htmlArgs) =>
@defining( if( htmlArgs.contains('multiple) ) "%s[]".format(name) else name ) { selectName =>
@defining( field.indexes.nonEmpty && htmlArgs.contains('multiple) match {
case true => field.indexes.map( i => field("[%s]".format(i)).value ).flatten.toSet
case _ => field.value.toSet
}){ selectedValues =>
}}
}