1/** 2 * Studio L - fiyat listesi arama + kategori filtresi. 3 * 4 * Duda tarafinda bu JS export'a girmemisti; davranis canli siteden birebir alindi: 5 * - "All" sekmesi tum kategorileri gosterir 6 * - Bir kategori secilince sadece o bolum kalir 7 * - Arama tum satirlarda gecer, bos kalan kategori gizlenir 8 * - Arama yazilinca kategori filtresi "All"a doner 9 */ 10( function () { 11 'use strict'; 12 13 document.querySelectorAll( '[data-studiol-pricing]' ).forEach( function ( root ) { 14 var search = root.querySelector( '[data-studiol-search]' ); 15 var tabs = Array.prototype.slice.call( root.querySelectorAll( '[data-studiol-filter]' ) ); 16 var categories = Array.prototype.slice.call( root.querySelectorAll( '[data-studiol-category]' ) ); 17 var empty = root.querySelector( '[data-studiol-empty]' ); 18 var status = root.querySelector( '[data-studiol-status]' ); 19 20 var current = tabs.length ? tabs[ 0 ].dataset.studiolFilter : 'all'; 21 22 function apply() { 23 var q = search ? search.value.trim().toLowerCase() : ''; 24 var shown = 0; 25 26 categories.forEach( function ( cat ) { 27 var key = cat.dataset.studiolCategory; 28 var inFilter = current === 'all' || current === key; 29 var visibleRows = 0; 30 31 cat.querySelectorAll( '[data-studiol-search-text]' ).forEach( function ( row ) { 32 var match = ! q || row.dataset.studiolSearchText.indexOf( q ) !== -1; 33 var show = inFilter && match; 34 row.hidden = ! show; 35 if ( show ) { 36 visibleRows++; 37 } 38 } ); 39 40 cat.hidden = visibleRows === 0; 41 shown += visibleRows; 42 } ); 43 44 if ( empty ) { 45 empty.hidden = shown !== 0; 46 } 47 if ( status ) { 48 status.textContent = shown + ' service' + ( shown === 1 ? '' : 's' ) + ' shown'; 49 } 50 } 51
52 tabs.forEach( function ( tab ) { 53 tab.addEventListener( 'click', function () { 54 current = tab.dataset.studiolFilter; 55 tabs.forEach( function ( t ) { 56 var active = t === tab; 57 t.classList.toggle( 'is-active', active ); 58 t.setAttribute( 'aria-pressed', active ? 'true' : 'false' ); 59 } ); 60 apply(); 61 } ); 62 } ); 63 64 if ( search ) { 65 var timer; 66 search.addEventListener( 'input', function () { 67 clearTimeout( timer ); 68 timer = setTimeout( function () { 69 // Arama yapilinca kategori kisitini kaldir ki sonuc kaybolmasin 70 if ( search.value.trim() && current !== 'all' && tabs.length ) { 71 current = 'all'; 72 tabs.forEach( function ( t, i ) { 73 t.classList.toggle( 'is-active', i === 0 ); 74 t.setAttribute( 'aria-pressed', i === 0 ? 'true' : 'false' ); 75 } ); 76 } 77 apply(); 78 }, 120 ); 79 } ); 80 } 81 82 apply(); 83 } ); 84}() );
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.