/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/ui/src/components/dropdown-menu.tsx
308 строк
9 KB
Kit Langton
feat: add oxlint with correctness defaults (#22682)
16 апр 2026, 03:45
Не верифицирован
16 апр 2026, 03:45
3d6f90c
Код
Авторство
О чём код?
import { DropdownMenu as Kobalte } from "@kobalte/core/dropdown-menu" import { splitProps } from "solid-js" import type { ComponentProps, ParentProps } from "solid-js" export interface DropdownMenuProps extends ComponentProps<typeof Kobalte> {} export interface DropdownMenuTriggerProps extends ComponentProps<typeof Kobalte.Trigger> {} export interface DropdownMenuIconProps extends ComponentProps<typeof Kobalte.Icon> {} export interface DropdownMenuPortalProps extends ComponentProps<typeof Kobalte.Portal> {} export interface DropdownMenuContentProps extends ComponentProps<typeof Kobalte.Content> {} export interface DropdownMenuArrowProps extends ComponentProps<typeof Kobalte.Arrow> {} export interface DropdownMenuSeparatorProps extends ComponentProps<typeof Kobalte.Separator> {} export interface DropdownMenuGroupProps extends ComponentProps<typeof Kobalte.Group> {} export interface DropdownMenuGroupLabelProps extends ComponentProps<typeof Kobalte.GroupLabel> {} export interface DropdownMenuItemProps extends ComponentProps<typeof Kobalte.Item> {} export interface DropdownMenuItemLabelProps extends ComponentProps<typeof Kobalte.ItemLabel> {} export interface DropdownMenuItemDescriptionProps extends ComponentProps<typeof Kobalte.ItemDescription> {} export interface DropdownMenuItemIndicatorProps extends ComponentProps<typeof Kobalte.ItemIndicator> {} export interface DropdownMenuRadioGroupProps extends ComponentProps<typeof Kobalte.RadioGroup> {} export interface DropdownMenuRadioItemProps extends ComponentProps<typeof Kobalte.RadioItem> {} export interface DropdownMenuCheckboxItemProps extends ComponentProps<typeof Kobalte.CheckboxItem> {} export interface DropdownMenuSubProps extends ComponentProps<typeof Kobalte.Sub> {} export interface DropdownMenuSubTriggerProps extends ComponentProps<typeof Kobalte.SubTrigger> {} export interface DropdownMenuSubContentProps extends ComponentProps<typeof Kobalte.SubContent> {} function DropdownMenuRoot(props: DropdownMenuProps) { return <Kobalte {...props} data-component="dropdown-menu" /> } function DropdownMenuTrigger(props: ParentProps<DropdownMenuTriggerProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.Trigger {...rest} data-slot="dropdown-menu-trigger" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.Trigger> ) } function DropdownMenuIcon(props: ParentProps<DropdownMenuIconProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.Icon {...rest} data-slot="dropdown-menu-icon" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.Icon> ) } function DropdownMenuPortal(props: DropdownMenuPortalProps) { return <Kobalte.Portal {...props} /> } function DropdownMenuContent(props: ParentProps<DropdownMenuContentProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.Content {...rest} data-component="dropdown-menu-content" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.Content> ) } function DropdownMenuArrow(props: DropdownMenuArrowProps) { const [local, rest] = splitProps(props, ["class", "classList"]) return ( <Kobalte.Arrow {...rest} data-slot="dropdown-menu-arrow" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} /> ) } function DropdownMenuSeparator(props: DropdownMenuSeparatorProps) { const [local, rest] = splitProps(props, ["class", "classList"]) return ( <Kobalte.Separator {...rest} data-slot="dropdown-menu-separator" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} /> ) } function DropdownMenuGroup(props: ParentProps<DropdownMenuGroupProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.Group {...rest} data-slot="dropdown-menu-group" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.Group> ) } function DropdownMenuGroupLabel(props: ParentProps<DropdownMenuGroupLabelProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.GroupLabel {...rest} data-slot="dropdown-menu-group-label" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.GroupLabel> ) } function DropdownMenuItem(props: ParentProps<DropdownMenuItemProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.Item {...rest} data-slot="dropdown-menu-item" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.Item> ) } function DropdownMenuItemLabel(props: ParentProps<DropdownMenuItemLabelProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.ItemLabel {...rest} data-slot="dropdown-menu-item-label" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.ItemLabel> ) } function DropdownMenuItemDescription(props: ParentProps<DropdownMenuItemDescriptionProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.ItemDescription {...rest} data-slot="dropdown-menu-item-description" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.ItemDescription> ) } function DropdownMenuItemIndicator(props: ParentProps<DropdownMenuItemIndicatorProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.ItemIndicator {...rest} data-slot="dropdown-menu-item-indicator" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.ItemIndicator> ) } function DropdownMenuRadioGroup(props: ParentProps<DropdownMenuRadioGroupProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.RadioGroup {...rest} data-slot="dropdown-menu-radio-group" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.RadioGroup> ) } function DropdownMenuRadioItem(props: ParentProps<DropdownMenuRadioItemProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.RadioItem {...rest} data-slot="dropdown-menu-radio-item" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.RadioItem> ) } function DropdownMenuCheckboxItem(props: ParentProps<DropdownMenuCheckboxItemProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.CheckboxItem {...rest} data-slot="dropdown-menu-checkbox-item" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.CheckboxItem> ) } function DropdownMenuSub(props: DropdownMenuSubProps) { return <Kobalte.Sub {...props} /> } function DropdownMenuSubTrigger(props: ParentProps<DropdownMenuSubTriggerProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.SubTrigger {...rest} data-slot="dropdown-menu-sub-trigger" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.SubTrigger> ) } function DropdownMenuSubContent(props: ParentProps<DropdownMenuSubContentProps>) { const [local, rest] = splitProps(props, ["class", "classList", "children"]) return ( <Kobalte.SubContent {...rest} data-component="dropdown-menu-sub-content" classList={{ ...local.classList, [local.class ?? ""]: !!local.class, }} > {local.children} </Kobalte.SubContent> ) } export const DropdownMenu = Object.assign(DropdownMenuRoot, { Trigger: DropdownMenuTrigger, Icon: DropdownMenuIcon, Portal: DropdownMenuPortal, Content: DropdownMenuContent, Arrow: DropdownMenuArrow, Separator: DropdownMenuSeparator, Group: DropdownMenuGroup, GroupLabel: DropdownMenuGroupLabel, Item: DropdownMenuItem, ItemLabel: DropdownMenuItemLabel, ItemDescription: DropdownMenuItemDescription, ItemIndicator: DropdownMenuItemIndicator, RadioGroup: DropdownMenuRadioGroup, RadioItem: DropdownMenuRadioItem, CheckboxItem: DropdownMenuCheckboxItem, Sub: DropdownMenuSub, SubTrigger: DropdownMenuSubTrigger, SubContent: DropdownMenuSubContent, })