40 lines
644 B
Vue
40 lines
644 B
Vue
![]() |
<template>
|
||
|
<view
|
||
|
class="cl-skeleton"
|
||
|
:class="{
|
||
|
'is-loading': loading,
|
||
|
}"
|
||
|
:style="[baseStyle, loading && loadingStyle]"
|
||
|
>
|
||
|
<view class="cl-skeleton__inner" v-show="!loading">
|
||
|
<slot></slot>
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script lang="ts">
|
||
|
import { type PropType, type StyleValue, defineComponent } from "vue";
|
||
|
import { useStyle } from "../../hooks";
|
||
|
|
||
|
export default defineComponent({
|
||
|
name: "cl-skeleton",
|
||
|
|
||
|
props: {
|
||
|
loading: {
|
||
|
type: Boolean,
|
||
|
default: true,
|
||
|
},
|
||
|
loadingStyle: {
|
||
|
type: Object as PropType<StyleValue>,
|
||
|
default: () => ({}),
|
||
|
},
|
||
|
},
|
||
|
|
||
|
setup() {
|
||
|
return {
|
||
|
...useStyle(),
|
||
|
};
|
||
|
},
|
||
|
});
|
||
|
</script>
|