T-SOFT/Tema Geliştirme/JavaScript/JS Yardımcı Fonksiyonları

JS Yardımcı Fonksiyonları

Bu sayfa, general.js dosyasında tanımlı olan ve tema genelinde global olarak erişilebilen yardımcı JavaScript fonksiyonlarını belgeler. API isteklerinden DOM manipülasyonuna, fiyat formatlamadan form doğrulamaya kadar tüm yardımcıları theme.js içinden doğrudan çağırabilirsiniz.

Bu fonksiyonlar sayfaya otomatik yüklenir; import veya script eklemeye gerek yoktur. Hazır bileşenler için bkz. JS Bileşenleri.

getLocale()

Sayfanın diline göre yerel ayar (locale) bilgisini döndürür.

Parametre almaz.

Dönüş değeri: string — yerel ayar kodu (örneğin tr-TR, en-US).

theme.js
const locale = getLocale(); // "tr-TR"

request()

Asenkron HTTP istekleri gönderir.

ParametreTipAçıklama
methodstring (opsiyonel)HTTP yöntemi (GET, POST vb.). Varsayılan: GET.
urlstringİstek gönderilecek URL.
dataany (opsiyonel)Gönderilecek veri (örneğin FormData).
acceptstring (opsiyonel)Beklenen yanıt türü (JSON).

Dönüş değeri: Promise — yanıt verisi (JSON veya metin).

theme.js
request('GET', '/api/data', null, 'JSON')
    .then(response => console.log(response))
    .catch(error => console.error(error));

LocalApi.get()

localStorage üzerinden veri alır.

ParametreTipAçıklama
keystringAlınacak verinin anahtarı.
defany (opsiyonel)Anahtar yoksa dönecek varsayılan değer. Varsayılan: false.

Dönüş değeri: any — alınan veri veya varsayılan değer.

theme.js
const value = LocalApi.get('compare', null); // compare anahtarındaki veriyi alır

LocalApi.set()

localStorage üzerine veri kaydeder.

ParametreTipAçıklama
keystringKaydedilecek verinin anahtarı.
valanyKaydedilecek veri.
timeoutnumber (opsiyonel)Geçerlilik süresi (saniye). Varsayılan: 1 yıl.

Dönüş değeri: boolean — işlem başarılıysa true.

theme.js
LocalApi.set('user', { id: 1 }, 3600); // 1 saatlik geçerlilik süresi

LocalApi.remove()

localStorage üzerinden veri siler.

ParametreTipAçıklama
keystringSilinecek verinin anahtarı.

Dönüş değeri: boolean — işlem başarılıysa true.

theme.js
LocalApi.remove('user'); // user anahtarını siler

scrollBehavior()

Sayfayı belirtilen bir elemana kaydırır.

ParametreTipAçıklama
hrefstring | object (opsiyonel)Kaydırılacak elemanın seçicisi veya DOM elemanı.
heightnumber (opsiyonel)Üstten kaydırma mesafesi. Varsayılan: 0.
triggerboolean (opsiyonel)Elemana tıklamayı da tetikler. Varsayılan: false.

Dönüş değeri: Yok.

theme.js
scrollBehavior('#section1', 100); // #section1 elemanına 100px üstten kaydır

loader()

Sayfa yükleme göstergesini kontrol eder.

ParametreTipAçıklama
statusboolean (opsiyonel)true olduğunda body elemanına is-loading sınıfı atar. Varsayılan: false.

Dönüş değeri: Yok.

theme.js
loader(true);  // Yükleme göstergesini göster
loader(false); // Yükleme göstergesini gizle

addClass()

Belirtilen elemanlara sınıf ekler.

ParametreTipAçıklama
elementNodeList | ArraySınıf eklenecek elemanlar.
clsstringEklenecek sınıf(lar).

Dönüş değeri: Yok.

theme.js
addClass(document.querySelectorAll('.item'), 'active');

removeClass()

Belirtilen elemanlardan sınıf kaldırır.

ParametreTipAçıklama
elementNodeList | ArraySınıf kaldırılacak elemanlar.
clsstringKaldırılacak sınıf(lar).

Dönüş değeri: Yok.

