use Reaction::UI::WidgetClass;
-class ChooseMany is 'Reaction::UI::Widget::Field::Mutable', which {
-
- implements fragment action_buttons {
- foreach my $event (
- qw(add_all_values do_add_values do_remove_values remove_all_values)
- ) {
- arg "event_id_${event}" => event_id $event;
- }
- };
-
- implements fragment current_values {
- render hidden_value => over $_{viewport}->current_value_choices;
- };
-
- implements fragment selected_values {
- arg event_id_remove_values => event_id 'remove_values';
- render value_option => over $_{viewport}->current_value_choices;
- };
-
- implements fragment available_values {
- arg event_id_add_values => event_id 'add_values';
- render value_option => over $_{viewport}->available_value_choices;
- };
-
- implements fragment value_option {
- arg option_name => $_->{name};
- arg option_value => $_->{value};
- };
-
- implements fragment hidden_value {
- arg hidden_value => $_->{value};
- };
+use namespace::clean -except => [ qw(meta) ];
+extends 'Reaction::UI::Widget::Field::Mutable';
+
+
+implements fragment action_buttons {
+ foreach my $event (
+ qw(add_all_values do_add_values do_remove_values remove_all_values)
+ ) {
+ arg "event_id_${event}" => event_id $event;
+ }
+};
+
+implements fragment current_values {
+ my $current_choices = $_{viewport}->current_value_choices;
+ if( @$current_choices ){
+ arg field_name => event_id 'value';
+ render hidden_value => over $current_choices;
+ } else {
+ arg field_name => event_id 'no_current_value';
+ arg '_' => {value => 1};
+ render 'hidden_value';
+ }
+};
+
+implements fragment selected_values {
+ arg event_id_remove_values => event_id 'remove_values';
+ render value_option => over $_{viewport}->current_value_choices;
+};
+
+implements fragment available_values {
+ arg event_id_add_values => event_id 'add_values';
+ render value_option => over $_{viewport}->available_value_choices;
+};
+
+implements fragment value_option {
+ arg option_name => $_->{name};
+ arg option_value => $_->{value};
};
+implements fragment hidden_value {
+ arg hidden_value => $_->{value};
+};
+
+__PACKAGE__->meta->make_immutable;
+
+
1;
__END__;