docs(changeset): feat(Former): enhance state management with additional callbacks and state retrieval

This commit is contained in:
2026-02-08 00:05:05 +02:00
parent f365d7b0e0
commit 00e5a70aef
4 changed files with 61 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
ref: any
) {
const {
getAllState,
getState,
onChange,
onClose,
@@ -26,6 +27,7 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
values,
wrapper,
} = useFormerStore((state) => ({
getAllState: state.getAllState,
getState: state.getState,
onChange: state.onChange,
onClose: state.onClose,
@@ -54,7 +56,7 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
() => ({
close: async () => {
//console.log('close called');
onClose?.();
onClose?.(getState('values'));
setState('opened', false);
},
getValue: () => {
@@ -67,7 +69,7 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
return await save();
},
setValue: (value: T) => {
onChange?.(value);
onChange?.(value, getAllState());
},
show: async () => {
//console.log('show called');
@@ -78,7 +80,7 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
return await validate();
},
}),
[getState, onChange, validate, save, reset, setState, onClose, onOpen]
[getState, getAllState, onChange, validate, save, reset, setState, onClose, onOpen]
);
useEffect(() => {
@@ -97,7 +99,19 @@ const FormerInner = forwardRef<FormerRef<any>, Partial<FormerProps<any>> & Props
return (
<FormProvider {...formMethods}>
{typeof wrapper === 'function' ? (
wrapper(<FormerLayout>{props.children}</FormerLayout>, opened ??false, onClose ?? (() => {setState('opened', false)}), onOpen ?? (() => {setState('opened', true)}), getState)
wrapper(
<FormerLayout>{props.children}</FormerLayout>,
opened ?? false,
onClose ??
(() => {
setState('opened', false);
}),
onOpen ??
(() => {
setState('opened', true);
}),
getState
)
) : (
<FormerLayout>{props.children || null}</FormerLayout>
)}