Dala.Spark.Dsl (dala v0.5.0)

Copy Markdown View Source

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
end

Options

  • :extensions (list of module that adopts Spark.Dsl.Extension) - A list of DSL extensions to add to the Spark.Dsl

  • :dala (list of module that adopts Spark.Dsl.Extension) - dala extensions to add to the Spark.Dsl The default value is [].

  • :otp_app (atom/0) - The otp_app to use for any application configurable options

  • :fragments (list of module/0) - Fragments to include in the Spark.Dsl. See the fragments guide for more.

Summary

Functions

attributes(list)

(macro)

dala(list)

(macro)

pubsub(body)

(macro)

screen(opts, list)

(macro)