@fairys/rn-valtio-form-basic 0.0.13 → 1.0.0

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/README.md CHANGED
@@ -0,0 +1,482 @@
1
+ # rn-valtio-form-basic
2
+
3
+ ## 安装
4
+
5
+ ```bash
6
+ npm install @fairys/rn-valtio-form-basic # yarn add @fairys/rn-valtio-form-basic # pnpm add @fairys/rn-valtio-form-basic
7
+ ```
8
+
9
+ ## 表单参数
10
+
11
+ ### 重写样式部分
12
+
13
+ **布局**
14
+
15
+ ```ts
16
+ import { ViewProps } from 'react-native';
17
+ import type { FairysValtioFormLayoutContextOptions as _FairysValtioFormLayoutContextOptions } from '@fairys/valtio-form-basic';
18
+ export interface FairysValtioFormLayoutContextOptions extends Omit<_FairysValtioFormLayoutContextOptions, 'formItemStyle' | 'formItemLabelStyle' | 'formItemBodyStyle' | 'formItemClassName' | 'formItemLabelClassName' | 'formItemBodyClassName' | ''> {
19
+ /**表单项 style*/
20
+ formItemStyle?: ViewProps['style'];
21
+ /**表单项 label style*/
22
+ formItemLabelStyle?: ViewProps['style'];
23
+ /**表单项 body style*/
24
+ formItemBodyStyle?: ViewProps['style'];
25
+ }
26
+ export interface FairysValtioFormLayoutAttrsProps extends FairysValtioFormLayoutContextOptions {
27
+ /**
28
+ * @description gap 属性是用来设置网格行与列之间的间隙,该属性是row-gap and column-gap的简写形式。
29
+ */
30
+ gap?: string | number;
31
+ /**标题*/
32
+ title?: React.ReactNode;
33
+ /**额外内容*/
34
+ extra?: React.ReactNode;
35
+ /**内容*/
36
+ children?: React.ReactNode;
37
+ /**布局样式*/
38
+ style?: ViewProps['style'];
39
+ /**头部样式*/
40
+ headerStyle?: ViewProps['style'];
41
+ headerTextStyle?: ViewProps['style'];
42
+ /**额外内容样式*/
43
+ headerExtraStyle?: ViewProps['style'];
44
+ /**内容样式*/
45
+ bodyStyle?: ViewProps['style'];
46
+ /**是否边框*/
47
+ bordered?: boolean;
48
+ }
49
+ export declare class FairysValtioFormLayoutInstance {
50
+ state: FairysValtioFormLayoutContextOptions;
51
+ updated: (options?: FairysValtioFormLayoutContextOptions) => void;
52
+ }
53
+ /**初始化实例*/
54
+ export declare const useFairysValtioFormLayoutInstance: (instance?: FairysValtioFormLayoutInstance) => FairysValtioFormLayoutInstance;
55
+ /**布局上下文*/
56
+ export declare const FairysValtioFormLayoutContext: import("react").Context<FairysValtioFormLayoutInstance>;
57
+ /**获取布局上下文*/
58
+ export declare const useFairysValtioFormLayoutContext: () => [FairysValtioFormLayoutContextOptions, FairysValtioFormLayoutInstance];
59
+ /**
60
+ * 布局属性处理
61
+ */
62
+ export declare function useFairysValtioFormLayoutAttrs(props: FairysValtioFormLayoutAttrsProps): FairysValtioFormLayoutAttrsReturn;
63
+ export interface FairysValtioFormLayoutAttrsReturn {
64
+ /**列数*/
65
+ colCount: number;
66
+ /**规则校验失败错误提示位置*/
67
+ errorLayout: string;
68
+ /**
69
+ * label显示模式
70
+ * @platform RN 支持 between
71
+ */
72
+ labelMode: string;
73
+ /**
74
+ * 底部边框类型
75
+ */
76
+ itemBorderType: string;
77
+ /**表单布局实例*/
78
+ formLayoutInstance: FairysValtioFormLayoutInstance;
79
+ /**布局样式*/
80
+ layoutStyle: ViewProps['style'];
81
+ /**头部样式*/
82
+ headerStyle: ViewProps['style'];
83
+ /**头部标题样式*/
84
+ headerTitleStyle: ViewProps['style'];
85
+ /**头部额外内容样式*/
86
+ headerExtraStyle: ViewProps['style'];
87
+ /**内容样式*/
88
+ bodyStyle: ViewProps['style'];
89
+ }
90
+ ```
91
+
92
+ **表单项**
93
+
94
+ ```ts
95
+ /**表单项*/
96
+ import React from 'react';
97
+ import { ViewProps } from 'react-native';
98
+ import type { MObject, FairysValtioFormItemAttrsProps as _FairysValtioFormItemAttrsProps } from '@fairys/valtio-form-basic';
99
+ import { FairysValtioFormInstance, FairysValtioFormParentAttrs } from '@fairys/valtio-form-basic/esm/common';
100
+ import { FairysValtioFormLayoutContextOptions } from './layout';
101
+ export interface FairysValtioFormItemAttrsProps<T extends MObject<T> = Record<string, any>> extends Omit<_FairysValtioFormItemAttrsProps<T>, 'style' | 'labelStyle' | 'bodyStyle' | 'rowSpan' | 'className' | 'labelClassName' | 'bodyClassName'> {
102
+ style?: ViewProps['style'];
103
+ labelStyle?: ViewProps['style'];
104
+ bodyStyle?: ViewProps['style'];
105
+ }
106
+ /**
107
+ * 处理表单表单项属性
108
+ *
109
+ */
110
+ export declare function useFairysValtioFormItemAttrs<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemAttrsReturn<T>;
111
+ export interface FairysValtioFormItemAttrsReturn<T extends MObject<T> = Record<string, any>> {
112
+ /**表单项值*/
113
+ value?: any;
114
+ /**是否校验错误*/
115
+ isInvalid: boolean;
116
+ /**边框类型*/
117
+ itemBorderType: FairysValtioFormLayoutContextOptions['itemBorderType'];
118
+ /**值改变事件*/
119
+ onValueChange: (event: any) => void;
120
+ /**当前表单项占据列数*/
121
+ colSpan: number;
122
+ /**列数*/
123
+ colCount: number;
124
+ /**标签显示模式*/
125
+ labelMode: FairysValtioFormLayoutContextOptions['labelMode'];
126
+ /**错误提示位置*/
127
+ errorLayout: FairysValtioFormLayoutContextOptions['errorLayout'];
128
+ /**是否必填*/
129
+ isRequired: boolean;
130
+ /**表单状态*/
131
+ state: T;
132
+ /**错误状态*/
133
+ errorState: Record<PropertyKey, string[]>;
134
+ /**表单实例*/
135
+ formInstance: FairysValtioFormInstance<T>;
136
+ /**错误信息*/
137
+ error?: string[];
138
+ /**拼接父级字段名后得到的表单项名称*/
139
+ _name?: string;
140
+ /**表单项名称*/
141
+ name?: string;
142
+ /**表单项ID*/
143
+ id?: string;
144
+ /**表单项路径*/
145
+ paths?: (string | number)[];
146
+ /**父级字段名*/
147
+ parentName?: string;
148
+ /**表单属性名实例*/
149
+ formAttrsNameInstance: FairysValtioFormParentAttrs;
150
+ /**是否显示冒号*/
151
+ showColon: boolean;
152
+ // 基础样式
153
+ /**表单项样式*/
154
+ itemStyle: ViewProps['style'];
155
+ /**表单项容器样式*/
156
+ itemContainerStyle: ViewProps['style'];
157
+ /**表单项标签样式*/
158
+ itemLabelStyle: ViewProps['style'];
159
+ /**表单项标签文本样式*/
160
+ itemLabelTextStyle: ViewProps['style'];
161
+ /**表单项标签显示冒号样式*/
162
+ itemLabelShowColonStyle: ViewProps['style'];
163
+ /**表单项主体样式*/
164
+ itemBodyStyle: ViewProps['style'];
165
+ /**表单项输入样式*/
166
+ itemInputStyle: ViewProps['style'];
167
+ /**表单项额外样式*/
168
+ itemExtraStyle: ViewProps['style'];
169
+ /**错误样式*/
170
+ errorStyle: ViewProps['style'];
171
+ /**帮助样式*/
172
+ helpStyle: ViewProps['style'];
173
+ /**子元素*/
174
+ children?: React.ReactNode;
175
+ }
176
+ /**
177
+ * 没有样式的表单项属性,仅返回基础输入组件参数
178
+ */
179
+ export declare function useFairysValtioFormItemNoStyleAttrs<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemNoStyleAttrsReturn<T>;
180
+ export interface FairysValtioFormItemNoStyleAttrsReturn<T extends MObject<T> = Record<string, any>> {
181
+ /**表单项值*/
182
+ value?: any;
183
+ /**是否校验错误*/
184
+ isInvalid: boolean;
185
+ /**是否必填*/
186
+ isRequired: boolean;
187
+ /**错误信息*/
188
+ error?: string[];
189
+ /**值改变事件*/
190
+ onValueChange: (event: any) => void;
191
+ /**表单状态*/
192
+ state: T;
193
+ /**错误状态*/
194
+ errorState: Record<PropertyKey, string[]>;
195
+ /**表单实例*/
196
+ formInstance: FairysValtioFormInstance<T>;
197
+ /**拼接父级字段名后得到的表单项名称*/
198
+ _name?: string;
199
+ /**表单项名称*/
200
+ name?: string;
201
+ /**表单项ID*/
202
+ id?: string;
203
+ /**表单项路径*/
204
+ paths?: (string | number)[];
205
+ /**父级字段名*/
206
+ parentName?: string;
207
+ /**表单属性名实例*/
208
+ formAttrsNameInstance: FairysValtioFormParentAttrs;
209
+ /**子元素*/
210
+ children?: React.ReactNode;
211
+ }
212
+ ```
213
+
214
+ **表单**
215
+
216
+ ```ts
217
+ import type { MObject } from '@fairys/valtio-form-basic/esm/common';
218
+ import { FairysValtioFormInstance } from '@fairys/valtio-form-basic/esm/common';
219
+ import { type ReactNode } from 'react';
220
+ import { FairysValtioFormLayoutAttrsProps } from './layout';
221
+ import { RuleItem } from 'async-validator';
222
+ export interface FairysValtioFormAttrsProps<T extends MObject<T> = Record<string, any>> extends FairysValtioFormLayoutAttrsProps {
223
+ /**表单实例*/
224
+ form?: FairysValtioFormInstance<T>;
225
+ /**子元素*/
226
+ children: ReactNode;
227
+ /**表单项规则(如果表单项没有指定规则,则使用全局规则,如果表单项指定规则,则使用表单项规则)*/
228
+ rules?: Record<PropertyKey, RuleItem[]>;
229
+ /**表单初始值*/
230
+ formData?: FairysValtioFormInstance<T>['state'];
231
+ /**表单隐藏状态*/
232
+ hideState?: FairysValtioFormInstance<T>['hideState'];
233
+ /**
234
+ * 初始化表单数据类型,默认值为 deepCopy
235
+ * - deepCopy:使用深度拷贝初始化表单数据
236
+ * - immutable:直接使用对象(注意:当传递的不是`valtio`的`proxy`对象时,会使用`valtio`中的`proxy`声明)
237
+ */
238
+ initFormDataType?: 'deepCopy' | 'immutable';
239
+ }
240
+ /**
241
+ * 表单属性处理
242
+ */
243
+ export declare function useFairysValtioForm<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormAttrsProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): Omit<FairysValtioFormAttrsProps<T>, "initFormDataType" | "form" | "rules" | "formData" | "hideState"> & {
244
+ formInstance: FairysValtioFormInstance<T>;
245
+ };
246
+
247
+ ```
248
+
249
+ ### 类型
250
+
251
+ 部分参数依赖[基础表单组件概览](https://autumn-fairy-tales.github.io/valtio-form-basic/basic-form/)
252
+
253
+ **布局**
254
+
255
+ ```ts
256
+ import type { FairysValtioFormLayoutAttrsProps } from './hooks/layout';
257
+ export interface FairysRNValtioFormLayoutProps extends FairysValtioFormLayoutAttrsProps {}
258
+ export declare function FairysRNValtioFormLayout(props: FairysRNValtioFormLayoutProps): import("react/jsx-runtime").JSX.Element;
259
+
260
+ ```
261
+
262
+ **表单项**
263
+
264
+ ```ts
265
+ /**表单项*/
266
+ import type { ViewProps } from 'react-native';
267
+ import type { MObject } from '@fairys/valtio-form-basic';
268
+ import type { FairysValtioFormItemAttrsProps } from './hooks/form.item';
269
+ export interface FairysRNValtioFormItemProps<T extends MObject<T> = Record<string, any>> extends Omit<ViewProps, 'style'>, FairysValtioFormItemAttrsProps {
270
+ /**是否使用控制隐藏的表单项*/
271
+ isHide?: boolean;
272
+ /**是否使用无样式表单项*/
273
+ noStyle?: boolean;
274
+ }
275
+ /**普通表单项*/
276
+ export declare function FairysRNValtioFormItemBase<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
277
+ /**控制隐藏的表单项*/
278
+ export declare function FairysRNValtioFormHideItem<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
279
+ /**无样式表单项*/
280
+ export declare function FairysRNValtioFormItemNoStyle<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
281
+ /**表单项基础组件(根据isHide和noStyle判断是否使用控制隐藏的表单项和无样式表单项)*/
282
+ export declare function FairysRNValtioFormItem<T extends MObject<T> = Record<string, any>>(props: FairysRNValtioFormItemProps<T>): import("react/jsx-runtime").JSX.Element;
283
+
284
+ ```
285
+
286
+ **表单**
287
+
288
+ ```ts
289
+ import React from 'react';
290
+ import { FairysRNValtioFormItem, FairysRNValtioFormHideItem, FairysRNValtioFormItemBase } from './form.item';
291
+ import { useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextState, useFairysValtioFormInstanceContextHideState } from '@fairys/valtio-form-basic/esm/common';
292
+ import type { FairysValtioFormInstance, MObject } from '@fairys/valtio-form-basic/esm/common';
293
+ import type { FairysValtioFormAttrsProps } from './hooks/form';
294
+ export interface FairysRNValtioFormProps<T extends MObject<T> = Record<string, any>> extends FairysValtioFormAttrsProps<T> {
295
+ }
296
+ declare function FairysRNValtioFormBase<T extends MObject<T> = Record<string, any>>(props: FairysRNValtioFormProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): import("react/jsx-runtime").JSX.Element;
297
+ export declare const FairysRNValtioForm: typeof FairysRNValtioFormBase & {
298
+ /**初始化实例*/
299
+ useForm: typeof useFairysValtioFormInstance;
300
+ /**获取状态*/
301
+ useFormState: typeof useFairysValtioFormInstanceContextState;
302
+ /**获取隐藏状态*/
303
+ useFormHideState: typeof useFairysValtioFormInstanceContextHideState;
304
+ /**获取上下文实例*/
305
+ useFormInstance: typeof useFairysValtioFormInstanceContext;
306
+ /**表单项基础组件*/
307
+ FormItemBase: typeof FairysRNValtioFormItemBase;
308
+ /**表单项组件*/
309
+ FormItem: typeof FairysRNValtioFormItem;
310
+ /**隐藏表单项组件*/
311
+ FormHideItem: typeof FairysRNValtioFormHideItem;
312
+ };
313
+ ```
314
+
315
+ ## 案例
316
+
317
+ ### 基础使用
318
+
319
+ ```tsx
320
+ import { View, TouchableOpacity, Text, TextInput } from 'react-native';
321
+ import { FairysRNValtioForm } from '@fairys/rn-valtio-form-basic';
322
+ interface State {
323
+ username?: string;
324
+ username2?: string;
325
+ username3?: string;
326
+ username4?: string;
327
+ }
328
+
329
+ function Basic() {
330
+ const form = FairysRNValtioForm.useForm<State>();
331
+
332
+ const onSubmit = async () => {
333
+ try {
334
+ const values = await form.validate();
335
+ console.log(values);
336
+ } catch (error) {
337
+ console.log(error);
338
+ }
339
+ };
340
+
341
+ return (
342
+ <View style={{ padding: 20 }}>
343
+ <FairysRNValtioForm<State>
344
+ form={form}
345
+ rules={{
346
+ username: [{ required: true, message: '请输入用户名' }],
347
+ }}
348
+ >
349
+ <FairysRNValtioForm.FormItem name="username" label="用户名">
350
+ <TextInput placeholder="请输入" />
351
+ </FairysRNValtioForm.FormItem>
352
+ <FairysRNValtioForm.FormItem rules={[{ required: true, message: '请输入用户名2' }]} name="username2" label="用户名2">
353
+ <TextInput placeholder="请输入" />
354
+ </FairysRNValtioForm.FormItem>
355
+ <FairysRNValtioForm.FormItem rules={[{ required: true, message: '请输入用户名3' }]} name="username3" label="用户名3">
356
+ <TextInput placeholder="请输入" />
357
+ </FairysRNValtioForm.FormItem>
358
+ <FairysRNValtioForm.FormItem rules={[{ required: true, message: '请输入用户名4' }]} name="username4" label="用户名4">
359
+ <TextInput placeholder="请输入" />
360
+ </FairysRNValtioForm.FormItem>
361
+ <TouchableOpacity onPress={onSubmit}>
362
+ <Text>提交</Text>
363
+ </TouchableOpacity>
364
+ </FairysRNValtioForm>
365
+ </View>
366
+ );
367
+ }
368
+ export default Basic;
369
+ ```
370
+
371
+ ### 监听数据渲染
372
+
373
+ ```tsx
374
+ import { View, TouchableOpacity, Text, TextInput } from 'react-native';
375
+ import { FairysRNValtioForm } from '@fairys/rn-valtio-form-basic';
376
+ interface State {
377
+ username?: string;
378
+ }
379
+
380
+ const Cusotm = () => {
381
+ const [formState] = FairysRNValtioForm.useFormState<State>();
382
+ return <View><Text>{formState.username}</Text></View>;
383
+ };
384
+
385
+ function Basic() {
386
+ const form = FairysRNValtioForm.useForm();
387
+
388
+ const onSubmit = async () => {
389
+ try {
390
+ const values = await form.validate();
391
+ console.log(values);
392
+ } catch (error) {
393
+ console.log(error);
394
+ }
395
+ };
396
+
397
+ const formState = FairysRNValtioForm.useFormInstanceToState(form);
398
+
399
+ return (
400
+ <View style={{ padding: 20 }}>
401
+ <View>用户名:{formState.username}</View>
402
+ <FairysRNValtioForm
403
+ form={form}
404
+ rules={{
405
+ username: [{ required: true, message: '请输入用户名' }],
406
+ }}
407
+ >
408
+ <FairysRNValtioForm.FormItem name="username" label="用户名">
409
+ <TextInput placeholder="请输入" />
410
+ </FairysRNValtioForm.FormItem>
411
+ <FairysRNValtioForm.FormItem label="监听数据渲染">
412
+ <Cusotm />
413
+ </FairysRNValtioForm.FormItem>
414
+ <TouchableOpacity onPress={onSubmit}>
415
+ <Text>提交</Text>
416
+ </TouchableOpacity>
417
+ </FairysRNValtioForm>
418
+ </View>
419
+ );
420
+ }
421
+ export default Basic;
422
+
423
+ ```
424
+
425
+ ### 隐藏表单项
426
+
427
+ ```tsx
428
+ import { View, TouchableOpacity, Text, TextInput } from 'react-native';
429
+ import { FairysRNValtioForm } from '@fairys/rn-valtio-form-basic';
430
+
431
+ interface State {
432
+ username?: string;
433
+ 隐藏表单项?: string;
434
+ }
435
+
436
+ function Basic() {
437
+ const form = FairysRNValtioForm.useForm<State>();
438
+
439
+ const onSubmit = async () => {
440
+ try {
441
+ const values = await form.validate();
442
+ console.log(values);
443
+ } catch (error) {
444
+ console.log(error);
445
+ }
446
+ };
447
+
448
+ return (
449
+ <View style={{ padding: 20 }}>
450
+ <FairysRNValtioForm<State>
451
+ form={form}
452
+ rules={{
453
+ username: [{ required: true, message: '请输入用户名' }],
454
+ }}
455
+ >
456
+ <FairysRNValtioForm.FormItem
457
+ name="username"
458
+ label="输入5隐藏表单项"
459
+ onAfterUpdate={(value) => {
460
+ console.log('value', value);
461
+ form.updatedHideInfo({ 隐藏表单项: value === '5' });
462
+ }}
463
+ >
464
+ <TextInput placeholder="请输入" />
465
+ </FairysRNValtioForm.FormItem>
466
+ <FairysRNValtioForm.FormHideItem
467
+ rules={[{ required: true, message: '请输入隐藏表单项' }]}
468
+ name="隐藏表单项"
469
+ label="隐藏表单项"
470
+ >
471
+ <TextInput placeholder="请输入隐藏表单项" />
472
+ </FairysRNValtioForm.FormHideItem>
473
+ <TouchableOpacity onPress={onSubmit}>
474
+ <Text>提交</Text>
475
+ </TouchableOpacity>
476
+ </FairysRNValtioForm>
477
+ </View>
478
+ );
479
+ }
480
+ export default Basic;
481
+
482
+ ```
package/esm/form.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { FairysRNValtioFormItem, FairysRNValtioFormHideItem, FairysRNValtioFormItemBase } from './form.item';
2
- import { useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextState, useFairysValtioFormInstanceContextHideState } from '@fairys/valtio-form-basic/esm/common';
2
+ import { useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextState, useFairysValtioFormInstanceContextHideState, useFairysValtioFormInstanceToState, useFairysValtioFormInstanceToHideState } from '@fairys/valtio-form-basic/esm/common';
3
3
  import type { FairysValtioFormInstance, MObject } from '@fairys/valtio-form-basic/esm/common';
4
4
  import type { FairysValtioFormAttrsProps } from './hooks/form';
5
5
  import React from 'react';
6
- export interface FairysRNValtioFormProps<T extends MObject<T> = object> extends FairysValtioFormAttrsProps<T> {
6
+ export interface FairysRNValtioFormProps<T extends MObject<T> = Record<string, any>> extends FairysValtioFormAttrsProps<T> {
7
7
  }
8
- declare function FairysRNValtioFormBase<T extends MObject<T> = object>(props: FairysRNValtioFormProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): import("react/jsx-runtime").JSX.Element;
8
+ declare function FairysRNValtioFormBase<T extends MObject<T> = Record<string, any>>(props: FairysRNValtioFormProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): import("react/jsx-runtime").JSX.Element;
9
9
  export declare const FairysRNValtioForm: typeof FairysRNValtioFormBase & {
10
10
  /**初始化实例*/
11
11
  useForm: typeof useFairysValtioFormInstance;
@@ -21,5 +21,9 @@ export declare const FairysRNValtioForm: typeof FairysRNValtioFormBase & {
21
21
  FormItem: typeof FairysRNValtioFormItem;
22
22
  /**隐藏表单项组件*/
23
23
  FormHideItem: typeof FairysRNValtioFormHideItem;
24
+ /**传递表单实例获取状态*/
25
+ useFormInstanceToState: typeof useFairysValtioFormInstanceToState;
26
+ /**传递表单实例获取隐藏状态*/
27
+ useFormInstanceToHideState: typeof useFairysValtioFormInstanceToHideState;
24
28
  };
25
29
  export {};
@@ -2,17 +2,17 @@
2
2
  import type { ViewProps } from 'react-native';
3
3
  import type { MObject } from '@fairys/valtio-form-basic';
4
4
  import type { FairysValtioFormItemAttrsProps } from './hooks/form.item';
5
- export interface FairysRNValtioFormItemProps<T extends MObject<T> = object> extends Omit<ViewProps, 'style'>, FairysValtioFormItemAttrsProps {
5
+ export interface FairysRNValtioFormItemProps<T extends MObject<T> = Record<string, any>> extends Omit<ViewProps, 'style'>, FairysValtioFormItemAttrsProps<T> {
6
6
  /**是否使用控制隐藏的表单项*/
7
7
  isHide?: boolean;
8
8
  /**是否使用无样式表单项*/
9
9
  noStyle?: boolean;
10
10
  }
11
11
  /**普通表单项*/
12
- export declare function FairysRNValtioFormItemBase<T extends MObject<T> = object>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
12
+ export declare function FairysRNValtioFormItemBase<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
13
13
  /**控制隐藏的表单项*/
14
- export declare function FairysRNValtioFormHideItem<T extends MObject<T> = object>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
14
+ export declare function FairysRNValtioFormHideItem<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
15
15
  /**无样式表单项*/
16
- export declare function FairysRNValtioFormItemNoStyle<T extends MObject<T> = object>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
16
+ export declare function FairysRNValtioFormItemNoStyle<T extends MObject<T> = Record<string, any>>(props: Omit<FairysRNValtioFormItemProps<T>, 'isHide' | 'noStyle'>): import("react/jsx-runtime").JSX.Element;
17
17
  /**表单项基础组件(根据isHide和noStyle判断是否使用控制隐藏的表单项和无样式表单项)*/
18
- export declare function FairysRNValtioFormItem<T extends MObject<T> = object>(props: FairysRNValtioFormItemProps<T>): import("react/jsx-runtime").JSX.Element;
18
+ export declare function FairysRNValtioFormItem<T extends MObject<T> = Record<string, any>>(props: FairysRNValtioFormItemProps<T>): import("react/jsx-runtime").JSX.Element;
package/esm/form.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { FairysRNValtioFormLayout } from "./layout.js";
3
3
  import { FairysRNValtioFormHideItem, FairysRNValtioFormItem, FairysRNValtioFormItemBase } from "./form.item.js";
4
- import { FairysValtioFormInstanceContext, useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextHideState, useFairysValtioFormInstanceContextState } from "@fairys/valtio-form-basic/esm/common";
4
+ import { FairysValtioFormInstanceContext, useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextHideState, useFairysValtioFormInstanceContextState, useFairysValtioFormInstanceToHideState, useFairysValtioFormInstanceToState } from "@fairys/valtio-form-basic/esm/common";
5
5
  import { useFairysValtioForm } from "./hooks/form.js";
6
6
  import react from "react";
7
7
  function FairysRNValtioFormBase(props, ref) {
@@ -22,4 +22,6 @@ FairysRNValtioForm.useFormInstance = useFairysValtioFormInstanceContext;
22
22
  FairysRNValtioForm.FormItemBase = FairysRNValtioFormItemBase;
23
23
  FairysRNValtioForm.FormItem = FairysRNValtioFormItem;
24
24
  FairysRNValtioForm.FormHideItem = FairysRNValtioFormHideItem;
25
+ FairysRNValtioForm.useFormInstanceToState = useFairysValtioFormInstanceToState;
26
+ FairysRNValtioForm.useFormInstanceToHideState = useFairysValtioFormInstanceToHideState;
25
27
  export { FairysRNValtioForm };
@@ -3,7 +3,7 @@ import { FairysValtioFormInstance } from '@fairys/valtio-form-basic/esm/common';
3
3
  import { type ReactNode } from 'react';
4
4
  import { FairysValtioFormLayoutAttrsProps } from './layout';
5
5
  import { RuleItem } from 'async-validator';
6
- export interface FairysValtioFormAttrsProps<T extends MObject<T> = object> extends FairysValtioFormLayoutAttrsProps {
6
+ export interface FairysValtioFormAttrsProps<T extends MObject<T> = Record<string, any>> extends FairysValtioFormLayoutAttrsProps {
7
7
  /**表单实例*/
8
8
  form?: FairysValtioFormInstance<T>;
9
9
  /**子元素*/
@@ -24,35 +24,7 @@ export interface FairysValtioFormAttrsProps<T extends MObject<T> = object> exten
24
24
  /**
25
25
  * 表单属性处理
26
26
  *
27
- * @example
28
- *
29
- * ```tsx
30
-
31
- * ```
32
- */
33
- export declare function useFairysValtioForm<T extends MObject<T> = object>(props: FairysValtioFormAttrsProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): {
27
+ */
28
+ export declare function useFairysValtioForm<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormAttrsProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): Omit<FairysValtioFormAttrsProps<T>, "initFormDataType" | "form" | "rules" | "formData" | "hideState"> & {
34
29
  formInstance: FairysValtioFormInstance<T>;
35
- /**子元素*/
36
- children: ReactNode;
37
- gap?: string | number;
38
- title?: React.ReactNode;
39
- extra?: React.ReactNode;
40
- style?: import("react-native").ViewProps["style"];
41
- headerStyle?: import("react-native").ViewProps["style"];
42
- headerTextStyle?: import("react-native").ViewProps["style"];
43
- headerExtraStyle?: import("react-native").ViewProps["style"];
44
- bodyStyle?: import("react-native").ViewProps["style"];
45
- bordered?: boolean;
46
- formItemStyle?: import("react-native").ViewProps["style"];
47
- formItemLabelStyle?: import("react-native").ViewProps["style"];
48
- formItemBodyStyle?: import("react-native").ViewProps["style"];
49
- platform?: "pc" | "rn" | "taro";
50
- colCount?: number;
51
- errorLayout?: "bottom-left" | "bottom-right" | "top-right" | "top-left" | "left-border-top" | "right-border-top";
52
- labelMode?: "left" | "top" | "between";
53
- itemBorderType?: "bottom" | "body" | "none";
54
- itemBorderColor?: React.CSSProperties["borderColor"];
55
- isInvalidBorderRed?: boolean;
56
- isInvalidTextRed?: boolean;
57
- showColon?: boolean;
58
30
  };
@@ -4,23 +4,20 @@ import { ViewProps } from 'react-native';
4
4
  import type { MObject, FairysValtioFormItemAttrsProps as _FairysValtioFormItemAttrsProps } from '@fairys/valtio-form-basic';
5
5
  import { FairysValtioFormInstance, FairysValtioFormParentAttrs } from '@fairys/valtio-form-basic/esm/common';
6
6
  import { FairysValtioFormLayoutContextOptions } from './layout';
7
- export interface FairysValtioFormItemAttrsProps<T extends MObject<T> = object> extends Omit<_FairysValtioFormItemAttrsProps<T>, 'style' | 'labelStyle' | 'bodyStyle' | 'rowSpan' | 'className' | 'labelClassName' | 'bodyClassName'> {
7
+ export interface FairysValtioFormItemAttrsProps<T extends MObject<T> = Record<string, any>> extends Omit<_FairysValtioFormItemAttrsProps<T>, 'style' | 'labelStyle' | 'bodyStyle' | 'rowSpan' | 'className' | 'labelClassName' | 'bodyClassName'> {
8
+ /**表单项样式*/
8
9
  style?: ViewProps['style'];
10
+ /**表单项标签样式*/
9
11
  labelStyle?: ViewProps['style'];
12
+ /**表单项主体样式*/
10
13
  bodyStyle?: ViewProps['style'];
11
14
  }
12
15
  /**
13
16
  * 处理表单表单项属性
14
17
  *
15
- * @example
16
- *
17
- * ```tsx
18
-
19
- * ```
20
- *
21
- */
22
- export declare function useFairysValtioFormItemAttrs<T extends MObject<T> = object>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemAttrsReturn<T>;
23
- export interface FairysValtioFormItemAttrsReturn<T extends MObject<T> = object> {
18
+ */
19
+ export declare function useFairysValtioFormItemAttrs<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemAttrsReturn<T>;
20
+ export interface FairysValtioFormItemAttrsReturn<T extends MObject<T> = Record<string, any>> {
24
21
  /**表单项值*/
25
22
  value?: any;
26
23
  /**是否校验错误*/
@@ -61,30 +58,34 @@ export interface FairysValtioFormItemAttrsReturn<T extends MObject<T> = object>
61
58
  formAttrsNameInstance: FairysValtioFormParentAttrs;
62
59
  /**是否显示冒号*/
63
60
  showColon: boolean;
61
+ /**表单项样式*/
64
62
  itemStyle: ViewProps['style'];
63
+ /**表单项容器样式*/
65
64
  itemContainerStyle: ViewProps['style'];
65
+ /**表单项标签样式*/
66
66
  itemLabelStyle: ViewProps['style'];
67
+ /**表单项标签文本样式*/
67
68
  itemLabelTextStyle: ViewProps['style'];
69
+ /**表单项标签显示冒号样式*/
68
70
  itemLabelShowColonStyle: ViewProps['style'];
71
+ /**表单项主体样式*/
69
72
  itemBodyStyle: ViewProps['style'];
73
+ /**表单项输入样式*/
70
74
  itemInputStyle: ViewProps['style'];
75
+ /**表单项额外样式*/
71
76
  itemExtraStyle: ViewProps['style'];
77
+ /**错误样式*/
72
78
  errorStyle: ViewProps['style'];
79
+ /**帮助样式*/
73
80
  helpStyle: ViewProps['style'];
74
81
  /**子元素*/
75
82
  children?: React.ReactNode;
76
83
  }
77
84
  /**
78
85
  * 没有样式的表单项属性,仅返回基础输入组件参数
79
- *
80
- * @example
81
- *
82
- *```tsx
83
-
84
- * ```
85
- */
86
- export declare function useFairysValtioFormItemNoStyleAttrs<T extends MObject<T> = object>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemNoStyleAttrsReturn<T>;
87
- export interface FairysValtioFormItemNoStyleAttrsReturn<T extends MObject<T> = object> {
86
+ */
87
+ export declare function useFairysValtioFormItemNoStyleAttrs<T extends MObject<T> = Record<string, any>>(props: FairysValtioFormItemAttrsProps<T>): FairysValtioFormItemNoStyleAttrsReturn<T>;
88
+ export interface FairysValtioFormItemNoStyleAttrsReturn<T extends MObject<T> = Record<string, any>> {
88
89
  /**表单项值*/
89
90
  value?: any;
90
91
  /**是否校验错误*/