UNPKG

sard-uniapp

Version:

sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库

169 lines (117 loc) 8.01 kB
--- nav: 组件 title: Dropdown subtitle: 下拉菜单 group: 导航组件 --- ## 介绍 可向下/向上弹出菜单列表,或自定义弹出的菜单内容。 ## 引入 ```ts import Dropdown from 'sard-uniapp/components/dropdown/dropdown.vue' import DropdownItem from 'sard-uniapp/components/dropdown-item/dropdown-item.vue' ``` ## 代码演示 ### 基础使用 使用 `options` 配置下拉菜单项,使用 `v-model` 绑定选中的值。 @code('${DEMO_PATH}/dropdown/demo/Basic.vue') ### 占位符 占位符会在未选中值时显示说明文字。 @code('${DEMO_PATH}/dropdown/demo/Placeholder.vue') ### 添加 label 相较于占位符, `label` 会一直显示。 @code('${DEMO_PATH}/dropdown/demo/Label.vue') ### 向上展开 底部空间不足时可以配置向上弹出菜单。 @code('${DEMO_PATH}/dropdown/demo/Direction.vue') ### 禁用 禁用的菜单项不可点击。 @code('${DEMO_PATH}/dropdown/demo/Disabled.vue') ### 自定义内容 除了显示菜单项,下拉菜单还可以显示任意内容,这时可以使用 `v-model:visible` 控制显隐。 @code('${DEMO_PATH}/dropdown/demo/Content.vue') ### 异步开关 <sup>1.19+</sup> 如果 `beforeOpen` 返回 false,则取消打开菜单;如果返回 `Promise` 对象,则会在 `resolve` 时才打开菜单。 如果 `beforeClose` 返回 false,则取消关闭菜单;如果返回 `Promise` 对象,则会在 `resolve` 时才关闭菜单。 @code('${DEMO_PATH}/dropdown/demo/Async.vue') ### 可取消选择 <sup>1.19.3+</sup> 如果想点击时取消选中的选项,可以使用 `togglable` 属性。 @code('${DEMO_PATH}/dropdown/demo/Togglable.vue') ## API ### DropdownProps | 属性 | 描述 | 类型 | 默认值 | | --------------------------------- | ---------------------------- | -------------- | --------- | | root-class | 组件根元素类名 | string | - | | root-style | 组件根元素样式 | StyleValue | - | | direction | 菜单弹出方向 | 'down' \| 'up' | 'down' | | disabled | 是否禁用 | boolean | false | | away-closable | 是否在点击外部区域后自动隐藏 | boolean | true | | overlay-closable | 是否在点击遮罩后自动隐藏 | boolean | true | | duration | 显隐动画时长,单位 ms | number | 300 | | togglable <sup>1.19.3+</sup> | 是否可取消选中的选项 | boolean | false | | value-on-clear <sup>1.19.3+</sup> | 取消选项时设置的值 | any | undefined | ### DropdownSlots | 插槽 | 描述 | 属性 | | ------- | -------------- | ---- | | default | 自定义默认内容 | - | ### DropdownItemProps | 属性 | 描述 | 类型 | 默认值 | | --------------------------------- | -------------------------------------------------------------------- | ------------------- | --------- | | root-class | 组件根元素类名 | string | - | | root-style | 组件根元素样式 | StyleValue | - | | title | 标题,用于自定义菜单内容 | string | - | | label | 标签说明 | string | - | | options | 菜单选项 | DropdownOption[] | [] | | direction | 菜单弹出方向 | 'down' \| 'up' | 'down' | | disabled | 是否禁用 | boolean | false | | model-value (v-model) | 当前选择的菜单项的值 | any | - | | visible (v-model) | 弹出框是否可见 | boolean | - | | separator | 标签后面分隔符 | string | - | | placeholder | 占位符 | string | - | | togglable <sup>1.19.3+</sup> | 是否可取消选中的选项 | boolean | false | | value-on-clear <sup>1.19.3+</sup> | 取消选项时设置的值 | any | undefined | | before-open <sup>1.19.1+</sup> | 打开前的回调,返回 `false` 或 `rejected` 状态的 `Promise` 可阻止打开 | () => any | - | | before-close <sup>1.19+</sup> | 关闭前的回调,返回 `false` 或 `rejected` 状态的 `Promise` 可阻止关闭 | DropdownBeforeClose | - | ### DropdownBeforeClose ```ts type DropdownBeforeClose = (type: DropdownCloseType) => any type DropdownCloseType = | 'overlay' | 'away' | 'other-button' | 'button' | 'option' ``` 关闭类型: - `overlay` 点击遮罩 - `away` 点击除遮罩和菜单之外的区域 - `other-button` 点击其他菜单按钮 - `button` 点击当前的菜单按钮 - `option` 点击菜单项 ### DropdownItemSlots | 插槽 | 描述 | 属性 | | ------- | -------------- | ---- | | default | 自定义默认内容 | - | ### DropdownItemEmits | 事件 | 描述 | 类型 | | -------------------------------- | --------------------------- | ---------------------------------- | | update:model-value | 选中菜单选项时触发 | (value: any) => void | | change <sup>1.12.2+</sup> | 选中菜单选项时触发 | (value: any) => void | | update:visible | 弹出框显隐时触发 | (visible: boolean) => void | | visible-hook <sup>1.18+</sup> | 入场/退场动画状态改变时触发 | (name: TransitionHookName) => void | | before-enter <sup>1.18+</sup> | 入场动画开始前触发 | () => void | | enter <sup>1.18+</sup> | 入场动画开始时触发 | () => void | | after-enter <sup>1.18+</sup> | 入场动画结束时触发 | () => void | | enter-cancelled <sup>1.18+</sup> | 入场动画取消时触发 | () => void | | before-leave <sup>1.18+</sup> | 退场动画开始前触发 | () => void | | leave <sup>1.18+</sup> | 退场动画开始时触发 | () => void | | after-leave <sup>1.18+</sup> | 退场动画结束时触发 | () => void | | leave-cancelled <sup>1.18+</sup> | 退场动画取消时触发 | () => void | ### DropdownOption | 属性 | 描述 | 类型 | 默认值 | | ----- | ------------ | ------ | ------ | | label | 定义选项标签 | string | - | | value | 定义选项的值 | any | - | ## 主题定制 ### CSS 变量 @code('./variables.scss#variables')