Skip to content

Commit be5d6bd

Browse files
BrianL3Brian Ledbetter
andauthored
Fixing vote table description text overflows (#261)
Co-authored-by: Brian Ledbetter <[email protected]>
1 parent 82cae1f commit be5d6bd

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

src/components/Tables/MeetingVotesTable/MeetingVotesTable.stories.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,31 @@ SingleLegislationVote.args = {
5050
],
5151
};
5252

53+
export const VoteOnLegislationWithLongDescription = Template.bind({});
54+
VoteOnLegislationWithLongDescription.args = {
55+
votesPage: [
56+
{
57+
matter: {
58+
id: "example-legislation-id",
59+
description:
60+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Urna nec tincidunt praesent semper feugiat nibh. Morbi non arcu risus quis varius quam quisque. Posuere morbi leo urna molestie at elementum eu. Cras adipiscing enim eu turpis egestas pretium aenean pharetra magna. Urna molestie at elementum eu facilisis sed odio. Odio tempor orci dapibus ultrices in iaculis nunc. Sed risus ultricies tristique nulla aliquet enim. Et leo duis ut diam quam nulla porttitor massa id. Lorem ipsum dolor sit amet consectetur. Imperdiet proin fermentum leo vel orci porta non. Dui sapien eget mi proin sed libero enim sed. Amet purus gravida quis blandit turpis cursus. Cras fermentum odio eu feugiat pretium nibh ipsum consequat nisl. Aliquam sem et tortor consequat. Nunc pulvinar sapien et ligula ullamcorper. Ut sem viverra aliquet eget sit amet tellus. A diam sollicitudin tempor id. Id semper risus in hendrerit. Elementum nibh tellus molestie nunc non blandit massa enim nec. Mattis enim ut tellus elementum sagittis. Vitae suscipit tellus mauris a diam maecenas sed. Sem viverra aliquet eget sit. Amet nulla facilisi morbi tempus iaculis urna id. Id interdum velit laoreet id donec ultrices tincidunt arcu. Fermentum iaculis eu non diam. Dis parturient montes nascetur ridiculus mus mauris. Pellentesque massa placerat duis ultricies lacus sed turpis tincidunt. Vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam. Tortor at auctor urna nunc id cursus metus aliquam. Sed vulputate mi sit amet mauris commodo quis imperdiet massa. Rhoncus urna neque viverra justo nec ultrices dui. Senectus et netus et malesuada. Nulla pharetra diam sit amet nisl suscipit adipiscing bibendum est. Cursus eget nunc scelerisque viverra mauris in aliquam sem. Vel facilisis volutpat est velit. Venenatis tellus in metus vulputate eu scelerisque felis. Nec ultrices dui sapien eget. Vitae justo eget magna fermentum iaculis eu non diam phasellus. Risus at ultrices mi tempus imperdiet nulla malesuada. Ut sem nulla pharetra diam sit amet nisl suscipit adipiscing. Aliquet enim tortor at auctor urna nunc id cursus. Posuere sollicitudin aliquam ultrices sagittis orci a.",
61+
name: "IRC 8",
62+
},
63+
date: new Date(),
64+
council_decision: generateCouncilDecision(),
65+
votes: generateVotes(),
66+
},
67+
],
68+
};
69+
5370
export const SingleBrokenLegislationRow = Template.bind({});
5471
SingleBrokenLegislationRow.args = {
5572
votesPage: [
5673
{
5774
matter: {
5875
id: "example-legislation-id",
59-
description: "A description of the legislation",
76+
description:
77+
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
6078
name: "IRC 189",
6179
},
6280
date: new Date(),

src/components/Tables/MeetingVotesTableRow/MeetingVotesTableRow.tsx

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import React, { useState } from "react";
2+
import styled from "@emotion/styled";
3+
24
import DecisionResult from "../../Shared/DecisionResult";
35
import { EVENT_MINUTES_ITEM_DECISION, VOTE_DECISION } from "../../../models/constants";
46
import { TAG_CONNECTOR } from "../../../constants/StyleConstants";
@@ -28,6 +30,17 @@ type MeetingVotesTableRowProps = {
2830
columnDistribution: string[];
2931
};
3032

33+
const DescriptionBlock = styled.p<{ minified: boolean; linesToShow: number }>((props) => ({
34+
overflow: "hidden",
35+
"text-overflow": "ellipsis",
36+
display: "-webkit-box",
37+
"-webkit-line-clamp": props.minified
38+
? `${props.linesToShow}`
39+
: "none" /* number of lines to show, 'none' means no limit */,
40+
"line-clamp": props.minified ? `${props.linesToShow}` : "none",
41+
"-webkit-box-orient": "vertical",
42+
}));
43+
3144
function VoteCell(votes: IndividualMeetingVote[], isMobile: boolean) {
3245
const [expanded, setExpanded] = useState(false);
3346
let votesFor = 0;
@@ -114,6 +127,7 @@ const MeetingVotesTableRow = ({
114127
columnNames,
115128
columnDistribution,
116129
}: MeetingVotesTableRowProps) => {
130+
const [minified, setMinified] = useState(true);
117131
const isMobile = useMediaQuery({ query: `(max-width: ${screenWidths.tablet})` });
118132

119133
return (
@@ -129,7 +143,17 @@ const MeetingVotesTableRow = ({
129143
{legislationName}
130144
</p>
131145
</Link>
132-
{!isMobile && <p>{legislationDescription}</p>}
146+
{!isMobile && (
147+
<DescriptionBlock
148+
onClick={() => {
149+
setMinified(!minified);
150+
}}
151+
minified={minified}
152+
linesToShow={3}
153+
>
154+
{legislationDescription}
155+
</DescriptionBlock>
156+
)}
133157
</div>
134158
<DecisionResult result={councilDecision} />
135159
{VoteCell(votes, isMobile)}

0 commit comments

Comments
 (0)