Commit | Line | Data |
ddccc6a2 |
1 | package Reaction::UI::ViewPort::Field::Array; |
7adfd53f |
2 | |
3 | use Reaction::Class; |
4 | use Scalar::Util 'blessed'; |
ddccc6a2 |
5 | use aliased 'Reaction::UI::ViewPort::Field'; |
7adfd53f |
6 | |
81393881 |
7 | use namespace::clean -except => [ qw(meta) ]; |
8 | extends Field; |
7adfd53f |
9 | |
7adfd53f |
10 | |
81393881 |
11 | has '+value' => (isa => 'ArrayRef'); |
7adfd53f |
12 | |
81393881 |
13 | has value_names => (isa => 'ArrayRef', is => 'ro', lazy_build => 1); |
14 | has value_map_method => ( |
15 | isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, |
16 | ); |
17 | sub _build_value_names { |
18 | my $self = shift; |
19 | my $meth = $self->value_map_method; |
20 | my @names = map { blessed($_) ? $_->$meth : $_ } @{ $self->value }; |
21 | return [ sort @names ]; |
7adfd53f |
22 | }; |
81393881 |
23 | sub _empty_value { [] }; |
24 | __PACKAGE__->meta->make_immutable; |
25 | |
7adfd53f |
26 | |
27 | 1; |