Skip to content

Commit 5f9fba5

Browse files
authored
Merge pull request Expensify#67817 from Expensify/youssef_fix_description_html
Allow description to render markdown
2 parents 3333792 + b6a4342 commit 5f9fba5

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

src/components/TextWithTooltip/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, {useState} from 'react';
2+
import RenderHTML from '@components/RenderHTML';
23
import Text from '@components/Text';
34
import Tooltip from '@components/Tooltip';
45
import type TextWithTooltipProps from './types';
@@ -7,7 +8,7 @@ type LayoutChangeEvent = {
78
target: HTMLElement;
89
};
910

10-
function TextWithTooltip({text, shouldShowTooltip, style, numberOfLines = 1}: TextWithTooltipProps) {
11+
function TextWithTooltip({text, shouldShowTooltip, style, numberOfLines = 1, shouldRenderAsHTML}: TextWithTooltipProps) {
1112
const [showTooltip, setShowTooltip] = useState(false);
1213

1314
return (
@@ -30,7 +31,7 @@ function TextWithTooltip({text, shouldShowTooltip, style, numberOfLines = 1}: Te
3031
setShowTooltip(false);
3132
}}
3233
>
33-
{text}
34+
{shouldRenderAsHTML ? <RenderHTML html={text} /> : text}
3435
</Text>
3536
</Tooltip>
3637
);

src/components/TextWithTooltip/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ type TextWithTooltipProps = {
1212

1313
/** Custom number of lines for text wrapping */
1414
numberOfLines?: number;
15+
16+
/** Whether the supplied text can be markdown */
17+
shouldRenderAsHTML?: boolean;
1518
};
1619

1720
export default TextWithTooltipProps;

src/components/TransactionItemRow/DataCells/MerchantCell.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import React from 'react';
1+
import React, {useMemo} from 'react';
22
import TextWithTooltip from '@components/TextWithTooltip';
33
import useThemeStyles from '@hooks/useThemeStyles';
4+
import Parser from '@libs/Parser';
45

56
function MerchantOrDescriptionCell({
67
merchantOrDescription,
@@ -13,11 +14,16 @@ function MerchantOrDescriptionCell({
1314
}) {
1415
const styles = useThemeStyles();
1516

17+
const html = useMemo(() => {
18+
return Parser.replace(merchantOrDescription, {shouldEscapeText: false});
19+
}, [merchantOrDescription]);
20+
1621
return (
1722
<TextWithTooltip
1823
shouldShowTooltip={shouldShowTooltip}
19-
text={merchantOrDescription}
24+
text={html}
2025
style={[!shouldUseNarrowLayout ? styles.lineHeightLarge : styles.lh20, styles.pre, styles.justifyContentCenter, styles.flex1]}
26+
shouldRenderAsHTML
2127
/>
2228
);
2329
}

0 commit comments

Comments
 (0)