@xhsreds/reds-rn-next 0.2.2 → 0.2.3-beta202411091721

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 (250) hide show
  1. package/coverage/.tmp/coverage-10.json +1 -1
  2. package/coverage/.tmp/coverage-11.json +1 -1
  3. package/coverage/.tmp/coverage-12.json +1 -1
  4. package/coverage/.tmp/coverage-13.json +1 -1
  5. package/coverage/.tmp/coverage-14.json +1 -1
  6. package/coverage/.tmp/coverage-16.json +1 -1
  7. package/coverage/.tmp/coverage-17.json +1 -1
  8. package/coverage/.tmp/coverage-18.json +1 -1
  9. package/coverage/.tmp/coverage-19.json +1 -1
  10. package/coverage/.tmp/coverage-20.json +1 -1
  11. package/coverage/.tmp/coverage-21.json +1 -1
  12. package/coverage/.tmp/coverage-22.json +1 -1
  13. package/coverage/.tmp/coverage-23.json +1 -1
  14. package/coverage/.tmp/coverage-24.json +1 -1
  15. package/coverage/.tmp/coverage-25.json +1 -1
  16. package/coverage/.tmp/coverage-26.json +1 -1
  17. package/coverage/.tmp/coverage-27.json +1 -1
  18. package/coverage/.tmp/coverage-28.json +1 -1
  19. package/coverage/.tmp/coverage-29.json +1 -1
  20. package/coverage/.tmp/coverage-30.json +1 -1
  21. package/coverage/.tmp/coverage-31.json +1 -1
  22. package/coverage/.tmp/coverage-32.json +1 -1
  23. package/coverage/.tmp/coverage-33.json +1 -1
  24. package/coverage/.tmp/coverage-34.json +1 -1
  25. package/coverage/.tmp/coverage-36.json +1 -1
  26. package/coverage/.tmp/coverage-37.json +1 -1
  27. package/coverage/.tmp/coverage-38.json +1 -1
  28. package/coverage/.tmp/coverage-5.json +1 -1
  29. package/coverage/.tmp/coverage-8.json +1 -1
  30. package/coverage/.tmp/coverage-9.json +1 -1
  31. package/lib/cjs/_chunks/1m42z2Mz.js.map +1 -1
  32. package/lib/cjs/_chunks/{BZY8fLHP.js → BRcYv_kj.js} +3 -2
  33. package/lib/cjs/_chunks/BRcYv_kj.js.map +1 -0
  34. package/lib/cjs/_chunks/{G5T1hGVo.js → BmmacXcR.js} +4 -2
  35. package/lib/cjs/_chunks/BmmacXcR.js.map +1 -0
  36. package/lib/cjs/_chunks/{ZbRoGP_k.js → DY75DWu0.js} +4 -2
  37. package/lib/cjs/_chunks/DY75DWu0.js.map +1 -0
  38. package/lib/cjs/_chunks/{CnvQUDZP.js → SPLAvS-C.js} +3 -2
  39. package/lib/cjs/_chunks/SPLAvS-C.js.map +1 -0
  40. package/lib/cjs/_chunks/{SEcsCrAk.js → aU6iuR1W.js} +2 -2
  41. package/lib/cjs/_chunks/aU6iuR1W.js.map +1 -0
  42. package/lib/cjs/_chunks/{CbnkUMH9.js → dM-QhrnE.js} +11 -9
  43. package/lib/cjs/_chunks/dM-QhrnE.js.map +1 -0
  44. package/lib/cjs/components/ActionSheets/ActionSheets.js +13 -7
  45. package/lib/cjs/components/ActionSheets/ActionSheets.js.map +1 -1
  46. package/lib/cjs/components/ActionSheets/index.js +1 -1
  47. package/lib/cjs/components/ActionSheets/styles.js +6 -3
  48. package/lib/cjs/components/ActionSheets/styles.js.map +1 -1
  49. package/lib/cjs/components/Alert/Alert.js +6 -6
  50. package/lib/cjs/components/Alert/hooks/alert.js +6 -6
  51. package/lib/cjs/components/Alert/index.js +6 -6
  52. package/lib/cjs/components/AvatarGroup/AvatarGroup.js +6 -6
  53. package/lib/cjs/components/AvatarGroup/index.js +6 -6
  54. package/lib/cjs/components/CheckBoxGroup/CheckBox.js +5 -1
  55. package/lib/cjs/components/CheckBoxGroup/CheckBox.js.map +1 -1
  56. package/lib/cjs/components/CheckBoxGroup/CheckBoxGroup.js +2 -1
  57. package/lib/cjs/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  58. package/lib/cjs/components/DatePicker/DatePicker.js +1 -1
  59. package/lib/cjs/components/DatePicker/index.js +1 -1
  60. package/lib/cjs/components/Form/Form.js +21 -17
  61. package/lib/cjs/components/Form/Form.js.map +1 -1
  62. package/lib/cjs/components/Form/FormItem.js +4 -4
  63. package/lib/cjs/components/Form/FormItem.js.map +1 -1
  64. package/lib/cjs/components/Form/index.js +2 -2
  65. package/lib/cjs/components/Form/interface/index.js +1 -1
  66. package/lib/cjs/components/Form/styles.js +1 -1
  67. package/lib/cjs/components/Icon/Icon.js +3 -1
  68. package/lib/cjs/components/Icon/Icon.js.map +1 -1
  69. package/lib/cjs/components/ImagePreview/ImagePreview.js +6 -6
  70. package/lib/cjs/components/ImagePreview/index.js +6 -6
  71. package/lib/cjs/components/List/ListItem/ListItem.js +6 -6
  72. package/lib/cjs/components/List/index.js +6 -6
  73. package/lib/cjs/components/Picker/Picker.js +1 -1
  74. package/lib/cjs/components/Picker/index.js +1 -1
  75. package/lib/cjs/components/Radio/Radio.js +6 -6
  76. package/lib/cjs/components/Radio/RadioGroup.js +4 -2
  77. package/lib/cjs/components/Radio/RadioGroup.js.map +1 -1
  78. package/lib/cjs/components/Radio/index.js +6 -6
  79. package/lib/cjs/components/Radio/interface/index.js +1 -1
  80. package/lib/cjs/components/Rate/Rate.js +2 -2
  81. package/lib/cjs/components/Rate/Rate.js.map +1 -1
  82. package/lib/cjs/components/Rate/index.js +1 -1
  83. package/lib/cjs/components/Rate/interface/index.js +1 -1
  84. package/lib/cjs/components/Sheets/AnimatedSheets.js +4 -2
  85. package/lib/cjs/components/Sheets/AnimatedSheets.js.map +1 -1
  86. package/lib/cjs/components/Sheets/Sheets.js +22 -13
  87. package/lib/cjs/components/Sheets/Sheets.js.map +1 -1
  88. package/lib/cjs/components/Sheets/api.js +1 -1
  89. package/lib/cjs/components/Sheets/index.js +1 -1
  90. package/lib/cjs/components/Sheets/interface/index.js +1 -1
  91. package/lib/cjs/components/Stepper/Stepper.js +4 -2
  92. package/lib/cjs/components/Stepper/Stepper.js.map +1 -1
  93. package/lib/cjs/components/Stepper/index.js +1 -1
  94. package/lib/cjs/components/Stepper/interface/index.js +1 -1
  95. package/lib/cjs/components/Tab/Tabs.js +98 -35
  96. package/lib/cjs/components/Tab/Tabs.js.map +1 -1
  97. package/lib/cjs/components/Tab/styles.js +11 -10
  98. package/lib/cjs/components/Tab/styles.js.map +1 -1
  99. package/lib/cjs/components/Uploader/Uploader.js +6 -6
  100. package/lib/cjs/components/Uploader/Uploader.js.map +1 -1
  101. package/lib/cjs/components/Uploader/styles.js +8 -5
  102. package/lib/cjs/components/Uploader/styles.js.map +1 -1
  103. package/lib/cjs/index.js +6 -6
  104. package/lib/esm/_chunks/{BKfYslcc.js → B92MXD-p.js} +3 -2
  105. package/lib/esm/_chunks/B92MXD-p.js.map +1 -0
  106. package/lib/esm/_chunks/{DIXhEK8L.js → B_rJA32w.js} +11 -9
  107. package/lib/esm/_chunks/B_rJA32w.js.map +1 -0
  108. package/lib/esm/_chunks/{DGYdiQBr.js → BaWeXDzj.js} +4 -2
  109. package/lib/esm/_chunks/BaWeXDzj.js.map +1 -0
  110. package/lib/esm/_chunks/CC8nLpzS.js.map +1 -1
  111. package/lib/esm/_chunks/{ClyMQ8-p.js → CQDVLUyF.js} +3 -3
  112. package/lib/esm/_chunks/CQDVLUyF.js.map +1 -0
  113. package/lib/esm/_chunks/{CQokOKfj.js → CqcNLT67.js} +4 -2
  114. package/lib/esm/_chunks/CqcNLT67.js.map +1 -0
  115. package/lib/esm/_chunks/{DR1NAacd.js → DGI1A77J.js} +3 -2
  116. package/lib/esm/_chunks/DGI1A77J.js.map +1 -0
  117. package/lib/esm/components/ActionSheets/ActionSheets.js +13 -7
  118. package/lib/esm/components/ActionSheets/ActionSheets.js.map +1 -1
  119. package/lib/esm/components/ActionSheets/index.js +1 -1
  120. package/lib/esm/components/ActionSheets/styles.js +6 -3
  121. package/lib/esm/components/ActionSheets/styles.js.map +1 -1
  122. package/lib/esm/components/Alert/Alert.js +6 -6
  123. package/lib/esm/components/Alert/hooks/alert.js +6 -6
  124. package/lib/esm/components/Alert/index.js +7 -7
  125. package/lib/esm/components/AvatarGroup/AvatarGroup.js +6 -6
  126. package/lib/esm/components/AvatarGroup/index.js +6 -6
  127. package/lib/esm/components/CheckBoxGroup/CheckBox.js +5 -1
  128. package/lib/esm/components/CheckBoxGroup/CheckBox.js.map +1 -1
  129. package/lib/esm/components/CheckBoxGroup/CheckBoxGroup.js +2 -1
  130. package/lib/esm/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  131. package/lib/esm/components/DatePicker/DatePicker.js +1 -1
  132. package/lib/esm/components/DatePicker/index.js +1 -1
  133. package/lib/esm/components/Form/Form.js +22 -18
  134. package/lib/esm/components/Form/Form.js.map +1 -1
  135. package/lib/esm/components/Form/FormItem.js +4 -4
  136. package/lib/esm/components/Form/FormItem.js.map +1 -1
  137. package/lib/esm/components/Form/index.js +2 -2
  138. package/lib/esm/components/Form/interface/index.js +1 -1
  139. package/lib/esm/components/Form/styles.js +1 -1
  140. package/lib/esm/components/Icon/Icon.js +4 -2
  141. package/lib/esm/components/Icon/Icon.js.map +1 -1
  142. package/lib/esm/components/ImagePreview/ImagePreview.js +6 -6
  143. package/lib/esm/components/ImagePreview/index.js +6 -6
  144. package/lib/esm/components/List/ListItem/ListItem.js +6 -6
  145. package/lib/esm/components/List/index.js +6 -6
  146. package/lib/esm/components/Picker/Picker.js +1 -1
  147. package/lib/esm/components/Picker/index.js +1 -1
  148. package/lib/esm/components/Radio/Radio.js +6 -6
  149. package/lib/esm/components/Radio/RadioGroup.js +4 -2
  150. package/lib/esm/components/Radio/RadioGroup.js.map +1 -1
  151. package/lib/esm/components/Radio/index.js +6 -6
  152. package/lib/esm/components/Radio/interface/index.js +1 -1
  153. package/lib/esm/components/Rate/Rate.js +2 -2
  154. package/lib/esm/components/Rate/Rate.js.map +1 -1
  155. package/lib/esm/components/Rate/index.js +1 -1
  156. package/lib/esm/components/Rate/interface/index.js +1 -1
  157. package/lib/esm/components/Sheets/AnimatedSheets.js +4 -2
  158. package/lib/esm/components/Sheets/AnimatedSheets.js.map +1 -1
  159. package/lib/esm/components/Sheets/Sheets.js +22 -13
  160. package/lib/esm/components/Sheets/Sheets.js.map +1 -1
  161. package/lib/esm/components/Sheets/api.js +1 -1
  162. package/lib/esm/components/Sheets/index.js +1 -1
  163. package/lib/esm/components/Sheets/interface/index.js +1 -1
  164. package/lib/esm/components/Stepper/Stepper.js +4 -2
  165. package/lib/esm/components/Stepper/Stepper.js.map +1 -1
  166. package/lib/esm/components/Stepper/index.js +1 -1
  167. package/lib/esm/components/Stepper/interface/index.js +1 -1
  168. package/lib/esm/components/Tab/Tabs.js +100 -37
  169. package/lib/esm/components/Tab/Tabs.js.map +1 -1
  170. package/lib/esm/components/Tab/styles.js +11 -10
  171. package/lib/esm/components/Tab/styles.js.map +1 -1
  172. package/lib/esm/components/Uploader/Uploader.js +6 -6
  173. package/lib/esm/components/Uploader/Uploader.js.map +1 -1
  174. package/lib/esm/components/Uploader/styles.js +8 -5
  175. package/lib/esm/components/Uploader/styles.js.map +1 -1
  176. package/lib/esm/index.js +6 -6
  177. package/lib/types/components/ActionSheets/styles.d.ts +4 -1
  178. package/lib/types/components/CheckBoxGroup/interface/index.d.ts +1 -0
  179. package/lib/types/components/Form/Form.d.ts +1 -7
  180. package/lib/types/components/Form/interface/index.d.ts +15 -3
  181. package/lib/types/components/Radio/interface/index.d.ts +7 -0
  182. package/lib/types/components/Rate/Rate.d.ts +1 -0
  183. package/lib/types/components/Rate/interface/index.d.ts +2 -0
  184. package/lib/types/components/Sheets/AnimatedSheets.d.ts +2 -4
  185. package/lib/types/components/Sheets/Sheets.d.ts +1 -1
  186. package/lib/types/components/Sheets/interface/index.d.ts +2 -2
  187. package/lib/types/components/Stepper/Stepper.d.ts +1 -0
  188. package/lib/types/components/Stepper/interface/index.d.ts +2 -0
  189. package/lib/types/components/Tab/styles.d.ts +7 -6
  190. package/lib/types/components/Uploader/styles.d.ts +5 -2
  191. package/package.json +1 -1
  192. package/src/components/ActionSheets/ActionSheets.tsx +12 -9
  193. package/src/components/ActionSheets/demo/index.tsx +27 -1
  194. package/src/components/ActionSheets/styles.ts +4 -1
  195. package/src/components/CheckBoxGroup/CheckBox.tsx +5 -1
  196. package/src/components/CheckBoxGroup/CheckBoxGroup.tsx +1 -0
  197. package/src/components/CheckBoxGroup/interface/index.ts +1 -0
  198. package/src/components/Form/Form.tsx +24 -13
  199. package/src/components/Form/FormItem.tsx +8 -3
  200. package/src/components/Form/demo/index.tsx +63 -7
  201. package/src/components/Form/doc/index.mdx +9 -7
  202. package/src/components/Form/interface/index.ts +15 -3
  203. package/src/components/Icon/Icon.tsx +5 -3
  204. package/src/components/Icon/demo/index.tsx +0 -1
  205. package/src/components/Radio/Radio.tsx +8 -2
  206. package/src/components/Radio/RadioGroup.tsx +2 -1
  207. package/src/components/Radio/doc/index.mdx +11 -8
  208. package/src/components/Radio/interface/index.ts +7 -0
  209. package/src/components/Rate/Rate.tsx +1 -1
  210. package/src/components/Rate/doc/index.mdx +10 -9
  211. package/src/components/Rate/interface/index.ts +2 -0
  212. package/src/components/Sheets/AnimatedSheets.tsx +1 -1
  213. package/src/components/Sheets/Sheets.tsx +27 -13
  214. package/src/components/Sheets/demo/index.tsx +23 -0
  215. package/src/components/Sheets/doc/index.mdx +1 -1
  216. package/src/components/Sheets/interface/index.ts +2 -2
  217. package/src/components/Stepper/Stepper.tsx +11 -9
  218. package/src/components/Stepper/doc/index.mdx +7 -6
  219. package/src/components/Stepper/interface/index.ts +2 -0
  220. package/src/components/Tab/Tabs.tsx +147 -88
  221. package/src/components/Tab/demo/index.tsx +33 -11
  222. package/src/components/Tab/styles.ts +8 -6
  223. package/src/components/Uploader/Uploader.tsx +6 -6
  224. package/src/components/Uploader/styles.ts +5 -2
  225. package/types/src/components/ActionSheets/styles.d.ts +4 -1
  226. package/types/src/components/CheckBoxGroup/interface/index.d.ts +1 -0
  227. package/types/src/components/Form/Form.d.ts +1 -7
  228. package/types/src/components/Form/interface/index.d.ts +15 -3
  229. package/types/src/components/Radio/interface/index.d.ts +7 -0
  230. package/types/src/components/Rate/Rate.d.ts +1 -0
  231. package/types/src/components/Rate/interface/index.d.ts +2 -0
  232. package/types/src/components/Sheets/AnimatedSheets.d.ts +2 -4
  233. package/types/src/components/Sheets/Sheets.d.ts +1 -1
  234. package/types/src/components/Sheets/interface/index.d.ts +2 -2
  235. package/types/src/components/Stepper/Stepper.d.ts +1 -0
  236. package/types/src/components/Stepper/interface/index.d.ts +2 -0
  237. package/types/src/components/Tab/styles.d.ts +7 -6
  238. package/types/src/components/Uploader/styles.d.ts +5 -2
  239. package/lib/cjs/_chunks/BZY8fLHP.js.map +0 -1
  240. package/lib/cjs/_chunks/CbnkUMH9.js.map +0 -1
  241. package/lib/cjs/_chunks/CnvQUDZP.js.map +0 -1
  242. package/lib/cjs/_chunks/G5T1hGVo.js.map +0 -1
  243. package/lib/cjs/_chunks/SEcsCrAk.js.map +0 -1
  244. package/lib/cjs/_chunks/ZbRoGP_k.js.map +0 -1
  245. package/lib/esm/_chunks/BKfYslcc.js.map +0 -1
  246. package/lib/esm/_chunks/CQokOKfj.js.map +0 -1
  247. package/lib/esm/_chunks/ClyMQ8-p.js.map +0 -1
  248. package/lib/esm/_chunks/DGYdiQBr.js.map +0 -1
  249. package/lib/esm/_chunks/DIXhEK8L.js.map +0 -1
  250. package/lib/esm/_chunks/DR1NAacd.js.map +0 -1
