module Pagy::SemanticExtra

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

Combo pagination for semantic: it returns a nav and a JSON tag used by the pagy.js file
def pagy_semantic_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
  p_id    = %( id="#{pagy_id}") if pagy_id
  link    = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
  p_page  = pagy.page
  p_pages = pagy.pages
  input   = %(<input type="number" min="1" max="#{p_pages}" value="#{
                p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem; margin: 0 0.3rem">)
  %(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" #{
      pagy_data(pagy, :combo, pagy_marked_link(link))}>#{
      pagy_semantic_prev_html pagy, link
    }<div class="pagy-combo-input item">#{
      pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
    }</div> #{
      pagy_semantic_next_html pagy, link
    }</div>)
end