|
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