You've already forked guangan-mp
1.0.0
This commit is contained in:
4
uni_modules/uni-fav/components/uni-fav/i18n/en.json
Normal file
4
uni_modules/uni-fav/components/uni-fav/i18n/en.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"uni-fav.collect": "collect",
|
||||
"uni-fav.collected": "collected"
|
||||
}
|
8
uni_modules/uni-fav/components/uni-fav/i18n/index.js
Normal file
8
uni_modules/uni-fav/components/uni-fav/i18n/index.js
Normal file
@ -0,0 +1,8 @@
|
||||
import en from './en.json'
|
||||
import zhHans from './zh-Hans.json'
|
||||
import zhHant from './zh-Hant.json'
|
||||
export default {
|
||||
en,
|
||||
'zh-Hans': zhHans,
|
||||
'zh-Hant': zhHant
|
||||
}
|
4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
Normal file
4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"uni-fav.collect": "收藏",
|
||||
"uni-fav.collected": "已收藏"
|
||||
}
|
4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
Normal file
4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"uni-fav.collect": "收藏",
|
||||
"uni-fav.collected": "已收藏"
|
||||
}
|
161
uni_modules/uni-fav/components/uni-fav/uni-fav.vue
Normal file
161
uni_modules/uni-fav/components/uni-fav/uni-fav.vue
Normal file
@ -0,0 +1,161 @@
|
||||
<template>
|
||||
<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
|
||||
@click="onClick" class="uni-fav">
|
||||
<!-- #ifdef MP-ALIPAY -->
|
||||
<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
|
||||
<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-ALIPAY -->
|
||||
<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
|
||||
v-if="!checked && (star === true || star === 'true')" />
|
||||
<!-- #endif -->
|
||||
<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentFav : contentDefault }}</text>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* Fav 收藏按钮
|
||||
* @description 用于收藏功能,可点击切换选中、不选中的状态
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=864
|
||||
* @property {Boolean} star = [true|false] 按钮是否带星星
|
||||
* @property {String} bgColor 未收藏时的背景色
|
||||
* @property {String} bgColorChecked 已收藏时的背景色
|
||||
* @property {String} fgColor 未收藏时的文字颜色
|
||||
* @property {String} fgColorChecked 已收藏时的文字颜色
|
||||
* @property {Boolean} circle = [true|false] 是否为圆角
|
||||
* @property {Boolean} checked = [true|false] 是否为已收藏
|
||||
* @property {Object} contentText = [true|false] 收藏按钮文字
|
||||
* @property {Boolean} stat 是否开启统计功能
|
||||
* @event {Function} click 点击 fav按钮触发事件
|
||||
* @example <uni-fav :checked="true"/>
|
||||
*/
|
||||
|
||||
import {
|
||||
initVueI18n
|
||||
} from '@dcloudio/uni-i18n'
|
||||
import messages from './i18n/index.js'
|
||||
const { t } = initVueI18n(messages)
|
||||
|
||||
export default {
|
||||
name: "UniFav",
|
||||
// TODO 兼容 vue3,需要注册事件
|
||||
emits: ['click'],
|
||||
props: {
|
||||
star: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
bgColor: {
|
||||
type: String,
|
||||
default: "#eeeeee"
|
||||
},
|
||||
fgColor: {
|
||||
type: String,
|
||||
default: "#666666"
|
||||
},
|
||||
bgColorChecked: {
|
||||
type: String,
|
||||
default: "#007aff"
|
||||
},
|
||||
fgColorChecked: {
|
||||
type: String,
|
||||
default: "#FFFFFF"
|
||||
},
|
||||
circle: {
|
||||
type: [Boolean, String],
|
||||
default: false
|
||||
},
|
||||
checked: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
contentText: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {
|
||||
contentDefault: "",
|
||||
contentFav: ""
|
||||
};
|
||||
}
|
||||
},
|
||||
stat:{
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
contentDefault() {
|
||||
return this.contentText.contentDefault || t("uni-fav.collect")
|
||||
},
|
||||
contentFav() {
|
||||
return this.contentText.contentFav || t("uni-fav.collected")
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
checked() {
|
||||
if (uni.report && this.stat) {
|
||||
if (this.checked) {
|
||||
uni.report("收藏", "收藏");
|
||||
} else {
|
||||
uni.report("取消收藏", "取消收藏");
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onClick() {
|
||||
this.$emit("click");
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" >
|
||||
$fav-height: 25px;
|
||||
|
||||
.uni-fav {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 60px;
|
||||
height: $fav-height;
|
||||
line-height: $fav-height;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
/* #ifdef H5 */
|
||||
cursor: pointer;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.uni-fav--circle {
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.uni-fav-star {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
height: $fav-height;
|
||||
line-height: 24px;
|
||||
margin-right: 3px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.uni-fav-text {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
height: $fav-height;
|
||||
line-height: $fav-height;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user