Skip to content

Commit c5b63c1

Browse files
Merge pull request #20 from SimformSolutionsPvtLtd/feature/UNT-T8729
Check feasibility and manage to export a single RadialSlider component
2 parents 161e4ee + 0300107 commit c5b63c1

File tree

19 files changed

+221
-322
lines changed

19 files changed

+221
-322
lines changed

README.md

Lines changed: 78 additions & 78 deletions
Large diffs are not rendered by default.

example/src/modules/RadialVariant/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ const RadialVariant = () => {
2121
</VariantCard>
2222
<VariantCard>
2323
<RadialSlider
24+
variant={'radial-circle-slider'}
2425
value={speed}
2526
min={0}
2627
max={200}
2728
lineColor={Colors.darkGrey}
2829
sliderTrackColor={Colors.darkGrey}
2930
onChange={setSpeed}
30-
variant="radial-circle-slider"
3131
/>
3232
</VariantCard>
3333
</View>

example/src/modules/SpeedoMeterVariant/index.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState, useEffect } from 'react';
22
import { StyleSheet, TouchableOpacity, View, Text } from 'react-native';
3-
import { SpeedoMeter } from 'react-native-radial-slider';
3+
import { RadialSlider } from 'react-native-radial-slider';
44
import VariantCard from '../../components/VariantCard';
55
import { Colors } from '../../theme';
66

