View difference between Paste ID: FbwSjjsM and yZZ0izmX
SHOW: | | - or go back to the newest paste.
1-
{%- comment -%}
1+
2-
   Last Update: 1-6-22
2+
3-
   Summary: Adds search functionality to the PageListAsBlocks lava template
3+
4-
{%- endcomment -%}
4+
    var $panel = $('.search-target .panel-body'),
5
        $noMatches = $('<div class="no-matches alert alert-info">No matches found</div>');
6
7
    $noMatches.hide();
8
    $panel.prepend($noMatches);
9-
    // Prevent async page submission triggered by enter key which breaks script, preventing submission after keyup does not work
9+
10-
    $('#pageSearch').on('keydown', function(e)
10+
    $('#pageSearch')
11-
    {
11+
        // prevent the enter key from submitting the form
12
        .on('keydown', function(e)
13-
        if (e.keyCode == 13)
13+
14
            if (e.keyCode == 13)
15-
            e.preventDefault();
15+
            {
16-
            return false;
16+
                e.preventDefault();
17-
        }
17+
                return false;
18-
    });
18+
            }
19
        })
20-
    // Filter page links when Search box is updated, value of text is not updated until after keyup
20+
        // Filter page links when Search box is updated
21-
    $('#pageSearch').on('keyup', function(e)
21+
        .on('keyup', function(e)
22-
    {
22+
23-
        var value = $(this).val().toLowerCase();
23+
            var value = $(this).val().toLowerCase();
24-
        $('.panel-body ul li').filter(function()
24+
                $matched = $('.panel-body > ul > li').filter(function()
25
                {
26-
            $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
26+
                    var $setting = $(this),
27
                        isShown = $setting.is(':visible'),
28-
    });
28+
                        isMatch = $setting.text().toLowerCase().indexOf(value) > -1;
29
30
                    $setting.toggleClass('match', isMatch);
31
32
                    if (isMatch && !isShown) $setting.stop(true,false).show(400);
33
                    else if (!isMatch && isShown) $setting.stop(true,false).hide(400);
34-
{%- endstylesheet -%}
34+
35
                    return isMatch;
36
                }),
37
                matchCount = $matched.length;
38
39
            $noMatches.toggle(matchCount == 0);
40
        });
41
});
42-
{%- include '~~/Assets/Lava/PageListAsBlocks.lava' -%}
42+
43
44
{%- stylesheet -%}
45
    #pageSearch { margin-bottom:15px; }
46
{% endstylesheet %}
47
48
<div class="form-inline">
49
    <div class="form-group">
50
        <input id="pageSearch" type="text" class="form-control input-sm" placeholder="Search&hellip;">
51
    </div>
52
</div>
53
54
<div class="search-target">
55
{%- include '~~/Assets/Lava/PageListAsBlocks.lava' -%}
56
</div>
57