Skip to content

Commit 2c8907e

Browse files
committed
♻️ [open-formulieren/open-forms#3680] Updated the LoginOptions components to deal with arrays for cosign login options
1 parent 3daa5ba commit 2c8907e

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

src/components/LoginOptions/LoginOptionsDisplay.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {getBEMClassName} from 'utils';
99
const LoginOptionsDisplay = ({
1010
loginAsYourselfOptions,
1111
loginAsGemachtigdeOptions,
12-
cosignLoginInfo,
12+
cosignLoginOptions,
1313
}) => {
1414
return (
1515
<div className={getBEMClassName('login-options')}>
@@ -36,7 +36,7 @@ const LoginOptionsDisplay = ({
3636
</>
3737
)}
3838

39-
{cosignLoginInfo && (
39+
{cosignLoginOptions && cosignLoginOptions.length > 0 && (
4040
<div className={getBEMClassName('login-options__cosign')}>
4141
<h2 className={getBEMClassName('login-options__caption')}>
4242
<FormattedMessage
@@ -45,7 +45,11 @@ const LoginOptionsDisplay = ({
4545
/>
4646
</h2>
4747

48-
<LoginButton key={cosignLoginInfo.identifier} option={cosignLoginInfo} />
48+
<div className={getBEMClassName('login-options__list')}>
49+
{cosignLoginOptions.map(option => (
50+
<LoginButton key={option.identifier} option={option} />
51+
))}
52+
</div>
4953
</div>
5054
)}
5155
</div>
@@ -55,7 +59,7 @@ const LoginOptionsDisplay = ({
5559
LoginOptionsDisplay.propTypes = {
5660
loginAsYourselfOptions: PropTypes.arrayOf(FormattedLoginOption).isRequired,
5761
loginAsGemachtigdeOptions: PropTypes.arrayOf(FormattedLoginOption).isRequired,
58-
cosignLoginInfo: FormattedLoginOption,
62+
cosignLoginOptions: PropTypes.arrayOf(FormattedLoginOption),
5963
};
6064

6165
export default LoginOptionsDisplay;

src/components/LoginOptions/index.js

+19-14
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import LoginOptionsDisplay from './LoginOptionsDisplay';
1212
const LoginOptions = ({form, onFormStart}) => {
1313
const config = useContext(ConfigContext);
1414

15-
const loginAsYourselfOptions = [];
16-
const loginAsGemachtigdeOptions = [];
15+
let loginAsYourselfOptions = [];
16+
let loginAsGemachtigdeOptions = [];
17+
let cosignLoginOptions = [];
1718

1819
form.loginOptions.forEach(option => {
1920
let readyOption = {...option};
@@ -33,6 +34,21 @@ const LoginOptions = ({form, onFormStart}) => {
3334
}
3435
});
3536

37+
if (form.cosignLoginOptions) {
38+
form.cosignLoginOptions.forEach(option => {
39+
cosignLoginOptions.push({
40+
...option,
41+
label: (
42+
<FormattedMessage
43+
description="Login button label"
44+
defaultMessage="Login with {provider}"
45+
values={{provider: option.label}}
46+
/>
47+
),
48+
});
49+
});
50+
}
51+
3652
if (!form.loginRequired) {
3753
loginAsYourselfOptions.push({
3854
identifier: 'anonymous',
@@ -51,23 +67,12 @@ const LoginOptions = ({form, onFormStart}) => {
5167
},
5268
};
5369

54-
let cosignInfo = form.cosignLoginInfo && {
55-
...form.cosignLoginInfo,
56-
label: (
57-
<FormattedMessage
58-
description="Login button label"
59-
defaultMessage="Login with {provider}"
60-
values={{provider: form.cosignLoginInfo.label}}
61-
/>
62-
),
63-
};
64-
6570
return (
6671
<Container {...containerProps}>
6772
<LoginDisplayComponent
6873
loginAsYourselfOptions={loginAsYourselfOptions}
6974
loginAsGemachtigdeOptions={loginAsGemachtigdeOptions}
70-
cosignLoginInfo={cosignInfo}
75+
cosignLoginOptions={cosignLoginOptions}
7176
/>
7277
</Container>
7378
);

src/types/Form.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const Form = PropTypes.shape({
1919
name: PropTypes.string.isRequired,
2020
loginRequired: PropTypes.bool.isRequired,
2121
loginOptions: PropTypes.arrayOf(LoginOption).isRequired,
22-
cosignLoginInfo: LoginOption,
22+
cosignLoginOptions: PropTypes.arrayOf(LoginOption),
2323
product: PropTypes.string,
2424
slug: PropTypes.string.isRequired,
2525
url: PropTypes.string.isRequired,

0 commit comments

Comments
 (0)