Skip to content

Commit e07d8e1

Browse files
Merge pull request #26 from SimformSolutionsPvtLtd/develop
Release v0.0.3
2 parents af602a0 + a7245dc commit e07d8e1

File tree

10 files changed

+47
-7841
lines changed

10 files changed

+47
-7841
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,4 @@ buck-out/
6464

6565
# Library
6666
lib/
67+
yarn.lock

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
# react-native-radial-slider
44

5-
[![npm version](https://img.shields.io/badge/npm%20package-0.0.1-orange)](https://www.npmjs.org/package/react-native-radial-slider) [![Android](https://img.shields.io/badge/Platform-Android-green?logo=android)](https://www.android.com) [![iOS](https://img.shields.io/badge/Platform-iOS-green?logo=apple)](https://developer.apple.com/ios) [![MIT](https://img.shields.io/badge/License-MIT-green)](https://opensource.org/licenses/MIT)
5+
[![npm version](https://img.shields.io/badge/npm%20package-0.0.3-orange)](https://www.npmjs.org/package/react-native-radial-slider) [![Android](https://img.shields.io/badge/Platform-Android-green?logo=android)](https://www.android.com) [![iOS](https://img.shields.io/badge/Platform-iOS-green?logo=apple)](https://developer.apple.com/ios) [![MIT](https://img.shields.io/badge/License-MIT-green)](https://opensource.org/licenses/MIT)
66

77
---
88

9-
This is a pure javascript and react-native-svg based library which provides two variants `Radial Slider` and `Speedo Meter`
9+
This is a pure javascript and react-native-svg based library that provides many variants of `Radial Slider` and `Speedo Meter` including `default`, `radial-circle-slider`, `speedometer` and `speedometer-marker`
10+
1011

1112
Radial Slider allows you to select any specific value from a range of values. It comes with two variants, one is default and which allows selection on a 180-degree arc and the second one is 360-degree which allows selection of values on a complete circle. It can be used to select/set goals, vision, range, etc.
1213

@@ -30,12 +31,20 @@ This library is easy to use and provides you full customization, so you can cust
3031

3132
## Installation
3233

34+
##### 1. Install library and react-native-svg
35+
3336
```bash
3437
$ npm install react-native-radial-slider react-native-svg
3538
# --- or ---
3639
$ yarn add react-native-radial-slider react-native-svg
3740
```
3841

42+
##### 2. Install cocoapods in the ios project
43+
44+
```bash
45+
cd ios && pod install
46+
```
47+
3948
##### Know more about [react-native-svg](https://www.npmjs.com/package/react-native-svg)
4049

4150
# RadialSlider
@@ -124,6 +133,7 @@ export default RadialVariant;
124133
```
125134

126135
# SpeedoMeter
136+
> The speedometer will not take user inputs, when we need to update dynamic values at that time we can use it
127137
128138
- SpeedoMeter has two different variants, speedometer and speedometer-marker
129139
- SpeedoMeter can be used to display the speed of an internet, vehicle, fan etc

example/src/modules/RadialVariant/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import VariantCard from '../../components/VariantCard';
66

77
const RadialVariant = () => {
88
const [speed, setSpeed] = useState(0);
9+
const [circleSliderSpeed, setCircleSliderSpeed] = useState(0);
910

1011
return (
1112
<View style={styles.container}>
@@ -22,12 +23,12 @@ const RadialVariant = () => {
2223
<VariantCard>
2324
<RadialSlider
2425
variant={'radial-circle-slider'}
25-
value={speed}
26+
value={circleSliderSpeed}
2627
min={0}
2728
max={200}
2829
lineColor={Colors.darkGrey}
2930
sliderTrackColor={Colors.darkGrey}
30-
onChange={setSpeed}
31+
onChange={setCircleSliderSpeed}
3132
/>
3233
</VariantCard>
3334
</View>

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-radial-slider",
3-
"version": "0.0.1",
3+
"version": "0.0.3",
44
"description": "React Native component to select or highlight a specific value from a range of values",
55
"homepage": "https://github.com/SimformSolutionsPvtLtd/react-native-radial-slider#readme",
66
"main": "lib/index.js",
@@ -51,12 +51,13 @@
5151
"jest": "^27.4.7",
5252
"lint-staged": "^11.1.2",
5353
"metro-react-native-babel-preset": "^0.67.0",
54+
"patch-package": "^6.4.7",
55+
"prettier": "^2.7.1",
5456
"react": "^17.0.2",
5557
"react-native": "^0.67.1",
5658
"react-native-svg": "^12.1.0",
5759
"react-test-renderer": "^17.0.2",
58-
"typescript": "^4.5.5",
59-
"patch-package": "^6.4.7"
60+
"typescript": "^4.5.5"
6061
},
6162
"peerDependencies": {
6263
"react": "*",

src/components/RadialSlider/ButtonContent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ const ButtonContent = (props: ButtonProps) => {
1818
<Path
1919
d={
2020
buttonType === 'left-btn'
21-
? 'M12.5168 23.7373L20.067 16.1616L27.6172 23.7373'
22-
: 'M12.5168 17.2727L20.067 24.8485L27.6172 17.2727'
21+
? 'M12.5168 17.2727L20.067 24.8485L27.6172 17.2727'
22+
: 'M12.5168 23.7373L20.067 16.1616L27.6172 23.7373'
2323
}
2424
stroke={stroke}
2525
strokeWidth="2.4"

src/components/RadialSlider/RootSlider.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ const RootSlider = (props: RootSliderProps) => {
1010

1111
return variant === Constants.speedoMeterMarker ||
1212
variant === Constants.speedometer ? (
13+
// @ts-ignore
1314
<SpeedoMeter
14-
{...(props as SpeedoMeterProps & typeof defaultSpeedoMeterProps)}
15+
{...(props as SpeedoMeterProps &
16+
typeof defaultSpeedoMeterProps as object)}
1517
/>
1618
) : (
1719
<RadialSlider {...props} />

src/components/RadialSlider/SpeedoMeter.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const SpeedoMeter = (
4141
unitStyle,
4242
value = 0,
4343
unitValueContentStyle,
44+
min,
4445
} = props;
4546

4647
const {
@@ -51,10 +52,14 @@ const SpeedoMeter = (
5152
} = useSilderAnimation(props);
5253

5354
useEffect(() => {
54-
const updateValue = value > max ? max : value;
55-
setValue(updateValue);
56-
// eslint-disable-next-line react-hooks/exhaustive-deps
57-
}, [value]);
55+
if (value < min) {
56+
setValue(min);
57+
} else if (value > max) {
58+
setValue(max);
59+
} else {
60+
setValue(value);
61+
}
62+
}, [max, min, setValue, value]);
5863

5964
const {
6065
svgSize,

src/components/RadialSlider/__tests__/__snapshots__/RadialSlider.test.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4059,7 +4059,7 @@ exports[`RadialSlider component Match Snapshot 1`] = `
40594059
r="20"
40604060
/>
40614061
<RNSVGPath
4062-
d="M12.5168 23.7373L20.067 16.1616L27.6172 23.7373"
4062+
d="M12.5168 17.2727L20.067 24.8485L27.6172 17.2727"
40634063
propList={
40644064
Array [
40654065
"stroke",
@@ -4127,7 +4127,7 @@ exports[`RadialSlider component Match Snapshot 1`] = `
41274127
r="20"
41284128
/>
41294129
<RNSVGPath
4130-
d="M12.5168 17.2727L20.067 24.8485L27.6172 17.2727"
4130+
d="M12.5168 23.7373L20.067 16.1616L27.6172 23.7373"
41314131
propList={
41324132
Array [
41334133
"stroke",

src/components/RadialSlider/hooks/useSilderAnimation.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useRef } from 'react';
1+
import { useState, useRef, useEffect } from 'react';
22
import {
33
PanResponder,
44
GestureResponderEvent,
@@ -42,6 +42,16 @@ const useSilderAnimation = (props: RadialSliderAnimationHookProps) => {
4242
props.value >= min ? props.value || min : min
4343
);
4444

45+
useEffect(() => {
46+
if (props?.value < min) {
47+
setValue(min);
48+
} else if (props?.value > max) {
49+
setValue(max);
50+
} else {
51+
setValue(props.value);
52+
}
53+
}, [max, min, props.value]);
54+
4555
const handlePanResponderGrant = () => {
4656
moveStartValue = prevValue.current;
4757
moveStartRadian = getRadianByValue(

0 commit comments

Comments
 (0)