# @alentoma/react-native-selectable-text

> React Native component used to provide the features of pass different context menu items and events

Latest version **1.6.0** (published 2022-11-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install @alentoma/react-native-selectable-text
pnpm add @alentoma/react-native-selectable-text
yarn add @alentoma/react-native-selectable-text
bun add @alentoma/react-native-selectable-text
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.6.0 |
| Published | 2022-11-24 |
| First published | 2021-08-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 2.1 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Astrocoders |
| Maintainers | alen.toma |
| Keywords | react-native |

## Links

- npm: https://www.npmjs.com/package/@alentoma/react-native-selectable-text
- Homepage: https://github.com/alentoma/react-native-selectable-text
- npm.io page: https://npm.io/package/@alentoma/react-native-selectable-text

## Dependencies (2)

- [uuid](https://npm.io/package/uuid.md) *
- [fast-memoize](https://npm.io/package/fast-memoize.md) *

## Recent versions

- 1.6.0 (latest) — 2022-11-24
- 1.5.9 — 2022-06-20
- 1.5.8 — 2022-06-17
- 1.5.7 — 2022-06-16
- 1.5.6 — 2022-04-07
- 1.5.5 — 2022-03-18
- 1.5.4 — 2021-09-08
- 1.5.3 — 2021-08-14
- 1.5.2 — 2021-08-13
- 1.5.1 — 2021-08-13

## README

# react-native-selectable-text

This is the updated version of @astrocoders/react-native-selectable-text.
## Demo

### Android

<img src="https://github.com/Astrocoders/react-native-selectable-text/raw/master/Demo/demo_android.gif" width="350px" />

### iOS

<img src="https://user-images.githubusercontent.com/16995184/54835973-055e7480-4ca2-11e9-8d55-c4f7a67c2847.gif" width="350px" />

## Usage

```javascript
import { SelectableText } from "@alentoma/react-native-selectable-text";

// Use normally, it is a drop-in replacement for react-native/Text
<SelectableText
  menuItems={["Foo", "Bar"]}
  /* 
    Called when the user taps in a item of the selection menu:
    - eventType: (string) is the label
    - content: (string) the selected text portion
    - selectionStart: (int) is the start position of the selected text
    - selectionEnd: (int) is the end position of the selected text
   */
  onSelection={({ eventType, content, selectionStart, selectionEnd }) => {}}
  value="I crave star damage"
/>;
```

## Getting started

`$ npm install @alentoma/react-native-selectable-text --save`


### Manual installation

Create react-native.config.js in the root directory and execlude @alentoma/react-native-selectable-text from linking

```
module.exports = {
    dependencies: {
        "@alentoma/react-native-selectable-text": {
            platforms: {
                android: null // disable Android platform, other platforms will still autolink if provided,
                ios: null // disable IOS platform, other platforms will still autolink if provided
            }
        }
    }
}

```

#### iOS - Binary Linking (Alternative 1)

1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `@alentoma/react-native-selectable-text` and add `RNSelectableText.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libRNSelectableText.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
4. Run your project (`Cmd+R`)<

#### iOS - Pods (Alternative 2)

1. Add `pod 'RNSelectableText', :path => '../node_modules/@alentoma/react-native-selectable-text/ios/RNSelectableText.podspec'` to your projects podfile
2. run `pod install`

#### Android

1. Open up `android/app/src/main/java/[...]/MainActivity.java`

- Add `import com.alentoma.selectabletext.RNSelectableTextPackage;` to the imports at the top of the file
- Add `new RNSelectableTextPackage()` to the list returned by the `getPackages()` method

2. Append the following lines to `android/settings.gradle`:
   ```
   include ':react-native-selectable-text'
   project(':react-native-selectable-text').projectDir = new File(rootProject.projectDir, 	'../node_modules/@alentoma/react-native-selectable-text/android')
   ```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
   ```
     implementation project(':react-native-selectable-text')
   ```

## Props
| name | description | type | default |
|--|--|--|--|
| **value** | text content | string | "" |
| **onSelection** | Called when the user taps in a item of the selection menu | ({ eventType: string, content: string, selectionStart: int, selectionEnd: int }) => void | () => {} |
| **menuItems** | context menu items | array(string) | [] |
| **style** | additional styles to be applied to text | Object | null |
| **highlights** | array of text ranges that should be highlighted with an optional id | array({ id: string, start: int, end: int }) | [] |
| **highlightColor** | highlight color |string | null |
| **onHighlightPress** | called when the user taps the highlight  |(id: string) => void | () => {} |
| **appendToChildren** | element to be added in the last line of text | ReactNode | null |
| **TextComponent** | Text component used to render `value` | ReactNode | <Text> |
| **textValueProp** | text value prop for TextComponent. Should be used when passing TextComponent. Defaults to 'children' which works for <Text> | string | 'children' |
| **textComponentProps** | additional props to pass to TextComponent | object | null |

---
_Source: https://npm.io/package/@alentoma/react-native-selectable-text · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
