our @EXPORT_OK = qw(
html_tag input_tag hidden_tag javascript man_days_tag name_to_id select_tag
checkbox_tag button_tag submit_tag ajax_submit_tag input_number_tag
- stringify_attributes restricted_html textarea_tag link date_tag
-);
+ stringify_attributes restricted_html textarea_tag link_tag date_tag
+ div_tag);
our %EXPORT_TAGS = (ALL => \@EXPORT_OK);
use Carp;
_set_id_attribute(\%attributes, $name);
+ $collection = [] if defined($collection) && !ref($collection) && ($collection eq '');
+
+ my $with_filter = delete($attributes{with_filter});
+ my $fil_placeholder = delete($attributes{filter_placeholder});
my $value_key = delete($attributes{value_key}) || 'id';
my $title_key = delete($attributes{title_key}) || $value_key;
my $default_key = delete($attributes{default_key}) || 'selected';
} @{ $collection };
}
- html_tag('select', $code, %attributes, name => $name);
+ my $select_html = html_tag('select', $code, %attributes, name => $name);
+
+ if ($with_filter) {
+ my $input_style;
+
+ if (($attributes{style} // '') =~ m{width: *(\d+) *px}i) {
+ $input_style = "width: " . ($1 - 22) . "px";
+ }
+
+ my $input_html = html_tag(
+ 'input', undef,
+ autocomplete => 'off',
+ type => 'text',
+ id => $attributes{id} . '_filter',
+ 'data-select-id' => $attributes{id},
+ (placeholder => $fil_placeholder) x !!$fil_placeholder,
+ (style => $input_style) x !!$input_style,
+ );
+ $select_html = html_tag('div', $input_html . $select_html, class => "filtered_select");
+ }
+
+ return $select_html;
}
sub checkbox_tag {
html_tag('textarea', $content, %attributes, name => $name);
}
-sub link {
+sub link_tag {
my ($href, $content, %params) = @_;
$href ||= '#';
html_tag('a', $content, %params, href => $href);
}
+# alias for compatibility
+sub link { goto &link_tag }
sub date_tag {
my ($name, $value, %params) = @_;
$::request->layout->add_javascripts('kivi.Validator.js');
$::request->presenter->need_reinit_widgets($params{id});
+ $params{'data-validate'} = join(' ', "date", grep { $_ } (delete $params{'data-validate'}));
+
input_tag(
$name, blessed($value) ? $value->to_lxoffice : $value,
size => 11,
- "data-validate" => "date",
%params,
%class, @onchange,
);
}
+sub div_tag {
+ my ($content, %params) = @_;
+ return html_tag('div', $content, %params);
+}
+
1;
__END__