package Rose::HTML::Form::Field::OptionGroup; use strict; use Rose::HTML::Form::Field::Option::Container; # XXX: Use runtime inheritance here to avoid race in circular dependency our @ISA = qw(Rose::HTML::Form::Field::Option::Container); use Rose::Object::MakeMethods::Generic ( scalar => 'name', boolean => 'multiple', ); our $VERSION = '0.606'; __PACKAGE__->add_required_html_attrs( { label => '', }); __PACKAGE__->add_boolean_html_attrs('disabled'); __PACKAGE__->delete_valid_html_attrs(qw( name value onblur onfocus accesskey tabindex)); sub element { 'optgroup' } sub html_element { 'optgroup' } sub xhtml_element { 'optgroup' } sub label { shift->html_attr('label', @_) } sub html { shift->html_field(@_) } sub xhtml { shift->xhtml_field(@_) } sub init_apply_error_class { 0 } sub hidden { my($self) = shift; if(@_) { my $bool = shift; $self->SUPER::hidden($bool); foreach my $option ($self->options) { $option->hidden($bool); } } return $self->SUPER::hidden(@_); } 1; __END__ =head1 NAME Rose::HTML::Form::Field::OptionGroup - Object representation of a group of options in a pop-up menu or select box in an HTML form. =head1 SYNOPSIS $field = Rose::HTML::Form::Field::OptionGroup->new( name => 'fruits', label => 'Fruits'); $field->options(apple => 'Apple', orange => 'Orange', grape => 'Grape'); print $field->html; ... =head1 DESCRIPTION L is an object representation of a group of options in a pop-up menu or select box in an HTML form. Yes, this is the often-overlooked (and sometimes ill-supported) "optgroup" HTML tag. This class inherits from, and follows the conventions of, L. Inherited methods that are not overridden will not be documented a second time here. See the L documentation for more information. =head1 HTML ATTRIBUTES Valid attributes: accesskey class dir disabled id label lang name onblur onclick ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup style tabindex title value xml:lang Required attributes: label Boolean attributes: disabled =head1 CONSTRUCTOR =over 4 =item B Constructs a new L object based on PARAMS, where PARAMS are name/value pairs. Any object method is a valid parameter name. =back =head1 OBJECT METHODS =over 4 =item B Convenience alias for L. =item B Adds options to the option group. OPTIONS may be a reference to a hash of value/label pairs, a reference to an array of values, or a list of L objects. Passing an odd number of items in the value/label argument list causes a fatal error. Options passed as a hash reference are sorted by the keys of the hash according to the default behavior of Perl's built-in L function. Options are added to the end of the existing list of options. =item B This is an alias for the L method. =item B Returns true if VALUE is selected in the option group, false otherwise. =item B