templates/index/fragments/elite/recherche_par_profil.html.twig line 1

Open in your IDE?
  1. <link rel="stylesheet" href="{{ asset('build/css/annonces/elite/list_recherche_standard.css') }}">
  2. <link rel="stylesheet" href="{{ asset('build/css/annonces/elite/liste_profils_strategiques.css') }}">
  3. <input type="hidden" id="identifiant_profil" name="identifiant_profil" value=""/>
  4. <script>
  5.     function toggleDropdown(dropdownId) {
  6.         const dropdown = document.getElementById(dropdownId);
  7.         const header = dropdown ? dropdown.previousElementSibling : null;
  8.         // Fermer toutes les autres dropdowns
  9.         document.querySelectorAll('.dropdown-list').forEach(otherDropdown => {
  10.             if (otherDropdown.id !== dropdownId) {
  11.                 otherDropdown.classList.remove('active');
  12.                 const otherHeader = otherDropdown.previousElementSibling;
  13.                 if (otherHeader && otherHeader.classList.contains('select-header')) {
  14.                     otherHeader.classList.remove('active');
  15.                 }
  16.             }
  17.         });
  18.         // Toggle la dropdown ciblée
  19.         if (dropdown) {
  20.             dropdown.classList.toggle('active');
  21.         }
  22.         if (header && header.classList.contains('select-header')) {
  23.             header.classList.toggle('active');
  24.         }
  25.     }
  26.     function selectOption(element, dropdownId) {
  27.         const dropdown = document.getElementById(dropdownId);
  28.         if (!dropdown) {
  29.             return;
  30.         }
  31.         if (element) {
  32.             let identifiantProfil = element.getAttribute('data-key');
  33.             const inputHidden = document.getElementById("identifiant_profil");
  34.             if (inputHidden) {
  35.                 inputHidden.value = identifiantProfil;
  36.             }
  37.         }
  38.         // Retirer la sélection précédente dans cette dropdown uniquement
  39.         dropdown.querySelectorAll('.option-item').forEach(item => {
  40.             item.classList.remove('selected');
  41.         });
  42.         // Ajouter la sélection à l'élément cliqué
  43.         element.classList.add('selected');
  44.         // Trouver le header correspondant à cette dropdown
  45.         const header = dropdown.previousElementSibling;
  46.         if (header && header.classList.contains('select-header')) {
  47.             const text = element.textContent.trim().replace('→', '').trim();
  48.             header.innerHTML = `<span class="selected-value">${text}</span>`;
  49.         }
  50.         // Fermer la dropdown
  51.         toggleDropdown(dropdownId);
  52.     }
  53.     // Fermer les dropdowns si on clique ailleurs
  54.     document.addEventListener('click', function (event) {
  55.         const customSelects = document.querySelectorAll('.custom-select');
  56.         let clickedInsideAnySelect = false;
  57.         // Vérifier si le clic est à l'intérieur d'une des custom-select
  58.         customSelects.forEach(customSelect => {
  59.             if (customSelect.contains(event.target)) {
  60.                 clickedInsideAnySelect = true;
  61.             }
  62.         });
  63.         // Si le clic est en dehors de toutes les custom-select, fermer toutes les dropdowns
  64.         if (!clickedInsideAnySelect) {
  65.             document.querySelectorAll('.dropdown-list').forEach(dropdown => {
  66.                 dropdown.classList.remove('active');
  67.                 const header = dropdown.previousElementSibling;
  68.                 if (header && header.classList.contains('select-header')) {
  69.                     header.classList.remove('active');
  70.                 }
  71.             });
  72.         }
  73.         if (!clickedInsideAnySelect) {
  74.             let   dropdownId = null;
  75.             dropdownId = document.getElementById('dropdown2');
  76.             if (dropdownId) {
  77.                 dropdownId.classList.remove('active');
  78.             }
  79.             dropdownId = document.getElementById('dropdown3');
  80.             if (dropdownId) {
  81.                 dropdownId.classList.remove('active');
  82.             }
  83.         }
  84.     });
  85.     // Fonction utilitaire pour obtenir la valeur sélectionnée d'une dropdown
  86.     function getSelectedValue(dropdownId) {
  87.         const dropdown = document.getElementById(dropdownId);
  88.         if (!dropdown)
  89.         {
  90.             return null;
  91.         }
  92.         const selectedOption = dropdown.querySelector('.option-item.selected');
  93.         return selectedOption ? selectedOption.textContent.trim().replace('→', '').trim() : null;
  94.     }
  95.     // Fonction utilitaire pour définir la valeur sélectionnée d'une dropdown
  96.     function setSelectedValue(dropdownId, value) {
  97.         const dropdown = document.getElementById(dropdownId);
  98.         if (!dropdown)
  99.         {
  100.             return;
  101.         }
  102.         const options = dropdown.querySelectorAll('.option-item');
  103.         const header = dropdown.previousElementSibling;
  104.         options.forEach(option => {
  105.             const optionText = option.textContent.trim().replace('→', '').trim();
  106.             if (optionText === value) {
  107.                 // Retirer les sélections précédentes
  108.                 dropdown.querySelectorAll('.option-item').forEach(item => {
  109.                     item.classList.remove('selected');
  110.                 });
  111.                 // Sélectionner cette option
  112.                 option.classList.add('selected');
  113.                 // Mettre à jour le header
  114.                 if (header && header.classList.contains('select-header')) {
  115.                     header.innerHTML = `<span class="selected-value">${value}</span>`;
  116.                 }
  117.             }
  118.         });
  119.     }
  120.     function resetSelection(selectId) {
  121.         // Retirer toutes les sélections
  122.         document.querySelectorAll(`#${selectId} .option-item`).forEach(item => {
  123.             item.classList.remove('selected');
  124.         });
  125.         // Réinitialiser le header avec le texte par défaut
  126.         const header = document.querySelector(`#${selectId} .select-header`);
  127.         const placeholderText = selectId === 'select1'
  128.                 ? 'Voir tous les critères disponibles'
  129.                 : 'Voir tous les profils stratégiques';
  130.         header.innerHTML = `<span class="placeholder">${placeholderText}</span>`;
  131.         const inputHidden = document.getElementById("identifiant_profil");
  132.         if (inputHidden) {
  133.             inputHidden.value = "";
  134.         }
  135.         toggleDropdown("dropdown2");
  136.     }
  137. </script>
  138. {% if    app.user|default     %}  
  139.     {% if  app.user is hasService(elite_provider.codeServices)  %} 
  140.         {# OK !! #}
  141.     {% else    %}   
  142.         <script>
  143.             document.addEventListener('DOMContentLoaded', function () {
  144.                 const btnRechercher = document.getElementById('rechercher');
  145.                 const inputHidden = document.getElementById("identifiant_profil");
  146.                 if (inputHidden && btnRechercher) {
  147.                     btnRechercher.addEventListener('click', function (e) {
  148.                         if (inputHidden.value) {
  149.                             e.preventDefault(); // Empêche la soumission du formulaire
  150.                             // AUTHENTIFIÉ non autorisé
  151.                             $("#ModalElite").modal("show");
  152.                             return false;
  153.                         } else {
  154.                             //const form = document.getElementById("form_reprendre");
  155.                             //form.submit();
  156.                         }
  157.                     });
  158.                 }
  159.             });
  160.         </script>
  161.     {% endif    %} 
  162. {% else    %} 
  163.     <script>
  164.         document.addEventListener('DOMContentLoaded', function () {
  165.             const btnRechercher = document.getElementById('rechercher');
  166.             const inputHidden = document.getElementById("identifiant_profil");
  167.             if (inputHidden && btnRechercher) {
  168.                 btnRechercher.addEventListener('click', function (e) {
  169.                     if (inputHidden.value) {
  170.                         e.preventDefault(); // Empêche la soumission du formulaire
  171.                         // AUTHENTIFIÉ non autorisé
  172.                         $("#ModalElite").modal("show");
  173.                         return false;
  174.                     } else {
  175.                         //const form = document.getElementById("form_reprendre");
  176.                         //form.submit();
  177.                     }
  178.                 });
  179.             }
  180.         });
  181.     </script>
  182. {% endif    %}
  183. {% set profils = elite_provider.listProfilsStrategiques %}
  184. <div class="form-row">
  185.     <div class="col-10 offset-1 col-md-4 offset-md-1 mr-2 mt-2 pt-2 text-left text-md-right nowrap_custom">
  186.         Quel type d’entreprise vous intéresse ? 
  187.     </div>
  188.     <div class="col-10 offset-1 col-md-5 offset-md-0 mt-2 input-group">
  189.         <div class="custom-select restore-native" id="select2" style="border: 1px solid #003366;">
  190.             <div class="select-header d-flex" onclick="toggleDropdown('dropdown2');" >
  191.                 <div class="placeholder"  style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; ">Choisissez parmi 14 profils</div>
  192.                 <div class="logo d-none d-lg-block" style="flex-basis:30%">&nbsp;</div>
  193.             </div>
  194.             <div class="select-dropdown" id="dropdown2">
  195.                 <div class="reset-option" onclick="resetSelection('select2');">
  196.                     <i class="fas fa-times-circle reset-icon"></i>
  197.                     <span>Réinitialiser la sélection</span>
  198.                 </div>
  199.                 {% for categorie,profil in  profils %}
  200.                     <div class="option-category">
  201.                         {{ categorie }}
  202.                     </div>
  203.                     {% for k,p  in  profil %} 
  204.                         <div class="option-item" data-key="{{ k }}" onclick="selectOption(this, 'dropdown2');">
  205.                             • {{ p[0] }}
  206.                         </div>
  207.                     {% endfor  %}
  208.                 {% endfor  %} 
  209.             </div>
  210.         </div>
  211.     </div>
  212.     
  213.     <div class="col-12 col-md-1 text-center text-md-left mt-2 d-md-none">
  214.         <a href="{{ lienElitePresentation }}" title="FUSACQ Elite">
  215.             <img src="/FUSACQ2020/images/fusacq_elite.gif" alt="FUSACQ Elite">
  216.         </a>
  217.     </div>
  218. </div>
  219. {% include 'elite/includes/elite_profil_access.html.twig' %}