Skip to content

Commit a7eeda1

Browse files
WesSouzaarturbien
authored andcommitted
feat(cutout): convert to TypeScript and export types
1 parent c4bb628 commit a7eeda1

File tree

12 files changed

+46
-44
lines changed

12 files changed

+46
-44
lines changed

src/Button/Button.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ menu: Components
66
import { Button } from './Button';
77
import Window from '../Window/Window';
88
import WindowContent from '../WindowContent/WindowContent';
9-
import Cutout from '../Cutout/Cutout';
9+
import { Cutout } from '../Cutout/Cutout';
1010
import Toolbar from '../Toolbar/Toolbar';
1111

1212
# Button

src/Checkbox/Checkbox.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ menu: Components
66
import { Checkbox } from './Checkbox';
77
import Fieldset from '../Fieldset/Fieldset';
88
import { Button } from '../Button/Button';
9-
import Cutout from '../Cutout/Cutout';
9+
import { Cutout } from '../Cutout/Cutout';
1010
import List from '../List/List';
1111
import ListItem from '../ListItem/ListItem';
1212
import Divider from '../Divider/Divider';

src/Cutout/Cutout.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ name: Cutout
33
menu: Components
44
---
55

6-
import Cutout from './Cutout'
7-
import Window from '../Window/Window'
8-
import WindowContent from '../WindowContent/WindowContent'
6+
import { Cutout } from './Cutout';
7+
import Window from '../Window/Window';
8+
import WindowContent from '../WindowContent/WindowContent';
99

1010
# Cutout
1111

src/Cutout/Cutout.spec.js renamed to src/Cutout/Cutout.spec.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import React from 'react';
21
import { render } from '@testing-library/react';
32

4-
import Cutout from './Cutout';
3+
import { Cutout } from './Cutout';
54

65
describe('<Cutout />', () => {
76
it('should render cutout', () => {
87
const { container } = render(<Cutout />);
9-
const cutout = container.firstChild;
8+
const cutout = container.firstElementChild;
109

1110
expect(cutout).toBeInTheDocument();
1211
});
@@ -15,7 +14,7 @@ describe('<Cutout />', () => {
1514
const { container } = render(
1615
<Cutout style={{ backgroundColor: 'papayawhip' }} />
1716
);
18-
const cutout = container.firstChild;
17+
const cutout = container.firstElementChild;
1918

2019
expect(cutout).toHaveAttribute('style', 'background-color: papayawhip;');
2120
});
@@ -34,7 +33,7 @@ describe('<Cutout />', () => {
3433
it('should render custom props', () => {
3534
const customProps = { title: 'cutout' };
3635
const { container } = render(<Cutout {...customProps} />);
37-
const cutout = container.firstChild;
36+
const cutout = container.firstElementChild;
3837

3938
expect(cutout).toHaveAttribute('title', 'cutout');
4039
});

src/Cutout/Cutout.stories.js renamed to src/Cutout/Cutout.stories.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1-
import React from 'react';
2-
1+
import { ComponentMeta } from '@storybook/react';
32
import { Cutout, Window, WindowContent } from 'react95';
3+
import styled from 'styled-components';
4+
5+
const Wrapper = styled.div`
6+
padding: 5rem;
7+
background: ${({ theme }) => theme.desktopBackground};
8+
`;
49

510
export default {
611
title: 'Cutout',
7-
component: Cutout
8-
};
12+
component: Cutout,
13+
decorators: [story => <Wrapper>{story()}</Wrapper>]
14+
} as ComponentMeta<typeof Cutout>;
915

1016
export function Default() {
1117
return (

src/Cutout/Cutout.js renamed to src/Cutout/Cutout.tsx

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
import React from 'react';
2-
import propTypes from 'prop-types';
1+
import React, { forwardRef } from 'react';
32
import styled from 'styled-components';
43
import { insetShadow, createScrollbars } from '../common';
4+
import { CommonStyledProps } from '../types';
55

6-
export const StyledCutout = styled.div`
6+
type CutoutProps = {
7+
children?: React.ReactNode;
8+
shadow?: boolean;
9+
} & React.HTMLAttributes<HTMLDivElement> &
10+
CommonStyledProps;
11+
12+
export const StyledCutout = styled.div<Pick<CutoutProps, 'shadow'>>`
713
position: relative;
814
box-sizing: border-box;
915
padding: 2px;
@@ -44,23 +50,15 @@ const Content = styled.div`
4450
${createScrollbars()}
4551
`;
4652

47-
const Cutout = React.forwardRef(function Cutout(props, ref) {
48-
const { children, ...otherProps } = props;
53+
const Cutout = forwardRef<HTMLDivElement, CutoutProps>(function Cutout(
54+
{ children, shadow = true, ...otherProps },
55+
ref
56+
) {
4957
return (
50-
<StyledCutout ref={ref} {...otherProps}>
58+
<StyledCutout ref={ref} shadow={shadow} {...otherProps}>
5159
<Content>{children}</Content>
5260
</StyledCutout>
5361
);
5462
});
5563

56-
Cutout.defaultProps = {
57-
children: null,
58-
shadow: true
59-
};
60-
61-
Cutout.propTypes = {
62-
children: propTypes.node,
63-
shadow: propTypes.bool
64-
};
65-
66-
export default Cutout;
64+
export { Cutout, CutoutProps };

src/DatePicker/DatePicker.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import React, { Component } from 'react';
21
import propTypes from 'prop-types';
3-
2+
import React, { Component } from 'react';
43
import styled from 'styled-components';
54

6-
import Window from '../Window/Window';
7-
import WindowHeader from '../WindowHeader/WindowHeader';
8-
import WindowContent from '../WindowContent/WindowContent';
9-
import Select from '../Select/Select';
10-
import NumberField from '../NumberField/NumberField';
11-
import Cutout from '../Cutout/Cutout';
125
import { Button } from '../Button/Button';
6+
import { Cutout } from '../Cutout/Cutout';
7+
import NumberField from '../NumberField/NumberField';
8+
import Select from '../Select/Select';
139
import Toolbar from '../Toolbar/Toolbar';
10+
import Window from '../Window/Window';
11+
import WindowContent from '../WindowContent/WindowContent';
12+
import WindowHeader from '../WindowHeader/WindowHeader';
1413

1514
const Calendar = styled(Cutout)`
1615
width: 234px;

src/Fieldset/Fieldset.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ menu: Components
66
import Fieldset from './Fieldset'
77
import Window from '../Window/Window'
88
import WindowContent from '../WindowContent/WindowContent'
9-
import Cutout from '../Cutout/Cutout'
109
import Checkbox from '../Checkbox/Checkbox'
10+
import { Cutout } from '../Cutout/Cutout';
1111

1212
# Fieldset
1313

src/NumberField/NumberField.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ menu: Components
44
---
55

66
import NumberField from './NumberField';
7-
import Cutout from '../Cutout/Cutout'
7+
import { Cutout } from '../Cutout/Cutout';
88

99
# NumberField
1010

src/Select/Select.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ menu: Components
66
import Select from './Select'
77
import Window from '../Window/Window'
88
import WindowContent from '../WindowContent/WindowContent'
9-
import Cutout from '../Cutout/Cutout'
9+
import { Cutout } from '../Cutout/Cutout';
1010

1111
# Select
1212

0 commit comments

Comments
 (0)