Skip to content

Commit 135598b

Browse files
authored
document attr values/examples event when there is a default (#3745)
1 parent 1503137 commit 135598b

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

lib/phoenix_component/declarative.ex

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -982,12 +982,19 @@ defmodule Phoenix.Component.Declarative do
982982
end
983983
end
984984

985-
defp build_attr_values_or_examples(%{opts: [values: values]}) do
986-
["Must be one of ", build_literals_list(values, "or"), ?.]
987-
end
985+
defp build_attr_values_or_examples(%{opts: opts} = attr) do
986+
space_before = if attr[:doc] || opts[:default], do: ?\s, else: []
987+
988+
cond do
989+
Keyword.get(opts, :values) ->
990+
[space_before, "Must be one of ", build_literals_list(opts[:values], "or"), ?.]
991+
992+
Keyword.get(opts, :examples) ->
993+
[space_before, "Examples include ", build_literals_list(opts[:examples], "and"), ?.]
988994

989-
defp build_attr_values_or_examples(%{opts: [examples: examples]}) do
990-
["Examples include ", build_literals_list(examples, "and"), ?.]
995+
true ->
996+
[]
997+
end
991998
end
992999

9931000
defp build_attr_values_or_examples(_attr) do

test/phoenix_component/declarative_assigns_test.exs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,6 +1060,9 @@ defmodule Phoenix.ComponentDeclarativeAssignsTest do
10601060
* `attr2` (`:atom`) - Examples include `:foo`, `:bar`, and `:baz`.
10611061
* `attr3` (`:list`) - Must be one of `[60, 40]`.
10621062
* `attr4` (`:list`) - Examples include `[60, 40]`.
1063+
* `attr5` (`:atom`) - Defaults to `:foo`. Must be one of `:foo`, `:bar`, or `:baz`.
1064+
* `attr6` (`:atom`) - Attr 6 doc. Must be one of `:foo`, `:bar`, or `:baz`.
1065+
* `attr7` (`:atom`) - Attr 7 doc. Defaults to `:foo`. Must be one of `:foo`, `:bar`, or `:baz`.
10631066
"""
10641067
}
10651068

test/support/live_views/components.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ defmodule Phoenix.LiveViewTest.Support.FunctionComponentWithAttrs do
179179
attr :attr2, :atom, examples: [:foo, :bar, :baz]
180180
attr :attr3, :list, values: [[60, 40]]
181181
attr :attr4, :list, examples: [[60, 40]]
182-
182+
attr :attr5, :atom, default: :foo, values: [:foo, :bar, :baz]
183+
attr :attr6, :atom, doc: "Attr 6 doc", values: [:foo, :bar, :baz]
184+
attr :attr7, :atom, doc: "Attr 7 doc", default: :foo, values: [:foo, :bar, :baz]
183185
def fun_attr_values_examples(assigns), do: ~H[]
184186
end
185187

0 commit comments

Comments
 (0)