{"version":3,"file":"js/freeCandidateEntry-5b9573892ddc135c3bb3.js","mappings":"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","sources":["webpack:///./app/javascript/_shared/fields/Combobox.jsx","webpack:///./app/javascript/_shared/fields/FieldLabel.jsx","webpack:///./app/javascript/_shared/fields/Switcher/Switcher.tsx","webpack:///./app/javascript/espace-pro-app/src/constants/admin-theme.js","webpack:///./app/javascript/main-app/components/buttons/Btn.jsx","webpack:///./app/javascript/main-app/components/common/Link.ts","webpack:///./app/javascript/main-app/components/fields/Field.jsx","webpack:///./app/javascript/main-app/components/CandidateForm/CandidateForm.tsx","webpack:///./app/javascript/packs/freeCandidateEntry.tsx","webpack:///./app/javascript/main-app/images/select-arrow.svg","webpack:///./node_modules/humps/humps.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport map from 'lodash/map';\n\nimport FieldLabel from './FieldLabel';\nimport { FONT_FAMILY_MAIN, LIGHT_BLUE_GREY, TEXT_COLOR } from '../../main-app/theme';\nimport arrowDown from '../../main-app/images/select-arrow.svg';\nimport media from '../../main-app/utils/mediaQueries';\n\nconst InputContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: 3px;\n`;\n\nconst SelectContainer = styled.label`\n display: block;\n position: relative;\n width: ${(props) => (props.width ? props.width : 'auto')};\n margin: 0;\n font-weight: inherit;\n`;\n\nconst Select = styled.select`\n position: relative;\n height: 48px;\n width: 100%;\n padding: 0 40px 0 16px;\n border-radius: 2px;\n border: solid 1px rgba(0, 0, 0, 0.07);\n background-image: url(${arrowDown});\n background-repeat: no-repeat;\n background-size: 23px 23px;\n background-origin: border-box;\n background-position: right 6px top 13px;\n background-color: #f4f7f9;\n outline: none;\n font-size: ${(props) => props.fontSize ? props.fontSize : '14px'};\n font-weight: normal;\n line-height: 1.43;\n letter-spacing: 0.1px;\n color: ${(props) => props.value ? TEXT_COLOR : LIGHT_BLUE_GREY};\n transition: all .2s;\n font-family: ${FONT_FAMILY_MAIN};\n &::-ms-expand {\n display: none;\n }\n appearance: none;\n &:focus {\n border-color: #23c4f8 !important;\n }\n ${(props) => props.disabled\n ? `\n border: dashed 1px rgba(0, 0, 0, 0.07);\n color: #9aa1a9;\n &:hover {\n cursor: not-allowed;\n }\n `\n : `\n &:hover {\n border-color: rgba(41, 83, 102, 0.3);\n }\n `}\n ${(props) => props.valid === true\n && `\n border-color: #51e3ae !important;\n `}\n ${(props) => props.valid === false\n && `\n border-color: #f74656 !important;\n color: #f74656;\n `}\n\n ${(props) => props.icon && `\n padding-left: 42px;\n `}\n \n ${media.mobile`\n font-size: 16px;\n \n &:focus {\n font-size: 16px;\n }\n `}\n`;\n\nconst Option = styled.option`\n color: ${TEXT_COLOR};\n \n &:disabled {\n color: ${LIGHT_BLUE_GREY};\n }\n`;\n\nconst ErrorMessage = styled.div`\n font-size: 12px;\n height: 20px;\n color: #f74656;\n`;\n\nconst Image = styled.img`\n max-width: 30px;\n max-height: 30px;\n position: absolute;\n z-index: 1;\n top: 50%;\n left: 21px;\n transform: translate(-50%, -50%);\n`;\n\nclass Combobox extends Component {\n constructor(props) {\n super(props);\n this.selectRef = React.createRef();\n }\n\n render() {\n const {\n label,\n placeholder,\n options,\n disabled,\n valid,\n optionalLink,\n optionalText,\n width,\n tabIndex,\n name,\n onChange,\n onBlur,\n value,\n errorMessage,\n icon,\n fontSize,\n 'data-testid': dataTestId,\n } = this.props;\n\n return (\n <InputContainer>\n <FieldLabel\n label={label}\n optionalLink={optionalLink}\n optionalText={optionalText}\n valid={valid}\n />\n <SelectContainer width={width}>\n {icon && <Image src={icon} alt=\"dropdown icon\" />}\n <Select\n width={width}\n tabIndex={tabIndex}\n placeholder={placeholder}\n disabled={disabled}\n valid={valid}\n name={name}\n onChange={onChange}\n onBlur={onBlur}\n value={value}\n data-test-selector={`form-field-${name}`}\n ref={this.selectRef}\n icon={icon}\n fontSize={fontSize}\n data-testid={dataTestId}\n >\n {placeholder && <Option label={placeholder} disabled />}\n {map(options, (item) => (\n <Option key={`index-${item.id}`} value={item.id}>\n {item.name}\n </Option>\n ))}\n </Select>\n </SelectContainer>\n {errorMessage && <ErrorMessage>{errorMessage}</ErrorMessage>}\n </InputContainer>\n );\n }\n}\n\nCombobox.propTypes = {\n label: PropTypes.string,\n placeholder: PropTypes.string,\n options: PropTypes.array,\n optionalLink: PropTypes.string,\n optionalText: PropTypes.string,\n disabled: PropTypes.bool,\n valid: PropTypes.bool,\n width: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n value: PropTypes.any,\n errorMessage: PropTypes.string,\n tabIndex: PropTypes.string,\n icon: PropTypes.string,\n fontSize: PropTypes.string,\n 'data-testid': PropTypes.string,\n};\n\nCombobox.defaultProps = {\n label: '',\n placeholder: '',\n options: [],\n disabled: false,\n valid: null,\n width: null,\n optionalLink: '',\n optionalText: '',\n name: '',\n onChange: () => {\n },\n onBlur: () => {\n },\n value: '',\n errorMessage: '',\n tabIndex: null,\n icon: null,\n fontSize: '14px',\n 'data-testid': '',\n};\n\nexport default Combobox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport isEmpty from 'lodash/isEmpty';\nimport { FONT_FAMILY_MAIN } from '../../main-app/theme';\n\nconst InputHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 4px;\n`;\n\nconst Label = styled.label`\n font-size: 14px;\n font-weight: 600;\n line-height: 1.57;\n letter-spacing: 0.3px;\n margin-bottom: 0;\n font-family: ${FONT_FAMILY_MAIN};\n color: ${(props) => (props.valid === false ? '#f74656' : props.labelTextColor)};\n`;\n\nconst Link = styled.a`\n font-size: 12px;\n line-height: 1.33;\n letter-spacing: -0.1px;\n text-align: right;\n color: #4a90e2;\n text-decoration: none;\n`;\n\nconst OptionalText = styled.span`\n font-size: 14px;\n font-weight: 600;\n line-height: 1.57;\n letter-spacing: 0.3px;\n color: #ccd0d4;\n`;\n\nconst FieldLabel = ({\n label, optionalLink, optionalText, valid, labelTextColor,\n}) => {\n const shouldRenderLink = optionalText && optionalLink;\n const shouldRenderText = optionalText;\n const shouldRenderInputHeader = !isEmpty(label) || shouldRenderLink || shouldRenderText;\n\n return (\n shouldRenderInputHeader && (\n <InputHeader>\n <Label labelTextColor={labelTextColor} valid={valid}>{label}</Label>\n {(shouldRenderLink && (\n /* Force link to be last in keyboard navigation */\n /* eslint-disable-next-line jsx-a11y/tabindex-no-positive */\n <Link tabIndex=\"50\" href={optionalLink}>\n {optionalText}\n </Link>\n ))\n || (shouldRenderText && <OptionalText>{optionalText}</OptionalText>)}\n </InputHeader>\n )\n );\n};\n\nFieldLabel.propTypes = {\n label: PropTypes.string,\n optionalLink: PropTypes.string,\n optionalText: PropTypes.string,\n valid: PropTypes.bool,\n labelTextColor: PropTypes.string,\n};\n\nFieldLabel.defaultProps = {\n label: '',\n optionalLink: '',\n optionalText: '',\n valid: null,\n labelTextColor: '#354354',\n};\n\nexport default FieldLabel;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { SOLITUDE } from '@espacePro/constants/admin-theme';\nimport {\n FONT_FAMILY_MAIN, LIGHT_PALE_GREY, PALE_GREY, TEXT_COLOR,\n} from '../../../main-app/theme';\n\nconst Container = styled.div`\n display: inline-flex;\n border-radius: 9px;\n ${(props) => props.isInSeparateMode\n ? css`\n flex-wrap: wrap;\n `\n : css`\n background: #fff;\n box-shadow: 0 0 0 1px #f4f7f9;\n flex-wrap: nowrap;\n `},\n`;\n\nconst Label = styled.label`\n padding: 0 12px;\n font-family: ${(props) => props?.theme?.fontFamily || FONT_FAMILY_MAIN};\n font-size: ${(props) => (props.fontSize ? props.fontSize : 16)}px;\n color: ${(props) => props?.theme?.colors?.textColorMain || TEXT_COLOR};\n cursor: pointer;\n height: 37px;\n line-height: 37px;\n margin: 0;\n font-weight: normal;\n display: inline-block;\n width: 100%;\n min-width: 33px;\n max-width: 100%;\n text-align: center;\n white-space: nowrap;\n\n &:hover,\n &:focus {\n background-color: ${LIGHT_PALE_GREY};\n }\n\n svg {\n vertical-align: middle;\n margin-left: 8px;\n }\n`;\n\nconst SwitcherItem = styled.div`\n flex: 0;\n\n & + & {\n border-left: 1px solid ${SOLITUDE};\n }\n\n &:first-child {\n ${Label} {\n border-radius: 9px 0 0 9px;\n }\n }\n\n &:last-child {\n ${Label} {\n border-radius: 0 9px 9px 0;\n }\n }\n`;\n\nconst SeparateSwitcherItem = styled.div`\n margin: 0 8px 8px 0;\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);\n background-color: #ffffff;\n border-radius: 8px;\n\n ${Label} {\n border-radius: 8px;\n }\n`;\n\nconst Input = styled.input`\n position: absolute !important;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n white-space: nowrap;\n\n &:focus + ${Label} {\n background-color: ${LIGHT_PALE_GREY};\n }\n\n &:checked + ${Label} {\n background-color: ${({ theme }) => theme.colors?.switcherBackground ? theme.colors?.switcherBackground : PALE_GREY};\n box-shadow: inset 0 1px 1px 0 rgba(0, 0, 0, 0.05);\n color: ${({ theme }) => theme.colors?.switcherColor ? theme.colors?.switcherColor : '#979ea7'};\n }\n\n &:disabled + ${Label} {\n opacity: 0.7;\n cursor: not-allowed;\n }\n`;\n\ntype Item = string | boolean | number | { label: string; value: string | boolean | number };\n\ntype SwitcherTypes = {\n items: Item[];\n onChange?: () => void;\n onClick?: () => void;\n name: string;\n activeItem?: boolean | number | string | any[];\n activeItemIcon?: React.ReactNode;\n fontSize?: number;\n isMultipleChoiceAllowed?: boolean;\n isInSeparateMode?: boolean;\n disabled?: boolean;\n};\n\nconst Switcher = (props: SwitcherTypes) => {\n const {\n items,\n name,\n onChange,\n activeItem,\n fontSize,\n isMultipleChoiceAllowed,\n isInSeparateMode,\n onClick,\n activeItemIcon,\n disabled,\n } = props;\n\n const SwitcherItemElem = isInSeparateMode ? SeparateSwitcherItem : SwitcherItem;\n return (\n <Container isInSeparateMode={isInSeparateMode}>\n {items.map((item, i) => {\n let itemValue;\n let isActive;\n if (typeof item === 'object' && item !== null) {\n itemValue = item.value;\n } else {\n itemValue = item;\n }\n if (Array.isArray(activeItem)) {\n isActive = activeItem.indexOf(itemValue) > -1;\n } else {\n isActive = activeItem === itemValue;\n }\n\n return (\n <SwitcherItemElem key={itemValue}>\n <Input\n type={isMultipleChoiceAllowed ? 'checkbox' : 'radio'}\n name={name}\n id={`${name}_input-${i}`}\n value={itemValue}\n checked={isActive}\n onChange={onChange}\n onClick={onClick}\n data-test-selector={`form-field-${name}`}\n disabled={disabled}\n />\n <Label htmlFor={`${name}_input-${i}`} fontSize={fontSize}>\n {typeof item === 'object' && item !== null && item.label ? item.label : item}\n {isActive && activeItemIcon ? activeItemIcon : null}\n </Label>\n </SwitcherItemElem>\n );\n })}\n </Container>\n );\n};\n\nSwitcher.propTypes = {\n items: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number])),\n PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number]),\n }),\n ),\n ]).isRequired,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n name: PropTypes.string.isRequired,\n activeItem: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.string,\n PropTypes.array,\n ]),\n activeItemIcon: PropTypes.node,\n fontSize: PropTypes.number,\n isMultipleChoiceAllowed: PropTypes.bool,\n isInSeparateMode: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nSwitcher.defaultProps = {\n onChange: () => {},\n onClick: () => {},\n activeItem: '',\n fontSize: 16,\n isMultipleChoiceAllowed: false,\n isInSeparateMode: false,\n activeItemIcon: undefined,\n disabled: false,\n};\n\nexport { Switcher };\n","export const FONT_FAMILY_MAIN = \"'Muli', 'Trebuchet MS', Tahoma, helvetica, arial, sans-serif\";\nexport const BLUE_GRAY = '#9aa1a9';\nexport const MAIN_DARK = '#354354';\nexport const TEXT_COLOR = MAIN_DARK;\nexport const WHITE = '#ffffff';\nexport const LIGHT_PINK = '#fee7e9';\nexport const WATERMELON = '#f74656';\nexport const RAVEN = '#68727f';\nexport const COBALT = '#0153b4';\nexport const MAIN_BLUE = '#4a90e2';\nexport const ZIRCON = '#d7dadc';\nexport const SILVER = '#ccd0d4';\nexport const PALE_GRAY = '#eef1f6';\nexport const PALE_GRAY_TWO = '#fafafb';\nexport const PALE_CORNFLOWER_BLUE = '#c8ddf6';\nexport const GRAY_CHATEAU = '#979ea7';\nexport const SOLITUDE = '#f4f7f9';\nexport const FIRE_ENGINE_RED = '#d60f20';\nexport const ALICE_BLUE = '#f3f8ff';\nexport const MAIZE = '#f6b65c';\nexport const SHAMROCK = '#48d3a0';\nexport const CORAL_PINK = '#fd6e70';\nexport const GREEN_BRIGHT = '#44c655';\nexport const MEDIUM_AQUAMARINE = '#51e3ae';\nexport const LIGHT_GRAY = '#f0f3f6';\nexport const BEIGE = '#fbe5d6';\n\nexport const INPUT_BORDERS_COLOR = 'rgba(0, 0, 0, 0.07)';\nexport const INPUT_BORDERS_COLOR_ERROR = WATERMELON;\n\nexport const SUCCESS_NOTIFICATION_BG = SHAMROCK;\nexport const ALERT_NOTIFICATION_BG = LIGHT_PINK;\nexport const PROMO_NOTIFICATION_BG = COBALT;\n\nexport const SUCCESS_NOTIFICATION_TEXT_COLOR = WHITE;\nexport const ALERT_NOTIFICATION_TEXT_COLOR = WATERMELON;\nexport const PROMO_NOTIFICATION_TEXT_COLOR = WHITE;\n\nexport const STARS_FILL_COLOR = '#f6b65c';\n\nexport const HIGH_RATING_COLOR = '#44c496';\nexport const MEDIUM_RATING_COLOR = '#c28e45';\nexport const LOW_RATING_COLOR = WATERMELON;\n\nexport const MAIN_IMAGE_HIGHLIGHT = '#ffd450';\n\nexport const ERROR_COLOR = WATERMELON;\nexport const SUCCESS_COLOR = MEDIUM_AQUAMARINE;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Loader from '../loader';\nimport { FONT_FAMILY_MAIN } from '../../theme';\n\nconst MainButton = styled.button`\n cursor: pointer;\n ${(props) => props.small\n ? `\n height: 28px;\n padding: 0 11px;\n font-size: 12px;\n border-radius: 5px;\n `\n : ` \n height: 48px;\n padding: 0 24px;\n font-size: 16px;\n border-radius: 4px;\n `}\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: bold;\n transition: all 0.3s;\n border: 1px solid;\n font-family: ${({ theme }) => (theme?.fontFamily ? theme.fontFamily : FONT_FAMILY_MAIN)};\n &:hover {\n opacity: 0.9;\n }\n ${(props) => props.block\n && `\n width: 100%;\n `}\n ${(props) => {\n if (props.disabled && props.outlined) {\n return `\n background-color: #ffffff;\n border-color: #d7dadc;\n color: #ccd0d4;\n &:hover {\n opacity: 1;\n cursor: not-allowed;\n }\n `;\n }\n\n if (props.disabled && !props.outlined) {\n return `\n background-color: #d7dadc;\n border-color: #d7dadc;\n color: #9aa1a9;\n &:hover {\n opacity: 1;\n cursor: not-allowed;\n }\n `;\n }\n\n if (props.outlined) {\n return `\n background-color: #ffffff;\n border-color: ${props.color};\n color: ${props.color};\n `;\n }\n\n return `\n background-color: ${props.color};\n border-color: ${props.color};\n color: ${props.textColor}; \n `;\n }};\n`;\n\nclass Btn extends Component {\n render() {\n const {\n text,\n name,\n block,\n small,\n type,\n outlined,\n color,\n textColor,\n disabled,\n tabIndex,\n isLoading,\n onClick,\n className,\n } = this.props;\n const spinnerColor = outlined ? color : '#ffffff';\n\n return (\n <MainButton\n type={type}\n tabIndex={tabIndex}\n block={block}\n small={small}\n color={color}\n textColor={textColor}\n disabled={disabled}\n outlined={outlined}\n onClick={isLoading ? () => {} : onClick}\n data-test-selector={`button-${name}`}\n className={className}\n >\n {isLoading ? (\n <Loader\n width={small ? 18 : 47}\n height={small ? 18 : 47}\n size={0.7}\n color={spinnerColor}\n />\n ) : (\n text\n )}\n </MainButton>\n );\n }\n}\n\nBtn.propTypes = {\n type: PropTypes.string,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n name: PropTypes.string,\n block: PropTypes.bool,\n small: PropTypes.bool,\n outlined: PropTypes.bool,\n color: PropTypes.string,\n textColor: PropTypes.string,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.string,\n isLoading: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n};\n\nBtn.defaultProps = {\n type: '',\n text: 'Button',\n name: '',\n block: false,\n small: false,\n outlined: false,\n color: '#4a90e2',\n textColor: '#fff',\n disabled: false,\n tabIndex: null,\n isLoading: false,\n onClick: () => {},\n className: '',\n};\n\nexport default Btn;\n","import styled from 'styled-components';\n\nimport { MAIN_BLUE } from '../../theme';\n\nconst Link = styled.a`\n color: ${MAIN_BLUE};\n text-decoration: none;\n \n &:hover,\n &:focus {\n color: ${MAIN_BLUE};\n text-decoration: underline;\n }\n`;\n\nexport { Link };\n","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { FieldLabel } from '@shared/fields';\nimport media from '../../utils/mediaQueries';\nimport { FONT_FAMILY_MAIN } from '../../theme';\n\nconst InputContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: ${(props) => props.type !== 'hidden' ? '3px' : '0'};\n`;\n\nconst Input = styled.input`\n height: 48px;\n padding: 1px 16px;\n border-radius: 2px;\n border: solid 1px rgba(0, 0, 0, 0.07);\n background-color: ${(props) => props.backgroundColor};\n outline: none;\n font-size: 14px;\n line-height: 1.43;\n letter-spacing: 0.2px;\n color: ${(props) => props.inputTextColor};\n transition: all .2s;\n font-family: ${FONT_FAMILY_MAIN};\n &:focus {\n border-color: #23c4f8 !important;\n }\n &::placeholder {\n color: #ccd0d4; \n }\n ${(props) => props.disabled\n ? `\n border: dashed 1px rgba(0, 0, 0, 0.07);\n color: #9aa1a9;\n &:hover {\n cursor: not-allowed;\n }\n `\n : `\n &:hover {\n border-color: rgba(41, 83, 102, 0.3);\n }\n `}\n ${(props) => props.valid === true\n && `\n border-color: #51e3ae !important;\n `}\n ${(props) => props.valid === false\n && `\n border-color: #f74656 !important;\n color: #f74656;\n `}\n width: ${(props) => (props.width ? props.width : 'auto')};\n \n ${media.mobile`\n font-size: 16px;\n \n &:focus {\n font-size: 16px;\n }\n `}\n`;\n\nconst ErrorMessage = styled.div`\n font-size: 12px;\n min-height: 20px;\n color: #f74656;\n font-family: ${FONT_FAMILY_MAIN}\n`;\n\nconst ErrorEmptySpace = styled.div`\n height: 20px;\n`;\n\nconst Field = forwardRef(({\n label,\n placeholder,\n type,\n disabled,\n valid,\n optionalLink,\n optionalText,\n width,\n tabIndex,\n name,\n onChange,\n onBlur,\n value,\n errorMessage,\n min,\n step,\n backgroundColor,\n inputTextColor,\n labelTextColor,\n className,\n}, ref) => (\n <InputContainer className={className} type={type}>\n <FieldLabel\n label={label}\n optionalLink={optionalLink}\n optionalText={optionalText}\n valid={valid}\n labelTextColor={labelTextColor}\n />\n <Input\n width={width}\n type={type}\n tabIndex={tabIndex}\n placeholder={placeholder}\n disabled={disabled}\n valid={valid}\n name={name}\n onChange={onChange}\n onBlur={onBlur}\n value={value}\n data-test-selector={`form-field-${name}`}\n min={min}\n step={step}\n ref={ref}\n backgroundColor={backgroundColor}\n inputTextColor={inputTextColor}\n />\n {errorMessage ? <ErrorMessage>{errorMessage}</ErrorMessage> : type !== 'hidden' && <ErrorEmptySpace />}\n </InputContainer>\n));\n\nField.propTypes = {\n label: PropTypes.string,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n optionalLink: PropTypes.string,\n optionalText: PropTypes.string,\n disabled: PropTypes.bool,\n valid: PropTypes.bool,\n width: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n value: PropTypes.any,\n errorMessage: PropTypes.string,\n tabIndex: PropTypes.string,\n min: PropTypes.number,\n step: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n backgroundColor: PropTypes.string,\n inputTextColor: PropTypes.string,\n labelTextColor: PropTypes.string,\n className: PropTypes.string,\n};\nField.defaultProps = {\n label: '',\n placeholder: '',\n type: 'text',\n disabled: false,\n valid: null,\n width: null,\n optionalLink: '',\n optionalText: '',\n name: '',\n onChange: () => {\n },\n onBlur: () => {\n },\n value: null,\n errorMessage: '',\n tabIndex: null,\n min: null,\n step: null,\n backgroundColor: '#f4f7f9',\n inputTextColor: '#354354',\n labelTextColor: '#354354',\n className: '',\n};\n\nexport default Field;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Form, Formik } from 'formik';\nimport * as Yup from 'yup';\nimport { load } from 'recaptcha-v3';\n\nimport Field from '../fields/Field';\nimport Btn from '../buttons/Btn';\nimport {\n ERROR_COLOR, FONT_FAMILY_MAIN, GRAY_CHATEAU, SUCCESS_COLOR, TEXT_COLOR,\n} from '../../theme';\nimport stores from '../../stores';\nimport { SUBMIT_RESULT_MESSAGES } from '../../constants';\nimport { Link } from '../common/Link';\nimport media from '../../utils/mediaQueries';\n\nconst Container = styled.div`\n padding: 24px 32px 16px;\n`;\n\nconst Title = styled.div`\n font-family: ${FONT_FAMILY_MAIN};\n font-size: 24px;\n font-weight: 800;\n line-height: 1.25;\n letter-spacing: 0.2px;\n color: ${TEXT_COLOR};\n margin-bottom: 8px;\n\n ${media.mobile`\n font-size: 18px;\n `}\n`;\n\nconst SubTextContainer = styled.div`\n margin-bottom: 26px;\n\n ${media.mobile`\n margin-bottom: 16px;\n `}\n`;\n\nconst SubText = styled.div`\n font-family: ${FONT_FAMILY_MAIN};\n font-size: 16px;\n line-height: 1.19;\n letter-spacing: -0.1px;\n color: ${TEXT_COLOR};\n`;\n\nconst HelpText = styled.div`\n font-family: ${FONT_FAMILY_MAIN};\n font-size: 10px;\n line-height: 1.2;\n letter-spacing: 0.1px;\n text-align: ${(props) => props.align};\n color: ${GRAY_CHATEAU};\n margin-top: 12px;\n`;\n\nconst ResultMessage = styled.div`\n color: ${({ isSuccess }) => isSuccess ? SUCCESS_COLOR : ERROR_COLOR};\n font-size: 14px;\n font-weight: 600;\n line-height: 1.17;\n margin-top: 8px;\n`;\n\nconst CandidateSchema = Yup.object().shape({\n prenom: Yup.string()\n .matches(\n /^[A-Za-z\\u00C0-\\u00FF\\-\\ ]+$/,\n 'Ce champ ne peut contenir que des lettres, des espaces ou un tiret (-).',\n )\n .required('Ce champ est obligatoire.'),\n nom: Yup.string()\n .matches(\n /^[A-Za-z\\u00C0-\\u00FF\\-\\ ]+$/,\n 'Ce champ ne peut contenir que des lettres, des espaces ou un tiret (-).',\n )\n .required('Ce champ est obligatoire.'),\n email: Yup.string()\n .trim('Ce champ ne peut pas inclure d\\'espace au début et à la fin')\n .strict(true)\n .email('Merci de renseigner une adresse email valide.')\n .required('Ce champ est obligatoire.'),\n phone: Yup.string()\n .matches(\n /^(?:(?:)0)\\s*[1-9](?:[\\s.-]*\\d{2}){4}$/,\n 'Le téléphone doit être au format 01 23 45 67 89',\n )\n .required('Ce champ est obligatoire.'),\n});\n\nconst initialValues = {\n prenom: '',\n nom: '',\n email: '',\n phone: '',\n};\n\nconst CandidateForm = ({ cityNamespace }: { cityNamespace: string }) => {\n const [recaptchaToken, setRecaptchaToken] = useState(null);\n\n const getRecaptchaToken = useCallback(async () => {\n const recaptcha = await load(process.env.GOOGLE_RECAPTCHA_SITE_KEY);\n const token = await recaptcha.execute('candidat_request_creation');\n\n if (token) {\n setRecaptchaToken(token);\n }\n }, []);\n\n useEffect(() => {\n getRecaptchaToken();\n }, []);\n\n const onSubmit = async (data, formikBag) => {\n formikBag.setStatus('');\n\n try {\n const dataToSend = {\n ...data,\n city: cityNamespace,\n new_google_recaptcha_token: recaptchaToken,\n };\n\n await stores.userStore.createCandidateLibre(dataToSend, formikBag);\n formikBag.setStatus('success');\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n formikBag.setStatus('error');\n }\n };\n\n return (\n <Container>\n <Formik\n initialValues={initialValues}\n validationSchema={CandidateSchema}\n onSubmit={onSubmit}\n >\n {({\n values, errors, touched, handleChange, handleBlur, isSubmitting, status,\n }) => (\n <Form>\n <Title>Laisse nous t’aider</Title>\n <SubTextContainer>\n <SubText>\n {'On vous met en relation avec une '}\n <Link\n href=\"/a-propos/auto-ecole-qualite\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n auto-école de qualité\n </Link>\n , proche de chez vous !\n </SubText>\n </SubTextContainer>\n <Field\n type=\"text\"\n label=\"Prénom\"\n placeholder=\"Martin\"\n name=\"prenom\"\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.prenom}\n valid={touched.prenom && !errors.prenom}\n errorMessage={\n errors.prenom && touched.prenom ? errors.prenom : null\n }\n />\n <Field\n type=\"text\"\n label=\"Nom\"\n placeholder=\"Dupont\"\n name=\"nom\"\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.nom}\n valid={touched.nom && !errors.nom}\n errorMessage={errors.nom && touched.nom ? errors.nom : null}\n />\n <Field\n type=\"text\"\n label=\"Email\"\n placeholder=\"exemple@exemple.com\"\n name=\"email\"\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.email}\n valid={touched.email && !errors.email}\n errorMessage={errors.email && touched.email ? errors.email : null}\n />\n <Field\n type=\"text\"\n label=\"Numéro de téléphone\"\n placeholder=\"01 23 45 67 89\"\n name=\"phone\"\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.phone}\n valid={touched.phone && !errors.phone}\n errorMessage={errors.phone && touched.phone ? errors.phone : null}\n />\n <Btn\n type=\"submit\"\n text=\"Envoyer\"\n block\n disabled={isSubmitting || status === 'success'}\n isLoading={isSubmitting}\n />\n {status && <ResultMessage isSuccess={status === 'success'}>{SUBMIT_RESULT_MESSAGES[status]}</ResultMessage>}\n <HelpText align=\"left\">\n {'Votre demande et vos coordonnées seront transmises à l’auto-école. Pour plus d’informations, consultez notre '}\n <Link\n href=\"/a-propos/donnees-personnelles\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Politique de protection des données personnelles.\n </Link>\n </HelpText>\n </Form>\n )}\n </Formik>\n </Container>\n );\n};\n\nexport { CandidateForm };\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { CandidateForm } from '../main-app/components/CandidateForm';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const element = document.querySelector('#react-candidate-form') as HTMLElement | null;\n\n if (element) {\n const { cityNamespace } = element.dataset;\n\n const root = createRoot(element);\n root.render(<CandidateForm cityNamespace={cityNamespace} />);\n }\n});\n","export default __webpack_public_path__ + \"43fcee2bfb9e25c610ee1a1475fa9c6d.svg\";","// =========\n// = humps =\n// =========\n// Underscore-to-camelCase converter (and vice versa)\n// for strings and object keys\n\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n\n\n;(function(global) {\n\n var _processKeys = function(convert, obj, options) {\n if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n return obj;\n }\n\n var output,\n i = 0,\n l = 0;\n\n if(_isArray(obj)) {\n output = [];\n for(l=obj.length; i<l; i++) {\n output.push(_processKeys(convert, obj[i], options));\n }\n }\n else {\n output = {};\n for(var key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, key)) {\n output[convert(key, options)] = _processKeys(convert, obj[key], options);\n }\n }\n }\n return output;\n };\n\n // String conversion methods\n\n var separateWords = function(string, options) {\n options = options || {};\n var separator = options.separator || '_';\n var split = options.split || /(?=[A-Z])/;\n\n return string.split(split).join(separator);\n };\n\n var camelize = function(string) {\n if (_isNumerical(string)) {\n return string;\n }\n string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n };\n\n var pascalize = function(string) {\n var camelized = camelize(string);\n // Ensure 1st char is always uppercase\n return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n };\n\n var decamelize = function(string, options) {\n return separateWords(string, options).toLowerCase();\n };\n\n // Utilities\n // Taken from Underscore.js\n\n var toString = Object.prototype.toString;\n\n var _isFunction = function(obj) {\n return typeof(obj) === 'function';\n };\n var _isObject = function(obj) {\n return obj === Object(obj);\n };\n var _isArray = function(obj) {\n return toString.call(obj) == '[object Array]';\n };\n var _isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n };\n var _isRegExp = function(obj) {\n return toString.call(obj) == '[object RegExp]';\n };\n var _isBoolean = function(obj) {\n return toString.call(obj) == '[object Boolean]';\n };\n\n // Performant way to determine if obj coerces to a number\n var _isNumerical = function(obj) {\n obj = obj - 0;\n return obj === obj;\n };\n\n // Sets up function which handles processing keys\n // allowing the convert function to be modified by a callback\n var _processor = function(convert, options) {\n var callback = options && 'process' in options ? options.process : options;\n\n if(typeof(callback) !== 'function') {\n return convert;\n }\n\n return function(string, options) {\n return callback(string, convert, options);\n }\n };\n\n var humps = {\n camelize: camelize,\n decamelize: decamelize,\n pascalize: pascalize,\n depascalize: decamelize,\n camelizeKeys: function(object, options) {\n return _processKeys(_processor(camelize, options), object);\n },\n decamelizeKeys: function(object, options) {\n return _processKeys(_processor(decamelize, options), object, options);\n },\n pascalizeKeys: function(object, options) {\n return _processKeys(_processor(pascalize, options), object);\n },\n depascalizeKeys: function () {\n return this.decamelizeKeys.apply(this, arguments);\n }\n };\n\n if (typeof define === 'function' && define.amd) {\n define(humps);\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = humps;\n } else {\n global.humps = humps;\n }\n\n})(this);\n"],"names":["InputContainer","styled","div","SelectContainer","label","props","width","Select","select","arrowDown","fontSize","value","TEXT_COLOR","LIGHT_BLUE_GREY","FONT_FAMILY_MAIN","disabled","valid","icon","media","mobile","Option","option","ErrorMessage","Image","img","Combobox","Component","constructor","super","this","selectRef","React","render","placeholder","options","optionalLink","optionalText","tabIndex","name","onChange","onBlur","errorMessage","dataTestId","src","alt","ref","map","item","key","id","defaultProps","InputHeader","Label","labelTextColor","Link","a","OptionalText","span","FieldLabel","shouldRenderLink","shouldRenderText","isEmpty","href","Container","isInSeparateMode","css","theme","fontFamily","colors","textColorMain","LIGHT_PALE_GREY","SwitcherItem","SOLITUDE","SeparateSwitcherItem","Input","input","switcherBackground","PALE_GREY","switcherColor","Switcher","items","activeItem","isMultipleChoiceAllowed","onClick","activeItemIcon","SwitcherItemElem","i","itemValue","isActive","Array","isArray","indexOf","type","checked","htmlFor","undefined","BLUE_GRAY","MAIN_DARK","WHITE","LIGHT_PINK","WATERMELON","RAVEN","COBALT","MAIN_BLUE","ZIRCON","SILVER","PALE_GRAY","PALE_GRAY_TWO","PALE_CORNFLOWER_BLUE","GRAY_CHATEAU","FIRE_ENGINE_RED","ALICE_BLUE","MAIZE","SHAMROCK","CORAL_PINK","GREEN_BRIGHT","MEDIUM_AQUAMARINE","LIGHT_GRAY","BEIGE","INPUT_BORDERS_COLOR","INPUT_BORDERS_COLOR_ERROR","SUCCESS_NOTIFICATION_BG","ALERT_NOTIFICATION_BG","PROMO_NOTIFICATION_BG","SUCCESS_NOTIFICATION_TEXT_COLOR","ALERT_NOTIFICATION_TEXT_COLOR","PROMO_NOTIFICATION_TEXT_COLOR","STARS_FILL_COLOR","HIGH_RATING_COLOR","MEDIUM_RATING_COLOR","LOW_RATING_COLOR","MAIN_IMAGE_HIGHLIGHT","ERROR_COLOR","SUCCESS_COLOR","MainButton","button","small","block","outlined","color","textColor","Btn","text","isLoading","className","spinnerColor","height","size","backgroundColor","inputTextColor","ErrorEmptySpace","Field","forwardRef","min","step","propTypes","PropTypes","Title","SubTextContainer","SubText","HelpText","align","ResultMessage","isSuccess","CandidateSchema","Yup","shape","prenom","matches","required","nom","email","trim","strict","phone","initialValues","CandidateForm","cityNamespace","useState","recaptchaToken","setRecaptchaToken","getRecaptchaToken","useCallback","async","recaptcha","load","process","token","execute","useEffect","validationSchema","onSubmit","data","formikBag","setStatus","dataToSend","city","new_google_recaptcha_token","stores","userStore","createCandidateLibre","e","console","error","values","errors","touched","handleChange","handleBlur","isSubmitting","status","target","rel","SUBMIT_RESULT_MESSAGES","document","addEventListener","element","querySelector","dataset","createRoot","_processKeys","camelize","pascalize","decamelize","toString","_isFunction","_isObject","_isArray","_isDate","_isRegExp","_isBoolean","_isNumerical","_processor","humps","convert","obj","output","l","length","push","Object","prototype","hasOwnProperty","call","string","replace","match","chr","toUpperCase","substr","toLowerCase","camelized","separator","split","join","separateWords","callback","depascalize","camelizeKeys","object","decamelizeKeys","pascalizeKeys","depascalizeKeys","apply","arguments"],"sourceRoot":""}