templates/layout/includes/navegation/desktop.html.twig line 1

Open in your IDE?
  1. <style>
  2.     @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap');
  3.     {% if currentPath == '/es/empresa' or currentPath == '/en/about-us'%}
  4.         {% set isAboutUs = true%}
  5.     {% else %}
  6.         {% set isAboutUs = false %}
  7.     {% endif %}
  8.     /* Base styles */
  9.     .menu-outer {
  10.         background-color: #fff;
  11.     }
  12.     #siteNav.medium {
  13.         font-family: 'Montserrat', sans-serif;
  14.         display: flex;
  15.         align-items: center;
  16.         flex-wrap: nowrap;
  17.         list-style-type: none;
  18.         padding-left: 0;
  19.         flex-grow: 1;
  20.         justify-content: space-between;
  21.         width: 100%;
  22.         gap: 5px;
  23.     }
  24.     #siteNav.medium > li a {
  25.         font-size: 16px;
  26.         padding: 8px 15px;
  27.         font-weight: 600;
  28.         {% if is_authenticated %}
  29.         color: #6c757d;
  30.         {% else %}
  31.         color: #000000;
  32.         {% endif %}
  33.         position: relative;
  34.         display: inline-block;
  35.         overflow: hidden;
  36.         text-transform: capitalize;
  37.         border-radius: 4px;
  38.         transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out;
  39.         text-decoration: none;
  40.     }
  41.     #siteNav.medium > li > a {
  42.         margin-left: 0;
  43.     }
  44.     #siteNav.medium > li {
  45.         margin-right: 5px;
  46.     }
  47.     #siteNav.medium > li:last-child {
  48.         margin-right: 0;
  49.     }
  50.     /* Hover line effect */
  51.     #siteNav.medium > li a::after {
  52.         content: '';
  53.         position: absolute;
  54.         bottom: 0;
  55.         left: 50%;
  56.         width: 0;
  57.         height: 2px;
  58.         {% if is_authenticated %}
  59.         background-color: #6c757d;
  60.         {% else %}
  61.         background-color: #333;
  62.         {% endif %}
  63.         transition: width 0.3s ease-out, transform 0.3s ease-out;
  64.         transform: translateX(-50%);
  65.         transform-origin: center;
  66.     }
  67.     #siteNav.medium > li a:hover::after {
  68.         width: 100%;
  69.         transform: translateX(-50%) scaleX(1);
  70.     }
  71.     #siteNav.medium > li .dropdown-item {
  72.         {% if is_authenticated %}
  73.         color: #6c757d;
  74.         {% else %}
  75.         color: #333;
  76.         {% endif %}
  77.         font-family: 'Montserrat', sans-serif;
  78.     }
  79.     #siteNav.medium > li .dropdown-item:hover {
  80.         background-color: #0d6efd;
  81.         color: #fff;
  82.         font-weight: 600;
  83.     }
  84.     /* Active link */
  85.     #siteNav.medium > li.active-link > a {
  86.         {% if is_authenticated %}
  87.         color: #6c757d !important;
  88.         {% else %}
  89.         color: #333 !important;
  90.         {% endif %}
  91.         font-weight: 700;
  92.         background-color: transparent !important;
  93.     }
  94.     #siteNav.medium > li.active-link > a::after {
  95.         width: 100%;
  96.         transform: translateX(-50%) scaleX(1);
  97.         {% if is_authenticated %}
  98.         background-color: #6c757d;
  99.         {% else %}
  100.         background-color: #333;
  101.         {% endif %}
  102.     }
  103.     #siteNav.medium > li a:hover {
  104.         {% if is_authenticated %}
  105.         color: #6c757d !important;
  106.         {% else %}
  107.         color: #000000 !important;
  108.         {% endif %}
  109.         background-color: transparent !important;
  110.     }
  111.     #siteNav.medium > li.lvl1.parent.megamenu .megamenu a:hover{
  112.         color: inherit !important;
  113.     }
  114.     #siteNav.medium > li a:hover::after {
  115.         {% if is_authenticated %}
  116.         background-color: #6c757d;
  117.         {% else %}
  118.         background-color: #333;
  119.         {% endif %}
  120.     }
  121.     /* Professional area button */
  122.     .login-nav-item a.site-nav {
  123.         background: linear-gradient(to bottom right, #91D6F3, #3F91F3);
  124.         color: #fff !important;
  125.         padding: 10px 25px !important;
  126.         border-radius: 50px !important;
  127.         text-transform: capitalize !important;
  128.         font-weight: 700 !important;
  129.         box-shadow: 0 3px 5px rgba(0, 0, 0, 0.6);
  130.         transition: background 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
  131.         border: none;
  132.         white-space: nowrap !important;
  133.         min-width: max-content !important;
  134.     }
  135.     /* Technical area button */
  136.     #siteNav.medium > li a[href*="technicalArea"],
  137.     #siteNav.medium > li a[href*="technical-area"] {
  138.         white-space: nowrap !important;
  139.         min-width: max-content !important;
  140.     }
  141.     .login-nav-item a.site-nav:hover {
  142.         background: linear-gradient(to bottom right, #3F91F3, #91D6F3);
  143.         box-shadow: 0 5px 7px rgba(0, 0, 0, 0.2);
  144.     }
  145.     .login-nav-item a.site-nav i {
  146.         color: #fff !important;
  147.     }
  148.     /* Professional area header styling - cart and user icons */
  149.     .header-cart .site-header__cart i {
  150.         color: #6c757d !important;
  151.     }
  152.     .header-cart .site-header__cart:hover i {
  153.         color: #6c757d !important;
  154.     }
  155.     .header-cart .site-cart-count {
  156.         background-color: #6c757d !important;
  157.         color: #fff !important;
  158.         transition: background-color 0.2s ease-in-out;
  159.     }
  160.     .header-cart .site-header__cart:hover .site-cart-count {
  161.         background-color: #6c757d !important;
  162.     }
  163.     {% if is_authenticated %}
  164.     .user-link.iconset .icon.an-user {
  165.         color: #6c757d !important;
  166.     }
  167.     .user-link.iconset:hover .icon.an-user {
  168.         color: #6c757d !important;
  169.     }
  170.     .user-link.iconset .icon {
  171.         color: #6c757d !important;
  172.     }
  173.     .user-link.iconset:hover .icon {
  174.         color: #6c757d !important;
  175.     }
  176.     .d-flex.align-items-center .user-link.iconset .icon {
  177.         color: #6c757d !important;
  178.     }
  179.     .d-flex.align-items-center .user-link.iconset:hover .icon {
  180.         color: #6c757d !important;
  181.     }
  182.     i.icon.an-user.d-block {
  183.         color: #6c757d !important;
  184.     }
  185.     .user-link.iconset i.icon.an-user.d-block {
  186.         color: #6c757d !important;
  187.     }
  188.     .user-link.iconset:hover i.icon.an-user.d-block {
  189.         color: #6c757d !important;
  190.     }
  191.     {% endif %}
  192.     /* User manual link styling */
  193.     {% if is_authenticated %}
  194.     .user-manual-link.iconset {
  195.         font-family: 'Montserrat', sans-serif;
  196.     }
  197.     .user-manual-link.iconset span {
  198.         color: #6c757d !important;
  199.         font-weight: 600;
  200.         font-size: 11px;
  201.         text-transform: capitalize;
  202.         transition: color 0.2s ease-in-out;
  203.         cursor: pointer;
  204.     }
  205.     .user-manual-link.iconset:hover span {
  206.         color: #6c757d !important;
  207.     }
  208.     {% endif %}
  209.     
  210.     /* Logo sizing */
  211.     #siteNav.medium > li:first-child a img,
  212.     .navbar-logo {
  213.         min-width: 45px !important;
  214.         width: 60px !important;
  215.     }
  216.     /* Hover de logo, megamenu, empresa y idioma */
  217.     .logo-nav-item .logo-link::after {
  218.         display: none;
  219.     }
  220.     .logo-nav-item .logo-link:hover::after {
  221.         display: none;
  222.     }
  223.     #siteNav.medium > li.logo-nav-item a::after {
  224.         display: none;
  225.     }
  226.     #siteNav.medium > li.logo-nav-item a:hover::after {
  227.         display: none;
  228.     }
  229.     .lvl1.parent.megamenu * a::after,
  230.     .lvl1.parent.megamenu * a:hover::after 
  231.     {
  232.         display: none;
  233.         color: initial;
  234.         background-color: initial;
  235.     }
  236.     #siteNav .menu-brand-logo a {
  237.         transition: background-color 0.3s ease-in-out;
  238.         background-color: transparent;
  239.     }
  240.     #siteNav .menu-brand-logo a:hover {
  241.         background-color: #f0f0f0 !important;
  242.     }
  243.     #siteNav.medium .menu-brand-logo a:hover {
  244.         background-color: #f0f0f0 !important;
  245.     }
  246.     #siteNav.medium > li.lvl1.parent.dropdown ul.dropdown a::after,
  247.     #siteNav.medium > li.lvl1.parent.dropdown ul.dropdown a:hover::after {
  248.         display: none;
  249.     }
  250.     .lang-image {
  251.         min-width: 25px !important;
  252.         width: 30px !important;
  253.         object-fit: contain;
  254.     }
  255.     #siteNav.medium > li.lang-image-li a:hover::after {
  256.         display: none;
  257.     }
  258.     /* Search animation */
  259.     @keyframes shake {
  260.         0%, 100% { transform: translateX(0); }
  261.         10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
  262.         20%, 40%, 60%, 80% { transform: translateX(5px); }
  263.     }
  264.     .shake {
  265.         animation: shake 0.5s;
  266.     }
  267.     #search-box::placeholder {
  268.         color: #FF0000;
  269.     }
  270.     #siteNav.medium .d-flex.align-items-center .iconset {
  271.         display: flex;
  272.         align-items: center;
  273.         height: auto;
  274.         padding: 8px 15px;
  275.         margin: 0;
  276.     }
  277.     /* Responsive breakpoints */
  278.     @media only screen and (min-width: 1800px) {
  279.         #siteNav.medium > li a {
  280.             padding: 10px 20px;
  281.             font-size: 17px;
  282.         }
  283.     }
  284.     @media only screen and (min-width: 1740px) and (max-width: 1640px) {
  285.         #siteNav.medium {
  286.             gap: 10px;
  287.         }
  288.         
  289.         #siteNav.medium > li a {
  290.             padding: 8px 15px;
  291.             font-size: 16px;
  292.         }
  293.         
  294.         #siteNav.medium > li {
  295.             flex: 0 1 auto;
  296.         }
  297.         
  298.         #siteNav.medium > li:not(:first-child):not(.lang-image-li):not(.user-menu):not(.login-nav-item):not(.minicart-nav-item) {
  299.             flex: 1 1 auto;
  300.             max-width: 180px;
  301.         }
  302.     }
  303.     @media only screen and (max-width: 1690px) {
  304.         #siteNav.medium > li a {
  305.             padding: 8px 10px;
  306.             font-size: 15px;
  307.         }
  308.     }
  309.     @media only screen and (max-width: 1500px) {
  310.         #siteNav.medium > li a {
  311.             padding: 8px 10px;
  312.             font-size: 15px;
  313.         }
  314.     }
  315.     @media only screen and (max-width: 1300px) {
  316.         #siteNav.medium > li a {
  317.             padding: 8px 10px;
  318.             font-size: 14px;
  319.         }
  320.     }
  321.     @media (max-width: 1090px) {
  322.         #siteNav.medium > li a {
  323.             padding: 8px 5px;
  324.             font-size: 14px;
  325.         }
  326.         .login-nav-item a.site-nav .text {
  327.             display: inline !important;
  328.             white-space: nowrap !important;
  329.         }
  330.         .login-nav-item a.site-nav i {
  331.             display: none !important;
  332.         }
  333.         
  334.         #siteNav.medium > li a[href*="technicalArea"],
  335.         #siteNav.medium > li a[href*="technical-area"] {
  336.             white-space: nowrap !important;
  337.             min-width: max-content !important;
  338.         }
  339.     }
  340.     @media (min-width: 1240px) {
  341.         .login-nav-item a.site-nav .text.d-none.d-xl-inline {
  342.             display: inline !important;
  343.         }
  344.         .login-nav-item a.site-nav i.d-block.d-xl-none {
  345.             display: none !important;
  346.         }
  347.     }
  348.     @media (max-width: 1239px) {
  349.         .login-nav-item a.site-nav .text.d-none.d-xl-inline {
  350.             display: none !important;
  351.         }
  352.         .login-nav-item a.site-nav i.d-block.d-xl-none {
  353.             display: block !important;
  354.         }
  355.     }
  356.     @media (min-width: 991px) {
  357.         .header.header-space-mobile {
  358.             padding-bottom: 15px;
  359.         }
  360.     }
  361.     @media (max-width: 991px) {
  362.         .header.header-space-mobile {
  363.             padding: 15px 0;
  364.         }
  365.     }
  366. </style>
  367. <div class="menu-outer d-none d-lg-block pb-1 mt-1">
  368.     <div class="container-fluid">
  369.         <div class="row">
  370.             <div class="col-1 col-sm-1 col-md-1 col-lg-12 align-self-center d-menu-col">
  371.                 <nav class="grid__item position-relative" id="AccessibleNav" >
  372.                     {# LOGO MOVED INSIDE UL #}
  373.                     <ul id="siteNav" class="site-nav medium center hidearrow align-items-center">
  374.                         <li class="lvl1 logo-nav-item"> {# LOGO ADDED AS LI #}
  375.                             <a href="{{ isRoot ? '#sticky-header' : navStartNode~'/' }}" class="m-0 p-0 py-2 logo-link">
  376.                                 <img src="{{ asset('/static2/images/midnight/assets/logo-bsn.png') }}" class="rounded-circle navbar-logo" style="width: 35px; vertical-align: middle;">
  377.                             </a>
  378.                         </li>
  379.                         {#  PRODUCTS #}
  380.                         <li class="lvl1 parent megamenu">
  381.                             <a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/products/default_m1' : 'es/productos/default_m1') }}">{{ 'layout.navbar-desktop.products_translations'|trans }}
  382.                                 <i class="an an-angle-down-l"></i>
  383.                             </a>
  384.                             {{ pimcore_inc(document.getProperty('categories-navbar'), {}, false) }}
  385.                         </li>
  386.                         {#  HOME #}
  387.                         {# ABOUT US #}
  388.                         <li class="lvl1 parent dropdown">
  389.                             <a href="{{ isRoot ? '#featured-services' : navStartNode~'#featured-services' }}">{{ 'layout.footer.information.professional-area_translations' | trans }}
  390.                                 <i class="an an-angle-down-l"></i>
  391.                             </a>
  392.                                 <ul class="dropdown">
  393.                                     <li><a href="{{ isAboutUs ? '#company' : navStartNode~'/'~ (app.request.locale == 'en' ? 'about-us' : 'empresa') }}" class="site-nav">{{ 'home.about-us_title_translations' | trans}}</a></li>
  394.                                     <li><a href="{{ isAboutUs ? '#technicalAdvice' : navStartNode~'/'~ (app.request.locale == 'en' ? 'about-us#technicalAdvice' : 'empresa#technicalAdvice') }}" class="site-nav">{{ 'home.about-us-cards.technical_advice_translations' | trans }}</a></li>
  395.                                     <li><a href="{{ isAboutUs ? '#customService' : navStartNode~'/'~ (app.request.locale == 'en' ? 'about-us#customService' : 'empresa#customService') }}" class="site-nav">{{ 'home.about-us-cards.custom_service_translations' | trans }}</a></li>
  396.                                     <li><a href="{{ isAboutUs ? '#stockLogistic' : navStartNode~'/'~ (app.request.locale == 'en' ? 'about-us#stockLogistic' : 'empresa#stockLogistic') }}" class="site-nav">{{ 'home.about-us-cards.stock_and_logistics_translations' | trans }}</a></li>
  397.                                     <li><a href="{{ isAboutUs ? '#stockLogistic' : navStartNode~'/'~ (app.request.locale == 'en' ? 'about-us#stockLogistic' : 'empresa#stockLogistic') }}" class="site-nav">{{ 'home.about-us-cards.training_translations'| trans }}</a></li>
  398.                                 </ul>
  399.                         </li>
  400.                         {# Technical Area #}
  401.                         <li class="lvl1 parent dropdown">
  402.                             <a href="{{ isRoot ? '#technicalArea' : navStartNode~'#technicalArea' }}">{{ 'Layout.Navegation.Technical-Area_translations' | trans }}
  403.                                 <i class="an an-angle-down-l"></i>
  404.                             </a>
  405.                             {% if  currentPath != '/' and currentPath != '/en' %}
  406.                                 <ul class="dropdown">
  407.                                     <li><a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/technical-area/painting-schemes' : 'es/area-tecnica/esquemas-de-pintado') }}" class="site-nav">{{ "Esquemas de pintado" | trans }}</a></li>
  408.                                     <li><a href="#" class="site-nav" id="search-link">{{ "Fichas técnicas y de seguridad" | trans }}</a></li>
  409.                                     <li><a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/technical-area/calculate-square-meters' : 'es/area-tecnica/calcular-metros-cuadrados') }}" class="site-nav">{{ "Calcular metros cuadrados" | trans }}</a></li>
  410.                                     <li><a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/technical-area/how-much-paint-do-I-need' : 'es/area-tecnica/cuanta-pintura-necesito') }}" class="site-nav">{{ "Cuánta pintura necesito?" | trans }}</a></li>
  411.                                 </ul>
  412.                             {% endif %}
  413.                         </li>
  414.                         {# Catalog Area #}
  415.                         <li class="lvl1 parent dropdown">
  416.                             <a href="{{ isRoot ? '#catalog' : navStartNode~'#catalog' }}">{{ 'lbl_Catálogo' | trans }}
  417.                                 <i class="an an-angle-down-l"></i>
  418.                             </a>
  419.                         </li>
  420.                         {% if not is_authenticated %}
  421.                             <li class="lvl1 parent dropdown">
  422.                                 <a href="{{ isRoot ? '#collaborators' : navStartNode~'#collaborators' }}">{{ "layout.navegation.collaborators_translations" | trans}}<i class="an an-angle-down-l"></i></a>
  423.                                 {% if  currentPath != '/' and currentPath != '/en' %}
  424.                                     <ul class="dropdown">
  425.                                         <li>
  426.                                             <a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/point-of-sale' : 'es/puntos-de-venta') }}" class="site-nav">{{ 'home.collaborators.points-of-sale_translations' | trans}}</a>
  427.                                         </li>
  428.                                         <li>
  429.                                             <a href="{{ '/' ~ (app.request.locale == 'en' ? 'en/industry-professionals' : 'es/profesionales-del-sector') }}" class="site-nav">{{ 'home.collaborators.industry-professionals_translations' | trans}}</a>
  430.                                         </li>
  431.                                     </ul>
  432.                                 {% endif %}
  433.                             </li>
  434.                         {% else %}
  435.                             {# Define las rutas para ambos idiomas #}
  436.                             {% set ratesEnRoute = 'rates-view-translated-en' %}
  437.                             {% set ratesEsRoute = 'rates-view-translated-es' %}
  438.                             {# Asigna las rutas según el idioma actual #}
  439.                             {% if currentLocale == 'en' %}
  440.                                 {% set ratesRoute = ratesEnRoute %}
  441.                             {% else %}
  442.                                 {% set ratesRoute = ratesEsRoute %}
  443.                             {% endif %}
  444.                             <li class="lvl1 parent dropdown">
  445.                                 <a href="{{path(ratesRoute)}}">{{ 'lbl_Tarifa' | trans }}<i class="an an-angle-down-l"></i></a>
  446.                             </li>
  447.                         {% endif %}
  448.                         {# <li class="lvl1 parent dropdown">
  449.                             <a href="{{ isRoot ? '#news' : navStartNode~'#news' }}">{{ 'layout.navbar-desktop.new-arrivals_translations' | trans }}<i class="an an-angle-down-l"></i></a>
  450.                         </li> #}
  451.                         <li class="lvl1 parent dropdown">
  452.                             <a href="{{ isRoot ? '#team' : navStartNode~'#team' }}">{{ 'layout.navbar-desktop.team_translations' | trans }}<i class="an an-angle-down-l"></i></a>
  453.                         </li>
  454.                         <li class="lvl1 parent dropdown">
  455.                             <a href="{{ isRoot ? '#contact' : navStartNode~'#contact' }}" class="site-nav">
  456.                                 {{ 'BotonContacto' | trans }}<i class="an an-angle-down-l"></i>
  457.                             </a>
  458.                         </li>
  459.                         {# Gets the events document dinamically with his path to get the data from the editables in it#}
  460.                         {% set documentName = app.request.locale == 'en' ? '/recent-events' : '/eventos-recientes' %}
  461.                         {% set eventDocument = pimcore_document_by_path('/' ~ app.request.locale ~ documentName) %}
  462.                         {% set eventBlock = eventDocument.getEditable('eventBlock') %}
  463.                         {% if eventBlock is not null and not eventBlock.isEmpty() %}
  464.                             <li class="lvl1 parent dropdown">
  465.                                 {% set eventsPath = app.request.locale == 'en' ? '/en/recent-events' : '/es/eventos-recientes' %}
  466.                                 <a href="{{ eventsPath }}" class="site-nav">
  467.                                     {{ 'Events' | trans }}<i class="an an-angle-down-l"></i>
  468.                                 </a>
  469.                             </li>
  470.                         {% endif %}
  471.                         <div class="d-flex align-items-center">
  472.                             {% if is_authenticated %}
  473.                                 <div class="user-link iconset">
  474.                                     <i class="icon an an-user d-block"></i>
  475.                                     <span class="text d-none d-lg-flex"></span>
  476.                                 </div>
  477.                                 {{ include("layout/includes/user-links.html.twig") }}
  478.                                 {{ pimcore_inc('/' ~ app.request.locale ~ '/includes/navbar-top',{},false) }}
  479.                             {% else %}
  480.                                 <li class="lvl1 login-nav-item">
  481.                                     <a href="{{ path(loginRoute) }}" class="site-nav">
  482.                                         <i class="icon an an-sign-in-al d-block d-xl-none"></i>
  483.                                         <span class="text d-none d-xl-inline">{{ 'layout.navbar-desktop.professional-area_translations' | trans }}</span>
  484.                                     </a>
  485.                                 </li>
  486.                             {% endif %}
  487.                             <li class="lvl1 lang-image-li iconset" >
  488.                                 {% set currentLanguage = app.request.locale %}
  489.                                 {% if currentLanguage == 'es' %}
  490.                                 <a href="{{ pimcore_document(1) ~ 'en'}}">
  491.                                     <img class="lang-image" src="{{ asset('assets/images/icons8-great-britain-48.png') }}" alt="English"/>
  492.                                 </a>
  493.                                 <span class="tooltip-label">English</span>
  494.                                 {% elseif currentLanguage == 'en' %}
  495.                                 <a href="{{ pimcore_document(1) ~ 'es'}}">
  496.                                     <img class="lang-image" src="{{ asset('assets/images/icons8-spain-48.png') }}" alt="Español"/>
  497.                                 </a>
  498.                                 <span class="tooltip-label">Español</span>
  499.                                 {% endif %}
  500.                             </li>
  501.                         </div>
  502.                     </ul>
  503.                 </nav>
  504.             </div>
  505.         </div>
  506.     </div>
  507. </div>
  508. <script>
  509.     document.addEventListener("DOMContentLoaded", function() {
  510.         var searchLink = document.getElementById("search-link");
  511.         var searchBox = document.getElementById("search-box");
  512.         var lang = document.documentElement.lang;
  513.         var placeholderText = lang === "en" ? "What product do you want technical information for?" : "¿De qué producto quiere su ficha técnica?";
  514.         var placeholderInterval;
  515.         var placeholderTextIndex = 0;
  516.         var isTyping = false;
  517.         function typePlaceholderText(element, text, interval) {
  518.             placeholderTextIndex = 0;
  519.             clearInterval(placeholderInterval);
  520.             isTyping = true;
  521.             placeholderInterval = setInterval(function() {
  522.                 element.setAttribute("placeholder", text.slice(0, placeholderTextIndex));
  523.                 element.style.color = "red";
  524.                 placeholderTextIndex++;
  525.                 if (placeholderTextIndex > text.length) {
  526.                     clearInterval(placeholderInterval);
  527.                     isTyping = false;
  528.                 }
  529.             }, interval);
  530.         }
  531.         function shakeSearchBox() {
  532.             if (isTyping) {
  533.                 clearInterval(placeholderInterval);
  534.                 isTyping = false;
  535.                 searchBox.style.color = "black";
  536.             }
  537.             searchBox.value = "";
  538.             searchBox.removeAttribute("placeholder");
  539.             searchBox.focus();
  540.             searchBox.classList.add("shake");
  541.             setTimeout(function() {
  542.                 searchBox.classList.remove("shake");
  543.                 typePlaceholderText(searchBox, placeholderText, 100);
  544.             }, 600);
  545.             searchBox.focus();
  546.         }
  547.         searchLink.addEventListener("click", function(event) {
  548.             event.preventDefault();
  549.             shakeSearchBox();
  550.         });
  551.         searchBox.addEventListener("input", function() {
  552.             if (searchBox.getAttribute("placeholder") === placeholderText) {
  553.                 searchBox.value = "";
  554.                 searchBox.removeAttribute("placeholder");
  555.             }
  556.             if (searchBox.value.length > 0) {
  557.                 searchBox.style.setProperty("color", "#000000", "important");
  558.             } else if (!isTyping) {
  559.                 searchBox.style.setProperty("color", "#FF0000", "important");
  560.             }
  561.         });
  562.         searchBox.addEventListener("keydown", function() {
  563.             if (isTyping) {
  564.                 clearInterval(placeholderInterval);
  565.                 isTyping = false;
  566.                 searchBox.removeAttribute("style");
  567.             }
  568.         });
  569.     });
  570. </script>