Katılım
20 Aralık 2023
Mesajlar
3.138
Makaleler
5
Çözümler
22
Beğeniler
5.301
1778500910597.webp


Bu kismi kastediyorum. Ingilizce harflerle bir sey aratinca aramak istedigim sey dogal olarak cikmiyor.

1778500940408.webp


Buraya Ingilizce klavye kullananlar icin bir duzenleme getirilmesi mumkun mu? Ben "Muzik Kosesi" yazinca cikan kategori yine orijinal adiyla olsun ama Turkce karakter kullanmiyor olmama ragmen karsima cikabilsin.
 
Selam,


Zamanında Fehmi bu tarz bir konu açmıştı. Kesfeliyormuş.

Hatta @Barış ,

Çok yakın zamanda bir geri bildirim yapmış.

Keşfediliyor: Kategori seçimi kısmında büyük ve küçük "i" harfine duyarlılık düzeltilebilir
 
Bir bakayım dedim. Sağ olsun, birisi yorum yaptığını sanıp okunmayan bir kod yazmış. Dosyada 2439 karakter var, indentation tutulup boş satırlarla beraber yorumlar silinince 1224 karakter oluyor. Minify edilse yarıya iner.

Daha da beteri forum ana sayfasında bastığınız her buton bunu tetikliyor. Depolama ve ağ işgali yetmiyormuş gibi işlemcinizi de yiyor.

İnsanlar da yavaş diye tarayıcıları suçluyor.

Yüce JavaScript'in 2026 yılına kadar böyle sorunları çözmesini beklersiniz ama yok. localeCompare bir halta yaramıyor. Bu yüzden elle yazmak en rahatı gibi.

Şu tip bir şey kullanmak daha işlevsel gibi. Hem boş kategoriler gerçekten boş oluyor. Gerçi bu da çatır çutur regex kullanıp işlemci eskitiyor. Ama her seferinde tüm listeyi nested olarak gezmiyor.

Kullanacaksanız namespace değiştirin, karışmasın.

Kod:
XF.NodeFilterKeyup = XF.Event.newHandler({
    eventType: 'keyup',
    eventNameSpace: 'XFNodeFilterKeyup',
    titleSelector: '.block--treeEntryChooser .contentRow-title',
    hiddenClass: 'nodeFilterHidden',
    init() {
        this.titles = Array.from(
            document.querySelectorAll(titleSelector),
            title => ({
                blockRow: title.closest('.block-row'),
                text: this.normalize(title.textContent),
            }),
        );
    },
    keyup(event) {
        const query = this.normalize(event.target.value);

        this.titles.forEach(({ blockRow, text }) => {
            const shouldHide = !text.includes(query);

            blockRow.classList.toggle(hiddenClass, shouldHide);
        });
    },
    normalize: (text) => {
        if (!text) { return ''; }

        return text
            .trim()
            .replace(/[ıIİ]/g, 'i')
            .toLowerCase()
            .normalize('NFD')
            .replace(/[\u0300-\u036f]/g, '');
    }
});

XF.Event.register('keyup', 'node-filter', 'XF.NodeFilterKeyup');

/*
.block--treeEntryChooser:not(:has(.block-row:not(.nodeFilterHidden))) {
    display: none;
}

.block--treeEntryChooser .block-row.nodeFilterHidden {
    display: none;
}
*/

/* [data-xf-keyup="node-filter"] */