make widget stuff manglable
[catagits/Reaction.git] / lib / Reaction / UI / Widget / Field / Mutable / ChooseOne.pm
1 package Reaction::UI::Widget::Field::Mutable::ChooseOne;
2
3 use Reaction::UI::WidgetClass;
4
5 class ChooseOne is 'Reaction::UI::Widget::Field::Mutable', which {
6
7   implements fragment option_is_required {
8     if ($_{viewport}->value_is_required) {
9       render 'option_is_required_yes';
10     } else {
11       render 'option_is_required_no';
12     }
13   };
14
15   implements fragment option_list {
16     render option => over $_{viewport}->value_choices;
17   };
18
19   implements fragment option {
20     arg option_name => $_->{name};
21     arg option_value => $_->{value};
22   };
23
24   implements fragment option_is_selected {
25     if ($_{viewport}->is_current_value($_->{value})) {
26       render 'option_is_selected_yes';
27     } else {
28       render 'option_is_selected_no';
29     }
30   };
31
32 };
33
34 1;
35
36 __END__;
37
38 =head1 NAME
39
40 Reaction::UI::Widget::Field::ChooseOne
41
42 =head1 DESCRIPTION
43
44 See L<Reaction::UI::Widget::Field>
45
46 =head1 FRAGMENTS
47
48 =head2 field
49
50 Renders a series fragment C<option> for each C<value_choices> in the viewport
51
52 Additional varibles set: C<is_required> - Boolean, self-explanatory
53
54 =head2 option
55
56 C<content> is a dummy variable, but th additional variables C<v_value>, C<v_name>
57 and C<is_selected> are set
58
59 =head1 AUTHORS
60
61 See L<Reaction::Class> for authors.
62
63 =head1 LICENSE
64
65 See L<Reaction::Class> for the license.
66
67 =cut