diff --git a/.eslintrc.json b/.eslintrc.json
index 42ab36aad..716301887 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -5,7 +5,9 @@
"sourceType": "module"
},
"plugins": [
- "react", "react-hooks", "prettier",
+ "react",
+ "react-hooks",
+ "prettier",
"@typescript-eslint/eslint-plugin",
"@typescript-eslint",
"typescript-sort-keys",
@@ -71,10 +73,13 @@
"react/static-property-placement": ["warn", "static getter"],
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "error",
- "jsx-a11y/aria-role": [ 2, {
- "allowedInvalidRoles": ["Candidat"],
- "ignoreNonDOM": true
- }],
+ "jsx-a11y/aria-role": [
+ 2,
+ {
+ "allowedInvalidRoles": ["Candidat"],
+ "ignoreNonDOM": true
+ }
+ ],
"react/jsx-filename-extension": [
"warn",
{
@@ -90,10 +95,7 @@
],
// TypeScript Rules
- "@typescript-eslint/no-unused-vars": [
- 1,
- { "ignoreRestSiblings": true }
- ],
+ "@typescript-eslint/no-unused-vars": [1, { "ignoreRestSiblings": true }],
"@typescript-eslint/member-delimiter-style": [
1,
{
diff --git a/cypress.config.js b/cypress.config.js
index 39d413842..78a1fc400 100644
--- a/cypress.config.js
+++ b/cypress.config.js
@@ -6,7 +6,7 @@ module.exports = defineConfig({
projectId: process.env.CYPRESS_IO_PROJECT_ID,
defaultCommandTimeout: 10000,
pageLoadTimeout: 120000,
- env :{
+ env: {
adresseLocauxParis: `${process.env.ADRESSE_LOCAUX_PARIS}`,
},
e2e: {
diff --git a/cypress/e2e/parcours-travailler.cy.js b/cypress/e2e/parcours-travailler.cy.js
index a45deb569..7b7121fe8 100644
--- a/cypress/e2e/parcours-travailler.cy.js
+++ b/cypress/e2e/parcours-travailler.cy.js
@@ -20,7 +20,9 @@ describe('Parcours travailler', () => {
});
it('Remplir le formulaire, envoyer et fermer', () => {
- cy.get('[data-testid="form-candidate-inscription-location"]').scrollIntoView().click();
+ cy.get('[data-testid="form-candidate-inscription-location"]')
+ .scrollIntoView()
+ .click();
cy.get('[data-testid="select-option-93"]').click();
cy.get('[data-testid="form-candidate-inscription-birthdate"]').type(
'1994-02-22'
diff --git a/cypress/fixtures/auth-current-coach-externe-res.json b/cypress/fixtures/auth-current-coach-externe-res.json
index b6be13170..52e5d7801 100644
--- a/cypress/fixtures/auth-current-coach-externe-res.json
+++ b/cypress/fixtures/auth-current-coach-externe-res.json
@@ -1,69 +1,69 @@
{
- "id": "3a8ea26c-197c-4528-ab55-aa081e53343f",
- "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
- "firstName": "Sonia",
- "lastName": "Lamani",
- "email": "ss.lamani@mmail.com",
- "phone": "+33698754321",
- "address": null,
- "role": "Coach externe",
- "adminRole": null,
- "zone": "PARIS",
- "gender": 1,
- "lastConnection": "2023-05-26T09:32:48.902Z",
- "candidat": null,
- "coaches": [
- {
- "employed": false,
- "hidden": false,
- "note": null,
- "url": "john-1cd4e535",
- "contract": null,
- "endOfContract": null,
- "lastModifiedBy": null,
- "candidat": {
- "id": "1cd4e535-9c18-4b67-8896-e0652b5b3fc9",
- "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
- "firstName": "John",
- "lastName": "Doeexterne",
- "email": "qsdfds@linkedout.fr",
- "phone": "+33698754321",
- "address": null,
- "role": "Candidat externe",
- "adminRole": null,
- "zone": "PARIS",
- "gender": 0,
- "lastConnection": null
- }
- },
- {
- "employed": false,
- "hidden": false,
- "note": "top top",
- "url": "arnold-be521222",
- "contract": null,
- "endOfContract": null,
- "lastModifiedBy": "3a8ea26c-197c-4528-ab55-aa081e53343f",
- "candidat": {
- "id": "be521222-7f46-42fb-805d-96676e65fe13",
- "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
- "firstName": "Arnold",
- "lastName": "Schwarziexterne",
- "email": "paqdfqdsful@entourage.social",
- "phone": "+33698754321",
- "address": null,
- "role": "Candidat externe",
- "adminRole": null,
- "zone": "PARIS",
- "gender": 0,
- "lastConnection": null
- }
- }
- ],
- "organization": {
- "name": "première en test",
- "address": "panam",
+ "id": "3a8ea26c-197c-4528-ab55-aa081e53343f",
+ "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
+ "firstName": "Sonia",
+ "lastName": "Lamani",
+ "email": "ss.lamani@mmail.com",
+ "phone": "+33698754321",
+ "address": null,
+ "role": "Coach externe",
+ "adminRole": null,
+ "zone": "PARIS",
+ "gender": 1,
+ "lastConnection": "2023-05-26T09:32:48.902Z",
+ "candidat": null,
+ "coaches": [
+ {
+ "employed": false,
+ "hidden": false,
+ "note": null,
+ "url": "john-1cd4e535",
+ "contract": null,
+ "endOfContract": null,
+ "lastModifiedBy": null,
+ "candidat": {
+ "id": "1cd4e535-9c18-4b67-8896-e0652b5b3fc9",
+ "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
+ "firstName": "John",
+ "lastName": "Doeexterne",
+ "email": "qsdfds@linkedout.fr",
+ "phone": "+33698754321",
+ "address": null,
+ "role": "Candidat externe",
+ "adminRole": null,
+ "zone": "PARIS",
+ "gender": 0,
+ "lastConnection": null
+ }
+ },
+ {
+ "employed": false,
+ "hidden": false,
+ "note": "top top",
+ "url": "arnold-be521222",
+ "contract": null,
+ "endOfContract": null,
+ "lastModifiedBy": "3a8ea26c-197c-4528-ab55-aa081e53343f",
+ "candidat": {
+ "id": "be521222-7f46-42fb-805d-96676e65fe13",
+ "OrganizationId": "99aca0a7-3154-4fbe-b149-700a9de44871",
+ "firstName": "Arnold",
+ "lastName": "Schwarziexterne",
+ "email": "paqdfqdsful@entourage.social",
+ "phone": "+33698754321",
+ "address": null,
+ "role": "Candidat externe",
+ "adminRole": null,
"zone": "PARIS",
- "id": "99aca0a7-3154-4fbe-b149-700a9de44871"
+ "gender": 0,
+ "lastConnection": null
+ }
}
-}
\ No newline at end of file
+ ],
+ "organization": {
+ "name": "première en test",
+ "address": "panam",
+ "zone": "PARIS",
+ "id": "99aca0a7-3154-4fbe-b149-700a9de44871"
+ }
+}
diff --git a/cypress/fixtures/post-external-message-res.json b/cypress/fixtures/post-external-message-res.json
index 599260ef0..aa1e7f58e 100644
--- a/cypress/fixtures/post-external-message-res.json
+++ b/cypress/fixtures/post-external-message-res.json
@@ -1,10 +1,10 @@
{
- "UserId": "3da510cc-abae-4c4d-a801-30ca0d403951",
- "firstName": "Addison",
- "lastName": "Dare",
- "email": "Nigel_Metz@gmail.com",
- "phone": "+33619509379",
- "subject": "help",
- "message": "Quos placeat placeat aliquid a aut quod eos quia impedit",
- "type": "connector"
+ "UserId": "3da510cc-abae-4c4d-a801-30ca0d403951",
+ "firstName": "Addison",
+ "lastName": "Dare",
+ "email": "Nigel_Metz@gmail.com",
+ "phone": "+33619509379",
+ "subject": "help",
+ "message": "Quos placeat placeat aliquid a aut quod eos quia impedit",
+ "type": "connector"
}
diff --git a/src/components/backoffice/admin/AdminOpportunityList.js b/src/components/backoffice/admin/AdminOpportunityList.js
index 1bdf5fbcc..30a9579bd 100644
--- a/src/components/backoffice/admin/AdminOpportunityList.js
+++ b/src/components/backoffice/admin/AdminOpportunityList.js
@@ -14,10 +14,10 @@ import {
import { HeaderBackoffice } from 'src/components/headers/HeaderBackoffice';
import { openModal } from 'src/components/modals/Modal';
import { ModalEdit } from 'src/components/modals/Modal/ModalGeneric/ModalEdit';
+import { PostOpportunityModal } from 'src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostOpportunityModal';
import { OpportunityList } from 'src/components/opportunities/OpportunityList';
import { ButtonMultiple } from 'src/components/utils';
import { Icon } from 'src/components/utils/Icon';
-import { usePostOpportunity } from 'src/hooks';
import { useIsDesktop } from 'src/hooks/utils';
import { mutateFormSchema } from 'src/utils';
@@ -81,7 +81,7 @@ export const AdminOpportunityList = ({
const opportunityListRef = useRef();
- const { PostOpportunityModal } = usePostOpportunity({
+ const opportunityModalProps = {
defaultValues: {
isPublic: true,
},
@@ -89,7 +89,7 @@ export const AdminOpportunityList = ({
callback: opportunityListRef?.current?.fetchData,
modalTitle: 'Ajouter une nouvelle offre',
schema: mutatedOfferSchema,
- });
+ };
return (
<>
@@ -105,7 +105,7 @@ export const AdminOpportunityList = ({
buttons={[
{
onClick: () => {
- openModal( );
+ openModal( );
},
label: 'Nouvelle offre',
},
diff --git a/src/components/cv/CVFiche.js b/src/components/cv/CVFiche.js
index 48e372865..b9d170a80 100644
--- a/src/components/cv/CVFiche.js
+++ b/src/components/cv/CVFiche.js
@@ -1,6 +1,6 @@
import { useRouter } from 'next/router';
import PropTypes from 'prop-types';
-import React from 'react';
+import React, { useMemo } from 'react';
import {
FacebookShareButton,
LinkedinShareButton,
@@ -13,13 +13,14 @@ import { CVCareerPathSentence } from 'src/components/cv/CVCareerPathSentence';
import { formSendExternalMessage } from 'src/components/forms/schema/formSendExternalMessage';
import { openModal } from 'src/components/modals/Modal';
import { ModalEdit } from 'src/components/modals/Modal/ModalGeneric/ModalEdit';
+import { PostOpportunityModal } from 'src/components/modals/Modal/ModalGeneric/PostOpportunityModal';
import { ModalShareCV } from 'src/components/modals/Modal/ModalGeneric/StepperModal/ModalShareCV';
import { Grid, Img, SimpleLink, Icon } from 'src/components/utils';
import { Button } from 'src/components/utils/Button';
import { CONTRACTS } from 'src/constants';
import { DEPARTMENTS_FILTERS } from 'src/constants/departements';
import { FB_TAGS, GA_TAGS } from 'src/constants/tags';
-import { usePostOpportunity, useUpdateSharesCount } from 'src/hooks';
+import { useUpdateSharesCount } from 'src/hooks';
import { fbEvent } from 'src/lib/fb';
import { gaEvent } from 'src/lib/gtag';
import {
@@ -36,34 +37,36 @@ import { CVShape } from './CV.shape';
export const CVFiche = ({ cv, actionDisabled }) => {
const updateSharesCount = useUpdateSharesCount();
- const { PostOpportunityModal } = usePostOpportunity({
- modalTitle: 'Proposer une opportunité à un candidat',
- modalDesc: (
-
- Contactez ici le candidat et son coach LinkedOut afin de solliciter un
- échange.
-
-
- Si vous souhaitez échanger avec le coach bénévole qui accompagne le
- candidat dans sa recherche d'emploi, précisez-le dans votre
- message.
-
-
-
- LinkedOut est susceptible de transmettre cette opportunité à
- d'autres candidats dont le profil correspond à votre besoin.
-
-
- ),
- candidateId: cv.UserId,
- defaultValues: {
- candidat: {
- firstName: cv.user.candidat.firstName,
- lastName: cv.user.candidat.lastName,
+ const opportunityModalProps = useMemo(() => {
+ return {
+ modalTitle: 'Proposer une opportunité à un candidat',
+ modalDesc: (
+
+ Contactez ici le candidat et son coach LinkedOut afin de solliciter un
+ échange.
+
+
+ Si vous souhaitez échanger avec le coach bénévole qui accompagne le
+ candidat dans sa recherche d'emploi, précisez-le dans votre
+ message.
+
+
+
+ LinkedOut est susceptible de transmettre cette opportunité à
+ d'autres candidats dont le profil correspond à votre besoin.
+
+
+ ),
+ candidateId: cv.UserId,
+ defaultValues: {
+ candidat: {
+ firstName: cv.user.candidat.firstName,
+ lastName: cv.user.candidat.lastName,
+ },
+ isPublic: false,
},
- isPublic: false,
- },
- });
+ };
+ }, [cv]);
const { asPath } = useRouter();
const hostname = process.env.SERVER_URL;
@@ -209,7 +212,7 @@ export const CVFiche = ({ cv, actionDisabled }) => {
onClick={() => {
gaEvent(GA_TAGS.PAGE_CV_PROPOSER_OFFRE_CLIC);
fbEvent(FB_TAGS.COMPANY_CV_OFFER_OPEN);
- openModal( );
+ openModal( );
}}
>
Me proposer une offre
diff --git a/src/components/cv/CVList.tsx b/src/components/cv/CVList.tsx
index 0dc7a9bba..8f08fdc94 100644
--- a/src/components/cv/CVList.tsx
+++ b/src/components/cv/CVList.tsx
@@ -6,7 +6,7 @@ import { LoadingScreen } from 'src/components/backoffice/cv/LoadingScreen';
import { CandidatCard } from 'src/components/cards';
import { SearchBar } from 'src/components/filters/SearchBar';
import { openModal } from 'src/components/modals/Modal';
-import { usePostPublicOfferModal } from 'src/components/modals/usePostPublicOfferModal';
+import { PostPublicOfferModal } from 'src/components/modals/Modal/ModalGeneric/PostOpportunityModal';
import { Button, Grid, SimpleLink, Icon } from 'src/components/utils';
import { CV_FILTERS_DATA, INITIAL_NB_OF_CV_TO_DISPLAY } from 'src/constants';
import { FB_TAGS } from 'src/constants/tags';
@@ -52,8 +52,6 @@ export const CVList = ({
setSearch,
resetFilters,
}: CVListProps) => {
- const PublicOfferModal = usePostPublicOfferModal();
-
const [cvs, setCVs] = useState(undefined);
const [loading, setLoading] = useState(false);
const [loadingMore, setLoadingMore] = useState(false);
@@ -210,7 +208,7 @@ export const CVList = ({
className="uk-link-text"
onClick={() => {
fbEvent(FB_TAGS.COMPANY_GENERAL_OFFER_OPEN);
- openModal( );
+ openModal( );
}}
>
Publier une offre d’emploi
@@ -235,15 +233,7 @@ export const CVList = ({
}
return renderCvList(cvs);
}
- }, [
- cvs,
- error,
- filters,
- hasSuggestions,
- loading,
- renderCvList,
- PublicOfferModal,
- ]);
+ }, [cvs, error, filters, hasSuggestions, loading, renderCvList]);
return (
diff --git a/src/components/modals/Modal/ModalGeneric/ModalEdit/ModalEdit.js b/src/components/modals/Modal/ModalGeneric/ModalEdit/ModalEdit.js
index 2aa1d47e5..a89fac749 100644
--- a/src/components/modals/Modal/ModalGeneric/ModalEdit/ModalEdit.js
+++ b/src/components/modals/Modal/ModalGeneric/ModalEdit/ModalEdit.js
@@ -57,7 +57,11 @@ ModalEdit.propTypes = {
PropTypes.string,
])
),
- description: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),
+ description: PropTypes.oneOfType([
+ PropTypes.element,
+ PropTypes.arrayOf(PropTypes.element),
+ PropTypes.string,
+ ]),
submitText: PropTypes.string,
cancelText: PropTypes.string,
formId: PropTypes.string,
diff --git a/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostOpportunityModal.tsx b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostOpportunityModal.tsx
new file mode 100644
index 000000000..748edb149
--- /dev/null
+++ b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostOpportunityModal.tsx
@@ -0,0 +1,180 @@
+import _ from 'lodash';
+import moment from 'moment';
+import React, {
+ /* memo, */ useCallback,
+ /* useEffect, */ useState,
+} from 'react';
+import UIkit from 'uikit';
+
+import { Api } from 'src/api';
+import { formEditOpportunity as defaultSchema } from 'src/components/forms/schema/formEditOpportunity';
+import { ModalEdit } from 'src/components/modals/Modal/ModalGeneric/ModalEdit';
+import { BUSINESS_LINES } from 'src/constants';
+import { FB_TAGS, GA_TAGS } from 'src/constants/tags';
+import { useNewsletterTracking } from 'src/hooks/useNewsletterTracking';
+import { fbEvent } from 'src/lib/fb';
+import { gaEvent } from 'src/lib/gtag';
+import { findConstantFromValue, getValueFromFormField } from 'src/utils';
+import { AnyToFix } from 'src/utils/Types';
+
+interface PostOpportunityModalProps {
+ modalTitle: string;
+ modalDesc: string | JSX.Element | JSX.Element[];
+ isAdmin?: boolean;
+ candidateId?: string;
+ callback?: () => void;
+ defaultValues: AnyToFix; // to be typed
+ schema: AnyToFix; // to be typed
+}
+
+export const PostOpportunityModal = ({
+ modalTitle,
+ modalDesc,
+ isAdmin = false,
+ candidateId,
+ callback,
+ defaultValues = {},
+ schema = defaultSchema,
+}: PostOpportunityModalProps) => {
+ const [lastFilledForm, setLastFilledForm] = useState({});
+ // const prevLastFilledForm = usePrevious(lastFilledForm);
+ const newsletterParams = useNewsletterTracking();
+
+ const mutatedDefaultValue = {
+ ...defaultValues,
+ candidatesIds: defaultValues.candidat
+ ? [
+ {
+ label: `${defaultValues.candidat.firstName} ${defaultValues.candidat.lastName}`,
+ value: candidateId,
+ },
+ ]
+ : [],
+ businessLines: defaultValues.businessLines
+ ? defaultValues.businessLines.map((businessLine) => {
+ return findConstantFromValue(businessLine, BUSINESS_LINES);
+ })
+ : [],
+ };
+
+ const postOpportunity = useCallback(
+ async (fields, closeModal, adminCallback) => {
+ const { openNewForm, ...opportunity } = fields;
+ const candidatesIds = opportunity.candidatesIds
+ ? opportunity.candidatesIds.map((id) => {
+ return typeof id === 'object' ? id.value : id;
+ })
+ : [];
+
+ let successMessage = 'Offre validée';
+ if (!isAdmin) {
+ if (opportunity.isPublic) {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_GENERALE_CLIC);
+ fbEvent(FB_TAGS.COMPANY_GENERAL_OFFER_SEND);
+ } else if (candidatesIds.length > 1) {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_MULTIPLE_CLIC);
+ fbEvent(FB_TAGS.COMPANY_CV_OFFER_SEND);
+ } else {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_UNIQUE_CLIC);
+ fbEvent(FB_TAGS.COMPANY_CV_OFFER_SEND);
+ }
+ successMessage = opportunity.isPublic
+ ? 'Merci pour votre offre, nous reviendrons bientôt vers vous.'
+ : `Merci pour votre offre, le(s) candidat(s) et coach(s) associés reviendront bientôt vers vous.`;
+ }
+
+ try {
+ await Api.postOpportunity({
+ ...opportunity,
+ startOfContract: opportunity.startOfContract || null,
+ endOfContract: opportunity.endOfContract || null,
+ candidatesIds:
+ opportunity.isPublic && !isAdmin ? null : candidatesIds,
+ message: opportunity.isPublic ? null : opportunity.message,
+ recruiterPhone: opportunity.recruiterPhone || null,
+ businessLines: opportunity.businessLines
+ ? opportunity.businessLines.map((businessLine, index) => {
+ return {
+ name: businessLine,
+ order: index,
+ };
+ })
+ : undefined,
+ locations: opportunity.locations.map(({ department, address }) => {
+ return {
+ department: getValueFromFormField(department),
+ address,
+ };
+ }),
+ date: moment().toISOString(),
+ ...newsletterParams,
+ });
+ closeModal();
+ UIkit.notification(successMessage, 'success');
+ if (adminCallback) await adminCallback();
+ if (openNewForm) {
+ setLastFilledForm({
+ ...fields,
+ candidatesIds: [],
+ businessLines: fields.businessLines
+ ? fields.businessLines.map((businessLine) => {
+ return findConstantFromValue(businessLine, BUSINESS_LINES);
+ })
+ : [],
+ });
+ } else {
+ setLastFilledForm({});
+ }
+ } catch (err) {
+ UIkit.notification(`Une erreur est survenue.`, 'danger');
+ }
+ },
+ [isAdmin, newsletterParams]
+ );
+
+ // useEffect(() => {
+ // if (!_.isEmpty(lastFilledForm) && lastFilledForm !== prevLastFilledForm) {
+ // setTimeout(() => {
+ // openModal(
);
+ // }, 1000);
+ // }
+ // }, [lastFilledForm, PostOpportunityModal, prevLastFilledForm]);
+
+ return (
+
{
+ if (!isAdmin) {
+ if (fields.isPublic) {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_GENERALE_INVALIDE);
+ } else if (fields.candidatesIds?.length > 1) {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_MULTIPLE_INVALIDE);
+ } else {
+ gaEvent(GA_TAGS.POPUP_OFFRE_ENVOYER_OFFRE_UNIQUE_INVALIDE);
+ }
+ }
+ }}
+ onSubmit={async (fields, closeModal) => {
+ await postOpportunity(
+ isAdmin
+ ? {
+ ...fields,
+ isAdmin: true,
+ }
+ : fields,
+ closeModal,
+ callback
+ );
+ }}
+ />
+ );
+};
diff --git a/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostPublicOfferModal.tsx b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostPublicOfferModal.tsx
new file mode 100644
index 000000000..f55fbe56b
--- /dev/null
+++ b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/PostPublicOfferModal.tsx
@@ -0,0 +1,64 @@
+import React from 'react';
+import { formEditOpportunity as defaultSchema } from 'src/components/forms/schema/formEditOpportunity';
+import { mutateFormSchema } from 'src/utils';
+import { PostOpportunityModal } from './PostOpportunityModal';
+
+export const PostPublicOfferModal = () => {
+ const mutatedSchema = mutateFormSchema(
+ defaultSchema,
+ [
+ {
+ fieldId: 'candidatesIds',
+ props: [
+ {
+ propName: 'disabled',
+ value: true,
+ },
+ {
+ propName: 'hidden',
+ value: true,
+ },
+ ],
+ },
+ {
+ fieldId: 'isPublic',
+ props: [
+ {
+ propName: 'disabled',
+ value: true,
+ },
+ {
+ propName: 'hidden',
+ value: true,
+ },
+ ],
+ },
+ {
+ fieldId: 'message',
+ props: [
+ {
+ propName: 'disabled',
+ value: true,
+ },
+ {
+ propName: 'hidden',
+ value: true,
+ },
+ ],
+ },
+ ],
+ 'post-job-ad'
+ );
+
+ const postPublicOfferModalProps = {
+ defaultValues: {
+ isPublic: true,
+ },
+ modalTitle: 'Proposer une opportunité',
+ modalDesc:
+ 'Cet espace est dédié aux potentiels recruteurs qui souhaitent proposer une opportunité visible par tous les candidats.',
+ schema: mutatedSchema,
+ };
+
+ return ;
+};
diff --git a/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/index.tsx b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/index.tsx
new file mode 100644
index 000000000..9eceab877
--- /dev/null
+++ b/src/components/modals/Modal/ModalGeneric/PostOpportunityModal/index.tsx
@@ -0,0 +1,2 @@
+export * from './PostOpportunityModal';
+export * from './PostPublicOfferModal';
diff --git a/src/pages/entreprises/cvs.js b/src/pages/entreprises/cvs.js
deleted file mode 100644
index 29ba17243..000000000
--- a/src/pages/entreprises/cvs.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import React from 'react';
-import { Layout } from 'src/components/Layout';
-import { openModal } from 'src/components/modals/Modal';
-import { usePostPublicOfferModal } from 'src/components/modals/usePostPublicOfferModal';
-import { CorporateContact, SearchCandidates } from 'src/components/partials';
-import { ImageTitle } from 'src/components/partials/ImageTitle';
-import { NewsletterPartial } from 'src/components/partials/NewsletterPartial';
-import { Button, Grid, Img, Section } from 'src/components/utils';
-import { Icon } from 'src/components/utils/Icon';
-import { FB_TAGS, GA_TAGS } from 'src/constants/tags';
-import { fbEvent } from 'src/lib/fb';
-import { gaEvent } from 'src/lib/gtag';
-import { isSSR } from 'src/utils/isSSR';
-
-const CVEntreprises = () => {
- const PublicOfferModal = usePostPublicOfferModal();
-
- return (
-
-
- Ils sont prêts à
- travailler !
-
- }
- text={
- <>
- Pour une entreprise, il existe différentes manières de
- s'engager pour l'inclusion, mais le recrutement est sans
- doute l’expérience la plus transformante et impactante.
- Vous avez un poste à pourvoir ? Parcourez les CV de nos
- candidats et contactez-les !
- >
- }
- cta={{
- onClick: () => {
- if (!isSSR) {
- document
- .getElementById('searchCandidates')
- .scrollIntoView({ behavior: 'smooth' });
- }
- },
- label: 'Découvrez les candidats',
- }}
- />
-
-
-
-
-
-
- Votre offre peut correspondre{' '}
- à plusieurs profils ?
-
-
-
- {
- gaEvent(GA_TAGS.PAGE_RECRUTER_DEPOSER_OFFRE_CLIC);
- fbEvent(FB_TAGS.COMPANY_GENERAL_OFFER_OPEN);
- openModal( );
- }}
- >
- Déposez votre offre
-
-
-
-
-
-
- Vous n'avez pas trouvé{' '}
-
- le profil correspondant ?
-
-
-
- D'autres partenaires pourraient vous orienter des
- personnes !
-
-
-
- Voir les partenaires
-
-
-
-
-
-
-
-
- );
-};
-
-export default CVEntreprises;
diff --git a/tsconfig.json b/tsconfig.json
index 6da047053..1ab7c1f1f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -16,12 +16,6 @@
"jsx": "preserve",
"baseUrl": "./"
},
- "include": [
- "next-env.d.ts",
- "**/*.ts",
- "**/*.tsx",
- "**/*.js",
- "**/*.jsx",
- ],
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
"exclude": ["node_modules"]
}