{"id":555,"date":"2026-02-21T19:43:07","date_gmt":"2026-02-21T18:43:07","guid":{"rendered":"https:\/\/www.ingilog.com\/sugardelta_prod\/?page_id=555"},"modified":"2026-05-25T17:08:48","modified_gmt":"2026-05-25T15:08:48","slug":"directory","status":"publish","type":"page","link":"https:\/\/www.ingilog.com\/sugardelta_prod\/directory\/","title":{"rendered":"Directory"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"555\" class=\"elementor elementor-555\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d8df44 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"5d8df44\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d19966e elementor-widget elementor-widget-html\" data-id=\"d19966e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\n  SUGAR DELTA \u2014 Liste des Membres\n  Widget Elementor HTML\n  Requiert : window.sdMembersConfig (injecte par WPCode), jQuery\n============================================================ -->\n\n<style>\n:root{\n  --sm-bg:#0d1117;--sm-surface:#161b22;--sm-border:#30363d;\n  --sm-accent:#238636;--sm-blue:#1f6feb;--sm-danger:#da3633;\n  --sm-text:#ffffff;--sm-muted:#8b949e;--sm-radius:8px;\n  --sm-shadow:0 4px 24px rgba(0,0,0,.5);\n}\n#sd-members{\n  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  background:var(--sm-bg);color:var(--sm-text);\n  padding:24px 32px;border-radius:var(--sm-radius);\n}\n\n\/* Barre outils *\/\n.sm-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap;}\n.sm-search-wrap{flex:1;min-width:180px;position:relative;}\n.sm-search{\n  width:100%;background:var(--sm-surface);border:1px solid var(--sm-border);\n  border-radius:20px;color:var(--sm-text);padding:8px 16px 8px 38px;\n  font-size:.9rem;outline:none;transition:border-color .15s;\n}\n.sm-search:focus{border-color:var(--sm-blue);}\n.sm-search::placeholder{color:var(--sm-muted);}\n.sm-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--sm-muted);pointer-events:none;}\n.sm-filter{\n  background:var(--sm-surface);border:1px solid var(--sm-border);\n  border-radius:20px;color:var(--sm-text);padding:8px 14px;\n  font-size:.85rem;outline:none;cursor:pointer;\n}\n.sm-btn-manage{\n  display:inline-flex;align-items:center;gap:6px;\n  padding:8px 18px;background:var(--sm-blue);color:#fff;\n  border:none;border-radius:var(--sm-radius);cursor:pointer;\n  font-size:.88rem;font-weight:600;white-space:nowrap;\n  transition:filter .15s;\n}\n.sm-btn-manage:hover{filter:brightness(1.1);}\n\n\/* Compteur *\/\n.sm-count{font-size:.78rem;color:var(--sm-muted);margin-bottom:14px;}\n\n\/* Sections pays *\/\n.sm-country-section{margin-bottom:28px;}\n.sm-country-header{\n  display:flex;align-items:center;gap:10px;\n  padding:8px 0;margin-bottom:10px;\n  border-bottom:1px solid var(--sm-border);\n  cursor:pointer;user-select:none;\n}\n.sm-country-header h3{\n  font-size:.82rem;font-weight:700;color:var(--sm-muted);\n  text-transform:uppercase;letter-spacing:.08em;flex:1;\n}\n.sm-country-header .sm-count-badge{\n  background:rgba(255,255,255,.08);color:var(--sm-muted);\n  padding:2px 8px;border-radius:10px;font-size:.72rem;font-weight:600;\n}\n.sm-country-header .sm-chevron{\n  color:var(--sm-muted);font-size:.8rem;transition:transform .2s;\n}\n.sm-country-header.collapsed .sm-chevron{transform:rotate(-90deg);}\n.sm-country-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;}\n.sm-country-body.hidden{display:none;}\n\n\/* Carte membre *\/\n.sm-member-card{\n  background:var(--sm-surface);border:1px solid var(--sm-border);\n  border-radius:var(--sm-radius);padding:12px 14px;\n  display:flex;align-items:flex-start;gap:10px;\n  transition:border-color .15s;\n}\n.sm-member-card:hover{border-color:rgba(31,111,235,.4);}\n.sm-member-id{\n  font-size:.78rem;font-weight:700;color:var(--sm-blue);\n  white-space:nowrap;font-family:monospace;letter-spacing:.03em;\n  flex-shrink:0;padding-top:1px;\n}\n.sm-member-info{flex:1;min-width:0;}\n.sm-member-name{font-size:.9rem;font-weight:600;color:#fff;margin-bottom:2px;}\n.sm-member-comment{font-size:.75rem;color:var(--sm-muted);line-height:1.4;word-break:break-word;}\n.sm-member-comment.rip{color:#f85149;font-weight:600;}\n.sm-member-comment.role{color:#3fb950;}\n\/* Flag *\/\n.sm-flag{width:16px;height:12px;border-radius:2px;flex-shrink:0;margin-top:3px;}\n\n\/* Loading *\/\n.sm-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px;color:var(--sm-muted);}\n.sm-spinner{width:18px;height:18px;border:2px solid var(--sm-border);border-top-color:var(--sm-blue);border-radius:50%;animation:smSpin .7s linear infinite;}\n@keyframes smSpin{to{transform:rotate(360deg);}}\n\n\/* ---- Modal ---- *\/\n.sm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.78);backdrop-filter:blur(3px);z-index:9999;display:flex;align-items:flex-start;justify-content:center;padding:20px;overflow-y:auto;}\n.sm-overlay.hidden{display:none;}\n.sm-modal{background:var(--sm-surface);border:1px solid var(--sm-border);border-radius:12px;width:100%;max-width:760px;box-shadow:var(--sm-shadow);margin:auto;}\n.sm-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--sm-border);position:sticky;top:0;background:var(--sm-surface);z-index:1;border-radius:12px 12px 0 0;}\n.sm-modal-head h3{font-size:1rem;font-weight:700;color:#fff;}\n.sm-modal-close{background:none;border:none;color:var(--sm-muted);cursor:pointer;font-size:1.4rem;line-height:1;padding:2px 6px;}\n.sm-modal-close:hover{color:#fff;}\n.sm-modal-body{padding:24px;display:grid;grid-template-columns:1fr 1fr;gap:24px;}\n\n\/* Panel gauche : recherche\/suppression *\/\n.sm-panel-title{font-size:.78rem;font-weight:700;color:var(--sm-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;}\n.sm-search-members{\n  background:#0d1117;border:1px solid var(--sm-border);border-radius:6px;\n  color:#fff;padding:9px 12px;font-size:.88rem;width:100%;outline:none;\n  transition:border-color .15s;margin-bottom:10px;\n}\n.sm-search-members:focus{border-color:var(--sm-blue);}\n.sm-search-members::placeholder{color:var(--sm-muted);}\n.sm-manage-list{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;}\n.sm-manage-row{display:flex;align-items:center;gap:8px;background:#0d1117;border:1px solid var(--sm-border);border-radius:6px;padding:8px 10px;}\n.sm-manage-row .mid{font-size:.78rem;font-weight:700;color:var(--sm-blue);font-family:monospace;flex-shrink:0;}\n.sm-manage-row .mname{font-size:.84rem;flex:1;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n.sm-remove-btn{background:rgba(218,54,51,.15);border:1px solid rgba(218,54,51,.4);color:#f85149;border-radius:4px;cursor:pointer;padding:3px 8px;font-size:.75rem;font-weight:600;white-space:nowrap;flex-shrink:0;transition:background .15s;}\n.sm-remove-btn:hover{background:rgba(218,54,51,.3);}\n.sm-no-results{color:var(--sm-muted);font-size:.82rem;text-align:center;padding:20px;}\n\n\/* Panel droit : ajout *\/\n.sm-add-form{display:flex;flex-direction:column;gap:12px;}\n.sm-field{display:flex;flex-direction:column;gap:4px;}\n.sm-field label{font-size:.73rem;font-weight:700;color:var(--sm-muted);text-transform:uppercase;letter-spacing:.05em;}\n.sm-field input,.sm-field textarea{\n  background:#0d1117;border:1px solid var(--sm-border);border-radius:6px;\n  color:#fff;padding:9px 12px;font-size:.88rem;outline:none;width:100%;\n  transition:border-color .15s;font-family:inherit;\n}\n.sm-field input:focus,.sm-field textarea:focus{border-color:var(--sm-blue);}\n.sm-field input::placeholder,.sm-field textarea::placeholder{color:var(--sm-muted);}\n.sm-field textarea{resize:vertical;min-height:70px;}\n.sm-hint{font-size:.72rem;color:var(--sm-muted);margin-top:2px;}\n.sm-add-btn{\n  padding:10px;background:var(--sm-accent);color:#fff;border:none;\n  border-radius:var(--sm-radius);cursor:pointer;font-size:.9rem;font-weight:700;\n  transition:filter .15s;margin-top:4px;\n}\n.sm-add-btn:hover{filter:brightness(1.1);}\n\n\/* Toast *\/\n.sm-toast{position:fixed;bottom:26px;right:26px;z-index:99999;max-width:300px;padding:12px 18px;border-radius:var(--sm-radius);font-size:.85rem;font-weight:500;box-shadow:var(--sm-shadow);animation:smSlide .3s ease;}\n.sm-toast-ok{background:#238636;color:#fff;}\n.sm-toast-err{background:#da3633;color:#fff;}\n@keyframes smSlide{from{transform:translateY(14px);opacity:0;}}\n\n@media(max-width:640px){\n  #sd-members{padding:16px;}\n  .sm-modal-body{grid-template-columns:1fr;}\n  .sm-country-body{grid-template-columns:1fr;}\n}\n<\/style>\n\n<div id=\"sd-members\">\n  <div class=\"sm-toolbar\">\n    <div class=\"sm-search-wrap\">\n      <svg class=\"sm-search-icon\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><path d=\"M21 21l-4.35-4.35\"\/><\/svg>\n      <input type=\"text\" class=\"sm-search\" id=\"sm-search\" placeholder=\"Rechercher un indicatif ou un nom...\">\n    <\/div>\n    <select class=\"sm-filter\" id=\"sm-country-filter\">\n      <option value=\"\">Tous les pays<\/option>\n    <\/select>\n    <button class=\"sm-btn-manage\" id=\"sm-btn-manage\" style=\"display:none\">\n      <svg width=\"13\" height=\"13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" viewBox=\"0 0 24 24\"><path d=\"M12 20h9M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z\"\/><\/svg>\n      Ajouter \/ Retirer\n    <\/button>\n  <\/div>\n  <div class=\"sm-count\" id=\"sm-count\"><\/div>\n  <div id=\"sm-content\">\n    <div class=\"sm-loading\"><div class=\"sm-spinner\"><\/div> Chargement...<\/div>\n  <\/div>\n<\/div>\n\n<!-- MODAL GESTION -->\n<div class=\"sm-overlay hidden\" id=\"sm-overlay\">\n  <div class=\"sm-modal\">\n    <div class=\"sm-modal-head\">\n      <h3>Gestion des membres<\/h3>\n      <button class=\"sm-modal-close\" id=\"sm-modal-close\">&#215;<\/button>\n    <\/div>\n    <div class=\"sm-modal-body\">\n\n      <!-- Gauche : recherche \/ suppression -->\n      <div>\n        <div class=\"sm-panel-title\">Rechercher et retirer<\/div>\n        <input type=\"text\" class=\"sm-search-members\" id=\"sm-manage-search\" placeholder=\"Indicatif ou nom...\">\n        <div class=\"sm-manage-list\" id=\"sm-manage-list\">\n          <div class=\"sm-no-results\">Tapez pour rechercher<\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Droite : ajout -->\n      <div>\n        <div class=\"sm-panel-title\">Ajouter un membre<\/div>\n        <div class=\"sm-add-form\">\n          <div class=\"sm-field\">\n            <label>Identifiant *<\/label>\n            <input type=\"text\" id=\"sm-add-id\" placeholder=\"Ex: 163SD999\" style=\"text-transform:uppercase\">\n            <span class=\"sm-hint\">Format : [prefix]SD[numero] ex: 163SD010<\/span>\n          <\/div>\n          <div class=\"sm-field\">\n            <label>Nom *<\/label>\n            <input type=\"text\" id=\"sm-add-name\" placeholder=\"Prenom ou nom\">\n          <\/div>\n          <div class=\"sm-field\">\n            <label>Commentaire \/ QSL info<\/label>\n            <textarea id=\"sm-add-comment\" placeholder=\"Adresse, QSL via ..., RIP date, role...\"><\/textarea>\n          <\/div>\n          <button class=\"sm-add-btn\" id=\"sm-add-btn\">\n            + Ajouter ce membre\n          <\/button>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function($) {\n\nvar AJAX      = window.location.origin + '\/sugardelta_prod\/wp-admin\/admin-ajax.php';\nvar NONCE     = '';\nvar CAN_MANAGE= false;\nvar allMembers = [];\nvar filteredMembers = [];\nvar flagCache = {};\n\n\/* Init avec polling sur sdMembersConfig *\/\n$(document).ready(function() {\n  var tries = 0;\n  var wait = setInterval(function() {\n    tries++;\n    var cfg = window.sdMembersConfig;\n    if (cfg && cfg.nonce) {\n      clearInterval(wait);\n      AJAX       = cfg.ajaxUrl || AJAX;\n      NONCE      = cfg.nonce;\n      CAN_MANAGE = !!cfg.canManage;\n      if (CAN_MANAGE) $('#sm-btn-manage').show();\n      loadMembers();\n    } else if (tries > 40) {\n      clearInterval(wait);\n      \/* Dernier recours : tenter avec l'URL construite depuis window.location *\/\n      AJAX = window.location.origin + '\/sugardelta_prod\/wp-admin\/admin-ajax.php';\n      loadMembers();\n    }\n  }, 100);\n  bindEvents();\n});\n\n\/* ---- Drapeaux depuis prefixe pays ----------------------- *\/\nvar PREFIX_FLAGS = {\n  '1':'it',\n  '2':'us',\n  '3':'br',\n  '4':'ar',\n  '5':'ve',\n  '6':'co',\n  '8':'pe',\n  '9':'ca',\n  '10':'mx',\n  '11':'pr',\n  '12':'uy',\n  '13':'de',\n  '14':'fr',\n  '15':'ch',\n  '16':'be',\n  '17':'us',\n  '18':'gr',\n  '19':'nl',\n  '20':'no',\n  '21':'se',\n  '22':'gf',\n  '23':'jm',\n  '24':'pa',\n  '25':'jp',\n  '26':'gb',\n  '27':'is',\n  '28':'hn',\n  '29':'ie',\n  '30':'es',\n  '31':'pt',\n  '32':'cl',\n  '33':'us',\n  '34':'es',\n  '35':'at',\n  '37':'do',\n  '41':'nz',\n  '43':'au',\n  '44':'za',\n  '45':'rs',\n  '47':'dk',\n  '49':'es',\n  '50':'ru',\n  '51':'ad',\n  '52':'fo',\n  '53':'sv',\n  '54':'lu',\n  '56':'fi',\n  '57':'in',\n  '58':'my',\n  '60':'hk',\n  '61':'ec',\n  '62':'gu',\n  '67':'py',\n  '68':'gb',\n  '69':'cr',\n  '72':'gt',\n  '73':'sr',\n  '74':'na',\n  '75':'pt',\n  '79':'ph',\n  '80':'bo',\n  '81':'co',\n  '84':'ci',\n  '91':'id',\n  '93':'mt',\n  '97':'il',\n  '100':'kr',\n  '102':'kw',\n  '103':'ht',\n  '104':'fr',\n  '106':'es',\n  '108':'gb',\n  '109':'hu',\n  '112':'lb',\n  '113':'my',\n  '116':'tr',\n  '120':'ag',\n  '122':'bb',\n  '123':'bm',\n  '126':'ni',\n  '127':'vi',\n  '131':'gy',\n  '132':'mh',\n  '143':'lc',\n  '147':'tn',\n  '155':'tw',\n  '158':'tt',\n  '161':'pl',\n  '163':'gb',\n  '165':'it',\n  '168':'mu',\n  '170':'bf',\n  '172':'nc',\n  '173':'re',\n  '177':'lk',\n  '185':'km',\n  '187':'ke',\n  '188':'mg',\n  '194':'dm',\n  '195':'gd',\n  '196':'gp',\n  '201':'pf',\n  '207':'mf',\n  '218':'bz',\n  '219':'ai',\n  '220':'vc',\n  '230':'fm',\n  '232':'aw',\n  '236':'bd',\n  '240':'mo',\n  '266':'ki',\n  '281':'jp',\n  '285':'br',\n  '302':'ru',\n  '307':'ru',\n  '308':'kz',\n  '310':'lv',\n  '311':'lt',\n  '317':'by',\n  '327':'si',\n  '328':'hr',\n  '329':'cz',\n  '330':'sk',\n  '347':'cw',\n  '348':'sx'\n};\n\nfunction getFlagUrl(prefix) {\n  var code = PREFIX_FLAGS[prefix];\n  return code ? 'https:\/\/flagcdn.com\/16x12\/' + code + '.png' : null;\n}\n\n\/* ---- Chargement ----------------------------------------- *\/\nfunction loadMembers() {\n  $.ajax({\n    url: AJAX, method: 'GET',\n    data: { action: 'sd_get_members' },\n    success: function(r) {\n      if (!r.success) { $('#sm-content').html('<p style=\"color:var(--sm-muted);text-align:center;padding:30px\">Erreur de chargement.<\/p>'); return; }\n      allMembers = r.data || [];\n      populateCountryFilter();\n      applyFilters();\n    },\n    error: function() {\n      $('#sm-content').html('<p style=\"color:var(--sm-muted);text-align:center;padding:30px\">Erreur reseau.<\/p>');\n    }\n  });\n}\n\n\/* ---- Filtre pays ---------------------------------------- *\/\nfunction populateCountryFilter() {\n  var countries = {};\n  allMembers.forEach(function(m) {\n    if (!countries[m.prefix]) countries[m.prefix] = m.country;\n  });\n  var opts = '<option value=\"\">Tous les pays<\/option>';\n  Object.keys(countries).sort(function(a,b){return parseInt(a)-parseInt(b);}).forEach(function(p) {\n    opts += '<option value=\"'+p+'\">'+p+' - '+countries[p]+'<\/option>';\n  });\n  $('#sm-country-filter').html(opts);\n}\n\n\/* ---- Appliquer filtres ----------------------------------- *\/\nfunction applyFilters() {\n  var q       = $('#sm-search').val().toLowerCase().trim();\n  var prefix  = $('#sm-country-filter').val();\n  filteredMembers = allMembers.filter(function(m) {\n    if (prefix && m.prefix !== prefix) return false;\n    if (q && m.id.toLowerCase().indexOf(q) === -1 && m.name.toLowerCase().indexOf(q) === -1) return false;\n    return true;\n  });\n  renderMembers();\n}\n\n\/* ---- Rendu -------------------------------------------- *\/\nfunction renderMembers() {\n  if (!filteredMembers.length) {\n    $('#sm-content').html('<p style=\"color:var(--sm-muted);text-align:center;padding:30px\">Aucun membre trouve.<\/p>');\n    $('#sm-count').text('');\n    return;\n  }\n\n  \/* Grouper par pays *\/\n  var groups = {};\n  filteredMembers.forEach(function(m) {\n    var key = m.prefix + '|' + m.country;\n    if (!groups[key]) groups[key] = { prefix: m.prefix, country: m.country, members: [] };\n    groups[key].members.push(m);\n  });\n\n  var html = '';\n  Object.keys(groups).sort(function(a,b) {\n    return parseInt(a.split('|')[0]) - parseInt(b.split('|')[0]);\n  }).forEach(function(key) {\n    var g = groups[key];\n    var flagUrl = getFlagUrl(g.prefix);\n    var flagHtml = flagUrl ? '<img decoding=\"async\" class=\"sm-flag\" src=\"'+flagUrl+'\" alt=\"'+g.prefix+'\" onerror=\"this.style.display=\\'none\\'\">' : '';\n    html += '<div class=\"sm-country-section\">';\n    html += '<div class=\"sm-country-header\" data-key=\"'+key+'\">';\n    html += flagHtml;\n    html += '<h3>'+g.prefix+' &mdash; '+g.country+'<\/h3>';\n    html += '<span class=\"sm-count-badge\">'+g.members.length+'<\/span>';\n    html += '<span class=\"sm-chevron\">&#9660;<\/span>';\n    html += '<\/div>';\n    html += '<div class=\"sm-country-body\" id=\"body-'+key.replace(\/\\|\/g,'_').replace(\/\\s\/g,'-')+'\">';\n    g.members.forEach(function(m) {\n      var isRip     = m.comment && m.comment.indexOf('RIP') !== -1;\n      var isRole    = m.comment && (m.comment.indexOf('|') !== -1);\n      var mainComment = m.comment;\n      var roleComment = '';\n      if (isRole) {\n        var parts = m.comment.split('|');\n        mainComment = parts[0].trim();\n        roleComment = parts[1] ? parts[1].trim() : '';\n      }\n      html += '<div class=\"sm-member-card\">';\n      html += '<div class=\"sm-member-id\">'+m.id+'<\/div>';\n      html += '<div class=\"sm-member-info\">';\n      html += '<div class=\"sm-member-name\">'+m.name+'<\/div>';\n      if (roleComment) html += '<div class=\"sm-member-comment role\">'+roleComment+'<\/div>';\n      if (mainComment) html += '<div class=\"sm-member-comment'+(isRip?' rip':'')+'\">'+mainComment+'<\/div>';\n      html += '<\/div><\/div>';\n    });\n    html += '<\/div><\/div>';\n  });\n\n  $('#sm-content').html(html);\n  $('#sm-count').text(filteredMembers.length + ' membre' + (filteredMembers.length > 1 ? 's' : ''));\n}\n\n\/* ---- Evenements ----------------------------------------- *\/\nfunction bindEvents() {\n  var searchTimer = null;\n\n  $('#sm-search').on('input', function() {\n    clearTimeout(searchTimer);\n    searchTimer = setTimeout(applyFilters, 200);\n  });\n  $('#sm-country-filter').on('change', applyFilters);\n\n  \/* Toggle section pays *\/\n  $(document).on('click', '.sm-country-header', function() {\n    var key = $(this).data('key').replace(\/\\|\/g,'_').replace(\/\\s\/g,'-');\n    var $body = $('#body-'+key);\n    $(this).toggleClass('collapsed');\n    $body.toggleClass('hidden');\n  });\n\n  \/* Bouton gestion *\/\n  $('#sm-btn-manage').on('click', function() {\n    if (!CAN_MANAGE) return;\n    $('#sm-manage-search').val('');\n    renderManageList('');\n    $('#sm-add-id,#sm-add-name,#sm-add-comment').val('');\n    $('#sm-overlay').removeClass('hidden');\n    $('body').css('overflow','hidden');\n    setTimeout(function(){ $('#sm-manage-search').focus(); }, 100);\n  });\n\n  $('#sm-modal-close, #sm-overlay').on('click', function(e) {\n    if (e.target === this || $(e.target).hasClass('sm-modal-close') || $(e.target).closest('#sm-modal-close').length) {\n      $('#sm-overlay').addClass('hidden');\n      $('body').css('overflow','');\n    }\n  });\n\n  \/* Recherche dans la gestion *\/\n  var manageTimer = null;\n  $('#sm-manage-search').on('input', function() {\n    clearTimeout(manageTimer);\n    var q = $(this).val();\n    manageTimer = setTimeout(function(){ renderManageList(q); }, 150);\n  });\n\n  \/* Ajouter *\/\n  $('#sm-add-btn').on('click', addMember);\n\n  \/* Entr\u00e9e dans les champs *\/\n  $('#sm-add-id,#sm-add-name,#sm-add-comment').on('keydown', function(e) {\n    if (e.key === 'Enter' && !$(this).is('textarea')) addMember();\n  });\n  $('#sm-add-id').on('input', function() { $(this).val($(this).val().toUpperCase()); });\n\n  \/* Escape *\/\n  $(document).on('keydown', function(e) {\n    if (e.key === 'Escape') { $('#sm-overlay').addClass('hidden'); $('body').css('overflow',''); }\n  });\n}\n\n\/* ---- Liste gestion -------------------------------------- *\/\nfunction renderManageList(q) {\n  q = (q || '').toLowerCase().trim();\n  var list = q\n    ? allMembers.filter(function(m){ return m.id.toLowerCase().indexOf(q)!==-1 || m.name.toLowerCase().indexOf(q)!==-1; })\n    : allMembers;\n\n  if (!list.length) { $('#sm-manage-list').html('<div class=\"sm-no-results\">Aucun resultat<\/div>'); return; }\n\n  var html = '';\n  var shown = list.slice(0, 50);\n  shown.forEach(function(m) {\n    html += '<div class=\"sm-manage-row\" data-id=\"'+m.id+'\">'\n      + '<span class=\"mid\">'+m.id+'<\/span>'\n      + '<span class=\"mname\">'+m.name+'<\/span>'\n      + '<button class=\"sm-remove-btn\" data-id=\"'+m.id+'\">Retirer<\/button>'\n      + '<\/div>';\n  });\n  if (list.length > 50) html += '<div class=\"sm-no-results\">'+list.length+' resultats, affinez la recherche<\/div>';\n  $('#sm-manage-list').html(html);\n}\n\n\/* ---- Supprimer ------------------------------------------ *\/\n$(document).on('click', '.sm-remove-btn', function() {\n  var id = $(this).data('id');\n  var name = $(this).closest('.sm-manage-row').find('.mname').text();\n  if (!confirm('Retirer ' + id + ' (' + name + ') ?')) return;\n  var btn = $(this).text('...').prop('disabled',true);\n  $.ajax({\n    url: AJAX, method: 'POST',\n    data: { action: 'sd_remove_member', nonce: NONCE, id: id },\n    success: function(r) {\n      if (r.success) {\n        allMembers = allMembers.filter(function(m){ return m.id !== id; });\n        toast('Membre ' + id + ' retire');\n        applyFilters();\n        renderManageList($('#sm-manage-search').val());\n      } else {\n        toast(r.data || 'Erreur', 'err');\n        btn.text('Retirer').prop('disabled',false);\n      }\n    },\n    error: function() { toast('Erreur reseau','err'); btn.text('Retirer').prop('disabled',false); }\n  });\n});\n\n\/* ---- Ajouter ------------------------------------------- *\/\nfunction addMember() {\n  var id      = $('#sm-add-id').val().trim().toUpperCase();\n  var name    = $('#sm-add-name').val().trim();\n  var comment = $('#sm-add-comment').val().trim();\n  if (!id || !name) { toast('Identifiant et nom requis','err'); return; }\n  if (!\/^\\d+SD\\d+$\/.test(id)) { toast('Format invalide. Ex: 163SD010','err'); return; }\n  var btn = $('#sm-add-btn').text('Ajout...').prop('disabled',true);\n  $.ajax({\n    url: AJAX, method: 'POST',\n    data: { action: 'sd_add_member', nonce: NONCE, id: id, name: name, comment: comment },\n    success: function(r) {\n      btn.text('+ Ajouter ce membre').prop('disabled',false);\n      if (r.success) {\n        allMembers.push(r.data);\n        allMembers.sort(function(a,b){\n          var na=parseInt(a.id.replace(\/\\D\/g,'')), nb=parseInt(b.id.replace(\/\\D\/g,''));\n          return na!==nb ? na-nb : a.id.localeCompare(b.id);\n        });\n        toast('Membre ' + id + ' ajoute');\n        $('#sm-add-id,#sm-add-name,#sm-add-comment').val('');\n        populateCountryFilter();\n        applyFilters();\n        renderManageList($('#sm-manage-search').val());\n      } else {\n        toast(r.data || 'Erreur','err');\n      }\n    },\n    error: function() { btn.text('+ Ajouter ce membre').prop('disabled',false); toast('Erreur reseau','err'); }\n  });\n}\n\n\/* ---- Toast --------------------------------------------- *\/\nfunction toast(msg, type) {\n  var cls = (type === 'err') ? 'sm-toast-err' : 'sm-toast-ok';\n  var el = $('<div class=\"sm-toast '+cls+'\">'+msg+'<\/div>').appendTo('body');\n  setTimeout(function(){ el.animate({opacity:0},300,function(){el.remove();}); },3500);\n}\n\n})(jQuery);\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6b56ec7a elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"6b56ec7a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6231f68d elementor-widget elementor-widget-text-editor\" data-id=\"6231f68d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div class='wp-block-pdfp-pdf-poster  alignnone' id='block-2'\n        data-attributes='{&quot;uniqueId&quot;:&quot;pdfp1&quot;,&quot;file&quot;:&quot;https:\\\/\\\/www.ingilog.com\\\/sugardelta_prod\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Electronic-Directory-2026-2.pdf&quot;,&quot;title&quot;:&quot;Directory&quot;,&quot;height&quot;:{&quot;desktop&quot;:&quot;842px&quot;,&quot;tablet&quot;:&quot;700px&quot;,&quot;mobile&quot;:&quot;400px&quot;},&quot;width&quot;:{&quot;desktop&quot;:&quot;100%&quot;,&quot;tablet&quot;:&quot;100%&quot;,&quot;mobile&quot;:&quot;100%&quot;},&quot;print&quot;:false,&quot;showName&quot;:true,&quot;downloadButton&quot;:true,&quot;downloadButtonText&quot;:&quot;Download File&quot;,&quot;fullscreenButton&quot;:&quot;1&quot;,&quot;fullscreenButtonText&quot;:&quot;View Fullscreen&quot;,&quot;newWindow&quot;:false,&quot;actionsPosition&quot;:&quot;top&quot;,&quot;protect&quot;:false,&quot;btnStyles&quot;:{&quot;background&quot;:&quot;#1e73be&quot;,&quot;color&quot;:&quot;#fff&quot;,&quot;fontSize&quot;:&quot;1rem&quot;,&quot;padding&quot;:{&quot;top&quot;:&quot;10&quot;,&quot;right&quot;:&quot;20&quot;,&quot;bottom&quot;:&quot;10&quot;,&quot;left&quot;:&quot;20&quot;}},&quot;socialShare&quot;:{&quot;enabled&quot;:false,&quot;facebook&quot;:true,&quot;twitter&quot;:true,&quot;linkedin&quot;:true,&quot;pinterest&quot;:true,&quot;position&quot;:&quot;top&quot;},&quot;align&quot;:&quot;none&quot;,&quot;alignment&quot;:&quot;left&quot;,&quot;titleFontSize&quot;:&quot;16px&quot;,&quot;onlyPDF&quot;:false,&quot;defaultBrowser&quot;:false,&quot;thumbMenu&quot;:false,&quot;sidebarOpen&quot;:false,&quot;initialPage&quot;:0,&quot;alert&quot;:false,&quot;lastVersion&quot;:false,&quot;hrScroll&quot;:false,&quot;isHideRightToolbar&quot;:false,&quot;additional&quot;:{&quot;ID&quot;:&quot;&quot;,&quot;Class&quot;:&quot;&quot;,&quot;CSS&quot;:&quot;&quot;},&quot;adobeEmbedder&quot;:&quot;default&quot;,&quot;adobeOptions&quot;:{&quot;showDownloadPDF&quot;:true,&quot;showPrintPDF&quot;:true,&quot;showAnnotationTools&quot;:true,&quot;showFullScreen&quot;:false,&quot;embedMode&quot;:&quot;SIZED_CONTAINER&quot;},&quot;popupOptions&quot;:{&quot;enabled&quot;:false,&quot;triggerType&quot;:&quot;button&quot;,&quot;image&quot;:&quot;&quot;,&quot;imagePdfIcon&quot;:true,&quot;imageHeight&quot;:&quot;200px&quot;,&quot;imageWidth&quot;:&quot;300px&quot;,&quot;text&quot;:&quot;Open PDF&quot;,&quot;btnStyle&quot;:{&quot;background&quot;:&quot;#2271b1&quot;,&quot;color&quot;:&quot;#fff&quot;,&quot;fontSize&quot;:&quot;16px&quot;,&quot;padding&quot;:{&quot;top&quot;:10,&quot;right&quot;:20,&quot;bottom&quot;:10,&quot;left&quot;:10}}},&quot;popupBtnStyle&quot;:{&quot;background&quot;:&quot;#2271b1&quot;,&quot;color&quot;:&quot;#fff&quot;,&quot;padding&quot;:{&quot;top&quot;:10,&quot;right&quot;:20,&quot;bottom&quot;:10,&quot;left&quot;:10}},&quot;popupBtnText&quot;:&quot;Open Document&quot;,&quot;CSS&quot;:&quot;&quot;,&quot;isPremium&quot;:false}'\n        style=\"text-align: left\"><\/p>\n<div class=\"pdfp_loading_placeholder\"\n                style=\"height: 842px; width: 100%; display: flex; align-items: center; justify-content: center; background: #f5f5f5; border: 1px solid #ddd;\"><\/p>\n<p>Loading Viewer&#8230;<\/p>\n<\/p><\/div>\n<\/p><\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tous les pays Ajouter \/ Retirer Chargement&#8230; Gestion des membres &#215; Rechercher et retirer Tapez pour rechercher Ajouter un membre Identifiant * Format : [prefix]SD[numero] ex: 163SD010 Nom * Commentaire \/ QSL info + Ajouter ce membre<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-555","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/pages\/555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/comments?post=555"}],"version-history":[{"count":14,"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/pages\/555\/revisions"}],"predecessor-version":[{"id":672,"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/pages\/555\/revisions\/672"}],"wp:attachment":[{"href":"https:\/\/www.ingilog.com\/sugardelta_prod\/wp-json\/wp\/v2\/media?parent=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}