HTML-Object

 view release on metacpan or  search on metacpan

lib/HTML/Object/DOM/Element/Form.pm  view on Meta::CPAN

##----------------------------------------------------------------------------
## HTML Object - ~/lib/HTML/Object/DOM/Element/Form.pm
## Version v0.2.1
## Copyright(c) 2022 DEGUEST Pte. Ltd.
## Author: Jacques Deguest <jack@deguest.jp>
## Created 2021/12/23
## Modified 2024/04/30
## All rights reserved
## 
## 
## This program is free software; you can redistribute  it  and/or  modify  it
## under the same terms as Perl itself.
##----------------------------------------------------------------------------
package HTML::Object::DOM::Element::Form;
BEGIN
{
    use strict;
    use warnings;
    warnings::register_categories( 'HTML::Object' );
    use parent qw( HTML::Object::DOM::Element );
    use vars qw( $VERSION );
    use HTML::Object::DOM::Element::Shared qw( :form );
    our $VERSION = 'v0.2.1';
};

use strict;
use warnings;

sub init
{
    my $self = shift( @_ );
    $self->{checkValidity} = 1;
    $self->{reportValidity} = 1;
    $self->{_init_strict_use_sub} = 1;
    $self->SUPER::init( @_ ) || return( $self->pass_error );
    $self->{tag} = 'form' if( !CORE::length( "$self->{tag}" ) );
    return( $self );
}

# Note: property attribute
sub acceptCharset : lvalue { return( shift->_set_get_property( 'accept-charset', @_ ) ); }

# Note: property attribute
sub action : lvalue { return( shift->_set_get_property( 'action', @_ ) ); }

# Note: property accept inherited

# Note: property autocapitalize inherited

# Note: method checkValidity inherited

# Note: property read-only
# Same as in HTML::Object::DOM::FieldSet
sub elements
{
    my $self = shift( @_ );
    my $children = $self->children;
    # my $form_elements = $self->new_array( [qw( button datalist fieldset input label legend meter optgroup option output progress select textarea )] );
    # <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements#value>
    my $form_elements = $self->new_array( [qw( button fieldset input object output select textarea )] );
    my $list = $form_elements->as_hash;
    my $results = $children->grep(sub{ exists( $form_elements->{ $_->tag } ) });
    my $col = $self->new_collection_elements;
    $col->push( $results->list );
    return( $col );
}

# Note: property
sub encoding : lvalue { return( shift->_set_get_property( 'encoding', @_ ) ); }

# Note: property
sub length : lvalue { return( shift->_set_get_property( 'length', @_ ) ); }

# Note: property
sub method : lvalue { return( shift->_set_get_property( 'method', @_ ) ); }

# Note: property name inherited

# Note: property
sub noValidate : lvalue { return( shift->_set_get_property( { attribute => 'novalidate', is_boolean => 1 }, @_ ) ); }

sub requestSubmit { return( shift->_set_get_object_without_init( 'requestSubmit', 'HTML::Object::DOM::Element', @_ ) ); }

# Note: method reportValidity inherited

sub submit { return; }

# Note: property target
sub target : lvalue { return( shift->_set_get_property( { attribute => 'target', is_uri => 1 }, @_ ) ); }

1;
# NOTE: POD
__END__

=encoding utf-8

=head1 NAME

HTML::Object::DOM::Element::Form - HTML Object DOM Form Class

=head1 SYNOPSIS

    use HTML::Object::DOM::Element::Form;
    my $form = HTML::Object::DOM::Element::Form->new || 
        die( HTML::Object::DOM::Element::Form->error, "\n" );

=head1 VERSION

    v0.2.1

=head1 DESCRIPTION

This interface represents a <form> element in the DOM. It allows access to-and, in some cases, modification of-aspects of the form, as well as access to its component elements.

=head1 INHERITANCE

    +-----------------------+     +---------------------------+     +-------------------------+     +----------------------------+     +----------------------------------+
    | HTML::Object::Element | --> | HTML::Object::EventTarget | --> | HTML::Object::DOM::Node | --> | HTML::Object::DOM::Element | --> | HTML::Object::DOM::Element::Form |



( run in 1.138 second using v1.01-cache-2.11-cpan-39bf76dae61 )