# DropdownList 下拉菜单 V1.1.0+
概述
DropdownList 下拉菜单,用于弹出一个菜单给用户选择操作,居中弹出。
温馨提示
- 使用该组件 需要 同时引入
fui-types
类型文件。
# 支持平台
目前开发小程序与H5推荐使用 FirstUI nvue版本 (opens new window)。
安卓系统版本 | 安卓uni-app | 安卓uniapp-x | iOS系统版本 | iOS uniapp | iOS uniapp-x | 小程序 | H5/Web |
---|---|---|---|---|---|---|---|
5.0 | × | ✓ | 9.0 | × | × | × | ✓ |
# 引入
以下介绍两种常用的引入方式。
第一种:在页面中引用、注册
import fuiDropdownList from "@/components/firstui/fui-dropdown-list/fui-dropdown-list.uvue"
export default {
components:{
fuiDropdownList
}
}
1
2
3
4
5
6
2
3
4
5
6
第二种:easycom组件规范
传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。
First UI easycom配置请查看 快速上手。
如果不了解easycom,可先查看 官网文档 (opens new window)。
# 代码演示
部分示例演示,完整使用请参考示例程序以及文档API。
基础使用
通过 menus
属性设置下拉菜单数据。
通过 ref
来注册组件引用信息,引用信息将会注册在父组件的$refs对象上。
<fui-list-cell :highlight="false">
<view class="fui-list__cell fui-flex__center">
<text class="fui-text">资产类别:</text>
<view class="fui-select fui-flex__between" @tap="assetsTap">
<input placeholder="请选择" :value="assets" class="fui-input" :disabled="true" />
<view class="fui-filter__icon" :class="{'fui-icon__ani':assetsShow}">
<fui-icon name="turningdown" :size="32"></fui-icon>
</view>
</view>
</view>
</fui-list-cell>
<fui-dropdown-list :menus="menus" ref="ddlAssets" @onclick="assetsItemClick" @close="assetsClose">
</fui-dropdown-list>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
import { FuiDropdownMenuOptionParam } from '@/components/firstui/fui-types/index.uts';
export default {
data() {
return {
menus: [{
text: '机架式服务器',
value: '1'
}, {
text: '笔记本',
value:'2'
}, {
text: '平板电脑',
value: '3'
}, {
text: '台式机+显示器',
value: '3'
}] as FuiDropdownMenuOptionParam[],
assets: '',
assetsShow: false
}
},
methods: {
assetsTap() {
(this.$refs['ddlAssets'] as FuiDropdownListComponentPublicInstance).show()
this.assetsShow = true;
},
assetsItemClick(e : FuiDropdownMenuOptionParam) {
console.log(JSON.stringify(e))
this.assets = e.text
this.assetsClose()
},
assetsClose() {
this.assetsShow = false;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.fui-flex__center {
display: flex;
flex-direction: row;
align-items: center;
}
.fui-section__title {
margin-left: 32rpx;
}
.fui-filter__icon {
flex-shrink: 0;
transition-property: transform;
transition-duration: .15s;
transition-timing-function: linear;
transform: rotate(0deg);
}
.fui-icon__ani {
transform: rotate(180deg);
}
.fui-list__cell {
flex: 1;
}
.fui-select {
flex: 1;
height: 80rpx;
padding: 32rpx;
position: relative;
box-sizing: border-box;
display: flex;
flex-direction: row;
align-items: center;
}
.fui-input {
font-size: 32rpx;
flex: 1;
padding-right: 8rpx;
pointer-events: none;
}
.fui-select {
border: 0.5px solid #eee;
}
.fui-flex__between {
display: flex;
align-items: center;
justify-content: space-between;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
固定高度、宽度 / 可滚动
通过 height
属性设置下拉菜单高度,width
属性设置下拉菜单宽度,checkboxColor
属性设置选择框选中后颜色,menus
属性设置下拉菜单数据。
<fui-list-cell :highlight="false">
<view class="fui-list__cell fui-flex__center">
<text class="fui-text">问题分类:</text>
<view class="fui-select fui-flex__between" @tap="quesTap">
<input placeholder="请选择" :value="question" class="fui-input" :disabled="true" />
<view class="fui-filter__icon" :class="{'fui-icon__ani':quesShow}">
<fui-icon name="turningdown" :size="32"></fui-icon>
</view>
</view>
</view>
</fui-list-cell>
<fui-dropdown-list :height="600" :width="480" checkboxColor="#FFB703" :menus="menus2" ref="ddlQues"
@onclick="quesItemClick" @close="quesClose"></fui-dropdown-list>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
import { FuiDropdownMenuOptionParam } from '@/components/firstui/fui-types/index.uts';
export default {
data() {
return {
menus2: [{
text: '注册激活'
}, {
text: '站长工具'
}, {
text: '投递文章'
}, {
text: '媒体合作'
}, {
text: '素材相关'
}, {
text: '报告错误'
}, {
text: '论坛事务'
}, {
text: '发布软件'
}, {
text: '网站排行榜'
}, {
text: '其他事务'
}] as FuiDropdownMenuOptionParam[],
question: '',
quesShow: false
}
},
methods: {
quesTap() {
(this.$refs['ddlQues'] as FuiDropdownListComponentPublicInstance).show()
this.quesShow = true;
},
quesItemClick(e : FuiDropdownMenuOptionParam) {
console.log(e)
this.question = e.text
this.quesClose()
},
quesClose() {
this.quesShow = false;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.fui-flex__center {
display: flex;
flex-direction: row;
align-items: center;
}
.fui-section__title {
margin-left: 32rpx;
}
.fui-filter__icon {
flex-shrink: 0;
transition-property: transform;
transition-duration: .15s;
transition-timing-function: linear;
transform: rotate(0deg);
}
.fui-icon__ani {
transform: rotate(180deg);
}
.fui-list__cell {
flex: 1;
}
.fui-select {
flex: 1;
height: 80rpx;
padding: 32rpx;
position: relative;
box-sizing: border-box;
display: flex;
flex-direction: row;
align-items: center;
}
.fui-input {
font-size: 32rpx;
flex: 1;
padding-right: 8rpx;
pointer-events: none;
}
.fui-select {
border: 0.5px solid #eee;
}
.fui-flex__between {
display: flex;
align-items: center;
justify-content: space-between;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Slots
插槽名称 | 说明 |
---|---|
- | - |
# Props
属性名 | 类型 | 说明 | 默认值 | 平台差异说明 |
---|---|---|---|---|
menus | Array<FuiDropdownMenuOptionParam> | 下拉菜单数据,格式见下方说明 | [ ] | - |
height | Number | 下拉菜单高度,单位rpx。大于0时生效 | 0 | - |
width | Number | 下拉菜单宽度,单位rpx。大于0时生效 | 0 | - |
background | String | 下拉菜单背景颜色 | #fff | - |
radius | Number | 下拉菜单圆角值,部分平台若无效果则忽略该属性 | 0 | - |
padding | String | 下拉菜单item项padding值,格式同css | 32rpx 32rpx | - |
isCheckbox | Boolean | 是否显示选择框 | true | - |
checkboxColor | String | 选择框选中后颜色 | #465CFF | - |
borderColor | String | 选择框未选中时边框颜色 | #ccc | - |
isCheckMark | Boolean | 选择框是否只显示对号,无边框背景 | false | - |
checkmarkColor | String | 选择框对号颜色 | #fff | - |
isReverse | Boolean | 选择框与内容是否颠倒排列 | false | - |
splitLine | Boolean | 下拉菜单每项间是否需要分割线 | false | - |
lineColor | String | 分割线颜色 | #eee | - |
iconWidth | Number | 下拉菜单icon宽度,单位rpx。高度与宽度等长 | 48 | - |
size | Number | 下拉菜单字体大小,单位rpx | 32 | - |
color | String | 下拉菜单字体颜色 | #181818 | - |
selectedColor | String | 下拉菜单字体选中后颜色 | - | - |
maskClosable | Boolean | 点击下拉菜单遮罩是否可关闭下拉菜单 | true | - |
maskBackground | String | 下拉菜单遮罩背景色 | rgba(0, 0, 0, 0.6) | - |
zIndex | Number | 下拉菜单层级z-index值 | 1001 | - |
# FuiDropdownMenuOptionParam
/**
* fui-dropdown-menu 下拉菜单 组件 menus属性 参数类型
* @description DropdownMenu 下拉菜单组件 menus属性 参数类型
* @param {string} text {string} 下拉菜单item项显示文本,必选
* @param {string} value {string} 下拉菜单item项文本对应value值,可选
* @param {string} src {string} 下拉菜单item项icon图片地址,可选
* @param {boolean} checked {boolean} 是否选中,可选
* @param {boolean} disabled {boolean} 是否禁用选择,可选
* @param {string} param {string} 自定义参数,可选
* @param {number} index {number} 索引值,点击菜单时内部返回,无需传值
*/
export type FuiDropdownMenuOptionParam = {
text : string;
value ?: string;
src ?: string;
checked ?: boolean;
disabled ?: boolean;
param ?: string;
index ?: number;
}
/*页面引入*/
import { FuiDropdownMenuOptionParam } from '@/components/firstui/fui-types/index.uts';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Events
事件名 | 类型 | 说明 | 回调参数 |
---|---|---|---|
@onclick | (event: FuiDropdownMenuOptionParam) => void | 点击下拉菜单item项时触发 | FuiDropdownMenuOptionParam |
@close | () => void | 点击遮罩层时触发 | - |
# FuiDropdownMenuOptionParam
同上
# Methods
通过 ref 来注册组件引用信息,引用信息将会注册在父组件的$refs对象上。
方法名 | 类型 | 说明 | 传入参数 |
---|---|---|---|
show | ()=>void | 显示下拉菜单 | - |