<%INIT>
my $disabled = (
    ($Item->Id and $Item->Type =~ /Select(?!External)/) ? '' : 'disabled'
);
my $values = $disabled ? $RT::Nothing : $Item->Values;
my $novalue = ( ($disabled or !$values or !$values->Count) ? 'disabled' : '' );
my $SubList = $values->ItemsArrayRef || [];
my $SubItem = (grep { $_->id == $Value } @$SubList)[0] || $RT::Nothing;

if ($Action eq 'ValueSave' and $SubItem != $RT::Nothing) {
    $SubItem->SetName($ValueName) if defined $ValueName;
    $SubItem->SetDescription($ValueDescription) if defined $ValueDescription;
}
elsif ($Action =~ /^Value(Up|Down)(Most)?$/ and $SubItem != $RT::Nothing) {
    my ($Direction, $Loop) = ($1, $2);
    my $Move = ($Action eq 'ValueDown') ? 1 : -1;
    foreach my $i (0..$values->Count) {
        $m->comp(
            '/Edit/Elements/MoveCustomFieldValue',
            SubItem => $SubItem,
            Direction => $Direction,
            Values => $values,
        ) or last;
        last if !$Loop;
    }
    $SubList = $values->ItemsArrayRef || [];
}
</%INIT>
<%ARGS>
$Item => $RT::Nothing
$Value => 0
$Action => ''
$ValueName => undef
$ValueDescription => undef
</%ARGS>
