module Pagy::MaterializeExtra

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

Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
def pagy_materialize_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
  style   = ' style="vertical-align: middle"'
  input   = %(<input type="number" class="browser-default" min="1" max="#{p_pages}" value="#{
                p_page}" style="text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
  html = %(<ul#{p_id} class="pagy-materialize-combo-nav-js pagination chip" role="navigation")
  %(#{html} aria-label="pager" style="padding-right: 0" #{
      pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
      pagy_materialize_prev_html pagy, link, style}<li class="pagy-combo-input">#{
      pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</li>#{
      pagy_materialize_next_html pagy, link, style}</ul>)
end