$value = SL::DB::Manager::Part->find_by(id => $value) if $value && !ref $value;
my $id = delete($params{id}) || $self->name_to_id($name);
+ my $fat_set_item = delete $params{fat_set_item};
+
+ my @classes = $params{class} ? ($params{class}) : ();
+ push @classes, 'part_autocomplete';
+ push @classes, 'partpicker_fat_set_item' if $fat_set_item;
my $ret =
- $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => 'part_autocomplete', type => 'hidden', id => $id) .
+ $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id) .
join('', map { $params{$_} ? $self->input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(column type unit convertible_unit)) .
$self->input_tag("", (ref $value && $value->can('description')) ? $value->description : '', id => "${id}_name", %params);
+ $::request->layout->add_javascripts('autocomplete_part.js');
$::request->presenter->need_reinit_widgets($id);
$self->html_tag('span', $ret, class => 'part_picker');
=back
-=back
+=back
=over 2
accepted as default values and can persist during updates. As with other
selectors though, they are not selectable once overridden.
-Currently you must include C<js/autocomplete_part.js> in your controller, the
-presenter can not do this from the template.
+C<part_picker> will register it's javascript for inclusion in the next header
+rendering. If you write a standard controller that only call C<render> once, it
+will just work. In case the header is generated in a different render call
+(multiple blocks, ajax, old C<bin/moilla> style controllers) you need to
+include C<js/autocomplete_part.js> yourself.
=back