1package Reaction::UI::ViewPort::Action::Role::OK; 2 3use Reaction::Role; 4use MooseX::Types::Moose qw/Str/; 5with 'Reaction::UI::ViewPort::Action::Role::Close'; 6 7has ok_label => (is => 'rw', isa => Str, lazy_build => 1); 8 9sub _build_ok_label { 'ok' } 10 11sub ok { 12 my $self = shift; 13 $self->close(@_) if $self->apply(@_); 14} 15 16around accept_events => sub { 17 my $orig = shift; 18 my $self = shift; 19 ( ($self->has_on_close_callback ? ('ok') : ()), $self->$orig(@_) ); 20}; 21 221; 23 24__END__ 25 26=head1 NAME 27 28Reaction::UI::ViewPort::Action::Role::OK - Integrate OK, Apply and Close events 29 30=head1 SYNOPSIS 31 32 package MyApp::UI::ViewPort::SomeAction; 33 use Reaction::Class; 34 35 use namespace::clean -except => 'meta'; 36 37 extends 'Reaction::UI::ViewPort::Object::Mutable'; 38 with 'Reaction::UI::ViewPort::Action::Role::OK'; 39 40 ... 41 1; 42 43=head1 DESCRIPTION 44 45This role integrates an C<ok> event and inherits a 46L<close|Reaction::UI::ViewPort::Action::Role::Close/close> 47and an L<apply|Reaction::UI::ViewPort::Action::Role::Apply/apply> 48event into the consuming viewport. 49 50=head1 ATTRIBUTES 51 52=head2 ok_label 53 54Defaults to C<ok>. String is built by L</_build_ok_label>. 55 56=head1 METHODS 57 58=head2 ok 59 60Calls C<apply>, and then C<close> if successful. 61 62=head2 accept_events 63 64Extends L<Reaction::UI::ViewPort::Action::Role::Close/accept_events> with the 65event C<ok> if an L<on_close_callback|Reaction::UI::ViewPort::Action::Role::Close/on_close_callback> 66was provided. 67 68=head1 INTERNAL METHODS 69 70=head2 _build_ok_label 71 72Returns the string representing the label for the OK action. Defaults to C<ok>. 73 74=head1 SEE ALSO 75 76L<Reaction::UI::ViewPort::Action::Role::Apply> 77 78L<Reaction::UI::ViewPort::Action::Role::Close> 79 80=head1 AUTHORS 81 82See L<Reaction::Class> for authors. 83 84=head1 LICENSE 85 86See L<Reaction::Class> for the license. 87 88=cut 89