Skip to content

Commit aac948d

Browse files
authored
Merge pull request #45 from workfloworchestrator/1719-fixes
1719 fixes
2 parents df1cbcf + ee215d9 commit aac948d

File tree

4 files changed

+39
-13
lines changed

4 files changed

+39
-13
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'pydantic-forms': patch
3+
---
4+
5+
Adds option to clear form after submission

frontend/packages/pydantic-forms/src/components/render/RenderForm.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,33 @@ const RenderForm = (contextProps: PydanticFormContextProps) => {
2626
title,
2727
headerComponent,
2828
skipSuccessNotice,
29+
loadingComponent,
30+
clearForm,
2931
} = contextProps;
32+
const {
33+
formRenderer,
34+
footerRenderer,
35+
componentMatcher: customComponentMatcher,
36+
resetAfterSubmit,
37+
} = config || {};
3038

31-
if (isLoading && !isSending) {
32-
return <div>Formulier aan het ophalen... A</div>;
33-
}
39+
const LoadingComponent = loadingComponent ?? (
40+
<div>Formulier aan het ophalen...</div>
41+
);
3442

35-
if (!pydanticFormSchema) {
36-
return <div>Formulier aan het ophalen... B</div>;
43+
if (isLoading && !isSending) {
44+
return LoadingComponent;
3745
}
3846

39-
if (isSending) {
40-
return <div>Formulier aan het verzenden...</div>;
47+
if (!pydanticFormSchema || isSending) {
48+
return LoadingComponent;
4149
}
4250

4351
if (isFullFilled) {
52+
if (resetAfterSubmit) {
53+
clearForm();
54+
}
55+
4456
if (skipSuccessNotice) {
4557
return <></>;
4658
}
@@ -50,11 +62,6 @@ const RenderForm = (contextProps: PydanticFormContextProps) => {
5062
);
5163
}
5264

53-
const {
54-
formRenderer,
55-
footerRenderer,
56-
componentMatcher: customComponentMatcher,
57-
} = config || {};
5865
const Renderer = formRenderer ?? FormRenderer;
5966
const FooterRenderer = footerRenderer ?? Footer;
6067

frontend/packages/pydantic-forms/src/core/PydanticFormContextProvider.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ function PydanticFormContextProvider({
6464
sendLabel,
6565
headerComponent,
6666
footerComponent,
67+
loadingComponent,
6768
successNotice,
6869
onSuccess,
6970
onCancel,
@@ -311,6 +312,12 @@ function PydanticFormContextProvider({
311312
isParsingSchema ||
312313
(customDataProvider ? isLoadingCustomData : false);
313314

315+
const clearForm = useCallback(() => {
316+
setFormInputData([]);
317+
setIsFullFilled(false);
318+
setRawSchema(undefined);
319+
}, []);
320+
314321
const PydanticFormContextState = {
315322
// to prevent an issue where the sending state hangs
316323
// we check both the SWR hook state as our manual state
@@ -320,6 +327,7 @@ function PydanticFormContextProvider({
320327
pydanticFormSchema,
321328
headerComponent,
322329
footerComponent,
330+
loadingComponent,
323331
onCancel,
324332
title,
325333
sendLabel,
@@ -338,6 +346,7 @@ function PydanticFormContextProvider({
338346
setSaveToLeavePageInCurrentState,
339347
formKey,
340348
formIdKey,
349+
clearForm,
341350
};
342351

343352
return (

frontend/packages/pydantic-forms/src/types.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ export interface PydanticFormInitialContextProps {
2828
children: (props: PydanticFormContextProps) => React.ReactNode;
2929
headerComponent?: React.ReactNode;
3030
footerComponent?: React.ReactNode;
31+
loadingComponent?: React.ReactNode;
3132
hasCardWrapper?: boolean;
32-
3333
config: PydanticFormsContextConfig;
3434
}
3535

@@ -65,6 +65,7 @@ export interface PydanticFormContextProps {
6565
successNotice?: React.ReactNode;
6666
headerComponent?: React.ReactNode;
6767
footerComponent?: React.ReactNode;
68+
loadingComponent?: React.ReactNode;
6869
allowUntouchedSubmit?: boolean;
6970
skipSuccessNotice?: boolean;
7071
footerCtaPrimaryVariant?: string;
@@ -73,6 +74,8 @@ export interface PydanticFormContextProps {
7374
config?: PydanticFormsContextConfig;
7475
formKey: string;
7576
formIdKey?: string;
77+
clearForm: () => void;
78+
resetAfterSubmit?: boolean;
7679
}
7780

7881
export enum PydanticFormState {
@@ -305,6 +308,8 @@ export interface PydanticFormsContextConfig {
305308

306309
// have an option to change the layout columns of fields
307310
formStructureMutator?: PydanticFormStructureMutator;
311+
312+
resetAfterSubmit?: boolean;
308313
}
309314

310315
export type FormRenderer = React.JSXElementConstructor<{

0 commit comments

Comments
 (0)