Spark DSL for declarative Dala screens.
Defines attributes for screen state and UI component entities that mirror
Dala.Ui.Component one-to-one. All entity structs and definitions are
auto-generated from the central component registry via Dala.Spark.Dsl.Entities.
Container entities support nested children via Spark's entities + recursive_as.
Usage
defmodule MyApp.CounterScreen do
use Dala.Spark.Dsl
dala do
attribute :count, :integer, default: 0
screen name: :counter do
column padding: :space_md, gap: :space_sm do
text "Count: @count", text_size: :xl
button "Increment", on_tap: :increment
end
end
end
def handle_event(:increment, _params, socket) do
{:noreply, Dala.Socket.assign(socket, :count, socket.assigns.count + 1)}
end
endOptions
:extensions(list of module that adoptsSpark.Dsl.Extension) - A list of DSL extensions to add to theSpark.Dsl:dala(list of module that adoptsSpark.Dsl.Extension) - dala extensions to add to theSpark.DslThe default value is[].:otp_app(atom/0) - The otp_app to use for any application configurable options:fragments(list ofmodule/0) - Fragments to include in theSpark.Dsl. See the fragments guide for more.
Summary
Functions
Verify the DSL definitions of a screen module.
Functions
@spec verify(module()) :: [Dala.Spark.DslVerifier.warning()]
Verify the DSL definitions of a screen module.
Returns a list of warnings and errors found in the module's DSL.
Dala.Spark.Dsl.verify(MyApp.HomeScreen)
# => [%{type: :warning, module: MyApp.HomeScreen, line: 12, message: "..."}]See Dala.Spark.DslVerifier for detailed verification logic.