HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/Eurotools/euro-tools.nl/resources/views/site/forms/searchbar.blade.php
<div id="searchForm">
    <form action="/{{!empty($links->search) ? $links->search->route : ''}}">
        <label class="form-title" for="searchbar">@lang('site/global.quickSearch')</label>
        <input type="text" class="search-field" id="searchbar" name="term" value=""
               placeholder="@lang('site/global.searchPlaceholder')" autocomplete="off"
               data-language-id="{{ \App::getLanguage()->id }}">
        <label class="searchbutton">
            <input type="submit" value=""/>
            @include('site.svg.icon.search')
        </label>
    </form>
    <div id="searchresults">

    </div>
</div>
@section('searchbar-js')
    <script>
        document.addEventListener("DOMContentLoaded", function () {
            var searchBar = document.getElementById('searchbar');
            var searchForm = document.querySelector('#searchForm form');
            var languageId = searchBar.dataset.languageId;

            var sh = searchHandler.init("{{ route('catalog.search')}}");

            @if(isset($links))
            var resultHolder = document.getElementById('searchresults');
            var liSelected;


            searchForm.addEventListener('submit', function(e) {
                if(liSelected) {
                    if(liSelected.find('a').attr('href')) {
                        window.location = liSelected.find('a').attr('href');
                    }
                } else {
                   // if(searchBar.value !== '') {
                        searchForm.submit();
                    //}
                }
                e.preventDefault();
                return false;
            });

            searchBar.addEventListener('keyup', debounce(function (e) {
                if (e.which !== 40 && e.which !== 13 && e.which !== 38) {
                    resultHolder.style.display = "block";
                    sh.search(searchBar.value, 1, 5, languageId)
                        .done(function (result) {
                            var htmlString = '<ul>';
                            var currentType = '';
                            var route = '{{$links->products->route}}';

                            if (typeof result.data !== 'undefined' && result.data.length > 0) {
                                for (var i = 0; i < result.data.length; i++) {
                                    var item = result.data[i];
                                    if (item.attributes.hasOwnProperty('translation')) {
                                        if (item.type !== currentType) {
                                            currentType = item.type;
                                            htmlString += '</ul><ul><h4>' + item.type + '</h4><hr>';
                                        }
                                        var resultTranslation = item.attributes.translation[0].attributes;
                                        if (resultTranslation.hasOwnProperty('title') && resultTranslation.title !== '') {
                                            htmlString += '<li>' +
                                                '<a href="/' + route + '/' + result.data[i].attributes.translation[0].attributes.slug + '">' +
                                                result.data[i].attributes.translation[0].attributes.title
                                                + '</a>' +
                                                '</li>'

                                        } else if (resultTranslation.hasOwnProperty('name') && resultTranslation.name !== '') {
                                            htmlString += '<li>' +
                                                '<a href="/' + route + '/' + result.data[i].attributes.translation[0].attributes.slug + '">' +
                                                result.data[i].attributes.translation[0].attributes.name
                                                + '</a>' +
                                                '</li>'
                                        }
                                    }
                                }
                            } else {
                                htmlString += "<h4>Er zijn geen resultaten voor '" + searchBar.value + "'</h4>";
                            }
                            htmlString += '</ul>';

                            resultHolder.innerHTML = htmlString;
                            resultHolder.style.display = "block";


                            document.addEventListener('click', function (ev) {
                                if (ev.target !== resultHolder) {
                                    resultHolder.style.display = "none";
                                }
                            });
                        })
                        .fail(function () {
                            // An error occurred
                        });
                } else {
                    var li = $(resultHolder).find('li');
                    if (e.which === 40) {
                        if (liSelected) {
                            liSelected.removeClass('selected');
                            $next = liSelected.next();
                            if ($next.length > 0) {
                                liSelected = $next.addClass('selected');
                            } else {
                                liSelected = li.eq(0).addClass('selected');
                            }
                            console.log("liSelected", liSelected);
                        } else {
                            liSelected = li.eq(0).addClass('selected');
                        }
                    } else if (e.which === 38) {
                        if (liSelected) {
                            liSelected.removeClass('selected');
                            $prev = liSelected.prev();
                            if ($prev.length > 0) {
                                liSelected = $prev.addClass('selected');
                            } else {
                                liSelected = li.last().addClass('selected');
                            }
                            console.log("liSelected", liSelected);
                        } else {
                            liSelected = li.last().addClass('selected');
                        }
                    } else if( e.which === 13) {
                        console.log('form submit here');
                        searchForm.submit();
                    }
                }
            }, 200));

            @endif


        })
    </script>
@endsection