Skip to content

Commit 662ef96

Browse files
committed
Display legal field only based on missing fields
1 parent 9631927 commit 662ef96

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

packages/clerk-js/src/test/fixture-helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ const createSignUpFixtureHelpers = (baseClient: ClientJSON) => {
275275
status: 'missing_requirements',
276276
legal_accepted_at: null,
277277
missing_fields: ['legal_accepted'],
278+
unverified_fields: [],
278279
} as SignUpJSON;
279280
};
280281

packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { getAlternativePhoneCodeProviderData } from '@clerk/shared/alternativePhoneCode';
22
import { useClerk } from '@clerk/shared/react';
33
import type { PhoneCodeChannel, PhoneCodeChannelData, SignUpResource } from '@clerk/shared/types';
4-
import React from 'react';
4+
import React, { useMemo } from 'react';
55

66
import { isClerkAPIResponseError } from '@/index.headless';
77
import { Card } from '@/ui/elements/Card';
@@ -130,6 +130,15 @@ function SignUpStartInternal(): JSX.Element {
130130
const isLegalConsentEnabled = userSettings.signUp.legal_consent_enabled;
131131
const oidcPrompt = ctx.oidcPrompt;
132132

133+
const onlyLegalAcceptedMissing = useMemo(
134+
() =>
135+
signUp.missingFields &&
136+
signUp.missingFields.length === 1 &&
137+
signUp.missingFields[0] === 'legal_accepted' &&
138+
signUp.unverifiedFields &&
139+
signUp.unverifiedFields.length === 0,
140+
[signUp.missingFields, signUp.unverifiedFields],
141+
);
133142
const fields = determineActiveFields({
134143
attributes,
135144
hasTicket: hasTicket || hasExistingSignUpWithTicket,
@@ -445,6 +454,7 @@ function SignUpStartInternal(): JSX.Element {
445454
formState={formState}
446455
canToggleEmailPhone={canToggleEmailPhone}
447456
handleEmailPhoneToggle={handleChangeActive}
457+
onlyLegalAcceptedMissing={onlyLegalAcceptedMissing}
448458
/>
449459
)}
450460
</SocialButtonsReversibleContainerWithDivider>

packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpStart.test.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,24 @@ describe('SignUpStart', () => {
352352
screen.getByText('Terms of Service');
353353
screen.getByText('Privacy Policy');
354354
});
355+
356+
it('displays legal consent only if included in missing fields without unverified fields', async () => {
357+
const { wrapper } = await createFixtures(f => {
358+
f.withEmailAddress({ required: true });
359+
f.withPassword({ required: true });
360+
f.startSignUpWithMissingLegalAccepted();
361+
f.withLegalConsent();
362+
f.withTermsPrivacyPolicyUrls({
363+
privacyPolicy: 'https://clerk.dev/privacy',
364+
termsOfService: 'https://clerk.dev/tos',
365+
});
366+
});
367+
const { getByText, queryByText } = render(<SignUpStart />, { wrapper });
368+
expect(getByText('Terms of Service')).toBeVisible();
369+
expect(getByText('Privacy Policy')).toBeVisible();
370+
expect(queryByText('Phone number')).not.toBeInTheDocument();
371+
expect(queryByText('Password')).not.toBeInTheDocument();
372+
});
355373
});
356374

357375
describe('ticket flow', () => {

0 commit comments

Comments
 (0)