refactor(components): refactor skeleton/skeleton-item (#4264)

This commit is contained in:
C.Y.Kun
2021-11-14 22:55:50 +08:00
committed by GitHub
parent 0a9cb6fbad
commit 6363cf03bc
8 changed files with 64 additions and 47 deletions

View File

@@ -1,5 +1,5 @@
import makeMount from '@element-plus/test-utils/make-mount'
import SkeletonItem from '../src/item.vue'
import SkeletonItem from '../src/skeleton-item.vue'
describe('<skeleton-item />', () => {
const mount = makeMount(SkeletonItem, {})

View File

@@ -1,6 +1,6 @@
import { nextTick } from 'vue'
import makeMount from '@element-plus/test-utils/make-mount'
import Skeleton from '../src/index.vue'
import Skeleton from '../src/skeleton.vue'
const AXIOM = 'AXIOM is the best girl'
jest.useFakeTimers()

View File

@@ -1,7 +1,7 @@
import { withInstall, withNoopInstall } from '@element-plus/utils/with-install'
import Skeleton from './src/index.vue'
import SkeletonItem from './src/item.vue'
import Skeleton from './src/skeleton.vue'
import SkeletonItem from './src/skeleton-item.vue'
export const ElSkeleton = withInstall(Skeleton, {
SkeletonItem,
@@ -9,4 +9,5 @@ export const ElSkeleton = withInstall(Skeleton, {
export default ElSkeleton
export const ElSkeletonItem = withNoopInstall(SkeletonItem)
export * from './src/types'
export * from './src/skeleton'
export * from './src/skeleton-item'

View File

@@ -0,0 +1,24 @@
import { buildProps } from '@element-plus/utils/props'
import type SkeletonItem from './skeleton-item.vue'
import type { ExtractPropTypes } from 'vue'
export const skeletonItemProps = buildProps({
variant: {
type: String,
values: [
'circle',
'rect',
'h1',
'h3',
'text',
'caption',
'p',
'image',
'button',
],
default: 'text',
},
} as const)
export type SkeletonItemProps = ExtractPropTypes<typeof skeletonItemProps>
export type SkeletonItemInstance = InstanceType<typeof SkeletonItem>

View File

@@ -7,20 +7,13 @@
<script lang="ts">
import { defineComponent } from 'vue'
import ImgPlaceholder from './image-placeholder.vue'
import type { PropType } from 'vue'
import type { Variants } from './types'
import { skeletonItemProps } from './skeleton-item'
export default defineComponent({
name: 'ElSkeletonItem',
components: {
[ImgPlaceholder.name]: ImgPlaceholder,
},
props: {
variant: {
type: String as PropType<Variants>,
default: 'text',
},
ImgPlaceholder,
},
props: skeletonItemProps,
})
</script>

View File

@@ -0,0 +1,28 @@
import { buildProps } from '@element-plus/utils/props'
import type Skeleton from './skeleton.vue'
import type { ExtractPropTypes } from 'vue'
export const skeletonProps = buildProps({
animated: {
type: Boolean,
default: false,
},
count: {
type: Number,
default: 1,
},
rows: {
type: Number,
default: 3,
},
loading: {
type: Boolean,
default: true,
},
throttle: {
type: Number,
},
} as const)
export type SkeletonProps = ExtractPropTypes<typeof skeletonProps>
export type SkeletonInstance = InstanceType<typeof Skeleton>

View File

@@ -28,34 +28,15 @@
<script lang="ts">
import { defineComponent, computed } from 'vue'
import { useThrottleRender } from '@element-plus/hooks'
import SkeletonItem from './item.vue'
import SkeletonItem from './skeleton-item.vue'
import { skeletonProps } from './skeleton'
export default defineComponent({
name: 'ElSkeleton',
components: {
[SkeletonItem.name]: SkeletonItem,
},
props: {
animated: {
type: Boolean,
default: false,
},
count: {
type: Number,
default: 1,
},
rows: {
type: Number,
default: 3,
},
loading: {
type: Boolean,
default: true,
},
throttle: {
type: Number,
},
},
props: skeletonProps,
setup(props) {
const innerLoading = computed(() => {
return props.loading

View File

@@ -1,10 +0,0 @@
export type Variants =
| 'circle'
| 'rect'
| 'h1'
| 'h3'
| 'text'
| 'caption'
| 'p'
| 'image'
| 'button'