diff --git a/lib/surface/type_handler/list.ex b/lib/surface/type_handler/list.ex index 9c01cd5d..4b2881a9 100644 --- a/lib/surface/type_handler/list.ex +++ b/lib/surface/type_handler/list.ex @@ -31,8 +31,8 @@ defmodule Surface.TypeHandler.List do defp handle_list_expr(name, expr) do quote generated: true do case unquote(expr) do - value when is_list(value) -> - value + value when is_list(value) or is_struct(value, Range) -> + Enum.to_list(value) value -> raise "invalid value for property \"#{unquote(name)}\". Expected a :list, got: #{ diff --git a/test/properties_test.exs b/test/properties_test.exs index 2e067a81..effce621 100644 --- a/test/properties_test.exs +++ b/test/properties_test.exs @@ -417,6 +417,20 @@ defmodule Surface.PropertiesTest do """ end + test "passing a range" do + html = + render_surface do + ~H""" + + """ + end + + assert html =~ """ + List?: true + value: 1value: 2value: 3 + """ + end + test "passing a keyword list without brackets" do html = render_surface do