Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3e5d9f2555 | |||
| e8bb1374d9 | |||
| 8be4c6d08c | |||
| b519451a0c | |||
| 04d03aa736 | |||
| c71fe2b452 | |||
| ee45ef810b |
@@ -383,33 +383,21 @@ class Answer extends Component {
|
||||
|
||||
remplirLocation = (typeDonnee, donnee) =>{
|
||||
console.log("DEBUT remplirLocation");
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
if(typeDonnee=='"street_number"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ street_number: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"route"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ route: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"locality"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ locality: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"administrative_area_level_2"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ administrative_area_level_2: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"administrative_area_level_1"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ administrative_area_level_1: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"country"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ country: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"postal_code"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ postal_code: donnee.replace('"', '') })
|
||||
}
|
||||
console.log("FIN remplirLocation");
|
||||
@@ -419,7 +407,11 @@ class Answer extends Component {
|
||||
onSuggestionSelected = (suggestion) => {
|
||||
|
||||
console.log('Selected suggestion:', suggestion)
|
||||
const address = suggestion.description;
|
||||
let address = suggestion.description;
|
||||
var words = address.split(',');
|
||||
if(words.length<3){
|
||||
address = "mairie de "+address;
|
||||
}
|
||||
this.setState({ geoloc: address})
|
||||
this.setState({
|
||||
value: address
|
||||
@@ -427,7 +419,8 @@ class Answer extends Component {
|
||||
|
||||
geocodeByAddress(address)
|
||||
.then(address => {
|
||||
|
||||
console.log("ADRESSE");
|
||||
console.log(address);
|
||||
if(address[0].address_components[0]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[0].types[0]), JSON.stringify(address[0].address_components[0].long_name))
|
||||
}
|
||||
@@ -450,11 +443,13 @@ class Answer extends Component {
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[6].types[0]), JSON.stringify(address[0].address_components[6].long_name))
|
||||
}
|
||||
if(address[0].geometry){
|
||||
|
||||
console.log(address[0].geometry.location_type);
|
||||
let gps =JSON.stringify(address[0].geometry.location);
|
||||
const obj = JSON.parse(gps);
|
||||
this.setState({ formatted_address: JSON.stringify(address[0].formatted_address) })
|
||||
this.setState({ lat: obj.lat.toString()})
|
||||
this.setState({ lng: obj.lng.toString()})
|
||||
this.setState({ formatted_address: JSON.stringify(address[0].formatted_address) })
|
||||
this.setState({ lat: obj.lat.toString()})
|
||||
this.setState({ lng: obj.lng.toString()})
|
||||
}
|
||||
|
||||
|
||||
@@ -650,20 +645,7 @@ class Answer extends Component {
|
||||
</Dialog>
|
||||
|
||||
|
||||
<TextField
|
||||
name="lastname"
|
||||
required
|
||||
id="outlined-required"
|
||||
label="Nom"
|
||||
className={classes.textField}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
value={this.state.lastname}
|
||||
onChange={this.handleChange}
|
||||
error={!!_.isEmpty(this.state.lastname)}
|
||||
helperText={!!_.isEmpty(this.state.lastname) && "Veuillez saisir votre nom"}
|
||||
required
|
||||
/>
|
||||
|
||||
|
||||
<TextField
|
||||
name="firstname"
|
||||
@@ -679,6 +661,21 @@ class Answer extends Component {
|
||||
helperText={!!_.isEmpty(this.state.firstname) && "Veuillez saisir votre prénom"}
|
||||
/>
|
||||
|
||||
<TextField
|
||||
name="lastname"
|
||||
required
|
||||
id="outlined-required"
|
||||
label="Nom"
|
||||
className={classes.textField}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
value={this.state.lastname}
|
||||
onChange={this.handleChange}
|
||||
error={!!_.isEmpty(this.state.lastname)}
|
||||
helperText={!!_.isEmpty(this.state.lastname) && "Veuillez saisir votre nom"}
|
||||
required
|
||||
/>
|
||||
|
||||
<div
|
||||
className={classes.conteneurGoogle}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
|
||||
@@ -363,7 +363,7 @@ class Header extends React.Component {
|
||||
<div className={classes.fullList + ' ' + classes.lightFullList}>
|
||||
<List className={classes.List}>
|
||||
|
||||
<Link href="/" >
|
||||
<Link href="/indexTalent" >
|
||||
<a className={classes.darkMenuItem}><ListItem classes={{ root: classes.rootListItem }}>
|
||||
<img alt="talents-tube" src='/statique/images/logos/TalentsTube_logo-color.svg' className={classes.menuLogo} />
|
||||
</ListItem></a>
|
||||
@@ -579,7 +579,7 @@ class Header extends React.Component {
|
||||
(<AppBar position="static" className={classes.appBar}>
|
||||
<Toolbar disableGutters={true} className={classes.toolbarDesktop}>
|
||||
<section className={classes.appBarDesktopSection + ' ' + classes.appBarDesktopSection1}>
|
||||
<Link href="/" >
|
||||
<Link href="/indexTalent" >
|
||||
<a className={classes.darkMenuItem}>
|
||||
<ListItem classes={{ root: classes.rootListItemDesktop }}>
|
||||
<img alt="talents-tube" src='/statique/images/logos/TalentsTube_logo-color.svg' className={classes.desktopMenuLogo} />
|
||||
@@ -685,7 +685,7 @@ class Header extends React.Component {
|
||||
<MenuIcon />
|
||||
</IconButton>
|
||||
<div className={classes.grow} />
|
||||
<Link href="/" >
|
||||
<Link href="/indexTalent" >
|
||||
<a><img alt="talents-tube" src='/statique/images/logos/TalentsTube_logo-color.svg' className={classes.menuLogo} /></a>
|
||||
</Link>
|
||||
<div className={classes.grow} />
|
||||
|
||||
@@ -488,7 +488,7 @@ class HeaderPersonnalise extends React.Component {
|
||||
(<AppBar position="static" className={classes.appBar}>
|
||||
<Toolbar disableGutters={true} className={classes.toolbarDesktop}>
|
||||
<section className={classes.appBarDesktopSection + ' ' + classes.appBarDesktopSection1}>
|
||||
<Link href="/" >
|
||||
<Link href="/indexTalent" >
|
||||
<a className={classes.darkMenuItem}>
|
||||
<ListItem classes={{ root: classes.rootListItemDesktop }}>
|
||||
<img alt="talents-tube" src='/statique/images/logos/TalentsTube_logo-color.svg' className={classes.desktopMenuLogo} />
|
||||
@@ -601,7 +601,7 @@ class HeaderPersonnalise extends React.Component {
|
||||
<ArrowLeft color="primary" classes={{ root: classes.icon }}></ArrowLeft>
|
||||
</ButtonBase>
|
||||
<div className={classes.grow} />
|
||||
<Link href="/" >
|
||||
<Link href="/indexTalent" >
|
||||
<a><img alt="talents-tube" src='/statique/images/logos/TalentsTube_logo-color.svg' className={classes.menuLogo} /></a>
|
||||
</Link>
|
||||
<div className={classes.grow} />
|
||||
|
||||
@@ -108,6 +108,7 @@ class Register extends React.Component {
|
||||
data: {
|
||||
firstname: '',
|
||||
lastname: '',
|
||||
phone: '',
|
||||
email: '',
|
||||
password: '',
|
||||
checkNewsletter: false,
|
||||
@@ -118,7 +119,9 @@ class Register extends React.Component {
|
||||
email:null,
|
||||
password:null,
|
||||
firstname:null,
|
||||
phone:null,
|
||||
lastname:null,
|
||||
phone:null,
|
||||
checkCGU:null
|
||||
},
|
||||
loading: false,
|
||||
@@ -196,19 +199,7 @@ class Register extends React.Component {
|
||||
|
||||
<form className={classes.form}>
|
||||
|
||||
<TextField
|
||||
className={classes.champ}
|
||||
value={data.lastname}
|
||||
onChange={this.onChange}
|
||||
id="nom"
|
||||
name="lastname"
|
||||
label="Nom"
|
||||
margin="normal"
|
||||
variant="outlined"
|
||||
required
|
||||
error={!!errors.lastname}
|
||||
helperText={!!errors.lastname && "Veuillez saisir votre nom."}
|
||||
/>
|
||||
|
||||
<TextField
|
||||
value={data.firstname}
|
||||
onChange={this.onChange}
|
||||
@@ -222,6 +213,33 @@ class Register extends React.Component {
|
||||
helperText={!!errors.firstname && "Veuillez saisir votre prénom."}
|
||||
/>
|
||||
|
||||
<TextField
|
||||
className={classes.champ}
|
||||
value={data.lastname}
|
||||
onChange={this.onChange}
|
||||
id="nom"
|
||||
name="lastname"
|
||||
label="Nom"
|
||||
margin="normal"
|
||||
variant="outlined"
|
||||
required
|
||||
error={!!errors.lastname}
|
||||
helperText={!!errors.lastname && "Veuillez saisir votre nom."}
|
||||
/>
|
||||
|
||||
<TextField
|
||||
className={classes.champ}
|
||||
value={data.phone}
|
||||
onChange={this.onChange}
|
||||
id="telephone"
|
||||
name="phone"
|
||||
label="Téléphone"
|
||||
margin="normal"
|
||||
variant="outlined"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
<TextField
|
||||
value={data.email}
|
||||
onChange={this.onChange}
|
||||
@@ -233,7 +251,6 @@ class Register extends React.Component {
|
||||
variant="outlined"
|
||||
required
|
||||
error={!!errors.email || !!erreurs}
|
||||
autoComplete="username email"
|
||||
helperText={!!errors.email ? "Saisissez une adresse e-mail valide." : !!erreurs && erreurs}
|
||||
/>
|
||||
|
||||
@@ -335,6 +352,7 @@ function mapStateToProps(state) {
|
||||
return {
|
||||
loading: !!state.user.loading,
|
||||
errors: !!state.user.errors ?state.user.errors: {
|
||||
phone:null,
|
||||
email:null,
|
||||
password:null,
|
||||
firstname:null,
|
||||
|
||||
@@ -55,7 +55,7 @@ module.exports = withPlugins(
|
||||
blogUrl: 'https://blog.talentstube.com',
|
||||
frontServerUrl: 'https://pp.app.talentstube.com/',
|
||||
cvThequeUrl: 'https://recruteur.talentstube.com',
|
||||
version : 'V2.7.2',
|
||||
version : 'V2.7.5',
|
||||
adListDefaultUrl: '/statique/images/default/default_picture_company.jpg',
|
||||
cachedMediaUrl: '/media/cache/profile_thumb/uploads/img/',
|
||||
postedContentUrl: '/uploads/img/',
|
||||
|
||||
@@ -159,6 +159,16 @@
|
||||
<lastmod>2021-01-18</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/indexTalent</loc>
|
||||
<lastmod>2021-03-09</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com</loc>
|
||||
<lastmod>2021-03-09</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offres</loc>
|
||||
<lastmod>2021-01-18</lastmod>
|
||||
|
||||
@@ -328,8 +328,9 @@ class Reponse extends React.Component {
|
||||
render() {
|
||||
const { loading, activeStep } = this.state;
|
||||
const { classes, menu, offre, company } = this.props;
|
||||
const logoUrl = (offre.company ? publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + offre.company.logo : '');
|
||||
const logoCompanyUrl = ((company && company.logo) ? publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + company.logo : '');
|
||||
const logoUrl = (offre.company ? publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + offre.company.logo : logoCompanyUrl);
|
||||
|
||||
|
||||
let rootStepper = activeStep === 0 ? (
|
||||
classes.rootStepperDefault
|
||||
@@ -352,6 +353,7 @@ class Reponse extends React.Component {
|
||||
<div className={classes.titreContainer}>
|
||||
<div className={classes.logoContainer}>
|
||||
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }} src={logoUrl} alt="companylogo"/>
|
||||
|
||||
</div>
|
||||
<div className={classes.infoContainer}>
|
||||
<Typography gutterBottom variant="h5" component="h1" className={classes.title}>
|
||||
@@ -366,7 +368,7 @@ class Reponse extends React.Component {
|
||||
)
|
||||
}
|
||||
{ !!company.brand_name && (<Fragment><div className={classes.logoContainer}>
|
||||
{/* <Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }} src={logoCompanyUrl} alt="companylogo"/> */}
|
||||
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }} src={logoCompanyUrl} alt="companylogo"/>
|
||||
</div>
|
||||
<div className={classes.infoContainer}>
|
||||
<Typography gutterBottom variant="h5" component="h1" className={classes.title}>
|
||||
|
||||
+746
-289
File diff suppressed because it is too large
Load Diff
@@ -1,750 +0,0 @@
|
||||
import React from 'react';
|
||||
import AppBar from '@material-ui/core/AppBar';
|
||||
import Button from '@material-ui/core/Button';
|
||||
import CameraIcon from '@material-ui/icons/PhotoCamera';
|
||||
import Card from '@material-ui/core/Card';
|
||||
import CardActions from '@material-ui/core/CardActions';
|
||||
import CardContent from '@material-ui/core/CardContent';
|
||||
import CardMedia from '@material-ui/core/CardMedia';
|
||||
import CssBaseline from '@material-ui/core/CssBaseline';
|
||||
import Grid from '@material-ui/core/Grid';
|
||||
import Toolbar from '@material-ui/core/Toolbar';
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import {makeStyles} from '@material-ui/core/styles';
|
||||
import Container from '@material-ui/core/Container';
|
||||
import Link from '@material-ui/core/Link';
|
||||
import VideoVimeo from '../components/atoms/VideoVimeo'
|
||||
import 'video-react/dist/video-react.css';
|
||||
import {Player} from 'video-react';
|
||||
import Hidden from '@material-ui/core/Hidden';
|
||||
import dynamic from 'next/dynamic'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
import getConfig from 'next/config'
|
||||
|
||||
const Footer = dynamic(() => import ('../components/organisms/FooterAccueil'), {ssr: false});
|
||||
|
||||
function Copyright() {
|
||||
return (
|
||||
<Typography variant="body2" color="textSecondary" align="center">
|
||||
{'Copyright © '}
|
||||
<Link color="inherit" href="https://material-ui.com/">
|
||||
Your Website
|
||||
</Link>{' '} {new Date().getFullYear()}
|
||||
{'.'}
|
||||
</Typography>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = makeStyles((theme) => ({
|
||||
icon: {
|
||||
marginRight: theme.spacing(2)
|
||||
},
|
||||
actionBtn: {
|
||||
marginBottom: "0.75em",
|
||||
display: "block"
|
||||
},
|
||||
bttn: {
|
||||
color: "#fff",
|
||||
background: "#FF6A6C",
|
||||
border: "2px solid #FF6A6C",
|
||||
padding: "15px"
|
||||
},
|
||||
heroSection: {
|
||||
// background:
|
||||
// "url('https://blog.talentstube.com/wp-content/uploads/2021/02/realisation-off
|
||||
// r e-emploi-video-smartphone-modele.jpg') center center no-repeat scroll",
|
||||
// backgroundSize: "cover",
|
||||
padding: "5em 0 9em",
|
||||
position: "relative",
|
||||
color: "#fff",
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
background: "url('/statique/images/accueil/offre-emploi.jpg') center center no-repeat scroll",
|
||||
backgroundSize: "cover",
|
||||
height: "100%",
|
||||
padding: "0"
|
||||
}
|
||||
},
|
||||
|
||||
mieuxQueTexteSection: {
|
||||
paddingTop: "28em",
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
paddingTop: "0"
|
||||
}
|
||||
},
|
||||
mieuxQueTexteTexte: {
|
||||
color: "#fff",
|
||||
font: "normal normal bold 1.625em/1.769em Roboto",
|
||||
letterSpacing: "2",
|
||||
},
|
||||
bloc1Section: {
|
||||
paddingLeft: "5em",
|
||||
paddingRight: "5em"
|
||||
},
|
||||
|
||||
heroSectionMobile: {
|
||||
background: "url('/statique/images/accueil/offre-emploi.jpg') center top no-repeat scroll",
|
||||
padding: "5em 0 9em",
|
||||
position: "relative",
|
||||
color: "#fff"
|
||||
},
|
||||
container: {
|
||||
paddingRight: "15px",
|
||||
paddingLeft: "15px",
|
||||
marginRight: "auto",
|
||||
marginLeft: "auto"
|
||||
},
|
||||
containerMobile: {},
|
||||
colMd12: {
|
||||
position: "relative",
|
||||
minHeight: "1px",
|
||||
paddingLeft: "4em",
|
||||
paddingRight: "4em",
|
||||
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
paddingLeft: "2em",
|
||||
paddingRight: "2em",
|
||||
}
|
||||
},
|
||||
welcomeMessageLogo: {
|
||||
marginBottom:"80px",
|
||||
textAlign: "left"
|
||||
},
|
||||
welcomeMessage: {
|
||||
|
||||
textAlign: "left"
|
||||
},
|
||||
welcomeMessageH1: {
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: "50px",
|
||||
fontWeight: "700",
|
||||
lineHeight: "1.2em !important",
|
||||
color: "#fff",
|
||||
maxWidth: "600px"
|
||||
},
|
||||
welcomeMessageP: {
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: "20px",
|
||||
marginBottom: "0",
|
||||
color: "#fff",
|
||||
fontWeight: "400",
|
||||
maxWidth: "600px",
|
||||
marginBottom:"80px",
|
||||
},
|
||||
videoBackground: {
|
||||
position: "absolute",
|
||||
right: "0",
|
||||
bottom: "0",
|
||||
top: "0",
|
||||
minWidth: "100%",
|
||||
minHeight: "50%",
|
||||
height: "50%",
|
||||
width: "auto",
|
||||
height: "auto",
|
||||
zIndex: "-100",
|
||||
// background: `url("/statique/images/recrutement-video.jpg")` ,
|
||||
|
||||
},
|
||||
overlay: {
|
||||
position: "absolute",
|
||||
width: "100%",
|
||||
minHeight: "100%",
|
||||
background: "rgba(0, 0, 0, 0.36)",
|
||||
top: "0"
|
||||
},
|
||||
overlayMobile: {
|
||||
|
||||
width: "100%",
|
||||
minHeight: "100%",
|
||||
|
||||
top: "0"
|
||||
},
|
||||
heroContent: {
|
||||
backgroundColor: "#1689FB",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6)
|
||||
},
|
||||
bloc1: {
|
||||
backgroundColor: "#1E2327",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
color: "#FFFFFF",
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6),
|
||||
marginTop: "60px"
|
||||
},
|
||||
bloc2: {
|
||||
backgroundColor: "transparent",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
|
||||
marginTop: "0px"
|
||||
},
|
||||
bloc3: {
|
||||
backgroundColor: "transparent",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
marginTop: "60px"
|
||||
},
|
||||
bloc4: {
|
||||
backgroundColor: "#FCFCFC",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
marginTop: "60px"
|
||||
},
|
||||
footerDiv: {
|
||||
backgroundColor: "#1E2327",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6)
|
||||
},
|
||||
bloc2Titre1: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 2.625em/1.667em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "1em"
|
||||
},
|
||||
bloc2Titre2: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 1.625em/1.769em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "2em"
|
||||
},
|
||||
bloc2Titre3: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1.25em/1.9em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "3em"
|
||||
},
|
||||
bloc2Paragraphe: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1em/2em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "2em",
|
||||
marginBottom: '62px'
|
||||
},
|
||||
heroButtons: {
|
||||
marginTop: theme.spacing(4)
|
||||
},
|
||||
recruteurButton: {
|
||||
|
||||
width: "182px",
|
||||
height: "49px",
|
||||
background: "#25D89A 0% 0% no-repeat padding-box",
|
||||
border: "2px solid #25D89A",
|
||||
borderRadius: "5px",
|
||||
opacity: "1",
|
||||
color: "#fff",
|
||||
fontWeight: "700",
|
||||
textTransform: "inherit"
|
||||
},
|
||||
talentButton: {
|
||||
|
||||
width: "182px",
|
||||
height: "49px",
|
||||
border: "2px solid #FFFFFF",
|
||||
color: "#FFFFFF",
|
||||
borderRadius: "5px",
|
||||
opacity: "1",
|
||||
textTransform: "inherit",
|
||||
background: "transparent",
|
||||
fontWeight: "700",
|
||||
'&:hover': {
|
||||
background: "#ffffff 0% 0% no-repeat padding-box",
|
||||
color: "#25D89A"
|
||||
}
|
||||
},
|
||||
cardGrid: {
|
||||
|
||||
paddingBottom: theme.spacing(8)
|
||||
},
|
||||
cardGauche: {
|
||||
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: "#E7F3FF 0% 0% no-repeat padding-box",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
padding: "50px",
|
||||
minHeight:"650px",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
},
|
||||
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
padding: "50px 0px",
|
||||
}
|
||||
},
|
||||
cardDroite: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: "#F8FBFF 0% 0% no-repeat padding-box",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
padding: "50px ",
|
||||
minHeight:"650px",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
},
|
||||
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
padding: "50px 0px",
|
||||
}
|
||||
},
|
||||
cardDroiteGris: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: "#FCFCFC 0% 0% no-repeat padding-box",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
padding: "50px",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
bloc1Droite: {
|
||||
backgroundColor: "transparent",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
bloc3Droite: {
|
||||
backgroundColor: "transparent",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
blocGris: {
|
||||
backgroundColor: "transparent",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
verticalAlign:"middle",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
bloc1DroiteH1: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 2.625em/1.667em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#ffffff",
|
||||
opacity: "1",
|
||||
lineHeight: "1.5em"
|
||||
},
|
||||
bloc1DroiteParagraphe: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1em/2em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#ffffff",
|
||||
opacity: "1",
|
||||
lineHeight: "2em",
|
||||
marginBottom: '62px'
|
||||
},
|
||||
bloc1Gauche: {
|
||||
backgroundColor: "transparent",
|
||||
verticalAlign:"middle"
|
||||
},
|
||||
cardMedia: {
|
||||
paddingTop: '500px', // 16:9
|
||||
},
|
||||
cardContent: {
|
||||
flexGrow: 1
|
||||
},
|
||||
footer: {
|
||||
backgroundColor: theme.palette.background.paper,
|
||||
padding: theme.spacing(6)
|
||||
}
|
||||
}));
|
||||
const {publicRuntimeConfig} = getConfig();
|
||||
const cards = [1, 2];
|
||||
|
||||
export default function Index() {
|
||||
const classes = useStyles();
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl
|
||||
return (
|
||||
<React.Fragment>
|
||||
<OgHead
|
||||
seo_title="Espace candidat - Plateforme de recrutement en vidéo | Talents Tube"
|
||||
seo_description="Talents Tube est la première plateforme réservée aux offres d'emploi vidéo, vidéo marque employeur et aux CV vidéos. Découvrez une nouvelle méthode de recrutement."
|
||||
seo_url="www.talentstube.com"
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"></OgHead>
|
||||
|
||||
<main>
|
||||
{/* Hero unit */}
|
||||
|
||||
<header >
|
||||
|
||||
<Hidden smDown>
|
||||
<div className={classes.heroSection}></div>
|
||||
<video autoPlay loop muted className={classes.videoBackground}>
|
||||
<source
|
||||
src={"/statique/video/modele-offre-emploi-originale.mp4"}
|
||||
type='video/mp4'/>
|
||||
|
||||
</video>
|
||||
|
||||
|
||||
|
||||
<div className={classes.colMd12}>
|
||||
<div className={classes.welcomeMessageLogo}>
|
||||
<img src="/statique/images/talents-tube-logo.svg"/>
|
||||
</div>
|
||||
<div className={classes.welcomeMessage}>
|
||||
<h1 className={classes.welcomeMessageH1}>Adoptez le recrutement vidéo</h1>
|
||||
<p className={classes.welcomeMessageP}>Talents Tube favorise la mise en relation
|
||||
de candidats et d’entreprises et tout ça en vidéo !</p>
|
||||
</div>
|
||||
<div className={classes.heroButtons}></div>
|
||||
<div className={classes.actionBtn}>
|
||||
<Grid container spacing={2} justify="left">
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je suis recruteur
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.talentButton}>
|
||||
Je suis talent
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
{/* <button
|
||||
className={classes.recruteurButton}
|
||||
data-toggle="modal"
|
||||
data-target="#exampleModal">JE SUIS RECRUTEUR</button>
|
||||
<button
|
||||
className={classes.talentButton}
|
||||
data-toggle="modal"
|
||||
data-target=".bd-example-modal-lg">JE SUIS TALENT</button> */}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</Hidden>
|
||||
<Hidden mdUp>
|
||||
<div className={classes.heroSectionMobile}>
|
||||
<div className={classes.overlayMobile}>
|
||||
<div className={classes.containerMobile}>
|
||||
|
||||
<div className={classes.colMd12}>
|
||||
<div className={classes.welcomeMessageLogo}>
|
||||
<img src="/statique/images/talents-tube-logo.svg"/>
|
||||
</div>
|
||||
<div className={classes.welcomeMessage}>
|
||||
<h1 className={classes.welcomeMessageH1}>Adoptez le recrutement vidéo</h1>
|
||||
<p className={classes.welcomeMessageP}>Talents Tube favorise la mise en relation
|
||||
de candidats et d’entreprises et tout ça en vidéo !</p>
|
||||
</div>
|
||||
<div className={classes.heroButtons}></div>
|
||||
<div className={classes.actionBtn}>
|
||||
<Grid container spacing={2} justify="left">
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je suis recruteur
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.talentButton}>
|
||||
Je suis talent
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
{/* <button
|
||||
className={classes.recruteurButton}
|
||||
data-toggle="modal"
|
||||
data-target="#exampleModal">JE SUIS RECRUTEUR</button>
|
||||
<button
|
||||
className={classes.talentButton}
|
||||
data-toggle="modal"
|
||||
data-target=".bd-example-modal-lg">JE SUIS TALENT</button> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Hidden>
|
||||
<section className={classes.mieuxQueTexteSection}>
|
||||
<div className={classes.heroContent}>
|
||||
|
||||
<Container maxWidth="lg">
|
||||
<Typography variant="h4" align="center" className={classes.mieuxQueTexteTexte}>
|
||||
« Parce que vous méritez mieux que du texte ! »
|
||||
</Typography>
|
||||
|
||||
</Container>
|
||||
</div>
|
||||
</section>
|
||||
</header>
|
||||
|
||||
<section >
|
||||
<div >
|
||||
<Container className={classes.cardGrid} maxWidth="xl">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={0}>
|
||||
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.cardGauche}>
|
||||
|
||||
<CardContent >
|
||||
<Typography gutterBottom component="h2" className={classes.bloc2Titre1}>
|
||||
Je suis recruteur
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h3" className={classes.bloc2Titre2}>
|
||||
Talent introuvable ? Métier en tension ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre3} component="h4">
|
||||
Rencontrez vos futurs collaborateurs autrement, en vidéo
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
<b>Publiez une offre d’emploi vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Pas besoin d’une super vidéo, montrez simplement votre entreprise en donnant
|
||||
la parole à vos salariés</li>
|
||||
</ul>
|
||||
<b>Recevez des candidatures vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Au-delà des compétences, découvrez les vraies personnes derrière le CV
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
Gagnez du temps dans votre présélection, rencontrez uniquement les candidats
|
||||
réellement impliqués</li>
|
||||
</ul>
|
||||
<b>Ne vous limitez plus à des mots, osez un recrutement plus qualitatif !</b><br/>
|
||||
</Typography>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
En savoir plus
|
||||
</Button>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.cardDroite}>
|
||||
|
||||
<CardContent className={classes.cardContent}>
|
||||
<Typography gutterBottom component="h2" className={classes.bloc2Titre1}>
|
||||
Je suis candidat
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h3" className={classes.bloc2Titre2}>
|
||||
Marre des envois de CV sans réponse ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre3} component="h4">
|
||||
Rencontrez votre futur employeur autrement, en vidéo :
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
<b>Consultez des offres d’emploi video :</b><br/>
|
||||
<ul>
|
||||
<li>L’offre est en vidéo pour mieux comprendre l’entreprise, le métier,
|
||||
l’équipe… Votre candidature est aussi en vidéo. Vous êtes à égalité !</li>
|
||||
</ul>
|
||||
<b>Déposez votre candidature en vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Tout le monde a du talent et votre personnalité est aujourd’hui votre
|
||||
meilleur atout
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Pas besoin d’une « belle » vidéo, soyez vrai et authentique</li>
|
||||
</ul>
|
||||
<b>Dévoilez gratuitement qui vous êtes, au-delà des mots !</b>
|
||||
</Typography>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je me lance
|
||||
</Button>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
<div className={classes.bloc1}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Droite}>
|
||||
|
||||
<CardContent className={classes.bloc1Droite}>
|
||||
<Typography
|
||||
gutterBottom
|
||||
component="h2"
|
||||
color="#fff"
|
||||
className={classes.bloc1DroiteH1}>
|
||||
Notre mission : Remettre l’humain au cœur des recrutements
|
||||
</Typography>
|
||||
<Typography className={classes.bloc1DroiteParagraphe}>
|
||||
Chez Talents Tube, nous pensons que la technologie ne doit pas remplacer
|
||||
l’humain mais être à son service. C’est pour cette raison que nous proposons un
|
||||
outil de recrutement vidéo alliant digital et humain, afin de redonner la parole
|
||||
aux candidats et aux entreprises. Talents Tube est aujourd’hui la SEULE
|
||||
plateforme de recrutement qui permet aux entreprises de publier des offres
|
||||
d’emploi en vidéo et de recevoir des candidatures en vidéo.
|
||||
</Typography>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Hidden smDown>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Gauche}>
|
||||
|
||||
<CardMedia
|
||||
className={classes.cardMedia}
|
||||
image="/statique/images/accueil/candidature-en-video.png"></CardMedia>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Hidden>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
|
||||
<div className={classes.bloc3}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
<Hidden smDown>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Gauche}>
|
||||
<CardMedia
|
||||
className={classes.cardMedia}
|
||||
image="/statique/images/accueil/equipe_talents_tube.jpg"></CardMedia>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Hidden>
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc3Droite}>
|
||||
|
||||
<CardContent className={classes.bloc1Droite}>
|
||||
<Typography
|
||||
gutterBottom
|
||||
component="h2"
|
||||
color="#fff"
|
||||
className={classes.bloc2Titre1}>
|
||||
Pourquoi nous ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre2}>
|
||||
Parce que nous sommes les SEULS à savoir le faire !
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
Notre équipe est composée d’experts métier qui sauront vous accompagner dans
|
||||
toutes vos demandes que vous soyez candidat ou recruteur. En recherche
|
||||
d’évolution constante, nous avons à cœur de créer une relation de proximité afin
|
||||
d’adapter NOTRE solution à VOS besoins et ainsi créer une expérience utilisateur
|
||||
inoubliable. <br/><br/>
|
||||
Composée d’experts de la fonction RH & Recrutement, nous sommes
|
||||
passionnés par ce que nous faisons. Notre SEUL objectif : favoriser la rencontre
|
||||
d’entreprises formidables et de candidats uniques pour une performance commune.
|
||||
</Typography>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
|
||||
<div className={classes.bloc4}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.blocGris}>
|
||||
|
||||
<CardContent >
|
||||
<Typography
|
||||
gutterBottom
|
||||
|
||||
component="h2"
|
||||
color="#fff"
|
||||
className={classes.bloc2Titre1}>
|
||||
Ils recrutent déjà avec Talents Tube!
|
||||
</Typography>
|
||||
<Card className={classes.cardDroiteGris}>
|
||||
<img src="/statique/images/accueil/recrutement-video-entreprises.png"/>
|
||||
|
||||
</Card>
|
||||
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.blocGris}>
|
||||
|
||||
<iframe
|
||||
width="560"
|
||||
height="315"
|
||||
src="https://www.youtube.com/embed/sKh0u7Mbdps"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen></iframe>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
{/* <div className={classes.footerDiv}>
|
||||
|
||||
<Container maxWidth="sm"></Container>
|
||||
</div> */}
|
||||
<Footer/>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
/* eslint-disable jsx-a11y/anchor-is-valid */
|
||||
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
import Layout from "../components/templates/Layout"
|
||||
import { Typography } from '@material-ui/core';
|
||||
import Button from '@material-ui/core/Button';
|
||||
import Router from 'next/router'
|
||||
import { connect } from 'react-redux'
|
||||
//const fetchEmphasisJobsRequest = lazy(() => import('../actions/ads'));
|
||||
import { fetchEmphasisJobsRequest } from "../actions/ads";
|
||||
//const fetchEmphasisCompaniesRequest = lazy(() => import('../actions/companies'));
|
||||
import { fetchEmphasisCompaniesRequest } from "../actions/companies";
|
||||
import Loader from '../components/templates/loader'
|
||||
import { isEmpty } from "lodash"
|
||||
import NoResult from '../components/atoms/NoResult';
|
||||
// import Head from 'next/head'
|
||||
import dynamic from 'next/dynamic'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
import getConfig from 'next/config'
|
||||
import { BreadcrumbJsonLd } from 'next-seo';
|
||||
|
||||
// const VideoSlider = dynamic(() => import('../components/organisms/ShortVideoHooker'), {
|
||||
// ssr: false
|
||||
// });
|
||||
const HorizontalScroller = dynamic(() => import('../components/organisms/HorizontalScroller'), {
|
||||
ssr: false
|
||||
});
|
||||
|
||||
const TileCompany = dynamic(() => import('../components/organisms/TileCompany'), {
|
||||
ssr: false
|
||||
});
|
||||
|
||||
const TileOffre = dynamic(() => import('../components/organisms/TileOffre'), {
|
||||
ssr: false
|
||||
});
|
||||
|
||||
const Footer = dynamic(() => import('../components/organisms/Footer'), {
|
||||
ssr: false
|
||||
});
|
||||
const { publicRuntimeConfig } = getConfig();
|
||||
const styles = theme => ({
|
||||
root: {
|
||||
position: 'relative',
|
||||
textAlign: 'center',
|
||||
paddingTop: theme.spacing(20),
|
||||
justifyContent: 'center',
|
||||
},
|
||||
primary: {
|
||||
color: theme.palette.primary.main,
|
||||
},
|
||||
container: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
},
|
||||
scrollerSection: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
paddingBottom: theme.spacing(6),
|
||||
'&>div': {
|
||||
paddingBottom: theme.spacing(3),
|
||||
},
|
||||
[theme.breakpoints.up('md')]: {
|
||||
padding: theme.spacing(2, 10),
|
||||
paddingBottom: theme.spacing(9),
|
||||
},
|
||||
[theme.breakpoints.up('lg')]: {
|
||||
padding: theme.spacing(2, 30),
|
||||
paddingBottom: theme.spacing(9),
|
||||
},
|
||||
[theme.breakpoints.up('xl')]: {
|
||||
padding: theme.spacing(2, 55),
|
||||
},
|
||||
},
|
||||
scrollerSectionOffer: {
|
||||
backgroundColor: theme.palette.secondary.main,
|
||||
},
|
||||
scrollerSectionCompany: {
|
||||
backgroundColor: theme.palette.background.grey,
|
||||
},
|
||||
card: {
|
||||
margin: theme.spacing(1),
|
||||
width: '96%',
|
||||
height: '100%',
|
||||
maxWidth: '640px',
|
||||
maxheight: '360px',
|
||||
|
||||
},
|
||||
HorizontalScroller: {
|
||||
marginTop: theme.spacing(1),
|
||||
marginBottom: theme.spacing(4),
|
||||
},
|
||||
paper: {
|
||||
margin: theme.spacing(1),
|
||||
width: '96%',
|
||||
height: '100%',
|
||||
},
|
||||
media: {
|
||||
},
|
||||
svg: {
|
||||
width: 100,
|
||||
height: 100,
|
||||
},
|
||||
polygon: {
|
||||
fill: theme.palette.common.white,
|
||||
stroke: theme.palette.divider,
|
||||
strokeWidth: 4,
|
||||
},
|
||||
img: {
|
||||
maxWidth: '100%',
|
||||
|
||||
},
|
||||
titleContainer: {
|
||||
marginTop: theme.spacing(4),
|
||||
marginBottom: theme.spacing(3),
|
||||
},
|
||||
beforeTitle: {
|
||||
fontSize: '0.8em',
|
||||
fontWeight: '300',
|
||||
textAlign: 'center',
|
||||
textTransform: 'uppercase',
|
||||
color: theme.palette.secondary.text,
|
||||
},
|
||||
title: {
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
},
|
||||
white: {
|
||||
color: theme.palette.common.white
|
||||
},
|
||||
button: {
|
||||
textTransform: 'inherit',
|
||||
margin: theme.spacing(0, 8),
|
||||
padding: theme.spacing(1.2, 2),
|
||||
[theme.breakpoints.up('sm')]: {
|
||||
margin: 'auto',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
class Index extends React.Component {
|
||||
state = {
|
||||
emphasisJobs: [],
|
||||
emphasisCompanies: []
|
||||
}
|
||||
componentDidMount() {
|
||||
localStorage.setItem("loginRedirect", "/")
|
||||
this.props.fetchEmphasisJobsRequest({ isEmphasis: 1 })
|
||||
this.props.fetchEmphasisCompaniesRequest({ isEmphasis: 1 })
|
||||
}
|
||||
UNSAFE_componentWillReceiveProps(nextProps) {
|
||||
this.setState({
|
||||
emphasisJobs: nextProps.emphasisJobs,
|
||||
emphasisCompanies: nextProps.emphasisCompanies
|
||||
})
|
||||
}
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location
|
||||
: publicRuntimeConfig.frontServerUrl ;
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl
|
||||
return (
|
||||
<Layout>
|
||||
<OgHead seo_title="Espace candidat - Plateforme de recrutement en vidéo | Talents Tube"
|
||||
seo_description="Talents Tube est la première plateforme réservée aux offres d'emploi vidéo, vidéo marque employeur et aux CV vidéos. Découvrez une nouvelle méthode de recrutement."
|
||||
seo_url={socialShareUrl}
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"
|
||||
|
||||
></OgHead>
|
||||
<BreadcrumbJsonLd
|
||||
itemListElements={[
|
||||
{
|
||||
position: 1,
|
||||
name: 'Offres',
|
||||
item: 'https://www.talentstube.com/Offres',
|
||||
},
|
||||
{
|
||||
position: 2,
|
||||
name: 'Entreprises',
|
||||
item: 'https://www.talentstube.com/Offres',
|
||||
},
|
||||
{
|
||||
position: 3,
|
||||
name: 'Espace recruteur',
|
||||
item: 'https://recruteur.talentstube.com/',
|
||||
},
|
||||
{
|
||||
position: 4,
|
||||
name: "Blog sur l'emploi",
|
||||
item: 'https://blog.talentstube.com/',
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<div className={classes.container}>
|
||||
|
||||
{/* <VideoSlider /> */}
|
||||
|
||||
<section className={classes.scrollerSection + ' ' + classes.scrollerSectionOffer}>
|
||||
<div
|
||||
className={classes.HorizontalScrollerOffre}
|
||||
>
|
||||
<div className={classes.titleContainer}>
|
||||
<Typography gutterBottom
|
||||
className={classes.beforeTitle}>
|
||||
à la une
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h1"
|
||||
className={classes.title}>
|
||||
Les offres d'emploi en <span className={classes.primary}>vidéo</span>
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
{this.state.emphasisJobs.loading ?
|
||||
(<Loader />)
|
||||
: !isEmpty(this.state.emphasisJobs.data) ? (
|
||||
<HorizontalScroller
|
||||
data={this.state.emphasisJobs.data}
|
||||
className={classes.HorizontalScroller}
|
||||
type="offre"
|
||||
>
|
||||
<TileOffre />
|
||||
</HorizontalScroller>
|
||||
) : (<NoResult text='Aucun résultat.' />)}
|
||||
</div>
|
||||
|
||||
<Button
|
||||
variant="contained"
|
||||
name="Offres"
|
||||
color="primary"
|
||||
onClick={() => Router.push('/Offres')}
|
||||
className={classes.button + ' cypButtonOffers'}
|
||||
>
|
||||
Toutes les offres
|
||||
</Button>
|
||||
</section>
|
||||
|
||||
<section className={classes.scrollerSection + ' ' + classes.scrollerSectionCompany}>
|
||||
<div
|
||||
className={classes.HorizontalScrollerOffre}
|
||||
>
|
||||
<div className={classes.titleContainer}>
|
||||
<Typography gutterBottom
|
||||
className={classes.beforeTitle}>
|
||||
à la une
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h1"
|
||||
className={classes.title}>
|
||||
Les entreprises en <span className={classes.primary}>vidéo</span>
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
{this.state.emphasisCompanies.loading ?
|
||||
(<Loader />)
|
||||
: !isEmpty(this.state.emphasisCompanies.data) ? (
|
||||
|
||||
<HorizontalScroller
|
||||
data={this.state.emphasisCompanies.data}
|
||||
className={classes.HorizontalScroller}
|
||||
type="entreprise"
|
||||
>
|
||||
<TileCompany />
|
||||
</HorizontalScroller>
|
||||
) : (<NoResult text='Aucun résultat.' />)}
|
||||
</div>
|
||||
|
||||
<Button
|
||||
|
||||
name="Entreprises"
|
||||
variant="contained"
|
||||
color="primary"
|
||||
onClick={() => Router.push('/Entreprises')}
|
||||
className={classes.button}
|
||||
>
|
||||
Toutes les entreprises
|
||||
</Button>
|
||||
</section>
|
||||
|
||||
<Footer />
|
||||
</div>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
emphasisJobs: state.emphasisJobs,
|
||||
emphasisCompanies: state.emphasisCompanies
|
||||
};
|
||||
}
|
||||
|
||||
Index.propTypes = {
|
||||
classes: PropTypes.object.isRequired,
|
||||
};
|
||||
|
||||
export default (connect(mapStateToProps, { fetchEmphasisJobsRequest, fetchEmphasisCompaniesRequest })(withStyles(styles)(Index)));
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
Reference in New Issue
Block a user