1<!DOCTYPE html> 2<html lang="es" class="full-height register_html"> 3<head> 4 5 6 <meta charset="utf-8"> 7 <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 8 <meta http-equiv="x-ua-compatible" content="ie=edge"> 9 <meta property="og:url" content="https://www.changedyslexia.org" /> 10 <meta property="og:type" content="website" /> 11 <meta property="og:title" content="Dytective por Change Dyslexia" /> 12 <meta property="og:description" content="La herramienta de referencia para detección y mejora de las habilidades relacionadas con la dislexia" /> 13 <meta property="og:image" content="https://www.changedyslexia.org/img/public/team_facebook.jpg" /> 14 <meta property="og:image:width" content="960" /> 15 <meta property="og:image:height" content="627" /> 16 <title>Dytective por Change Dyslexia</title> 17 18 <!-- Font Awesome --> 19 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 20 <!-- Google Font --> 21 22 <link href="/css/fonts.css?v1.5.16" rel="stylesheet"> 23 <link rel="stylesheet" type="text/css" href="/chd.style.css?v1.5.16" /> 24 25 <link rel="icon" href="/img/favicon/favicon.ico?v1.5.16" sizes="32x32"> 26 <link rel="icon" href="/img/favicon/genfavicon-32.png?v1.5.16" sizes="32x32"> 27 <link rel="icon" href="/img/favicon/genfavicon-16.png?v1.5.16" sizes="16x16"> 28 <link rel="apple-touch-icon" href="/img/favicon/apple-touch-icon-57x57.png?v1.5.16" sizes="57x57"> 29 <link rel="apple-touch-icon" href="/img/favicon/apple-touch-icon-114x114.png?v1.5.16" sizes="114x114"> 30 <link rel="apple-touch-icon" href="/img/favicon/apple-touch-icon-120x120.png?v1.5.16" sizes="120x120"> 31 <link rel="apple-touch-icon" href="/img/favicon/apple-touch-icon-180x180.png?v1.5.16" sizes="180x180"> 32 <link rel="manifest" href="/img/favicon/site.webmanifest?v1.5.16"> 33 34</head> 35 36 37<body> 38 39 <!--Main Navigation--> 40<!--Navbar--> 41<nav class="navbar navbar-expand-lg navbar-light fixed-top scrolling-navbar bg-white"> 42 43 <div class="container main-topbar"> 44 <a class="main-topbar-link" href="/signin"> 45 <i class="fa fa-sign-in mr-1" aria-hidden="true"></i>Entrar 46 </a> 47 48 <span class="main-topbar-sep" aria-hidden="true">|</span> 49 50 <span class="main-topbar-locales"> 51 <a class="main-topbar-link is-current" href="/change-locale/es">ES</a> 52 <a class="main-topbar-link" href="/change-locale/ca">CA</a> 53 </span> 54</div> 55 56 <div class="container main-navbar-row"> 57 <a class="navbar-brand" href="/"> 58 <img src="/img/public/flc-changedyslexia-logo-color-horizontal-positiu-es.png?v1.5.16" alt="Dytective por Change Dyslexia" title="Dytective por Change Dyslexia" /> 59 </a> 60 61 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent-7" aria-controls="navbarSupportedContent-7" aria-expanded="false" aria-label="Toggle navigation"> 62 <span class="navbar-toggler-icon"></span> 63 </button> 64 65 <div class="collapse navbar-collapse text-center" id="navbarSupportedContent-7"> 66 <ul class="navbar-nav ml-auto"> 67 <li class="p-2"> 68 <a class="dark-grey-text" href="/#what-is" title="Qué es Dytective"> 69 Qué es Dytective 70 </a> 71 </li> 72 <li class="p-2"> 73 <a class="dark-grey-text" href="/#how-starts" title="Cómo empezar"> 74 Cómo empezar 75 </a> 76 </li> 77 <li class="p-2"> 78 <a class="dark-grey-text" href="/#social-impact" title="Impacto Social"> 79 Impacto Social 80 </a> 81 </li> 82 <li class="p-2"> 83 <a class="dark-grey-text" href="/#scientific-validation" title="Aval cientÃfico"> 84 Aval cientÃfico 85 </a> 86 </li> 87 </ul> 88 </div> 89 </div> 90</nav> 91 92 <!--Intro Section--> 93 <section class="section_register view intro-2 hm-gradient hm-indigo-slight"> 94 95 <div class="full-bg-img flex-center"> 96 <div class="container"> 97 <div class="row pt-2 mt-0 pt-md-5 mt-md-5 "> 98 <div class="col-sm-12 mx-auto mb-md-5 mb-sm-5"> 99 <!--Form with header--> 100 <div class="card no-shadow card-chd narrower"> 101 <div class="container"> 102 <div class="row"> 103 <div class="col-md-6 card-login card-login-left pt-5" style=""> 104 <img alt="Dytective" src="/img/public/flc-dytective-logo-color-negatiu.png?v1.5.16" class="d-block mx-auto mb-3" height="62"/> 105<div id="school_description" class="type_description active"> 106 <h3 class="text-white">Ofrecemos una solución diferencial puntera y cientÃficamente validada para eliminar el bajo rendimiento escolar debido a las dificultades de lecto-escritura. Ahorra tiempo a través de la personalización automática de los ejercicios y la generación automática de informes. Contaréis con el soporte de una institución rigurosa reconocida por prestigiosos premios. 107 </h3> 108 <ul class="list-unstyled text-white text-left"> 109 <li><i class="fa fa-check-circle" ></i> Uso ilimitado de Dytective para todos tus estudiantes gracias al apoyo de <strong>la Fundación âla Caixaâ.</strong></li> 110 <li><i class="fa fa-check-circle" ></i> Sé un colegio innovador e inclusivo, mejorando el rendimiento de tus estudiantes. 111 </li> 112 </ul> 113</div> 114 115<div id="professional_description" class="type_description "> 116 <h3 class="text-white">Formarás parte de una red educativa innovadora que te dará más visibilidad y prestigio a tu trabajo. Más de 240.000 usuarios tendrán acceso a tu perfil profesional. Ahorrarás tiempo y aumentarás tu productividad gracias a la personalización automática de los ejercicios. Fidelizarás a tus clientes: confiarán en una herramienta cientÃficamente validada, divertida y eficaz. 117 Licencias mensuales con flexibilidad para distribuir entre tus estudiantes. 118 </h3> 119 <ul class="list-unstyled text-white text-left"> 120 <li><i class="fa fa-check-circle" ></i> Uso ilimitado y totalmente gratuito de la prueba de cribado de dislexia.</li> 121 <li><i class="fa fa-check-circle" ></i> Si desarrollas tu actividad en España, tus pacientes podrán utilizar Dytective (herramienta de mejora de lecto-escritura) de forma gratuita gracias a la labor social de Change Dyslexia.</li> 122 </ul> 123</div> 124 125<div id="family_description" class="type_description "> 126 <h3 class="text-white">La herramienta <strong>cientÃficamente validada</strong> que mejora las habilidades relacionadas con la lecto-escritura</h3> 127 <ul class="list-unstyled text-white text-left"> 128 <li><i class="fa fa-check-circle" ></i> Uso ilimitado y totalmente gratuito de la prueba de cribado de dislexia.</li> 129 <li><i class="fa fa-check-circle" ></i> Hasta dos estudiantes de Dytective (herramienta de mejora de lecto-escritura) mediante un pago único y 7 dÃas gratis de prueba.</li> 130 <li><i class="fa fa-check-circle" ></i>
130 Puedes utilizar Dytective sin coste a través de tu colegio (si resides en España gracias al impulso de la Fundación âla Caixaâ)</li> 131 </ul> 132</div> 133 134<div id="entity_description" class="type_description "> 135 <h3 class="text-white">Ofrecemos una solución diferencial, innovadora y cientÃficamente validada para abordar el bajo rendimiento escolar asociado a las dificultades de lectoescritura. Permite ahorrar tiempo gracias a la personalización de los ejercicios y a la generación automática de informes. Además, contaréis con el respaldo de una institución rigurosa reconocida por prestigiosos premios. 136 </h3> 137 <ul class="list-unstyled text-white text-left"> 138 <li><i class="fa fa-check-circle" ></i> Uso ilimitado de Dytective para todos los niños y niñas de tu entidad, gracias al apoyo de la <strong>Fundación âla Caixaâ.</strong></li> 139 <li><i class="fa fa-check-circle" ></i> Sé una entidad social innovadora e inclusiva, ayudando a mejorar el rendimiento de tus estudiantes. 140 </li> 141 </ul> 142</div> 143 </div> 144 145 146 <div class="col-md-6 card no-shadow card-login card-login-right" style=""> 147 <form name="corebundle_user" method="post"> 148 149<h5 class="text-center">Crea tu cuenta Dytective</h5> 150 151 <p class="text-center"><small class="text-muted"><strong>1. Selecciona tu tipo de cuenta:</strong></small></p> 152 153 <input type="hidden" id="corebundle_user_role" name="corebundle_user[role]" /> 154 155 156 <div class="btn-group account-type mt-3" data-toggle="buttons"> 157 <label class="btn btn-outline-primary btn-register-type" data-type="#school_description"> 158 <input type="radio" autocomplete="off" name="role" id="school" value="school"> Colegios 159 </label> 160 <label class="btn btn-outline-primary btn-register-type" data-type="#professional_description"> 161 <input type="radio" autocomplete="off" name="role" id="professional" value="professional"> Profesional Terapeuta 162 </label> 163 <label class="btn btn-outline-primary btn-register-type" data-type="#family_description"> 164 <input type="radio" autocomplete="off" name="role" id="family" value="family"> Individual Familiar 165 </label> 166 <label class="btn btn-outline-primary btn-register-type" data-type="#entity_description"> 167 <input type="radio" autocomplete="off" name="role" id="entity" value="entity"> Entidad Social * 168 </label> 169 </div> 170 171 <p class="text-center"><small class="text-muted">* Sólo para entidades sociales con sede en España.</small></p> 172 173 174 175 176 177 178<div class="form-wrapper"> 179 <div class="mt-5 text-center"> 180 181<div class="craue_formflow_buttons craue_formflow_button_count_2"> 182 <button type="submit" class="btn btn-pink m-auto">Siguiente</button> 183 <button type="submit" class="hidden" name="flow_user_register_transition" value="reset" formnovalidate="formnovalidate">empezar de nuevo</button> 184 </div> 185 </div> 186 187</div> 188 189 <input type="hidden" id="corebundle_user__token" name="corebundle_user[_token]" value="Z0L6Tq0DZ6qTacZJO3_Gggn-XofXPu9Vh0qn1QXOh7Q" /> 190 191 <input type="hidden" id="corebundle_user_flow_user_register_instance" name="flow_user_register_instance" value="J_SDhxr6tU" /> 192 <input type="hidden" id="corebundle_user_flow_user_register_step" name="flow_user_register_step" value="1" /> 193 </form> 194 </div> 195 </div> 196 </div> 197 198 </div> 199 <!--/Form with header--> 200 201 </div> 202 </div> 203 </div> 204 </div> 205 206 </section> 207 208 <!--Modal: Programa CM School--> 209 <div class="modal fade" id="modalCMConditions" tabindex="-1" role="dialog" aria-labelledby="modalCMConditionsLabel" aria-hidden="true"> 210 <div class="modal-dialog modal-dialog-centered modal-md modal-notify modal-info" role="document"> 211 <!--Content--> 212 <div class="modal-content text-center"> 213 <!--Header--> 214 <div class="modal-header d-flex justify-content-center"> 215 <p class="heading">Programa de ayuda a la detección de dificultades de lecto-escritura de la Comunidad de Madrid</p> 216 </div> 217 218 <!--Body--> 219 <div class="modal-body"> 220 <p>
220Parece que estás intentando registrarte en Dytective con una cuenta de <strong>EducaMadrid.</strong></p> 221 <p>Si formas parte del <strong>Programa de ayuda a la detección de dificultades de lecto-escritura de la Comunidad de Madrid</strong>, has recibido un email de Change Dyslexia con la información de tu cuenta para acceder. No es necesario que te registres, simplemente entra con los datos que te hemos enviado. Si no encuentras este email, ponte en contacto con nosotros en <a href="[email protected]">[email protected]</a></p> 222 <p>Si no formas parte del programa indÃcalo y continuaremos con tu registro.</p> 223 </div> 224 225 <!--Footer--> 226 <div class="modal-footer flex-center"> 227 <a type="button" id="btnCmConditionsContinue" class="btn btn-outline-elegant waves-effect" data-dismiss="modal">No formo parte del programa</a> 228 <a type="button" href="/signin" class="btn btn-elegant waves-effect">Acceder</a> 229 </div> 230 </div> 231 <!--/.Content--> 232 </div> 233 </div> 234 <!--Modal: Programa CM School--> 235 236 <!--Modal: Programa CM No School--> 237 <div class="modal fade" id="modalCMConditions2" tabindex="-1" role="dialog" aria-labelledby="modalCMConditionsLabel" aria-hidden="true"> 238 <div class="modal-dialog modal-dialog-centered modal-md modal-notify modal-info" role="document"> 239 <!--Content--> 240 <div class="modal-content text-center"> 241 <!--Header--> 242 <div class="modal-header d-flex justify-content-center"> 243 <p class="heading">Programa de ayuda a la detección de dificultades de lecto-escritura de la Comunidad de Madrid</p> 244 </div> 245 246 <!--Body--> 247 <div class="modal-body"> 248 <p>Parece que estás intentando registrarte en Dytective con una cuenta de <strong>EducaMadrid.</strong></p> 249 <p>Si formas parte del <strong>Programa de ayuda a la detección de dificultades de lecto-escritura de la Comunidad de Madrid</strong>, has recibido un email de Change Dyslexia con la información de tu cuenta para acceder. No es necesario que te registres, simplemente entra con los datos que te hemos enviado. Si no encuentras este email, ponte en contacto con nosotros en <a href="[email protected]">[email protected]</a></p> 250 <p>Si no formas parte del programa indÃcalo y continuaremos con tu registro.</p> 251 </div> 252 253 <!--Footer--> 254 <div class="modal-footer flex-center"> 255 <a type="button" id="btnCmConditionsContinue2" class="btn btn-outline-elegant waves-effect" data-dismiss="modal">No formo parte del programa</a> 256 <a type="button" href="/signin" class="btn btn-elegant waves-effect">Acceder</a> 257 </div> 258 </div> 259 <!--/.Content--> 260 </div> 261 </div> 262 <!--Modal: Programa CM No School--> 263 264 <!--Modal: modalLegalConditions--> 265 <div class="modal fade" id="modalLegalconditions" tabindex="-1" role="dialog" aria-labelledby="modalLegalconditionsLabel" aria-hidden="true"> 266 <div class="modal-dialog modal-dialog-centered modal-md modal-notify modal-info" role="document"> 267 <!--Content--> 268 <div class="modal-content text-center"> 269 <!--Header--> 270 <div class="modal-header d-flex justify-content-center"> 271 <p class="heading">Condiciones legales</p> 272 </div> 273 274 <!--Body--> 275 <div class="modal-body" id="legal-missing-text"> 276 </div> 277 278 <!--Footer--> 279 <div class="modal-footer flex-center"> 280 <a type="button" class="btn btn-elegant waves-effect" data-dismiss="modal">Ok</a> 281 </div> 282 </div> 283 <!--/.Content--> 284 </div> 285 </div> 286 287 <!--Main Navigation--> 288 289<!--Main Layout--> 290<main> 291 292 293</main> 294<!--Main Layout--> 295 296 297 <!--Modal: modalCookie--> 298 <div class="modal fade top" id="modalCookie" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" 299 > 300 <div class="modal-dialog modal-frame modal-bottom modal-notify modal-info" role="document"> 301 <!--Content--> 302 <div class="modal-content"> 303 <!--Body--> 304 <div class="modal-body grey lighten-3"> 305 <div class="row d-flex justify-content-center align-items-center"> 306 307 <p class="pt-3 pr-2">Change Dyslexia utiliza cookies para mejorar la experiencia de usuario.</p> 308 309 <a type="button" id="allCookiesAcceptedBtn" class="btn btn-outline-primary waves-effect" data-dismiss="modal">Ok, gracias</a> 310 <a type="button" class="btn btn-primary" data-toggle="modal" data-target="#cookiesPreferencesModal" data-dismiss="modal">Ver preferencias <i class="fa fa-book ml-1"></i></a> 311 </div> 312 </div> 313 </div> 314 <!--/.Content--> 315 </div> 316 </div> 317 <!--Modal: modalCookie--> 318 319 <div class="modal fade dashboard-help" id="cookiesPreferencesModal" tabindex="-1" role="dialog" aria-labelledby="cookiesPreferencesModalLabel"> 320 <div class="modal-dialog modal-lg modal-notify modal-info" role="document"> 321 <!--Content--> 322 <div class="modal-content"> 323 <!--Header--> 324 <div class="modal-header"> 325 <p class="heading lead"><i class="fa fa-question-circle white-text animated rotateIn"></i> Información sobre las cookies</p> 326 327 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
328 <span aria-hidden="true" class="white-text">Ã</span> 329 </button> 330 </div> 331 332 <!--Body--> 333 <div class="modal-body small"> 334 <p>Las cookies son importantes para el correcto funcionamiento del sitio. Para mejorar su 335 experiencia de navegación, usamos cookies para recordar sus datos de inicio de sesión y 336 brindarle un inicio seguro, recopilar estadÃsticas para optimizar la funcionalidad del sitio y 337 ofrecerle contenido personalizado en función de sus intereses. 338 339 </p> 340 <p>Las cookies son pequeños archivos de texto que las páginas web pueden utilizar para hacer más 341 eficiente la experiencia del usuario. La ley afirma que podemos 342 almacenar cookies en su dispositivo si son estrictamente necesarias para el funcionamiento de esta 343 página. Para todos los demás tipos de cookies necesitamos su permiso. 344 345 </p> 346 347 <form class="p-5 p-md-3 p-sm-1"> 348 <div class="md-form form-sm mt-1"> 349 <input class="form-check-input" type="checkbox" value="" id="cookiesRequired" name="cookiesRequired" checked disabled> 350 <label for="cookiesRequired"> 351 <strong>Cookies Obligatorias:</strong> utilizamos estas cookies para almacenar información sobre tu inicio de sesión. Esto nos 352 permite recordar tus datos de acceso 353 y no necesitar pedirte tus datos de acceso cada vez que quieras acceder a Dytective. 354 355 </label> 356 </div> 357 358 <div class="md-form form-sm mt-1"> 359 <input class="form-check-input" type="checkbox" value="" id="cookiesFunctional" name="cookiesFunctional"> 360 <label for="cookiesFunctional"> 361 <strong>Cookies Funcionales:</strong> estas cookies nos permiten analizar el uso del Sitio web, de manera que podamos medir y mejorar 362 el funcionamiento. Ãnicamente 363 utilizamos las cookies del servicio Google Analytics 364 . 365 </label> 366 </div> 367 </form> 368 </div> 369 370 <!--Footer--> 371 <div class="modal-footer"> 372 <button data-dismiss="modal" type="button" class="btn btn-outline-primary waves-effect waves-light">Cancelar</button> 373 <a type="button" id="cookiesPreferencesAcceptedBtn" class="btn btn-primary waves-effect" data-dismiss="modal">Guardar Preferencias</a> 374 </div> 375 </div> 376 <!--/.Content--> 377 </div> 378 </div> 379 380<!--Footer--> 381 382<!--/.Footer--> 383 384
384<script src="/js/chd.js?v1.5.16"></script>
384 385 386
387<script> 388 new WOW().init(); 389 390 391 $('#zoomBtn').click(function() { 392 $('.zoom-btn-sm').toggleClass('scale-out'); 393 if (!$('.zoom-card').hasClass('scale-out')) { 394 $('.zoom-card').toggleClass('scale-out'); 395 } 396 }); 397 398 $('.zoom-btn-sm').click(function() { 399 var btn = $(this); 400 var card = $('.zoom-card'); 401 if ($('.zoom-card').hasClass('scale-out')) { 402 $('.zoom-card').toggleClass('scale-out'); 403 } 404 if (btn.hasClass('zoom-btn-person')) { 405 card.css('background-color', '#d32f2f'); 406 } else if (btn.hasClass('zoom-btn-doc')) { 407 card.css('background-color', '#fbc02d'); 408 } else if (btn.hasClass('zoom-btn-tangram')) { 409 card.css('background-color', '#388e3c'); 410 } else if (btn.hasClass('zoom-btn-report')) { 411 card.css('background-color', '#1976d2'); 412 } else { 413 card.css('background-color', '#7b1fa2'); 414 } 415 }); 416 417 $(document).ready(function() { 418 419 // Abrir Bio 420 $('.btn-open-bio').on('click', function(e) { 421 e.preventDefault(); 422 var targetId = $(this).data('target'); 423 $('#' + targetId).addClass('d-flex'); 424 $('#' + targetId).fadeIn(); 425 }); 426 427 // Cerrar Bio 428 $('.btn-close-bio').on('click', function(e) { 429 e.preventDefault(); 430 var targetId = $(this).data('target'); 431 $('#' + targetId).fadeOut(400, () => { 432 $('#' + targetId).removeClass('d-flex'); 433 }); 434 }); 435 436 }); 437 438 // $(document).ready(function() { 439 // $.contactButtons({ 440 // effect : 'slide-on-scroll', 441 // buttons : { 442 // 'facebook': { class: 'facebook', use: true, link: 'https://www.facebook.com/changedyslexia/', extras: 'target="_blank"' }, 443 // 'linkedin': { class: 'linkedin', use: true, link: 'https://www.linkedin.com/company/7573805?trk=prof-exp-company-name', extras: 'target="_blank"' }, 444 // 'twitter': { class: 'twitter', use: true, link: 'https://twitter.com/changeDyslexia', extras: 'target="_blank"' }, 445 // 'youtube': { class: 'youtube', use: true, link: 'https://www.youtube.com/channel/UC_xZGslIRkYPXmMvr9pzpFQ', icon: 'youtube', extras: 'target="_blank"' }, 446 // 'email': { class: 'email separated', use: true, link: '[email protected]', extras: 'target="_blank"' } 447 // } 448 // }); 449 // }); 450 451 $('#modalCookie').modal('show'); 452 453 $('#allCookiesAcceptedBtn').on('click', function(){ 454 $.ajax({ 455 type: "POST", 456 url: "/cookiesAccepted", 457 dataType: 'json', 458 data: {'required': true, 'functional':true}, 459 success: function(){ 460 location.reload(); 461 } 462 }); 463 }); 464 465 $('#cookiesPreferencesAcceptedBtn').on('click', function(){ 466 $.ajax({ 467 type: "POST", 468 url: "/cookiesAccepted", 469 dataType: 'json', 470 data: {'required': true, 'functional': $("#cookiesFunctional").prop('checked')}, 471 success: function(){ 472 location.reload(); 473 } 474 }); 475 }); 476 477 478</script>
478 479
480<script> 481 482 let role = 'school'; 483 484 /******************************************************************************** 485 * BEGIN: GENERAL FUNCTIONS FOR ALL STEPS 486 ********************************************************************************/ 487 488 function showType(type){ 489 $(".form-mask").hide(300); 490 491 $(".type_description.active").fadeOut(100, function(){ 492 $(".type_description.active").removeClass('active'); 493 $(type).fadeIn(100, function(){ 494 495 }).addClass("active"); 496 }) 497 } 498 499 function initAutocomplete(config) { 500 const { 501 $type, 502 $input, 503 $hidden, 504 $menu, 505 $dropdown, 506 endpoint, 507 renderItem, 508 onSelect, 509 $form, 510 $error, 511 $iconWrapper 512 } = config; 513 514 let lastResults = []; 515 let hasResults = false; 516 let activeIndex = -1; 517 518 function showMenu() { 519 $dropdown.addClass("show"); 520 $menu.addClass("show"); 521 $input.attr("aria-expanded", "true"); 522 } 523 524 function hideMenu() { 525 $menu.removeClass("show"); 526 $dropdown.removeClass("show"); 527 $input.attr("aria-expanded", "false"); 528 activeIndex = -1; 529 } 530 531 function highlightItem(index) { 532 const $items = $menu.find(".dropdown-item"); 533 $items.removeClass("active"); 534 535 if (index >= 0 && index < $items.length) { 536 const $activeItem = $items.eq(index); 537 $activeItem.addClass("active"); 538 activeIndex = index; 539 540 const menuTop = $menu.scrollTop(); 541 const menuHeight = $menu.height(); 542 const itemTop = $activeItem.position().top + menuTop; 543 const itemBottom = itemTop + $activeItem.outerHeight(); 544 545 if (itemBottom > menuTop + menuHeight) { 546 $menu.scrollTop(itemBottom - menuHeight); 547 } else if (itemTop < menuTop) { 548 $menu.scrollTop(itemTop); 549 } 550 } 551 } 552 553 function selectActive() { 554 const $items = $menu.find(".dropdown-item"); 555 if (activeIndex >= 0 && activeIndex < $items.length) { 556 const $item = $items.eq(activeIndex); 557 $item.trigger("click"); 558 } 559 } 560 561 // Evitar apertura automática si no hay resultados 562 $dropdown.on("show.bs.dropdown", function (e) { 563 if (!hasResults) e.preventDefault(); 564 }); 565 566 // Navegación con teclado 567 $input.on("keydown", function (e) { 568 const key = e.key || e.which; 569 const $items = $menu.find(".dropdown-item"); 570 571 if ((key === "Enter" || key === 13) && $menu.hasClass("show")) { 572 e.preventDefault(); 573 } 574 575 if ($items.length && $menu.hasClass("show")) { 576 if (key === "ArrowDown" || key === 40) { 577 e.preventDefault(); 578 activeIndex = (activeIndex + 1) % $items.length; 579 highlightItem(activeIndex); 580 return; 581 } 582 if (key === "ArrowUp" || key === 38) { 583 e.preventDefault(); 584 activeIndex = (activeIndex - 1 + $items.length) % $items.length; 585 highlightItem(activeIndex); 586 return; 587 } 588 if (key === "Enter" || key === 13) { 589 e.preventDefault(); 590 selectActive(); 591 return; 592 } 593 if (key === "Escape" || key === "Esc" || key === 27) { 594 hideMenu(); 595 return; 596 } 597 } 598 }); 599 600 601 let timeoutId; 602 603 // Entrada de texto â búsqueda 604 $input.on("input", function () { 605 const query = $(this).val().trim(); 606 $hidden.val(""); 607 hasResults = false; 608 609 // Cancelamos el temporizador anterior si el usuario sigue escribiendo 610 clearTimeout(timeoutId); 611 612 if (query.length < 2) { 613 hideMenu(); 614 return; 615 } 616 617 // Creamos un nuevo temporizador 618 timeoutId = setTimeout(() => { 619 $.getJSON(endpoint, { q: query }, function (data) { 620 lastResults = data || []; 621 $menu.empty(); 622 activeIndex = -1; 623 624 console.log(lastResults); 625 console.log(lastResults.length); 626 if (!lastResults.length) { 627 hasResults = false;
628 hideMenu(); 629 return; 630 } 631 632 lastResults.forEach(function (item) { 633 const $option = renderItem(item) 634 .on("click", function (ev) { 635 ev.preventDefault(); 636 onSelect(item); 637 hideMenu(); 638 }); 639 $menu.append($option); 640 }); 641 642 hasResults = true; 643 showMenu(); 644 }); 645 }, 500); // Espera 500ms tras la última pulsación 646 647 648 }); 649 650 // Click fuera 651 $(document).on("click", function (e) { 652 if (!$(e.target).closest(".dropdown").length) hideMenu(); 653 }); 654 655 // Icono (lupa/x) 656 if ($iconWrapper) { 657 const $icon = $iconWrapper.find("i"); 658 $input.on("input", function () { 659 if ($(this).val().length > 0) { 660 $icon.removeClass("fa-search").addClass("fa-times"); 661 } else { 662 $icon.removeClass("fa-times").addClass("fa-search"); 663 } 664 }); 665 666 $iconWrapper.on("click", function () { 667 if ($icon.hasClass("fa-times")) { 668 $input.val(""); 669 $hidden.val(""); 670 671 $icon.removeClass("fa-times").addClass("fa-search"); 672 hideMenu(); 673 } 674 }); 675 } 676 677 } 678 679 $(document).ready(function() { 680 $('.mdb-select').material_select(); 681 $('[data-toggle="tooltip"]').tooltip(); 682 683 let role = ''; 684 685 $(".btn-register-type").on("click", function(){ 686 showType($(this).data('type')); 687 688 role = $(this).find("input").val(); 689 $("#corebundle_user_role").val(role); 690 691 692 }); 693 694 695 696 const $form = $("form[name=corebundle_user]"); 697 698 699 700 701 702 703 704 705 }); 706 707</script>
707 708</body> 709</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.