// License: LGPL-3.0-or-later
/*
A 'Show More' button component, useful for placing at the bottom of a listing of ajax'd data.

the showMore button's state uses the following properties:

moreLoading: boolean (you might want general "loading" and a separate "moreLoading" states)
remaining: integer (count of how many results are not shown and still left. If 0, the show more button hides)
*/


const view = require('vvvview')
const h = require("virtual-dom/h")
const flyd = require('flyd')

var $ = {
	nextPageClicks: flyd.stream()
}

const root = (moreLoading, remaining) => {
	var buttonContent = moreLoading
		? h('span', [h('i.fa.fa-spin.fa-spinner'), ' Loading... '])
		: h('span', ' Show More ')

	return h('div.moreResults.group', {style: {display: remaining ? 'block' : 'none'}}, [
		h('button.button--micro.details', {disabled: moreLoading, onclick: $.nextPageClicks}, [
			buttonContent,
		]),
		' ',
		h('a.button--micro.details', {href: '#'}, 'Back to Top')
	])
}

module.exports = {root: root, $streams: $}