Skip to content

Commit 8355050

Browse files
committed
update source code
1 parent 9dd874b commit 8355050

File tree

11 files changed

+1764
-0
lines changed

11 files changed

+1764
-0
lines changed

ChineaseREADME.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,11 @@ export default {
327327
|:-----------:|:----------------------------------------:|:------:|:-------:|
328328
| `addressShow` | `[Boolean]`是否显示AddressPicker | Yes | / |
329329

330+
*closeOnClickModal* `[Boolean]`
331+
332+
| prop name | description |required| default |
333+
|:-----------:|:----------------------------------------:|:------:|:-------:|
334+
| `closeOnClickModal` | `[Boolean]`是否通过点击遮罩层来关闭AddressPicker | No | false |
330335

331336
#### emit events
332337
* `ok ` 点击确认按钮的自定义事件,AddressPicker会返回用户当前选择的省市区信息,在自定义事件里传参即可获取

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,11 @@ export default {
332332
|:-----------:|:----------------------------------------:|:------:|:-------:|
333333
| `addressShow` | `[Boolean]`whether show the AddressPicker | Yes | / |
334334

335+
*closeOnClickModal* `[Boolean]`
336+
337+
| prop name | description |required| default |
338+
|:-----------:|:----------------------------------------:|:------:|:-------:|
339+
| `closeOnClickModal` | `[Boolean]`whether close AddressPicker by clicking the mask modal | No | false |
335340

336341
#### emit events
337342
* `ok ` when you click the sure button,the AddressPicker will close and return the address data as the event param.

src/libs/ActionSheet.vue

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
<template>
2+
<div class="ActionSheet">
3+
<transition name="fade">
4+
<div v-if="actionSheet.isShow" @click="closeMask" class="Action_mask"></div>
5+
</transition>
6+
<transition name="animation">
7+
<div v-if="actionSheet.isShow" class="Action_wrap">
8+
<div
9+
class="menu_cell"
10+
v-for="item of actionSheet.menu"
11+
v-html="item.content"
12+
@click="reaction(item.label)"
13+
></div>
14+
<div v-if="cancelMode" @click="hide" class="menu_cell cancel">取消</div>
15+
</div>
16+
</transition>
17+
</div>
18+
</template>
19+
20+
<script>
21+
export default{
22+
/**
23+
* 使用:
24+
* 1.必须传一个props:'actionSheet',对象,包括:isShow,menu等键值
25+
* menu是一个数组,数组项必须是一个对象,必须有两个键值对,label和content。
26+
* 1.label必须为字符串,当label为title时,表示是actionSheet的标题,此时不返回emit事件,
27+
* 如果不为title,label的值就是返回的emit事件名称
28+
* 2.content可以为字符串也可以是html标签,表示actionSheet每一项的内容。
29+
* isShow必须是布尔值
30+
* 2.可选一个closeOnClickModal,布尔值,默认false,是否通过点击mask关闭弹窗
31+
* 3.可选一个cancelMode,布尔值,默认false,是否显示'取消'菜单项
32+
* 4.自定义cancel事件,只有在cancelMode为true才有效
33+
* 表示当actionSheet组件点击'取消'菜单项的操作,组件本身会关闭弹窗然后传递给父组件事件
34+
* 其余菜单项的自定义事件名称由menu中每个对象的label决定,例如:
35+
* label:'del',只需要在父组件上添加@del即可接受点击'del'菜单项返回的事件
36+
*
37+
*/
38+
name:'ActionSheet',
39+
props:{
40+
cancelMode:{
41+
type:Boolean,
42+
default:false
43+
},
44+
actionSheet:{
45+
type:Object,
46+
required:true
47+
},
48+
closeOnClickModal:{
49+
type:Boolean,
50+
default:false
51+
}
52+
},
53+
methods:{
54+
hide(){
55+
this.actionSheet.isShow = false;
56+
this.$emit('cancel')
57+
},
58+
closeMask(){
59+
if(this.closeOnClickModal){
60+
this.actionSheet.isShow = false
61+
}
62+
},
63+
reaction(name){
64+
if(name != 'title'){
65+
this.actionSheet.isShow = false;
66+
this.$emit(name)
67+
}
68+
}
69+
}
70+
}
71+
</script>
72+
73+
<style scoped>
74+
.fade-enter-active,.fade-leave-active {
75+
transition: all .35s;
76+
}
77+
.fade-enter,.fade-leave-to {
78+
opacity: 0;
79+
}
80+
.animation-enter-active,.animation-leave-active {
81+
transition: all .35s;
82+
}
83+
.animation-enter,.animation-leave-to {
84+
transform: translate3d(0,100%,0);
85+
}
86+
87+
.Action_mask {
88+
position: fixed;
89+
z-index: 3;
90+
top: 0;
91+
left: 0;
92+
right: 0;
93+
bottom: 0;
94+
background: rgba(0, 0, 0, .7);
95+
}
96+
.Action_wrap {
97+
position: fixed;
98+
left: 0;
99+
bottom:0;
100+
z-index: 100;
101+
width: 100%;
102+
background: #fff;
103+
box-sizing: border-box;
104+
}
105+
.menu_cell{
106+
padding: .22rem 0;
107+
text-align: center;
108+
font-size: .35rem;
109+
color: #000;
110+
border-top: .04rem solid #EFEFF4;
111+
}
112+
.cancel{
113+
border-top: .12rem solid #EFEFF4;
114+
}
115+
</style>

0 commit comments

Comments
 (0)