@xhsreds/reds-rn-next 0.10.1-beta202511241537 → 0.10.1-fix-pull-refresh202511272002

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.
Files changed (97) hide show
  1. package/coverage/.tmp/coverage-0.json +1 -1
  2. package/coverage/.tmp/coverage-1.json +1 -1
  3. package/coverage/.tmp/coverage-10.json +1 -1
  4. package/coverage/.tmp/coverage-11.json +1 -1
  5. package/coverage/.tmp/coverage-12.json +1 -1
  6. package/coverage/.tmp/coverage-13.json +1 -1
  7. package/coverage/.tmp/coverage-14.json +1 -1
  8. package/coverage/.tmp/coverage-15.json +1 -1
  9. package/coverage/.tmp/coverage-16.json +1 -1
  10. package/coverage/.tmp/coverage-17.json +1 -1
  11. package/coverage/.tmp/coverage-18.json +1 -1
  12. package/coverage/.tmp/coverage-2.json +1 -1
  13. package/coverage/.tmp/coverage-20.json +1 -1
  14. package/coverage/.tmp/coverage-22.json +1 -1
  15. package/coverage/.tmp/coverage-23.json +1 -1
  16. package/coverage/.tmp/coverage-24.json +1 -1
  17. package/coverage/.tmp/coverage-25.json +1 -1
  18. package/coverage/.tmp/coverage-26.json +1 -1
  19. package/coverage/.tmp/coverage-27.json +1 -1
  20. package/coverage/.tmp/coverage-29.json +1 -1
  21. package/coverage/.tmp/coverage-3.json +1 -1
  22. package/coverage/.tmp/coverage-30.json +1 -1
  23. package/coverage/.tmp/coverage-31.json +1 -1
  24. package/coverage/.tmp/coverage-32.json +1 -1
  25. package/coverage/.tmp/coverage-33.json +1 -1
  26. package/coverage/.tmp/coverage-34.json +1 -1
  27. package/coverage/.tmp/coverage-35.json +1 -1
  28. package/coverage/.tmp/coverage-36.json +1 -1
  29. package/coverage/.tmp/coverage-37.json +1 -1
  30. package/coverage/.tmp/coverage-38.json +1 -1
  31. package/coverage/.tmp/coverage-39.json +1 -1
  32. package/coverage/.tmp/coverage-4.json +1 -1
  33. package/coverage/.tmp/coverage-40.json +1 -1
  34. package/coverage/.tmp/coverage-41.json +1 -1
  35. package/coverage/.tmp/coverage-42.json +1 -1
  36. package/coverage/.tmp/coverage-5.json +1 -1
  37. package/coverage/.tmp/coverage-6.json +1 -1
  38. package/coverage/.tmp/coverage-7.json +1 -1
  39. package/coverage/.tmp/coverage-8.json +1 -1
  40. package/coverage/.tmp/coverage-9.json +1 -1
  41. package/lib/cjs/components/Avatar/styles.js +5 -5
  42. package/lib/cjs/components/Avatar/styles.js.map +1 -1
  43. package/lib/cjs/components/AvatarGroup/AvatarGroup.js +1 -1
  44. package/lib/cjs/components/BottomBar/styles.js +1 -1
  45. package/lib/cjs/components/BottomBar/styles.js.map +1 -1
  46. package/lib/cjs/components/PickerView/Wheel.js +15 -21
  47. package/lib/cjs/components/PickerView/Wheel.js.map +1 -1
  48. package/lib/cjs/components/PullRefresh/PullRefresh.js +55 -10
  49. package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
  50. package/lib/cjs/components/Radio/Radio.js +3 -3
  51. package/lib/cjs/components/Radio/Radio.js.map +1 -1
  52. package/lib/cjs/components/Radio/styles.js +7 -5
  53. package/lib/cjs/components/Radio/styles.js.map +1 -1
  54. package/lib/cjs/components/Sheets/AnimatedSheets.js +2 -2
  55. package/lib/cjs/components/Sheets/AnimatedSheets.js.map +1 -1
  56. package/lib/cjs/components/Slider/Slider.js +34 -74
  57. package/lib/cjs/components/Slider/Slider.js.map +1 -1
  58. package/lib/cjs/components/TextView/TextView.js +3 -6
  59. package/lib/cjs/components/TextView/TextView.js.map +1 -1
  60. package/lib/esm/components/Avatar/styles.js +5 -5
  61. package/lib/esm/components/Avatar/styles.js.map +1 -1
  62. package/lib/esm/components/AvatarGroup/AvatarGroup.js +1 -1
  63. package/lib/esm/components/BottomBar/styles.js +1 -1
  64. package/lib/esm/components/BottomBar/styles.js.map +1 -1
  65. package/lib/esm/components/PickerView/Wheel.js +15 -21
  66. package/lib/esm/components/PickerView/Wheel.js.map +1 -1
  67. package/lib/esm/components/PullRefresh/PullRefresh.js +55 -10
  68. package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
  69. package/lib/esm/components/Radio/Radio.js +3 -3
  70. package/lib/esm/components/Radio/Radio.js.map +1 -1
  71. package/lib/esm/components/Radio/styles.js +7 -5
  72. package/lib/esm/components/Radio/styles.js.map +1 -1
  73. package/lib/esm/components/Sheets/AnimatedSheets.js +2 -2
  74. package/lib/esm/components/Sheets/AnimatedSheets.js.map +1 -1
  75. package/lib/esm/components/Slider/Slider.js +36 -76
  76. package/lib/esm/components/Slider/Slider.js.map +1 -1
  77. package/lib/esm/components/TextView/TextView.js +3 -6
  78. package/lib/esm/components/TextView/TextView.js.map +1 -1
  79. package/lib/src/components/BottomBar/styles.d.ts +1 -1
  80. package/lib/src/components/Slider/Slider.d.ts +1 -1
  81. package/lib/types/components/BottomBar/styles.d.ts +1 -1
  82. package/lib/types/components/Slider/Slider.d.ts +1 -1
  83. package/package.json +2 -2
  84. package/src/components/Avatar/styles.ts +4 -5
  85. package/src/components/BottomBar/styles.ts +1 -1
  86. package/src/components/DatePicker/demo/index.tsx +0 -26
  87. package/src/components/PickerView/Wheel.tsx +11 -14
  88. package/src/components/PullRefresh/PullRefresh.tsx +76 -33
  89. package/src/components/Radio/Radio.tsx +3 -3
  90. package/src/components/Radio/styles.ts +5 -3
  91. package/src/components/Sheets/AnimatedSheets.tsx +112 -116
  92. package/src/components/Slider/Slider.tsx +37 -103
  93. package/src/components/Slider/demo/index.tsx +0 -18
  94. package/src/components/TextView/TextView.tsx +3 -6
  95. package/src/components/TextView/demo/index.tsx +1 -1
  96. package/src/i18n/@types/resources.d.ts +18 -18
  97. package/src/i18n/index.json +31 -31
