PageSourceSearch

https://www.fgc.cat/wp-content/plugins/chatbot/assets/script.js?ver=1790233171

js fgc.cat collected 2026-09-24 09:00:45 UTC 4,394 bytes, 140 lines download raw bytes

1// Revisar el lenguaje activo y poner clase activa
2document.addEventListener("DOMContentLoaded", function () {
3  // Mostrar u ocultar el chatBox al hacer clic en el botón
4  let currentLang = document.documentElement.lang ?? 'ca';
5  if(currentLang === 'en-US') currentLang = 'en';
6  if(currentLang === 'es-ES') currentLang = 'es';
7  updateLanguage(currentLang);
8
9  const chatButton = document.querySelector('.chatButton');
10  const chatBot = document.querySelector('.chatBot');
11  const chatBox = document.querySelector('.chatBox');
12
13  // Rate
14  let rated = false;
15  const chatRate = document.querySelector('.chatRate');
16  function toggleRate(actualVisiblity) {
17    if (!rated) {
18      chatRate.classList.toggle('show');
19      setTimeout(() => {
20        chatButton.classList.toggle('big');
21      }, actualVisiblity ? 0 : 1000);
22    }
23  }
24
25  const stars = document.querySelectorAll('.chatRate-star');
26  stars.forEach((star, index) => {
27    star.addEventListener('mouseover', function () {
28      console.log('asd');
29      stars.forEach((star2, starIndex) => {
30        if (starIndex <= index) {
31          star2.classList.add('hover');
32        }
33      });
34    });
35
36    star.addEventListener('mouseleave', function () {
37      stars.forEach((star2, starIndex) => {
38        if (starIndex <= index) {
39          star2.classList.remove('hover');
40        }
41      });
42    });
43
44    star.addEventListener('click', function () {
45      stars.forEach((star2, starIndex) => {
46        if (starIndex <= index) {
47          // star2.classList.add('active');
48        } else {
49          // star2.classList.remove('active');
50        }
51      });
52      rated = true;
53    })
54  })
55
56  // Lenguaje
57  const chatLangChevron = document.querySelector('.chatBox-header-languageSelect-lang svg');
58  const chatLangSelect = document.querySelector('.chatBox-header-languageSelect-lang');
59  const chatLangList = document.querySelector('.chatBox-header-languageSelect-list');
60  const options = Array.from(chatLangList.children);
61
62  function handleLanguageClick() {
63    chatLangList.hidden = true;
64    chatLangList.classList.remove('show');
65    chatLangSelect.setAttribute('aria-expanded', false);
66    chatLangSelect.focus();
67  }
68
69  function handleUpdateLanguage(element, event) {
70    let currentLang = document.documentElement.lang;
71
72    if(currentLang === 'en-US') currentLang = 'en';
73    if(currentLang === 'es-ES') currentLang = 'es';
74    const picketValue = event.target.dataset.value.toLowerCase();
75
76    if (picketValue !== currentLang) {
77      element.classList.add('active');
78      document.documentElement.lang = picketValue;
79      // Dispatch a custom event named 'languageUpdated'
80      const customEvent = new CustomEvent('languageUpdated', { detail: { language: picketValue } });
81      document.dispatchEvent(customEvent);
82    }
83  }
84
85  // Cambiar idioma
86  document.addEventListener('click', function (event) {
87    if (chatLangSelect.contains(event.target)) {
88      chatLangList.classList.toggle('show');
89      chatLangChevron.classList.toggle('show');
90      const isExpanded = chatLangSelect.getAttribute('aria-expanded') === 'true';
91      chatLangSelect.setAttribute('aria-expanded', !isExpanded)
92      if (!isExpanded) {
93        options[0].focus();
94      }
95      return;
96    }
97
98    const isExpanded = chatLangSelect.getAttribute('aria-expanded') === 'true';
99    if (isExpanded && !chatLangList.contains(event.target)) {
100      handleLanguageClick()
101    }
102  });
103
104  options.forEach((option, index) => {
105    option.addEventListener('click', function (event) {
106      handleUpdateLanguage(option, event);
107      handleLanguageClick();
108    });
109    option.addEventListener('keydown', (event) => {
110      switch (event.key) {
111        case 'ArrowDown':
112          if (index < options.length - 1) {
113            options[index + 1].focus();
114          }
115          break;
116        case 'ArrowUp':
117          if (index > 0) {
118            options[index - 1].focus();
119          }
120          break;
121        case 'Enter':
122        case ' ':
123          handleUpdateLanguage(option, event);
124          handleLanguageClick();
125          break;
126      }
127      event.preventDefault();
128    });
129  });
130
131  // Cerrar menu al seleccionar un idioma
132  chatLangList.addEventListener('click', function () {
133    chatLangList.classList.remove('show');
134  })
135
136});
137
138document.addEventListener('languageUpdated', function (event) {
139  updateLanguage(event.detail.language);
140});

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.