package HTML::FormFu::Role::Element::Input;
use Moose::Role;
use MooseX::SetOnce;
with 'HTML::FormFu::Role::Element::Field',
'HTML::FormFu::Role::Element::FieldMethods' => { -excludes => 'nested_name' },
'HTML::FormFu::Role::Element::Coercible';
use HTML::FormFu::Attribute qw(
mk_attr_accessors
mk_output_accessors
mk_inherited_accessors
mk_inherited_merging_accessors
);
use HTML::FormFu::Util qw( process_attrs );
has field_type => (
is => 'rw',
#traits => ['SetOnce'],
);
__PACKAGE__->mk_attr_accessors(qw( checked size maxlength alt ));
after BUILD => sub {
my $self = shift;
$self->filename('input');
$self->field_filename('input_tag');
return;
};
around render_data_non_recursive => sub {
my ( $orig, $self, $args ) = @_;
my $render = $self->$orig( $args );
$render->{field_type} = $self->field_type;
#$self->_field_render_data_non_recursive;
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.
=cut