{"version":3,"file":"site_corpo_contact_form-tr0qHqYv.js","sources":["../../../engines/site_corpo/app/frontend/contact_form.js"],"sourcesContent":["import onLoadAsync from '@/shared/on_load_async.js';\n\n/* global CONTACT_CONFIG,\n CONTACT_DEPARTMENTS,\n CONTACT_PHONE_NUMBER_TEMPLATE,\n CONTACT_INDICATEURS */\n\n/* eslint-disable prefer-destructuring */\n\n/**\n * The class to use to indicate if there is an issue with a field\n * @param name {String}\n * @param fieldsWithIssues {Array}\n * @returns {String}\n */\nfunction hasIssuesClass(name, fieldsWithIssues) {\n return fieldsWithIssues.includes(name) ? ' class=\"field-with-error\"' : '';\n}\n\n/**\n * Add a 'selected' attribute for a drop-down if the option value is equal to a reference\n * Useful if an invalid form is submitted, in order to keep options selected\n * @param reference {String}\n * @param value {String}\n * @returns {string}\n */\nfunction addSelectedAttribute(reference, value) {\n return (reference === value) ? ' selected=\"selected\"' : '';\n}\n\nfunction generateCustomFieldDepartment(fieldsValues) {\n const selectedValue = fieldsValues.department;\n return `${'';\n}\n\nfunction generateCustomFieldIndicateur(fieldsValues, fieldsWithIssues) {\n const selectedValue = fieldsValues.indicateur;\n const labelIndicateurs = 'Comment avez-vous connu Enercoop ?*';\n const options = CONTACT_INDICATEURS.map((element) => ``);\n const hasIssueClass = hasIssuesClass('indicateur', fieldsWithIssues);\n\n return `\n \n \n `;\n}\n\nfunction generateCustomFieldRequiredFieldsMessage() {\n return '
* Champ Obligatoire
';\n}\n\n/**\n * Generate the content of a field\n * @param fieldConfig {Object}\n * @param fieldsValues {Object}\n * @param fieldsWithIssues {Array}\n */\nfunction getGeneratedFieldContent(fieldConfig, fieldsValues, fieldsWithIssues) {\n const fieldName = fieldConfig.name;\n const required = fieldConfig.required;\n const labelText = `${fieldConfig.label}${required ? '*' : ''}`;\n const labelHtml = ``;\n const hasIssueClass = hasIssuesClass(fieldName, fieldsWithIssues);\n\n const tagType = fieldConfig.tag;\n switch (tagType) {\n case 'input': {\n const type = fieldConfig.type;\n switch (type) {\n case 'checkbox': {\n // For checkboxes the label is after the input\n const checkBoxValue = fieldsValues[fieldName] === 'on';\n return `${labelHtml}`;\n }\n default: {\n const customTags = fieldConfig.custom_tags || {};\n const customTagsHtml = Object.entries(customTags).map((tag) => {\n const tagName = tag[0];\n const tagValue = tag[1];\n return ` ${tagName}=\"${tagValue}\"`;\n });\n return `${labelHtml}`;\n }\n }\n }\n case 'text_area':\n return `${labelHtml}`;\n default:\n throw new Error(`Unknown tag [${tagType}]`);\n }\n}\n\n/**\n * Use a custom field for the form by calling a specific javascript method\n * @param fieldConfig {Object}\n * @param fieldsValues {Object}\n * @param fieldsWithIssues {Array}\n */\nfunction getCustomFieldContent(fieldConfig, fieldsValues, fieldsWithIssues) {\n const customField = fieldConfig.custom_type;\n switch (customField) {\n case 'department':\n return generateCustomFieldDepartment(fieldsValues);\n case 'indicateur':\n return generateCustomFieldIndicateur(fieldsValues, fieldsWithIssues);\n case 'required_fields_message':\n return generateCustomFieldRequiredFieldsMessage();\n default:\n throw new Error(`Unknown custom field [${customField}]`);\n }\n}\n\n/**\n * Get the content of a field\n * @param fieldConfig {Object}\n * @param fieldSize {Number}\n * @param fieldsValues {Object}\n * @param fieldsWithIssues {Array}\n */\nfunction getFieldContent(fieldConfig, fieldSize, fieldsValues, fieldsWithIssues) {\n let fieldContent;\n const fieldOrigin = fieldConfig.origin;\n switch (fieldOrigin) {\n case 'generated':\n fieldContent = getGeneratedFieldContent(fieldConfig, fieldsValues, fieldsWithIssues);\n break;\n case 'custom':\n fieldContent = getCustomFieldContent(fieldConfig, fieldsValues, fieldsWithIssues);\n break;\n default:\n throw new Error(`Unknown origin [${fieldOrigin}]`);\n }\n return `
${fieldContent}
`;\n}\n\n/**\n * Add a form\n * @param contactForm {Element}\n * @param config {Object}\n * @param fieldsValues {Object}\n * @param fieldsWithIssues {Array}\n */\nfunction addForm(contactForm, config, fieldsValues, fieldsWithIssues) {\n const fieldsHtml = `${config.fields.map((fieldsGroup) => {\n const fieldSize = 12 / fieldsGroup.length;\n return `
${\n fieldsGroup.map((field) => getFieldContent(field, fieldSize, fieldsValues, fieldsWithIssues)).join('')\n }
`;\n }).join('')\n }`\n + '';\n contactForm.insertAdjacentHTML('beforeend', fieldsHtml);\n}\n\n/**\n * @param contactForm {Element}\n * @param encodedPhoneNumber {String}\n * @param template {String} A template message used to display the phone number.\n * Uses $PHONE_NUMBER as a placeholder.\n */\nfunction showPhone(contactForm, encodedPhoneNumber, template) {\n const phoneNumber = atob(encodedPhoneNumber);\n const message = template.replace('$PHONE_NUMBER', `${phoneNumber}`);\n const content = `
\n
\n ${message}\n
\n
`;\n contactForm.insertAdjacentHTML('beforeend', content);\n}\n\n/**\n * @param contactForm {Element}\n * @param encodedEmail {String}\n * @param template {String} A template message used to display the e-mail address.\n * Uses $EMAIL_ADDDRESS as a placeholder.\n */\nfunction showEmail(contactForm, encodedEmail, template) {\n const email = atob(encodedEmail);\n const message = template.replace('$EMAIL_ADDDRESS', `${email}`);\n const content = '
'\n + `

${message}

`\n + '
';\n contactForm.insertAdjacentHTML('beforeend', content);\n}\n\n/**\n * @param contactForm {Element}\n */\nfunction showEspaceClient(contactForm) {\n const content = `
\n
\n

Pour nous contacter par mail, veuillez vous rendre sur\n votre espace client\n

\n
\n
`;\n contactForm.insertAdjacentHTML('beforeend', content);\n}\n\n/**\n * @param contactForm {Element}\n */\nfunction showEspacePresse(contactForm) {\n const content = '
'\n + '

L\\'espace presse se trouve ici.

'\n + '
';\n contactForm.insertAdjacentHTML('beforeend', content);\n}\n\n/**\n * Clear everything in the form after the specified drop-down's parent label.\n * So when we change a drop-down, the form is cleaned and ready to insert new drop-downs\n * or fields or whatever\n * @param select {Element}\n * @param fieldsValues {Object}\n */\nfunction clearNextFields(select, fieldsValues) {\n const parentLabel = select.parentElement;\n while (parentLabel.nextSibling != null) {\n const nextSibling = parentLabel.nextSibling;\n // Save fields values so they can be restored\n nextSibling.querySelectorAll('input, textarea, select').forEach((input) => {\n if (input.type === 'checkbox') {\n // For checkboxes the value is always 'on'\n // so the 'checked' attributed must be used instead\n fieldsValues[input.name] = input.checked ? 'on' : null;\n } else if (!input.name.startsWith('contact_select_')) {\n // Don't store values from the drop-down on the top of the form.\n // If we did so, when a parent's drop-down value is changed, the child drop-down value\n // would be set to the stored value, even if it doesn't make any sense since the content\n // of the drop-down has changed.\n fieldsValues[input.name] = input.value;\n }\n });\n nextSibling.remove();\n }\n}\n\n/**\n * @param config {Object}\n * @param selectedValue {String}\n * @param contactForm {Element}\n */\nfunction dropDownProjectProdDepartment(contactForm, config, selectedValue) {\n const cooperative = CONTACT_DEPARTMENTS[selectedValue].cooperative;\n const template = CONTACT_PHONE_NUMBER_TEMPLATE;\n const encodedPhoneNumber = config.phone_numbers[cooperative];\n showPhone(contactForm, encodedPhoneNumber, template);\n}\n\n/**\n * Add a drop-down the form\n * @param contactForm {Element}\n * @param config {Object}\n * @param selectIndex {Number}\n * @param fieldsValues {Object}\n */\nfunction addDepartmentDropDown(contactForm, config, selectIndex, fieldsValues) {\n const selectId = `contact_select_${selectIndex}`;\n const currentlySelectedOptionIndex = fieldsValues[selectId];\n const dropDownHtml = `${`';\n\n contactForm.insertAdjacentHTML('beforeend', dropDownHtml);\n const select = contactForm.querySelector(`#${selectId}`);\n select.addEventListener('change', (event) => {\n clearNextFields(select, fieldsValues);\n\n const selectedValue = event.target.value;\n const onSelectAction = config.on_select;\n switch (onSelectAction) {\n case 'projet_prod_department':\n dropDownProjectProdDepartment(contactForm, config, selectedValue);\n break;\n default:\n throw new Error(`Unknown action [${onSelectAction}]`);\n }\n });\n}\n\n/**\n * Add a drop-down the form\n * @param contactForm {Element}\n * @param config {Object}\n * @param selectIndex {Number}\n * @param fieldsValues {Object}\n * @param fieldsWithIssues {Array}\n */\nfunction addDropDown(contactForm, config, selectIndex, fieldsValues, fieldsWithIssues) {\n const selectId = `contact_select_${selectIndex}`;\n const currentlySelectedOptionIndex = fieldsValues[selectId];\n // Remove the selected value so it's not used after the initial setup\n delete fieldsValues[selectId];\n const selectedAttribute = addSelectedAttribute(undefined, currentlySelectedOptionIndex);\n const dropDownHtml = `${`';\n contactForm.insertAdjacentHTML('beforeend', dropDownHtml);\n const select = contactForm.querySelector(`#${selectId}`);\n select.addEventListener('change', (event) => {\n clearNextFields(select, fieldsValues);\n\n const selectedValueIndex = parseInt(event.target.value, 10);\n const selectedConfigOnSelect = config.values[selectedValueIndex].on_select;\n const onSelectType = selectedConfigOnSelect.type;\n switch (onSelectType) {\n case 'drop-down':\n addDropDown(contactForm,\n selectedConfigOnSelect,\n selectIndex + 1,\n fieldsValues,\n fieldsWithIssues);\n break;\n case 'form':\n addForm(contactForm,\n selectedConfigOnSelect,\n fieldsValues,\n fieldsWithIssues);\n break;\n case 'department':\n addDepartmentDropDown(contactForm,\n selectedConfigOnSelect,\n selectIndex + 1,\n fieldsValues,\n fieldsWithIssues);\n break;\n case 'custom_phone':\n showPhone(contactForm,\n selectedConfigOnSelect.custom_phone_number,\n selectedConfigOnSelect.custom_phone_number_template);\n break;\n case 'custom_email':\n showEmail(contactForm,\n selectedConfigOnSelect.custom_email,\n selectedConfigOnSelect.custom_email_template);\n break;\n case 'custom_espace_client':\n showEspaceClient(contactForm);\n break;\n case 'custom_espace_presse':\n showEspacePresse(contactForm);\n break;\n default:\n throw new Error(`Unknown on select type [${onSelectType}]`);\n }\n });\n // If an option is already selected, trigger an event to display the next element\n if (currentlySelectedOptionIndex !== undefined) {\n select.dispatchEvent(new Event('change'));\n }\n}\n\nonLoadAsync(() => {\n document.querySelectorAll('#contact_form').forEach((contactForm) => {\n const fieldsValues = JSON.parse(contactForm.dataset.fieldsValues);\n const fieldsWithIssues = JSON.parse(contactForm.dataset.fieldsWithIssues);\n addDropDown(contactForm, CONTACT_CONFIG, 0, fieldsValues, fieldsWithIssues);\n\n // In case of error jump to the form\n if (fieldsWithIssues.length !== 0) {\n window.location.hash = '#form-top';\n }\n });\n});\n"],"names":["hasIssuesClass","name","fieldsWithIssues","addSelectedAttribute","reference","value","generateCustomFieldDepartment","fieldsValues","selectedValue","element","num","selectedAttribute","generateCustomFieldIndicateur","labelIndicateurs","options","generateCustomFieldRequiredFieldsMessage","getGeneratedFieldContent","fieldConfig","fieldName","required","labelText","labelHtml","hasIssueClass","tagType","type","checkBoxValue","customTags","customTagsHtml","tag","tagName","tagValue","getCustomFieldContent","customField","getFieldContent","fieldSize","fieldContent","fieldOrigin","addForm","contactForm","config","fieldsHtml","fieldsGroup","field","showPhone","encodedPhoneNumber","template","phoneNumber","content","showEmail","encodedEmail","email","showEspaceClient","showEspacePresse","clearNextFields","select","parentLabel","nextSibling","input","dropDownProjectProdDepartment","cooperative","addDepartmentDropDown","selectIndex","selectId","currentlySelectedOptionIndex","dropDownHtml","event","onSelectAction","addDropDown","index","optionSelectedAttribute","selectedValueIndex","selectedConfigOnSelect","onSelectType","onLoadAsync"],"mappings":"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"}