around accept_events => sub { ( 'apply', shift->(@_) ) };
1;
+
+__END__
+
+=head1 NAME
+
+Reaction::UI::ViewPort::Action::Role::Apply
+
+=head1 ATTRIBUTES
+
+=head2 apply_label
+
+Default: 'apply'
+
+=head2 on_apply_callback
+
+CodeRef.
+
+=head1 METHODS
+
+=head2 can_apply
+
+=head2 apply
+
+Calls a user-supplied C<do_apply> and if it is successful runs the
+C<on_apply_callback> passing C<$self> and the result of C<do_apply> as args.
+
+=head1 SEE ALSO
+
+L<Reaction::UI::ViewPort::Action::Role::Close>
+
+L<Reaction::UI::ViewPort::Action::Role::OK>
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut
+
};
1;
+
+__END__
+
+=head1 NAME
+
+Reaction::UI::ViewPort::Action::Role::Close
+
+=head1 ATTRIBUTES
+
+=head2 close_label
+
+Default: C<close_label_close>
+
+=head2 close_label_close
+
+Default: 'close'
+
+=head2 close_label_cancel
+
+This label is only shown when C<changed> is true.
+
+Default: 'cancel'
+
+=head2 on_close_callback
+
+CodeRef.
+
+=head1 METHODS
+
+=head2 close
+
+=head2 can_close
+
+=head1 SEE ALSO
+
+L<Reaction::UI::ViewPort::Action::Role::Apply>
+
+L<Reaction::UI::ViewPort::Action::Role::OK>
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut
};
1;
+
+__END__
+
+=head1 NAME
+
+Reaction::UI::ViewPort::Action::Role::Close
+
+=head1 ATTRIBUTES
+
+=head2 ok_label
+
+Default: 'ok'
+
+=head1 METHODS
+
+=head2 ok
+
+Calls C<apply>, and then C<close> if successful.
+
+=head1 SEE ALSO
+
+L<Reaction::UI::ViewPort::Action::Role::Apply>
+
+L<Reaction::UI::ViewPort::Action::Role::Close>
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut