Skip to content

Commit

Permalink
Add feature to filter the library instantly on input (with custom min…
Browse files Browse the repository at this point in the history
…imum of characters)
  • Loading branch information
ltguillaume committed Dec 23, 2020
1 parent 9ec8da6 commit 285df03
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
2 changes: 2 additions & 0 deletions music.ini.template
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ def.title = 'Music'
; Default (maximum) volume (.9 might prevent clipping during playback)
def.volume = .9

; Filter the library instantly (input minimum of x characters, 0 = disabled)
instantfilter = 0
; Local storage ID for this instance
lsid = 'music_folder_player'
; Maximum amount of error before playback stops
Expand Down
34 changes: 19 additions & 15 deletions music.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,8 @@ function prepUI() {
navigator.mediaSession.metadata = new MediaMetadata();
}

if (instantfilter) dom.filter.oninput = filter;

if (window.innerWidth > 360)
dom.library.className = 'unfold';
}
Expand Down Expand Up @@ -1239,7 +1241,8 @@ function resizePlaylist() {
dom.trash.style.right = scrollBars == 0 ? '' : scrollBars + 4 +'px';
}

function filter() {
function filter(instant = false) {
if (instant && dom.filter.value.length < instantfilter) return;
var clear = dom.filter.value == '' ? '' : 'none';
if (!tree) tree = dom.tree.querySelectorAll('li');
ffor(tree, function(f) {
Expand Down Expand Up @@ -1279,7 +1282,7 @@ function filter() {
}

dom.library.className = 'unfold';
keyNav(null, 'down');
if (!instant) keyNav(null, 'down');
}

function cls(el, name) {
Expand Down Expand Up @@ -1391,21 +1394,22 @@ document.addEventListener('keydown', function(e) {
var el = document.activeElement;

if (el.tagName.toLowerCase() == 'input') {
if (el == dom.volumeslider) {
if (e.keyCode > 36 && e.keyCode < 41) return; // Arrow keys
} else {
if (e.keyCode == 27) { // Esc
if (el == dom.filter)
clearFilter();
else {
e.preventDefault();
el.value = '';
el.blur();
el.focus();
}
}
if (el == dom.volumeslider && e.keyCode > 36 && e.keyCode < 41) // Arrow keys
return;
if (el == dom.filter)
switch(e.keyCode) {
case 38: return keyNav(null, "up"); // ArrowUp
case 40: return keyNav(null, "down"); // ArrowDown
}

if (e.keyCode == 27) { // Esc
e.preventDefault();
el.value = '';
el.blur();
if (el = dom.filter) filter();
el.focus();
}
return;
}

switch (e.keyCode) {
Expand Down

0 comments on commit 285df03

Please sign in to comment.