1 package Reaction::UI::Widget::Field::Mutable;
3 use Reaction::UI::WidgetClass;
5 class Mutable is 'Reaction::UI::Widget::Field', which {
7 before fragment widget {
8 arg 'field_id' => event_id 'value_string';
9 my $field_name = event_id 'value_string' unless defined $_{field_name};
10 arg 'field_name' => $field_name;
11 arg 'field_type' => 'text';
12 my $field_class = $field_name;
13 $field_class =~ s/\d\-//;
14 arg 'field_class' => $field_class;
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
20 arg 'exists_event' => event_id 'exists';
21 arg 'exists_value' => 1;
24 implements fragment message_fragment {
25 if (my $message = $_{viewport}->message) {
26 arg message => $message;
31 implements fragment field_is_required {
32 my $model = $_{viewport}->model;
33 my $attr = $_{viewport}->attribute;
34 if ( $model->attribute_is_required($attr) ) {
35 render 'field_is_required_yes';
37 render 'field_is_required_no';