Module: Pagy::ItemsExtra::Frontend
- Included in:
- Frontend
- Defined in:
- lib/pagy/extras/items.rb
Overview
Additions for the Frontend module
Constant Summary collapse
- ITEMS_PLACEHOLDER =
'__pagy_items__'
Instance Method Summary collapse
-
#pagy_items_selector_js(pagy, pagy_id: nil, item_name: nil, i18n_key: nil, link_extra: '') ⇒ Object
Return the items selector HTML.
Instance Method Details
#pagy_items_selector_js(pagy, pagy_id: nil, item_name: nil, i18n_key: nil, link_extra: '') ⇒ Object
Return the items selector HTML. For example “Show [20] items per page”
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/pagy/extras/items.rb', line 32 def pagy_items_selector_js(pagy, pagy_id: nil, item_name: nil, i18n_key: nil, link_extra: '') return '' unless pagy.vars[:items_extra] p_id = %( id="#{pagy_id}") if pagy_id p_vars = pagy.vars p_items = p_vars[:items] p_vars[:items] = ITEMS_PLACEHOLDER link = pagy_marked_link(pagy_link_proc(pagy, link_extra: link_extra)) p_vars[:items] = p_items # restore the items html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :items_selector, pagy.from, link}>) input = %(<input type="number" min="1" max="#{p_vars[:max_items]}" value="#{ p_items}" style="padding: 0; text-align: center; width: #{p_items.to_s.length + 1}rem;">) html << pagy_t('pagy.items_selector_js', item_name: item_name || pagy_t(i18n_key || p_vars[:i18n_key], count: p_items), items_input: input, count: p_items) html << %(</span>) end |