| 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 | | <template> |  |     <transition :name="fade ? 'fade' : ''"> |  |         <div v-if="!closed" :class="wrapClasses"> |  |             <span :class="iconClasses" v-if="showIcon"> |  |                 <slot name="icon"> |  |                     <Icon :type="iconType"></Icon> |  |                 </slot> |  |             </span> |  |             <span :class="messageClasses"><slot></slot></span> |  |             <span :class="descClasses"><slot name="desc"></slot></span> |  |             <a :class="closeClasses" v-if="closable" @click="close"> |  |                 <slot name="close"> |  |                     <Icon type="ios-close"></Icon> |  |                 </slot> |  |             </a> |  |         </div> |  |     </transition> |  | </template> |  | <script> |  |     import Icon from '../icon'; |  |     import { oneOf } from '../../utils/assist'; |  |   |  |     const prefixCls = 'ivu-alert'; |  |   |  |     export default { |  |         name: 'Alert', |  |         components: { Icon }, |  |         props: { |  |             type: { |  |                 validator (value) { |  |                     return oneOf(value, ['success', 'info', 'warning', 'error']); |  |                 }, |  |                 default: 'info' |  |             }, |  |             closable: { |  |                 type: Boolean, |  |                 default: false |  |             }, |  |             showIcon: { |  |                 type: Boolean, |  |                 default: false |  |             }, |  |             banner: { |  |                 type: Boolean, |  |                 default: false |  |             }, |  |             fade: { |  |                 type: Boolean, |  |                 default: true |  |             } |  |         }, |  |         data () { |  |             return { |  |                 closed: false, |  |                 desc: false |  |             }; |  |         }, |  |         computed: { |  |             wrapClasses () { |  |                 return [ |  |                     `${prefixCls}`, |  |                     `${prefixCls}-${this.type}`, |  |                     { |  |                         [`${prefixCls}-with-icon`]: this.showIcon, |  |                         [`${prefixCls}-with-desc`]: this.desc, |  |                         [`${prefixCls}-with-banner`]: this.banner |  |                     } |  |                 ]; |  |             }, |  |             messageClasses () { |  |                 return `${prefixCls}-message`; |  |             }, |  |             descClasses () { |  |                 return `${prefixCls}-desc`; |  |             }, |  |             closeClasses () { |  |                 return `${prefixCls}-close`; |  |             }, |  |             iconClasses () { |  |                 return `${prefixCls}-icon`; |  |             }, |  |             iconType () { |  |                 let type = ''; |  |   |  |                 switch (this.type) { |  |                     case 'success': |  |                         type = 'ios-checkmark-circle'; |  |                         break; |  |                     case 'info': |  |                         type = 'ios-information-circle'; |  |                         break; |  |                     case 'warning': |  |                         type = 'ios-alert'; |  |                         break; |  |                     case 'error': |  |                         type = 'ios-close-circle'; |  |                         break; |  |                 } |  |   |  |                 if (this.desc) type += '-outline'; |  |                 return type; |  |             } |  |         }, |  |         methods: { |  |             close (e) { |  |                 this.closed = true; |  |                 this.$emit('on-close', e); |  |             } |  |         }, |  |         mounted () { |  |             this.desc = this.$slots.desc !== undefined; |  |         } |  |     }; |  | </script> | 
 |