theme.js
removeClass(document.querySelectorAll('.item'), 'active');

toggleClass()

Belirtilen elemanlarda sınıfı değiştirir (varsa kaldırır, yoksa ekler).

ParametreTipAçıklama
elementNodeList | ArraySınıf değiştirilecek elemanlar.
clsstringDeğiştirilecek sınıf(lar).

Dönüş değeri: Yok.

theme.js
toggleClass(document.querySelectorAll('.item'), 'active');

getUrlParam()

URL'den belirli bir parametreyi alır.

ParametreTipAçıklama
keystringAlınacak parametrenin anahtarı.
urlstring (opsiyonel)Parametre alınacak URL. Varsayılan: mevcut sayfa URL'si.

Dönüş değeri: string | null — parametre değeri veya null.

theme.js
const param = getUrlParam('id'); // ?id=123 -> "123"

setUrlParam()

URL'ye bir parametre ekler veya günceller.

ParametreTipAçıklama
keystringEklenecek/güncellenecek parametrenin anahtarı.
valuestringParametre değeri.
urlstring (opsiyonel)İşlem yapılacak URL. Varsayılan: mevcut sayfa URL'si.

Dönüş değeri: URL — güncellenmiş URL nesnesi.

theme.js
const newUrl = setUrlParam('id', '123', 'https://example.com'); // https://example.com?id=123

deleteUrlParam()

URL'den belirli bir parametreyi siler.

ParametreTipAçıklama
keystringSilinecek parametrenin anahtarı.
urlstring (opsiyonel)İşlem yapılacak URL. Varsayılan: mevcut sayfa URL'si.

Dönüş değeri: URL — güncellenmiş URL nesnesi.

theme.js
const newUrl = deleteUrlParam('id', 'https://example.com?id=123'); // https://example.com

setCookie()

Çerez (cookie) oluşturur.

ParametreTipAçıklama
cookieNamestringÇerez adı.
cookieValuestringÇerez değeri.
ExDaysnumberGeçerlilik süresi (gün).

Dönüş değeri: Yok.

theme.js
setCookie('user', 'john', 30); // 30 gün geçerli bir çerez oluşturur

getCookie()

Belirtilen çerezin değerini alır.

ParametreTipAçıklama
cookieNamestringÇerez adı.

Dönüş değeri: string — çerez değeri veya boş string.

theme.js
const user = getCookie('user'); // "john"

browser()

Kullanıcının tarayıcısını tespit eder.

Parametre almaz.

Dönüş değeri: string — tarayıcı adı (örneğin Google Chrome, Mozilla Firefox).

theme.js
const browserName = browser(); // "Google Chrome"

isMobile()

Cihazın mobil olup olmadığını kontrol eder.

ParametreTipAçıklama
sizenumber (opsiyonel)Maksimum ekran genişliği. Varsayılan: 1024.

Dönüş değeri: boolean — mobil cihazsa true.

theme.js
const isMob = isMobile(); // true / false

URL'ye parametre ekler veya günceller ve sonucu string olarak döndürür.

ParametreTipAçıklama
paramstringEklenecek/güncellenecek parametre.
valuestringParametre değeri.
linkstring (opsiyonel)İşlem yapılacak URL. Varsayılan: mevcut sayfa URL'si.

Dönüş değeri: string — güncellenmiş URL.

theme.js
const url = getLink('page', '2'); // ?page=2

evalScripts()

Metin içerisindeki <script> etiketlerini çalıştırır.

ParametreTipAçıklama
contentstringÇalıştırılacak HTML içeriği.

Dönüş değeri: Yok.

theme.js
evalScripts('<script>console.log("Merhaba");</script>'); // Konsola "Merhaba" yazar

evalScriptsAdd()

Metin içerisindeki <script> etiketlerini DOM'a ekler.

ParametreTipAçıklama
contentstringHTML içeriği.
idstringScript elemanlarına atanacak ID öneki.

Dönüş değeri: boolean — işlem başarılıysa true.

theme.js
evalScriptsAdd('<script>console.log("Merhaba");</script>', 'script1');

scriptAdd()

Sayfaya harici bir script dosyası ekler.

