React Component to find and format links
react-text-format
React component to parse urls, emails, credit cards, phone in text into clickable links or required format.
Installation
yarn add react-text-format
or
npm install react-text-format --save
Props
Name | Type | Default |
---|---|---|
allowedFormats | Array ['URL', 'Email', 'Image', 'Phone', 'CreditCard'] |
['URL', 'Email', 'Phone'] |
linkTarget | String (_blank | _self | _parent | _top | framename) | _self |
LinkDecorator | React.Node (decoratedHref: string, decoratedText: string, linkTarget: string, key: number) | Output Format: <a href="{URL}" target="{target}" rel='noopener' className='rtfLink'> <URL> </a> |
EmailDecorator | React.Node (decoratedHref: string, decoratedText: string,key: number) | Output Format:<a href="mailto: {EMAIL ADDRESS}" className='rtfEmail'> {EMAIL ADDRESS} </a> |
PhoneDecorator | React.Node (decoratedText: string, key: number) | Output Format<a href="tel:{PHONE NUMBER}" className='rtfEmail'> {PHONE NUMBER} </a> |
CreditCardDecorator | React.Node (decoratedText: string, key: number) | Output Format: <span className='rtfCreditCard'> {CREDIT CARD NUMBER} </span> |
ImageDecorator | React.Node (decoratedURL: string, key: number) | Output Format: <img src="{URL OF IMAGE}" rel='noopener' className='rtfImage' /> |
Usage
Basic Implementation
import ReactTextFormat from 'react-text-format';
React.render(
<ReactTextFormat>
This is demo link http://www.google.com
<br/><br/>
This is demo email <span data-email="email@span.com">jago@yahoo.com</span>
<br /><br />
This is demo image https://preview.ibb.co/hqhoyA/lexie-barnhorn-1114350-unsplash.jpg
<br /><br />
This is demo credit Card 5555555555554444
<br /><br />
This is contact Number 2125551212.In this example, we will use this for demo.<br />
This is demo phone Number 123.456.7890 <br />
This is demo phone Number (212) 555 1212 <br />
This is demo phone Number (212) 555-1212 <br />
This is demo phone Number 212-555-1212 ext. 101 <br />
This is demo phone Number 212 555 1212 x101 <br />
<br /><br />
This is an anchor <a href="http://formatter.com">http://formatter.com</a>;
</ReactTextFormat>,
document.body
);
Output:
Advance Implementation
import ReactTextFormat from 'react-text-format';
customLinkDecorator = (
decoratedHref: string,
decoratedText: string,
linkTarget: string,
key: number
): React.Node => {
return (
<a
href={decoratedHref}
key={key}
target={linkTarget}
rel='noopener'
className='customLink'
>
{decoratedText}
</a>
)
}
customImageDecorator = (
decoratedURL: string,
key: number
): React.Node => {
return (
<div>
<img src={decoratedURL} key={key} rel='noopener' width="100" className='customImage' />
</div>
)
}
customEmailDecorator = (
decoratedHref: string,
decoratedText: string,
key: number
): React.Node => {
return (
<a href={decoratedHref} key={key} className='customEmail'>
{decoratedText}
</a>
)
}
customPhoneDecorator = (
decoratedText: string,
key: number
): React.Node => {
return (
<a href={`tel:${decoratedText}`} key={key} className='customPhone'>
{decoratedText}
</a>
)
}
customCreditCardDecorator = (
decoratedText: string,
key: number
): React.Node => {
return (
<i key={key} className='customCreditCard'>
<b>{decoratedText}</b>
</i>
)
}
React.render(
<ReactTextFormat
allowedFormats={['URL', 'Email', 'Image', 'Phone', 'CreditCard']}
LinkDecorator={customLinkDecorator}
EmailDecorator={customEmailDecorator}
PhoneDecorator={customPhoneDecorator}
CreditCardDecorator={customCreditCardDecorator}
ImageDecorator={customImageDecorator}
>
This is demo link http://www.google.com
<br/><br/>
This is demo email <span data-email="email@span.com">jago@yahoo.com</span>
<br /><br />
This is demo image https://preview.ibb.co/hqhoyA/lexie-barnhorn-1114350-unsplash.jpg
<br /><br />
This is demo credit Card 4111111111111111
<br /><br />
This is contact Number 2125551212.In this example, we will use this for demo.<br />
This is demo phone Number 123.456.7890 <br />
This is demo phone Number (212) 555 1212 <br />
This is demo phone Number (212) 555-1212 <br />
This is demo phone Number 212-555-1212 ext. 101 <br />
This is demo phone Number 212 555 1212 x101 <br />
<br /><br />
This is an anchor <a href="http://formatter.com">http://formatter.com</a>;
</ReactTextFormat>,
document.body
);