File Coverage

lib/HTML/FormWidgets/PopupMenu.pm
Criterion Covered Total %
statement 25 26 96.1
branch 4 8 50.0
condition 3 6 50.0
subroutine 5 5 100.0
pod 2 2 100.0
total 39 47 82.9


line stmt bran cond sub pod time code
1             package HTML::FormWidgets::PopupMenu;
2              
3 1     1   682 use strict;
  1         2  
  1         24  
4 1     1   5 use warnings;
  1         1  
  1         26  
5 1     1   4 use parent 'HTML::FormWidgets';
  1         2  
  1         5  
6              
7             __PACKAGE__->mk_accessors( qw( classes labels values ) );
8              
9             sub init {
10 1     1 1 3    my ($self, $args) = @_;
11              
12 1         3    $self->classes( undef );
13 1         7    $self->labels ( undef );
14 1         7    $self->values ( [] );
15 1         6    return;
16             }
17              
18             sub render_field {
19 1     1 1 2    my ($self, $args) = @_;
20              
21 1 50       6    $self->class =~ m{ chzn-select }msx
22                   and $self->add_optional_js( 'chosen.js' );
23              
24 1   50     9    $args->{class} .= q( ).($self->class || 'ifield');
25 1 50       11    $self->classes and $args->{classes } = $self->classes;
26 1 50       10    $self->onchange and $args->{onchange} = $self->onchange;
27              
28 1 50       7    if ($self->labels) {
29 1         7       my $labels = $args->{labels} = $self->labels;
30              
31                   $args->{values} = [ sort {
32                      ($labels->{ $a } // q())
33 1   50     4             cmp ($labels->{ $b } // q()) } @{ $self->values } ];
  1   50     16  
  1         4  
34                }
35 0         0    else { $args->{values} = $self->values }
36              
37 1         3    return $self->hacc->popup_menu( $args );
38             }
39              
40             1;
41              
42             # Local Variables:
43             # mode: perl
44             # tab-width: 3
45             # End:
46