@@ -22,15 +22,19 @@ export interface RedsForm {
22
22
  data: FormData;
23
23
  rules: FormRules;
24
24
  onSubmit?: (value: FormData) => any;
25
- children: ReactNode[];
25
+ children: ReactNode[] | ReactNode;
26
26
  layout?: LAYOUT;
27
27
  align?: ALIGN;
28
+ showSubmit?: boolean;
29
+ submitText?: string;
28
30
  }
29
31
  export interface RedsFormEvent {
30
32
  }
31
33
  export declare const FormDefaultProps: {
32
34
  layout: LAYOUT;
33
35
  align: ALIGN;
36
+ showSubmit: boolean;
37
+ submitText: string;
34
38
  };
35
39
  export interface RedsFormItem {
36
40
  /**
@@ -52,7 +56,7 @@ export interface RedsFormItem {
52
56
  /**
53
57
  * label
54
58
  */
55
- label: string;
59
+ label?: string;
56
60
  /**
57
61
  * value
58
62
  */
@@ -76,11 +80,19 @@ export interface RedsFormItem {
76
80
  /**
77
81
  * label styles
78
82
  */
79
- labelStyle?: TextStyle;
83
+ labelStyle?: ViewStyle;
84
+ /**
85
+ * label text styles
86
+ */
87
+ labelTextStyle?: TextStyle;
80
88
  /**
81
89
  * formItem slot styles
82
90
  */
83
91
  formItemSlotStyles?: ViewStyle;
92
+ /**
93
+ * label slot
94
+ */
95
+ LabelComponent?: ReactNode;
84
96
  }
85
97
  export interface RedsFormItemEvent {
86
98
  (e: "validate", value: Event): any;
@@ -1,15 +1,21 @@
1
1
  import React, { ReactNode } from "react";
2
+ import { ViewStyle } from "react-native";
2
3
  export interface RedsRadio {
3
4
  name?: string;
4
5
  size?: "small" | "medium" | "large";
5
6
  disabled?: boolean;
6
7
  checkedColor?: string;
7
8
  type?: "default" | "line";
9
+ customIcon?: string;
10
+ customIconStyle?: ViewStyle;
8
11
  children?: React.ReactNode;
9
12
  onClick?: (value: string) => void;
13
+ textStyle?: ViewStyle;
10
14
  }
11
15
  export declare const RadioDefaultProps: {
12
16
  disabled: boolean;
17
+ customIconStyle: {};
18
+ textStyle: {};
13
19
  };
14
20
  export interface RedsRadioGroup {
15
21
  modelValue: string | number;
@@ -21,6 +27,7 @@ export interface RedsRadioGroup {
21
27
  type?: "default" | "line";
22
28
  children?: ReactNode;
23
29
  onChange?: (value: string | number) => void;
30
+ style?: ViewStyle;
24
31
  }
25
32
  export interface RadioGroupContextProps {
26
33
  modelValue: string | number;
@@ -9,6 +9,7 @@ declare const Rate: {
9
9
  descType: RateDescType;
10
10
  pattern: RatePattern;
11
11
  texts: string[];
12
+ isControl: boolean;
12
13
  };
13
14
  };
14
15
  export default Rate;
@@ -25,6 +25,7 @@ export interface RedsRate {
25
25
  texts?: string[];
26
26
  value?: number;
27
27
  onChange?: (value: number) => void;
28
+ isControl?: boolean;
28
29
  }
29
30
  export interface RedsRateEvent {
30
31
  }
@@ -35,4 +36,5 @@ export declare const RateDefaultProps: {
35
36
  descType: RateDescType;
36
37
  pattern: RatePattern;
37
38
  texts: string[];
39
+ isControl: boolean;
38
40
  };
@@ -9,13 +9,11 @@ declare const Sheets: {
9
9
  sheetsType: SheetsType;
10
10
  cancel: boolean;
11
11
  close: boolean;
12
- zIndex: string;
12
+ zIndex: number;
13
13
  cancelType: SheetsActionType;
14
14
  closeType: SheetsActionType;
15
15
  cancelText: string;
16
- closeText: string; /**
17
- * 标题区域高度
18
- */
16
+ closeText: string;
19
17
  iconType: SheetsIconType;
20
18
  size: SheetsSize;
21
19
  onCancel: () => void;
@@ -12,7 +12,7 @@ declare const Sheets: {
12
12
  sheetsType: SheetsType;
13
13
  cancel: boolean;
14
14
  close: boolean;
15
- zIndex: string;
15
+ zIndex: number;
16
16
  cancelType: SheetsActionType;
17
17
  closeType: SheetsActionType;
18
18
  cancelText: string;
@@ -29,7 +29,7 @@ export interface RedsSheets {
29
29
  sheetsType?: SheetsType;
30
30
  cancel?: boolean;
31
31
  close?: boolean;
32
- zIndex?: string;
32
+ zIndex?: number;
33
33
  cancelType?: SheetsActionType;
34
34
  closeType?: SheetsActionType;
35
35
  cancelText?: string;
@@ -50,7 +50,7 @@ export declare const SheetsDefaultProps: {
50
50
  sheetsType: SheetsType;
51
51
  cancel: boolean;
52
52
  close: boolean;
53
- zIndex: string;
53
+ zIndex: number;
54
54
  cancelType: SheetsActionType;
55
55
  closeType: SheetsActionType;
56
56
  cancelText: string;
@@ -4,6 +4,7 @@ declare const Stepper: {
4
4
  (props: RedsStepper): React.JSX.Element;
5
5
  defaultProps: {
6
6
  disable: boolean;
7
+ isControl: boolean;
7
8
  };
8
9
  };
9
10
  export default Stepper;
@@ -4,9 +4,11 @@ export interface RedsStepper {
4
4
  min?: number;
5
5
  disable?: boolean;
6
6
  onChange?: (value: number) => any;
7
+ isControl?: boolean;
7
8
  }
8
9
  export interface RedsStepperEvent {
9
10
  }
10
11
  export declare const StepperDefaultProps: {
11
12
  disable: boolean;
13
+ isControl: boolean;
12
14
  };
@@ -5,10 +5,15 @@ declare const styles: {
5
5
  flexDirection: "row";
6
6
  alignItems: "center";
7
7
  justifyContent: "center";
8
+ width: "100%";
8
9
  };
9
10
  tabLeftContainer: {
10
11
  width: "100%";
11
12
  height: number;
13
+ display: "flex";
14
+ flexDirection: "row";
15
+ alignItems: "center";
16
+ justifyContent: "flex-start";
12
17
  };
13
18
  tabSpaceContainer: {
14
19
  width: "100%";
@@ -29,9 +34,10 @@ declare const styles: {
29
34
  };
30
35
  underline: {
31
36
  height: number;
32
- width: "90%";
33
37
  borderRadius: number;
34
38
  paddingHorizontal: number;
39
+ position: "absolute";
40
+ bottom: number;
35
41
  };
36
42
  smallText: {
37
43
  fontSize: number;
@@ -64,7 +70,6 @@ declare const styles: {
64
70
  flexDirection: "column";
65
71
  justifyContent: "center";
66
72
  alignItems: "center";
67
- position: "relative";
68
73
  };
69
74
  leftIcon: {
70
75
  marginRight: number;
@@ -97,10 +102,6 @@ declare const styles: {
97
102
  alignItems: "center";
98
103
  flexDirection: "row";
99
104
  };
100
- columnFlex: {
101
- display: "flex";
102
- alignItems: "center";
103
- };
104
105
  };
105
106
  export declare const getRedsDropDownVariantStyles: () => {
106
107
  color: {
@@ -14,6 +14,7 @@ declare function getUploaderStyle(props: RedsUploader, themeColor: any): {
14
14
  height: number;
15
15
  marginRight: number;
16
16
  marginTop: number;
17
+ borderRadius: number;
17
18
  };
18
19
  identityView: {
19
20
  position: "relative";
@@ -49,10 +50,12 @@ declare function getUploaderStyle(props: RedsUploader, themeColor: any): {
49
50
  identityImage: {
50
51
  width: number;
51
52
  height: number;
53
+ borderRadius: number;
52
54
  };
53
55
  image: {
54
56
  width: "100%";
55
57
  height: "100%";
58
+ borderRadius: number;
56
59
  };
57
60
  close: {
58
61
  width: number;
@@ -120,7 +123,7 @@ declare function getUploaderStyle(props: RedsUploader, themeColor: any): {
120
123
  flexDirection: "column";
121
124
  alignItems: "center";
122
125
  justifyContent: "center";
123
- backgroundColor: any;
126
+ backgroundColor: string;
124
127
  };
125
128
  identityProgressIndicator: {
126
129
  width: number;
@@ -134,7 +137,7 @@ declare function getUploaderStyle(props: RedsUploader, themeColor: any): {
134
137
  flexDirection: "column";
135
138
  alignItems: "center";
136
139
  justifyContent: "center";
137
- backgroundColor: any;
140
+ backgroundColor: string;
138
141
  };
139
142
  progressDesc: {
140
143
  color: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.2.2",
3
+ "version": "0.2.3-beta202411091721",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
@@ -1,9 +1,9 @@
1
1
  import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
2
- import { View, TouchableWithoutFeedback, Text } from "react-native";
2
+ import { View, TouchableWithoutFeedback, Text, ScrollView } from "react-native";
3
3
  import { RedsActionSheets, ActionSheetsDefaultProps } from "./interface/index";
4
4
  import styles from "./styles";
5
5
  import { useThemeColor } from "../ConfigProvider";
6
- import Sheets, { SheetsType } from "../Sheets";
6
+ import { Sheets, SheetsType } from "../Sheets";
7
7
  import { ActionType } from "./interface";
8
8
 
9
9
  const ActionSheets = (props: RedsActionSheets) => {
@@ -33,6 +33,7 @@ const ActionSheets = (props: RedsActionSheets) => {
33
33
  visible={props.visible}
34
34
  cancel={false}
35
35
  close={false}
36
+ size={SheetsType.SheetsSize.half}
36
37
  sheetsType={SheetsType.SheetsType.normal}
37
38
  onCancel={handleClose}
38
39
  >
@@ -44,13 +45,15 @@ const ActionSheets = (props: RedsActionSheets) => {
44
45
  ) : (
45
46
  <></>
46
47
  )}
47
- {props?.data?.map((item) => (
48
- <TouchableWithoutFeedback onPress={() => handleClick(item.value)}>
49
- <View style={[styles.action, { backgroundColor: themeColor.Bg2 }]}>
50
- <Text style={getActionStyles(item.type as ActionType)}>{item.label}</Text>
51
- </View>
52
- </TouchableWithoutFeedback>
53
- ))}
48
+ <ScrollView contentContainerStyle={{ flex: 1 }}>
49
+ {props?.data?.map((item) => (
50
+ <TouchableWithoutFeedback onPress={() => handleClick(item.value)} key={`${item.label}${item.value}`}>
51
+ <View style={[styles.action, { backgroundColor: themeColor.Bg2 }]}>
52
+ <Text style={getActionStyles(item.type as ActionType)}>{item.label}</Text>
53
+ </View>
54
+ </TouchableWithoutFeedback>
55
+ ))}
56
+ </ScrollView>
54
57
  <TouchableWithoutFeedback onPress={handleClose}>
55
58
  <View style={[styles.cancel, { backgroundColor: themeColor.Bg2 }]}>
56
59
  <Text style={{ color: themeColor.Title }}>取消</Text>
@@ -2,6 +2,16 @@ import React, { useRef, useEffect, useState } from "react";
2
2
  import { View, Text, StyleSheet, FlatList, ScrollView } from "react-native";
3
3
  import { ActionSheets, Button, ActionSheetsType } from "@xhs/reds-rn-next";
4
4
 
5
+ const styles = StyleSheet.create({
6
+ container: {
7
+ flex: 1,
8
+ justifyContent: "center",
9
+ paddingTop: 100,
10
+ paddingBottom: 100,
11
+ backgroundColor: "#eee",
12
+ },
13
+ });
14
+
5
15
  export default function App() {
6
16
  const [visible1, setVisible1] = useState(false);
7
17
  const [visible2, setVisible2] = useState(false);
@@ -26,6 +36,22 @@ export default function App() {
26
36
  label: "操作",
27
37
  value: "5",
28
38
  },
39
+ {
40
+ label: "操作",
41
+ value: "6",
42
+ },
43
+ {
44
+ label: "操作",
45
+ value: "7",
46
+ },
47
+ {
48
+ label: "操作",
49
+ value: "8",
50
+ },
51
+ {
52
+ label: "操作",
53
+ value: "9",
54
+ },
29
55
  ];
30
56
 
31
57
  const list1 = [
@@ -49,7 +75,7 @@ export default function App() {
49
75
  console.log("handleChange", value);
50
76
  };
51
77
  return (
52
- <View>
78
+ <View style={styles.container}>
53
79
  <Button onClick={() => setVisible1(true)}>有描述的ActionSheet</Button>
54
80
  <ActionSheets
55
81
  visible={visible1}
@@ -3,9 +3,11 @@ import { StyleSheet } from "react-native";
3
3
  const styles = StyleSheet.create({
4
4
  ActionSheetsContainer: {
5
5
  width: "100%",
6
- overflowY: "scroll",
7
6
  borderTopLeftRadius: 12,
8
7
  borderTopRightRadius: 12,
8
+ display: "flex",
9
+ height: "100%",
10
+ flexDirection: "column",
9
11
  },
10
12
  description: {
11
13
  height: 42,
@@ -18,6 +20,7 @@ const styles = StyleSheet.create({
18
20
  justifyContent: "center",
19
21
  borderTopLeftRadius: 12,
20
22
  borderTopRightRadius: 12,
23
+ flexShrink: 0,
21
24
  },
22
25
  descriptionText: {
23
26
  fontSize: 12,
@@ -25,7 +25,11 @@ const CheckBox = (props: RedsCheckBox) => {
25
25
  };
26
26
 
27
27
  useEffect(() => {
28
- setChecked((checkList as string[]).includes(props.value as string) || props.checked!);
28
+ if (props?.isControl) {
29
+ setChecked(props.checked!);
30
+ } else {
31
+ setChecked((checkList as string[]).includes(props.value as string));
32
+ }
29
33
  }, [props.checked]);
30
34
 
31
35
  return (
@@ -45,6 +45,7 @@ const CheckBoxGroup = (props: RedsCheckBoxGroup) => {
45
45
  disable: child?.props?.disable !== undefined || props.disable,
46
46
  size: props.size,
47
47
  onChange: handleChange,
48
+ isControl: false,
48
49
  });
49
50
  }
50
51
  })
@@ -60,6 +60,7 @@ export interface RedsCheckBox {
60
60
  style?: ViewStyle;
61
61
  size?: CheckBoxGroupSize;
62
62
  onChange?: (value: string | number, checked: boolean) => void;
63
+ isControl?: boolean;
63
64
  }
64
65
 
65
66
  export const RedsCheckBoxDefaultProps = {
@@ -1,26 +1,25 @@
1
- import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
1
+ import React, { useState, useRef, useEffect, useMemo, useCallback, forwardRef, useImperativeHandle } from "react";
2
2
  import { View, TouchableWithoutFeedback } from "react-native";
3
3
  import { RedsForm, FormDefaultProps, RedsFormItem } from "./interface/index";
4
4
  import { Button } from "../Button";
5
5
  import styles from "./styles";
6
6
 
7
- const Form = (props: RedsForm) => {
7
+ const Form = forwardRef((props: RedsForm, ref) => {
8
8
  const refs = useRef<React.Ref<any>[]>([]);
9
-
10
9
  /**
11
10
  * 默认插槽内容
12
11
  */
13
12
  const formItems = useMemo(() => {
14
- return props.children?.length
13
+ return props.children
15
14
  ? React.Children.map(props.children, (child, index) => {
16
15
  if (React.isValidElement(child)) {
17
16
  return React.cloneElement(child, {
18
- // @ts-ignore
19
17
  rules: props.rules[(child?.props as RedsFormItem)?.name],
20
18
  value: props.data[(child?.props as RedsFormItem)?.name],
21
19
  layout: props.layout,
22
20
  align: props.align,
23
21
  ref: (el: any) => (refs.current[index] = el),
22
+ ...child?.props,
24
23
  });
25
24
  }
26
25
  })
@@ -28,26 +27,38 @@ const Form = (props: RedsForm) => {
28
27
  }, [props.children, props.rules, props.data]);
29
28
 
30
29
  const handleSubmit = () => {
31
- refs?.current?.forEach?.((ref: any) => {
32
- if (ref?.handleValidate) {
33
- const validate = ref.handleValidate?.();
30
+ for (let i = 0; i < refs?.current.length; i++) {
31
+ // @ts-expect-error
32
+ if (refs.current[i]?.handleValidate) {
33
+ // @ts-expect-error
34
+ const validate = refs.current[i].handleValidate?.();
34
35
  if (!validate) {
35
36
  return;
36
37
  }
37
38
  }
38
- });
39
+ }
39
40
  props?.onSubmit?.(props.data);
40
41
  };
41
42
 
43
+ useImperativeHandle(ref, () => {
44
+ return {
45
+ handleSubmit,
46
+ };
47
+ });
48
+
42
49
  return (
43
50
  <>
44
51
  {formItems}
45
- <Button onClick={handleSubmit} type={"primary"} variant={"fill"} block>
46
- 提交
47
- </Button>
52
+ {props.showSubmit ? (
53
+ <Button onClick={handleSubmit} type={"primary"} variant={"fill"} block>
54
+ {props.submitText}
55
+ </Button>
56
+ ) : (
57
+ <></>
58
+ )}
48
59
  </>
49
60
  );
50
- };
61
+ });
51
62
 
52
63
  Form.defaultProps = FormDefaultProps;
53
64
 
@@ -12,6 +12,7 @@ import styles, {
12
12
  const FormItem = forwardRef((props: RedsFormItem, ref) => {
13
13
  const themeColor = useThemeColor();
14
14
  const [warning, setWarning] = useState("");
15
+
15
16
  /**
16
17
  * 提交前校验
17
18
  */
@@ -41,16 +42,20 @@ const FormItem = forwardRef((props: RedsFormItem, ref) => {
41
42
  useImperativeHandle(ref, () => ({
42
43
  handleValidate,
43
44
  }));
44
-
45
45
  return (
46
46
  <View style={[computedFormItemStyle(props, themeColor), props.styles]}>
47
47
  {/** label */}
48
- <View style={computedLabelContainerStyle(props)}>
48
+ <View style={[computedLabelContainerStyle(props), props.labelStyle]}>
49
49
  <View style={{ position: "relative" }}>
50
- <Text style={[computedLabelStyle(themeColor), props.labelStyle]}>{props.label}</Text>
50
+ {props?.LabelComponent ? (
51
+ props?.LabelComponent
52
+ ) : (
53
+ <Text style={[computedLabelStyle(themeColor), props.labelTextStyle]}>{props.label}</Text>
54
+ )}
51
55
  {props.required ? <Text style={styles(themeColor).require}>{"*"}</Text> : <></>}
52
56
  </View>
53
57
  </View>
58
+
54
59
  {/** formItem插槽 */}
55
60
  <View style={[computedChildrenStyle(props), props.formItemSlotStyles]}>
56
61
  {props.children}
@@ -1,15 +1,28 @@
1
1
  import React, { useRef, useEffect, useState } from "react";
2
2
  import { View, Text, StyleSheet, FlatList, ScrollView } from "react-native";
3
- import { Form, FormItem, CheckBoxGroup, CheckBox, FormType, Rate, Stepper, RadioGroup, Radio } from "@xhs/reds-rn-next";
3
+ import {
4
+ Form,
5
+ FormItem,
6
+ CheckBoxGroup,
7
+ CheckBox,
8
+ FormType,
9
+ Rate,
10
+ Stepper,
11
+ RadioGroup,
12
+ Radio,
13
+ Button,
14
+ } from "@xhs/reds-rn-next";
4
15
 
5
16
  export default function App() {
6
17
  const [formData, setFormData] = useState({
7
18
  rate: 0,
8
19
  stepper: 3,
9
- radio: "B",
20
+ radio: "",
10
21
  checkbox: [1, 2, 3],
11
22
  });
12
23
 
24
+ const formRef = useRef();
25
+
13
26
  const [formRules, setFormRules] = useState({
14
27
  rate: [{ validator: (val: any) => val <= 4, message: "值不能超过4" }],
15
28
  stepper: [{ validator: (val: any) => val <= 3, message: "值不能大于3" }],
@@ -24,9 +37,10 @@ export default function App() {
24
37
  console.log("handleSubmit", value);
25
38
  };
26
39
 
27
- useEffect(() => {
28
- console.log("formData", formData);
29
- }, [formData]);
40
+ const handleSubmitCustom = () => {
41
+ // @ts-expect-error
42
+ formRef?.current?.handleSubmit?.();
43
+ };
30
44
 
31
45
  return (
32
46
  <ScrollView style={{ paddingHorizontal: 16 }}>
@@ -36,7 +50,6 @@ export default function App() {
36
50
  <Rate
37
51
  value={formData.rate}
38
52
  onChange={(value) => {
39
- console.log("Rate", value);
40
53
  setFormData((data) => ({ ...data, ...{ rate: value } }));
41
54
  }}
42
55
  />
@@ -47,7 +60,7 @@ export default function App() {
47
60
  onChange={(value) => setFormData((data) => ({ ...data, ...{ stepper: value } }))}
48
61
  />
49
62
  </FormItem>
50
- <FormItem label="radio输入" name="radio" value={formData.radio} key="radio">
63
+ <FormItem label="radio输入" name="radio" value={formData.radio} key="radio" required>
51
64
  <RadioGroup
52
65
  modelValue={formData.radio}
53
66
  onChange={(value: string | number) => setFormData((data) => ({ ...data, ...{ radio: value as string } }))}
@@ -136,6 +149,49 @@ export default function App() {
136
149
  </CheckBoxGroup>
137
150
  </FormItem>
138
151
  </Form>
152
+
153
+ <Text>部分垂直布局</Text>
154
+ <Form data={formData} rules={formRules} onSubmit={handleSubmit} showSubmit={false} ref={formRef}>
155
+ <FormItem label="rate" name="rate" value={formData.rate} required key="rate" layout={FormType.LAYOUT.VERTICAL}>
156
+ <Rate value={formData.rate} onChange={(value) => setFormData((data) => ({ ...data, ...{ rate: value } }))} />
157
+ </FormItem>
158
+ <FormItem label="stepper" name="stepper" value={formData.stepper} required key="stepper">
159
+ <Stepper
160
+ value={formData.stepper}
161
+ onChange={(value) => setFormData((data) => ({ ...data, ...{ stepper: value } }))}
162
+ />
163
+ </FormItem>
164
+ <FormItem label="radio输入" name="radio" value={formData.radio} key="radio">
165
+ <RadioGroup
166
+ modelValue={formData.radio}
167
+ onChange={(value: string | number) => setFormData((data) => ({ ...data, ...{ radio: value as string } }))}
168
+ >
169
+ <Radio name="A">选项</Radio>
170
+ <Radio name="B">选项</Radio>
171
+ <Radio name="C">选项</Radio>
172
+ </RadioGroup>
173
+ </FormItem>
174
+ <FormItem
175
+ label="checkbox输入"
176
+ name="checkbox"
177
+ value={formData.checkbox}
178
+ key="checkbox"
179
+ LabelComponent={<Text>自定义label</Text>}
180
+ >
181
+ <CheckBoxGroup
182
+ onChange={(val) => setFormData((data) => ({ ...data, checkbox: val as number[] }))}
183
+ value={formData.checkbox}
184
+ >
185
+ <CheckBox label="多选" value={1} />
186
+ <CheckBox label="多选" value={2} />
187
+ <CheckBox label="多选" value={3} />
188
+ <CheckBox label="多选" value={4} />
189
+ </CheckBoxGroup>
190
+ </FormItem>
191
+ </Form>
192
+ <Button onClick={handleSubmitCustom} type={"primary"} variant={"fill"} block>
193
+ 自定义提交按钮
194
+ </Button>
139
195
  </ScrollView>
140
196
  );
141
197
  }
@@ -10,13 +10,15 @@ import BaseDemo from "!!raw-loader!../demo/index.tsx";
10
10
 
11
11
  ### Props
12
12
 
13
- | 属性 | 描述 | 类型 | 默认值 |
14
- | -------- | ------------ | ----------- | ----------------- |
15
- | data | 表单数据 | FormData | |
16
- | rules | 表单校验规则 | FormRules | |
17
- | children | FormItem节点 | ReactNode[] | |
18
- | layout | 布局 | LAYOUT | LAYOUT.HORIZONTAL |
19
- | align | 方向 | ALIGN | ALIGN.LEFT |
13
+ | 属性 | 描述 | 类型 | 默认值 |
14
+ | ---------- | ------------ | ---------------------------- | ----------------- |
15
+ | data | 表单数据 | FormData | |
16
+ | rules | 表单校验规则 | FormRules | |
17
+ | children | FormItem节点 | ReactNode[] &#124; ReactNode | |
18
+ | layout | 布局 | LAYOUT | LAYOUT.HORIZONTAL |
19
+ | align | 方向 | ALIGN | ALIGN.LEFT |
20
+ | showSubmit | 是否需要按钮 | boolean | true |
21
+ | submitText | 提交按钮文案 | string | 提交 |
20
22
 
21
23
  ### Events
22
24