UNPKG

@typo3/icons

Version:

SVG icons for the TYPO3 CMS backend

78 lines (66 loc) 2.75 kB
// Inplace Search and BiDi Filter document.addEventListener("DOMContentLoaded", () => { let search = document.getElementById('search'); let bidiFilter = document.getElementById('bidiFilter'); let iconList = document.getElementById('iconlist'); if (search && iconList) { search.addEventListener('keyup', filterIcons); if (bidiFilter) { bidiFilter.addEventListener('change', filterIcons); } function filterIcons() { let searchWord = search.value.toLowerCase(); let showBidiOnly = bidiFilter ? bidiFilter.checked : false; let icons = iconList.querySelectorAll('[data-type="icon"]'); for (let i = 0; i < icons.length; i++) { let icon = icons[i]; let elementSearch = icon.dataset.search; let isBidi = icon.dataset.bidi === 'true'; // Check search filter let matchesSearch = elementSearch.toLowerCase().indexOf(searchWord) > -1; // Check BiDi filter let matchesBidi = !showBidiOnly || isBidi; // Show icon if it matches both filters if (matchesSearch && matchesBidi) { icon.style.display = 'flex'; } else { icon.style.display = 'none'; } } } } document.querySelectorAll('.code-copy-btn').forEach((button) => { button.addEventListener('click', () => { const codeBlock = button.nextElementSibling?.querySelector('code'); if (codeBlock) { const textToCopy = codeBlock.textContent.trim(); navigator.clipboard .writeText(textToCopy) .then(() => { button.textContent = 'Copied!'; setTimeout(() => { button.textContent = 'Copy'; }, 2000); }) .catch((error) => { console.error('Failed to copy text:', error); }); } }); }); }); // Theme const getPreferredTheme = () => { return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' } const setTheme = (theme) => { if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) { document.documentElement.setAttribute('data-bs-theme', 'dark') } else { document.documentElement.setAttribute('data-bs-theme', theme) } } window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { setTheme(getPreferredTheme()) }); setTheme(getPreferredTheme());