/
durovcode
/
Frontend
Обзор
Документация
Войти
/
durovcode
/
Frontend
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
master
src/components/selectLecturer.tsx
94 строки
3 KB
Alch3m1st
Add Docker
22 сен 2024, 01:25
22 сен 2024, 01:25
f92ba9d
Код
Авторство
О чём код?
"use client" import * as React from "react" import { Check, ChevronsUpDown } from "lucide-react" import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover" const lecturers = [ { value: "next.js", label: "Next.js", }, { value: "sveltekit", label: "SvelteKit", }, { value: "nuxt.js", label: "Nuxt.js", }, { value: "remix", label: "Remix", }, { value: "astro", label: "Astro", }, ] export const SelectLecturer = () => { const [open, setOpen] = React.useState(false) const [value, setValue] = React.useState("") return ( <Popover open={open} onOpenChange={setOpen}> <PopoverTrigger asChild> <Button variant="outline" role="combobox" aria-expanded={open} className="w-full justify-between" > {value ? lecturers.find((lecturer) => lecturer.value === value)?.label : "Выберите преподавателя..."} <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" /> </Button> </PopoverTrigger> <PopoverContent className="w-full p-0"> <Command> <CommandInput placeholder="Поиск преподавателя..." /> <CommandList> <CommandEmpty>Преподавателей не найдено</CommandEmpty> <CommandGroup> {lecturers.map((lecturer) => ( <CommandItem key={lecturer.value} value={lecturer.value} onSelect={(currentValue) => { setValue(currentValue === value ? "" : currentValue) setOpen(false) }} > <Check className={cn( "mr-2 h-4 w-4", value === lecturer.value ? "opacity-100" : "opacity-0" )} /> {lecturer.label} </CommandItem> ))} </CommandGroup> </CommandList> </Command> </PopoverContent> </Popover> ) }