module Pagy::FoundationExtra

def pagy_foundation_combo_nav_js(pagy, pagy_id: nil, link_extra: '')

Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the pagy.js file
def pagy_foundation_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   = %(<input class="input-group-field cell shrink" type="number" min="1" max="#{
                p_pages}" value="#{p_page}" style="width: #{
                p_pages.to_s.length + 1}rem; padding: 0 0.3rem; margin: 0 0.3rem;">)
  %(<nav#{p_id} class="pagy-foundation-combo-nav-js" aria-label="Pagination"><div class="input-group" #{
      pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
      if (p_prev  = pagy.prev)
        link.call p_prev, pagy_t('pagy.nav.prev'),
                  'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
      else
        %(<a style="margin-bottom: 0" class="prev button primary disabled" href="#">#{pagy_t 'pagy.nav.prev'}</a>)
      end
    }<span class="input-group-label">#{pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</span>#{
      if (p_next  = pagy.next)
        link.call p_next, pagy_t('pagy.nav.next'), 'style="margin-bottom: 0" aria-label="next" class="next button primary"'
      else
        %(<a style="margin-bottom: 0" class="next button primary disabled" href="#">#{pagy_t 'pagy.nav.next'}</a>)
      end
    }</div></nav>)
end