| 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
 | | <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="[ |  |           type ? 'el-badge__content--' + type : null, |  |           { |  |             '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> | 
 |