# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/bootstrap # frozen_string_literal: true require 'pagy/extras/shared' class Pagy module BootstrapExtra # Pagination for bootstrap: it returns the html with the series of links to the pages def pagy_bootstrap_nav(pagy, pagy_id: nil, link_extra: '') p_id = %( id="#{pagy_id}") if pagy_id link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra})) html = +%() end # Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.nav javascript def pagy_bootstrap_nav_js(pagy, pagy_id: nil, link_extra: '', steps: nil) p_id = %( id="#{pagy_id}") if pagy_id link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra})) tags = { 'before' => %() } %() end # Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript def pagy_bootstrap_combo_nav_js(pagy, pagy_id: nil, link_extra: '') p_id = %( id="#{pagy_id}") if pagy_id link = pagy_link_proc(pagy, link_extra: link_extra) p_page = pagy.page p_pages = pagy.pages input = %() %(
#{ if (p_prev = pagy.prev) link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous" class="prev btn btn-primary"' else %() end }
#{ pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}
#{ if (p_next = pagy.next) link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next" class="next btn btn-primary"' else %() end }
) end private def pagy_bootstrap_prev_html(pagy, link) if (p_prev = pagy.prev) %() else %() end end def pagy_bootstrap_next_html(pagy, link) if (p_next = pagy.next) %() else %() end end end Frontend.prepend BootstrapExtra end