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