ParametreTipAçıklama
srcstringScript dosyasının URL'si.
onloadfunction (opsiyonel)Script yüklendiğinde çalışacak fonksiyon.
onerrorfunction (opsiyonel)Hata durumunda çalışacak fonksiyon.
integritystring (opsiyonel)Script için bütünlük (integrity) değeri.

Dönüş değeri: Yok.

theme.js
scriptAdd('https://example.com/script.js', () => console.log('Yüklendi'));

setLanguage()

Sayfa dilini değiştirir.

ParametreTipAçıklama
valuestringYeni dil kodu (örneğin tr, en).
callbackstring | function (opsiyonel)Dil değişimi sonrası çalışacak fonksiyon.

Dönüş değeri: Yok.

theme.js
setLanguage('en', () => console.log('Dil değişti'));

setCurrency()

Sayfa para birimini değiştirir.

ParametreTipAçıklama
valuestringYeni para birimi kodu (örneğin TL, USD).
callbackstring | function (opsiyonel)Para birimi değişimi sonrası çalışacak fonksiyon.

Dönüş değeri: Yok.

theme.js
setCurrency('USD', () => console.log('Para birimi değişti'));

copyText()

Metni panoya kopyalar ve bir bildirim gösterir.

ParametreTipAçıklama
textstringKopyalanacak metin.
msgstring (opsiyonel)Bildirim mesajı.

Dönüş değeri: Yok.

theme.js
copyText('Merhaba', 'Kopyalandı!'); // Metni kopyalar ve bildirim gösterir

awaitTimeOut()

Belirtilen süre kadar bekleyen bir Promise döndürür.

ParametreTipAçıklama
msnumberBekleme süresi (milisaniye).

Dönüş değeri: Promise — bekleme tamamlandığında çözülür.

theme.js
await awaitTimeOut(1000); // 1 saniye bekler

Bir modal pencere oluşturur ve gösterir.

ParametreTipAçıklama
options.idstringModal ID'si.
options.classstringModal sınıfı (success, danger, info).
options.widthstringModal genişliği (örneğin 580px).
options.heightstringModal yüksekliği.
options.titlestringModal başlığı.
options.htmlstringModal içeriği.
options.timeoutnumberOtomatik kapanma süresi (milisaniye).
options.closebooleanKapatma düğmesi gösterilsin mi?
options.disabledClosebooleanKapatma devre dışı mı?
options.iconHtmlstringModal simgesi.
options.alertbooleanUyarı modalı mı?
options.buttonsarrayModal düğmeleri.
options.callbacksobjectAçılma/kapanma geri çağırımları.

Dönüş değeri: Yok.

theme.js
modal({
    id: 'myModal',
    title: 'Başlık',
    html: '<p>Merhaba Dünya</p>',
    buttons: [{ text: 'Kapat', event: () => modalClose() }]
});

modalClose()

Modal pencereyi kapatır.

ParametreTipAçıklama
modalstring | HTMLElement (opsiyonel)Kapatılacak modalın seçicisi veya DOM elemanı.
modalObjobject (opsiyonel)Modal nesnesi.

Dönüş değeri: Yok.

theme.js
modalClose('#myModal'); // #myModal ID'li modalı kapatır

drawer()

Bir yan menü (drawer) oluşturur ve gösterir.

ParametreTipAçıklama
options.idstring (opsiyonel)Drawer ID'si.
options.htmlstringDrawer içeriği.
options.positionstringDrawer konumu (right, left). Varsayılan: right.
options.closebooleanKapatma düğmesi gösterilsin mi? Varsayılan: false.
options.titlestring (opsiyonel)Drawer başlığı.

Dönüş değeri: Yok.

theme.js
drawer({
    id: 'cartDrawer',
    html: response,
    position: 'right',
    close: false,
    title: 'Sepetim'
});

drawerClose()

Açık olan tüm yan menüleri (drawer) kapatır.

Parametre almaz.

Dönüş değeri: Yok.

theme.js
drawerClose(); // Tüm yan menüleri kapatır

notify()

Bir bildirim (toast) gösterir.

