package HTML::FormFu::Element::_Input;
use strict;
use base 'HTML::FormFu::Element::_Field';
use Class::C3;
use HTML::FormFu::ObjectUtil qw( _coerce );
use HTML::FormFu::Util qw( process_attrs );
__PACKAGE__->mk_item_accessors(qw( field_type ));
__PACKAGE__->mk_attr_accessors(qw( checked size maxlength alt ));
sub new {
my $self = shift->next::method(@_);
$self->filename('input');
$self->field_filename('input_tag');
return $self;
}
sub render_data_non_recursive {
my ( $self, $args ) = @_;
my $render = $self->next::method( {
field_type => $self->field_type,
$args ? %$args : (),
} );
return $render;
}
sub string {
my ( $self, $args ) = @_;
$args ||= {};
my $render
= exists $args->{render_data}
? $args->{render_data}
: $self->render_data;
# field wrapper template - start
my $html = $self->_string_field_start($render);
# input_tag template
$html .= $self->_string_field($render);
# field wrapper template - end
$html .= $self->_string_field_end($render);
return $html;
}
sub _string_field {
my ( $self, $render ) = @_;
my $html .= "{nested_name} ) {
$html .= sprintf qq{ name="%s"}, $render->{nested_name};
}
$html .= sprintf qq{ type="%s"}, $render->{field_type};
if ( defined $render->{value} ) {
$html .= sprintf qq{ value="%s"}, $render->{value};
}
$html .= sprintf "%s />", process_attrs( $render->{attributes} );
return $html;
}
sub as {
my ( $self, $type, %attrs ) = @_;
return $self->_coerce(
type => $type,
attributes => \%attrs,
errors => $self->_errors,
package => __PACKAGE__,
);
}
1;
__END__
=head1 NAME
HTML::FormFu::Element::_Input - input field base-class
=head1 DESCRIPTION
Base-class for L,
L,
L,
L,
L,
L,
L.
=head1 METHODS
=head1 SEE ALSO
Is a sub-class of, and inherits methods from
L, L
L
=head1 AUTHOR
Carl Franks, C
=head1 LICENSE
This library is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.