UNPKG

altinn-designsystem

Version:

Altinn Design system based on Pattern Lab.

92 lines (83 loc) 3.37 kB
// Hard-coded data, should be replaced with JSON var availableTags = [ { label: '1. ACC Security level 2 MAG' }, { label: '2. Corres test 250116' }, { label: '3. PSA Skatteoppgjør personlig' }, { label: '4. RF-1400 Melding om flytting innenlands' }, { label: '5. Aksjeoppgaven 2014' }, { label: '6. Et veldig langt punkt i lista som bør gå over alle bredder og grenser, men samtidig oppføre seg riktig i layout. Se så lang tekst dette her er.' } ]; // Hard-coded texts, should be replaced with custom strings var title = 'Vanligste skjema og tjenester i din organisasjon'; var numberOfResultsLabel = ' treff. Bruk pil opp og pil ned for å navigere i resultatene.'; var noResultsLabel = 'Ingen treff'; var moreThanMaxLabel = 'Listen viser kun de første 100 treff. Vennligst begrens søket ditt'; var searchWithAutocomplete = function() { $.widget('custom.catcomplete', $.ui.autocomplete, ({ _create: function() { this._super(); this.widget().menu('option', 'items', '> :not(.a-js-autocomplete-header)'); $('.ui-helper-hidden-accessible').addClass('sr-only'); }, _renderMenu: function(ul, items) { var that = this; var iLength = items.length; $.each(items, function(index, item) { var li = that._renderItemData(ul, item); li.attr('role', 'menu'); li.addClass('a-dotted'); li.children().first().attr('role', 'button'); }); if (iLength === availableTags.length) { ul.prepend('<li class=\'a-js-autocomplete-header a-dotted\'>' + title + '</li>'); } else if (!items[0].isNoResultsLabel) { ul.prepend('<li class=\'a-js-autocomplete-header a-dotted\'>' + iLength + ' treff </li>'); } else { $('.ui-autocomplete').children().first().addClass('a-js-autocomplete-header'); } if (iLength >= 3) { ul.append('<li class=\'a-js-autocomplete-header a-dotted a-info\'>' + moreThanMaxLabel + '</li>'); } } })); $('.a-js-autocomplete').catcomplete({ // delay: 200, // set appropriate delay for ajax call source: availableTags, appendTo: '.a-autocomplete-container', minLength: 0, classes: { 'ui-autocomplete': 'a-list', 'ui-menu-item': 'a-dotted' }, open: function(event, ui) { $('.ui-autocomplete').removeAttr('style'); // remove inline positioning and display of amount results $('.ui-autocomplete .ui-menu-item').not(':first-of-type').addClass('a-clickable'); }, messages: { noResults: noResultsLabel, results: function(count) { if (count === availableTags.length) { return title + '. ' + count + ' ' + numberOfResultsLabel; } return count + ' ' + numberOfResultsLabel; } }, response: function(event, ui) { var el; if (ui.content.length === 0) { el = { isNoResultsLabel: true, label: noResultsLabel, title: noResultsLabel }; ui.content.push(el); } } }).bind('click', function(e) { // TODO should also open on tab focus? issue 3766 if ($(this).catcomplete('widget').is(':visible')) { $(this).catcomplete('close'); } else { $(this).catcomplete('search', $(this).val()); } }); };