ParametreTipAçıklama
options.titlestringBildirim başlığı.
options.textstringBildirim metni.
options.durationnumberBildirim süresi (milisaniye).
options.gravitystringBildirim konumu (top, bottom).
options.positionstringBildirim hizası (left, right).
options.classstringBildirim sınıfı (success, danger, info).
options.iconHtmlstringBildirim simgesi.

Dönüş değeri: Yok.

theme.js
notify({
    text: 'Başarılı!',
    class: 'success',
    duration: 3000
});

mask()

Giriş alanlarına maske uygular.

ParametreTipAçıklama
elementHTMLElementMaske uygulanacak giriş elemanı.
maskstring (opsiyonel)Maske türü (string, number, email vb.).
regexstring (opsiyonel)Özel düzenli ifade.
maxstring (opsiyonel)Maksimum karakter sayısı.

Dönüş değeri: Yok.

theme.js
mask(document.querySelector('#phone'), 'number', null, 10); // Telefon girişine sayı maskesi uygular

format()

Sayıyı mağazanın para birimi formatına dönüştürür.

ParametreTipAçıklama
pnumberFormatlanacak sayı.
dnumber (opsiyonel)Ondalık basamak sayısı. Varsayılan: DECIMAL_LENGTH. Özel bir durum yoksa boş bırakın.

Dönüş değeri: string — formatlanmış sayı (örneğin 1.234,56).

theme.js
const formatted = format(1234.567); // "1.234,57" — varsayılan d değeri 2'dir

vat()

KDV dahil fiyatı hesaplar ve formatlar.

ParametreTipAçıklama
pnumberKDV hariç fiyat.
vatnumberKDV oranı (%).

Dönüş değeri: string — KDV dahil formatlanmış fiyat.

theme.js
const priceWithVat = vat(100, 18); // "118,00" — KDV dahil fiyat

priceToFloat()

Formatlanmış fiyatı sayıya dönüştürür.

ParametreTipAçıklama
pstringFormatlanmış fiyat (örneğin 1.234,56).

Dönüş değeri: number | false — dönüştürülmüş sayı veya hata durumunda false.

theme.js
const number = priceToFloat('1.234,56'); // 1234.56

triggerEvent()

Belirtilen elemanda bir olay tetikler.

ParametreTipAçıklama
elementHTMLElementOlay tetiklenecek eleman.
eventstringTetiklenecek olay (örneğin click, mouseenter).

Dönüş değeri: Yok.

theme.js
triggerEvent(document.querySelector('#btn'), 'click'); // #btn elemanında click olayı tetikler

outsideClick()

Elemanın dışına tıklanıldığında bir geri çağırım çalıştırır.

ParametreTipAçıklama
eventElementHTMLElementİzlenen eleman.
elementHTMLElementDış tıklama kontrol edilecek eleman.
onCallbackfunctionDış tıklamada çalışacak fonksiyon.

Dönüş değeri: Yok.

theme.js
outsideClick(document.querySelector('#menu'), document.querySelector('#menu'), () => console.log('Dışarı tıklandı'));

timeConverter()

Unix zaman damgasını belirtilen formata dönüştürür.

ParametreTipAçıklama
UNIX_timestampnumberUnix zaman damgası.
formatstringÇıktı formatı (örneğin d.m.y). y.m.d.h.i.s sırasıyla yıl, ay, gün, saat, dakika, saniyeye denk gelir.

Dönüş değeri: string — formatlanmış tarih.

theme.js
const date = timeConverter(1625097600000, 'd.m.y'); // "01.07.2021"

taxLoader()

Vergi dairesi listesini yükler ve bir seçim menüsü oluşturur.

ParametreTipAçıklama
options.selectorstring | HTMLElementSeçim menüsünün bağlanacağı eleman.
options.limitnumberBir seferde yüklenecek öğe sayısı.
options.startnumberBaşlangıç indeksi.

Dönüş değeri: Yok.

theme.js
taxLoader({ selector: '#taxOffice', limit: 15 });

stringToObject()

Query string'i bir nesneye dönüştürür.

ParametreTipAçıklama
inputStringstringQuery string (örneğin key1=value1&key2=value2).

Dönüş değeri: object — anahtar-değer nesnesi.

