Skip to content

Commit c43106e

Browse files
authored
Enable text truncation of badges. (#328)
1 parent ce7b38a commit c43106e

File tree

7 files changed

+42
-11
lines changed

7 files changed

+42
-11
lines changed

src/docs/pages/badge/MaxWidth.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { VuiBadge, VuiTooltip } from "../../../lib";
2+
import "./maxWidth.scss";
3+
4+
export const MaxWidth = () => {
5+
return (
6+
<VuiTooltip tip="This text will get truncated">
7+
<VuiBadge color="primary" className="maxWidthBadge">
8+
This text will get truncated
9+
</VuiBadge>
10+
</VuiTooltip>
11+
);
12+
};

src/docs/pages/badge/index.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import { BadgeColors } from "./BadgeColors";
22
import { ClickableBadges } from "./ClickableBadges";
33
import { DismissibleBadges } from "./DismissibleBadges";
44
import { Selection } from "./Selection";
5+
import { MaxWidth } from "./MaxWidth";
56

67
const BadgeColorsSource = require("!!raw-loader!./BadgeColors");
78
const ClickableBadgesSource = require("!!raw-loader!./ClickableBadges");
89
const DismissibleBadgesSource = require("!!raw-loader!./DismissibleBadges");
910
const SelectionSource = require("!!raw-loader!./Selection");
11+
const MaxWidthSource = require("!!raw-loader!./MaxWidth");
1012

1113
export const badge = {
1214
name: "Badge",
@@ -31,6 +33,11 @@ export const badge = {
3133
name: "Selection",
3234
component: <Selection />,
3335
source: SelectionSource.default.toString()
36+
},
37+
{
38+
name: "Max width",
39+
component: <MaxWidth />,
40+
source: MaxWidthSource.default.toString()
3441
}
3542
]
3643
};

src/docs/pages/badge/maxWidth.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.maxWidthBadge {
2+
max-width: 150px;
3+
}

src/docs/pages/flex/Layouts.tsx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
VuiFlexContainer,
66
VuiFlexItem,
77
VuiIcon,
8+
VuiLabel,
89
VuiSpacer,
910
VuiText,
1011
VuiTextColor,
@@ -15,7 +16,7 @@ import { Subsection } from "../../components/Subsection";
1516

1617
export const Layouts = () => (
1718
<>
18-
<Subsection title={"Header layout"}>
19+
<Subsection title="Header layout">
1920
<VuiFlexContainer justifyContent="spaceBetween" alignItems="center">
2021
<VuiFlexItem grow={1}>
2122
<VuiTitle size="m">
@@ -37,14 +38,10 @@ export const Layouts = () => (
3738
</VuiFlexContainer>
3839
</Subsection>
3940

40-
<Subsection title={"Searchbar layout"}>
41+
<Subsection title="Searchbar layout">
4142
<VuiFlexContainer justifyContent="spaceBetween" alignItems="center">
4243
<VuiFlexItem grow={false} truncate>
43-
<VuiText truncate>
44-
<VuiTextColor color="subdued">
45-
<p>Find stuff in your data</p>
46-
</VuiTextColor>
47-
</VuiText>
44+
<VuiLabel>Find stuff in your data</VuiLabel>
4845
</VuiFlexItem>
4946

5047
<VuiFlexItem grow={1}>
@@ -57,7 +54,7 @@ export const Layouts = () => (
5754
</VuiFlexContainer>
5855
</Subsection>
5956

60-
<Subsection title={"Status layout"}>
57+
<Subsection title="Status layout">
6158
<VuiFlexContainer alignItems="center" spacing="xs">
6259
<VuiFlexItem grow={false}>
6360
<VuiIcon color="danger">
@@ -75,9 +72,9 @@ export const Layouts = () => (
7572
</VuiFlexContainer>
7673
</Subsection>
7774

78-
<Subsection title={"Flag layout"}>
75+
<Subsection title="Flag layout">
7976
<VuiFlexContainer alignItems="start" spacing="xs" className="flexExampleFlag">
80-
<VuiFlexItem grow={false}>
77+
<VuiFlexItem grow={false} shrink={0}>
8178
<VuiIcon color="accent">
8279
<BiTestTube />
8380
</VuiIcon>

src/lib/components/badge/Badge.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ export const VuiBadge = ({
5353
</VuiFlexItem>
5454
)}
5555

56-
<VuiFlexItem id={id}>{children}</VuiFlexItem>
56+
<VuiFlexItem id={id}>
57+
<div className="vuiBadge__content">{children}</div>
58+
</VuiFlexItem>
5759

5860
{onClose && (
5961
<VuiFlexItem>

src/lib/components/badge/_index.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
height: min-content !important;
2121
}
2222

23+
.vuiBadge__content {
24+
// text-overflow doesn't work on flexbox elements.
25+
display: block;
26+
overflow: hidden;
27+
white-space: nowrap;
28+
text-overflow: ellipsis;
29+
}
30+
2331
// Color
2432
$color: (
2533
accent: (

src/lib/components/flex/_flexItem.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
display: flex;
33
flex-direction: column;
44
align-items: flex-start;
5+
// Required to enable text truncation within flex items.
6+
min-width: 0;
57
}
68

79
.vuiFlexItem--truncate {

0 commit comments

Comments
 (0)