Aurora.Uix.ComponentsResolver (Aurora UIX v0.1.5-rc.2)

Copy Markdown

Macro module that enables runtime component overriding for Aurora UIX component modules.

When a component module calls use Aurora.Uix.ComponentsResolver, :some_key, it:

  1. Imports Aurora.Uix.ComponentsResolverHelper, making the resolve_component_for/1 macro available.
  2. Stores the given atom as @components_override, which is the Application env key used to look up a host override module at runtime.
  3. Injects a components_override/0 function (via @before_compile) that returns the configured key.

Usage

defmodule MyComponents do
  use Aurora.Uix.ComponentsResolver, :my_components

  def my_component(%{host_components: nil} = assigns) do
    # default implementation
  end

  resolve_component_for(:my_component)
end

Each component module uses a distinct key:

ModuleKey
CoreComponents:core_components
Components:basic_components
FilteringComponents:basic_filtering_components
RoutingComponents:basic_routing_components

See Aurora.Uix.ComponentsResolverHelper for how the public dispatch function is generated and how runtime lookup works.