theme.js
const obj = stringToObject('id=123&name=John'); // { id: "123", name: "John" }

snippetUri()

Snippet URL'si oluşturur.

ParametreTipAçıklama
snippetstringSnippet adı.
paramsobjectURL parametreleri.

Dönüş değeri: string — oluşturulan URL.

theme.js
const url = snippetUri('cart-preview', { include: 'cart' });
// '/api/storefront/snippet/cart-preview?include=cart&language=tr'

loadSnippet()

Bir snippet'i sunucudan yükler.

ParametreTipAçıklama
options.snippetstringSnippet adı.
options.paramsobjectURL parametreleri.
options.successfunctionBaşarılı yanıt sonrası çalışacak fonksiyon.

Dönüş değeri: Yok.

theme.js
loadSnippet({
    snippet: 'cart-preview',
    params: { include: 'cart' },
    success: (response) => console.log(response)
});

getOffsetTop()

Elemanın sayfanın üstüne olan mesafesini hesaplar.

ParametreTipAçıklama
elementHTMLElementMesafesi hesaplanacak eleman.

Dönüş değeri: number — elemanın üst mesafesi (px).

theme.js
const offset = getOffsetTop(document.querySelector('#section')); // 500

checkValidity()

Formun geçerliliğini kontrol eder.

ParametreTipAçıklama
formHTMLFormElementDoğrulanacak form.

Dönüş değeri: boolean — form geçerliyse true.

theme.js
const isValid = checkValidity(document.querySelector('#myForm')); // true

popoverAlert()

Form alanında hata mesajı gösterir.

ParametreTipAçıklama
options.selectorstring | HTMLElementHata mesajının bağlanacağı eleman.
options.messagestringHata mesajı.
options.scrollbooleanHata alanına kaydırılsın mı?

Dönüş değeri: Yok.

theme.js
popoverAlert({
    selector: '#email',
    message: 'Geçersiz e-posta'
});

popoverAlertHide()

Gösterilen hata mesajlarını gizler.

ParametreTipAçıklama
parentHTMLElement (opsiyonel)Hata mesajlarının gizleneceği kapsayıcı. Varsayılan: document.body.

Dönüş değeri: Yok.

theme.js
popoverAlertHide(document.querySelector('#myForm')); // Formdaki hata mesajlarını gizler

passwordToggle()

Şifre girişinin görünürlüğünü değiştirir.

ParametreTipAçıklama
eventHTMLElementŞifre görünürlük düğmesi.
inputHTMLElementŞifre giriş alanı.

Dönüş değeri: Yok.

theme.js
passwordToggle(document.querySelector('#toggle'), document.querySelector('#password'));

captchaToggle()

CAPTCHA resmini yeniler.

ParametreTipAçıklama
elementHTMLElementCAPTCHA resmi.

Dönüş değeri: Yok.

theme.js
captchaToggle(document.querySelector('#captcha')); // CAPTCHA resmini yeniler

messageCount()

Kullanıcının mesaj sayısını alır ve arayüzde gösterir.

Parametre almaz.

Dönüş değeri: Yok.

theme.js
messageCount(); // Mesaj sayısını günceller

formLoader()

Form alanlarını veriyle doldurur.

ParametreTipAçıklama
options.selectorstringForm seçicisi.
options.urlstringVeri alınacak URL.
options.dataobjectFormu dolduracak veri.
options.callbackfunctionDoldurma sonrası çalışacak fonksiyon.

Dönüş değeri: Yok.

theme.js
formLoader({
    selector: '#myForm',
    url: '/api/form-data',
    callback: (result) => console.log(result)
});

tsRegion()

Bölge seçimi (ülke, şehir, ilçe) için dinamik bir arayüz sağlar.

ParametreTipAçıklama
options.containerstringBölge seçimi kapsayıcısı.
options.countryLimitnumberÜlke limiti.
options.storeLimitnumberMağaza limiti.
options.regionLimitnumberBölge limiti.
options.country, options.state, options.city, options.town, options.districtobjectHer seviye için ayarlar (container, selector, code, value).

Dönüş değeri: Yok.

theme.js
tsRegion({
    container: '.regions',
    country: { selector: '#country' }
});

Sonraki adımlar