aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Reaction/UI/Widget/Field/Mutable/ChooseOne.pm
blob: 21ce041a90d3198c0390003e7fdb719538834b6f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package Reaction::UI::Widget::Field::Mutable::ChooseOne;

use Reaction::UI::WidgetClass;

use namespace::clean -except => [ qw(meta) ];
extends 'Reaction::UI::Widget::Field::Mutable';



implements fragment option_is_required {
  if ($_{viewport}->value_is_required) {
    render 'option_is_required_yes';
  } else {
    render 'option_is_required_no';
  }
};

implements fragment option_list {
  render option => over $_{viewport}->value_choices;
};

implements fragment option {
  arg option_name => $_->{name};
  arg option_value => $_->{value};
};

implements fragment option_is_selected {
  if ($_{viewport}->is_current_value($_->{value})) {
    render 'option_is_selected_yes';
  } else {
    render 'option_is_selected_no';
  }
};

__PACKAGE__->meta->make_immutable;


1;

__END__;

=head1 NAME

Reaction::UI::Widget::Field::Mutable::ChooseOne - Choose one from a list of available values

=head1 DESCRIPTION

See L<Reaction::UI::Widget::Field::Mutable>. This widget provides the user with a 
field where he can select a single value from a list of many.

=head1 FRAGMENTS

=head2 field

Renders a series fragment C<option> for each C<value_choices> in the viewport

Additional varibles set: C<is_required> - Boolean, self-explanatory

=head2 option

C<content> is a dummy variable, but th additional variables C<v_value>, C<v_name>
and C<is_selected> are set

=head2 option_is_required

Renders either C<option_is_required_yes> or C<option_is_required_no> depending on
the viewport's C<value_is_required> attribute.

=head2 option_list

Renders the C<option> fragment over the viewport's C<value_choices>. This populates
the list of available values.

=head2 option_is_selected

Renders either C<option_is_selected_yes> or C<option_is_selected_no> depending on
if the viewport's C<is_current_value> method returns true on the current topic
arguments C<value> key.

=head1 LAYOUT SETS

=head2 base

  share/skin/base/layout/field/mutable/choose_one.tt

This layout set renders a C<select> element with the available values as C<option>s.

=head1 AUTHORS

See L<Reaction::Class> for authors.

=head1 LICENSE

See L<Reaction::Class> for the license.

=cut