@@ -57,7 +57,8 @@ const SpeedoMeterVariant = () => {
5757
/>
5858
</View>
5959
<VariantCard>
60-
<SpeedoMeter
60+
<RadialSlider
61+
variant={'speedometer'}
6162
value={speed}
6263
min={0}
6364
max={200}
@@ -67,13 +68,13 @@ const SpeedoMeterVariant = () => {
6768
/>
6869
</VariantCard>
6970
<VariantCard>
70-
<SpeedoMeter
71+
<RadialSlider
72+
variant={'speedometer-marker'}
7173
value={speed}
7274
min={0}
7375
max={200}
7476
onChange={setSpeed}
7577
lineColor={Colors.darkGrey}
76-
variant="speedometer-marker"
7778
/>
7879
</VariantCard>
7980
</View>

src/components/RadialSlider/CenterContent.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { View, Text } from 'react-native';
22
import React from 'react';
33
import { styles } from './styles';
4-
import type { SpeedoMeterProps } from './types';
4+
import type { CenterContentProps } from './types';
55

6-
const CenterContent = (props: SpeedoMeterProps) => {
6+
const CenterContent = (props: CenterContentProps) => {
77
const {
88
title,
99
subTitle,
@@ -17,26 +17,28 @@ const CenterContent = (props: SpeedoMeterProps) => {
1717
isHideValue,
1818
value,
1919
centerContentStyle,
20-
hideStyle,
20+
unitValueContenStyle,
2121
} = props;
2222

2323
return (
2424
<View style={[styles.hideCenterContent, centerContentStyle]}>
2525
{!isHideTitle && (
26-
<Text style={[titleStyle, styles.helperText]}>{title}</Text>
26+
<Text style={[styles.helperText, styles.subTitleWidth, titleStyle]}>
27+
{title}
28+
</Text>
2729
)}
2830
{!isHideValue && (
29-
<View style={[styles.hideValue, hideStyle]}>
30-
<Text style={[styles.valueText, valueStyle, styles.large_header]}>
31+
<View style={[styles.hideValue, unitValueContenStyle]}>
32+
<Text style={[styles.valueText, styles.large_header, valueStyle]}>
3133
{value}
3234
</Text>
33-
<Text style={[styles.valueUnit, unitStyle, styles.helperText]}>
35+
<Text style={[styles.valueUnit, styles.helperText, unitStyle]}>
3436
{unit}
3537
</Text>
3638
</View>
3739
)}
3840
{!isHideSubtitle && (
39-
<Text style={[subTitleStyle, styles.helperText, styles.subTitleWidth]}>
41+
<Text style={[styles.helperText, styles.subTitleWidth, subTitleStyle]}>
4042
{subTitle}
4143
</Text>
4244
)}

src/components/RadialSlider/LineContent.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ const LineContent = (props: RadialSliderProps & typeof defaultProps) => {
1717
min,
1818
max,
1919
markerValue,
20-
dynamicMarker,
2120
isHideMarkerLine,
2221
fixedMarker,
2322
value,
@@ -61,13 +60,7 @@ const LineContent = (props: RadialSliderProps & typeof defaultProps) => {
6160
};
6261

6362
const markIndex = Math.floor(
64-
(((((!dynamicMarker
65-
? fixedMarker
66-
? (value as number)
67-
: (markerValue as number)
68-
: value) -
69-
min) *
70-
100) /
63+
(((((!fixedMarker ? (markerValue as number) : value) - min) * 100) /
7164
(max - min)) *
7265
lineCount) /
7366
100

src/components/RadialSlider/MarkerValueContent.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ const MarkerValueContent = (
1313
min,
1414
max,
1515
markerValue,
16-
dynamicMarker,
1716
fixedMarker,
1817
markerValueInterval,
1918
value,
@@ -27,13 +26,7 @@ const MarkerValueContent = (
2726
<>
2827
{marks.map((mark, index) => {
2928
const markIndex = Math.floor(
30-
(((((!dynamicMarker
31-
? fixedMarker
32-
? (value as number)
33-
: (markerValue as number)
34-
: value) -
35-
min) *
36-
100) /
29+
(((((!fixedMarker ? (markerValue as number) : value) - min) * 100) /
3730
(max - min)) *
3831
lineCount) /
3932
100

src/components/RadialSlider/NeedleContent.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ const NeedleContent = (
3131

3232
const needleRotation = activeIndex < 50 ? 122 : 119;
3333

34+
const circleSize = Math.round(radius / markerCircleSize) * 2;
35+
36+
const dynamicNeedleHeight = (needleHeight / radius) * 100 + 5;
37+
3438
return (
3539
<G
3640
key={_value}
@@ -40,13 +44,15 @@ const NeedleContent = (
4044
x={markerPositionX}
4145
y={markerPositionY}>
4246
<Circle
43-
r={markerCircleSize}
47+
r={circleSize}
4448
cx={radius}
4549
cy={radius}
4650
fill={markerCircleColor}
4751
/>
4852
<Polygon
49-
points={`97, 118 103, 118 100, ${needleHeight}`}
53+
points={`97, 118 103, 118 100, ${dynamicNeedleHeight}`}
54+
x={radius - 100}
55+
y={radius - 100}
5056
fill={needleBackgroundColor}
5157
strokeWidth={needleBorderWidth}
5258
stroke={needleColor}

src/components/RadialSlider/RadialSlider.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import { Colors } from '../../theme';
1515
import { useSilderAnimation, useRadialSlider } from './hooks';
1616
import { defaultProps } from './SliderDefaultProps';
1717
import ButtonContent from './ButtonContent';
18-
import StautsContent from './StautsContent';
1918
import CenterContent from './CenterContent';
2019
import TailText from './TailText';
2120
import LineContent from './LineContent';
@@ -39,7 +38,6 @@ const RadialSlider = (props: RadialSliderProps & typeof defaultProps) => {
3938
min,
4039
max,
4140
isHideSlider,
42-
isHideStatus,
4341
isHideCenterContent,
4442
isHideTailText,
4543
isHideButtons,
@@ -162,8 +160,6 @@ const RadialSlider = (props: RadialSliderProps & typeof defaultProps) => {
162160
)}
163161
</Svg>
164162
<View style={[styles.content, contentStyle]} pointerEvents="box-none">
165-
{/* Status Content */}
166-
{!isHideStatus && <StautsContent {...props} />}
167163
{/* Center Content */}
168164
{!isHideCenterContent && <CenterContent {...props} value={value} />}
169165
{/* Button Content */}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from 'react';
2+
import Constants from '../../constants';
3+
import RadialSlider from './RadialSlider';
4+
import SpeedoMeter from './SpeedoMeter';
5+
import type { RootSliderProps } from './types';
6+
7+
const RootSlider = (props: RootSliderProps) => {
8+
const { variant } = props;
9+
10+
return variant === Constants.speedoMeterMarker ||
11+
variant === Constants.speedometer ? (
12+
<SpeedoMeter {...props} />
13+
) : (
14+
<RadialSlider {...props} />
15+
);
16+
};
17+
18+
export default RootSlider;

src/components/RadialSlider/SliderDefaultProps.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export const defaultProps = {
55
min: 0,
66
max: 100,
77
step: 1,
8-
statusTitle: '',
98
value: 0,
109
title: '',
1110
subTitle: 'Goal',
@@ -23,26 +22,11 @@ export const defaultProps = {
2322
{ stop: '0%', color: Colors.pink },
2423
{ stop: '100%', color: Colors.red },
2524
],
26-
onChange: (_v: number) => null as any,
27-
onComplete: (_v: number) => null as any,
28-
style: {},
29-
statusContainerStyle: {},
30-
statusTitleStyle: {},
31-
statusValueStyle: {},
32-
centerContentStyle: {},
33-
contentStyle: {},
34-
titleStyle: {},
35-
subTitleStyle: {},
36-
valueStyle: {},
37-
unitStyle: {},
38-
buttonContainerStyle: {},
39-
leftIconStyle: {},
40-
rightIconStyle: {},
25+
onChange: (_v: number) => {},
26+
onComplete: (_v: number) => {},
4127
openingRadian: Math.PI / 3,
42-
dynamicMarker: false,
4328
disabled: false,
4429
isHideSlider: false,
45-
isHideStatus: false,
4630
isHideTitle: false,
4731
isHideSubtitle: false,
4832
isHideValue: false,

0 commit comments

Comments
 (0)