PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / blocks / faq2 / view.js
vk-blocks / src / blocks / faq2 Last commit date
deprecated 2 weeks ago block.json 1 day ago edit.js 2 months ago icon.svg 2 months ago index.js 2 months ago index.php 2 months ago save.js 2 months ago view.js 1 day ago
view.js
66 lines
1 const vkFaq2Container = document.getElementsByClassName('vk_faq-accordion');
2
3 const FAQ2ToggleLoop = (i) => {
4 const titleElement = vkFaq2Container[i].querySelector('.vk_faq_title');
5 const contentElement = vkFaq2Container[i].querySelector('.vk_faq_content');
6
7 // Assign unique ID to content element for aria-controls / コンテンツ要素にユニークIDを付与(aria-controls のため)
8 const contentId = `vk-faq2-content-${i}`;
9 contentElement.setAttribute('id', contentId);
10
11 titleElement.setAttribute('tabindex', '0');
12 titleElement.setAttribute('role', 'button');
13 titleElement.setAttribute('aria-controls', contentId);
14 // デフォルト値として false を設定し、open クラスがあれば true に上書きする
15 titleElement.setAttribute('aria-expanded', 'false');
16
17 if (vkFaq2Container[i].classList.contains('vk_faq-accordion-open')) {
18 contentElement.classList.add('vk_faq_content-accordion-open');
19 titleElement.setAttribute('aria-expanded', 'true');
20 }
21
22 if (vkFaq2Container[i].classList.contains('vk_faq-accordion-close')) {
23 contentElement.classList.add('vk_faq_content-accordion-close');
24 titleElement.setAttribute('aria-expanded', 'false');
25 }
26
27 const handleToggle = () => {
28 if (vkFaq2Container[i].classList.contains('vk_faq-accordion-open')) {
29 vkFaq2Container[i].classList.remove('vk_faq-accordion-open');
30 vkFaq2Container[i].classList.add('vk_faq-accordion-close');
31
32 contentElement.classList.remove('vk_faq_content-accordion-open');
33 contentElement.classList.add('vk_faq_content-accordion-close');
34 titleElement.setAttribute('aria-expanded', 'false');
35 } else if (
36 vkFaq2Container[i].classList.contains('vk_faq-accordion-close')
37 ) {
38 vkFaq2Container[i].classList.remove('vk_faq-accordion-close');
39 vkFaq2Container[i].classList.add('vk_faq-accordion-open');
40
41 contentElement.classList.remove('vk_faq_content-accordion-close');
42 contentElement.classList.add('vk_faq_content-accordion-open');
43 titleElement.setAttribute('aria-expanded', 'true');
44 }
45 };
46
47 titleElement.addEventListener('click', handleToggle, false);
48
49 // Add keyboard support (Enter / Space) for toggle / Enter / Space キーで開閉できるようにキーボードイベントを追加
50 titleElement.addEventListener(
51 'keydown',
52 (e) => {
53 if (e.key === 'Enter' || e.key === ' ') {
54 // Prevent default Space key scroll behavior / Space キーはページスクロールを防ぐ
55 e.preventDefault();
56 handleToggle();
57 }
58 },
59 false
60 );
61 };
62
63 for (let i = 0; i < vkFaq2Container.length; i++) {
64 FAQ2ToggleLoop(i);
65 }
66