Packages
surface
0.9.3
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha.0
A component based library for Phoenix LiveView
Current section
Files
Jump to
Current section
Files
lib/surface/components/dynamic/component.ex
defmodule Surface.Components.Dynamic.Component do
@moduledoc """
A built-in component that allows users to inject dynamic components into
a Surface template.
"""
use Surface.Component
alias Surface.AST
@doc """
The module of the component
"""
prop module, :module, required: true
@doc """
The function of the component
"""
prop function, :atom
@doc """
The default slot
"""
slot default
@doc false
def transform(node) do
%AST.Component{props: props, directives: directives, slot_entries: slot_entries, meta: meta} = node
{%{module: mod, function: fun}, other_props} = AST.pop_attributes_values_as_map(props, [:module, :function])
%AST.FunctionComponent{
module: mod,
fun: fun,
type: :dynamic,
props: other_props,
directives: directives,
slot_entries: slot_entries,
meta: meta
}
end
def render(assigns), do: ~F[]
end