sub radio {
my $self = shift;
- my ($name, $label, $rows, $attr) = $self->_attr(3, @_);
+ my ($name, $rows, $label, $attr) = $self->_attr(3, @_);
if (not defined $rows) {
if (defined $label) {
}
}
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'});
}
msg => 'Textarea default', {rows => 4, style => 'background:red'}
) ],
[ Gender => join ' or ', $input->radio(
- sex => ['m', 'f']
+ sex => [qw(m f)], [qw(Male Female)]
) ],
[ Colour => scalar $input->select(
favcolour => [qw(Blue Green Red)], 'Green'
);
say $input->stop; # </form>
-=head1 TODO
+=head1 DESCRIPTION
=over
-=item C<radio>|C<check> parameter order
+=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
-Row options (hash ref details) are inconsistent:
-on labels for C<check>, on values for C<radio>.
-Make behaviour more logical.
+ $input->check(name => [
+ {label => 'label', value => 1, checked => 0},
+ {label => 'second option', value => 2, checked => 1},
+ ]);
+
+=back
+
+=head1 TODO
+
+=over
=item C<default()> method
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