Skip to content

Commit dd57d1e

Browse files
authored
refactor: skeleton (#6224)
* refactor: skeleton * refactor: skeleton style * chore: modify skeleton demo style
1 parent 158cca7 commit dd57d1e

File tree

12 files changed

+444
-370
lines changed

12 files changed

+444
-370
lines changed

components/skeleton/Avatar.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import classNames from '../_util/classNames';
44
import initDefaultProps from '../_util/props-util/initDefaultProps';
55
import useConfigInject from '../config-provider/hooks/useConfigInject';
66
import Element, { skeletonElementProps } from './Element';
7+
import useStyle from './style';
78

89
export const avatarProps = () => {
910
return {
@@ -23,16 +24,22 @@ const SkeletonAvatar = defineComponent({
2324
}),
2425
setup(props) {
2526
const { prefixCls } = useConfigInject('skeleton', props);
27+
const [wrapSSR, hashId] = useStyle(prefixCls);
2628
const cls = computed(() =>
27-
classNames(prefixCls.value, `${prefixCls.value}-element`, {
28-
[`${prefixCls.value}-active`]: props.active,
29-
}),
29+
classNames(
30+
prefixCls.value,
31+
`${prefixCls.value}-element`,
32+
{
33+
[`${prefixCls.value}-active`]: props.active,
34+
},
35+
hashId.value,
36+
),
3037
);
3138
return () => {
32-
return (
39+
return wrapSSR(
3340
<div class={cls.value}>
3441
<Element {...props} prefixCls={`${prefixCls.value}-avatar`} />
35-
</div>
42+
</div>,
3643
);
3744
};
3845
},

components/skeleton/Button.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import classNames from '../_util/classNames';
44
import useConfigInject from '../config-provider/hooks/useConfigInject';
55
import { initDefaultProps } from '../_util/props-util';
66
import Element, { skeletonElementProps } from './Element';
7+
import useStyle from './style';
78

89
export const skeletonButtonProps = () => {
910
return {
@@ -23,17 +24,23 @@ const SkeletonButton = defineComponent({
2324
}),
2425
setup(props) {
2526
const { prefixCls } = useConfigInject('skeleton', props);
27+
const [wrapSSR, hashId] = useStyle(prefixCls);
2628
const cls = computed(() =>
27-
classNames(prefixCls.value, `${prefixCls.value}-element`, {
28-
[`${prefixCls.value}-active`]: props.active,
29-
[`${prefixCls.value}-block`]: props.block,
30-
}),
29+
classNames(
30+
prefixCls.value,
31+
`${prefixCls.value}-element`,
32+
{
33+
[`${prefixCls.value}-active`]: props.active,
34+
[`${prefixCls.value}-block`]: props.block,
35+
},
36+
hashId.value,
37+
),
3138
);
3239
return () => {
33-
return (
40+
return wrapSSR(
3441
<div class={cls.value}>
3542
<Element {...props} prefixCls={`${prefixCls.value}-button`} />
36-
</div>
43+
</div>,
3744
);
3845
};
3946
},

components/skeleton/Image.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import useConfigInject from '../config-provider/hooks/useConfigInject';
44
import omit from '../_util/omit';
55
import type { SkeletonElementProps } from './Element';
66
import { skeletonElementProps } from './Element';
7+
import useStyle from './style';
78

89
export type SkeletonImageProps = Omit<SkeletonElementProps, 'size' | 'shape' | 'active'>;
910

@@ -16,9 +17,12 @@ const SkeletonImage = defineComponent({
1617
props: omit(skeletonElementProps(), ['size', 'shape', 'active']),
1718
setup(props) {
1819
const { prefixCls } = useConfigInject('skeleton', props);
19-
const cls = computed(() => classNames(prefixCls.value, `${prefixCls.value}-element`));
20+
const [wrapSSR, hashId] = useStyle(prefixCls);
21+
const cls = computed(() =>
22+
classNames(prefixCls.value, `${prefixCls.value}-element`, hashId.value),
23+
);
2024
return () => {
21-
return (
25+
return wrapSSR(
2226
<div class={cls.value}>
2327
<div class={`${prefixCls.value}-image`}>
2428
<svg
@@ -29,7 +33,7 @@ const SkeletonImage = defineComponent({
2933
<path d={path} class={`${prefixCls.value}-image-path`} />
3034
</svg>
3135
</div>
32-
</div>
36+
</div>,
3337
);
3438
};
3539
},

components/skeleton/Input.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import useConfigInject from '../config-provider/hooks/useConfigInject';
55
import type { SkeletonElementProps } from './Element';
66
import Element, { skeletonElementProps } from './Element';
77
import omit from '../_util/omit';
8+
import useStyle from './style';
89

910
export interface SkeletonInputProps extends Omit<SkeletonElementProps, 'size' | 'shape'> {
1011
size?: 'large' | 'small' | 'default';
@@ -21,17 +22,23 @@ const SkeletonInput = defineComponent({
2122
},
2223
setup(props) {
2324
const { prefixCls } = useConfigInject('skeleton', props);
25+
const [wrapSSR, hashId] = useStyle(prefixCls);
2426
const cls = computed(() =>
25-
classNames(prefixCls.value, `${prefixCls.value}-element`, {
26-
[`${prefixCls.value}-active`]: props.active,
27-
[`${prefixCls.value}-block`]: props.block,
28-
}),
27+
classNames(
28+
prefixCls.value,
29+
`${prefixCls.value}-element`,
30+
{
31+
[`${prefixCls.value}-active`]: props.active,
32+
[`${prefixCls.value}-block`]: props.block,
33+
},
34+
hashId.value,
35+
),
2936
);
3037
return () => {
31-
return (
38+
return wrapSSR(
3239
<div class={cls.value}>
3340
<Element {...props} prefixCls={`${prefixCls.value}-input`} />
34-
</div>
41+
</div>,
3542
);
3643
};
3744
},

components/skeleton/Skeleton.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type { SkeletonParagraphProps } from './Paragraph';
99
import Paragraph from './Paragraph';
1010
import useConfigInject from '../config-provider/hooks/useConfigInject';
1111
import Element from './Element';
12+
import useStyle from './style';
1213

1314
/* This only for skeleton internal. */
1415
type SkeletonAvatarProps = Omit<AvatarProps, 'active'>;
@@ -89,6 +90,8 @@ const Skeleton = defineComponent({
8990
}),
9091
setup(props, { slots }) {
9192
const { prefixCls, direction } = useConfigInject('skeleton', props);
93+
const [wrapSSR, hashId] = useStyle(prefixCls);
94+
9295
return () => {
9396
const { loading, avatar, title, paragraph, active, round } = props;
9497
const pre = prefixCls.value;
@@ -152,13 +155,14 @@ const Skeleton = defineComponent({
152155
[`${pre}-active`]: active,
153156
[`${pre}-rtl`]: direction.value === 'rtl',
154157
[`${pre}-round`]: round,
158+
[hashId.value]: true,
155159
});
156160

157-
return (
161+
return wrapSSR(
158162
<div class={cls}>
159163
{avatarNode}
160164
{contentNode}
161-
</div>
165+
</div>,
162166
);
163167
}
164168
return slots.default?.();

components/skeleton/demo/children.vue

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Skeleton contains sub component.
1717
</docs>
1818

1919
<template>
20-
<div class="article">
20+
<a-space direction="vertical" style="width: 100%" :size="16">
2121
<a-skeleton :loading="loading">
2222
<div>
2323
<h4>Ant Design Vue, a design language</h4>
@@ -29,7 +29,7 @@ Skeleton contains sub component.
2929
</div>
3030
</a-skeleton>
3131
<a-button :disabled="loading" @click="showSkeleton">Show Skeleton</a-button>
32-
</div>
32+
</a-space>
3333
</template>
3434
<script lang="ts">
3535
import { defineComponent, ref } from 'vue';
@@ -50,11 +50,3 @@ export default defineComponent({
5050
},
5151
});
5252
</script>
53-
<style scoped>
54-
.article h4 {
55-
margin-bottom: 16px;
56-
}
57-
.article button {
58-
margin-top: 16px;
59-
}
60-
</style>

0 commit comments

Comments
 (0)