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"},
|