Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/obipawan/react-native-hyperlink

A <Hyperlink /> component for react-native that makes urls, fuzzy links, emails etc clickable
https://github.com/obipawan/react-native-hyperlink

autolink fuzzy-links hyperlink link react react-native react-native-web text url

Last synced: 6 days ago
JSON representation

A <Hyperlink /> component for react-native that makes urls, fuzzy links, emails etc clickable

Awesome Lists containing this project

README

        

# react-native-hyperlink
[![NPM version](https://badge.fury.io/js/react-native-hyperlink.svg)](http://badge.fury.io/js/react-native-hyperlink) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/jondot/awesome-react-native#text--rich-content)

A `` component for [react-native](http://facebook.github.io/react-native/) & [react-native-web](https://github.com/necolas/react-native-web) that makes urls, fuzzy links, emails etc clickable

![demo](https://cdn.rawgit.com/obipawan/hyperlink/master/asset/screen.gif)

## Installation
```sh
npm i --save react-native-hyperlink
```

## Props
| name | desc | type | default
| --- | --- | --- | --- |
| `linkify` | [linkify-it](http://markdown-it.github.io/linkify-it/doc/) object, for custom schema | `object` | `require('linkify-it')()`
| `linkStyle` | highlight clickable text with styles | `Text.propTypes.style` |
| `linkText` | A string or a func to replace parsed text | `oneOfType([ string, func ])` |
| `onPress` | Func to handle click over a clickable text with parsed text as arg | `func` |
| `onLongPress` | Func to handle long click over a clickable text with parsed text as arg | `func` |
|`linkDefault`|A platform specific fallback to handle `onPress`. Uses [Linking](https://facebook.github.io/react-native/docs/linking.html). Disabled by default | `bool`
|`injectViewProps`| Func with url as a param to inject props to the clickable component | `func` | `i => ({})`

## Examples
Wrap any component that has `` (works for [nested ](https://facebook.github.io/react-native/docs/text.html#nested-text) text too) in it

```jsx
import Hyperlink from 'react-native-hyperlink'

export const defaultLink = () =>


This text will be parsed to check for clickable strings like https://github.com/obipawan/hyperlink and made clickable.

export const regularText = () =>
alert(url + ", " + text) }>

This text will be parsed to check for clickable strings like https://github.com/obipawan/hyperlink and made clickable.

export const regularTextLongPress = () =>
alert(url + ", " + text) }>

This text will be parsed to check for clickable strings like https://github.com/obipawan/hyperlink and made clickable for long click.

export const nestedText = () =>
alert(url + ", " + text) }>


A nested Text component https://facebook.github.io/react-native/docs/text.html works equally well with https://github.com/obipawan/hyperlink


export const highlightText = () =>


Make clickable strings like https://github.com/obipawan/hyperlink stylable

export const parseAndReplace = () =>
url === 'https://github.com/obipawan/hyperlink' ? 'Hyperlink' : url }
>

Make clickable strings cleaner with https://github.com/obipawan/hyperlink

export const passPropsText = () =>
({
testID: url === 'http://link.com' ? 'id1' : 'id2' ,
style: url === 'https://link.com' ? { color: 'red' } : { color: 'blue' },
//any other props you wish to pass to the component
}) }
>
You can pass props to clickable components matched by url.
This url looks red https://link.com
and this url looks blue https://link2.com

```

### Dependenies
[linkify-it](https://github.com/markdown-it/linkify-it)
### Development

PRs highly appreciated

License
----
MIT License