2024-06-07 20:17:03 +03:00
|
|
|
'use client';
|
|
|
|
|
2025-02-20 20:22:05 +03:00
|
|
|
import { type Styling } from '@/components/props';
|
2025-04-09 20:08:36 +03:00
|
|
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
|
|
|
import { cn } from '@/lib/utils';
|
2025-02-11 20:56:11 +03:00
|
|
|
|
2025-02-12 15:12:59 +03:00
|
|
|
import { labelVersion } from '../../rsform/labels';
|
2025-02-20 20:22:05 +03:00
|
|
|
import { type IVersionInfo } from '../backend/types';
|
|
|
|
import { type CurrentVersion } from '../models/library';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
2025-02-20 20:22:05 +03:00
|
|
|
interface SelectVersionProps extends Styling {
|
2024-06-07 20:17:03 +03:00
|
|
|
id?: string;
|
2025-02-20 16:36:50 +03:00
|
|
|
value: CurrentVersion;
|
|
|
|
onChange: (newValue: CurrentVersion) => void;
|
2024-07-26 21:08:31 +03:00
|
|
|
|
2025-02-20 16:36:50 +03:00
|
|
|
items: IVersionInfo[];
|
2024-07-26 21:08:31 +03:00
|
|
|
placeholder?: string;
|
|
|
|
noBorder?: boolean;
|
2024-06-07 20:17:03 +03:00
|
|
|
}
|
|
|
|
|
2025-04-10 11:03:55 +03:00
|
|
|
export function SelectVersion({
|
|
|
|
id,
|
|
|
|
className,
|
|
|
|
items,
|
|
|
|
value,
|
|
|
|
placeholder,
|
|
|
|
onChange,
|
|
|
|
...restProps
|
|
|
|
}: SelectVersionProps) {
|
2025-04-09 20:08:36 +03:00
|
|
|
function handleSelect(newValue: string) {
|
|
|
|
if (newValue === 'latest') {
|
|
|
|
onChange(newValue);
|
|
|
|
} else {
|
|
|
|
onChange(Number(newValue));
|
|
|
|
}
|
|
|
|
}
|
2024-06-07 20:17:03 +03:00
|
|
|
return (
|
2025-04-09 20:08:36 +03:00
|
|
|
<Select onValueChange={handleSelect} defaultValue={String(value)}>
|
2025-04-10 11:03:55 +03:00
|
|
|
<SelectTrigger id={id} className={cn('min-w-48', className)} {...restProps}>
|
2025-04-09 20:08:36 +03:00
|
|
|
<SelectValue placeholder={placeholder} />
|
|
|
|
</SelectTrigger>
|
|
|
|
<SelectContent>
|
|
|
|
<SelectItem value='latest'>{labelVersion('latest', items)}</SelectItem>
|
|
|
|
{items?.map(version => (
|
|
|
|
<SelectItem key={`version-${version.id}`} value={String(version.id)}>
|
|
|
|
{version.version}
|
|
|
|
</SelectItem>
|
|
|
|
))}
|
|
|
|
</SelectContent>
|
|
|
|
</Select>
|
2024-06-07 20:17:03 +03:00
|
|
|
);
|
|
|
|
}
|