Commit | Line | Data |
2f670e13 |
1 | package Reaction::UI::Widget::Field::Mutable; |
2 | |
3 | use Reaction::UI::WidgetClass; |
4 | |
bae75bee |
5 | use namespace::clean -except => [ qw(meta) ]; |
6 | extends 'Reaction::UI::Widget::Field'; |
7 | |
8 | |
9 | |
10 | before fragment widget { |
11 | arg 'field_id' => event_id 'value_string'; |
12 | arg 'field_name' => event_id 'value_string' unless defined $_{field_name}; |
13 | arg 'field_type' => 'text'; |
14 | arg 'field_class' => "action-field " . $_{viewport}->name; |
15 | |
16 | # these two are to fire force_events in viewports |
17 | # where you can end up without an event for e.g. |
18 | # HTML checkbox fields |
19 | |
20 | arg 'exists_event' => event_id 'exists'; |
21 | arg 'exists_value' => 1; |
22 | }; |
23 | |
24 | implements fragment message_fragment { |
25 | if (my $message = $_{viewport}->message) { |
d219104c |
26 | arg message => localized $message; |
bae75bee |
27 | render 'message'; |
28 | } |
29 | }; |
30 | |
31 | implements fragment field_is_required { |
39453d9d |
32 | my $vp = $_{viewport}; |
33 | if ( $vp->value_is_required && !$vp->value_string ) { |
bae75bee |
34 | render 'field_is_required_yes'; |
35 | } else { |
36 | render 'field_is_required_no'; |
37 | } |
38 | }; |
39 | |
40 | __PACKAGE__->meta->make_immutable; |
41 | |
2f670e13 |
42 | |
43 | 1; |
44 | |
45 | __END__; |