first
This commit is contained in:
8
packages/badge/index.js
Normal file
8
packages/badge/index.js
Normal file
@ -0,0 +1,8 @@
|
||||
import Badge from './src/main';
|
||||
|
||||
/* istanbul ignore next */
|
||||
Badge.install = function(Vue) {
|
||||
Vue.component(Badge.name, Badge);
|
||||
};
|
||||
|
||||
export default Badge;
|
53
packages/badge/src/main.vue
Normal file
53
packages/badge/src/main.vue
Normal file
@ -0,0 +1,53 @@
|
||||
<template>
|
||||
<div class="el-badge">
|
||||
<slot></slot>
|
||||
<transition name="el-zoom-in-center">
|
||||
<sup
|
||||
v-show="!hidden && (content || content === 0 || isDot)"
|
||||
v-text="content"
|
||||
class="el-badge__content"
|
||||
:class="[
|
||||
'el-badge__content--' + type,
|
||||
{
|
||||
'is-fixed': $slots.default,
|
||||
'is-dot': isDot
|
||||
}
|
||||
]">
|
||||
</sup>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ElBadge',
|
||||
|
||||
props: {
|
||||
value: [String, Number],
|
||||
max: Number,
|
||||
isDot: Boolean,
|
||||
hidden: Boolean,
|
||||
type: {
|
||||
type: String,
|
||||
validator(val) {
|
||||
return ['primary', 'success', 'warning', 'info', 'danger'].indexOf(val) > -1;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
content() {
|
||||
if (this.isDot) return;
|
||||
|
||||
const value = this.value;
|
||||
const max = this.max;
|
||||
|
||||
if (typeof value === 'number' && typeof max === 'number') {
|
||||
return max < value ? `${max}+` : value;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
Reference in New Issue
Block a user