@fairys/rn-valtio-form-basic 0.0.12 → 0.0.13
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/esm/form.d.ts +20 -11
- package/esm/form.js +4 -2
- package/esm/hooks/form.d.ts +1 -1
- package/esm/hooks/form.js +4 -2
- package/package.json +5 -5
- package/src/form.tsx +26 -3
- package/src/hooks/form.ts +8 -2
package/esm/form.d.ts
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import { FairysRNValtioFormItem, FairysRNValtioFormHideItem, FairysRNValtioFormItemBase } from './form.item';
|
|
2
2
|
import { useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextState, useFairysValtioFormInstanceContextHideState } from '@fairys/valtio-form-basic/esm/common';
|
|
3
|
-
import type { MObject } from '@fairys/valtio-form-basic/esm/common';
|
|
3
|
+
import type { FairysValtioFormInstance, MObject } from '@fairys/valtio-form-basic/esm/common';
|
|
4
4
|
import type { FairysValtioFormAttrsProps } from './hooks/form';
|
|
5
|
+
import React from 'react';
|
|
5
6
|
export interface FairysRNValtioFormProps<T extends MObject<T> = object> extends FairysValtioFormAttrsProps<T> {
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
export declare
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
declare function FairysRNValtioFormBase<T extends MObject<T> = object>(props: FairysRNValtioFormProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const FairysRNValtioForm: typeof FairysRNValtioFormBase & {
|
|
10
|
+
/**初始化实例*/
|
|
11
|
+
useForm: typeof useFairysValtioFormInstance;
|
|
12
|
+
/**获取状态*/
|
|
13
|
+
useFormState: typeof useFairysValtioFormInstanceContextState;
|
|
14
|
+
/**获取隐藏状态*/
|
|
15
|
+
useFormHideState: typeof useFairysValtioFormInstanceContextHideState;
|
|
16
|
+
/**获取上下文实例*/
|
|
17
|
+
useFormInstance: typeof useFairysValtioFormInstanceContext;
|
|
18
|
+
/**表单项基础组件*/
|
|
19
|
+
FormItemBase: typeof FairysRNValtioFormItemBase;
|
|
20
|
+
/**表单项组件*/
|
|
21
|
+
FormItem: typeof FairysRNValtioFormItem;
|
|
22
|
+
/**隐藏表单项组件*/
|
|
23
|
+
FormHideItem: typeof FairysRNValtioFormHideItem;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
package/esm/form.js
CHANGED
|
@@ -3,8 +3,9 @@ import { FairysRNValtioFormLayout } from "./layout.js";
|
|
|
3
3
|
import { FairysRNValtioFormHideItem, FairysRNValtioFormItem, FairysRNValtioFormItemBase } from "./form.item.js";
|
|
4
4
|
import { FairysValtioFormInstanceContext, useFairysValtioFormInstance, useFairysValtioFormInstanceContext, useFairysValtioFormInstanceContextHideState, useFairysValtioFormInstanceContextState } from "@fairys/valtio-form-basic/esm/common";
|
|
5
5
|
import { useFairysValtioForm } from "./hooks/form.js";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import react from "react";
|
|
7
|
+
function FairysRNValtioFormBase(props, ref) {
|
|
8
|
+
const { formInstance, children, ...rest } = useFairysValtioForm(props, ref);
|
|
8
9
|
return /*#__PURE__*/ jsx(FairysValtioFormInstanceContext.Provider, {
|
|
9
10
|
value: formInstance,
|
|
10
11
|
children: /*#__PURE__*/ jsx(FairysRNValtioFormLayout, {
|
|
@@ -13,6 +14,7 @@ function FairysRNValtioForm(props) {
|
|
|
13
14
|
})
|
|
14
15
|
});
|
|
15
16
|
}
|
|
17
|
+
const FairysRNValtioForm = /*#__PURE__*/ react.forwardRef(FairysRNValtioFormBase);
|
|
16
18
|
FairysRNValtioForm.useForm = useFairysValtioFormInstance;
|
|
17
19
|
FairysRNValtioForm.useFormState = useFairysValtioFormInstanceContextState;
|
|
18
20
|
FairysRNValtioForm.useFormHideState = useFairysValtioFormInstanceContextHideState;
|
package/esm/hooks/form.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export interface FairysValtioFormAttrsProps<T extends MObject<T> = object> exten
|
|
|
30
30
|
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
export declare function useFairysValtioForm<T extends MObject<T> = object>(props: FairysValtioFormAttrsProps<T
|
|
33
|
+
export declare function useFairysValtioForm<T extends MObject<T> = object>(props: FairysValtioFormAttrsProps<T>, ref: React.Ref<FairysValtioFormInstance<T>>): {
|
|
34
34
|
formInstance: FairysValtioFormInstance<T>;
|
|
35
35
|
/**子元素*/
|
|
36
36
|
children: ReactNode;
|
package/esm/hooks/form.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useFairysValtioFormInstance } from "@fairys/valtio-form-basic/esm/common";
|
|
2
|
-
import { useMemo } from "react";
|
|
3
|
-
function useFairysValtioForm(props) {
|
|
2
|
+
import { useEffect, useImperativeHandle, useMemo } from "react";
|
|
3
|
+
function useFairysValtioForm(props, ref) {
|
|
4
4
|
const { form, rules, formData, hideState, initFormDataType = 'deepCopy', ...rest } = props;
|
|
5
5
|
const formInstance = useFairysValtioFormInstance(form);
|
|
6
6
|
formInstance.rules = rules;
|
|
@@ -9,6 +9,8 @@ function useFairysValtioForm(props) {
|
|
|
9
9
|
hideState,
|
|
10
10
|
initFormDataType
|
|
11
11
|
}), []);
|
|
12
|
+
useImperativeHandle(ref, ()=>formInstance);
|
|
13
|
+
useEffect(()=>()=>formInstance.clear(), []);
|
|
12
14
|
return {
|
|
13
15
|
...rest,
|
|
14
16
|
formInstance
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"author": "SunLxy <1011771396@qq.com>",
|
|
4
4
|
"description": "rn表单框架组件",
|
|
5
5
|
"homepage": "https://github.com/autumn-fairy-tales/valtio-form-basic",
|
|
6
|
-
"version": "0.0.
|
|
6
|
+
"version": "0.0.13",
|
|
7
7
|
"main": "esm/index.js",
|
|
8
8
|
"types": "esm/index.d.ts",
|
|
9
9
|
"module": "esm/index.js",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"esm"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@fairys/valtio-form-basic": "^0.0.
|
|
28
|
+
"@fairys/valtio-form-basic": "^0.0.13"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"react-native": "0.76.9",
|
|
32
31
|
"@types/react": "~18.2.21",
|
|
33
|
-
"react": "^18.0.0"
|
|
32
|
+
"react": "^18.0.0",
|
|
33
|
+
"react-native": "0.76.9"
|
|
34
34
|
}
|
|
35
|
-
}
|
|
35
|
+
}
|
package/src/form.tsx
CHANGED
|
@@ -8,20 +8,43 @@ import {
|
|
|
8
8
|
useFairysValtioFormInstanceContextHideState,
|
|
9
9
|
} from '@fairys/valtio-form-basic/esm/common';
|
|
10
10
|
|
|
11
|
-
import type { MObject } from '@fairys/valtio-form-basic/esm/common';
|
|
11
|
+
import type { FairysValtioFormInstance, MObject } from '@fairys/valtio-form-basic/esm/common';
|
|
12
12
|
import type { FairysValtioFormAttrsProps } from 'hooks/form';
|
|
13
13
|
import { useFairysValtioForm } from 'hooks/form';
|
|
14
|
+
import React from 'react';
|
|
14
15
|
|
|
15
16
|
export interface FairysRNValtioFormProps<T extends MObject<T> = object> extends FairysValtioFormAttrsProps<T> {}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
function FairysRNValtioFormBase<T extends MObject<T> = object>(
|
|
19
|
+
props: FairysRNValtioFormProps<T>,
|
|
20
|
+
ref: React.Ref<FairysValtioFormInstance<T>>,
|
|
21
|
+
) {
|
|
22
|
+
const { formInstance, children, ...rest } = useFairysValtioForm(props, ref);
|
|
19
23
|
return (
|
|
20
24
|
<FairysValtioFormInstanceContext.Provider value={formInstance}>
|
|
21
25
|
<FairysRNValtioFormLayout {...rest}>{children}</FairysRNValtioFormLayout>
|
|
22
26
|
</FairysValtioFormInstanceContext.Provider>
|
|
23
27
|
);
|
|
24
28
|
}
|
|
29
|
+
|
|
30
|
+
export const FairysRNValtioForm = React.forwardRef(
|
|
31
|
+
FairysRNValtioFormBase,
|
|
32
|
+
) as unknown as typeof FairysRNValtioFormBase & {
|
|
33
|
+
/**初始化实例*/
|
|
34
|
+
useForm: typeof useFairysValtioFormInstance;
|
|
35
|
+
/**获取状态*/
|
|
36
|
+
useFormState: typeof useFairysValtioFormInstanceContextState;
|
|
37
|
+
/**获取隐藏状态*/
|
|
38
|
+
useFormHideState: typeof useFairysValtioFormInstanceContextHideState;
|
|
39
|
+
/**获取上下文实例*/
|
|
40
|
+
useFormInstance: typeof useFairysValtioFormInstanceContext;
|
|
41
|
+
/**表单项基础组件*/
|
|
42
|
+
FormItemBase: typeof FairysRNValtioFormItemBase;
|
|
43
|
+
/**表单项组件*/
|
|
44
|
+
FormItem: typeof FairysRNValtioFormItem;
|
|
45
|
+
/**隐藏表单项组件*/
|
|
46
|
+
FormHideItem: typeof FairysRNValtioFormHideItem;
|
|
47
|
+
};
|
|
25
48
|
/**初始化实例*/
|
|
26
49
|
FairysRNValtioForm.useForm = useFairysValtioFormInstance;
|
|
27
50
|
/**获取状态*/
|
package/src/hooks/form.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MObject } from '@fairys/valtio-form-basic/esm/common';
|
|
2
2
|
import { FairysValtioFormInstance, useFairysValtioFormInstance } from '@fairys/valtio-form-basic/esm/common';
|
|
3
|
-
import { useMemo, type ReactNode } from 'react';
|
|
3
|
+
import { useMemo, type ReactNode, useImperativeHandle, useEffect } from 'react';
|
|
4
4
|
import { FairysValtioFormLayoutAttrsProps } from './layout';
|
|
5
5
|
import { RuleItem } from 'async-validator';
|
|
6
6
|
|
|
@@ -32,13 +32,19 @@ export interface FairysValtioFormAttrsProps<T extends MObject<T> = object> exten
|
|
|
32
32
|
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
|
-
export function useFairysValtioForm<T extends MObject<T> = object>(
|
|
35
|
+
export function useFairysValtioForm<T extends MObject<T> = object>(
|
|
36
|
+
props: FairysValtioFormAttrsProps<T>,
|
|
37
|
+
ref: React.Ref<FairysValtioFormInstance<T>>,
|
|
38
|
+
) {
|
|
36
39
|
const { form, rules, formData, hideState, initFormDataType = 'deepCopy', ...rest } = props;
|
|
37
40
|
const formInstance = useFairysValtioFormInstance(form);
|
|
38
41
|
/**表单规则*/
|
|
39
42
|
formInstance.rules = rules;
|
|
40
43
|
/**初始化表单值*/
|
|
41
44
|
useMemo(() => formInstance.ctor({ formData, hideState, initFormDataType }), []);
|
|
45
|
+
useImperativeHandle(ref, () => formInstance);
|
|
46
|
+
/**卸载清空所有数据*/
|
|
47
|
+
useEffect(() => () => formInstance.clear(), []);
|
|
42
48
|
return {
|
|
43
49
|
...rest,
|
|
44
50
|
formInstance,
|