@carefrees/form-utils-react-hooks 0.0.4

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 (72) hide show
  1. package/README.md +9 -0
  2. package/esm/hooks/register/register.FormHideItem.d.ts +9 -0
  3. package/esm/hooks/register/register.FormHideItem.js +31 -0
  4. package/esm/hooks/register/register.FormItem.d.ts +23 -0
  5. package/esm/hooks/register/register.FormItem.js +42 -0
  6. package/esm/hooks/register/register.FormList.d.ts +9 -0
  7. package/esm/hooks/register/register.FormList.js +31 -0
  8. package/esm/hooks/register/register.form.d.ts +3 -0
  9. package/esm/hooks/register/register.form.js +17 -0
  10. package/esm/hooks/useAttrs.d.ts +30 -0
  11. package/esm/hooks/useAttrs.js +10 -0
  12. package/esm/hooks/useForm.d.ts +7 -0
  13. package/esm/hooks/useForm.js +13 -0
  14. package/esm/hooks/useFormItem.d.ts +7 -0
  15. package/esm/hooks/useFormItem.js +11 -0
  16. package/esm/hooks/useFormItemParentName.d.ts +30 -0
  17. package/esm/hooks/useFormItemParentName.js +61 -0
  18. package/esm/hooks/useFormList.d.ts +7 -0
  19. package/esm/hooks/useFormList.js +11 -0
  20. package/esm/hooks/useHtmlFor.d.ts +1 -0
  21. package/esm/hooks/useHtmlFor.js +10 -0
  22. package/esm/hooks/useMultipleForm.d.ts +13 -0
  23. package/esm/hooks/useMultipleForm.js +19 -0
  24. package/esm/hooks/useUpdate.d.ts +2 -0
  25. package/esm/hooks/useUpdate.js +10 -0
  26. package/esm/hooks/useWatch.d.ts +19 -0
  27. package/esm/hooks/useWatch.js +41 -0
  28. package/esm/index.d.ts +13 -0
  29. package/esm/index.js +13 -0
  30. package/lib/hooks/register/register.FormHideItem.d.ts +9 -0
  31. package/lib/hooks/register/register.FormHideItem.js +65 -0
  32. package/lib/hooks/register/register.FormItem.d.ts +23 -0
  33. package/lib/hooks/register/register.FormItem.js +76 -0
  34. package/lib/hooks/register/register.FormList.d.ts +9 -0
  35. package/lib/hooks/register/register.FormList.js +65 -0
  36. package/lib/hooks/register/register.form.d.ts +3 -0
  37. package/lib/hooks/register/register.form.js +51 -0
  38. package/lib/hooks/useAttrs.d.ts +30 -0
  39. package/lib/hooks/useAttrs.js +47 -0
  40. package/lib/hooks/useForm.d.ts +7 -0
  41. package/lib/hooks/useForm.js +53 -0
  42. package/lib/hooks/useFormItem.d.ts +7 -0
  43. package/lib/hooks/useFormItem.js +51 -0
  44. package/lib/hooks/useFormItemParentName.d.ts +30 -0
  45. package/lib/hooks/useFormItemParentName.js +101 -0
  46. package/lib/hooks/useFormList.d.ts +7 -0
  47. package/lib/hooks/useFormList.js +51 -0
  48. package/lib/hooks/useHtmlFor.d.ts +1 -0
  49. package/lib/hooks/useHtmlFor.js +44 -0
  50. package/lib/hooks/useMultipleForm.d.ts +13 -0
  51. package/lib/hooks/useMultipleForm.js +62 -0
  52. package/lib/hooks/useUpdate.d.ts +2 -0
  53. package/lib/hooks/useUpdate.js +44 -0
  54. package/lib/hooks/useWatch.d.ts +19 -0
  55. package/lib/hooks/useWatch.js +78 -0
  56. package/lib/index.d.ts +13 -0
  57. package/lib/index.js +168 -0
  58. package/package.json +30 -0
  59. package/src/hooks/register/register.FormHideItem.ts +29 -0
  60. package/src/hooks/register/register.FormItem.ts +52 -0
  61. package/src/hooks/register/register.FormList.ts +31 -0
  62. package/src/hooks/register/register.form.ts +18 -0
  63. package/src/hooks/useAttrs.ts +40 -0
  64. package/src/hooks/useForm.ts +23 -0
  65. package/src/hooks/useFormItem.ts +21 -0
  66. package/src/hooks/useFormItemParentName.ts +49 -0
  67. package/src/hooks/useFormList.ts +21 -0
  68. package/src/hooks/useHtmlFor.ts +9 -0
  69. package/src/hooks/useMultipleForm.ts +36 -0
  70. package/src/hooks/useUpdate.ts +12 -0
  71. package/src/hooks/useWatch.ts +61 -0
  72. package/src/index.ts +13 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useMultipleForm: ()=>useMultipleForm,
