X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FReaction%2FUI%2FWidget%2FField.pm;h=7e5fcd3599987c85d6525b4a32ffea1b8e2e1327;hb=f9b32c83550e273bec97c9be5b63079addd4846b;hp=6425f151ca6f6f53be79c8503e59b9154e24fec2;hpb=5a1a893ef93c22e0aba72a346749753ace194d66;p=catagits%2FReaction.git diff --git a/lib/Reaction/UI/Widget/Field.pm b/lib/Reaction/UI/Widget/Field.pm index 6425f15..7e5fcd3 100644 --- a/lib/Reaction/UI/Widget/Field.pm +++ b/lib/Reaction/UI/Widget/Field.pm @@ -2,74 +2,142 @@ package Reaction::UI::Widget::Field; use Reaction::UI::WidgetClass; -class Field, which { +use namespace::clean -except => [ qw(meta) ]; - has id => (isa => 'Str', is => 'ro', lazy_build => 1); - has name => (isa => 'Str', is => 'ro', lazy_build => 1); - implements build_id => as { shift->viewport->event_id_for('value'); }; - implements build_name => as { shift->viewport->event_id_for('value'); }; - - widget renders [qw/label field message/ - => { id => func('self', 'id'), - name => func('self', 'name'), - viewport => func('self', 'viewport'), } - ]; - - label renders [ string { $_{viewport}->label }, ]; - message renders [ string { $_{viewport}->message }, ]; - - field renders [ string { $_{viewport}->value }, ]; +before fragment widget { + if ($_{viewport}->can('value_string')) { + arg 'field_value' => $_{viewport}->value_string; + } else { + arg 'field_value' => ''; #$_{viewport}->value; + } +}; +implements fragment label_fragment { + if (my $label = $_{viewport}->label) { + arg label => localized $label; + render 'label'; + } }; +__PACKAGE__->meta->make_immutable; + 1; +__END__; + =head1 NAME -Reaction::UI::Widget::Field +Reaction::UI::Widget::Field - A simple labelled text field =head1 DESCRIPTION -=head1 ATTRIBUTES +This widget renders a simple labelled text field. -=head2 id +=head1 FRAGMENTS -Str, lazy builds. +=head2 widget -=head2 name +Sets the C argument either to the result of the C +method on the viewport, or to an empty string if the viewport does not support +the method. -Str, lazy builds. +=head2 label_fragment -=head1 METHODS +Will set the C