The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Reaction::UI::Widget::Field::Mutable::MatchingPasswords;

use Reaction::UI::WidgetClass;
use namespace::clean -except => [ qw(meta) ];

extends 'Reaction::UI::Widget::Field::Mutable::Password';

implements fragment check_field {
  arg 'field_id'   => event_id 'check_value';
  arg 'field_name' => event_id 'check_value';
  render 'field'; #piggyback!
};

implements fragment check_label {
  if (my $label = $_{viewport}->check_label) {
    arg label => localized $label;
    render 'label';
  }
};

__PACKAGE__->meta->make_immutable;

1;

__END__;

=head1 NAME

Reaction::UI::Widget::Field::Mutable::MatchingPasswords - Require double input of password

=head1 DESCRIPTION

This is a subclass of L<Reaction::UI::Widget::Field::Mutable::Password> implementing
a second field to repeat the password input.

=head1 FRAGMENTS

=head2 widget

Will render the C<check_field> fragment after the original C<widget> fragment.

=head2 check_field

Renders C<field> with C<field_id> and C<field_name> set to the viewport's C<check_value> event.

=head2 check_label

Localises the C<label> argument with a value from the viewport's C<check_label> attribute if
one is specified and renders the C<label> fragment.

=head1 LAYOUT SETS

=head2 base

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

=head1 SEE ALSO

=over 4

=item * L<Reaction::UI::Widget::Field::Mutable::Password>

=back

=head1 AUTHORS

See L<Reaction::Class> for authors.

=head1 LICENSE

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

=cut