@momo-kits/stepper 0.103.1 → 0.103.2-rc.10

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/index.tsx CHANGED
@@ -1,95 +1,120 @@
1
- import React, {FC, useState} from 'react';
1
+ import React, {
2
+ forwardRef,
3
+ useEffect,
4
+ useImperativeHandle,
5
+ useState,
6
+ } from 'react';
2
7
  import {View} from 'react-native';
3
8
  import StepperButton from './StepperButton';
4
9
  import {DisabledStatus, StepperProps} from './types';
5
10
  import styles from './styles';
6
11
  import NumberView from './NumberView';
7
12
 
8
- const Stepper: FC<StepperProps> = ({
9
- size = 'large',
10
- defaultValue = 0,
11
- min = 0,
12
- max = 100,
13
- disabled = false,
14
- step = 1,
15
- editable = false,
16
- onValueChange,
17
- }) => {
18
- const [value, setValue] = useState(defaultValue);
13
+ const Stepper = forwardRef(
14
+ (
15
+ {
16
+ size = 'large',
17
+ defaultValue = 0,
18
+ min = 0,
19
+ max = 100,
20
+ disabled = false,
21
+ step = 1,
22
+ editable = false,
23
+ onValueChange,
24
+ }: StepperProps,
25
+ ref
26
+ ) => {
27
+ const [value, setValue] = useState(defaultValue);
19
28
 
20
- const onPlus = () => {
21
- let newValue = value + step;
22
- _onValueChange(newValue.toString());
23
- };
24
- const onMinus = () => {
25
- let newValue = value - step;
26
- _onValueChange(newValue.toString());
27
- };
28
- const _onValueChange = (num: string) => {
29
- let newValue = parseInt(num);
29
+ useImperativeHandle(ref, () => ({
30
+ setStepValue: (value: React.SetStateAction<number>) => {
31
+ setValue(value);
32
+ _onValueChange(value.toString());
33
+ },
34
+ }));
30
35
 
31
- if (isNaN(newValue)) {
32
- newValue = 0;
33
- }
36
+ useEffect(() => {
37
+ setValue(defaultValue);
38
+ }, [defaultValue]);
34
39
 
35
- if (newValue > max) {
36
- newValue = max;
37
- }
40
+ const onPlus = () => {
41
+ let newValue = value + step;
42
+ _onValueChange(newValue.toString());
43
+ };
44
+ const onMinus = () => {
45
+ let newValue = value - step;
46
+ _onValueChange(newValue.toString());
47
+ };
48
+ const _onValueChange = (num: string) => {
49
+ let newValue = parseInt(num);
38
50
 
39
- if (newValue < min) {
40
- newValue = min;
41
- }
51
+ if (isNaN(newValue)) {
52
+ newValue = 0;
53
+ }
42
54
 
43
- setValue(newValue);
44
- onValueChange?.(newValue);
45
- };
46
- const getViewDisabledStatus = () => {
47
- let disabledStatus: DisabledStatus;
55
+ if (newValue > max) {
56
+ newValue = max;
57
+ }
48
58
 
49
- if (Array.isArray(disabled)) {
50
- disabledStatus = {
51
- plus: disabled[1],
52
- minus: disabled[0],
53
- number: disabled[0] && disabled[1],
54
- };
55
- } else {
56
- disabledStatus = {
57
- plus: disabled,
58
- minus: disabled,
59
- number: disabled,
60
- };
61
- }
59
+ if (newValue < min) {
60
+ newValue = min;
61
+ }
62
62
 
63
- if (value === min) {
64
- disabledStatus.minus = true;
65
- }
66
- if (value === max) {
67
- disabledStatus.plus = true;
68
- }
69
- return disabledStatus;
70
- };
63
+ setValue(newValue);
64
+ onValueChange?.(newValue);
65
+ };
66
+ const getViewDisabledStatus = () => {
67
+ let disabledStatus: DisabledStatus;
71
68
 
72
- const viewStatus = getViewDisabledStatus();
69
+ if (Array.isArray(disabled)) {
70
+ disabledStatus = {
71
+ plus: disabled[1],
72
+ minus: disabled[0],
73
+ number: disabled[0] && disabled[1],
74
+ };
75
+ } else {
76
+ disabledStatus = {
77
+ plus: disabled,
78
+ minus: disabled,
79
+ number: disabled,
80
+ };
81
+ }
73
82
 
74
- return (
75
- <View style={styles.stepper}>
76
- <StepperButton
77
- onPress={onMinus}
78
- sign={'-'}
79
- size={size}
80
- disabled={viewStatus.minus}
81
- />
82
- <NumberView
83
- onValueChange={_onValueChange}
84
- size={size}
85
- value={value}
86
- disabled={viewStatus.number}
87
- editable={editable}
88
- />
89
- <StepperButton onPress={onPlus} size={size} disabled={viewStatus.plus} />
90
- </View>
91
- );
92
- };
83
+ if (value === min) {
84
+ disabledStatus.minus = true;
85
+ }
86
+ if (value === max) {
87
+ disabledStatus.plus = true;
88
+ }
89
+ return disabledStatus;
90
+ };
91
+
92
+ const viewStatus = getViewDisabledStatus();
93
+
94
+ return (
95
+ <View style={styles.stepper}>
96
+ <StepperButton
97
+ onPress={onMinus}
98
+ sign={'-'}
99
+ size={size}
100
+ disabled={viewStatus.minus}
101
+ />
102
+ <NumberView
103
+ onValueChange={_onValueChange}
104
+ size={size}
105
+ value={value}
106
+ disabled={viewStatus.number}
107
+ editable={editable}
108
+ />
109
+ <StepperButton
110
+ onPress={onPlus}
111
+ size={size}
112
+ disabled={viewStatus.plus}
113
+ />
114
+ </View>
115
+ );
116
+ }
117
+ );
93
118
 
94
119
  export {Stepper};
95
120
  export type {StepperProps};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/stepper",
3
- "version": "0.103.1",
3
+ "version": "0.103.2-rc.10",
4
4
  "private": false,
5
5
  "main": "index.tsx",
6
6
  "dependencies": {},
@@ -14,4 +14,4 @@
14
14
  "@momo-platform/versions": "4.1.11"
15
15
  },
16
16
  "license": "MoMo"
17
- }
17
+ }
package/publish.sh CHANGED
@@ -7,15 +7,15 @@ rsync -r --exclude=/dist ./* dist
7
7
  cd dist
8
8
 
9
9
  if [ "$1" == "stable" ]; then
10
- #npm version $(npm view @momo-kits/stepper@stable version)
11
- #npm version patch
10
+ npm version $(npm view @momo-kits/foundation@stable version)
11
+ npm version patch
12
12
  npm publish --tag stable --access=public
13
13
  elif [ "$1" == "latest" ]; then
14
- #npm version $(npm view @momo-kits/foundation@latest version)
14
+ npm version $(npm view @momo-kits/foundation@latest version)
15
15
  npm publish --tag latest --access=public
16
16
  else
17
- #npm version $(npm view @momo-kits/stepper@beta version)
18
- #npm version prerelease --preid=beta
17
+ npm version $(npm view @momo-kits/stepper@beta version)
18
+ npm version prerelease --preid=beta
19
19
  npm publish --tag beta --access=public
20
20
  fi
21
21
 
package/types.ts CHANGED
@@ -133,3 +133,7 @@ export type DisabledStatus = {
133
133
  */
134
134
  number: boolean;
135
135
  };
136
+
137
+ export type StepperRef = {
138
+ setStepValue: (value: number) => void;
139
+ };