28
+ MultipleFormInstanceContext: ()=>MultipleFormInstanceContext,
29
+ useMultipleFormInstance: ()=>useMultipleFormInstance,
30
+ MultipleFormProvider: ()=>MultipleFormProvider
31
+ });
32
+ const form_utils_namespaceObject = require("@carefrees/form-utils");
33
+ const external_react_namespaceObject = require("react");
34
+ const MultipleFormInstanceContext = (0, external_react_namespaceObject.createContext)(new form_utils_namespaceObject.MultipleInstanceBase());
35
+ const useMultipleFormInstance = ()=>(0, external_react_namespaceObject.useContext)(MultipleFormInstanceContext);
36
+ const useMultipleForm = (multipleForm)=>{
37
+ const ref = (0, external_react_namespaceObject.useRef)();
38
+ if (!ref.current) if (multipleForm) ref.current = multipleForm;
39
+ else ref.current = new form_utils_namespaceObject.MultipleInstanceBase();
40
+ return ref.current;
41
+ };
42
+ const MultipleFormProvider = (props)=>{
43
+ const { children, multipleForm } = props;
44
+ const multipleFormInstance = useMultipleForm(multipleForm);
45
+ return (0, external_react_namespaceObject.createElement)(MultipleFormInstanceContext.Provider, {
46
+ value: multipleFormInstance,
47
+ children
48
+ });
49
+ };
50
+ exports.MultipleFormInstanceContext = __webpack_exports__.MultipleFormInstanceContext;
51
+ exports.MultipleFormProvider = __webpack_exports__.MultipleFormProvider;
52
+ exports.useMultipleForm = __webpack_exports__.useMultipleForm;
53
+ exports.useMultipleFormInstance = __webpack_exports__.useMultipleFormInstance;
54
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
55
+ "MultipleFormInstanceContext",
56
+ "MultipleFormProvider",
57
+ "useMultipleForm",
58
+ "useMultipleFormInstance"
59
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
60
+ Object.defineProperty(exports, '__esModule', {
61
+ value: true
62
+ });
@@ -0,0 +1,2 @@
1
+ /**更新页面状态*/
2
+ export declare const useUpdate: () => import("react").MutableRefObject<Function>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useUpdate: ()=>useUpdate
28
+ });
29
+ const external_react_namespaceObject = require("react");
30
+ const useUpdate = ()=>{
31
+ const [, _update] = (0, external_react_namespaceObject.useState)({});
32
+ const refUpdate = (0, external_react_namespaceObject.useRef)(()=>void 0);
33
+ refUpdate.current = ()=>{
34
+ _update({});
35
+ };
36
+ return refUpdate;
37
+ };
38
+ exports.useUpdate = __webpack_exports__.useUpdate;
39
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
40
+ "useUpdate"
41
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
42
+ Object.defineProperty(exports, '__esModule', {
43
+ value: true
44
+ });
@@ -0,0 +1,19 @@
1
+ import { FormInstanceBase } from '@carefrees/form-utils';
2
+ export declare class WatchInstanceBase {
3
+ /**监听字段*/
4
+ name: string;
5
+ /**表单实例*/
6
+ form: FormInstanceBase;
7
+ /**老值*/
8
+ oldValue: any;
9
+ /**更新值*/
10
+ dispatch: (value: any) => void;
11
+ /**回调*/
12
+ callBack?: (value: any, form: FormInstanceBase) => void;
13
+ /**更新*/
14
+ updated: () => void;
15
+ }
16
+ /**
17
+ * 字段监听
18
+ */
19
+ export declare const useWatch: (name: string, form: FormInstanceBase, callBack?: (value: any, form: FormInstanceBase) => void) => [any, FormInstanceBase, WatchInstanceBase];
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ WatchInstanceBase: ()=>WatchInstanceBase,
28
+ useWatch: ()=>useWatch
29
+ });
30
+ const external_react_namespaceObject = require("react");
31
+ const external_useForm_js_namespaceObject = require("./useForm.js");
32
+ const external_useFormItem_js_namespaceObject = require("./useFormItem.js");
33
+ class WatchInstanceBase {
34
+ name;
35
+ form;
36
+ oldValue;
37
+ dispatch;
38
+ callBack;
39
+ updated = ()=>{
40
+ const newValue = this.form.getFieldValue(this.name);
41
+ if (this.oldValue === newValue) return;
42
+ if (this.callBack) this.callBack(newValue, this.form);
43
+ else this.dispatch(newValue);
44
+ };
45
+ }
46
+ const useWatch = (name, form, callBack)=>{
47
+ const formInstance = form || (0, external_useForm_js_namespaceObject.useFormInstance)();
48
+ const [oldValue, setValue] = (0, external_react_namespaceObject.useState)(formInstance.getFieldValue(name));
49
+ const watch = (0, external_react_namespaceObject.useRef)(new WatchInstanceBase()).current;
50
+ watch.name = name;
51
+ watch.oldValue = oldValue;
52
+ watch.dispatch = setValue;
53
+ watch.callBack = callBack;
54
+ watch.form = formInstance;
55
+ const formItemInstance = (0, external_useFormItem_js_namespaceObject.useFormItem)();
56
+ (0, external_react_namespaceObject.useMemo)(()=>formItemInstance.ctor(name), []);
57
+ formItemInstance.instance = formInstance;
58
+ formItemInstance.isWatch = true;
59
+ formItemInstance.updated = watch.updated;
60
+ (0, external_react_namespaceObject.useEffect)(()=>{
61
+ const unMount = formInstance.registerFormItem(formItemInstance);
62
+ return ()=>unMount();
63
+ }, []);
64
+ return [
65
+ oldValue,
66
+ formInstance,
67
+ watch
68
+ ];
69
+ };
70
+ exports.WatchInstanceBase = __webpack_exports__.WatchInstanceBase;
71
+ exports.useWatch = __webpack_exports__.useWatch;
72
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
73
+ "WatchInstanceBase",
74
+ "useWatch"
75
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
76
+ Object.defineProperty(exports, '__esModule', {
77
+ value: true
78
+ });
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from './hooks/register/register.FormHideItem';
2
+ export * from './hooks/register/register.FormItem';
3
+ export * from './hooks/register/register.FormList';
4
+ export * from './hooks/register/register.form';
5
+ export * from './hooks/useAttrs';
6
+ export * from './hooks/useForm';
7
+ export * from './hooks/useFormItem';
8
+ export * from './hooks/useFormItemParentName';
9
+ export * from './hooks/useFormList';
10
+ export * from './hooks/useHtmlFor';
11
+ export * from './hooks/useMultipleForm';
12
+ export * from './hooks/useUpdate';
13
+ export * from './hooks/useWatch';
package/lib/index.js ADDED
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "./hooks/register/register.FormHideItem": function(module) {
4
+ module.exports = require("./hooks/register/register.FormHideItem.js");
5
+ },
6
+ "./hooks/register/register.FormItem": function(module) {
7
+ module.exports = require("./hooks/register/register.FormItem.js");
8
+ },
9
+ "./hooks/register/register.FormList": function(module) {
10
+ module.exports = require("./hooks/register/register.FormList.js");
11
+ },
12
+ "./hooks/register/register.form": function(module) {
13
+ module.exports = require("./hooks/register/register.form.js");
14
+ },
15
+ "./hooks/useAttrs": function(module) {
16
+ module.exports = require("./hooks/useAttrs.js");
17
+ },
18
+ "./hooks/useForm": function(module) {
19
+ module.exports = require("./hooks/useForm.js");
20
+ },
21
+ "./hooks/useFormItem": function(module) {
22
+ module.exports = require("./hooks/useFormItem.js");
23
+ },
24
+ "./hooks/useFormItemParentName": function(module) {
25
+ module.exports = require("./hooks/useFormItemParentName.js");
26
+ },
27
+ "./hooks/useFormList": function(module) {
28
+ module.exports = require("./hooks/useFormList.js");
29
+ },
30
+ "./hooks/useHtmlFor": function(module) {
31
+ module.exports = require("./hooks/useHtmlFor.js");
32
+ },
33
+ "./hooks/useMultipleForm": function(module) {
34
+ module.exports = require("./hooks/useMultipleForm.js");
35
+ },
36
+ "./hooks/useUpdate": function(module) {
37
+ module.exports = require("./hooks/useUpdate.js");
38
+ },
39
+ "./hooks/useWatch": function(module) {
40
+ module.exports = require("./hooks/useWatch.js");
41
+ }
42
+ };
43
+ var __webpack_module_cache__ = {};
44
+ function __webpack_require__(moduleId) {
45
+ var cachedModule = __webpack_module_cache__[moduleId];
46
+ if (void 0 !== cachedModule) return cachedModule.exports;
47
+ var module = __webpack_module_cache__[moduleId] = {
48
+ exports: {}
49
+ };
50
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
51
+ return module.exports;
52
+ }
53
+ (()=>{
54
+ __webpack_require__.n = (module)=>{
55
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
56
+ __webpack_require__.d(getter, {
57
+ a: getter
58
+ });
59
+ return getter;
60
+ };
61
+ })();
62
+ (()=>{
63
+ __webpack_require__.d = (exports1, definition)=>{
64
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
65
+ enumerable: true,
66
+ get: definition[key]
67
+ });
68
+ };
69
+ })();
70
+ (()=>{
71
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
72
+ })();
73
+ (()=>{
74
+ __webpack_require__.r = (exports1)=>{
75
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
76
+ value: 'Module'
77
+ });
78
+ Object.defineProperty(exports1, '__esModule', {
79
+ value: true
80
+ });
81
+ };
82
+ })();
83
+ var __webpack_exports__ = {};
84
+ (()=>{
85
+ __webpack_require__.r(__webpack_exports__);
86
+ var _hooks_register_register_FormHideItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./hooks/register/register.FormHideItem");
87
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
88
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_register_register_FormHideItem__WEBPACK_IMPORTED_MODULE_0__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
89
+ return _hooks_register_register_FormHideItem__WEBPACK_IMPORTED_MODULE_0__[key];
90
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
91
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
92
+ var _hooks_register_register_FormItem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./hooks/register/register.FormItem");
93
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
94
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_register_register_FormItem__WEBPACK_IMPORTED_MODULE_1__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
95
+ return _hooks_register_register_FormItem__WEBPACK_IMPORTED_MODULE_1__[key];
96
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
97
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
98
+ var _hooks_register_register_FormList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./hooks/register/register.FormList");
99
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
100
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_register_register_FormList__WEBPACK_IMPORTED_MODULE_2__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
101
+ return _hooks_register_register_FormList__WEBPACK_IMPORTED_MODULE_2__[key];
102
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
103
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
104
+ var _hooks_register_register_form__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./hooks/register/register.form");
105
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
106
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_register_register_form__WEBPACK_IMPORTED_MODULE_3__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
107
+ return _hooks_register_register_form__WEBPACK_IMPORTED_MODULE_3__[key];
108
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
109
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
110
+ var _hooks_useAttrs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./hooks/useAttrs");
111
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
112
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useAttrs__WEBPACK_IMPORTED_MODULE_4__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
113
+ return _hooks_useAttrs__WEBPACK_IMPORTED_MODULE_4__[key];
114
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
115
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
116
+ var _hooks_useForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./hooks/useForm");
117
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
118
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useForm__WEBPACK_IMPORTED_MODULE_5__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
119
+ return _hooks_useForm__WEBPACK_IMPORTED_MODULE_5__[key];
120
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
121
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
122
+ var _hooks_useFormItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./hooks/useFormItem");
123
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
124
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useFormItem__WEBPACK_IMPORTED_MODULE_6__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
125
+ return _hooks_useFormItem__WEBPACK_IMPORTED_MODULE_6__[key];
126
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
127
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
128
+ var _hooks_useFormItemParentName__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./hooks/useFormItemParentName");
129
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
130
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useFormItemParentName__WEBPACK_IMPORTED_MODULE_7__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
131
+ return _hooks_useFormItemParentName__WEBPACK_IMPORTED_MODULE_7__[key];
132
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
133
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
134
+ var _hooks_useFormList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./hooks/useFormList");
135
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
136
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useFormList__WEBPACK_IMPORTED_MODULE_8__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
137
+ return _hooks_useFormList__WEBPACK_IMPORTED_MODULE_8__[key];
138
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
139
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
140
+ var _hooks_useHtmlFor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("./hooks/useHtmlFor");
141
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
142
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useHtmlFor__WEBPACK_IMPORTED_MODULE_9__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
143
+ return _hooks_useHtmlFor__WEBPACK_IMPORTED_MODULE_9__[key];
144
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
145
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
146
+ var _hooks_useMultipleForm__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("./hooks/useMultipleForm");
147
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
148
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useMultipleForm__WEBPACK_IMPORTED_MODULE_10__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
149
+ return _hooks_useMultipleForm__WEBPACK_IMPORTED_MODULE_10__[key];
150
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
151
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
152
+ var _hooks_useUpdate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("./hooks/useUpdate");
153
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
154
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useUpdate__WEBPACK_IMPORTED_MODULE_11__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
155
+ return _hooks_useUpdate__WEBPACK_IMPORTED_MODULE_11__[key];
156
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
157
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
158
+ var _hooks_useWatch__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("./hooks/useWatch");
159
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
160
+ for(var __WEBPACK_IMPORT_KEY__ in _hooks_useWatch__WEBPACK_IMPORTED_MODULE_12__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
161
+ return _hooks_useWatch__WEBPACK_IMPORTED_MODULE_12__[key];
162
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
163
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
164
+ })();
165
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
166
+ Object.defineProperty(exports, '__esModule', {
167
+ value: true
168
+ });
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@carefrees/form-utils-react-hooks",
3
+ "author": "SunLxy <1011771396@qq.com>",
4
+ "description": "表单组件公共hooks",
5
+ "homepage": "https://github.com/SunLxy/carefrees-form-utils",
6
+ "version": "0.0.4",
7
+ "main": "lib/index.js",
8
+ "types": "lib/index.d.ts",
9
+ "module": "esm/index.js",
10
+ "license": "ISC",
11
+ "scripts": {
12
+ "build": "carefrees-rslib build",
13
+ "watch": "carefrees-rslib build --watch"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "files": [
19
+ "src",
20
+ "lib",
21
+ "esm"
22
+ ],
23
+ "dependencies": {
24
+ "@carefrees/form-utils": "^0.0.4"
25
+ },
26
+ "devDependencies": {
27
+ "@types/react": "18.2.21",
28
+ "react": "^18.2.0"
29
+ }
30
+ }
@@ -0,0 +1,29 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { RegisterFormItemOptions } from './register.FormItem';
3
+ import { FormHideItemInstanceBase } from '@carefrees/form-utils';
4
+ import { useFormItemParentName } from '../useFormItemParentName';
5
+ import { useFormInstance } from '../useForm';
6
+ import { useUpdate } from '../useUpdate';
7
+
8
+ interface RegisterFormHideItemOptions extends Omit<RegisterFormItemOptions, 'rules'> {}
9
+
10
+ /**注册表单隐藏表单项到表单实例中*/
11
+ export const useRegisterFormHideItem = (options: RegisterFormHideItemOptions) => {
12
+ const { name, sort, isJoinParentField = true } = options;
13
+ const form = useFormInstance();
14
+ const _update = useUpdate();
15
+ const { newName, newSort } = useFormItemParentName({ name, sort, isJoinParentField });
16
+ const hideItemInstance = useRef(new FormHideItemInstanceBase().ctor(newName)).current;
17
+ const isHide = form.getFieldHideValue(newName);
18
+
19
+ hideItemInstance.instance = form;
20
+ hideItemInstance.updated = _update.current;
21
+ hideItemInstance.sort = newSort;
22
+
23
+ useEffect(() => {
24
+ const unMount = form.registerFormHideItem(hideItemInstance);
25
+ return () => unMount();
26
+ }, [newName]);
27
+
28
+ return { form, isHide };
29
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @description 注册组件
3
+ */
4
+
5
+ import { useEffect, useMemo, useRef } from 'react';
6
+ import { RuleInstanceBase } from '@carefrees/form-utils';
7
+ import type { RuleItem } from 'async-validator';
8
+ import { useUpdate } from '../useUpdate';
9
+ import { useFormInstance } from '../useForm';
10
+ import { useFormItem } from '../useFormItem';
11
+ import { useFormItemParentName } from '../useFormItemParentName';
12
+
13
+ export interface RegisterFormItemOptions {
14
+ /**字段*/
15
+ name: string;
16
+ /**规则*/
17
+ rules?: RuleItem[];
18
+ /**排序值*/
19
+ sort?: string;
20
+ /**是否拼接父级字段*/
21
+ isJoinParentField?: boolean;
22
+ }
23
+
24
+ /**注册表单项到表单实例中*/
25
+ export const useRegisterFormItem = (options: RegisterFormItemOptions) => {
26
+ const { name, rules, sort, isJoinParentField = true } = options;
27
+ const form = useFormInstance();
28
+ const { newName, newSort, parentName } = useFormItemParentName({ name, sort, isJoinParentField });
29
+ // 注册规则
30
+ // 注册单个实例
31
+ const ruleInstance = useRef(new RuleInstanceBase()).current;
32
+ useMemo(() => ruleInstance.ctor(newName, rules), [rules, newName]);
33
+ ruleInstance.instance = form;
34
+ ruleInstance.sort = newSort;
35
+
36
+ const formItemInstance = useFormItem();
37
+ useMemo(() => formItemInstance.ctor(newName, ruleInstance), []);
38
+ formItemInstance.instance = form;
39
+ formItemInstance.sort = newSort;
40
+ formItemInstance.parentDataField = parentName;
41
+
42
+ const _updated = useUpdate();
43
+ formItemInstance.updated = _updated.current;
44
+ ruleInstance.updated = _updated.current;
45
+
46
+ useEffect(() => {
47
+ const unMount = form.registerFormItem(formItemInstance);
48
+ return () => unMount();
49
+ }, []);
50
+
51
+ return { ruleInstance, formItemInstance, form, parentName, newName };
52
+ };
@@ -0,0 +1,31 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ import { RegisterFormItemOptions, useRegisterFormItem } from './register.FormItem';
3
+ import { useFormList } from '../useFormList';
4
+
5
+ export interface RegisterFormListOptions extends RegisterFormItemOptions {}
6
+
7
+ /**注册表单List到表单实例中*/
8
+ export const useRegisterFormList = (options: RegisterFormListOptions) => {
9
+ const { ...rest } = options;
10
+ const { ruleInstance, formItemInstance, form, newName, parentName } = useRegisterFormItem({ ...rest });
11
+ const formListInstance = useFormList();
12
+
13
+ useMemo(() => formListInstance.ctor(newName), [newName]);
14
+
15
+ formListInstance.instance = form;
16
+ formListInstance.rule = ruleInstance;
17
+ formListInstance.sort = options.sort;
18
+ formListInstance.formItemInstance = formItemInstance;
19
+ formListInstance.parentDataField = parentName;
20
+
21
+ useEffect(() => {
22
+ const unMount = form.registerFormList(options.name, formListInstance);
23
+ return () => unMount();
24
+ }, [options.name, formListInstance]);
25
+
26
+ return {
27
+ ruleInstance,
28
+ formItemInstance,
29
+ formListInstance,
30
+ };
31
+ };
@@ -0,0 +1,18 @@
1
+ import { useEffect } from 'react';
2
+ import { useMultipleFormInstance } from '../useMultipleForm';
3
+ import { FormInstanceBase } from '@carefrees/form-utils';
4
+
5
+ /**注册表单实例到多表单收集实例中*/
6
+ export const useRegisterForm = (form: FormInstanceBase, name?: string) => {
7
+ const multipleForm = useMultipleFormInstance();
8
+ useEffect(() => {
9
+ let onMounted;
10
+ if (name) {
11
+ onMounted = multipleForm.ctor(name, form);
12
+ }
13
+ return () => {
14
+ onMounted?.();
15
+ };
16
+ }, [name, form]);
17
+ return multipleForm;
18
+ };
@@ -0,0 +1,40 @@
1
+ /**公共属性*/
2
+ import { createContext, useContext } from 'react';
3
+ export interface AttrsOptions {
4
+ /**列数据*/
5
+ colCount?: number;
6
+ /**规则校验失败错误提示位置*/
7
+ errorLayout?: 'left-bottom' | 'right-bottom' | 'top-right' | 'top-left';
8
+ /**
9
+ * label显示模式
10
+ * @platform taro 支持 between
11
+ */
12
+ labelMode?: 'left' | 'top' | 'between' | 'hide';
13
+ /**是否显示label后的冒号*/
14
+ showColon?: boolean;
15
+ /**表单项 className*/
16
+ formItemClassName?: string;
17
+ /**表单项 style*/
18
+ formItemStyle?: React.CSSProperties;
19
+ /**表单项 label className*/
20
+ formItemLabelClassName?: string;
21
+ /**表单项 label style*/
22
+ formItemLabelStyle?: React.CSSProperties;
23
+ /**
24
+ * 输入框底部边框
25
+ * @platform taro
26
+ */
27
+ inputBordered?: boolean;
28
+ }
29
+
30
+ /**公共属性 Context */
31
+ export const AttrsContext = createContext<AttrsOptions>({
32
+ colCount: 4,
33
+ errorLayout: 'left-bottom',
34
+ labelMode: 'top',
35
+ showColon: true,
36
+ inputBordered: true,
37
+ });
38
+
39
+ /**子项中获取公共属性*/
40
+ export const useAttrs = () => useContext(AttrsContext);
@@ -0,0 +1,23 @@
1
+ import { FormInstanceBase } from '@carefrees/form-utils';
2
+ import { createContext, useContext, useRef } from 'react';
3
+
4
+ /**表单实例 Context */
5
+ export const FormInstanceContext = createContext(new FormInstanceBase());
6
+
7
+ /**子项中获取表单实例*/
8
+ export function useFormInstance<T = any>() {
9
+ return useContext<FormInstanceBase<T>>(FormInstanceContext);
10
+ }
11
+
12
+ /**初始化表单实例*/
13
+ export function useForm<T = any>(form?: FormInstanceBase<T>) {
14
+ const ref = useRef<FormInstanceBase<T>>();
15
+ if (!ref.current) {
16
+ if (form) {
17
+ ref.current = form;
18
+ } else {
19
+ ref.current = new FormInstanceBase<T>();
20
+ }
21
+ }
22
+ return ref.current;
23
+ }
@@ -0,0 +1,21 @@
1
+ import { FormItemInstanceBase } from '@carefrees/form-utils';
2
+ import { createContext, useContext, useRef } from 'react';
3
+
4
+ /**表单项实例 Context */
5
+ export const FormItemInstanceContext = createContext(new FormItemInstanceBase());
6
+
7
+ /**子项中获取表单项实例*/
8
+ export const useFormItemInstance = () => useContext(FormItemInstanceContext);
9
+
10
+ /**s初始化 表单项实例*/
11
+ export const useFormItem = (formItem?: FormItemInstanceBase) => {
12
+ const ref = useRef<FormItemInstanceBase>();
13
+ if (!ref.current) {
14
+ if (formItem) {
15
+ ref.current = formItem;
16
+ } else {
17
+ ref.current = new FormItemInstanceBase();
18
+ }
19
+ }
20
+ return ref.current;
21
+ };