Skip to content

Commit 7d8604f

Browse files
committed
Remove readonly callback
1 parent 29a8199 commit 7d8604f

File tree

8 files changed

+17
-153
lines changed

8 files changed

+17
-153
lines changed

lib/backpex/field.ex

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,6 @@ defmodule Backpex.Field do
149149
"""
150150
@callback render_index_form(assigns :: map()) :: %Phoenix.LiveView.Rendered{}
151151

152-
@doc """
153-
Used to render the readonly version of the field.
154-
"""
155-
@callback render_form_readonly(assigns :: map()) :: %Phoenix.LiveView.Rendered{}
156-
157152
@doc """
158153
The field to be displayed on index views. In most cases this is the name / key configured in the corresponding field definition.
159154
In fields with associations this value often differs from the name / key. The function will receive the field definition.
@@ -211,7 +206,7 @@ defmodule Backpex.Field do
211206
) ::
212207
Ecto.Query.dynamic_expr()
213208

214-
@optional_callbacks render_form_readonly: 1, render_index_form: 1
209+
@optional_callbacks render_index_form: 1
215210

216211
@doc """
217212
Returns the default config schema.
@@ -277,16 +272,9 @@ defmodule Backpex.Field do
277272

278273
@impl Phoenix.LiveComponent
279274
def render(%{type: :form} = assigns) do
280-
if Backpex.Field.readonly?(assigns.field_options, assigns) do
281-
case Map.get(assigns.field_options, :render_form_readonly) do
282-
nil ->
283-
apply(__MODULE__, :render_form_readonly, [assigns])
284-
285-
func ->
286-
func.(assigns)
287-
end
288-
else
289-
Map.get(assigns.field_options, :render_form, &render_form/1).(assigns)
275+
case Map.get(assigns.field_options, :render_form) do
276+
fun when is_function(fun, 1) -> fun.(assigns)
277+
nil -> apply(__MODULE__, :render_form, [assigns])
290278
end
291279
end
292280

lib/backpex/fields/date.ex

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -112,28 +112,8 @@ defmodule Backpex.Fields.Date do
112112
help_text={Backpex.Field.help_text(@field_options, assigns)}
113113
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
114114
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
115-
/>
116-
</Layout.field_container>
117-
</div>
118-
"""
119-
end
120-
121-
@impl Backpex.Field
122-
def render_form_readonly(assigns) do
123-
~H"""
124-
<div>
125-
<Layout.field_container>
126-
<:label align={Backpex.Field.align_label(@field_options, assigns, :top)}>
127-
<Layout.input_label text={@field_options[:label]} />
128-
</:label>
129-
<BackpexForm.input
130-
type="date"
131-
field={@form[@name]}
132-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
133-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
134-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
135-
readonly
136-
disabled
115+
readonly={@readonly}
116+
disabled={@readonly}
137117
/>
138118
</Layout.field_container>
139119
</div>

lib/backpex/fields/date_time.ex

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -112,28 +112,8 @@ defmodule Backpex.Fields.DateTime do
112112
help_text={Backpex.Field.help_text(@field_options, assigns)}
113113
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
114114
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
115-
/>
116-
</Layout.field_container>
117-
</div>
118-
"""
119-
end
120-
121-
@impl Backpex.Field
122-
def render_form_readonly(assigns) do
123-
~H"""
124-
<div>
125-
<Layout.field_container>
126-
<:label align={Backpex.Field.align_label(@field_options, assigns, :top)}>
127-
<Layout.input_label text={@field_options[:label]} />
128-
</:label>
129-
<BackpexForm.input
130-
type="datetime-local"
131-
field={@form[@name]}
132-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
133-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
134-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
135-
readonly
136-
disabled
115+
readonly={@readonly}
116+
disabled={@readonly}
137117
/>
138118
</Layout.field_container>
139119
</div>

lib/backpex/fields/number.ex

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,8 @@ defmodule Backpex.Fields.Number do
5454
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
5555
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
5656
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
57-
/>
58-
</Layout.field_container>
59-
</div>
60-
"""
61-
end
62-
63-
@impl Backpex.Field
64-
def render_form_readonly(assigns) do
65-
~H"""
66-
<div>
67-
<Layout.field_container>
68-
<:label align={Backpex.Field.align_label(@field_options, assigns)}>
69-
<Layout.input_label text={@field_options[:label]} />
70-
</:label>
71-
<BackpexForm.input
72-
type="text"
73-
field={@form[@name]}
74-
placeholder={@field_options[:placeholder]}
75-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
76-
help_text={Backpex.Field.help_text(@field_options, assigns)}
77-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
78-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
79-
readonly
80-
disabled
57+
readonly={@readonly}
58+
disabled={@readonly}
8159
/>
8260
</Layout.field_container>
8361
</div>

lib/backpex/fields/text.ex

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,29 +54,8 @@ defmodule Backpex.Fields.Text do
5454
help_text={Backpex.Field.help_text(@field_options, assigns)}
5555
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
5656
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
57-
/>
58-
</Layout.field_container>
59-
</div>
60-
"""
61-
end
62-
63-
@impl Backpex.Field
64-
def render_form_readonly(assigns) do
65-
~H"""
66-
<div>
67-
<Layout.field_container>
68-
<:label align={Backpex.Field.align_label(@field_options, assigns, :center)}>
69-
<Layout.input_label text={@field_options[:label]} />
70-
</:label>
71-
<BackpexForm.input
72-
type="text"
73-
field={@form[@name]}
74-
placeholder={@field_options[:placeholder]}
75-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
76-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
77-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
78-
readonly
79-
disabled
57+
readonly={@readonly}
58+
disabled={@readonly}
8059
/>
8160
</Layout.field_container>
8261
</div>

lib/backpex/fields/textarea.ex

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -64,30 +64,8 @@ defmodule Backpex.Fields.Textarea do
6464
help_text={Backpex.Field.help_text(@field_options, assigns)}
6565
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
6666
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
67-
/>
68-
</Layout.field_container>
69-
</div>
70-
"""
71-
end
72-
73-
@impl Backpex.Field
74-
def render_form_readonly(assigns) do
75-
~H"""
76-
<div>
77-
<Layout.field_container>
78-
<:label align={Backpex.Field.align_label(@field_options, assigns, :top)}>
79-
<Layout.input_label text={@field_options[:label]} />
80-
</:label>
81-
<BackpexForm.input
82-
type="textarea"
83-
field={@form[@name]}
84-
placeholder={@field_options[:placeholder]}
85-
rows={@field_options[:rows]}
86-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
87-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
88-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
89-
readonly
90-
disabled
67+
readonly={@readonly}
68+
disabled={@readonly}
9169
/>
9270
</Layout.field_container>
9371
</div>

lib/backpex/fields/time.ex

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -85,28 +85,8 @@ defmodule Backpex.Fields.Time do
8585
help_text={Backpex.Field.help_text(@field_options, assigns)}
8686
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
8787
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
88-
/>
89-
</Layout.field_container>
90-
</div>
91-
"""
92-
end
93-
94-
@impl Backpex.Field
95-
def render_form_readonly(assigns) do
96-
~H"""
97-
<div>
98-
<Layout.field_container>
99-
<:label align={Backpex.Field.align_label(@field_options, assigns, :top)}>
100-
<Layout.input_label text={@field_options[:label]} />
101-
</:label>
102-
<BackpexForm.input
103-
type="time"
104-
field={@form[@name]}
105-
translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
106-
phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
107-
phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
108-
readonly
109-
disabled
88+
readonly={@readonly}
89+
disabled={@readonly}
11090
/>
11191
</Layout.field_container>
11292
</div>

lib/backpex/html/resource.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ defmodule Backpex.HTML.Resource do
150150
|> assign(:field, field)
151151
|> assign(:field_options, field_options)
152152
|> assign(:type, :form)
153+
|> assign(:readonly, Backpex.Field.readonly?(field_options, assigns))
153154

154155
~H"""
155156
<.live_component

0 commit comments

Comments
 (0)