You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
2.9 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="u-toolbar" @touchmove.stop.prevent="noop" v-if="show">
<view class="u-toolbar__cancel__wrapper" hover-class="u-hover-class">
<text
class="u-toolbar__wrapper__cancel"
@tap="cancel"
:style="{
color: cancelColor,
}"
>
{{ cancelText }}
</text>
</view>
<text class="u-toolbar__title u-line-1" v-if="title">{{ title }}</text>
<view class="u-toolbar__confirm__wrapper" hover-class="u-hover-class">
<text
class="u-toolbar__wrapper__confirm"
@tap="confirm"
:style="{
color: confirmColor,
}"
>
{{ confirmText }}
</text>
</view>
</view>
</template>
<script>
/**
* Toolbar 工具条
* @description
* @tutorial https://www.uviewui.com/components/toolbar.html
* @property {Boolean} show 是否展示工具条(默认 true
* @property {String} cancelText 取消按钮的文字(默认 '取消'
* @property {String} confirmText 确认按钮的文字(默认 '确认'
* @property {String} cancelColor 取消按钮的颜色(默认 '#909193'
* @property {String} confirmColor 确认按钮的颜色(默认 '#3c9cff'
* @property {String} title 标题文字
* @event {Function}
* @example
*/
export default {
name: 'SuToolbar',
props: {
// 是否展示工具条
show: {
type: Boolean,
default: true,
},
// 取消按钮的文字
cancelText: {
type: String,
default: '取消',
},
// 确认按钮的文字
confirmText: {
type: String,
default: '确认',
},
// 取消按钮的颜色
cancelColor: {
type: String,
default: '#909193',
},
// 确认按钮的颜色
confirmColor: {
type: String,
default: '#3c9cff',
},
// 标题文字
title: {
type: String,
default: '',
},
},
methods: {
// 点击取消按钮
cancel() {
this.$emit('cancel');
},
// 点击确定按钮
confirm() {
this.$emit('confirm');
},
// 阻止事件冒泡
preventEvent(e) {
e && typeof e.stopPropagation === 'function' && e.stopPropagation();
},
// 空操作
noop(e) {
this.preventEvent(e);
},
},
};
</script>
<style lang="scss" scoped>
.u-toolbar {
height: 42px;
@include flex;
justify-content: space-between;
align-items: center;
&__wrapper {
&__cancel {
color: #111111;
font-size: 15px;
padding: 0 15px;
}
}
&__title {
color: #000000;
padding: 0 60rpx;
font-size: 16px;
flex: 1;
text-align: center;
}
&__wrapper {
&__confirm {
color: #ffffff;
font-size: 15px;
padding: 0 15px;
}
}
}
</style>