Skip to content

Commit 79bf7a0

Browse files
committed
feat(skeletonTable): Added skeleton table component.
Updated with the latest table code. updated with composible table. Updated to remove scss file.
1 parent 695905d commit 79bf7a0

File tree

8 files changed

+1508
-0
lines changed

8 files changed

+1508
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react';
2+
import Skeleton, { SkeletonSize } from './Skeleton';
3+
import { render } from '@testing-library/react';
4+
5+
describe('Skeleton component', () => {
6+
Object.values(SkeletonSize).forEach((size) => {
7+
it(`should render correctly - ${size}`, () => {
8+
expect(render(<Skeleton size={size} />)).toMatchSnapshot();
9+
});
10+
});
11+
12+
it('should render correctly without size', () => {
13+
expect(render(<Skeleton />)).toMatchSnapshot();
14+
});
15+
16+
it('should render correctly as dark', () => {
17+
expect(render(<Skeleton isDark />)).toMatchSnapshot();
18+
});
19+
});
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import React from 'react';
2+
import { Skeleton as PFSkeleton, SkeletonProps as PFSkeletonProps } from '@patternfly/react-core';
3+
import clsx from 'clsx';
4+
import { createUseStyles } from 'react-jss';
5+
6+
interface SkeletonSizeInterface {
7+
xs: 'xs';
8+
sm: 'sm';
9+
md: 'md';
10+
lg: 'lg';
11+
}
12+
13+
const skeletonSizeXS = { width: '16% !important' };
14+
15+
const skeletonSizeSM = { width: '33% !important' };
16+
17+
const skeletonSizeMD = { width: '66% !important' };
18+
19+
const skeletonSizeLG = { width: '100% !important' };
20+
21+
const useStyles = createUseStyles({
22+
skeleton: {
23+
'&__xs': skeletonSizeXS,
24+
'&__sm': skeletonSizeSM,
25+
'&__md': skeletonSizeMD,
26+
'&__lg': skeletonSizeLG,
27+
'&.ins-m-dark': {
28+
'--pf-c-skeleton--BackgroundColor': 'var(--pf-global--palette--black-600)',
29+
'--pf-c-skeleton--after--LinearGradientColorStop1': 'var(--pf-global--palette--black-600)',
30+
'--pf-c-skeleton--after--LinearGradientColorStop2': 'var(--pf-global--palette--black-500)',
31+
'--pf-c-skeleton--after--LinearGradientColorStop3': 'var(--pf-global--palette--black-600)',
32+
},
33+
},
34+
});
35+
36+
export const SkeletonSize: SkeletonSizeInterface = { xs: 'xs', sm: 'sm', md: 'md', lg: 'lg' };
37+
38+
export interface SkeletonProps extends Omit<PFSkeletonProps, 'size'> {
39+
size?: keyof SkeletonSizeInterface;
40+
isDark?: boolean;
41+
}
42+
43+
const Skeleton: React.FunctionComponent<SkeletonProps> = ({ size = SkeletonSize.md, isDark = false, className, ...props }) => {
44+
const classes = useStyles();
45+
const skeletonClasses = clsx(classes.skeleton, `skeleton__${size}`, { [`ins-m-dark`]: isDark }, className)
46+
return <PFSkeleton className={skeletonClasses} {...props} />;
47+
}
48+
49+
export default Skeleton;

0 commit comments

Comments
 (0)