View Source Upgrading to v0.9

Bump your deps

Update Backpex to the latest version:

  defp deps do
    [
      {:backpex, "~> 0.9.0"}
    ]
  end

Refactor calls to Backpex.HTML.Form.field_input/1

We've refactored the Backpex.HTML.Form.field_input/1 component and renamed it to Backpex.HTML.Form.input/1.

  • It doesn't rely on a field_options map anymore (instead all options must be passed explicitly)
  • It now supports lists for all class attributes (class, input_class and input_wrapper_class)
  • It now accepts a translate_error_fun attribute

In addition, the input_class and input_wrapper_class attributes now completely override the defaults.

Make sure to update your calls to Backpex.HTML.Form.field_input/1. This may apply to your custom fields as well.

Before:

@impl Backpex.Field
def render_form(assigns) do
  ~H"""
  <div>
    <Layout.field_container>
      <:label align={Backpex.Field.align_label(@field_options, assigns, :center)}>
        <Layout.input_label text={@field_options[:label]} />
      </:label>
      <BackpexForm.field_input type="text" field={@form[@name]} field_options={@field_options} />
    </Layout.field_container>
  </div>
  """
end

After:

@impl Backpex.Field
def render_form(assigns) do
  ~H"""
  <div>
    <Layout.field_container>
      <:label align={Backpex.Field.align_label(@field_options, assigns, :center)}>
        <Layout.input_label text={@field_options[:label]} />
      </:label>
      <BackpexForm.input
        type="text"
        field={@form[@name]}
        translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)}
        phx-debounce={Backpex.Field.debounce(@field_options, assigns)}
        phx-throttle={Backpex.Field.throttle(@field_options, assigns)}
      />
    </Layout.field_container>
  </div>
  """
end

Backpex.LiveResource function usage

Although the change is relatively small, if you are using public functions of the Backpex.LiveResource directly, check the updated function definitions in the module documentation.

Refactor custom fields

In case you built your own custom fields: We changed the way how to use the Backpex.Field.

Before:

  use BackpexWeb, :field

After:

  use Backpex.Field

In case your field has field-specific configuration options, you need to provide those when using Backpex.Field:

  @config_schema [
    # see https://hexdocs.pm/nimble_options/NimbleOptions.html
    # or any other core backpex field for examples...
  ]

  use Backpex.Field, config_schema: @config_schema

Removed string support on throttle field options

The fields that allow the throttle options previously supported a string value (e.g. "500"). Please change it to an integer value (e.g. 500).

Resource Action and Item Action init_change/1 is renamed

The term init_change was confusing because the result is being used as the base schema / item for the changeset function. Therefore we renamed the function to base_schema/1 for both Item Actions and Resource Actions.

Resource Action and Item Action handle functions behave differently

Both Item Action and Resource Action handle functions now have to return either {:ok, socket} or {:error, changeset}. A flash message is no longer added to the socket automatically.

Make sure to read the improved documentation for the handle functions to understand how you should use them now:

Translate new texts

The latest version of Backpex introduces the following texts

  • "Save & Continue Editing"

Make sure you translate these texts in your translation files.