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"] */