|
1 | 1 | defmodule Scrivener.HTML do |
2 | 2 | use Phoenix.HTML |
3 | | - @defaults [view_style: :bootstrap, action: :index, page_param: :page] |
| 3 | + @defaults [view_style: :bootstrap, action: :index, page_param: :page, hide_single: false] |
4 | 4 | @view_styles [:bootstrap, :semantic, :foundation, :bootstrap_v4, :materialize, :bulma] |
5 | 5 | @raw_defaults [ |
6 | 6 | distance: 5, |
@@ -107,20 +107,30 @@ defmodule Scrivener.HTML do |
107 | 107 | view_style: |
108 | 108 | opts[:view_style] || Application.get_env(:scrivener_html, :view_style, :bootstrap) |
109 | 109 | ) |
| 110 | + |> Keyword.merge( |
| 111 | + hide_single: |
| 112 | + opts[:hide_single] || Application.get_env(:scrivener_html, :hide_single, false) |
| 113 | + ) |
110 | 114 |
|
111 | 115 | merged_opts = Keyword.merge(@defaults, opts) |
112 | 116 |
|
113 | 117 | path = opts[:path] || find_path_fn(conn && paginator.entries, args) |
114 | | - params = Keyword.drop(opts, Keyword.keys(@defaults) ++ [:path]) |
115 | | - |
116 | | - # Ensure ordering so pattern matching is reliable |
117 | | - _pagination_links(paginator, |
118 | | - view_style: merged_opts[:view_style], |
119 | | - path: path, |
120 | | - args: [conn, merged_opts[:action]] ++ args, |
121 | | - page_param: merged_opts[:page_param], |
122 | | - params: params |
123 | | - ) |
| 118 | + params = Keyword.drop(opts, Keyword.keys(@defaults) ++ [:path, :hide_single]) |
| 119 | + |
| 120 | + hide_single_result = opts[:hide_single] && paginator.total_pages < 2 |
| 121 | + |
| 122 | + if hide_single_result do |
| 123 | + Phoenix.HTML.raw(nil) |
| 124 | + else |
| 125 | + # Ensure ordering so pattern matching is reliable |
| 126 | + _pagination_links(paginator, |
| 127 | + view_style: merged_opts[:view_style], |
| 128 | + path: path, |
| 129 | + args: [conn, merged_opts[:action]] ++ args, |
| 130 | + page_param: merged_opts[:page_param], |
| 131 | + params: params |
| 132 | + ) |
| 133 | + end |
124 | 134 | end |
125 | 135 |
|
126 | 136 | def pagination_links(%Scrivener.Page{} = paginator), |
|
0 commit comments