@@ -1 +1 @@
1
- {"version":3,"file":"TextView.js","sources":["../../../../src/components/TextView/TextView.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, useMemo, forwardRef, useImperativeHandle } from \"react\";\nimport { TextInput, View, Text, TouchableWithoutFeedback, ColorValue, Keyboard, Platform } from \"react-native\";\nimport { TextViewDefaultProps, RedsTextView } from \"./interface\";\nimport createStyles from \"./styles\";\nimport runes from \"runes\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { useThemeColor } from \"../ConfigProvider\";\n\nconst TextField = forwardRef((props: RedsTextView, ref) => {\n const {\n type,\n modelValue,\n clearable = false,\n maxLength,\n disabled = false,\n readonly,\n autofocus = false,\n showCount = false,\n placeholder,\n rows = 3,\n onFocus,\n onBlur,\n onChange,\n onClear,\n style = {},\n containerStyle = {},\n layout,\n actionLayout,\n placeholderTextColor,\n } = props || {};\n useMounted(\"TextView\");\n const styles = createStyles(disabled, actionLayout || \"vertical\");\n const [focused, setFocused] = useState(autofocus);\n const [value, setValue] = useState(modelValue || \"\");\n const [modelValueStringLength, setModelValueStringLength] = useState(0);\n const [showClear, setShowClear] = useState(false);\n const [showActionArea, setShowActionArea] = useState(false);\n const inputRef = useRef<TextInput>(null);\n const themeColor = useThemeColor();\n\n const limitValueLength = useCallback(\n (value: string) => {\n const valueLength = runes(value || \"\").length;\n if (typeof maxLength === \"number\" && valueLength > maxLength) {\n const mValue = value;\n if (mValue && modelValueStringLength === +maxLength) {\n return mValue;\n }\n return runes.substr(value, 0, +maxLength);\n }\n return value;\n },\n [maxLength],\n );\n\n useImperativeHandle(ref, () => ({\n textInputRef: inputRef,\n }));\n\n const updateValue = useCallback(\n (upValue: string) => {\n // let value = limitValueLength(upValue);\n onChange && onChange(upValue);\n setValue(upValue);\n },\n [onChange],\n );\n\n const handleChangeText = useCallback(\n (value: string) => {\n const filteredValue = props.returnKeyType !== \"next\" ? value.replace(/\\n/g, \"\") : value;\n updateValue(filteredValue);\n // Only apply cursor fix on iOS when text equals maxLength (indicating truncation)\n if (Platform.OS === \"ios\" && maxLength && value.length >= maxLength && inputRef.current) {\n // Use requestAnimationFrame instead of setTimeout\n requestAnimationFrame(() => {\n inputRef.current?.setNativeProps({\n selection: { start: maxLength, end: maxLength },\n });\n });\n }\n },\n [maxLength, updateValue],\n );\n\n const handleClear = useCallback(() => {\n setValue(\"\");\n updateValue(\"\");\n onClear && onClear(value);\n }, [onClear]);\n\n const handleFocus = useCallback(() => {\n if (readonly) {\n inputRef.current?.blur();\n }\n setFocused(true);\n onFocus && onFocus(value);\n }, [onFocus, readonly]);\n\n const handleBlur = useCallback(() => {\n setFocused(false);\n if (!readonly) {\n onBlur && onBlur(value);\n }\n }, [readonly, onBlur]);\n\n useEffect(() => {\n setValue(modelValue || \"\");\n }, [modelValue]);\n\n useEffect(() => {\n setShowClear(clearable && value.length > 0);\n }, [clearable, value]);\n\n useEffect(() => {\n setFocused(autofocus);\n }, [autofocus]);\n\n useEffect(() => {\n // setModelValueStringLength(runes(value).length);\n setModelValueStringLength(value.length);\n }, [value]);\n\n useEffect(() => {\n setShowActionArea(showClear || showCount);\n }, [showClear, showCount]);\n\n const textFieldColor = useMemo(() => {\n const ColorMap = {\n primary: themeColor.Primary2,\n normal: themeColor.Fill1,\n basic: themeColor.Bg,\n };\n return ColorMap[layout!];\n }, [layout]);\n\n const handleKeyPress = ({ nativeEvent }: any) => {\n if (nativeEvent.key === \"Enter\") {\n if (props.returnKeyType !== \"next\") {\n Keyboard.dismiss();\n }\n }\n };\n\n return (\n <View testID=\"wrapper\" style={[styles.wrapper, { backgroundColor: textFieldColor }, containerStyle]}>\n <TextInput\n testID=\"text-input\"\n ref={inputRef}\n style={[styles.input, { minHeight: rows * 24, height: \"auto\" }, style]}\n value={value}\n onChangeText={handleChangeText}\n onFocus={handleFocus}\n onBlur={handleBlur}\n editable={!readonly && !disabled}\n keyboardType={type}\n placeholder={placeholder}\n multiline\n returnKeyType={props.returnKeyType as any}\n autoFocus={focused}\n maxLength={maxLength}\n onKeyPress={handleKeyPress}\n onSubmitEditing={props.onSubmitEditing}\n selectionColor={styles.inputSelectionColor.color}\n placeholderTextColor={(placeholderTextColor || styles.inputPlaceHolder.color) as ColorValue}\n />\n {showActionArea && (\n <View style={[styles.ButtomActionArea]} testID=\"action-area\">\n {showCount && maxLength && (\n <View style={styles.rightItem}>\n <Text style={styles.count}>{`${Math.min(modelValueStringLength, maxLength)}/${maxLength}`}</Text>\n </View>\n )}\n {showClear && modelValueStringLength && focused && (\n <View style={styles.rightItem}>\n <TouchableWithoutFeedback onPress={handleClear}>\n <View style={styles.clearIconContainer}>\n <Text style={styles.clearIcon}>清空</Text>\n </View>\n </TouchableWithoutFeedback>\n </View>\n )}\n </View>\n )}\n </View>\n );\n});\n\n// @ts-ignore\nTextField.defaultProps = TextViewDefaultProps;\n\nexport default TextField;\n"],"names":["TextField","forwardRef","props","ref","_ref","type","modelValue","_ref$clearable","clearable","maxLength","_ref$disabled","disabled","readonly","_ref$autofocus","autofocus","_ref$showCount","showCount","placeholder","_ref$rows","rows","onFocus","onBlur","onChange","onClear","_ref$style","style","_ref$containerStyle","containerStyle","layout","actionLayout","placeholderTextColor","useMounted","styles","createStyles","_useState","useState","_useState2","_slicedToArray","focused","setFocused","_useState3","_useState4","value","setValue","_useState5","_useState6","modelValueStringLength","setModelValueStringLength","_useState7","_useState8","showClear","setShowClear","_useState9","_useState0","showActionArea","setShowActionArea","inputRef","useRef","themeColor","useThemeColor","useCallback","valueLength","runes","length","mValue","substr","useImperativeHandle","textInputRef","updateValue","upValue","handleChangeText","filteredValue","returnKeyType","replace","Platform","OS","current","requestAnimationFrame","_inputRef$current","setNativeProps","selection","start","end","handleClear","handleFocus","_inputRef$current2","blur","handleBlur","useEffect","textFieldColor","useMemo","ColorMap","primary","Primary2","normal","Fill1","basic","Bg","handleKeyPress","_ref2","nativeEvent","key","Keyboard","dismiss","React","createElement","View","testID","wrapper","backgroundColor","TextInput","input","minHeight","height","onChangeText","editable","keyboardType","multiline","autoFocus","onKeyPress","onSubmitEditing","selectionColor","inputSelectionColor","color","inputPlaceHolder","ButtomActionArea","rightItem","Text","count","concat","Math","min","TouchableWithoutFeedback","onPress","clearIconContainer","clearIcon","defaultProps","TextViewDefaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"TextView.js","sources":["../../../../src/components/TextView/TextView.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, useMemo, forwardRef, useImperativeHandle } from \"react\";\nimport { TextInput, View, Text, TouchableWithoutFeedback, ColorValue, Keyboard, Platform } from \"react-native\";\nimport { TextViewDefaultProps, RedsTextView } from \"./interface\";\nimport createStyles from \"./styles\";\nimport runes from \"runes\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { useThemeColor } from \"../ConfigProvider\";\n\nconst TextField = forwardRef((props: RedsTextView, ref) => {\n const {\n type,\n modelValue,\n clearable = false,\n maxLength,\n disabled = false,\n readonly,\n autofocus = false,\n showCount = false,\n placeholder,\n rows = 3,\n onFocus,\n onBlur,\n onChange,\n onClear,\n style = {},\n containerStyle = {},\n layout,\n actionLayout,\n placeholderTextColor,\n } = props || {};\n useMounted(\"TextView\");\n const styles = createStyles(disabled, actionLayout || \"vertical\");\n const [focused, setFocused] = useState(autofocus);\n const [value, setValue] = useState(modelValue || \"\");\n const [modelValueStringLength, setModelValueStringLength] = useState(0);\n const [showClear, setShowClear] = useState(false);\n const [showActionArea, setShowActionArea] = useState(false);\n const inputRef = useRef<TextInput>(null);\n const themeColor = useThemeColor();\n\n const limitValueLength = useCallback(\n (value: string) => {\n const valueLength = runes(value || \"\").length;\n if (typeof maxLength === \"number\" && valueLength > maxLength) {\n const mValue = value;\n if (mValue && modelValueStringLength === +maxLength) {\n return mValue;\n }\n return runes.substr(value, 0, +maxLength);\n }\n return value;\n },\n [maxLength],\n );\n\n useImperativeHandle(ref, () => ({\n textInputRef: inputRef,\n }));\n\n const updateValue = useCallback(\n (upValue: string) => {\n // let value = limitValueLength(upValue);\n onChange && onChange(upValue);\n setValue(upValue);\n },\n [onChange],\n );\n\n const handleChangeText = useCallback(\n (value: string) => {\n updateValue(value);\n // Only apply cursor fix on iOS when text equals maxLength (indicating truncation)\n if (Platform.OS === \"ios\" && maxLength && value.length >= maxLength && inputRef.current) {\n // Use requestAnimationFrame instead of setTimeout\n requestAnimationFrame(() => {\n inputRef.current?.setNativeProps({\n selection: { start: maxLength, end: maxLength },\n });\n });\n }\n },\n [maxLength, updateValue],\n );\n\n const handleClear = useCallback(() => {\n setValue(\"\");\n updateValue(\"\");\n onClear && onClear(value);\n }, [onClear]);\n\n const handleFocus = useCallback(() => {\n if (readonly) {\n inputRef.current?.blur();\n }\n setFocused(true);\n onFocus && onFocus(value);\n }, [onFocus, readonly]);\n\n const handleBlur = useCallback(() => {\n setFocused(false);\n if (!readonly) {\n onBlur && onBlur(value);\n }\n }, [readonly, onBlur]);\n\n useEffect(() => {\n setValue(modelValue || \"\");\n }, [modelValue]);\n\n useEffect(() => {\n setShowClear(clearable && value.length > 0);\n }, [clearable, value]);\n\n useEffect(() => {\n setFocused(autofocus);\n }, [autofocus]);\n\n useEffect(() => {\n // setModelValueStringLength(runes(value).length);\n setModelValueStringLength(value.length);\n }, [value]);\n\n useEffect(() => {\n setShowActionArea(showClear || showCount);\n }, [showClear, showCount]);\n\n const textFieldColor = useMemo(() => {\n const ColorMap = {\n primary: themeColor.Primary2,\n normal: themeColor.Fill1,\n basic: themeColor.Bg,\n };\n return ColorMap[layout!];\n }, [layout]);\n\n const handleKeyPress = ({ nativeEvent }: any) => {\n if (nativeEvent.key === \"Enter\" && props.returnKeyType !== \"next\") {\n Keyboard.dismiss();\n }\n };\n\n return (\n <View testID=\"wrapper\" style={[styles.wrapper, { backgroundColor: textFieldColor }, containerStyle]}>\n <TextInput\n testID=\"text-input\"\n ref={inputRef}\n style={[styles.input, { minHeight: rows * 24, height: \"auto\" }, style]}\n value={value}\n onChangeText={handleChangeText}\n onFocus={handleFocus}\n onBlur={handleBlur}\n editable={!readonly && !disabled}\n keyboardType={type}\n placeholder={placeholder}\n multiline\n returnKeyType={props.returnKeyType as any}\n autoFocus={focused}\n maxLength={maxLength}\n onKeyPress={handleKeyPress}\n onSubmitEditing={props.onSubmitEditing}\n selectionColor={styles.inputSelectionColor.color}\n placeholderTextColor={(placeholderTextColor || styles.inputPlaceHolder.color) as ColorValue}\n />\n {showActionArea && (\n <View style={[styles.ButtomActionArea]} testID=\"action-area\">\n {showCount && maxLength && (\n <View style={styles.rightItem}>\n <Text style={styles.count}>{`${Math.min(modelValueStringLength, maxLength)}/${maxLength}`}</Text>\n </View>\n )}\n {showClear && modelValueStringLength && focused && (\n <View style={styles.rightItem}>\n <TouchableWithoutFeedback onPress={handleClear}>\n <View style={styles.clearIconContainer}>\n <Text style={styles.clearIcon}>清空</Text>\n </View>\n </TouchableWithoutFeedback>\n </View>\n )}\n </View>\n )}\n </View>\n );\n});\n\n// @ts-ignore\nTextField.defaultProps = TextViewDefaultProps;\n\nexport default TextField;\n"],"names":["TextField","forwardRef","props","ref","_ref","type","modelValue","_ref$clearable","clearable","maxLength","_ref$disabled","disabled","readonly","_ref$autofocus","autofocus","_ref$showCount","showCount","placeholder","_ref$rows","rows","onFocus","onBlur","onChange","onClear","_ref$style","style","_ref$containerStyle","containerStyle","layout","actionLayout","placeholderTextColor","useMounted","styles","createStyles","_useState","useState","_useState2","_slicedToArray","focused","setFocused","_useState3","_useState4","value","setValue","_useState5","_useState6","modelValueStringLength","setModelValueStringLength","_useState7","_useState8","showClear","setShowClear","_useState9","_useState0","showActionArea","setShowActionArea","inputRef","useRef","themeColor","useThemeColor","useCallback","valueLength","runes","length","mValue","substr","useImperativeHandle","textInputRef","updateValue","upValue","handleChangeText","Platform","OS","current","requestAnimationFrame","_inputRef$current","setNativeProps","selection","start","end","handleClear","handleFocus","_inputRef$current2","blur","handleBlur","useEffect","textFieldColor","useMemo","ColorMap","primary","Primary2","normal","Fill1","basic","Bg","handleKeyPress","_ref2","nativeEvent","key","returnKeyType","Keyboard","dismiss","React","createElement","View","testID","wrapper","backgroundColor","TextInput","input","minHeight","height","onChangeText","editable","keyboardType","multiline","autoFocus","onKeyPress","onSubmitEditing","selectionColor","inputSelectionColor","color","inputPlaceHolder","ButtomActionArea","rightItem","Text","count","concat","Math","min","TouchableWithoutFeedback","onPress","clearIconContainer","clearIcon","defaultProps","TextViewDefaultProps"],"mappings":"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"}
@@ -2,7 +2,7 @@ export declare const getStyles: (themeColor: any) => {
2
2
  bottomBar: {
3
3
  width: "100%";
4
4
  padding: number;
5
- backgroundColor: any;
5
+ backgroundColor: string;
6
6
  };
7
7
  fixed: {
8
8
  position: "absolute";
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { RedsSlider } from "./interface/index";
3
3
  declare const Slider: {
4
- ({ defaultValue, min, max, initalValue, onValueChange, dotStyle, step, }: RedsSlider): React.JSX.Element;
4
+ ({ defaultValue, min, max, initalValue, onValueChange, dotStyle }: RedsSlider): React.JSX.Element;
5
5
  defaultProps: {
6
6
  value: number;
7
7
  min: number;
@@ -2,7 +2,7 @@ export declare const getStyles: (themeColor: any) => {
2
2
  bottomBar: {
3
3
  width: "100%";
4
4
  padding: number;
5
- backgroundColor: any;
5
+ backgroundColor: string;
6
6
  };
7
7
  fixed: {
8
8
  position: "absolute";
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { RedsSlider } from "./interface/index";
3
3
  declare const Slider: {
4
- ({ defaultValue, min, max, initalValue, onValueChange, dotStyle, step, }: RedsSlider): React.JSX.Element | undefined;
4
+ ({ defaultValue, min, max, initalValue, onValueChange, dotStyle }: RedsSlider): React.JSX.Element | undefined;
5
5
  defaultProps: {
6
6
  value: number;
7
7
  min: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.10.1-beta202511241537",
3
+ "version": "0.10.1-fix-pull-refresh202511272002",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
@@ -26,7 +26,7 @@
26
26
  "react-native-fs": "2.20.0",
27
27
  "react-native-svg": "13.14.0",
28
28
  "@xhs/react-native-harmony": "*",
29
- "@xhsreds/reds-token-next": "0.10.1-beta202511241537"
29
+ "@xhsreds/reds-token-next": "0.10.0"
30
30
  },
31
31
  "peerDependenciesMeta": {
32
32
  "ozone-schema-web": {
@@ -1,6 +1,5 @@
1
1
  import { StyleSheet, Platform } from "react-native";
2
2
  import { useThemeTypography, useThemeColor } from "../ConfigProvider";
3
- import { alwaysColor } from "@xhs/reds-token-next";
4
3
 
5
4
  const avatarSizeToTagMargin = {
6
5
  small: -4,
@@ -163,7 +162,7 @@ export const getLiveTextStyles = (size: AvatarSize, liveIcon: any) => {
163
162
  liveTextSmall: {
164
163
  fontSize: 8,
165
164
  textAlign: "center",
166
- color: alwaysColor.White,
165
+ color: themeColor.White,
167
166
  display: "flex",
168
167
  justifyContent: "center",
169
168
  alignItems: "center",
@@ -171,18 +170,18 @@ export const getLiveTextStyles = (size: AvatarSize, liveIcon: any) => {
171
170
  liveTextMedium: {
172
171
  fontSize: 8,
173
172
  textAlign: "center",
174
- color: alwaysColor.White,
173
+ color: themeColor.White,
175
174
  },
176
175
  liveTextLarge: {
177
176
  fontSize: typography.C3FontSize,
178
177
  fontWeight: typography.C3FontWeight,
179
178
  textAlign: "center",
180
- color: alwaysColor.White,
179
+ color: themeColor.White,
181
180
  },
182
181
  liveTextXLarge: {
183
182
  fontSize: typography.C2FontSize,
184
183
  textAlign: "center",
185
- color: alwaysColor.White,
184
+ color: themeColor.White,
186
185
  },
187
186
  });
188
187
 
@@ -5,7 +5,7 @@ export const getStyles = (themeColor: any) => {
5
5
  bottomBar: {
6
6
  width: "100%",
7
7
  padding: 8,
8
- backgroundColor: themeColor.Bg,
8
+ backgroundColor: "inherit",
9
9
  },
10
10
  fixed: {
11
11
  position: "absolute",
@@ -37,7 +37,6 @@ export default function App() {
37
37
  const [value14, setValue14] = useState("2023-10-05-12");
38
38
  const [value16, setValue16] = useState("2023-10-05-12-10");
39
39
  const [value17, setValue17] = useState("2025-9-15-14-25");
40
- const [value18, setValue18] = useState("2025-11-20");
41
40
 
42
41
  const [visible1, setVisible1] = useState(false);
43
42
  const [visible2, setVisible2] = useState(false);
@@ -55,7 +54,6 @@ export default function App() {
55
54
  const [visible14, setVisible14] = useState(false);
56
55
  const [visible16, setVisible16] = useState(false);
57
56
  const [visible17, setVisible17] = useState(false);
58
- const [visible18, setVisible18] = useState(false);
59
57
 
60
58
  const { show, remove } = useDatePicker();
61
59
  return (
@@ -331,30 +329,6 @@ export default function App() {
331
329
  >
332
330
  函数式调用
333
331
  </Button>
334
-
335
- <Button
336
- onClick={() => {
337
- setVisible18(true);
338
- }}
339
- >
340
- 跳动bug
341
- </Button>
342
- <DatePicker
343
- visible={visible18}
344
- value={value18}
345
- label={"跳动bug"}
346
- startTime={"1900-01-01"}
347
- endTime={"2200-12-31"}
348
- onConfirm={(val: string) => {
349
- console.log("onConfirm18", val);
350
- setValue18(val);
351
- setVisible18(false);
352
- }}
353
- onChange={(val: string) => {
354
- console.log("onChange18", val);
355
- }}
356
- onCancel={() => setVisible18(false)}
357
- />
358
332
  <View style={{ height: 200 }}></View>
359
333
  </ScrollView>
360
334
  );
@@ -20,26 +20,25 @@ const Wheel = (props: RedsWheel) => {
20
20
  */
21
21
  const themeColor = useThemeColor();
22
22
 
23
- const [lastValue, setLastValue] = useState(value);
23
+ /**
24
+ * index
25
+ */
26
+ const [index, setIndex] = useState<any>();
24
27
 
25
28
  /**
26
29
  * 初始化滚动高度
27
30
  */
28
31
  useEffect(() => {
29
- if (value !== lastValue) {
30
- const idx = getSelectIndex(column, value);
31
- handleScroll(idx);
32
- }
32
+ value && setIndex(getSelectIndex(column, value));
33
33
  }, [column, value]);
34
34
 
35
- const handleScroll = (idx: number) => {
36
- const newVal = column?.[idx]?.value;
37
- scrollTo(idx * itemHeight);
35
+ useEffect(() => {
36
+ const newVal = column?.[index]?.value;
37
+ scrollTo(index * itemHeight);
38
38
  if (newVal) {
39
- setLastValue(newVal);
40
39
  onSelect(newVal, props.index);
41
40
  }
42
- };
41
+ }, [index, props.index]);
43
42
 
44
43
  /**
45
44
  * 滚动ScrollView
@@ -84,13 +83,11 @@ const Wheel = (props: RedsWheel) => {
84
83
  e.persist?.();
85
84
  let contentOffset = e.nativeEvent.contentOffset;
86
85
  const selectIndex = Math.round(contentOffset.y / itemHeight);
87
- const newVal = column?.[selectIndex]?.value;
88
- setLastValue(newVal);
89
- onSelect(newVal, props.index);
86
+ setIndex(selectIndex);
90
87
  };
91
88
 
92
89
  const handleClick = (index: number) => {
93
- handleScroll(index);
90
+ setIndex(index);
94
91
  };
95
92
 
96
93
  /**
@@ -277,6 +277,13 @@ export default function PullRefresh(props: RedsPullRefresh) {
277
277
  animatedTo(0, () => {
278
278
  setIsPulling(false);
279
279
  updatePullState(PullState.INIT);
280
+ // Reset manually-set transforms to sync with animated value (fixes iOS first swipe not responding)
281
+ viewRef.current?.setNativeProps({
282
+ style: { transform: [{ translateY: 0 }] },
283
+ });
284
+ animatedViewRef.current?.setNativeProps({
285
+ style: { transform: [{ translateY: 0 }] },
286
+ });
280
287
  });
281
288
  updatePullState(PullState.FINISH);
282
289
  }, props?.msHoldingTime ?? 1000),
@@ -296,11 +303,14 @@ export default function PullRefresh(props: RedsPullRefresh) {
296
303
 
297
304
  // 重写ScrollView的onScroll事件(自定义:用于手势门控/头部位置; Android 原生:注入 RefreshControl)
298
305
  const scrollContent = useMemo(() => {
299
- return React.Children.map(props.children, (child: any) =>
300
- React.cloneElement(child, {
301
- // 设置滚动响应频率
302
- scrollEventThrottle: 1,
303
- ...(Platform.OS === "android" && props.nativeAndroidPullRefresh
306
+ return React.Children.map(props.children, (child: any) => {
307
+ const originalOnScroll = child.props.onScroll;
308
+ const hasNativeDriver =
309
+ originalOnScroll &&
310
+ (originalOnScroll["__isNative"] === true || (originalOnScroll as any)?._animation?.useNativeDriver === true);
311
+
312
+ const injectedProps =
313
+ Platform.OS === "android" && props.nativeAndroidPullRefresh
304
314
  ? {
305
315
  refreshControl: (
306
316
  <RNRefreshControl
@@ -326,37 +336,70 @@ export default function PullRefresh(props: RedsPullRefresh) {
326
336
  />
327
337
  ),
328
338
  onScroll: (evt: any) => {
329
- if (child.props.onScroll && typeof child.props.onScroll === "function") {
330
- child.props.onScroll(evt);
339
+ if (originalOnScroll && typeof originalOnScroll === "function") {
340
+ originalOnScroll(evt);
331
341
  }
332
342
  },
333
343
  }
334
- : {
335
- onScroll: (evt: any) => {
336
- setScrollY(evt.nativeEvent.contentOffset.y);
337
- // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑
338
- if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {
339
- const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);
340
- viewRef.current &&
341
- viewRef.current.setNativeProps({
342
- style: {
343
- transform: [{ translateY: y }],
344
- },
345
- });
346
- animatedViewRef.current &&
347
- animatedViewRef.current.setNativeProps({
348
- style: {
349
- transform: [{ translateY: y }],
350
- },
351
- });
352
- }
353
- if (child.props.onScroll && typeof child.props.onScroll === "function") {
354
- child.props.onScroll(evt);
355
- }
356
- },
357
- }),
358
- }),
359
- );
344
+ : hasNativeDriver
345
+ ? {
346
+ // When the child uses native-driver Animated.event, keep it intact to avoid crashes
347
+ onScroll: originalOnScroll,
348
+ onMomentumScrollEnd: (evt: any) => {
349
+ setScrollY(evt.nativeEvent.contentOffset.y);
350
+ child.props.onMomentumScrollEnd && child.props.onMomentumScrollEnd(evt);
351
+ },
352
+ onScrollEndDrag: (evt: any) => {
353
+ setScrollY(evt.nativeEvent.contentOffset.y);
354
+ // Keep header position in loading state
355
+ if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {
356
+ const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);
357
+ viewRef.current &&
358
+ viewRef.current.setNativeProps({
359
+ style: {
360
+ transform: [{ translateY: y }],
361
+ },
362
+ });
363
+ animatedViewRef.current &&
364
+ animatedViewRef.current.setNativeProps({
365
+ style: {
366
+ transform: [{ translateY: y }],
367
+ },
368
+ });
369
+ }
370
+ child.props.onScrollEndDrag && child.props.onScrollEndDrag(evt);
371
+ },
372
+ }
373
+ : {
374
+ onScroll: (evt: any) => {
375
+ setScrollY(evt.nativeEvent.contentOffset.y);
376
+ // iOS下拉刷新Loading时,ScrollView向上滑动的时候,refreshControl部分同样上滑
377
+ if (pullState === PullState.LOADING && evt.nativeEvent.contentOffset.y > 0) {
378
+ const y = Math.max(0, pullAnimHeight - evt.nativeEvent.contentOffset.y);
379
+ viewRef.current &&
380
+ viewRef.current.setNativeProps({
381
+ style: {
382
+ transform: [{ translateY: y }],
383
+ },
384
+ });
385
+ animatedViewRef.current &&
386
+ animatedViewRef.current.setNativeProps({
387
+ style: {
388
+ transform: [{ translateY: y }],
389
+ },
390
+ });
391
+ }
392
+ if (originalOnScroll && typeof originalOnScroll === "function") {
393
+ originalOnScroll(evt);
394
+ }
395
+ },
396
+ };
397
+
398
+ return React.cloneElement(child, {
399
+ scrollEventThrottle: 1,
400
+ ...injectedProps,
401
+ });
402
+ });
360
403
  }, [
361
404
  pullState,
362
405
  props.children,
@@ -64,9 +64,9 @@ const Radio = (props: RedsRadio) => {
64
64
  const labelStyle = getLabelStyle(disabled || parent?.disabled, size, parent?.direction);
65
65
 
66
66
  const iconSizeMap: Record<"small" | "medium" | "large", number> = {
67
- small: 12,
68
- medium: 16,
69
- large: 20,
67
+ small: 16,
68
+ medium: 20,
69
+ large: 24,
70
70
  };
71
71
 
72
72
  const rightStyle = getRightIconStyle(size);
@@ -2,9 +2,9 @@ import { StyleSheet, ViewStyle, TextStyle, DimensionValue } from "react-native";
2
2
  import { useThemeColor } from "../ConfigProvider";
3
3
  import { typography } from "@xhs/reds-token-next";
4
4
  const iconSizeMap: Record<"small" | "medium" | "large" | string, number> = {
5
- small: 12,
6
- medium: 16,
7
- large: 20,
5
+ small: typography.B1FontSize,
6
+ medium: typography.H3FontSize,
7
+ large: typography.H2FontSize,
8
8
  };
9
9
  const fontSizeMap: Record<"small" | "medium" | "large", number> = {
10
10
  small: 12,
@@ -43,6 +43,7 @@ export const getContainerStyle = (direction?: string | undefined, position?: "le
43
43
  alignItems: "center",
44
44
  justifyContent: "flex-start",
45
45
  backgroundColor: direction === "vertical" ? themeColor.Bg : undefined,
46
+ paddingHorizontal: 16,
46
47
  };
47
48
  };
48
49
 
@@ -98,6 +99,7 @@ export const getLabelStyle = (
98
99
 
99
100
  return {
100
101
  color: disabled ? themeColor.Disabled : themeColor.Title,
102
+ lineHeight: iconSizeMap[size],
101
103
  fontSize: fontSizeMap[size],
102
104
  marginRight: direction === "horizontal" ? 8 : 0,
103
105
  };