From c8048e47bfe5e5f5a140eefaa35af07bc6ed6679 Mon Sep 17 00:00:00 2001 From: Guilhem CARRON <gcarron@grandlyon.com> Date: Tue, 21 Dec 2021 11:02:08 +0000 Subject: [PATCH] feat(Terms): Add Minor version upgrade support --- src/components/App.tsx | 8 +- src/components/Routes/Routes.tsx | 9 +- src/components/Splash/SplashRoot.tsx | 6 +- .../{CGUModalspec.tsx => CGUModal.spec.tsx} | 5 +- .../Terms/LegalNoticeModal.spec.tsx | 5 +- .../Terms/MinorUpdateContent.spec.tsx | 23 + src/components/Terms/MinorUpdateContent.tsx | 24 + src/components/Terms/TermsView.spec.tsx | 10 +- src/components/Terms/TermsView.tsx | 138 +- .../__snapshots__/CGUModal.spec.tsx.snap | 1493 +++++++++++++++++ .../LegalNoticeModal.spec.tsx.snap | 1441 +++++++++++++++- .../MinorUpdateContent.spec.tsx.snap | 21 + .../__snapshots__/TermsView.spec.tsx.snap | 972 ++++++++++- src/locales/fr.json | 4 + src/models/global.model.ts | 3 +- src/models/term.model.ts | 6 + src/services/initialization.service.spec.ts | 20 +- src/services/initialization.service.ts | 51 +- src/services/terms.service.spec.ts | 24 + src/services/terms.service.ts | 17 +- src/store/global/global.actions.ts | 8 +- src/store/global/global.reducer.ts | 7 +- tests/__mocks__/globalStateData.mock.ts | 6 +- tests/__mocks__/store.ts | 5 +- 24 files changed, 4206 insertions(+), 100 deletions(-) rename src/components/Terms/{CGUModalspec.tsx => CGUModal.spec.tsx} (82%) create mode 100644 src/components/Terms/MinorUpdateContent.spec.tsx create mode 100644 src/components/Terms/MinorUpdateContent.tsx create mode 100644 src/components/Terms/__snapshots__/CGUModal.spec.tsx.snap create mode 100644 src/components/Terms/__snapshots__/MinorUpdateContent.spec.tsx.snap diff --git a/src/components/App.tsx b/src/components/App.tsx index ee6a30fd9..171fcd7bc 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -17,9 +17,7 @@ export const history = createBrowserHistory() export const App = () => { const { onboarding } = useSelector((state: AppStore) => state.ecolyo.profile) - const { isLastTermAccepted } = useSelector( - (state: AppStore) => state.ecolyo.global - ) + const { termsStatus } = useSelector((state: AppStore) => state.ecolyo.global) return ( <HashRouter {...history}> @@ -28,7 +26,7 @@ export const App = () => { splashComponent={SplashScreen} splashErrorComponent={SplashScreenError} > - {isLastTermAccepted && ( + {termsStatus.accepted && ( <> <WelcomeModal open={!onboarding.isWelcomeSeen} /> <Navbar /> @@ -36,7 +34,7 @@ export const App = () => { )} <Main> <Content className="app-content"> - <Routes isLastTermAccepted={isLastTermAccepted} /> + <Routes termsStatus={termsStatus} /> </Content> </Main> </SplashRoot> diff --git a/src/components/Routes/Routes.tsx b/src/components/Routes/Routes.tsx index 15879a680..ccfaa9b9a 100644 --- a/src/components/Routes/Routes.tsx +++ b/src/components/Routes/Routes.tsx @@ -8,6 +8,7 @@ import ExplorationView from 'components/Exploration/ExplorationView' import ActionView from 'components/Action/ActionView' import UnSubscribe from 'components/Options/UnSubscribe' import TermsView from 'components/Terms/TermsView' +import { TermsStatus } from 'models' const ConsumptionView = lazy(() => import('components/Home/ConsumptionView')) @@ -26,15 +27,15 @@ const ProfileTypeView = lazy(() => ) interface RouteProps { - isLastTermAccepted: boolean + termsStatus: TermsStatus } -const Routes: React.FC<RouteProps> = ({ isLastTermAccepted }: RouteProps) => { +const Routes: React.FC<RouteProps> = ({ termsStatus }: RouteProps) => { return ( <Suspense fallback={<div></div>}> <Switch> - {isLastTermAccepted && <Redirect from="/terms" to="/consumption" />} + {termsStatus.accepted && <Redirect from="/terms" to="/consumption" />} <Route path="/terms" component={TermsView} /> - {!isLastTermAccepted && ( + {!termsStatus.accepted && ( <> <Redirect from="*" to="/terms" /> <Redirect from="/" to="/terms" /> diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx index c6a002c1f..dffc345f1 100644 --- a/src/components/Splash/SplashRoot.tsx +++ b/src/components/Splash/SplashRoot.tsx @@ -49,7 +49,7 @@ import { import { DateTime } from 'luxon' import { UserActionState } from 'enum/userAction.enum' import ActionService from 'services/action.service' -import { FluidStatus, UserChallenge } from 'models' +import { FluidStatus, TermsStatus, UserChallenge } from 'models' import UsageEventService from 'services/usageEvent.service' import { UsageEventType } from 'enum/usageEvent.enum' import { MigrationService } from 'migrations/migration.service' @@ -119,8 +119,8 @@ const SplashRoot = ({ ) //init Terms - const isLastTermAccepted = await initializationService.initConsent() - if (subscribed) dispatch(updateTermValidation(isLastTermAccepted)) + const termsStatus: TermsStatus = await initializationService.initConsent() + if (subscribed) dispatch(updateTermValidation(termsStatus)) // Init profile and update ecogestures, challenges, analysis const profile = await initializationService.initProfile() diff --git a/src/components/Terms/CGUModalspec.tsx b/src/components/Terms/CGUModal.spec.tsx similarity index 82% rename from src/components/Terms/CGUModalspec.tsx rename to src/components/Terms/CGUModal.spec.tsx index 942fb2ac2..bcac7e89c 100644 --- a/src/components/Terms/CGUModalspec.tsx +++ b/src/components/Terms/CGUModal.spec.tsx @@ -1,6 +1,7 @@ import React from 'react' import { mount } from 'enzyme' import CGUModal from './CGUModal' +import toJson from 'enzyme-to-json' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -16,7 +17,7 @@ describe('CGUModal component', () => { it('should be rendered correctly', () => { const component = mount( <CGUModal open={true} handleCloseClick={jest.fn()} /> - ).getElement() - expect(component).toMatchSnapshot() + ) + expect(toJson(component)).toMatchSnapshot() }) }) diff --git a/src/components/Terms/LegalNoticeModal.spec.tsx b/src/components/Terms/LegalNoticeModal.spec.tsx index 0b2265820..788b2b8f4 100644 --- a/src/components/Terms/LegalNoticeModal.spec.tsx +++ b/src/components/Terms/LegalNoticeModal.spec.tsx @@ -1,6 +1,7 @@ import React from 'react' import { mount } from 'enzyme' import LegalNoticeModal from './LegalNoticeModal' +import toJson from 'enzyme-to-json' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -16,7 +17,7 @@ describe('LegalNoticeModal component', () => { it('should be rendered correctly', () => { const component = mount( <LegalNoticeModal open={true} handleCloseClick={jest.fn()} /> - ).getElement() - expect(component).toMatchSnapshot() + ) + expect(toJson(component)).toMatchSnapshot() }) }) diff --git a/src/components/Terms/MinorUpdateContent.spec.tsx b/src/components/Terms/MinorUpdateContent.spec.tsx new file mode 100644 index 000000000..3ce0d5e38 --- /dev/null +++ b/src/components/Terms/MinorUpdateContent.spec.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { mount } from 'enzyme' +import toJson from 'enzyme-to-json' +import MinorUpdateContent from './MinorUpdateContent' + +jest.mock('cozy-ui/transpiled/react/I18n', () => { + return { + useI18n: jest.fn(() => { + return { + t: (str: string) => str, + } + }), + } +}) + +describe('Minor update content component', () => { + it('should be rendered correctly', () => { + const component = mount( + <MinorUpdateContent toggleLegalNoticeModal={jest.fn()} /> + ) + expect(toJson(component)).toMatchSnapshot() + }) +}) diff --git a/src/components/Terms/MinorUpdateContent.tsx b/src/components/Terms/MinorUpdateContent.tsx new file mode 100644 index 000000000..fcc7ca4c8 --- /dev/null +++ b/src/components/Terms/MinorUpdateContent.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { useI18n } from 'cozy-ui/transpiled/react/I18n' +import './termsView.scss' + +interface MinorUpdateContentProps { + toggleLegalNoticeModal: () => void +} + +const MinorUpdateContent = ({ + toggleLegalNoticeModal, +}: MinorUpdateContentProps) => { + const { t } = useI18n() + return ( + <div className="dataShare-content-root"> + <div className="dataShare-content-wrapper"> + <h1 className="dataShare-content-title text-22-normal"> + {t('minorUpdate.title')} + </h1> + </div> + </div> + ) +} + +export default MinorUpdateContent diff --git a/src/components/Terms/TermsView.spec.tsx b/src/components/Terms/TermsView.spec.tsx index 9e2a32810..8aa6a6651 100644 --- a/src/components/Terms/TermsView.spec.tsx +++ b/src/components/Terms/TermsView.spec.tsx @@ -5,9 +5,10 @@ import { profileData } from '../../../tests/__mocks__/profile.mock' import configureStore from 'redux-mock-store' import { Provider } from 'react-redux' import { Button } from '@material-ui/core' - +import toJson from 'enzyme-to-json' import * as reactRedux from 'react-redux' import { mockUpToDateTerm } from '../../../tests/__mocks__/termsData.mock' +import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -45,6 +46,7 @@ describe('TermsView component', () => { const store = mockStore({ ecolyo: { profile: profileData, + global: globalStateData, }, }) mockCreateTerm.mockResolvedValueOnce(mockUpToDateTerm) @@ -90,19 +92,21 @@ describe('TermsView component', () => { const store = mockStore({ ecolyo: { profile: profileData, + global: globalStateData, }, }) const component = mount( <Provider store={store}> <TermsView /> </Provider> - ).getElement() - expect(component).toMatchSnapshot() + ) + expect(toJson(component)).toMatchSnapshot() }) it('shouldbe unable to valid consent', async () => { const store = mockStore({ ecolyo: { profile: profileData, + global: globalStateData, }, }) mockCreateTerm.mockResolvedValueOnce(mockUpToDateTerm) diff --git a/src/components/Terms/TermsView.tsx b/src/components/Terms/TermsView.tsx index 93fef08f7..6de439369 100644 --- a/src/components/Terms/TermsView.tsx +++ b/src/components/Terms/TermsView.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useState } from 'react' import classNames from 'classnames' import { useI18n } from 'cozy-ui/transpiled/react/I18n' -import { useDispatch } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' import { Button } from '@material-ui/core' import TermsService from 'services/terms.service' import { useClient } from 'cozy-client' @@ -12,6 +12,8 @@ import { decoreText } from 'utils/decoreText' import { updateTermValidation } from 'store/global/global.actions' import CGUModal from './CGUModal' import LegalNoticeModal from './LegalNoticeModal' +import { AppStore } from 'store' +import MinorUpdateContent from './MinorUpdateContent' const TermsView: React.FC = () => { const { t } = useI18n() @@ -26,6 +28,7 @@ const TermsView: React.FC = () => { const [openLegalNoticeModal, setOpenLegalNoticeModal] = useState<boolean>( false ) + const { termsStatus } = useSelector((state: AppStore) => state.ecolyo.global) const toggleCGUModal = () => { setOpenCGUModal(prev => !prev) @@ -46,64 +49,95 @@ const TermsView: React.FC = () => { const termsService = new TermsService(client) const createdTerm = await termsService.createTerm() if (createdTerm) { - dispatch(updateTermValidation(true)) + dispatch( + updateTermValidation({ + accepted: true, + versionType: await termsService.getTermsVersionType(), + }) + ) } history.push('/consumption') }, [dispatch, client, history]) return ( <div className="terms-wrapper"> - <div className="terms-content"> - <DataShareConsentContent /> - <label - className={classNames('checkbox', { - ['answer-checked']: dataConsentValidation, - })} - > - <input - type={'checkbox'} - name="Data-consent-validation" - onChange={handleDataConsentValidation} - checked={dataConsentValidation} - /> - {t('dataShare.validDataConsent')} - </label> - <label - className={classNames('checkbox', { - ['answer-checked']: GCUValidation, - })} - > - <input - type={'checkbox'} - name="GCU-validation" - onChange={handleGCUValidate} - checked={GCUValidation} - /> - <span> - {decoreText(t('dataShare.validCGU'), () => toggleCGUModal())} - {decoreText(t('dataShare.validLegal'), () => - toggleLegalNoticeModal() - )} - </span> - </label> - </div> + {termsStatus.versionType === 'major' || + termsStatus.versionType === 'init' ? ( + <> + <div className="terms-content"> + <DataShareConsentContent /> + <label + className={classNames('checkbox', { + ['answer-checked']: dataConsentValidation, + })} + > + <input + type={'checkbox'} + name="Data-consent-validation" + onChange={handleDataConsentValidation} + checked={dataConsentValidation} + /> + {t('dataShare.validDataConsent')} + </label> + <label + className={classNames('checkbox', { + ['answer-checked']: GCUValidation, + })} + > + <input + type={'checkbox'} + name="GCU-validation" + onChange={handleGCUValidate} + checked={GCUValidation} + /> + <span> + {decoreText(t('dataShare.validCGU'), () => toggleCGUModal())} + {decoreText(t('dataShare.validLegal'), () => + toggleLegalNoticeModal() + )} + </span> + </label> + </div> + <div className="terms-footer"> + <Button + aria-label={t('dataShare.accessibility.button_accept')} + onClick={handleTermValidate} + className={classNames('gcu-modal-button', { + ['disabled']: !GCUValidation || !dataConsentValidation, + })} + disabled={!GCUValidation || !dataConsentValidation} + classes={{ + root: 'btn-profile-next rounded', + label: 'text-16-bold', + }} + > + {t('dataShare.button_accept')} + </Button> + </div> + </> + ) : ( + <> + <div className="terms-content"> + <MinorUpdateContent + toggleLegalNoticeModal={toggleLegalNoticeModal} + /> + </div> + <div className="terms-footer"> + <Button + aria-label={t('minorUpdate.button')} + onClick={handleTermValidate} + className={'gcu-modal-button'} + classes={{ + root: 'btn-profile-next rounded', + label: 'text-16-bold', + }} + > + {t('minorUpdate.button')} + </Button> + </div> + </> + )} - <div className="terms-footer"> - <Button - aria-label={t('dataShare.accessibility.button_accept')} - onClick={handleTermValidate} - className={classNames('gcu-modal-button', { - ['disabled']: !GCUValidation || !dataConsentValidation, - })} - disabled={!GCUValidation || !dataConsentValidation} - classes={{ - root: 'btn-profile-next rounded', - label: 'text-16-bold', - }} - > - {t('dataShare.button_accept')} - </Button> - </div> <CGUModal open={openCGUModal} handleCloseClick={toggleCGUModal} /> <LegalNoticeModal open={openLegalNoticeModal} diff --git a/src/components/Terms/__snapshots__/CGUModal.spec.tsx.snap b/src/components/Terms/__snapshots__/CGUModal.spec.tsx.snap new file mode 100644 index 000000000..2658db800 --- /dev/null +++ b/src/components/Terms/__snapshots__/CGUModal.spec.tsx.snap @@ -0,0 +1,1493 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CGUModal component should be rendered correctly 1`] = ` +<CGUModal + handleCloseClick={[MockFunction]} + open={true} +> + <WithStyles(ForwardRef(Dialog)) + aria-labelledby="accessibility-title" + classes={ + Object { + "paper": "modal-paper", + "root": "modal-root", + } + } + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Dialog) + aria-labelledby="accessibility-title" + classes={ + Object { + "container": "MuiDialog-container", + "paper": "MuiDialog-paper modal-paper", + "paperFullScreen": "MuiDialog-paperFullScreen", + "paperFullWidth": "MuiDialog-paperFullWidth", + "paperScrollBody": "MuiDialog-paperScrollBody", + "paperScrollPaper": "MuiDialog-paperScrollPaper", + "paperWidthFalse": "MuiDialog-paperWidthFalse", + "paperWidthLg": "MuiDialog-paperWidthLg", + "paperWidthMd": "MuiDialog-paperWidthMd", + "paperWidthSm": "MuiDialog-paperWidthSm", + "paperWidthXl": "MuiDialog-paperWidthXl", + "paperWidthXs": "MuiDialog-paperWidthXs", + "root": "MuiDialog-root modal-root", + "scrollBody": "MuiDialog-scrollBody", + "scrollPaper": "MuiDialog-scrollPaper", + } + } + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Modal) + BackdropComponent={ + Object { + "$$typeof": Symbol(react.forward_ref), + "Naked": Object { + "$$typeof": Symbol(react.forward_ref), + "propTypes": Object { + "children": [Function], + "className": [Function], + "classes": [Function], + "invisible": [Function], + "open": [Function], + "transitionDuration": [Function], + }, + "render": [Function], + }, + "displayName": "WithStyles(ForwardRef(Backdrop))", + "options": Object { + "defaultTheme": Object { + "breakpoints": Object { + "between": [Function], + "down": [Function], + "keys": Array [ + "xs", + "sm", + "md", + "lg", + "xl", + ], + "only": [Function], + "up": [Function], + "values": Object { + "lg": 1280, + "md": 960, + "sm": 600, + "xl": 1920, + "xs": 0, + }, + "width": [Function], + }, + "direction": "ltr", + "mixins": Object { + "gutters": [Function], + "toolbar": Object { + "@media (min-width:0px) and (orientation: landscape)": Object { + "minHeight": 48, + }, + "@media (min-width:600px)": Object { + "minHeight": 64, + }, + "minHeight": 56, + }, + }, + "overrides": Object {}, + "palette": Object { + "action": Object { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)", + "disabledBackground": "rgba(0, 0, 0, 0.12)", + "hover": "rgba(0, 0, 0, 0.08)", + "hoverOpacity": 0.08, + "selected": "rgba(0, 0, 0, 0.14)", + }, + "augmentColor": [Function], + "background": Object { + "default": "#fafafa", + "paper": "#fff", + }, + "common": Object { + "black": "#000", + "white": "#fff", + }, + "contrastThreshold": 3, + "divider": "rgba(0, 0, 0, 0.12)", + "error": Object { + "contrastText": "#fff", + "dark": "#d32f2f", + "light": "#e57373", + "main": "#f44336", + }, + "getContrastText": [Function], + "grey": Object { + "100": "#f5f5f5", + "200": "#eeeeee", + "300": "#e0e0e0", + "400": "#bdbdbd", + "50": "#fafafa", + "500": "#9e9e9e", + "600": "#757575", + "700": "#616161", + "800": "#424242", + "900": "#212121", + "A100": "#d5d5d5", + "A200": "#aaaaaa", + "A400": "#303030", + "A700": "#616161", + }, + "info": Object { + "contrastText": "#fff", + "dark": "#1976d2", + "light": "#64b5f6", + "main": "#2196f3", + }, + "primary": Object { + "contrastText": "#fff", + "dark": "#303f9f", + "light": "#7986cb", + "main": "#3f51b5", + }, + "secondary": Object { + "contrastText": "#fff", + "dark": "#c51162", + "light": "#ff4081", + "main": "#f50057", + }, + "success": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#388e3c", + "light": "#81c784", + "main": "#4caf50", + }, + "text": Object { + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + }, + "tonalOffset": 0.2, + "type": "light", + "warning": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#f57c00", + "light": "#ffb74d", + "main": "#ff9800", + }, + }, + "props": Object {}, + "shadows": Array [ + "none", + "0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)", + "0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)", + "0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)", + "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", + "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", + "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", + "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", + "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", + "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", + "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", + "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", + "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", + "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", + "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", + "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", + "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", + "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", + "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)", + ], + "shape": Object { + "borderRadius": 4, + }, + "spacing": [Function], + "transitions": Object { + "create": [Function], + "duration": Object { + "complex": 375, + "enteringScreen": 225, + "leavingScreen": 195, + "short": 250, + "shorter": 200, + "shortest": 150, + "standard": 300, + }, + "easing": Object { + "easeIn": "cubic-bezier(0.4, 0, 1, 1)", + "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut": "cubic-bezier(0.0, 0, 0.2, 1)", + "sharp": "cubic-bezier(0.4, 0, 0.6, 1)", + }, + "getAutoHeightDuration": [Function], + }, + "typography": Object { + "body1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.5, + }, + "body2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 400, + "letterSpacing": "0.01071em", + "lineHeight": 1.43, + }, + "button": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.02857em", + "lineHeight": 1.75, + "textTransform": "uppercase", + }, + "caption": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.03333em", + "lineHeight": 1.66, + }, + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": 14, + "fontWeightBold": 700, + "fontWeightLight": 300, + "fontWeightMedium": 500, + "fontWeightRegular": 400, + "h1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "6rem", + "fontWeight": 300, + "letterSpacing": "-0.01562em", + "lineHeight": 1.167, + }, + "h2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3.75rem", + "fontWeight": 300, + "letterSpacing": "-0.00833em", + "lineHeight": 1.2, + }, + "h3": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.167, + }, + "h4": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "2.125rem", + "fontWeight": 400, + "letterSpacing": "0.00735em", + "lineHeight": 1.235, + }, + "h5": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.5rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.334, + }, + "h6": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.25rem", + "fontWeight": 500, + "letterSpacing": "0.0075em", + "lineHeight": 1.6, + }, + "htmlFontSize": 16, + "overline": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.08333em", + "lineHeight": 2.66, + "textTransform": "uppercase", + }, + "pxToRem": [Function], + "round": [Function], + "subtitle1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.75, + }, + "subtitle2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.00714em", + "lineHeight": 1.57, + }, + }, + "zIndex": Object { + "appBar": 1100, + "drawer": 1200, + "mobileStepper": 1000, + "modal": 1300, + "snackbar": 1400, + "speedDial": 1050, + "tooltip": 1500, + }, + }, + "name": "MuiBackdrop", + }, + "propTypes": Object { + "classes": [Function], + "innerRef": [Function], + }, + "render": [Function], + "useStyles": [Function], + } + } + BackdropProps={ + Object { + "transitionDuration": Object { + "enter": 225, + "exit": 195, + }, + } + } + className="MuiDialog-root modal-root" + closeAfterTransition={true} + disableBackdropClick={false} + disableEscapeKeyDown={false} + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Portal) + disablePortal={false} + > + <Portal + containerInfo={ + <body + style="padding-right: 0px; overflow: hidden;" + > + <div + class="MuiDialog-root modal-root" + role="presentation" + style="position: fixed; z-index: 1300; right: 0px; bottom: 0px; top: 0px; left: 0px;" + > + <div + aria-hidden="true" + class="MuiBackdrop-root" + style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;" + /> + <div + data-test="sentinelStart" + tabindex="0" + /> + <div + class="MuiDialog-container MuiDialog-scrollPaper" + role="none presentation" + style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;" + tabindex="-1" + > + <div + aria-labelledby="accessibility-title" + class="MuiPaper-root MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" + role="dialog" + > + <div + id="accessibility-title" + > + feedback.accessibility.window_title + </div> + <button + aria-label="feedback.accessibility.button_close" + class="MuiButtonBase-root MuiIconButton-root modal-paper-close-button" + tabindex="0" + type="button" + > + <span + class="MuiIconButton-label" + > + <svg + class="styles__icon___23x3R" + height="16" + width="16" + > + <use + xlink:href="#test-file-stub" + /> + </svg> + </span> + <span + class="MuiTouchRipple-root" + /> + </button> + <div + class="gcu-content-root" + > + <div + class="gcu-content-wrapper" + > + <h1 + class="gcu-content-title text-22-normal" + > + gcu.title + </h1> + <p + class="text-14-normal version" + > + gcu.version + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title1 + </div> + <p + class="text-14-normal" + > + gcu.content.part1_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part1_2 + </p> + <p + class="text-14-normal" + > + gcu.content.part1_3 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title2 + </div> + <p + class="text-14-normal" + > + gcu.content.part2_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part2_2 + </p> + <ul + class="text-14-normal" + > + <li> + gcu.content.part2_2_list1 + </li> + <li> + gcu.content.part2_2_list2 + </li> + <li> + gcu.content.part2_2_list3 + </li> + </ul> + <p + class="text-14-normal" + > + gcu.content.part2_3 + </p> + <p + class="text-14-normal" + > + gcu.content.part2_4 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title3 + </div> + <p + class="text-14-normal" + > + gcu.content.part3_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part3_2 + </p> + <p + class="text-14-normal" + > + gcu.content.part3_3 + </p> + <p + class="text-14-normal" + > + gcu.content.part3_4 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title4 + </div> + <p + class="text-14-normal" + > + gcu.content.part4_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part4_2 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title5 + </div> + <p + class="text-14-normal" + > + gcu.content.part5_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part5_2 + </p> + <p + class="text-14-normal" + > + gcu.content.part5_3 + </p> + <ul + class="text-14-normal" + > + <li> + gcu.content.part5_3_list1 + </li> + <li> + gcu.content.part5_3_list2 + </li> + <li> + gcu.content.part5_3_list3 + </li> + </ul> + <p + class="text-14-normal" + > + gcu.content.part5_4 + </p> + <p + class="text-14-normal" + > + gcu.content.part5_5 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title6 + </div> + <p + class="text-14-normal" + > + gcu.content.part6_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part6_2 + </p> + <p + class="text-14-normal" + > + gcu.content.part6_3 + </p> + <ul + class="text-14-normal" + > + <li> + gcu.content.part6_3_list1 + </li> + <li> + gcu.content.part6_3_list2 + </li> + <li> + gcu.content.part6_3_list3 + </li> + </ul> + <p + class="text-14-normal" + > + gcu.content.part6_4 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title8 + </div> + <p + class="text-14-normal" + > + gcu.content.part8_1 + </p> + <p + class="text-14-normal" + > + gcu.content.part8_2 + </p> + <div + class="gcu-content-part-title text-15-normal" + > + gcu.content.title9 + </div> + <p + class="text-14-normal" + > + <span + class="text-14-bold" + > + gcu.content.part9_1_title + </span> + <span> + gcu.content.part9_1_content + </span> + </p> + <p + class="text-14-normal" + > + <span + class="text-14-bold" + > + gcu.content.part9_2_title + </span> + <span> + gcu.content.part9_2_content + </span> + </p> + <p + class="text-14-normal" + > + <span + class="text-14-bold" + > + gcu.content.part9_3_title + </span> + <span> + gcu.content.part9_3_content + </span> + </p> + <p + class="text-14-normal" + > + <span + class="text-14-bold" + > + gcu.content.part9_4_title + </span> + <span> + gcu.content.part9_4_content + </span> + </p> + <p + class="text-14-normal" + > + <span + class="text-14-bold" + > + gcu.content.part9_5_title + </span> + <span> + gcu.content.part9_5_content + </span> + </p> + </div> + </div> + <button + aria-label="gcu_modal.accessibility.button_accept" + class="MuiButtonBase-root MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + tabindex="0" + type="button" + > + <span + class="MuiButton-label text-16-bold" + > + legal.accessibility.button_close + </span> + <span + class="MuiTouchRipple-root" + /> + </button> + </div> + </div> + <div + data-test="sentinelEnd" + tabindex="0" + /> + </div> + </body> + } + > + <div + className="MuiDialog-root modal-root" + onKeyDown={[Function]} + role="presentation" + style={ + Object { + "bottom": 0, + "left": 0, + "position": "fixed", + "right": 0, + "top": 0, + "zIndex": 1300, + } + } + > + <WithStyles(ForwardRef(Backdrop)) + onClick={[Function]} + open={true} + transitionDuration={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <ForwardRef(Backdrop) + classes={ + Object { + "invisible": "MuiBackdrop-invisible", + "root": "MuiBackdrop-root", + } + } + onClick={[Function]} + open={true} + transitionDuration={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <ForwardRef(Fade) + in={true} + onClick={[Function]} + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <Transition + appear={true} + enter={true} + exit={true} + in={true} + mountOnEnter={false} + onClick={[Function]} + onEnter={[Function]} + onEntered={[Function]} + onEntering={[Function]} + onExit={[Function]} + onExited={[Function]} + onExiting={[Function]} + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + unmountOnExit={false} + > + <div + aria-hidden={true} + className="MuiBackdrop-root" + onClick={[Function]} + style={ + Object { + "opacity": 1, + "visibility": undefined, + } + } + /> + </Transition> + </ForwardRef(Fade)> + </ForwardRef(Backdrop)> + </WithStyles(ForwardRef(Backdrop))> + <TrapFocus + disableAutoFocus={false} + disableEnforceFocus={false} + disableRestoreFocus={false} + getDoc={[Function]} + isEnabled={[Function]} + open={true} + > + <div + data-test="sentinelStart" + tabIndex={0} + /> + <ForwardRef(Fade) + appear={true} + in={true} + onEnter={[Function]} + onExited={[Function]} + role="none presentation" + tabIndex="-1" + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <Transition + appear={true} + enter={true} + exit={true} + in={true} + mountOnEnter={false} + onEnter={[Function]} + onEntered={[Function]} + onEntering={[Function]} + onExit={[Function]} + onExited={[Function]} + onExiting={[Function]} + role="none presentation" + tabIndex="-1" + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + unmountOnExit={false} + > + <div + className="MuiDialog-container MuiDialog-scrollPaper" + onClick={[Function]} + onMouseDown={[Function]} + role="none presentation" + style={ + Object { + "opacity": 1, + "visibility": undefined, + } + } + tabIndex="-1" + > + <WithStyles(ForwardRef(Paper)) + aria-labelledby="accessibility-title" + className="MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm" + elevation={24} + role="dialog" + > + <ForwardRef(Paper) + aria-labelledby="accessibility-title" + className="MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm" + classes={ + Object { + "elevation0": "MuiPaper-elevation0", + "elevation1": "MuiPaper-elevation1", + "elevation10": "MuiPaper-elevation10", + "elevation11": "MuiPaper-elevation11", + "elevation12": "MuiPaper-elevation12", + "elevation13": "MuiPaper-elevation13", + "elevation14": "MuiPaper-elevation14", + "elevation15": "MuiPaper-elevation15", + "elevation16": "MuiPaper-elevation16", + "elevation17": "MuiPaper-elevation17", + "elevation18": "MuiPaper-elevation18", + "elevation19": "MuiPaper-elevation19", + "elevation2": "MuiPaper-elevation2", + "elevation20": "MuiPaper-elevation20", + "elevation21": "MuiPaper-elevation21", + "elevation22": "MuiPaper-elevation22", + "elevation23": "MuiPaper-elevation23", + "elevation24": "MuiPaper-elevation24", + "elevation3": "MuiPaper-elevation3", + "elevation4": "MuiPaper-elevation4", + "elevation5": "MuiPaper-elevation5", + "elevation6": "MuiPaper-elevation6", + "elevation7": "MuiPaper-elevation7", + "elevation8": "MuiPaper-elevation8", + "elevation9": "MuiPaper-elevation9", + "outlined": "MuiPaper-outlined", + "root": "MuiPaper-root", + "rounded": "MuiPaper-rounded", + } + } + elevation={24} + role="dialog" + > + <div + aria-labelledby="accessibility-title" + className="MuiPaper-root MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" + role="dialog" + > + <div + id="accessibility-title" + > + feedback.accessibility.window_title + </div> + <WithStyles(ForwardRef(IconButton)) + aria-label="feedback.accessibility.button_close" + className="modal-paper-close-button" + onClick={[MockFunction]} + > + <ForwardRef(IconButton) + aria-label="feedback.accessibility.button_close" + className="modal-paper-close-button" + classes={ + Object { + "colorInherit": "MuiIconButton-colorInherit", + "colorPrimary": "MuiIconButton-colorPrimary", + "colorSecondary": "MuiIconButton-colorSecondary", + "disabled": "Mui-disabled", + "edgeEnd": "MuiIconButton-edgeEnd", + "edgeStart": "MuiIconButton-edgeStart", + "label": "MuiIconButton-label", + "root": "MuiIconButton-root", + "sizeSmall": "MuiIconButton-sizeSmall", + } + } + onClick={[MockFunction]} + > + <WithStyles(ForwardRef(ButtonBase)) + aria-label="feedback.accessibility.button_close" + centerRipple={true} + className="MuiIconButton-root modal-paper-close-button" + disabled={false} + focusRipple={true} + onClick={[MockFunction]} + > + <ForwardRef(ButtonBase) + aria-label="feedback.accessibility.button_close" + centerRipple={true} + className="MuiIconButton-root modal-paper-close-button" + classes={ + Object { + "disabled": "Mui-disabled", + "focusVisible": "Mui-focusVisible", + "root": "MuiButtonBase-root", + } + } + disabled={false} + focusRipple={true} + onClick={[MockFunction]} + > + <button + aria-label="feedback.accessibility.button_close" + className="MuiButtonBase-root MuiIconButton-root modal-paper-close-button" + disabled={false} + onBlur={[Function]} + onClick={[MockFunction]} + onDragLeave={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyUp={[Function]} + onMouseDown={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + onTouchMove={[Function]} + onTouchStart={[Function]} + tabIndex={0} + type="button" + > + <span + className="MuiIconButton-label" + > + <Icon + icon="test-file-stub" + size={16} + spin={false} + > + <Component + className="styles__icon___23x3R" + height={16} + style={Object {}} + width={16} + > + <svg + className="styles__icon___23x3R" + height={16} + style={Object {}} + width={16} + > + <use + xlinkHref="#test-file-stub" + /> + </svg> + </Component> + </Icon> + </span> + <NoSsr> + <WithStyles(memo) + center={true} + > + <ForwardRef(TouchRipple) + center={true} + classes={ + Object { + "child": "MuiTouchRipple-child", + "childLeaving": "MuiTouchRipple-childLeaving", + "childPulsate": "MuiTouchRipple-childPulsate", + "ripple": "MuiTouchRipple-ripple", + "ripplePulsate": "MuiTouchRipple-ripplePulsate", + "rippleVisible": "MuiTouchRipple-rippleVisible", + "root": "MuiTouchRipple-root", + } + } + > + <span + className="MuiTouchRipple-root" + > + <TransitionGroup + childFactory={[Function]} + component={null} + exit={true} + /> + </span> + </ForwardRef(TouchRipple)> + </WithStyles(memo)> + </NoSsr> + </button> + </ForwardRef(ButtonBase)> + </WithStyles(ForwardRef(ButtonBase))> + </ForwardRef(IconButton)> + </WithStyles(ForwardRef(IconButton))> + <GCUContent> + <div + className="gcu-content-root" + > + <div + className="gcu-content-wrapper" + > + <h1 + className="gcu-content-title text-22-normal" + > + gcu.title + </h1> + <p + className="text-14-normal version" + > + gcu.version + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title1 + </div> + <p + className="text-14-normal" + > + gcu.content.part1_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part1_2 + </p> + <p + className="text-14-normal" + > + gcu.content.part1_3 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title2 + </div> + <p + className="text-14-normal" + > + gcu.content.part2_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part2_2 + </p> + <ul + className="text-14-normal" + > + <li> + gcu.content.part2_2_list1 + </li> + <li> + gcu.content.part2_2_list2 + </li> + <li> + gcu.content.part2_2_list3 + </li> + </ul> + <p + className="text-14-normal" + > + gcu.content.part2_3 + </p> + <p + className="text-14-normal" + > + gcu.content.part2_4 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title3 + </div> + <p + className="text-14-normal" + > + gcu.content.part3_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part3_2 + </p> + <p + className="text-14-normal" + > + gcu.content.part3_3 + </p> + <p + className="text-14-normal" + > + gcu.content.part3_4 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title4 + </div> + <p + className="text-14-normal" + > + gcu.content.part4_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part4_2 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title5 + </div> + <p + className="text-14-normal" + > + gcu.content.part5_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part5_2 + </p> + <p + className="text-14-normal" + > + gcu.content.part5_3 + </p> + <ul + className="text-14-normal" + > + <li> + gcu.content.part5_3_list1 + </li> + <li> + gcu.content.part5_3_list2 + </li> + <li> + gcu.content.part5_3_list3 + </li> + </ul> + <p + className="text-14-normal" + > + gcu.content.part5_4 + </p> + <p + className="text-14-normal" + > + gcu.content.part5_5 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title6 + </div> + <p + className="text-14-normal" + > + gcu.content.part6_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part6_2 + </p> + <p + className="text-14-normal" + > + gcu.content.part6_3 + </p> + <ul + className="text-14-normal" + > + <li> + gcu.content.part6_3_list1 + </li> + <li> + gcu.content.part6_3_list2 + </li> + <li> + gcu.content.part6_3_list3 + </li> + </ul> + <p + className="text-14-normal" + > + gcu.content.part6_4 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title8 + </div> + <p + className="text-14-normal" + > + gcu.content.part8_1 + </p> + <p + className="text-14-normal" + > + gcu.content.part8_2 + </p> + <div + className="gcu-content-part-title text-15-normal" + > + gcu.content.title9 + </div> + <p + className="text-14-normal" + > + <span + className="text-14-bold" + > + gcu.content.part9_1_title + </span> + <span> + gcu.content.part9_1_content + </span> + </p> + <p + className="text-14-normal" + > + <span + className="text-14-bold" + > + gcu.content.part9_2_title + </span> + <span> + gcu.content.part9_2_content + </span> + </p> + <p + className="text-14-normal" + > + <span + className="text-14-bold" + > + gcu.content.part9_3_title + </span> + <span> + gcu.content.part9_3_content + </span> + </p> + <p + className="text-14-normal" + > + <span + className="text-14-bold" + > + gcu.content.part9_4_title + </span> + <span> + gcu.content.part9_4_content + </span> + </p> + <p + className="text-14-normal" + > + <span + className="text-14-bold" + > + gcu.content.part9_5_title + </span> + <span> + gcu.content.part9_5_content + </span> + </p> + </div> + </div> + </GCUContent> + <WithStyles(ForwardRef(Button)) + aria-label="gcu_modal.accessibility.button_accept" + className="gcu-modal-button" + classes={ + Object { + "label": "text-16-bold", + "root": "btn-profile-next rounded", + } + } + onClick={[MockFunction]} + > + <ForwardRef(Button) + aria-label="gcu_modal.accessibility.button_accept" + className="gcu-modal-button" + classes={ + Object { + "colorInherit": "MuiButton-colorInherit", + "contained": "MuiButton-contained", + "containedPrimary": "MuiButton-containedPrimary", + "containedSecondary": "MuiButton-containedSecondary", + "containedSizeLarge": "MuiButton-containedSizeLarge", + "containedSizeSmall": "MuiButton-containedSizeSmall", + "disableElevation": "MuiButton-disableElevation", + "disabled": "Mui-disabled", + "endIcon": "MuiButton-endIcon", + "focusVisible": "Mui-focusVisible", + "fullWidth": "MuiButton-fullWidth", + "iconSizeLarge": "MuiButton-iconSizeLarge", + "iconSizeMedium": "MuiButton-iconSizeMedium", + "iconSizeSmall": "MuiButton-iconSizeSmall", + "label": "MuiButton-label text-16-bold", + "outlined": "MuiButton-outlined", + "outlinedPrimary": "MuiButton-outlinedPrimary", + "outlinedSecondary": "MuiButton-outlinedSecondary", + "outlinedSizeLarge": "MuiButton-outlinedSizeLarge", + "outlinedSizeSmall": "MuiButton-outlinedSizeSmall", + "root": "MuiButton-root btn-profile-next rounded", + "sizeLarge": "MuiButton-sizeLarge", + "sizeSmall": "MuiButton-sizeSmall", + "startIcon": "MuiButton-startIcon", + "text": "MuiButton-text", + "textPrimary": "MuiButton-textPrimary", + "textSecondary": "MuiButton-textSecondary", + "textSizeLarge": "MuiButton-textSizeLarge", + "textSizeSmall": "MuiButton-textSizeSmall", + } + } + onClick={[MockFunction]} + > + <WithStyles(ForwardRef(ButtonBase)) + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + component="button" + disabled={false} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[MockFunction]} + type="button" + > + <ForwardRef(ButtonBase) + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + classes={ + Object { + "disabled": "Mui-disabled", + "focusVisible": "Mui-focusVisible", + "root": "MuiButtonBase-root", + } + } + component="button" + disabled={false} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[MockFunction]} + type="button" + > + <button + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButtonBase-root MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + disabled={false} + onBlur={[Function]} + onClick={[MockFunction]} + onDragLeave={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyUp={[Function]} + onMouseDown={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + onTouchMove={[Function]} + onTouchStart={[Function]} + tabIndex={0} + type="button" + > + <span + className="MuiButton-label text-16-bold" + > + legal.accessibility.button_close + </span> + <NoSsr> + <WithStyles(memo) + center={false} + > + <ForwardRef(TouchRipple) + center={false} + classes={ + Object { + "child": "MuiTouchRipple-child", + "childLeaving": "MuiTouchRipple-childLeaving", + "childPulsate": "MuiTouchRipple-childPulsate", + "ripple": "MuiTouchRipple-ripple", + "ripplePulsate": "MuiTouchRipple-ripplePulsate", + "rippleVisible": "MuiTouchRipple-rippleVisible", + "root": "MuiTouchRipple-root", + } + } + > + <span + className="MuiTouchRipple-root" + > + <TransitionGroup + childFactory={[Function]} + component={null} + exit={true} + /> + </span> + </ForwardRef(TouchRipple)> + </WithStyles(memo)> + </NoSsr> + </button> + </ForwardRef(ButtonBase)> + </WithStyles(ForwardRef(ButtonBase))> + </ForwardRef(Button)> + </WithStyles(ForwardRef(Button))> + </div> + </ForwardRef(Paper)> + </WithStyles(ForwardRef(Paper))> + </div> + </Transition> + </ForwardRef(Fade)> + <div + data-test="sentinelEnd" + tabIndex={0} + /> + </TrapFocus> + </div> + </Portal> + </ForwardRef(Portal)> + </ForwardRef(Modal)> + </ForwardRef(Dialog)> + </WithStyles(ForwardRef(Dialog))> +</CGUModal> +`; diff --git a/src/components/Terms/__snapshots__/LegalNoticeModal.spec.tsx.snap b/src/components/Terms/__snapshots__/LegalNoticeModal.spec.tsx.snap index 81b5dd5b1..ad5889b4e 100644 --- a/src/components/Terms/__snapshots__/LegalNoticeModal.spec.tsx.snap +++ b/src/components/Terms/__snapshots__/LegalNoticeModal.spec.tsx.snap @@ -4,5 +4,1444 @@ exports[`LegalNoticeModal component should be rendered correctly 1`] = ` <LegalNoticeModal handleCloseClick={[MockFunction]} open={true} -/> +> + <WithStyles(ForwardRef(Dialog)) + aria-labelledby="accessibility-title" + classes={ + Object { + "paper": "modal-paper", + "root": "modal-root", + } + } + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Dialog) + aria-labelledby="accessibility-title" + classes={ + Object { + "container": "MuiDialog-container", + "paper": "MuiDialog-paper modal-paper", + "paperFullScreen": "MuiDialog-paperFullScreen", + "paperFullWidth": "MuiDialog-paperFullWidth", + "paperScrollBody": "MuiDialog-paperScrollBody", + "paperScrollPaper": "MuiDialog-paperScrollPaper", + "paperWidthFalse": "MuiDialog-paperWidthFalse", + "paperWidthLg": "MuiDialog-paperWidthLg", + "paperWidthMd": "MuiDialog-paperWidthMd", + "paperWidthSm": "MuiDialog-paperWidthSm", + "paperWidthXl": "MuiDialog-paperWidthXl", + "paperWidthXs": "MuiDialog-paperWidthXs", + "root": "MuiDialog-root modal-root", + "scrollBody": "MuiDialog-scrollBody", + "scrollPaper": "MuiDialog-scrollPaper", + } + } + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Modal) + BackdropComponent={ + Object { + "$$typeof": Symbol(react.forward_ref), + "Naked": Object { + "$$typeof": Symbol(react.forward_ref), + "propTypes": Object { + "children": [Function], + "className": [Function], + "classes": [Function], + "invisible": [Function], + "open": [Function], + "transitionDuration": [Function], + }, + "render": [Function], + }, + "displayName": "WithStyles(ForwardRef(Backdrop))", + "options": Object { + "defaultTheme": Object { + "breakpoints": Object { + "between": [Function], + "down": [Function], + "keys": Array [ + "xs", + "sm", + "md", + "lg", + "xl", + ], + "only": [Function], + "up": [Function], + "values": Object { + "lg": 1280, + "md": 960, + "sm": 600, + "xl": 1920, + "xs": 0, + }, + "width": [Function], + }, + "direction": "ltr", + "mixins": Object { + "gutters": [Function], + "toolbar": Object { + "@media (min-width:0px) and (orientation: landscape)": Object { + "minHeight": 48, + }, + "@media (min-width:600px)": Object { + "minHeight": 64, + }, + "minHeight": 56, + }, + }, + "overrides": Object {}, + "palette": Object { + "action": Object { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)", + "disabledBackground": "rgba(0, 0, 0, 0.12)", + "hover": "rgba(0, 0, 0, 0.08)", + "hoverOpacity": 0.08, + "selected": "rgba(0, 0, 0, 0.14)", + }, + "augmentColor": [Function], + "background": Object { + "default": "#fafafa", + "paper": "#fff", + }, + "common": Object { + "black": "#000", + "white": "#fff", + }, + "contrastThreshold": 3, + "divider": "rgba(0, 0, 0, 0.12)", + "error": Object { + "contrastText": "#fff", + "dark": "#d32f2f", + "light": "#e57373", + "main": "#f44336", + }, + "getContrastText": [Function], + "grey": Object { + "100": "#f5f5f5", + "200": "#eeeeee", + "300": "#e0e0e0", + "400": "#bdbdbd", + "50": "#fafafa", + "500": "#9e9e9e", + "600": "#757575", + "700": "#616161", + "800": "#424242", + "900": "#212121", + "A100": "#d5d5d5", + "A200": "#aaaaaa", + "A400": "#303030", + "A700": "#616161", + }, + "info": Object { + "contrastText": "#fff", + "dark": "#1976d2", + "light": "#64b5f6", + "main": "#2196f3", + }, + "primary": Object { + "contrastText": "#fff", + "dark": "#303f9f", + "light": "#7986cb", + "main": "#3f51b5", + }, + "secondary": Object { + "contrastText": "#fff", + "dark": "#c51162", + "light": "#ff4081", + "main": "#f50057", + }, + "success": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#388e3c", + "light": "#81c784", + "main": "#4caf50", + }, + "text": Object { + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + }, + "tonalOffset": 0.2, + "type": "light", + "warning": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#f57c00", + "light": "#ffb74d", + "main": "#ff9800", + }, + }, + "props": Object {}, + "shadows": Array [ + "none", + "0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)", + "0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)", + "0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)", + "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", + "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", + "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", + "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", + "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", + "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", + "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", + "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", + "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", + "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", + "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", + "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", + "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", + "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", + "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)", + ], + "shape": Object { + "borderRadius": 4, + }, + "spacing": [Function], + "transitions": Object { + "create": [Function], + "duration": Object { + "complex": 375, + "enteringScreen": 225, + "leavingScreen": 195, + "short": 250, + "shorter": 200, + "shortest": 150, + "standard": 300, + }, + "easing": Object { + "easeIn": "cubic-bezier(0.4, 0, 1, 1)", + "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut": "cubic-bezier(0.0, 0, 0.2, 1)", + "sharp": "cubic-bezier(0.4, 0, 0.6, 1)", + }, + "getAutoHeightDuration": [Function], + }, + "typography": Object { + "body1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.5, + }, + "body2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 400, + "letterSpacing": "0.01071em", + "lineHeight": 1.43, + }, + "button": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.02857em", + "lineHeight": 1.75, + "textTransform": "uppercase", + }, + "caption": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.03333em", + "lineHeight": 1.66, + }, + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": 14, + "fontWeightBold": 700, + "fontWeightLight": 300, + "fontWeightMedium": 500, + "fontWeightRegular": 400, + "h1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "6rem", + "fontWeight": 300, + "letterSpacing": "-0.01562em", + "lineHeight": 1.167, + }, + "h2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3.75rem", + "fontWeight": 300, + "letterSpacing": "-0.00833em", + "lineHeight": 1.2, + }, + "h3": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.167, + }, + "h4": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "2.125rem", + "fontWeight": 400, + "letterSpacing": "0.00735em", + "lineHeight": 1.235, + }, + "h5": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.5rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.334, + }, + "h6": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.25rem", + "fontWeight": 500, + "letterSpacing": "0.0075em", + "lineHeight": 1.6, + }, + "htmlFontSize": 16, + "overline": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.08333em", + "lineHeight": 2.66, + "textTransform": "uppercase", + }, + "pxToRem": [Function], + "round": [Function], + "subtitle1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.75, + }, + "subtitle2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.00714em", + "lineHeight": 1.57, + }, + }, + "zIndex": Object { + "appBar": 1100, + "drawer": 1200, + "mobileStepper": 1000, + "modal": 1300, + "snackbar": 1400, + "speedDial": 1050, + "tooltip": 1500, + }, + }, + "name": "MuiBackdrop", + }, + "propTypes": Object { + "classes": [Function], + "innerRef": [Function], + }, + "render": [Function], + "useStyles": [Function], + } + } + BackdropProps={ + Object { + "transitionDuration": Object { + "enter": 225, + "exit": 195, + }, + } + } + className="MuiDialog-root modal-root" + closeAfterTransition={true} + disableBackdropClick={false} + disableEscapeKeyDown={false} + onClose={[MockFunction]} + open={true} + > + <ForwardRef(Portal) + disablePortal={false} + > + <Portal + containerInfo={ + <body + style="padding-right: 0px; overflow: hidden;" + > + <div + class="MuiDialog-root modal-root" + role="presentation" + style="position: fixed; z-index: 1300; right: 0px; bottom: 0px; top: 0px; left: 0px;" + > + <div + aria-hidden="true" + class="MuiBackdrop-root" + style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;" + /> + <div + data-test="sentinelStart" + tabindex="0" + /> + <div + class="MuiDialog-container MuiDialog-scrollPaper" + role="none presentation" + style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;" + tabindex="-1" + > + <div + aria-labelledby="accessibility-title" + class="MuiPaper-root MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" + role="dialog" + > + <div + id="accessibility-title" + > + legal.title_legal + </div> + <button + aria-label="feedback.accessibility.button_close" + class="MuiButtonBase-root MuiIconButton-root modal-paper-close-button" + tabindex="0" + type="button" + > + <span + class="MuiIconButton-label" + > + <svg + class="styles__icon___23x3R" + height="16" + width="16" + > + <use + xlink:href="#test-file-stub" + /> + </svg> + </span> + <span + class="MuiTouchRipple-root" + /> + </button> + <div + class="legal-notice-root" + > + <div + class="legal-notice-content" + > + <h2> + legal.title_legal + </h2> + <p + class="version" + > + legal.version + </p> + <p> + legal.site + </p> + <p> + legal.adress + </p> + <p> + legal.phone + </p> + <p + class="ln-contact" + > + legal.mail + </p> + <div + class="text-16-normal" + > + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p1b + </span> + legal.p1 + </div> + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p2b + </span> + legal.p2 + </div> + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p3b + </span> + legal.p3 + </div> + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p4b + </span> + legal.p4 + </div> + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p5b + </span> + legal.p5 + </div> + <div + class="legal-notice-oneline" + > + <span + class="text-14-normal" + > + legal.p6b + </span> + legal.p6 + </div> + <div + class="legal-notice-part" + > + <h3> + + legal.title1 + </h3> + <p> + legal.part1 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title2 + </h3> + <p> + legal.part2 + </p> + <ul> + <li> + legal.part2-1 + </li> + <li> + legal.part2-2 + <ul> + <li> + legal.part2-2-1 + </li> + <li> + legal.part2-2-2 + </li> + <li> + legal.part2-2-3 + </li> + <li> + legal.part2-2-4 + </li> + </ul> + </li> + <li> + legal.part2-3 + </li> + </ul> + <p> + legal.part2-4 + </p> + <ul> + <li> + legal.part2-4-1 + </li> + <li> + legal.part2-4-2 + </li> + <li> + legal.part2-4-3 + </li> + </ul> + <p> + legal.part2-5 + </p> + <p> + legal.part2-6 + </p> + <p> + legal.part2-7 + </p> + <p> + legal.part2-8 + </p> + <p> + legal.part2-9 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title3 + </h3> + <p> + legal.part3-1 + </p> + <p> + legal.part3-2 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title4 + </h3> + <p> + legal.part4-1 + </p> + <p> + legal.part4-2 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title5 + </h3> + <p> + legal.part5 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title6 + </h3> + <p> + legal.part6 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title7 + </h3> + <p> + legal.part7-1 + </p> + <p> + legal.part7-2 + </p> + <p> + legal.part7-3 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title8 + </h3> + <p> + legal.part8 + </p> + </div> + <div + class="legal-notice-part" + > + <h3> + legal.title9 + </h3> + <p> + legal.part9-1 + </p> + <p> + legal.part9-2 + </p> + </div> + </div> + </div> + </div> + <button + aria-label="gcu_modal.accessibility.button_accept" + class="MuiButtonBase-root MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + tabindex="0" + type="button" + > + <span + class="MuiButton-label text-16-bold" + > + legal.accessibility.button_close + </span> + <span + class="MuiTouchRipple-root" + /> + </button> + </div> + </div> + <div + data-test="sentinelEnd" + tabindex="0" + /> + </div> + </body> + } + > + <div + className="MuiDialog-root modal-root" + onKeyDown={[Function]} + role="presentation" + style={ + Object { + "bottom": 0, + "left": 0, + "position": "fixed", + "right": 0, + "top": 0, + "zIndex": 1300, + } + } + > + <WithStyles(ForwardRef(Backdrop)) + onClick={[Function]} + open={true} + transitionDuration={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <ForwardRef(Backdrop) + classes={ + Object { + "invisible": "MuiBackdrop-invisible", + "root": "MuiBackdrop-root", + } + } + onClick={[Function]} + open={true} + transitionDuration={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <ForwardRef(Fade) + in={true} + onClick={[Function]} + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <Transition + appear={true} + enter={true} + exit={true} + in={true} + mountOnEnter={false} + onClick={[Function]} + onEnter={[Function]} + onEntered={[Function]} + onEntering={[Function]} + onExit={[Function]} + onExited={[Function]} + onExiting={[Function]} + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + unmountOnExit={false} + > + <div + aria-hidden={true} + className="MuiBackdrop-root" + onClick={[Function]} + style={ + Object { + "opacity": 1, + "visibility": undefined, + } + } + /> + </Transition> + </ForwardRef(Fade)> + </ForwardRef(Backdrop)> + </WithStyles(ForwardRef(Backdrop))> + <TrapFocus + disableAutoFocus={false} + disableEnforceFocus={false} + disableRestoreFocus={false} + getDoc={[Function]} + isEnabled={[Function]} + open={true} + > + <div + data-test="sentinelStart" + tabIndex={0} + /> + <ForwardRef(Fade) + appear={true} + in={true} + onEnter={[Function]} + onExited={[Function]} + role="none presentation" + tabIndex="-1" + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + > + <Transition + appear={true} + enter={true} + exit={true} + in={true} + mountOnEnter={false} + onEnter={[Function]} + onEntered={[Function]} + onEntering={[Function]} + onExit={[Function]} + onExited={[Function]} + onExiting={[Function]} + role="none presentation" + tabIndex="-1" + timeout={ + Object { + "enter": 225, + "exit": 195, + } + } + unmountOnExit={false} + > + <div + className="MuiDialog-container MuiDialog-scrollPaper" + onClick={[Function]} + onMouseDown={[Function]} + role="none presentation" + style={ + Object { + "opacity": 1, + "visibility": undefined, + } + } + tabIndex="-1" + > + <WithStyles(ForwardRef(Paper)) + aria-labelledby="accessibility-title" + className="MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm" + elevation={24} + role="dialog" + > + <ForwardRef(Paper) + aria-labelledby="accessibility-title" + className="MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm" + classes={ + Object { + "elevation0": "MuiPaper-elevation0", + "elevation1": "MuiPaper-elevation1", + "elevation10": "MuiPaper-elevation10", + "elevation11": "MuiPaper-elevation11", + "elevation12": "MuiPaper-elevation12", + "elevation13": "MuiPaper-elevation13", + "elevation14": "MuiPaper-elevation14", + "elevation15": "MuiPaper-elevation15", + "elevation16": "MuiPaper-elevation16", + "elevation17": "MuiPaper-elevation17", + "elevation18": "MuiPaper-elevation18", + "elevation19": "MuiPaper-elevation19", + "elevation2": "MuiPaper-elevation2", + "elevation20": "MuiPaper-elevation20", + "elevation21": "MuiPaper-elevation21", + "elevation22": "MuiPaper-elevation22", + "elevation23": "MuiPaper-elevation23", + "elevation24": "MuiPaper-elevation24", + "elevation3": "MuiPaper-elevation3", + "elevation4": "MuiPaper-elevation4", + "elevation5": "MuiPaper-elevation5", + "elevation6": "MuiPaper-elevation6", + "elevation7": "MuiPaper-elevation7", + "elevation8": "MuiPaper-elevation8", + "elevation9": "MuiPaper-elevation9", + "outlined": "MuiPaper-outlined", + "root": "MuiPaper-root", + "rounded": "MuiPaper-rounded", + } + } + elevation={24} + role="dialog" + > + <div + aria-labelledby="accessibility-title" + className="MuiPaper-root MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" + role="dialog" + > + <div + id="accessibility-title" + > + legal.title_legal + </div> + <WithStyles(ForwardRef(IconButton)) + aria-label="feedback.accessibility.button_close" + className="modal-paper-close-button" + onClick={[MockFunction]} + > + <ForwardRef(IconButton) + aria-label="feedback.accessibility.button_close" + className="modal-paper-close-button" + classes={ + Object { + "colorInherit": "MuiIconButton-colorInherit", + "colorPrimary": "MuiIconButton-colorPrimary", + "colorSecondary": "MuiIconButton-colorSecondary", + "disabled": "Mui-disabled", + "edgeEnd": "MuiIconButton-edgeEnd", + "edgeStart": "MuiIconButton-edgeStart", + "label": "MuiIconButton-label", + "root": "MuiIconButton-root", + "sizeSmall": "MuiIconButton-sizeSmall", + } + } + onClick={[MockFunction]} + > + <WithStyles(ForwardRef(ButtonBase)) + aria-label="feedback.accessibility.button_close" + centerRipple={true} + className="MuiIconButton-root modal-paper-close-button" + disabled={false} + focusRipple={true} + onClick={[MockFunction]} + > + <ForwardRef(ButtonBase) + aria-label="feedback.accessibility.button_close" + centerRipple={true} + className="MuiIconButton-root modal-paper-close-button" + classes={ + Object { + "disabled": "Mui-disabled", + "focusVisible": "Mui-focusVisible", + "root": "MuiButtonBase-root", + } + } + disabled={false} + focusRipple={true} + onClick={[MockFunction]} + > + <button + aria-label="feedback.accessibility.button_close" + className="MuiButtonBase-root MuiIconButton-root modal-paper-close-button" + disabled={false} + onBlur={[Function]} + onClick={[MockFunction]} + onDragLeave={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyUp={[Function]} + onMouseDown={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + onTouchMove={[Function]} + onTouchStart={[Function]} + tabIndex={0} + type="button" + > + <span + className="MuiIconButton-label" + > + <Icon + icon="test-file-stub" + size={16} + spin={false} + > + <Component + className="styles__icon___23x3R" + height={16} + style={Object {}} + width={16} + > + <svg + className="styles__icon___23x3R" + height={16} + style={Object {}} + width={16} + > + <use + xlinkHref="#test-file-stub" + /> + </svg> + </Component> + </Icon> + </span> + <NoSsr> + <WithStyles(memo) + center={true} + > + <ForwardRef(TouchRipple) + center={true} + classes={ + Object { + "child": "MuiTouchRipple-child", + "childLeaving": "MuiTouchRipple-childLeaving", + "childPulsate": "MuiTouchRipple-childPulsate", + "ripple": "MuiTouchRipple-ripple", + "ripplePulsate": "MuiTouchRipple-ripplePulsate", + "rippleVisible": "MuiTouchRipple-rippleVisible", + "root": "MuiTouchRipple-root", + } + } + > + <span + className="MuiTouchRipple-root" + > + <TransitionGroup + childFactory={[Function]} + component={null} + exit={true} + /> + </span> + </ForwardRef(TouchRipple)> + </WithStyles(memo)> + </NoSsr> + </button> + </ForwardRef(ButtonBase)> + </WithStyles(ForwardRef(ButtonBase))> + </ForwardRef(IconButton)> + </WithStyles(ForwardRef(IconButton))> + <LegalNoticeContent> + <div + className="legal-notice-root" + > + <div + className="legal-notice-content" + > + <h2> + legal.title_legal + </h2> + <p + className="version" + > + legal.version + </p> + <p> + legal.site + </p> + <p> + legal.adress + </p> + <p> + legal.phone + </p> + <p + className="ln-contact" + > + legal.mail + </p> + <div + className="text-16-normal" + > + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p1b + </span> + legal.p1 + </div> + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p2b + </span> + legal.p2 + </div> + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p3b + </span> + legal.p3 + </div> + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p4b + </span> + legal.p4 + </div> + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p5b + </span> + legal.p5 + </div> + <div + className="legal-notice-oneline" + > + <span + className="text-14-normal" + > + legal.p6b + </span> + legal.p6 + </div> + <div + className="legal-notice-part" + > + <h3> + + legal.title1 + </h3> + <p> + legal.part1 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title2 + </h3> + <p> + legal.part2 + </p> + <ul> + <li> + legal.part2-1 + </li> + <li> + legal.part2-2 + <ul> + <li> + legal.part2-2-1 + </li> + <li> + legal.part2-2-2 + </li> + <li> + legal.part2-2-3 + </li> + <li> + legal.part2-2-4 + </li> + </ul> + </li> + <li> + legal.part2-3 + </li> + </ul> + <p> + legal.part2-4 + </p> + <ul> + <li> + legal.part2-4-1 + </li> + <li> + legal.part2-4-2 + </li> + <li> + legal.part2-4-3 + </li> + </ul> + <p> + legal.part2-5 + </p> + <p> + legal.part2-6 + </p> + <p> + legal.part2-7 + </p> + <p> + legal.part2-8 + </p> + <p> + legal.part2-9 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title3 + </h3> + <p> + legal.part3-1 + </p> + <p> + legal.part3-2 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title4 + </h3> + <p> + legal.part4-1 + </p> + <p> + legal.part4-2 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title5 + </h3> + <p> + legal.part5 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title6 + </h3> + <p> + legal.part6 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title7 + </h3> + <p> + legal.part7-1 + </p> + <p> + legal.part7-2 + </p> + <p> + legal.part7-3 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title8 + </h3> + <p> + legal.part8 + </p> + </div> + <div + className="legal-notice-part" + > + <h3> + legal.title9 + </h3> + <p> + legal.part9-1 + </p> + <p> + legal.part9-2 + </p> + </div> + </div> + </div> + </div> + </LegalNoticeContent> + <WithStyles(ForwardRef(Button)) + aria-label="gcu_modal.accessibility.button_accept" + className="gcu-modal-button" + classes={ + Object { + "label": "text-16-bold", + "root": "btn-profile-next rounded", + } + } + onClick={[MockFunction]} + > + <ForwardRef(Button) + aria-label="gcu_modal.accessibility.button_accept" + className="gcu-modal-button" + classes={ + Object { + "colorInherit": "MuiButton-colorInherit", + "contained": "MuiButton-contained", + "containedPrimary": "MuiButton-containedPrimary", + "containedSecondary": "MuiButton-containedSecondary", + "containedSizeLarge": "MuiButton-containedSizeLarge", + "containedSizeSmall": "MuiButton-containedSizeSmall", + "disableElevation": "MuiButton-disableElevation", + "disabled": "Mui-disabled", + "endIcon": "MuiButton-endIcon", + "focusVisible": "Mui-focusVisible", + "fullWidth": "MuiButton-fullWidth", + "iconSizeLarge": "MuiButton-iconSizeLarge", + "iconSizeMedium": "MuiButton-iconSizeMedium", + "iconSizeSmall": "MuiButton-iconSizeSmall", + "label": "MuiButton-label text-16-bold", + "outlined": "MuiButton-outlined", + "outlinedPrimary": "MuiButton-outlinedPrimary", + "outlinedSecondary": "MuiButton-outlinedSecondary", + "outlinedSizeLarge": "MuiButton-outlinedSizeLarge", + "outlinedSizeSmall": "MuiButton-outlinedSizeSmall", + "root": "MuiButton-root btn-profile-next rounded", + "sizeLarge": "MuiButton-sizeLarge", + "sizeSmall": "MuiButton-sizeSmall", + "startIcon": "MuiButton-startIcon", + "text": "MuiButton-text", + "textPrimary": "MuiButton-textPrimary", + "textSecondary": "MuiButton-textSecondary", + "textSizeLarge": "MuiButton-textSizeLarge", + "textSizeSmall": "MuiButton-textSizeSmall", + } + } + onClick={[MockFunction]} + > + <WithStyles(ForwardRef(ButtonBase)) + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + component="button" + disabled={false} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[MockFunction]} + type="button" + > + <ForwardRef(ButtonBase) + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + classes={ + Object { + "disabled": "Mui-disabled", + "focusVisible": "Mui-focusVisible", + "root": "MuiButtonBase-root", + } + } + component="button" + disabled={false} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[MockFunction]} + type="button" + > + <button + aria-label="gcu_modal.accessibility.button_accept" + className="MuiButtonBase-root MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button" + disabled={false} + onBlur={[Function]} + onClick={[MockFunction]} + onDragLeave={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyUp={[Function]} + onMouseDown={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + onTouchMove={[Function]} + onTouchStart={[Function]} + tabIndex={0} + type="button" + > + <span + className="MuiButton-label text-16-bold" + > + legal.accessibility.button_close + </span> + <NoSsr> + <WithStyles(memo) + center={false} + > + <ForwardRef(TouchRipple) + center={false} + classes={ + Object { + "child": "MuiTouchRipple-child", + "childLeaving": "MuiTouchRipple-childLeaving", + "childPulsate": "MuiTouchRipple-childPulsate", + "ripple": "MuiTouchRipple-ripple", + "ripplePulsate": "MuiTouchRipple-ripplePulsate", + "rippleVisible": "MuiTouchRipple-rippleVisible", + "root": "MuiTouchRipple-root", + } + } + > + <span + className="MuiTouchRipple-root" + > + <TransitionGroup + childFactory={[Function]} + component={null} + exit={true} + /> + </span> + </ForwardRef(TouchRipple)> + </WithStyles(memo)> + </NoSsr> + </button> + </ForwardRef(ButtonBase)> + </WithStyles(ForwardRef(ButtonBase))> + </ForwardRef(Button)> + </WithStyles(ForwardRef(Button))> + </div> + </ForwardRef(Paper)> + </WithStyles(ForwardRef(Paper))> + </div> + </Transition> + </ForwardRef(Fade)> + <div + data-test="sentinelEnd" + tabIndex={0} + /> + </TrapFocus> + </div> + </Portal> + </ForwardRef(Portal)> + </ForwardRef(Modal)> + </ForwardRef(Dialog)> + </WithStyles(ForwardRef(Dialog))> +</LegalNoticeModal> `; diff --git a/src/components/Terms/__snapshots__/MinorUpdateContent.spec.tsx.snap b/src/components/Terms/__snapshots__/MinorUpdateContent.spec.tsx.snap new file mode 100644 index 000000000..7374bea12 --- /dev/null +++ b/src/components/Terms/__snapshots__/MinorUpdateContent.spec.tsx.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Minor update content component should be rendered correctly 1`] = ` +<MinorUpdateContent + toggleLegalNoticeModal={[MockFunction]} +> + <div + className="dataShare-content-root" + > + <div + className="dataShare-content-wrapper" + > + <h1 + className="dataShare-content-title text-22-normal" + > + minorUpdate.title + </h1> + </div> + </div> +</MinorUpdateContent> +`; diff --git a/src/components/Terms/__snapshots__/TermsView.spec.tsx.snap b/src/components/Terms/__snapshots__/TermsView.spec.tsx.snap index d7e196d6c..4a2393ce3 100644 --- a/src/components/Terms/__snapshots__/TermsView.spec.tsx.snap +++ b/src/components/Terms/__snapshots__/TermsView.spec.tsx.snap @@ -13,6 +13,976 @@ exports[`TermsView component should be rendered correctly 1`] = ` } } > - <TermsView /> + <TermsView> + <div + className="terms-wrapper" + > + <div + className="terms-content" + > + <DataShareConsentContent> + <div + className="dataShare-content-root" + > + <div + className="dataShare-content-wrapper" + > + <h1 + className="dataShare-content-title text-22-normal" + > + dataShare.title1 + </h1> + <p + className="text-14-normal" + > + dataShare.part1 + </p> + <p + className="text-14-normal" + > + dataShare.part2 + </p> + <p + className="text-14-normal" + > + dataShare.part3 + </p> + <ul + className="text-14-normal" + > + <li + className="text-14-normal" + > + dataShare.item1 + </li> + <li + className="text-14-normal" + > + dataShare.item2 + </li> + <li + className="text-14-normal" + > + dataShare.item3 + </li> + </ul> + <p + className="text-14-normal" + > + dataShare.part4 + </p> + <p + className="text-14-normal" + > + dataShare.part5 + </p> + <p + className="text-14-normal" + > + dataShare.part6 + </p> + <p + className="text-14-normal" + > + dataShare.part7 + </p> + <p + className="text-14-normal" + > + dataShare.part8 + </p> + <span + className="text-14-normal" + > + dataShare.part9 + </span> + <span + className="text-14-normal" + > + dataShare.part10 + </span> + <span + className="text-14-normal" + > + dataShare.link1 + </span> + </div> + </div> + </DataShareConsentContent> + <label + className="checkbox" + > + <input + checked={false} + name="Data-consent-validation" + onChange={[Function]} + type="checkbox" + /> + dataShare.validDataConsent + </label> + <label + className="checkbox" + > + <input + checked={false} + name="GCU-validation" + onChange={[Function]} + type="checkbox" + /> + <span> + dataShare.validCGU + dataShare.validLegal + </span> + </label> + </div> + <div + className="terms-footer" + > + <WithStyles(ForwardRef(Button)) + aria-label="dataShare.accessibility.button_accept" + className="gcu-modal-button disabled" + classes={ + Object { + "label": "text-16-bold", + "root": "btn-profile-next rounded", + } + } + disabled={true} + onClick={[Function]} + > + <ForwardRef(Button) + aria-label="dataShare.accessibility.button_accept" + className="gcu-modal-button disabled" + classes={ + Object { + "colorInherit": "MuiButton-colorInherit", + "contained": "MuiButton-contained", + "containedPrimary": "MuiButton-containedPrimary", + "containedSecondary": "MuiButton-containedSecondary", + "containedSizeLarge": "MuiButton-containedSizeLarge", + "containedSizeSmall": "MuiButton-containedSizeSmall", + "disableElevation": "MuiButton-disableElevation", + "disabled": "Mui-disabled", + "endIcon": "MuiButton-endIcon", + "focusVisible": "Mui-focusVisible", + "fullWidth": "MuiButton-fullWidth", + "iconSizeLarge": "MuiButton-iconSizeLarge", + "iconSizeMedium": "MuiButton-iconSizeMedium", + "iconSizeSmall": "MuiButton-iconSizeSmall", + "label": "MuiButton-label text-16-bold", + "outlined": "MuiButton-outlined", + "outlinedPrimary": "MuiButton-outlinedPrimary", + "outlinedSecondary": "MuiButton-outlinedSecondary", + "outlinedSizeLarge": "MuiButton-outlinedSizeLarge", + "outlinedSizeSmall": "MuiButton-outlinedSizeSmall", + "root": "MuiButton-root btn-profile-next rounded", + "sizeLarge": "MuiButton-sizeLarge", + "sizeSmall": "MuiButton-sizeSmall", + "startIcon": "MuiButton-startIcon", + "text": "MuiButton-text", + "textPrimary": "MuiButton-textPrimary", + "textSecondary": "MuiButton-textSecondary", + "textSizeLarge": "MuiButton-textSizeLarge", + "textSizeSmall": "MuiButton-textSizeSmall", + } + } + disabled={true} + onClick={[Function]} + > + <WithStyles(ForwardRef(ButtonBase)) + aria-label="dataShare.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button disabled Mui-disabled" + component="button" + disabled={true} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[Function]} + type="button" + > + <ForwardRef(ButtonBase) + aria-label="dataShare.accessibility.button_accept" + className="MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button disabled Mui-disabled" + classes={ + Object { + "disabled": "Mui-disabled", + "focusVisible": "Mui-focusVisible", + "root": "MuiButtonBase-root", + } + } + component="button" + disabled={true} + focusRipple={true} + focusVisibleClassName="Mui-focusVisible" + onClick={[Function]} + type="button" + > + <button + aria-label="dataShare.accessibility.button_accept" + className="MuiButtonBase-root MuiButton-root btn-profile-next rounded MuiButton-text gcu-modal-button disabled Mui-disabled Mui-disabled" + disabled={true} + onBlur={[Function]} + onClick={[Function]} + onDragLeave={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyUp={[Function]} + onMouseDown={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + onTouchMove={[Function]} + onTouchStart={[Function]} + tabIndex={-1} + type="button" + > + <span + className="MuiButton-label text-16-bold" + > + dataShare.button_accept + </span> + </button> + </ForwardRef(ButtonBase)> + </WithStyles(ForwardRef(ButtonBase))> + </ForwardRef(Button)> + </WithStyles(ForwardRef(Button))> + </div> + <CGUModal + handleCloseClick={[Function]} + open={false} + > + <WithStyles(ForwardRef(Dialog)) + aria-labelledby="accessibility-title" + classes={ + Object { + "paper": "modal-paper", + "root": "modal-root", + } + } + onClose={[Function]} + open={false} + > + <ForwardRef(Dialog) + aria-labelledby="accessibility-title" + classes={ + Object { + "container": "MuiDialog-container", + "paper": "MuiDialog-paper modal-paper", + "paperFullScreen": "MuiDialog-paperFullScreen", + "paperFullWidth": "MuiDialog-paperFullWidth", + "paperScrollBody": "MuiDialog-paperScrollBody", + "paperScrollPaper": "MuiDialog-paperScrollPaper", + "paperWidthFalse": "MuiDialog-paperWidthFalse", + "paperWidthLg": "MuiDialog-paperWidthLg", + "paperWidthMd": "MuiDialog-paperWidthMd", + "paperWidthSm": "MuiDialog-paperWidthSm", + "paperWidthXl": "MuiDialog-paperWidthXl", + "paperWidthXs": "MuiDialog-paperWidthXs", + "root": "MuiDialog-root modal-root", + "scrollBody": "MuiDialog-scrollBody", + "scrollPaper": "MuiDialog-scrollPaper", + } + } + onClose={[Function]} + open={false} + > + <ForwardRef(Modal) + BackdropComponent={ + Object { + "$$typeof": Symbol(react.forward_ref), + "Naked": Object { + "$$typeof": Symbol(react.forward_ref), + "propTypes": Object { + "children": [Function], + "className": [Function], + "classes": [Function], + "invisible": [Function], + "open": [Function], + "transitionDuration": [Function], + }, + "render": [Function], + }, + "displayName": "WithStyles(ForwardRef(Backdrop))", + "options": Object { + "defaultTheme": Object { + "breakpoints": Object { + "between": [Function], + "down": [Function], + "keys": Array [ + "xs", + "sm", + "md", + "lg", + "xl", + ], + "only": [Function], + "up": [Function], + "values": Object { + "lg": 1280, + "md": 960, + "sm": 600, + "xl": 1920, + "xs": 0, + }, + "width": [Function], + }, + "direction": "ltr", + "mixins": Object { + "gutters": [Function], + "toolbar": Object { + "@media (min-width:0px) and (orientation: landscape)": Object { + "minHeight": 48, + }, + "@media (min-width:600px)": Object { + "minHeight": 64, + }, + "minHeight": 56, + }, + }, + "overrides": Object {}, + "palette": Object { + "action": Object { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)", + "disabledBackground": "rgba(0, 0, 0, 0.12)", + "hover": "rgba(0, 0, 0, 0.08)", + "hoverOpacity": 0.08, + "selected": "rgba(0, 0, 0, 0.14)", + }, + "augmentColor": [Function], + "background": Object { + "default": "#fafafa", + "paper": "#fff", + }, + "common": Object { + "black": "#000", + "white": "#fff", + }, + "contrastThreshold": 3, + "divider": "rgba(0, 0, 0, 0.12)", + "error": Object { + "contrastText": "#fff", + "dark": "#d32f2f", + "light": "#e57373", + "main": "#f44336", + }, + "getContrastText": [Function], + "grey": Object { + "100": "#f5f5f5", + "200": "#eeeeee", + "300": "#e0e0e0", + "400": "#bdbdbd", + "50": "#fafafa", + "500": "#9e9e9e", + "600": "#757575", + "700": "#616161", + "800": "#424242", + "900": "#212121", + "A100": "#d5d5d5", + "A200": "#aaaaaa", + "A400": "#303030", + "A700": "#616161", + }, + "info": Object { + "contrastText": "#fff", + "dark": "#1976d2", + "light": "#64b5f6", + "main": "#2196f3", + }, + "primary": Object { + "contrastText": "#fff", + "dark": "#303f9f", + "light": "#7986cb", + "main": "#3f51b5", + }, + "secondary": Object { + "contrastText": "#fff", + "dark": "#c51162", + "light": "#ff4081", + "main": "#f50057", + }, + "success": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#388e3c", + "light": "#81c784", + "main": "#4caf50", + }, + "text": Object { + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + }, + "tonalOffset": 0.2, + "type": "light", + "warning": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#f57c00", + "light": "#ffb74d", + "main": "#ff9800", + }, + }, + "props": Object {}, + "shadows": Array [ + "none", + "0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)", + "0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)", + "0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)", + "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", + "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", + "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", + "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", + "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", + "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", + "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", + "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", + "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", + "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", + "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", + "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", + "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", + "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", + "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)", + ], + "shape": Object { + "borderRadius": 4, + }, + "spacing": [Function], + "transitions": Object { + "create": [Function], + "duration": Object { + "complex": 375, + "enteringScreen": 225, + "leavingScreen": 195, + "short": 250, + "shorter": 200, + "shortest": 150, + "standard": 300, + }, + "easing": Object { + "easeIn": "cubic-bezier(0.4, 0, 1, 1)", + "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut": "cubic-bezier(0.0, 0, 0.2, 1)", + "sharp": "cubic-bezier(0.4, 0, 0.6, 1)", + }, + "getAutoHeightDuration": [Function], + }, + "typography": Object { + "body1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.5, + }, + "body2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 400, + "letterSpacing": "0.01071em", + "lineHeight": 1.43, + }, + "button": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.02857em", + "lineHeight": 1.75, + "textTransform": "uppercase", + }, + "caption": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.03333em", + "lineHeight": 1.66, + }, + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": 14, + "fontWeightBold": 700, + "fontWeightLight": 300, + "fontWeightMedium": 500, + "fontWeightRegular": 400, + "h1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "6rem", + "fontWeight": 300, + "letterSpacing": "-0.01562em", + "lineHeight": 1.167, + }, + "h2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3.75rem", + "fontWeight": 300, + "letterSpacing": "-0.00833em", + "lineHeight": 1.2, + }, + "h3": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.167, + }, + "h4": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "2.125rem", + "fontWeight": 400, + "letterSpacing": "0.00735em", + "lineHeight": 1.235, + }, + "h5": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.5rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.334, + }, + "h6": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.25rem", + "fontWeight": 500, + "letterSpacing": "0.0075em", + "lineHeight": 1.6, + }, + "htmlFontSize": 16, + "overline": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.08333em", + "lineHeight": 2.66, + "textTransform": "uppercase", + }, + "pxToRem": [Function], + "round": [Function], + "subtitle1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.75, + }, + "subtitle2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.00714em", + "lineHeight": 1.57, + }, + }, + "zIndex": Object { + "appBar": 1100, + "drawer": 1200, + "mobileStepper": 1000, + "modal": 1300, + "snackbar": 1400, + "speedDial": 1050, + "tooltip": 1500, + }, + }, + "name": "MuiBackdrop", + }, + "propTypes": Object { + "classes": [Function], + "innerRef": [Function], + }, + "render": [Function], + "useStyles": [Function], + } + } + BackdropProps={ + Object { + "transitionDuration": Object { + "enter": 225, + "exit": 195, + }, + } + } + className="MuiDialog-root modal-root" + closeAfterTransition={true} + disableBackdropClick={false} + disableEscapeKeyDown={false} + onClose={[Function]} + open={false} + /> + </ForwardRef(Dialog)> + </WithStyles(ForwardRef(Dialog))> + </CGUModal> + <LegalNoticeModal + handleCloseClick={[Function]} + open={false} + > + <WithStyles(ForwardRef(Dialog)) + aria-labelledby="accessibility-title" + classes={ + Object { + "paper": "modal-paper", + "root": "modal-root", + } + } + onClose={[Function]} + open={false} + > + <ForwardRef(Dialog) + aria-labelledby="accessibility-title" + classes={ + Object { + "container": "MuiDialog-container", + "paper": "MuiDialog-paper modal-paper", + "paperFullScreen": "MuiDialog-paperFullScreen", + "paperFullWidth": "MuiDialog-paperFullWidth", + "paperScrollBody": "MuiDialog-paperScrollBody", + "paperScrollPaper": "MuiDialog-paperScrollPaper", + "paperWidthFalse": "MuiDialog-paperWidthFalse", + "paperWidthLg": "MuiDialog-paperWidthLg", + "paperWidthMd": "MuiDialog-paperWidthMd", + "paperWidthSm": "MuiDialog-paperWidthSm", + "paperWidthXl": "MuiDialog-paperWidthXl", + "paperWidthXs": "MuiDialog-paperWidthXs", + "root": "MuiDialog-root modal-root", + "scrollBody": "MuiDialog-scrollBody", + "scrollPaper": "MuiDialog-scrollPaper", + } + } + onClose={[Function]} + open={false} + > + <ForwardRef(Modal) + BackdropComponent={ + Object { + "$$typeof": Symbol(react.forward_ref), + "Naked": Object { + "$$typeof": Symbol(react.forward_ref), + "propTypes": Object { + "children": [Function], + "className": [Function], + "classes": [Function], + "invisible": [Function], + "open": [Function], + "transitionDuration": [Function], + }, + "render": [Function], + }, + "displayName": "WithStyles(ForwardRef(Backdrop))", + "options": Object { + "defaultTheme": Object { + "breakpoints": Object { + "between": [Function], + "down": [Function], + "keys": Array [ + "xs", + "sm", + "md", + "lg", + "xl", + ], + "only": [Function], + "up": [Function], + "values": Object { + "lg": 1280, + "md": 960, + "sm": 600, + "xl": 1920, + "xs": 0, + }, + "width": [Function], + }, + "direction": "ltr", + "mixins": Object { + "gutters": [Function], + "toolbar": Object { + "@media (min-width:0px) and (orientation: landscape)": Object { + "minHeight": 48, + }, + "@media (min-width:600px)": Object { + "minHeight": 64, + }, + "minHeight": 56, + }, + }, + "overrides": Object {}, + "palette": Object { + "action": Object { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)", + "disabledBackground": "rgba(0, 0, 0, 0.12)", + "hover": "rgba(0, 0, 0, 0.08)", + "hoverOpacity": 0.08, + "selected": "rgba(0, 0, 0, 0.14)", + }, + "augmentColor": [Function], + "background": Object { + "default": "#fafafa", + "paper": "#fff", + }, + "common": Object { + "black": "#000", + "white": "#fff", + }, + "contrastThreshold": 3, + "divider": "rgba(0, 0, 0, 0.12)", + "error": Object { + "contrastText": "#fff", + "dark": "#d32f2f", + "light": "#e57373", + "main": "#f44336", + }, + "getContrastText": [Function], + "grey": Object { + "100": "#f5f5f5", + "200": "#eeeeee", + "300": "#e0e0e0", + "400": "#bdbdbd", + "50": "#fafafa", + "500": "#9e9e9e", + "600": "#757575", + "700": "#616161", + "800": "#424242", + "900": "#212121", + "A100": "#d5d5d5", + "A200": "#aaaaaa", + "A400": "#303030", + "A700": "#616161", + }, + "info": Object { + "contrastText": "#fff", + "dark": "#1976d2", + "light": "#64b5f6", + "main": "#2196f3", + }, + "primary": Object { + "contrastText": "#fff", + "dark": "#303f9f", + "light": "#7986cb", + "main": "#3f51b5", + }, + "secondary": Object { + "contrastText": "#fff", + "dark": "#c51162", + "light": "#ff4081", + "main": "#f50057", + }, + "success": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#388e3c", + "light": "#81c784", + "main": "#4caf50", + }, + "text": Object { + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + }, + "tonalOffset": 0.2, + "type": "light", + "warning": Object { + "contrastText": "rgba(0, 0, 0, 0.87)", + "dark": "#f57c00", + "light": "#ffb74d", + "main": "#ff9800", + }, + }, + "props": Object {}, + "shadows": Array [ + "none", + "0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)", + "0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)", + "0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)", + "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", + "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", + "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", + "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", + "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", + "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", + "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", + "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", + "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", + "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", + "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", + "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", + "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", + "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", + "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)", + ], + "shape": Object { + "borderRadius": 4, + }, + "spacing": [Function], + "transitions": Object { + "create": [Function], + "duration": Object { + "complex": 375, + "enteringScreen": 225, + "leavingScreen": 195, + "short": 250, + "shorter": 200, + "shortest": 150, + "standard": 300, + }, + "easing": Object { + "easeIn": "cubic-bezier(0.4, 0, 1, 1)", + "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut": "cubic-bezier(0.0, 0, 0.2, 1)", + "sharp": "cubic-bezier(0.4, 0, 0.6, 1)", + }, + "getAutoHeightDuration": [Function], + }, + "typography": Object { + "body1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.5, + }, + "body2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 400, + "letterSpacing": "0.01071em", + "lineHeight": 1.43, + }, + "button": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.02857em", + "lineHeight": 1.75, + "textTransform": "uppercase", + }, + "caption": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.03333em", + "lineHeight": 1.66, + }, + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": 14, + "fontWeightBold": 700, + "fontWeightLight": 300, + "fontWeightMedium": 500, + "fontWeightRegular": 400, + "h1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "6rem", + "fontWeight": 300, + "letterSpacing": "-0.01562em", + "lineHeight": 1.167, + }, + "h2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3.75rem", + "fontWeight": 300, + "letterSpacing": "-0.00833em", + "lineHeight": 1.2, + }, + "h3": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "3rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.167, + }, + "h4": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "2.125rem", + "fontWeight": 400, + "letterSpacing": "0.00735em", + "lineHeight": 1.235, + }, + "h5": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.5rem", + "fontWeight": 400, + "letterSpacing": "0em", + "lineHeight": 1.334, + }, + "h6": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1.25rem", + "fontWeight": 500, + "letterSpacing": "0.0075em", + "lineHeight": 1.6, + }, + "htmlFontSize": 16, + "overline": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.75rem", + "fontWeight": 400, + "letterSpacing": "0.08333em", + "lineHeight": 2.66, + "textTransform": "uppercase", + }, + "pxToRem": [Function], + "round": [Function], + "subtitle1": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "1rem", + "fontWeight": 400, + "letterSpacing": "0.00938em", + "lineHeight": 1.75, + }, + "subtitle2": Object { + "fontFamily": "\\"Roboto\\", \\"Helvetica\\", \\"Arial\\", sans-serif", + "fontSize": "0.875rem", + "fontWeight": 500, + "letterSpacing": "0.00714em", + "lineHeight": 1.57, + }, + }, + "zIndex": Object { + "appBar": 1100, + "drawer": 1200, + "mobileStepper": 1000, + "modal": 1300, + "snackbar": 1400, + "speedDial": 1050, + "tooltip": 1500, + }, + }, + "name": "MuiBackdrop", + }, + "propTypes": Object { + "classes": [Function], + "innerRef": [Function], + }, + "render": [Function], + "useStyles": [Function], + } + } + BackdropProps={ + Object { + "transitionDuration": Object { + "enter": 225, + "exit": 195, + }, + } + } + className="MuiDialog-root modal-root" + closeAfterTransition={true} + disableBackdropClick={false} + disableEscapeKeyDown={false} + onClose={[Function]} + open={false} + /> + </ForwardRef(Dialog)> + </WithStyles(ForwardRef(Dialog))> + </LegalNoticeModal> + </div> + </TermsView> </Provider> `; diff --git a/src/locales/fr.json b/src/locales/fr.json index 9ea18dd99..de44887c7 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -468,6 +468,10 @@ "button_accept": "Accepter les conditions générales d'utilisation" } }, + "minorUpdate": { + "title": "Ecolyo évolue !", + "button": "J'ai compris" + }, "gcu": { "title": "Conditions générales d’utilisation du service", "subtitle": "Envie de prendre le temps de relire ces CGU ces Conditions Générales d’Utilisation plus tard ? Vous pourrez les retrouver dans la page Options du service.", diff --git a/src/models/global.model.ts b/src/models/global.model.ts index fe4eb2a49..fe53a81b9 100644 --- a/src/models/global.model.ts +++ b/src/models/global.model.ts @@ -1,5 +1,6 @@ import { FluidType } from 'enum/fluid.enum' import { ScreenType } from 'enum/screen.enum' +import { TermsStatus } from 'models' import { FluidStatus } from './fluid.model' import { ReleaseNotes } from './releaseNotes.model' @@ -10,7 +11,7 @@ export interface GlobalState { challengeActionNotification: boolean challengeDuelNotification: boolean analysisNotification: boolean - isLastTermAccepted: boolean + termsStatus: TermsStatus fluidStatus: FluidStatus[] fluidTypes: FluidType[] openPartnersIssueModal: boolean diff --git a/src/models/term.model.ts b/src/models/term.model.ts index c075cfa10..c67abed9d 100644 --- a/src/models/term.model.ts +++ b/src/models/term.model.ts @@ -7,3 +7,9 @@ export interface Term { url?: string version: string } + +export type VersionType = 'minor' | 'major' | 'init' +export interface TermsStatus { + versionType: VersionType + accepted: boolean +} diff --git a/src/services/initialization.service.spec.ts b/src/services/initialization.service.spec.ts index 5ef38662a..a79575e9f 100644 --- a/src/services/initialization.service.spec.ts +++ b/src/services/initialization.service.spec.ts @@ -22,6 +22,10 @@ import { allChallengeEntityData } from '../../tests/__mocks__/challengeEntity.mo import { allDuelEntity } from '../../tests/__mocks__/duelData.mock' import { allQuizEntities } from '../../tests/__mocks__/quizData.mock' import { allExplorationEntities } from '../../tests/__mocks__/explorationData.mock' +import { + mockOutdatedTerm, + mockUpToDateTerm, +} from '../../tests/__mocks__/termsData.mock' const mockCreateIndexKonnector = jest.fn() jest.mock('./konnector.service', () => { @@ -133,11 +137,15 @@ jest.mock('./fluid.service', () => { const mockIsConsentVersionUpToDate = jest.fn() const mockIsLastTermValidated = jest.fn() +const mockGetTermsVersionType = jest.fn() +const mockGetLastTerm = jest.fn() jest.mock('./terms.service', () => { return jest.fn(() => { return { isConsentVersionUpToDate: mockIsConsentVersionUpToDate, isLastTermValidated: mockIsLastTermValidated, + getTermsVersionType: mockGetTermsVersionType, + getLastTerm: mockGetLastTerm, } }) }) @@ -894,12 +902,20 @@ describe('Initialization service', () => { it('should not show consent page', async () => { mockIsConsentVersionUpToDate.mockResolvedValueOnce(true) mockIsLastTermValidated.mockResolvedValueOnce(true) - await expect(initializationService.initConsent()).resolves.toEqual(true) + mockGetLastTerm.mockResolvedValueOnce(mockUpToDateTerm) + await expect(initializationService.initConsent()).resolves.toEqual({ + accepted: true, + versionType: 'init', + }) }) it('should show consent page', async () => { mockIsConsentVersionUpToDate.mockResolvedValueOnce(false) mockIsLastTermValidated.mockResolvedValueOnce(false) - await expect(initializationService.initConsent()).resolves.toEqual(false) + mockGetLastTerm.mockResolvedValueOnce(mockOutdatedTerm) + await expect(initializationService.initConsent()).resolves.toEqual({ + accepted: false, + versionType: 'major', + }) }) it('should throw an error when it fails to checks for consent', async () => { mockIsConsentVersionUpToDate.mockRejectedValueOnce(new Error()) diff --git a/src/services/initialization.service.ts b/src/services/initialization.service.ts index 983826119..e01aae8ad 100644 --- a/src/services/initialization.service.ts +++ b/src/services/initialization.service.ts @@ -24,6 +24,7 @@ import { FluidStatus, Profile, ProfileType, + TermsStatus, UserChallenge, } from 'models' @@ -647,28 +648,48 @@ export default class InitializationService { throw error } } - public async initConsent(): Promise<boolean> { - let isLastTermAccepted = false + public async initConsent(): Promise<TermsStatus> { + const termsStatus: TermsStatus = { + accepted: false, + versionType: 'init', + } try { const termService = new TermsService(this._client) const isUpToDate = await termService.isConsentVersionUpToDate() - - if (isUpToDate) { - const isLastConsentValidated = await termService.isLastTermValidated() - if (isLastConsentValidated) { - isLastTermAccepted = true - log.info( - '[Initialization] Last Consent successfully loaded and valid' - ) + const lastTerm = await termService.getLastTerm() + if (lastTerm) { + if (isUpToDate) { + const isLastConsentValidated = await termService.isLastTermValidated() + if (isLastConsentValidated) { + termsStatus.accepted = true + termsStatus.versionType = 'init' + log.info( + '[Initialization] Last Consent successfully loaded and valid' + ) + } else { + termsStatus.versionType = 'init' + termsStatus.accepted = false + log.info('[Initialization] Consent not up-to-date') + } } else { - isLastTermAccepted = false - log.info('[Initialization] New Consent to Validate') + const versionType = await termService.getTermsVersionType() + if (versionType === 'minor') { + termsStatus.accepted = false + termsStatus.versionType = 'minor' + log.info('[Initialization] Minor Terms update detected') + } else { + termsStatus.accepted = false + termsStatus.versionType = 'major' + log.info('[Initialization] Major Terms update detected') + } } } else { - isLastTermAccepted = false - log.info('[Initialization] New Consent to Validate') + termsStatus.accepted = false + termsStatus.versionType = 'init' + log.info('[Initialization] Init first terms') } - return isLastTermAccepted + + return termsStatus } catch (error) { log.error('Initialization error - initConsent: ', error) throw error diff --git a/src/services/terms.service.spec.ts b/src/services/terms.service.spec.ts index 316e21062..6eeeba252 100644 --- a/src/services/terms.service.spec.ts +++ b/src/services/terms.service.spec.ts @@ -71,6 +71,30 @@ describe('TermsService service', () => { const result = await termsService.isLastTermValidated() expect(result).toEqual(false) }) + it('should return a major update', async () => { + mockUpToDateTerm.accepted = false + const mockQueryResult: QueryResult<Term[]> = { + data: [mockUpToDateTerm], + bookmark: '', + next: false, + skip: 0, + } + mockClient.query.mockResolvedValueOnce(mockQueryResult) + const result = await termsService.getTermsVersionType() + expect(result).toEqual('major') + }) + it('should return a minor update', async () => { + mockUpToDateTerm.accepted = false + const mockQueryResult: QueryResult<Term[]> = { + data: [mockTermsData[1]], + bookmark: '', + next: false, + skip: 0, + } + mockClient.query.mockResolvedValueOnce(mockQueryResult) + const result = await termsService.getTermsVersionType() + expect(result).toEqual('minor') + }) it('should create a new term', async () => { const mockDate = DateTime.fromISO(mockUpToDateTerm.acceptedAt.toString(), { zone: 'utc', diff --git a/src/services/terms.service.ts b/src/services/terms.service.ts index 6d60b19ec..2fea47dfd 100644 --- a/src/services/terms.service.ts +++ b/src/services/terms.service.ts @@ -2,7 +2,7 @@ import { Client, Q, QueryDefinition, QueryResult } from 'cozy-client' import { TERMS_DOCTYPE } from 'doctypes' import { DateTime } from 'luxon' -import { Term } from 'models' +import { Term, VersionType } from 'models' import config from '../constants/config.json' export default class TermsService { private _client: Client @@ -50,6 +50,21 @@ export default class TermsService { else return false } + public async getTermsVersionType(): Promise<VersionType> { + const lastTerm = await this.getLastTerm() + if (lastTerm) { + const splittedLastVersion: string[] = lastTerm.version.split('.') + const splittedConfVersion: string[] = config.termsVersion.split('.') + if ( + splittedLastVersion[0] === splittedConfVersion[0] && + (splittedLastVersion[1] !== splittedConfVersion[1] || + splittedLastVersion[2] !== splittedConfVersion[2]) + ) { + return 'minor' + } else return 'major' + } else return 'init' + } + /** * Creates a new term * @param newTerm diff --git a/src/store/global/global.actions.ts b/src/store/global/global.actions.ts index 803df92c2..ae47957ff 100644 --- a/src/store/global/global.actions.ts +++ b/src/store/global/global.actions.ts @@ -1,6 +1,6 @@ import { FluidType } from 'enum/fluid.enum' import { ScreenType } from 'enum/screen.enum' -import { FluidConnection, FluidStatus } from 'models' +import { FluidConnection, FluidStatus, TermsStatus } from 'models' import { Notes } from 'models/releaseNotes.model' export const CHANGE_SCREEN_TYPE = 'CHANGE_SCREEN_TYPE' @@ -54,7 +54,7 @@ interface UpdatedFluidConnection { interface UpdateTermValidation { type: typeof UPDATE_TERMS_VALIDATION - payload?: boolean + payload?: TermsStatus } interface ShowReleaseNotes { @@ -147,11 +147,11 @@ export function updatedFluidConnection( } export function updateTermValidation( - isLastTermAccepted: boolean + termsStatus: TermsStatus ): GlobalActionTypes { return { type: UPDATE_TERMS_VALIDATION, - payload: isLastTermAccepted, + payload: termsStatus, } } diff --git a/src/store/global/global.reducer.ts b/src/store/global/global.reducer.ts index 86c285188..13dad1217 100644 --- a/src/store/global/global.reducer.ts +++ b/src/store/global/global.reducer.ts @@ -31,7 +31,10 @@ const initialState: GlobalState = { challengeActionNotification: false, challengeDuelNotification: false, analysisNotification: false, - isLastTermAccepted: false, + termsStatus: { + accepted: false, + versionType: 'init', + }, fluidStatus: [ { fluidType: FluidType.ELECTRICITY, @@ -164,7 +167,7 @@ export const globalReducer: Reducer<GlobalState> = ( return action.payload != undefined ? { ...state, - isLastTermAccepted: action.payload, + termsStatus: action.payload, } : state case SHOW_RELEASE_NOTES: diff --git a/tests/__mocks__/globalStateData.mock.ts b/tests/__mocks__/globalStateData.mock.ts index 5119b2eca..7315927e7 100644 --- a/tests/__mocks__/globalStateData.mock.ts +++ b/tests/__mocks__/globalStateData.mock.ts @@ -12,7 +12,11 @@ export const globalStateData: GlobalState = { challengeActionNotification: false, challengeDuelNotification: false, analysisNotification: false, - isLastTermAccepted: false, + termsStatus: { + accepted: false, + versionType: 'major', + }, + openPartnersIssueModal: false, fluidStatus: [ { fluidType: FluidType.ELECTRICITY, diff --git a/tests/__mocks__/store.ts b/tests/__mocks__/store.ts index 85cd98bbe..12e187a9a 100644 --- a/tests/__mocks__/store.ts +++ b/tests/__mocks__/store.ts @@ -32,7 +32,10 @@ export const mockInitialGlobalState: GlobalState = { challengeActionNotification: false, challengeDuelNotification: false, analysisNotification: false, - isLastTermAccepted: false, + termsStatus: { + accepted: false, + versionType: 'init', + }, openPartnersIssueModal: false, releaseNotes: { show: false, notes: [{ description: '', title: '' }] }, fluidStatus: [ -- GitLab