Skip to content

Commit 077e193

Browse files
committed
Refero props for microweb step support
1 parent a0ac2cf commit 077e193

File tree

7 files changed

+87
-25
lines changed

7 files changed

+87
-25
lines changed

CHANGES.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## 16.1.0-beta01
2+
3+
---
4+
5+
- Small Microweb Step support by adding optional params
6+
- Override button order by an optional param
7+
18
## 16.0.2
29

310
---

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@helsenorge/refero",
3-
"version": "16.0.2",
3+
"version": "16.1.0-beta01",
44
"description": "Refero is a library that uses a fhir r4 schema and creates a interactive form using helsenorge packages.",
55
"keywords": [
66
"react",

src/components/formButtons/formButtons.tsx

+11-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { FormEvent, KeyboardEvent, MouseEvent } from 'react';
22

33
import { QuestionnaireResponse } from 'fhir/r4';
44

5-
import { ButtonType, buttonOrderNormalView, buttonOrderStepView } from '../../types/formTypes/formButton';
5+
import { ButtonOrder, ButtonType, buttonOrderNormalView, buttonOrderStepView } from '../../types/formTypes/formButton';
66

77
import { CancelFormButton } from './CancelFormButton';
88
import { PauseFormButton } from './PauseFormButton';
@@ -23,6 +23,8 @@ interface FormButtonsInterface {
2323
isStepView?: boolean;
2424
isAuthorized?: boolean;
2525
loginButton?: JSX.Element;
26+
overrideButtonOrder?: ButtonOrder;
27+
showSaveButtonAsBackButton?: boolean;
2628
}
2729

2830
const FormButtons = ({
@@ -37,8 +39,14 @@ const FormButtons = ({
3739
onPauseButtonClicked,
3840
isAuthorized,
3941
loginButton,
42+
overrideButtonOrder,
43+
showSaveButtonAsBackButton,
4044
}: FormButtonsInterface): JSX.Element | null => {
41-
const buttonOrder = isStepView ? buttonOrderStepView : buttonOrderNormalView;
45+
let buttonOrder = isStepView ? buttonOrderStepView : buttonOrderNormalView;
46+
47+
if (overrideButtonOrder) {
48+
buttonOrder = overrideButtonOrder;
49+
}
4250

4351
return (
4452
<div className={`${styles.formButtonsWrapper} page_refero__buttons`}>
@@ -52,7 +60,7 @@ const FormButtons = ({
5260
return (
5361
<PauseFormButton
5462
key={buttonType}
55-
isStepView={isStepView}
63+
isStepView={isStepView || showSaveButtonAsBackButton}
5664
pauseButtonText={pauseButtonText}
5765
onPauseButtonClicked={onPauseButtonClicked}
5866
pauseButtonDisabled={pauseButtonDisabled}

src/components/renderForm.tsx

+56-19
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Loader from '@helsenorge/designsystem-react/components/Loader';
1010
import FormButtons from './formButtons/formButtons';
1111
import { ValidationSummary } from './validation/validation-summary';
1212
import { Resources } from '@/util/resources';
13+
import { buttonOrderMicrowebStep } from '@/types/formTypes/formButton';
1314

1415
interface RenderFormProps {
1516
isAuthorized: boolean;
@@ -66,32 +67,68 @@ const RenderForm = ({
6667
nextStep();
6768
}
6869
};
70+
71+
const cancelButtonClicked = (): void => {
72+
// eslint-disable-next-line no-console
73+
console.log('Refero props: On cancel button clicked');
74+
if (referoProps.customNavigationCallBack) {
75+
referoProps.customNavigationCallBack('cancel', undefined);
76+
}
77+
};
78+
79+
const backButtonClicked = (): void => {
80+
// eslint-disable-next-line no-console
81+
console.log('On back button clicked');
82+
if (referoProps.customNavigationCallBack) {
83+
referoProps.customNavigationCallBack('back', undefined);
84+
}
85+
};
86+
6987
return (
7088
<>
7189
<form onSubmit={methods.handleSubmit(onSubmitReactHookForm, onErrorReactHookForm)}>
7290
{displayValidationSummaryOnTop && <ValidationSummary resources={resources} />}
7391
{children}
7492
{!displayValidationSummaryOnTop && <ValidationSummary resources={resources} />}
7593
</form>
76-
<FormButtons
77-
isStepView={isStepView}
78-
submitButtonText={displayNextButton && resources.nextStep ? resources.nextStep : resources.formSend}
79-
cancelButtonText={resources.formCancel}
80-
pauseButtonText={displayPreviousButton && isStepView ? resources.previousStep || 'Lagre' : resources.formSave}
81-
submitButtonDisabled={referoProps.submitButtonDisabled}
82-
pauseButtonDisabled={referoProps.saveButtonDisabled}
83-
onSubmitButtonClicked={
84-
displayNextButton
85-
? methods.handleSubmit(handleNextStep, onErrorReactHookForm)
86-
: methods.handleSubmit(onSubmitReactHookForm, onErrorReactHookForm)
87-
}
88-
onCancelButtonClicked={(): void => {
89-
referoProps.onCancel && referoProps.onCancel();
90-
}}
91-
onPauseButtonClicked={isStepView ? displayPauseButtonInStepView : displayPauseButtonInNormalView}
92-
isAuthorized={isAuthorized}
93-
loginButton={referoProps.loginButton}
94-
/>
94+
95+
{referoProps.customProps?.isMicroweb && (
96+
<FormButtons
97+
isStepView={false}
98+
submitButtonText={'Neste'}
99+
cancelButtonText={'Avbryt'}
100+
pauseButtonText={'Tilbake'}
101+
onSubmitButtonClicked={methods.handleSubmit(onSubmitReactHookForm, onErrorReactHookForm)} // hmm. how to callback here? forwardButtonClicked
102+
onCancelButtonClicked={cancelButtonClicked}
103+
onPauseButtonClicked={backButtonClicked}
104+
isAuthorized={isAuthorized}
105+
loginButton={referoProps.loginButton}
106+
overrideButtonOrder={buttonOrderMicrowebStep}
107+
showSaveButtonAsBackButton={true}
108+
/>
109+
)}
110+
111+
{referoProps.customProps?.isMicroweb === undefined && (
112+
<FormButtons
113+
isStepView={isStepView}
114+
submitButtonText={displayNextButton && resources.nextStep ? resources.nextStep : resources.formSend}
115+
cancelButtonText={resources.formCancel}
116+
pauseButtonText={displayPreviousButton && isStepView ? resources.previousStep || 'Lagre' : resources.formSave}
117+
submitButtonDisabled={referoProps.submitButtonDisabled}
118+
pauseButtonDisabled={referoProps.saveButtonDisabled}
119+
onSubmitButtonClicked={
120+
displayNextButton
121+
? methods.handleSubmit(handleNextStep, onErrorReactHookForm)
122+
: methods.handleSubmit(onSubmitReactHookForm, onErrorReactHookForm)
123+
}
124+
onCancelButtonClicked={(): void => {
125+
referoProps.onCancel && referoProps.onCancel();
126+
}}
127+
onPauseButtonClicked={isStepView ? displayPauseButtonInStepView : displayPauseButtonInNormalView}
128+
isAuthorized={isAuthorized}
129+
loginButton={referoProps.loginButton}
130+
/>
131+
)}
95132
</>
96133
);
97134
};

src/types/formTypes/formButton.ts

+6
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,9 @@ export const buttonOrderNormalView: ButtonOrder = {
2020
2: ButtonType.pauseButton,
2121
3: ButtonType.cancelButton,
2222
};
23+
24+
export const buttonOrderMicrowebStep: ButtonOrder = {
25+
1: ButtonType.pauseButton,
26+
2: ButtonType.submitButton,
27+
3: ButtonType.cancelButton,
28+
};

src/types/referoProps.ts

+4
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,8 @@ export interface ReferoProps {
8383
},
8484
any
8585
>;
86+
customNavigationCallBack?: (navDirection: string, navContent?: Record<string, string> | undefined) => void;
87+
customProps?: {
88+
[key: string]: any;
89+
};
8690
}

0 commit comments

Comments
 (0)