@cloud-ru/ds-dropdown

中文文档
1.2.2发布于 2026/11/11Apache-2.0TypeScriptESM + CJS近 30 天下载 1.7万

+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

中文使用文档
文档目录15 节
  1. Когда
  2. Анатомия
  3. 状态
  4. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF…
  5. 宽度策略( 默认) gte (中文(简体) )
  6. Установка
  7. Примеры
  8. Базовый倒地
  9. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF…
  10. 装入
  11. 没有找到的
  12. 道具
  13. Адаптивность
  14. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF…
  15. Платформенные

下坠

@cloud-ru/ds-dropdown -==YTET -伊甸园字幕组=- 翻译:.

Выпадающий:произвольный也 loading / not-found / no-data / data-error через state。 。 。 PopoverPrivate {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得怎样.

Когда

  • Меню(一作экспорт.
  • * * * * * * * * 建议 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * ** * * ** ** ** * ** ** *** ************************************************** state (原始内容存档于2018-09-21). UI.
  • Композитные:селекторы也.

Когда не нужен Dropdownдля: Tooltip, для , выбора Modal или Popover。 。 。 .

Анатомия

状态

校对:Soup loading - , no-data - у(первая), not-found {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢, data-error . . . . . . .

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

{\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}♪#################################### ################################################################################################################################################################################################ Для也 Droplist из @cloud-ru/ds-list-=ytet -伊甸园字幕组=- 翻译: limitedScrollHeight。 。 。 .

宽度策略( 默认) gte(中文(简体) )

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我们来谈谈吧

  • auto - потриггерне.
  • eq - ровно по: width {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.
  • gte . . . . . . min-width равна.

Разница gte и eq видна,когда也 шире триггера: eq {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你还不知道吗, gte даст. ================================================================================================================================================================================================== auto 40岁, eq и gte ——96岁.

Значения gte (原始内容存档于2018-10-25). QQ: Figma QQ: ~ API ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ .

Установка

pnpm add @cloud-ru/ds-dropdown
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown'

Примеры

Базовый倒地

import { Button } from '@cloud-ru/ds-button';
import { Dropdown } from '@cloud-ru/ds-dropdown';

export function Basic() {
  return (
    <Dropdown content={<div style={{ padding: 12 }}>Контент меню</div>}>
      <Button label='Открыть' />
    </Dropdown>
  );
}

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

——开通

import { Button } from '@cloud-ru/ds-button';
import { Dropdown } from '@cloud-ru/ds-dropdown';

export function OpenForReview() {
  return (
    <Dropdown content={<div style={{ padding: 12 }}>Видимое содержимое</div>}>
      <Button label='Триггер' />
    </Dropdown>
  );
}

装入

import { Button } from '@cloud-ru/ds-button';
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown';

export function Loading() {
  return (
    <Dropdown state={{ type: STATE.Loading }} content={null}>
      <Button label='Загрузка' />
    </Dropdown>
  );
}

没有找到的

import { Button } from '@cloud-ru/ds-button';
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown';

export function NotFound() {
  return (
    <Dropdown
      state={{
        type: STATE.NotFound,
        content: 'Ничего не нашли',
        actionLabel: 'Сбросить фильтры',
        onActionClick: () => {},
      }}
      content={null}
    >
      <Button label='Поиск' />
    </Dropdown>
  );
}

道具

下拉选项

Prop类型默认说明
bodyPaddingbooleantrue{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}是的 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}身体 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}是的. false - убрать (контент; на; на; на BottomSheet) (中文(简体) ).
childrenstring | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined—— 说
classNamestring—— 说支助科
closeOnEscapeKeybooleantrue{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 Esc
closeOnPopstateboolean—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
containerRefObject<HTMLElement | null>—— 说Контейнер ( ref). Переопределяет PortalContext для,этого
по аналогии container 莫道尔/德劳尔。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 PortalContextProvider。 。 。 .
contentReactNode—— 说Содержимое(体)
data-test-idstring—— 说
defaultSnapIndexnumber—— 说(原始内容存档于2018-03-21) (中文(简体) ). BottomSheet) (中文(简体) ).
disableSpanWrapperboolean—— 说Отключает isValidElement {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 position: absolute
{\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}♪############################# #######################################################################################################################################################################################################, forwardRef- компоненты
{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢 withInnerRefSupport из @cloud-ru/ds-utils{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 <span> —— 说
{\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}#####################################################################################################################################################################################################################################.
fallbackPlacementsPlacement—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢.
footerReactNode—— 说Слот(下巴)
footerDividerboolean—— 说分裂者 {正文}
headerDividerboolean—— 说分裂者 \\ \ \ \ \ \ \ 身体
hoverDelayClosenumber—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
hoverDelayOpennumber—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
offsetnumber0[永久失效連結] (中文(简体) ).
onOpenChange((isOpen: boolean) => void)—— 说Колбек. 打开.
openboolean—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢.
outsideClickOutsideClickHandler—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
placement"bottom" | "bottom-end" | "bottom-start" | "left" | "left-end" | "left-start" | "right" | "right-end" | "right-start" | "top" | "top-end" | "top-start"top(原始内容存档于2019-09-29) (中文(中国大陆) ).
searchReactNode—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么
slotAfterTitleReactNode—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢. <QuestionTooltip />(中文(简体) )
snapPointsSnapPoint['fit-content']手机:snap-точки BottomSheetа (высота. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}请说.
stateActionButtonProps | BlockProps | BlockPropsWithIcon | DropdownState—— 说Состояние
stopPropagationStopPropagationHandlers{ onClick: true, onMouseDown: true, onMouseUp: true, onTouchStart: true, onTouchEnd: true, onTouchMove: true }{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}========================================================================================== (==================================================================stopPropagation) (中文(简体) ).
{\fn华文仿宋\fs16\1cHD1D1D1}好! 拖放 拖放 拖放
onMouseUp 编号 : onTouchEnd, 翻译 : document。 。 。 .
titleReactNode—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么
trigger"click" | "clickAndFocusVisible" | "focus" | "focusVisible" | "hover" | "hoverAndFocus" | "hoverAndFocusVisible"—— 说说吧
- 说吧 click - открывать по
- 说吧 hover - открывать по
- 说吧 focusVisible - 重点可见
- 说吧 focus - открывать по
- 说吧 hoverAndFocusVisible -=ytet -伊甸园字幕组=- 翻译:
- 说吧 hoverAndFocus - открывать ховеру и
- 说吧 clickAndFocusVisible -=ytet -伊甸园字幕组=- 翻译:
triggerClassNamestring—— 说CSS - класс триггера
triggerClickByKeysbooleantrue# # # # # # # # # # # # # # # # # # # # # # # # # # # # # 触发 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # click(中文(简体) )
triggerRefForwardedRef<HTMLElement | ReferenceType | null>—— 说参考文献:
widthStrategy"auto" | "eq" | "gte"auto{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
- 说吧 auto - соответствует,ширине,
- 说吧 gte - 伟大或平等, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \,
- 说吧 eq - 平等, \ \ \ \ \.

动作按钮Props

Prop类型默认说明
actionLabelstring | undefined—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onActionClick(() => void) | undefined—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

块选项

Prop类型默认说明
contentstring | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined—— 说Подзаголовок

块Props WithIcon 软件

Prop类型默认说明
contentstring | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined—— 说Подзаголовок
iconIconPredefinedProps—— 说Иконка
  • DropdownState =: { type: typeof STATE.Loading; } | ({ type: typeof STATE.NotFound; } & ActionButtonProps & BlockProps) | ({ type: typeof STATE.NoData; } & ActionButtonProps & BlockPropsWithIcon) | ({ type: typeof STATE.DataError; } & ActionButtonProps & BlockPropsWithIcon)

Адаптивность

Dropdown ——"с"("地上"-"花"). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 AdaptiveProvider 页:1 @cloud-ru/ds-adaptiveAPI :

  • 桌面 {\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}(@################################## ############################################################################################################################################################.
  • 移动 - контент рендерится рендерится BottomSheet из @cloud-ru/ds-bottom-sheet (панель也.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ************************ <AdaptiveProvider> [永久失效連結] (中文(简体) ). Пропа layoutType у:источник也.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢

- Форс,не:

  • Поддерево:
    import { AdaptiveProvider } from '@cloud-ru/ds-adaptive'
    
    <AdaptiveProvider layoutType='mobile'>
      <Dropdown content={…}>…</Dropdown>
    </AdaptiveProvider>
    
  • – Отдельный – withLayoutType (模块-镜, сахар:
    import { withLayoutType } from '@cloud-ru/ds-adaptive'
    import { Dropdown } from '@cloud-ru/ds-dropdown'
    
    const MobileDropdown = withLayoutType(Dropdown, 'mobile')
    

Платформенные

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}============================================================================ -========================================================================================================================================================== BottomSheet (原始内容存档于2018-09-28). QQ. ========================================================================================================================================================= DropdownProps。 。 。 .

Пропы桌面移动
placement, (中文(简体) ), widthStrategy, (中文(简体) ), offset, (中文(简体) ), fallbackPlacementsиспользуетсяигнорируется
hoverDelayOpen, (中文(简体) ), hoverDelayClose, (中文(简体) ), closeOnEscapeKey, (中文(简体) ), triggerClickByKeys, (中文(简体) ), outsideClickиспользуетсяигнорируется
disableSpanWrapper, (中文(简体) ), triggerClassName, (中文(简体) ), triggerRef, (中文(简体) ), containerиспользуетсяигнорируется
content, (中文(简体) ), title, (中文(简体) ), slotAfterTitle, (中文(简体) ), search, (中文(简体) ), footer, (中文(简体) ), headerDivider, (中文(简体) ), footerDividerиспользуетсяиспользуется
state, (中文(简体) ), open, (中文(简体) ), onOpenChange, (中文(简体) ), closeOnPopstate, (中文(简体) ), classNameиспользуетсяиспользуется

手机 手机 BottomSheet берётся @cloud-ru/ds-portal-context时 container не.

Подробнее модели- 适应性。 。 。 .

版本与发布记录

@cloud-ru/ds-dropdown 共发布 131 个版本,首次发布于 2026/08/18;过去 12 个月发布了 131 个版本。

版本发布日期距今
1.2.2latest2026/11/11今天
1.2.2-preview-e8fe6b56.0preview2026/11/11今天
1.2.2-preview-c0e895ed.02026/11/11今天
1.2.2-preview-90b10112.02026/11/11今天
1.2.2-preview-fd7dd437.02026/11/101 天前
1.2.2-preview-9a75a2a9.02026/11/101 天前

关于 @cloud-ru/ds-dropdown 的常见问题

@cloud-ru/ds-dropdown 是什么?

+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

如何安装 @cloud-ru/ds-dropdown?

在项目目录运行 npm install @cloud-ru/ds-dropdown,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@cloud-ru/ds-locale(^1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cloud-ru/ds-dropdown 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloud-ru/ds-dropdown 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cloud-ru/ds-dropdown 可以商用吗?

@cloud-ru/ds-dropdown 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloud-ru/ds-dropdown 的下载量有多少?

根据 npm 官方下载统计,@cloud-ru/ds-dropdown 在 2026/10/10 – 2026/11/08 这 30 天内被下载 17,001 次,日均约 567 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloud-ru/ds-dropdown 还在维护吗?

最新版本 1.2.2 发布于 2026/11/11(今天);至今共发布 131 个版本,其中过去 12 个月发布了 131 个;首次发布于 2026/08/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。