• Stars
    star
    1,189
  • Rank 39,340 (Top 0.8 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created almost 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

React Native component exposing Slider from iOS and SeekBar from Android

@react-native-community/slider

Latest version released on npmjs Build on GitHub Actions Supported platforms License

React Native component used to select a single value from a range of values.
Currently supported on following platforms:

iOS Android Windows Web
iOS Screenshot Android Screenshot Windows Screenshot Web Screenshot

Installation & Usage

To install this module cd to your project directory and enter the following command:

yarn add @react-native-community/slider

or

npm install @react-native-community/slider --save

If using iOS please remember to install cocoapods by running: npx pod-install

The following code presents the basic usage scenario of this library:

import Slider from '@react-native-community/slider';

<Slider
  style={{width: 200, height: 40}}
  minimumValue={0}
  maximumValue={1}
  minimumTrackTintColor="#FFFFFF"
  maximumTrackTintColor="#000000"
/>

Check out the example project for more examples.


Migrating from the core react-native module

This module was created when the Slider was split out from the core of React Native.
To migrate to this module you need to follow the installation instructions above and then change you imports from:

import { Slider } from 'react-native';

to:

import Slider from '@react-native-community/slider';

React Native Compatibility

To use this library you need to ensure you are using the correct version of React Native.

@react-native-community/slider version Required React Native Version
4.x.x >=0.60; >=0.62 (on Windows);
3.1.x >=0.60
2.x.x >= 0.60
1.x.x <= 0.59

Properties

Property Description Type Required Platform
style Used to style and layout the Slider. See StyleSheet.js and ViewStylePropTypes.js for more info. View.style No
disabled If true the user won't be able to move the slider.
Default value is false.
bool No
maximumValue Initial maximum value of the slider.
Default value is 1.
number No
minimumTrackTintColor The color used for the track to the left of the button.
Overrides the default blue gradient image on iOS.
color No
minimumValue Initial minimum value of the slider.
Default value is 0.
number No
lowerLimit Slide lower limit. The user won't be able to slide below this limit. number No Android, iOS
upperLimit Slide upper limit. The user won't be able to slide above this limit. number No Android, iOS
onSlidingStart Callback that is called when the user picks up the slider.
The initial value is passed as an argument to the callback handler.
function No
onSlidingComplete Callback that is called when the user releases the slider, regardless if the value has changed.
The current value is passed as an argument to the callback handler.
function No
onValueChange Callback continuously called while the user is dragging the slider. function No
step Step value of the slider. The value should be between 0 and (maximumValue - minimumValue). Default value is 0.
On Windows OS the default value is 1% of slider's range (from minimumValue to maximumValue).
number No
maximumTrackTintColor The color used for the track to the right of the button.
Overrides the default gray gradient image on iOS.
color No
testID Used to locate this view in UI automation tests. string No
value Write-only property representing the value of the slider. Can be used to programmatically control the position of the thumb. Entered once at the beginning still acts as an initial value. Changing the value programmatically does not trigger any event.
The value should be between minimumValue and maximumValue, which default to 0 and 1 respectively. Default value is 0.
This is not a controlled component, you don't need to update the value during dragging.
number No
tapToSeek Permits tapping on the slider track to set the thumb position.
Defaults to false on iOS. No effect on Android or Windows.
bool No iOS
inverted Reverses the direction of the slider.
Default value is false.
bool No
vertical Changes the orientation of the slider to vertical, if set to true.
Default value is false.
bool No Windows
thumbTintColor Color of the foreground switch grip.
NOTE: This prop will override the thumbImage prop set, meaning that if both thumbImage and thumbTintColor will be set, image used for the thumb may not be displayed correctly!
color No Android
maximumTrackImage Assigns a maximum track image. Only static images are supported. The leftmost pixel of the image will be stretched to fill the track. Image
.propTypes
.source
No iOS
minimumTrackImage Assigns a minimum track image. Only static images are supported. The rightmost pixel of the image will be stretched to fill the track. Image
.propTypes
.source
No iOS
thumbImage Sets an image for the thumb. Only static images are supported. Needs to be a URI of a local or network image; base64-encoded SVG is not supported. Image
.propTypes
.source
No
trackImage Assigns a single image for the track. Only static images are supported. The center pixel of the image will be stretched to fill the track. Image
.propTypes
.source
No iOS
ref Reference object. MutableRefObject No web
View Inherited View props...

Roadmap and Progress

There's a Project board available here which contains all reported issues organized into columns regarding their status.

If you are interested in knowing whether the issue you reported is handled or just to check the status of a feature you would like to have in Slider, please check the board.

Contributing

The main package implementation is done in the package/ directory. So when implementing changes there, make sure your code passes ESLint and the tests. Run the following to verify:

cd package/
npm run lint
npm run test
  • Remember to cover your changes with tests if possible.

When creating an issue please remember to specify the platform which the issue occurs on.

Running the example app

While developing, you can run the example app to test your changes.

Setup

  • Clone the repository
  • Run npm install in the root directory to install dependencies.
  • Run npm run example-<platform>, where platform can be: ios, android, windows

You can also do this manually by:

  • Installing node modules for example app
  • Installing pods for iOS app
  • Running example app like always: npx react-native run-<platform>

New architecture setup (Fabric)

In order to use the new architecture some extra steps are needed.

iOS

  • Install pods with new arch flag inside example/ios folder: RCT_NEW_ARCH_ENABLED=1 pod install
  • Run npm run example-ios

Android

  • Set newArchEnabled to true inside example/android/gradle.properties
  • Run npm run example-android
If you are using React Native version lower than 0.70, you need to setup manual linking for Android to work.

Inside example/android/app/src/main/jni/Android.mk add these lines:

+ include $(NODE_MODULES_DIR)/@react-native-community/slider/android/build/generated/source/codegen/jni/Android.mk
include $(CLEAR_VARS)
    libreact_codegen_rncore \
+   libreact_codegen_ReactSlider \
    libreact_debug \

Inside example/android/app/src/main/jni/MainComponentsRegistry.cpp update these lines:

#include <react/renderer/components/rncore/ComponentDescriptors.h>
+ #include <react/renderer/components/ReactSlider/ComponentDescriptors.h>

...

MainComponentsRegistry::sharedProviderRegistry() {
  auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();

  // Custom Fabric Components go here. You can register custom
  // components coming from your App or from 3rd party libraries here.
  //
  // providerRegistry->add(concreteComponentDescriptorProvider<
  //        AocViewerComponentDescriptor>());
+ providerRegistry->add(concreteComponentDescriptorProvider<RNCSliderComponentDescriptor>());

  return providerRegistry;
}

Maintainers

Contributors

This module was extracted from react-native core. Please, refer to contributors graph for the complete list of contributors.


Made with ❀️ at Callstack

@callstack/react-native-slider is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. Callstack is a group of React and React Native geeks, contact us at [email protected] if you need any help with these or just want to say hi!

Like the project? βš›οΈ Join the team who does amazing stuff for clients and drives React Native Open Source! πŸ”₯

More Repositories

1

react-native-paper

Material Design for React Native (Android & iOS)
TypeScript
12,811
star
2

linaria

Zero-runtime CSS in JS library
TypeScript
11,659
star
3

haul

Haul is a command line tool for developing React Native apps, powered by Webpack
TypeScript
3,643
star
4

react-native-testing-library

πŸ¦‰ Simple and complete React Native testing utilities that encourage good testing practices.
TypeScript
3,078
star
5

react-native-builder-bob

πŸ‘·β€β™‚οΈ Simple set of CLIs to scaffold and build React Native libraries for different targets
JavaScript
2,771
star
6

react-native-pager-view

React Native wrapper for the Android ViewPager and iOS UIPageViewController.
TypeScript
2,711
star
7

repack

A Webpack-based toolkit to build your React Native application with full support of Webpack ecosystem.
TypeScript
1,471
star
8

reassure

Performance testing companion for React and React Native
TypeScript
1,269
star
9

react-native-ios-kit

The missing React Native UI Kit for iOS
JavaScript
521
star
10

react-theme-provider

A set of utilities that help you create your own React theming system in few easy steps
JavaScript
466
star
11

react-native-fbads

Facebook Audience SDK integration for React Native
Java
439
star
12

super-app-showcase

Monorepository template for super app development with React Native and Re.Pack
JavaScript
413
star
13

react-native-image-editor

A library providing an API for cropping images from the web and the local file system.
Kotlin
373
star
14

react-native-brownfield

Set of helpers to make your brownfield integration smooth and easy.
Kotlin
241
star
15

react-native-paper-login-template

The easiest way to start with your application.
TypeScript
239
star
16

react-native-opentok

React Native OpenTok
Objective-C
202
star
17

component-docs

πŸ“ Simple documentation for your React components
TypeScript
137
star
18

react-native-open-source-board

OSS board with triaged React Native issues.
125
star
19

async-storage

Cross platform storage for React, built on top of AsyncStorage
JavaScript
109
star
20

react-native-material-palette

Bringing Material Palette API to React Native
JavaScript
105
star
21

ts-regex-builder

Maintainable regular expressions for TypeScript and JavaScript.
TypeScript
83
star
22

react-native-multibundle

JavaScript
57
star
23

eslint-config-callstack

ESLint preset extending Flow, Prettier and Jest
JavaScript
52
star
24

repack-examples

Repository with examples for Re.Pack
Java
50
star
25

ai-meeting-transcription

AI Tool for meeting transcriptions
Jupyter Notebook
36
star
26

react-native-socket-mobile

React Native module for the Socket Mobile SDK.
JavaScript
35
star
27

web3-react-native-dapp-wagmi

TypeScript
30
star
28

fabric-library-with-custom-cpp-example

Add custom cpp state to your fabric library
Java
29
star
29

super-app-example

This repository presents a compact super-app example from Callstack's blog, illustrating the use of a monorepo structure together with Re.Pack and Module Federation.
Java
27
star
30

hapi-graphql-boilerplate

JavaScript
26
star
31

react-native-detox-example

Example integration of Detox and Jest
Objective-C
23
star
32

linaria-styled

Zero-runtime CSS in JS library for building React components
18
star
33

web3-cross-platform-dapp

TypeScript
17
star
34

parcel-plugin-linaria

Parcel plugin for Linaria (Experimental)
JavaScript
17
star
35

benz-ql

GraphQL server for the Mercedes APIs
JavaScript
16
star
36

generator-node-module

A Yeoman module to author Node libraries with Prettier, Jest, Flow and Babel.
JavaScript
16
star
37

react-native-snapshot-tests

An example of snapshot testing with React Native
Objective-C
16
star
38

delightful-ux-training-app

JavaScript
15
star
39

universal-react-app

JavaScript
12
star
40

workshop-navigation

Navigation in React Native workshop.
JavaScript
12
star
41

ai-cli

AI assistant in your terminal.
TypeScript
11
star
42

github-comment-bot

JavaScript
10
star
43

news-mini-app-showcase

JavaScript
9
star
44

ReactNativeNotes

Notes demo application showing the abilities of React Native for desktop connected with UWP development
TypeScript
9
star
45

talk-universal-react

JavaScript
8
star
46

ai-summarization

AI summarization tool
Jupyter Notebook
7
star
47

react-native-releases-script

Script to generate changelog for RN releases
7
star
48

web3-react-native-dapp-viem

TypeScript
6
star
49

callstack-hackathon-team-ferran

callstack-hackaton-team-ferran
JavaScript
5
star
50

callstack-hackathon-team-dratwa-wojtek

JavaScript
3
star
51

reassure-examples

Examples for Reassure setup with different frameworks.
JavaScript
3
star
52

web3-react-native-testing

Best practices for testing React Native web3 dapps
TypeScript
3
star
53

DMAIC-Performance-Workshop

Dedicated app for the DMAIC Performance Workshop
TypeScript
2
star
54

.github

Templates for all Callstack OSS projects
2
star
55

react-native-paper-codemod

JavaScript
2
star
56

web3-react-native-siwe

Sign-In With Ethereum (SIWE) implementation in React Native
TypeScript
2
star
57

AppleVisionBGFX

Usage of BGFX in visionOS
C++
2
star
58

sample-weather-app

JavaScript
1
star
59

callstack.github.io

Organisation Github Page
HTML
1
star
60

react-native-visionos-docs

Documentation website for react-native-visionos
JavaScript
1
star
61

workshop-universal-sunshine

Universal React Native & React app based on Sunshine: https://github.com/udacity/Sunshine-Version-2
1
star