@bolttech/form-engine 3.0.0-beta.25 → 3.0.0-beta.26
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/index.esm.js +85 -6
- package/package.json +2 -2
- package/src/context/FormGroupContext.type.d.ts +2 -2
- package/src/hooks/index.d.ts +2 -0
- package/src/hooks/{useForm.d.ts → useForm/useForm.d.ts} +1 -1
- package/src/hooks/{useForm.type.d.ts → useForm/useForm.type.d.ts} +1 -1
- package/src/hooks/useFormGroup/useFormGroup.d.ts +10 -0
- package/src/index.d.ts +1 -0
- package/src/types/index.d.ts +11 -5
package/index.esm.js
CHANGED
|
@@ -2387,9 +2387,11 @@ const eventsMapping = {
|
|
|
2387
2387
|
*/
|
|
2388
2388
|
const useForm = _a => {
|
|
2389
2389
|
var {
|
|
2390
|
-
id
|
|
2390
|
+
id,
|
|
2391
|
+
onData,
|
|
2392
|
+
onSubmit
|
|
2391
2393
|
} = _a,
|
|
2392
|
-
rest = __rest(_a, ["id"]);
|
|
2394
|
+
rest = __rest(_a, ["id", "onData", "onSubmit"]);
|
|
2393
2395
|
const {
|
|
2394
2396
|
formGroupInstance
|
|
2395
2397
|
} = useFormGroupContext({});
|
|
@@ -2400,6 +2402,16 @@ const useForm = _a => {
|
|
|
2400
2402
|
useEffect(() => {
|
|
2401
2403
|
callbackRefs.current = rest;
|
|
2402
2404
|
}, [rest]);
|
|
2405
|
+
const formValuesCallbackRefs = useRef({
|
|
2406
|
+
onData,
|
|
2407
|
+
onSubmit
|
|
2408
|
+
});
|
|
2409
|
+
useEffect(() => {
|
|
2410
|
+
formValuesCallbackRefs.current = {
|
|
2411
|
+
onData,
|
|
2412
|
+
onSubmit
|
|
2413
|
+
};
|
|
2414
|
+
}, [onData, onSubmit]);
|
|
2403
2415
|
/**
|
|
2404
2416
|
* handle function call after the debounce occurs on the form instance field event
|
|
2405
2417
|
* subject in order to call the most updated function with the updated function
|
|
@@ -2421,6 +2433,31 @@ const useForm = _a => {
|
|
|
2421
2433
|
});
|
|
2422
2434
|
return () => sub === null || sub === void 0 ? void 0 : sub.unsubscribe();
|
|
2423
2435
|
}, []);
|
|
2436
|
+
useEffect(() => {
|
|
2437
|
+
var _a, _b;
|
|
2438
|
+
const dataCallback = payload => {
|
|
2439
|
+
var _a, _b;
|
|
2440
|
+
if (formValuesCallbackRefs.current.onData) {
|
|
2441
|
+
(_b = (_a = formValuesCallbackRefs.current).onData) === null || _b === void 0 ? void 0 : _b.call(_a, payload);
|
|
2442
|
+
}
|
|
2443
|
+
};
|
|
2444
|
+
const dataSub = (_a = formGroupInstance.getForm({
|
|
2445
|
+
key: id
|
|
2446
|
+
})) === null || _a === void 0 ? void 0 : _a.subscribeData(dataCallback);
|
|
2447
|
+
const submitCallback = payload => {
|
|
2448
|
+
var _a, _b;
|
|
2449
|
+
if (formValuesCallbackRefs.current.onSubmit) {
|
|
2450
|
+
(_b = (_a = formValuesCallbackRefs.current).onSubmit) === null || _b === void 0 ? void 0 : _b.call(_a, payload);
|
|
2451
|
+
}
|
|
2452
|
+
};
|
|
2453
|
+
const submitSub = (_b = formGroupInstance.getForm({
|
|
2454
|
+
key: id
|
|
2455
|
+
})) === null || _b === void 0 ? void 0 : _b.subscribeOnSubmit(submitCallback);
|
|
2456
|
+
return () => {
|
|
2457
|
+
dataSub === null || dataSub === void 0 ? void 0 : dataSub.unsubscribe();
|
|
2458
|
+
submitSub === null || submitSub === void 0 ? void 0 : submitSub.unsubscribe();
|
|
2459
|
+
};
|
|
2460
|
+
}, []);
|
|
2424
2461
|
return;
|
|
2425
2462
|
};
|
|
2426
2463
|
|
|
@@ -2471,8 +2508,6 @@ const Form = ({
|
|
|
2471
2508
|
action: action || (schema === null || schema === void 0 ? void 0 : schema.action),
|
|
2472
2509
|
method: method || (schema === null || schema === void 0 ? void 0 : schema.method),
|
|
2473
2510
|
index: schemaIndex,
|
|
2474
|
-
onSubmit,
|
|
2475
|
-
onData,
|
|
2476
2511
|
mappers
|
|
2477
2512
|
});
|
|
2478
2513
|
addForm({
|
|
@@ -2550,7 +2585,9 @@ const Form = ({
|
|
|
2550
2585
|
onFocus,
|
|
2551
2586
|
onKeyDown,
|
|
2552
2587
|
onKeyUp,
|
|
2553
|
-
onMount
|
|
2588
|
+
onMount,
|
|
2589
|
+
onSubmit,
|
|
2590
|
+
onData
|
|
2554
2591
|
});
|
|
2555
2592
|
/*
|
|
2556
2593
|
@TODO move this logic inside form-core, add action and method onto form element,
|
|
@@ -2865,4 +2902,46 @@ const AsFormFieldBuilder = props => {
|
|
|
2865
2902
|
}) : jsx(Fragment, {});
|
|
2866
2903
|
};
|
|
2867
2904
|
|
|
2868
|
-
|
|
2905
|
+
// @TODO implement onSubmitGroup
|
|
2906
|
+
const useFormGroup = ({
|
|
2907
|
+
ids,
|
|
2908
|
+
onData
|
|
2909
|
+
// onSubmit,
|
|
2910
|
+
}) => {
|
|
2911
|
+
const {
|
|
2912
|
+
formGroupInstance
|
|
2913
|
+
} = useFormGroupContext({});
|
|
2914
|
+
const onDataCallbackRef = useRef(onData);
|
|
2915
|
+
// const onSubmitCallbackRef = useRef(onSubmit);
|
|
2916
|
+
useEffect(() => {
|
|
2917
|
+
onDataCallbackRef.current = onData;
|
|
2918
|
+
}, [onData]);
|
|
2919
|
+
// useEffect(() => {
|
|
2920
|
+
// onSubmitCallbackRef.current = onSubmit;
|
|
2921
|
+
// }, [onSubmit]);
|
|
2922
|
+
useEffect(() => {
|
|
2923
|
+
const onDataCallback = payload => {
|
|
2924
|
+
var _a;
|
|
2925
|
+
if (onDataCallbackRef.current) {
|
|
2926
|
+
(_a = onDataCallbackRef.current) === null || _a === void 0 ? void 0 : _a.call(onDataCallbackRef, payload);
|
|
2927
|
+
}
|
|
2928
|
+
};
|
|
2929
|
+
const onDataSub = formGroupInstance.onDataSubscription({
|
|
2930
|
+
ids,
|
|
2931
|
+
callback: onDataCallback
|
|
2932
|
+
});
|
|
2933
|
+
// const onSubmitCallback = (
|
|
2934
|
+
// payload: TFormValues<Record<string, unknown>>
|
|
2935
|
+
// ) => {
|
|
2936
|
+
// if (onSubmitCallbackRef.current) {
|
|
2937
|
+
// onSubmitCallbackRef.current?.(payload);
|
|
2938
|
+
// }
|
|
2939
|
+
// };
|
|
2940
|
+
return () => {
|
|
2941
|
+
onDataSub.unsubscribe();
|
|
2942
|
+
};
|
|
2943
|
+
}, []);
|
|
2944
|
+
return;
|
|
2945
|
+
};
|
|
2946
|
+
|
|
2947
|
+
export { AsFormField, AsFormFieldBuilder, Form, FormGroupContext, FormGroupContextProvider, useForm, useFormGroup, useFormGroupContext };
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bolttech/form-engine",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.26",
|
|
4
4
|
"description": "A react adapter for bolttech form engine",
|
|
5
5
|
"module": "./index.esm.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.esm.js",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@bolttech/form-engine-core": "0.0.1-beta.
|
|
9
|
+
"@bolttech/form-engine-core": "0.0.1-beta.17",
|
|
10
10
|
"react": "18.2.0"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FormCore, TFormCore, TFormGroup,
|
|
1
|
+
import { FormCore, TFormCore, TFormGroup, TMapper } from '@bolttech/form-engine-core';
|
|
2
2
|
import { ElementType } from 'react';
|
|
3
3
|
/**
|
|
4
4
|
* Represents the context for managing forms within a form group.
|
|
@@ -29,7 +29,7 @@ type TFormContext = {
|
|
|
29
29
|
formGroupInstance: TFormGroup;
|
|
30
30
|
mappers?: TMapper<ElementType>[];
|
|
31
31
|
printFormGroupInstance: () => void;
|
|
32
|
-
submitMultipleFormsByIndex: <T>(indexes: string[]) =>
|
|
32
|
+
submitMultipleFormsByIndex: <T>(indexes: string[]) => void;
|
|
33
33
|
debugMode: boolean;
|
|
34
34
|
active: boolean;
|
|
35
35
|
};
|
|
@@ -2,5 +2,5 @@ import { TUseFormProps } from './useForm.type';
|
|
|
2
2
|
/**
|
|
3
3
|
* Hook to register events callback functions
|
|
4
4
|
*/
|
|
5
|
-
declare const useForm: ({ id, ...rest }: TUseFormProps) => void;
|
|
5
|
+
declare const useForm: ({ id, onData, onSubmit, ...rest }: TUseFormProps) => void;
|
|
6
6
|
export default useForm;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TFormValues } from '@bolttech/form-engine-core';
|
|
2
|
+
declare const useFormGroup: ({ ids, onData, }: {
|
|
3
|
+
ids: string[];
|
|
4
|
+
onData: (payload: Record<string, {
|
|
5
|
+
formId: string;
|
|
6
|
+
formField: string;
|
|
7
|
+
values?: TFormValues<Record<string, unknown>>;
|
|
8
|
+
}>) => void;
|
|
9
|
+
}) => void;
|
|
10
|
+
export default useFormGroup;
|
package/src/index.d.ts
CHANGED
package/src/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TFieldEvent } from '@bolttech/form-engine-core';
|
|
1
|
+
import { TFieldEvent, TFormValues } from '@bolttech/form-engine-core';
|
|
2
2
|
/**
|
|
3
3
|
* Represents a field wrapper containing the name of the field and its index in the form.
|
|
4
4
|
*
|
|
@@ -12,9 +12,15 @@ type TFieldWrapper = {
|
|
|
12
12
|
/**
|
|
13
13
|
* Represents the possible event properties for form fields callbacks.
|
|
14
14
|
*/
|
|
15
|
-
type TEventProps = 'onChange' | 'onBlur' | 'onFocus' | 'onKeyDown' | 'onKeyUp' | 'onMount' | 'onApiResponse' | 'onClick'
|
|
15
|
+
type TEventProps = 'onChange' | 'onBlur' | 'onFocus' | 'onKeyDown' | 'onKeyUp' | 'onMount' | 'onApiResponse' | 'onClick';
|
|
16
16
|
/**
|
|
17
|
-
* Represents a mapping of event properties to their corresponding callback functions.
|
|
18
|
-
*/
|
|
19
|
-
type TEventsCallbackProps = Partial<Record<TEventProps, ((payload: TFieldEvent) => void) | null | undefined
|
|
17
|
+
* Represents a mapping of event properties to their corresponding callback functions.
|
|
18
|
+
*/
|
|
19
|
+
type TEventsCallbackProps = Partial<Record<TEventProps, ((payload: TFieldEvent) => void) | null | undefined>> & {
|
|
20
|
+
onData?: (payload: {
|
|
21
|
+
field: string;
|
|
22
|
+
data: TFormValues<Record<string, unknown>>;
|
|
23
|
+
}) => void;
|
|
24
|
+
onSubmit?: (payload: TFormValues<Record<string, unknown>>) => void;
|
|
25
|
+
};
|
|
20
26
|
export { TFieldWrapper, TEventProps, TEventsCallbackProps };
|