package HTML::FormHandler::Widget::Field::Select;
# ABSTRACT: select field rendering widget
$HTML::FormHandler::Widget::Field::Select::VERSION = '0.40068';
use Moose::Role;
use namespace::autoclean;
use HTML::FormHandler::Render::Util ('process_attrs');
sub render {
my ( $self, $result ) = @_;
$result ||= $self->result;
die "No result for form field '" . $self->full_name . "'. Field may be inactive." unless $result;
my $output = $self->render_element( $result );
return $self->wrap_field( $result, $output );
}
sub render_element {
my ( $self, $result ) = @_;
$result ||= $self->result;
# create select element
my $output = $self->render_select_start( $result );
# create empty select
if( defined $self->empty_select ) {
$output .= $self->render_empty_select;
}
# loop through options
foreach my $option ( @{ $self->{options} } ) {
if ( my $label = $option->{group} ) {
$label = $self->_localize( $label ) if $self->localize_labels;
$output .= qq{\n};
}
else {
$output .= $self->render_option( $option, $result );
}
}
$self->reset_options_index;
$output .= '';
return $output;
}
sub render_select_start {
my ( $self, $result ) = @_;
$result ||= $self->result;
my $id = $self->id;
my $output = '