All files / app/locale TranslatedLink.tsx

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40146x   146x 146x   146x               146x 25x 25x 25x 25x 25x   25x 25x   25x                             146x  
import React, { FunctionComponent, MouseEventHandler } from 'react';
 
import { preventDefault } from '../common/dom';
import { parseAnchor } from '../common/utility';
 
import withLanguage, { WithLanguageProps } from './withLanguage';
import { TranslatedStringProps } from './TranslatedString';
 
export type TranslatedLinkProps = TranslatedStringProps & {
    testId?: string;
    onClick: MouseEventHandler;
};
 
const TranslatedLink: FunctionComponent<TranslatedLinkProps & WithLanguageProps> = ({
    data,
    id,
    language,
    onClick,
    testId,
}) => {
    const translatedString = language.translate(id, data);
    const parsedString = parseAnchor(translatedString);
 
    return parsedString.length ?
        <>
            { parsedString[0] }
            <a
                data-test={ testId }
                href="#"
                onClick={ preventDefault(onClick) }
            >
                { parsedString[1] }
            </a>
            { parsedString[2] }
        </> :
        <>{ translatedString }</>;
};
 
export default withLanguage(TranslatedLink);