Giter Site home page Giter Site logo

chansuke / react-native-autolink Goto Github PK

View Code? Open in Web Editor NEW

This project forked from joshswan/react-native-autolink

0.0 2.0 0.0 788 KB

Automatic linking of URLs, phone numbers, emails, handles, etc. in strings for React Native

License: MIT License

JavaScript 2.65% TypeScript 97.35%

react-native-autolink's Introduction

React Native AutoLink

Version Downloads Build Status License

Auto-Linking component for React Native. Parses text and wraps URLs, phone numbers, emails, social handles, hashtags, and more with Text nodes and onPress handlers. And it's all fully customizable :)

Installation

npm install react-native-autolink --save

Usage

Simply import the library and pass desired props:

import Autolink from 'react-native-autolink';

class MyComponent extends Component {
  render() {
    return (
      <Autolink
        text="This is the string to parse for urls (https://github.com/joshswan/react-native-autolink), phone numbers (415-555-5555), emails ([email protected]), mentions/handles (@twitter), and hashtags (#exciting)"
        hashtag="instagram"
        mention="twitter"
      />
    );
  }
}

Props

Note: All other props (e.g. numberOfLines, style, etc.) will be passed through to the container component, which is either Text (default) or a custom component supplied to the component prop.

component

Type Required Default Description
React.ComponentType No Text Override the component used as the output container.
<Autolink text={text} component={View} />

email

Type Required Default Description
boolean No true Whether to link emails (mailto:{email}).
<Autolink text={text} email={false} />

hashtag

Type Required Default Description
boolean or string No false Whether to link hashtags to supplied service. Possible values: false (disabled), "facebook", "instagram", "twitter".
<Autolink text={text} hashtag="facebook" />

latlng

Type Required Default Description
boolean No false Whether to link latitude, longitude pairs.

Warning: Still experimental.

<Autolink text={text} latlng />

linkProps

Type Required Default Description
TextProps No {} Attributes applied to link Text components.
<Autolink text={text} linkProps={{ suppressHighlighting: true, testID: 'link' }} />

linkStyle

Type Required Default Description
TextStyle No {} Styles applied to link Text components. Note: Will be overriden if style supplied in linkProps.
<Autolink text={text} linkStyle={{ color: 'blue' }} />

mention

Type Required Default Description
boolean or string No false Whether to link mentions/handles to supplied service. Possible values: false (disabled), "instagram", "soundcloud", "twitter".
<Autolink text={text} mention="instagram" />

onPress

Type Required Default Description
function No Override default link press behavior. Signature: (url: string, match: Match) => void.
<Autolink
  text={text}
  onPress={(url, match) => {
    switch (match.getType()) {
      case 'mention':
        Alert.alert('Mention pressed!');
      default:
        Alert.alert('Link pressed!');
    }
  }}
/>

onLongPress

Type Required Default Description
function No none Handle link long press events. Signature: (url: string, match: Match) => void.
<Autolink
  text={text}
  onLongPress={(url, match) => {
    switch (match.getType()) {
      case 'mention':
        Alert.alert('Mention long pressed!');
      default:
        Alert.alert('Link long pressed!');
    }
  }}
/>

phone

Type Required Default Description
boolean or string No true Whether to link phone numbers. Possible values: false (disabled), true (tel:{number}), "sms" or "text" (sms:{number}).

Note: Currently, only US numbers are supported.

<Autolink text={text} phone="sms" />

renderLink

Type Required Default Description
function No Override default link rendering behavior. Signature: (text: string, match: Match, index: number) => React.ReactNode.

Note: You'll need to handle press logic yourself when using renderLink.

<Autolink
  text={text}
  component={View}
  renderLink={(text, match) => <MyLinkPreviewComponent url={match.getAnchorHref()} />}
/>

renderText

Type Required Default Description
function No Override default text rendering behavior. Signature: (text: string, index: number) => React.ReactNode.
<Autolink
  text={text}
  component={View}
  renderText={(text) => <MyTypographyComponent>{text}</MyTypographyComponent>}
/>

showAlert

Type Required Default Description
boolean No false Whether to display an alert before leaving the app (for privacy or accidental clicks).
<Autolink text={text} showAlert />

stripPrefix

Type Required Default Description
boolean No true Whether to strip protocol from URL link text (e.g. https://github.com -> github.com).
<Autolink text={text} stripPrefix={false} />

stripTrailingSlash

Type Required Default Description
boolean No true Whether to strip trailing slashes from URL link text (e.g. github.com/ -> github.com).
<Autolink text={text} stripTrailingSlash={false} />

text

Type Required Default Description
string Yes The string to parse for links.
<Autolink text={text} />

textProps

Type Required Default Description
TextProps No {} Attributes applied to non-link Text components.
<Autolink text={text} textProps={{ selectable: false }} />

truncate

Type Required Default Description
number No 32 Maximum length of URL link text. Possible values: 0 (disabled), 1+ (maximum length).
<Autolink text={text} truncate={20} />

truncateChars

Type Required Default Description
string No .. Characters to replace truncated URL link text segments with (e.g. github.com/../repo)
<Autolink text={text} truncateChars="**" />

truncateLocation

Type Required Default Description
string No "smart" Override truncation location. Possible values: "smart", "end", "middle".
<Autolink text={text} truncateLocation="end" />

url

Type Required Default Description
boolean or object No true Whether to link URLs. Possible values: false (disabled), true, UrlConfig (see below).
type UrlConfig = {
  // Whether to link URLs prefixed with a scheme (e.g. https://github.com)
  schemeMatches?: boolean;
  // Whether to link URLs prefix with www (e.g. www.github.com)
  wwwMatches?: boolean;
  // Whether to link URLs with TLDs but not scheme or www prefixs (e.g. github.com)
  tldMatches?: boolean;
};
<Autolink text={text} url={false} />
<Autolink text={text} url={{ tldMatches: false }} />

webFallback

Type Required Default Description
boolean No Android: true, iOS: false Whether to link to web versions of services (e.g. Facebook, Instagram, Twitter) for hashtag and mention links when users don't have the respective app installed.

Note: Requires LSApplicationQueriesSchemes on iOS so it is disabled by default on iOS. See Linking docs for more info.

Supported By

Disruptive Labs

License

 Copyright (c) 2016-2020 Josh Swan

 Licensed under the The MIT License (MIT) (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

    https://raw.githubusercontent.com/joshswan/react-native-autolink/master/LICENSE

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 See the License for the specific language governing permissions and
 limitations under the License.

react-native-autolink's People

Contributors

joshswan avatar mikelambert avatar kidqueb avatar arnaudbarre avatar dmitryn avatar jonnyburger avatar orinoco avatar mo22 avatar rayronvictor avatar tikitdo avatar ericboyangan avatar hosoi-appland avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.