mediawiki-skins-Citizen/resources/skins.citizen.search/searchPresults.js

56 lines
1.7 KiB
JavaScript
Raw Normal View History

const config = require( './config.json' );
const searchHistory = require( './searchHistory.js' )( config );
function searchPresults() {
return {
renderHistory: function ( results, templates ) {
const items = [];
results.forEach( ( result, index ) => {
items.push( {
id: index,
href: `${ config.wgScriptPath }/index.php?title=Special:Search&search=${ result }`,
text: result,
icon: 'history'
} );
} );
const data = {
type: 'history',
'array-list-items': items
};
const partials = {
TypeaheadListItem: templates.TypeaheadListItem
};
document.getElementById( 'citizen-typeahead-list-history' ).outerHTML = templates.TypeaheadList.render( data, partials ).html();
document.getElementById( 'citizen-typeahead-group-history' ).hidden = false;
},
render: function ( templates ) {
const placeholderEl = document.getElementById( 'citizen-typeahead-placeholder' );
placeholderEl.innerHTML = '';
placeholderEl.hidden = true;
const historyResults = searchHistory.get();
if ( historyResults && historyResults.length > 0 ) {
this.renderHistory( historyResults, templates );
} else {
const data = {
icon: 'articlesSearch',
title: mw.message( 'searchsuggest-search' ).text(),
description: mw.message( 'citizen-search-empty-desc' ).text()
};
placeholderEl.innerHTML = templates.TypeaheadPlaceholder.render( data ).html();
placeholderEl.hidden = false;
}
},
clear: function () {
document.getElementById( 'citizen-typeahead-list-history' ).innerHTML = '';
document.getElementById( 'citizen-typeahead-group-history' ).hidden = true;
}
};
}
/** @module searchPresults */
module.exports = searchPresults;