related-ui-components 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/app.js +4 -5
- package/lib/module/app.js.map +1 -1
- package/lib/module/components/ProgressBar/CircularProgressBar.js +35 -14
- package/lib/module/components/ProgressBar/CircularProgressBar.js.map +1 -1
- package/lib/typescript/src/components/ProgressBar/CircularProgressBar.d.ts +1 -2
- package/lib/typescript/src/components/ProgressBar/CircularProgressBar.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/app.tsx +1 -1
- package/src/components/ProgressBar/CircularProgressBar.tsx +47 -51
package/lib/module/app.js
CHANGED
|
@@ -43,13 +43,12 @@ const App = () => {
|
|
|
43
43
|
}), /*#__PURE__*/_jsx(SafeAreaView, {
|
|
44
44
|
style: styles.appContainer,
|
|
45
45
|
children: /*#__PURE__*/_jsx(CircularProgressBar, {
|
|
46
|
-
progress:
|
|
47
|
-
customText: 'بلاتينم',
|
|
46
|
+
progress: 0,
|
|
48
47
|
totalSteps: 4,
|
|
49
|
-
currentStep:
|
|
50
|
-
size:
|
|
48
|
+
currentStep: 1,
|
|
49
|
+
size: 43,
|
|
51
50
|
strokeWidth: 2,
|
|
52
|
-
progressColor: "
|
|
51
|
+
progressColor: "blue"
|
|
53
52
|
})
|
|
54
53
|
})]
|
|
55
54
|
})
|
package/lib/module/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","lightTheme","RelatedProvider","useTheme","CircularProgressBar","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","Array","from","length","_","i","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","
|
|
1
|
+
{"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","lightTheme","RelatedProvider","useTheme","CircularProgressBar","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","Array","from","length","_","i","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","totalSteps","currentStep","size","strokeWidth","progressColor","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAeC,QAAQ,QAAQ,OAAO;AAClD,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAkC,cAAc;AACV;AAClF,SAASC,sBAAsB,QAAQ,8BAA8B;AAarE,SAAoBC,UAAU,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,kBAAS;AAC1E,OAAOC,mBAAmB,MAAM,iDAA8C;AAE9E,SAASC,wBAAwB,QAAQ,qBAAY;AACrD,SAASC,gBAAgB,QAAQ,gCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAIlE,MAAMC,UAAU,GAAGC,KAAK,CAACC,IAAI,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAC,EAAE,CAACC,CAAC,EAAEC,CAAC,MAAM;EACvDC,EAAE,EAAE,SAASD,CAAC,GAAG,CAAC,EAAE;EACpB;EACAE,KAAK,EAAE,2CAA2C;EAClDC,KAAK,EAAE,UAAUH,CAAC,GAAG,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,MAAMI,GAAG,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGpB,QAAQ,CAAC,CAAC;EAE5B,MAAM,CAACqB,aAAa,EAAEC,gBAAgB,CAAC,GAAG7B,QAAQ,CAChD8B,SACF,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGhC,QAAQ,CAAqB8B,SAAS,CAAC;EAE3E,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAGlC,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAMmC,aAAa,GAAGA,CAAA,KAAM;IAC1B;IACA,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IACnDL,WAAW,CAACE,WAAW,CAAC;EAC1B,CAAC;EAED,oBACExB,IAAA,CAAAI,SAAA;IAAAwB,QAAA,eACE5B,IAAA,CAACF,gBAAgB;MAAA8B,QAAA,eACf5B,IAAA,CAACR,sBAAsB;QAACqC,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAF,QAAA,eACzC5B,IAAA,CAACN,eAAe;UAACqB,KAAK,EAAEtB,UAAW;UAAAmC,QAAA,eACjC1B,KAAA,CAACL,wBAAwB;YAAA+B,QAAA,gBACvB5B,IAAA,CAACT,SAAS;cAACwC,QAAQ,EAAC;YAAe,CAAE,CAAC,eACtC/B,IAAA,CAACX,YAAY;cAACwC,KAAK,EAAEG,MAAM,CAACC,YAAa;cAAAL,QAAA,eAuDvC5B,IAAA,CAACJ,mBAAmB;gBAAEyB,QAAQ,EAAE,CAAE;gBAACa,UAAU,EAAE,CAAE;gBAACC,WAAW,EAAE,CAAE;gBAACC,IAAI,EAAE,EAAG;gBAAEC,WAAW,EAAE,CAAE;gBAACC,aAAa,EAAC;cAAM,CAAsB;YAAC,CAqB5H,CAAC;UAAA,CACS;QAAC,CACZ;MAAC,CACI;IAAC,CACT;EAAC,CACnB,CAAC;AAEP,CAAC;AAED,MAAMN,MAAM,GAAG1C,UAAU,CAACiD,MAAM,CAAC;EAC/BN,YAAY,EAAE;IACZH,IAAI,EAAE,CAAC;IACPU,eAAe,EAAE,MAAM;IACvBC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,UAAU,EAAC;EACb;AACF,CAAC,CAAC;AAEF,eAAe5B,GAAG","ignoreList":[]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect } from "react";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { StyleSheet, TextInput, View } from "react-native";
|
|
5
|
+
import { Canvas, DashPathEffect, Path, Shadow, Skia } from "@shopify/react-native-skia";
|
|
6
|
+
import Animated, { Easing, useAnimatedProps, useDerivedValue, useSharedValue, withTiming } from "react-native-reanimated";
|
|
7
7
|
import { useTheme } from "../../theme/index.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
9
|
+
const AnimatedTextInput = Animated.createAnimatedComponent(TextInput);
|
|
9
10
|
const CircularProgressBar = ({
|
|
10
11
|
size = 120,
|
|
11
12
|
strokeWidth = 8,
|
|
@@ -23,8 +24,7 @@ const CircularProgressBar = ({
|
|
|
23
24
|
progressPadding = 0,
|
|
24
25
|
currentStep = 0,
|
|
25
26
|
totalSteps = 4,
|
|
26
|
-
stepGap = 15
|
|
27
|
-
textStyle
|
|
27
|
+
stepGap = 15
|
|
28
28
|
}) => {
|
|
29
29
|
const {
|
|
30
30
|
theme
|
|
@@ -45,6 +45,26 @@ const CircularProgressBar = ({
|
|
|
45
45
|
easing: Easing.out(Easing.cubic)
|
|
46
46
|
});
|
|
47
47
|
}, [progress, currentStep, totalSteps, duration, variant, animatedValue]);
|
|
48
|
+
const textToDisplay = useDerivedValue(() => {
|
|
49
|
+
if (customText !== undefined) {
|
|
50
|
+
return customText;
|
|
51
|
+
}
|
|
52
|
+
if (variant === "steps") {
|
|
53
|
+
const displayStep = Math.round(animatedValue.value * (totalSteps || 1));
|
|
54
|
+
return `${displayStep}/${totalSteps}`;
|
|
55
|
+
}
|
|
56
|
+
return `${Math.round(animatedValue.value * 100)}%`;
|
|
57
|
+
}, [customText, variant, animatedValue, totalSteps]);
|
|
58
|
+
const animatedProps = useAnimatedProps(() => {
|
|
59
|
+
return {
|
|
60
|
+
text: textToDisplay.value
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
const getInitialText = () => {
|
|
64
|
+
if (customText !== undefined) return customText;
|
|
65
|
+
if (variant === 'steps') return `${currentStep}/${totalSteps}`;
|
|
66
|
+
return `${progress}%`;
|
|
67
|
+
};
|
|
48
68
|
const renderSteps = () => {
|
|
49
69
|
const totalGapDegrees = (totalSteps || 1) * stepGap;
|
|
50
70
|
const totalArcDegrees = 360 - totalGapDegrees;
|
|
@@ -109,21 +129,22 @@ const CircularProgressBar = ({
|
|
|
109
129
|
style: [{
|
|
110
130
|
width: size,
|
|
111
131
|
height: size,
|
|
112
|
-
justifyContent:
|
|
113
|
-
alignItems:
|
|
132
|
+
justifyContent: 'center',
|
|
133
|
+
alignItems: 'center'
|
|
114
134
|
}, style],
|
|
115
135
|
children: [/*#__PURE__*/_jsx(Canvas, {
|
|
116
136
|
style: StyleSheet.absoluteFill,
|
|
117
137
|
children: variant === "steps" ? renderSteps() : renderProgress()
|
|
118
|
-
}), /*#__PURE__*/_jsx(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
style:
|
|
138
|
+
}), /*#__PURE__*/_jsx(AnimatedTextInput, {
|
|
139
|
+
editable: false,
|
|
140
|
+
defaultValue: getInitialText(),
|
|
141
|
+
style: {
|
|
122
142
|
color: finalTextColor,
|
|
123
143
|
fontSize: fontSize,
|
|
124
|
-
textAlign:
|
|
125
|
-
|
|
126
|
-
|
|
144
|
+
textAlign: 'center',
|
|
145
|
+
padding: 0
|
|
146
|
+
},
|
|
147
|
+
animatedProps: animatedProps
|
|
127
148
|
})]
|
|
128
149
|
});
|
|
129
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","
|
|
1
|
+
{"version":3,"names":["React","useEffect","StyleSheet","TextInput","View","Canvas","DashPathEffect","Path","Shadow","Skia","Animated","Easing","useAnimatedProps","useDerivedValue","useSharedValue","withTiming","useTheme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AnimatedTextInput","createAnimatedComponent","CircularProgressBar","size","strokeWidth","backgroundColor","progressColor","lineCap","customText","textColor","fontSize","style","innerShadowColor","duration","variant","progress","progressPadding","currentStep","totalSteps","stepGap","theme","animatedValue","finalProgressColor","primary","finalBackgroundColor","disabled","finalTextColor","onSurface","radius","circumference","Math","PI","path","Make","addCircle","progressStrokeWidth","max","targetValue","value","easing","out","cubic","textToDisplay","undefined","displayStep","round","animatedProps","text","getInitialText","renderSteps","totalGapDegrees","totalArcDegrees","stepArcLength","gapLength","dashPattern","children","strokeCap","color","intervals","start","end","dx","dy","blur","inner","renderProgress","width","height","justifyContent","alignItems","absoluteFill","editable","defaultValue","textAlign","padding"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/ProgressBar/CircularProgressBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { ViewStyle } from "react-native";
|
|
3
3
|
interface CircularProgressBarProps {
|
|
4
4
|
size?: number;
|
|
5
5
|
strokeWidth?: number;
|
|
@@ -18,7 +18,6 @@ interface CircularProgressBarProps {
|
|
|
18
18
|
currentStep?: number;
|
|
19
19
|
totalSteps?: number;
|
|
20
20
|
stepGap?: number;
|
|
21
|
-
textStyle?: StyleProp<TextStyle>;
|
|
22
21
|
}
|
|
23
22
|
declare const CircularProgressBar: React.FC<CircularProgressBarProps>;
|
|
24
23
|
export default CircularProgressBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircularProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProgressBar/CircularProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CircularProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProgressBar/CircularProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAA+B,SAAS,EAAE,MAAM,cAAc,CAAC;AAatE,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAmJ3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
package/package.json
CHANGED
package/src/app.tsx
CHANGED
|
@@ -106,7 +106,7 @@ const App = () => {
|
|
|
106
106
|
{/* <DateRangePicker onDatesChange={()=>{}} labelContainerStyle={{backgroundColor:"red"}}></DateRangePicker> */}
|
|
107
107
|
{/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
|
|
108
108
|
{/* <CarouselCardStack data={DUMMY_DATA} /> */}
|
|
109
|
-
<CircularProgressBar
|
|
109
|
+
<CircularProgressBar progress={0} totalSteps={4} currentStep={1} size={43} strokeWidth={2} progressColor="blue"></CircularProgressBar>
|
|
110
110
|
{/* <RangeSlider initialMinValue={0} initialMaxValue={100} min={0} max={500} sliderWidth={300} onValueChange={console.log}></RangeSlider> */}
|
|
111
111
|
{/* <PhoneInput
|
|
112
112
|
value=""
|
|
@@ -1,32 +1,17 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
useFont,
|
|
9
|
-
PathOp,
|
|
10
|
-
DashPathEffect,
|
|
11
|
-
} from "@shopify/react-native-skia";
|
|
12
|
-
import {
|
|
2
|
+
import { StyleSheet, TextInput, View, ViewStyle } from "react-native";
|
|
3
|
+
import { Canvas, DashPathEffect, Path, Shadow, Skia } from "@shopify/react-native-skia";
|
|
4
|
+
import Animated, {
|
|
5
|
+
Easing,
|
|
6
|
+
useAnimatedProps,
|
|
7
|
+
useDerivedValue,
|
|
13
8
|
useSharedValue,
|
|
14
9
|
withTiming,
|
|
15
|
-
useDerivedValue,
|
|
16
|
-
Easing,
|
|
17
10
|
} from "react-native-reanimated";
|
|
18
|
-
import {
|
|
19
|
-
ImageRequireSource,
|
|
20
|
-
Platform,
|
|
21
|
-
StyleProp,
|
|
22
|
-
StyleSheet,
|
|
23
|
-
Text,
|
|
24
|
-
TextStyle,
|
|
25
|
-
View,
|
|
26
|
-
ViewStyle,
|
|
27
|
-
} from "react-native";
|
|
28
11
|
import { useTheme } from "../../theme";
|
|
29
12
|
|
|
13
|
+
const AnimatedTextInput = Animated.createAnimatedComponent(TextInput);
|
|
14
|
+
|
|
30
15
|
interface CircularProgressBarProps {
|
|
31
16
|
size?: number;
|
|
32
17
|
strokeWidth?: number;
|
|
@@ -45,7 +30,6 @@ interface CircularProgressBarProps {
|
|
|
45
30
|
currentStep?: number;
|
|
46
31
|
totalSteps?: number;
|
|
47
32
|
stepGap?: number;
|
|
48
|
-
textStyle?: StyleProp<TextStyle>;
|
|
49
33
|
}
|
|
50
34
|
|
|
51
35
|
const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
|
|
@@ -66,7 +50,6 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
|
|
|
66
50
|
currentStep = 0,
|
|
67
51
|
totalSteps = 4,
|
|
68
52
|
stepGap = 15,
|
|
69
|
-
textStyle,
|
|
70
53
|
}) => {
|
|
71
54
|
const { theme } = useTheme();
|
|
72
55
|
const animatedValue = useSharedValue(0);
|
|
@@ -84,13 +67,38 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
|
|
|
84
67
|
|
|
85
68
|
useEffect(() => {
|
|
86
69
|
const targetValue =
|
|
87
|
-
variant === "steps"
|
|
70
|
+
variant === "steps"
|
|
71
|
+
? currentStep / (totalSteps || 1)
|
|
72
|
+
: progress / 100;
|
|
88
73
|
animatedValue.value = withTiming(targetValue, {
|
|
89
74
|
duration,
|
|
90
75
|
easing: Easing.out(Easing.cubic),
|
|
91
76
|
});
|
|
92
77
|
}, [progress, currentStep, totalSteps, duration, variant, animatedValue]);
|
|
93
78
|
|
|
79
|
+
const textToDisplay = useDerivedValue(() => {
|
|
80
|
+
if (customText !== undefined) {
|
|
81
|
+
return customText;
|
|
82
|
+
}
|
|
83
|
+
if (variant === "steps") {
|
|
84
|
+
const displayStep = Math.round(animatedValue.value * (totalSteps || 1));
|
|
85
|
+
return `${displayStep}/${totalSteps}`;
|
|
86
|
+
}
|
|
87
|
+
return `${Math.round(animatedValue.value * 100)}%`;
|
|
88
|
+
}, [customText, variant, animatedValue, totalSteps]);
|
|
89
|
+
|
|
90
|
+
const animatedProps = useAnimatedProps(() => {
|
|
91
|
+
return {
|
|
92
|
+
text: textToDisplay.value,
|
|
93
|
+
} as any;
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const getInitialText = () => {
|
|
97
|
+
if (customText !== undefined) return customText;
|
|
98
|
+
if (variant === 'steps') return `${currentStep}/${totalSteps}`;
|
|
99
|
+
return `${progress}%`;
|
|
100
|
+
};
|
|
101
|
+
|
|
94
102
|
const renderSteps = () => {
|
|
95
103
|
const totalGapDegrees = (totalSteps || 1) * stepGap;
|
|
96
104
|
const totalArcDegrees = 360 - totalGapDegrees;
|
|
@@ -154,35 +162,23 @@ const CircularProgressBar: React.FC<CircularProgressBarProps> = ({
|
|
|
154
162
|
);
|
|
155
163
|
|
|
156
164
|
return (
|
|
157
|
-
<View
|
|
158
|
-
style={[
|
|
159
|
-
{
|
|
160
|
-
width: size,
|
|
161
|
-
height: size,
|
|
162
|
-
justifyContent: "center",
|
|
163
|
-
alignItems: "center",
|
|
164
|
-
},
|
|
165
|
-
style,
|
|
166
|
-
]}
|
|
167
|
-
>
|
|
165
|
+
<View style={[{ width: size, height: size, justifyContent: 'center', alignItems: 'center' }, style]}>
|
|
168
166
|
<Canvas style={StyleSheet.absoluteFill}>
|
|
169
167
|
{variant === "steps" ? renderSteps() : renderProgress()}
|
|
170
168
|
</Canvas>
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
{customText}
|
|
183
|
-
</Text>
|
|
169
|
+
<AnimatedTextInput
|
|
170
|
+
editable={false}
|
|
171
|
+
defaultValue={getInitialText()}
|
|
172
|
+
style={{
|
|
173
|
+
color: finalTextColor,
|
|
174
|
+
fontSize: fontSize,
|
|
175
|
+
textAlign: 'center',
|
|
176
|
+
padding: 0
|
|
177
|
+
}}
|
|
178
|
+
animatedProps={animatedProps}
|
|
179
|
+
/>
|
|
184
180
|
</View>
|
|
185
181
|
);
|
|
186
182
|
};
|
|
187
183
|
|
|
188
|
-
export default CircularProgressBar;
|
|
184
|
+
export default CircularProgressBar;
|