changed CHANGELOG.md
 
@@ -1,5 +1,10 @@
1
1
# Changelog
2
2
3
+ ## 0.3.2 (2022-07-23)
4
+
5
+ * gettext dependency updated to 0.20
6
+ * automatically set `:live` option to `true` (if omitted) when the first argument of `Scrivener.PhoenixView.paginate/5` is a `%Phoenix.LiveView.Socket{}`
7
+
3
8
## 0.3.1 (2022-06-06)
4
9
5
10
fixed warning about collecting into a non-empty list
changed README.md
 
@@ -23,7 +23,7 @@ def deps do
23
23
[
24
24
# ...
25
25
{:scrivener_ecto, "~> 2.7"},
26
- {:scrivener_phoenix, "~> 0.3.1"},
26
+ {:scrivener_phoenix, "~> 0.3.2"},
27
27
]
28
28
end
29
29
```
 
@@ -223,7 +223,7 @@ In order to avoid liveview reloading, we need to handle page changes with `handl
223
223
So, comparatively to a dead view, only 2 changes are required:
224
224
225
225
1. the first parameter of `Scrivener.PhoenixView.paginate/5`, usually `@conn`, becomes `@socket`
226
- 2. add `live: true` as option to `Scrivener.PhoenixView.paginate/5`
226
+ 2. add `live: true` as option to `Scrivener.PhoenixView.paginate/5` but as of scrivener_phoenix 0.3.2 it should be automatically set for you
227
227
228
228
Example:
changed hex_metadata.config
 
@@ -23,7 +23,7 @@
23
23
{<<"name">>,<<"gettext">>},
24
24
{<<"optional">>,false},
25
25
{<<"repository">>,<<"hexpm">>},
26
- {<<"requirement">>,<<">= 0.0.0">>}],
26
+ {<<"requirement">>,<<"~> 0.20">>}],
27
27
[{<<"app">>,<<"scrivener">>},
28
28
{<<"name">>,<<"scrivener">>},
29
29
{<<"optional">>,false},
 
@@ -34,4 +34,4 @@
34
34
{<<"optional">>,false},
35
35
{<<"repository">>,<<"hexpm">>},
36
36
{<<"requirement">>,<<">= 0.16.0">>}]]}.
37
- {<<"version">>,<<"0.3.1">>}.
37
+ {<<"version">>,<<"0.3.2">>}.
changed lib/scrivener_phoenix_web/views/scrivener_phoenix_view.ex
 
@@ -11,7 +11,7 @@ defmodule Scrivener.PhoenixView do
11
11
@default_right 0
12
12
@default_window 4
13
13
@default_outer_window 0
14
- @default_live false
14
+ @default_live nil
15
15
@default_inverted false
16
16
@default_param_name :page
17
17
@default_merge_params false
 
@@ -53,7 +53,7 @@ defmodule Scrivener.PhoenixView do
53
53
right: non_neg_integer,
54
54
window: non_neg_integer,
55
55
outer_window: non_neg_integer,
56
- live: boolean,
56
+ live: boolean | nil,
57
57
inverted: boolean,
58
58
display_if_single: boolean,
59
59
param_name: atom | String.t,
 
@@ -137,6 +137,14 @@ defmodule Scrivener.PhoenixView do
137
137
|> options.template.wrap()
138
138
end
139
139
140
+ defp auto_set_live_option(options = %{live: nil}, cse)
141
+ when is_map(options)
142
+ do
143
+ Map.put(options, :live, is_struct(cse) and cse.__struct__ == Phoenix.LiveView.Socket)
144
+ end
145
+
146
+ defp auto_set_live_option(options, _cse), do: options
147
+
140
148
@doc """
141
149
Generates the whole HTML to navigate between pages.
142
150
 
@@ -147,7 +155,9 @@ defmodule Scrivener.PhoenixView do
147
155
* window (default: `#{inspect(@default_window)}`): display *window* pages before and after the current page (eg, if 7 is the current page and window is 2, you'd get: `5 6 7 8 9`)
148
156
* outer_window (default: `#{inspect(@default_outer_window)}`), equivalent to left = right = outer_window: display the *outer_window* first and last pages (eg valued to 2:
149
157
`« First ‹ Prev 1 2 ... 5 6 7 8 9 ... 19 20 Next › Last »` as opposed to left = 1 and right = 3: `« First ‹ Prev 1 ... 5 6 7 8 9 ... 18 19 20 Next › Last »`)
150
- * live (default: `#{inspect(@default_live)}`): `true` to generate links with `Phoenix.LiveView.Helpers.live_patch/2` instead of `Phoenix.HTML.Link.link/2`
158
+ * live (default: `#{inspect(@default_live)}`):
159
+ + `true` to generate links with `Phoenix.LiveView.Helpers.live_patch/2` instead of `Phoenix.HTML.Link.link/2`
160
+ + `nil` to set it automatically to `true` when `paginate/5` is called with a `%Phoenix.LiveView.Socket{}` as its first parameter else `false`
151
161
* inverted (default: `#{inspect(@default_inverted)}`): `true` to first (left side) link last pages instead of first
152
162
* display_if_single (default: `#{inspect(@default_display_if_single)}`): `true` to force a pagination to be displayed when there only is a single page of result(s)
153
163
* param_name (default: `#{inspect(@default_param_name)}`): the name of the parameter generated in URL (query string) to propagate the page number
 
@@ -176,6 +186,7 @@ defmodule Scrivener.PhoenixView do
176
186
|> Keyword.merge(options)
177
187
|> Enum.into(%{})
178
188
|> adjust_symbols_if_needed()
189
+ |> auto_set_live_option(conn)
179
190
180
191
do_paginate(conn, page, fun, arguments, options)
181
192
end
changed mix.exs
 
@@ -7,9 +7,8 @@ defmodule Scrivener.Phoenix.MixProject do
7
7
def project do
8
8
[
9
9
app: :scrivener_phoenix,
10
- version: "0.3.1",
10
+ version: "0.3.2",
11
11
elixir: "~> 1.9",
12
- compilers: ~W[gettext]a ++ Mix.compilers(),
13
12
start_permanent: Mix.env() == :prod,
14
13
description: description(),
15
14
package: package(),
 
@@ -56,7 +55,7 @@ defmodule Scrivener.Phoenix.MixProject do
56
55
# Run "mix help deps" to learn about dependencies.
57
56
defp deps do
58
57
[
59
- {:gettext, ">= 0.0.0"},
58
+ {:gettext, "~> 0.20"},
60
59
{:scrivener, "~> 2.5"},
61
60
#{:phoenix_html, "~> 2.11"}, # pulled by phoenix_live_view
62
61
{:phoenix_live_view, ">= 0.16.0"},