Skip to content

Commit 02b0216

Browse files
committed
refactor the request list/item props and prop type definitions to account for the react forward ref awkwardness
1 parent d11bdfe commit 02b0216

File tree

3 files changed

+45
-40
lines changed

3 files changed

+45
-40
lines changed

src/compounds/RequestItem/RequestItem.jsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import TextBox from '../../components/TextBox/TextBox'
66
import Title from '../../components/Title/Title'
77
import './request-item.css'
88

9-
const RequestItem = React.forwardRef(({ createdAt, description, href, img, title, status, updatedAt }, ref) => {
9+
const RequestItem = React.forwardRef(({ index, request }, ref) => {
10+
const { createdAt, description, href, img, title, status, updatedAt } = request
1011
const { backgroundColor, text, textColor } = status
1112
const image = { ...img, height: 70, width: 70 }
1213

@@ -33,13 +34,16 @@ const RequestItem = React.forwardRef(({ createdAt, description, href, img, title
3334
})
3435

3536
RequestItem.propTypes = {
36-
createdAt: PropTypes.string.isRequired,
37-
description: PropTypes.string.isRequired,
38-
id: PropTypes.number,
39-
img: PropTypes.shape(Image.propTypes).isRequired,
40-
status: PropTypes.shape(Badge.propTypes).isRequired,
41-
title: PropTypes.string.isRequired,
42-
updatedAt: PropTypes.string.isRequired,
37+
index: PropTypes.number,
38+
request: PropTypes.shape({
39+
createdAt: PropTypes.string.isRequired,
40+
description: PropTypes.string.isRequired,
41+
href: PropTypes.string.isRequired,
42+
img: PropTypes.shape(Image.propTypes).isRequired,
43+
status: PropTypes.shape(Badge.propTypes).isRequired,
44+
title: PropTypes.string.isRequired,
45+
updatedAt: PropTypes.string.isRequired,
46+
}).isRequired,
4347
}
4448

4549
export default RequestItem

src/compounds/RequestItem/RequestItem.stories.jsx

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,34 @@ const Template = (args) => <RequestItem {...args} />
1111

1212
export const Default = Template.bind({})
1313
Default.args = {
14-
createdAt: 'September 9, 2022',
15-
description: 'Does the Company offer services related to Flow Cytometry?',
16-
href: '/request/F575C4',
17-
img: defaultImage,
18-
title: 'F575C4: Assay Depot Coffee Mug',
19-
status: {
20-
text: 'Vendor Review',
21-
},
22-
updatedAt: 'September 9, 2022 at 9:21 am',
14+
index: 0,
15+
request: {
16+
createdAt: 'September 9, 2022',
17+
description: 'Does the Company offer services related to Flow Cytometry?',
18+
href: '/request/F575C4',
19+
img: defaultImage,
20+
title: 'F575C4: Assay Depot Coffee Mug',
21+
status: {
22+
text: 'Vendor Review',
23+
},
24+
updatedAt: 'September 9, 2022 at 9:21 am',
25+
}
2326
}
2427

2528
export const Alternate = Template.bind({})
2629
Alternate.args = {
27-
createdAt: 'September 9, 2022',
28-
description: 'Does the Company offer services related to Flow Cytometry?',
29-
href: '/request/F575C4',
30-
img: defaultImage,
31-
title: 'F575C4: Assay Depot Coffee Mug',
32-
status: {
33-
backgroundColor: '#DEAF17',
34-
text: 'Work In Progress',
35-
textColor: '#FFFFFF',
36-
},
37-
updatedAt: 'November 16, 2022 at 4:45 pm',
30+
index: 1,
31+
request: {
32+
createdAt: 'September 9, 2022',
33+
description: 'Does the Company offer services related to Flow Cytometry?',
34+
href: '/request/F575C4',
35+
img: defaultImage,
36+
title: 'F575C4: Assay Depot Coffee Mug',
37+
status: {
38+
backgroundColor: '#DEAF17',
39+
text: 'Work In Progress',
40+
textColor: '#FFFFFF',
41+
},
42+
updatedAt: 'November 16, 2022 at 4:45 pm',
43+
}
3844
}

src/compounds/RequestList/RequestList.jsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,13 @@ import RequestItem from '../RequestItem/RequestItem'
77
const RequestList = ({ requests }) => (
88
<>
99
<Title title='My Requests' size='medium' />
10-
{requests.map((req) => (
11-
<Link key={req.id} href={`${req.href}`} passHref legacyBehavior>
12-
<RequestItem
13-
createdAt={req.createdAt}
14-
description={req.description}
15-
img={req.img}
16-
title={req.title}
17-
status={req.status}
18-
updatedAt={req.updatedAt}
19-
/>
20-
</Link>
21-
))}
10+
<div className='rounded overflow-hidden'>
11+
{requests.map((req, index) => (
12+
<Link key={req.id} href={`${req.href}`} passHref legacyBehavior>
13+
<RequestItem request={req} index={index} />
14+
</Link>
15+
))}
16+
</div>
2217
</>
2318
)
2419

0 commit comments

Comments
 (0)