| 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
 | | <template> |  |   <div> |  |     <template v-if="uiLoading"> |  |       <div :class="['el-skeleton', animated ? 'is-animated' : '', ]" v-bind="$attrs"> |  |         <template v-for="i in count"> |  |           <slot v-if="loading" name="template"> |  |             <el-skeleton-item |  |               v-for="item in rows" |  |               :key="`${i}-${item}`" |  |               :class="{ |  |                 'el-skeleton__paragraph': item !== 1, |  |                 'is-first': item === 1, |  |                 'is-last': item === rows && rows > 1, |  |               }" |  |               variant="p" |  |             /> |  |           </slot> |  |         </template> |  |       </div> |  |     </template> |  |     <template v-else> |  |       <slot v-bind="$attrs"></slot> |  |     </template> |  |   </div> |  | </template> |  | <script> |  | export default { |  |   name: 'ElSkeleton', |  |   props: { |  |     animated: { |  |       type: Boolean, |  |       default: false |  |     }, |  |     count: { |  |       type: Number, |  |       default: 1 |  |     }, |  |     rows: { |  |       type: Number, |  |       default: 4 |  |     }, |  |     loading: { |  |       type: Boolean, |  |       default: true |  |     }, |  |     throttle: { |  |       type: Number, |  |       default: 0 |  |     } |  |   }, |  |   watch: { |  |     loading: { |  |       handler(loading) { |  |         if (this.throttle <= 0) { |  |           this.uiLoading = loading; |  |           return; |  |         } |  |         if (loading) { |  |           clearTimeout(this.timeoutHandle); |  |           this.timeoutHandle = setTimeout(() => { |  |             this.uiLoading = this.loading; |  |           }, this.throttle); |  |         } else { |  |           this.uiLoading = loading; |  |         } |  |       }, |  |       immediate: true |  |     } |  |   }, |  |   data() { |  |     return { |  |       uiLoading: this.throttle <= 0 ? this.loading : false |  |     }; |  |   } |  | }; |  | </script> | 
 |