Skip to content

Commit 53e925e

Browse files
authored
fix: Replace Truncate.Deprecated with CSS-based truncation (#2374)
The Truncate element as it exists has a bug where it can end up in an infinite loop when truncating to a very small size on mobiles. This makes the course outline view unresponsive on mobile and can lead to a crash. This replaces the Truncate element with some CSS.
1 parent 25830a2 commit 53e925e

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/course-outline/card-header/CardHeader.scss

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,21 @@
55
.item-card-header__title-btn {
66
justify-content: flex-start;
77
padding: 0;
8-
flex: 1 1 0%;
8+
flex: 1 1 0;
99
height: 1.5rem;
1010
margin-right: .25rem;
1111
background: transparent;
1212
color: var(--pgn-color-black);
13+
14+
.truncate-1-line {
15+
-webkit-line-clamp: 1; /* stylelint-disable-line value-no-vendor-prefix */
16+
line-clamp: 1;
17+
overflow: hidden;
18+
text-overflow: ellipsis;
19+
display: -webkit-box; /* stylelint-disable-line value-no-vendor-prefix */
20+
min-width: 100px;
21+
-webkit-box-orient: vertical; /* stylelint-disable-line value-no-vendor-prefix */
22+
}
1323
}
1424

1525
.item-card-button-icon {

src/course-outline/card-header/TitleButton.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
Button,
44
OverlayTrigger,
55
Tooltip,
6-
Truncate,
76
} from '@openedx/paragon';
87
import {
98
ArrowDropDown as ArrowDownIcon,
@@ -48,7 +47,9 @@ const TitleButton = ({
4847
onClick={onTitleClick}
4948
>
5049
{prefixIcon}
51-
<Truncate.Deprecated lines={1} className={`${namePrefix}-card-title mb-0`}>{title}</Truncate.Deprecated>
50+
<span className="truncate-1-line">
51+
{title}
52+
</span>
5253
</Button>
5354
</OverlayTrigger>
5455
);

src/course-outline/card-header/TitleLink.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Link } from 'react-router-dom';
2-
import { Button, Truncate } from '@openedx/paragon';
2+
import { Button } from '@openedx/paragon';
33

44
interface TitleLinkProps {
55
title: string;
@@ -22,7 +22,9 @@ const TitleLink = ({
2222
to={titleLink}
2323
>
2424
{prefixIcon}
25-
<Truncate.Deprecated lines={1} className={`${namePrefix}-card-title mb-0`}>{title}</Truncate.Deprecated>
25+
<span className="truncate-1-line">
26+
{title}
27+
</span>
2628
</Button>
2729
);
2830

0 commit comments

Comments
 (0)