XXX: check() id-related improvements + tests
[perl/html-form-simple.git] / lib / HTML / Form / Simple.pm
index 59f0e4c705ef890325397f55181e5ced41f1816e..f96149f0b5f555895dc309b58108e538160bb042 100644 (file)
@@ -213,6 +213,8 @@ sub check {
                }
        }
        exists $rows->[$_]->{value} or $rows->[$_]->{value} = $_ + 1 for 0 .. $#$rows;
+       $rows->[0]->{id} = $attr->{id} || $rows->[0]->{name} || $attr->{name} || $name #XXX: //
+               if ref $label ne 'ARRAY' and defined $rows->[0] and not defined $rows->[0]->{id};
 
        $self->select($name, $rows, {%$attr, type => 'checkbox'});
 }
@@ -248,6 +250,47 @@ HTML::Form::Simple - Generate HTML form elements
        );
        say $input->stop; # </form>
 
+=head1 DESCRIPTION
+
+=over
+
+=item C<hidden>
+
+       $input->hidden(name => 'value');
+
+=item C<text>
+
+       $input->text(name => 'default');
+
+=item C<select>
+
+       $input->select(name => ['option'], 'default');
+
+=item C<radio>
+
+       $input->radio(name => ['option'], ['option label'], 'default');
+
+eq
+
+       $input->radio(
+               'name',
+               [ {label => 'option label', value => 'option'} ],
+               {value => 'default'}
+       );
+
+=item C<check>
+
+       $input->check(name => ['label', 'second option'], [0, 1]);
+
+eq
+
+       $input->check(name => [
+               {label => 'label',         value => 1, checked => 0},
+               {label => 'second option', value => 2, checked => 1},
+       ]);
+
+=back
+
 =head1 TODO
 
 =over
@@ -270,6 +313,10 @@ Actual descriptions instead of just a synopsis.
 Allow custom value quotation function.
 Makes L<XML::Quote|XML::Quote> dependency optional.
 
+=item single checkbox id
+
+Do not add value to single check() by default.
+
 =back
 
 =head1 AUTHOR