LiveFilter.Mountable (LiveFilter v0.1.0)

View Source

Optional LiveView integration for LiveFilter.

This module provides a use macro that adds common filter-related functionality to your LiveView modules. Everything is overridable and customizable.

Usage

defmodule MyAppWeb.ProductLive do
  use MyAppWeb, :live_view
  use LiveFilter.Mountable

  def mount(params, session, socket) do
    socket =
      socket
      |> mount_filters()  # Adds default filter assigns
      |> assign(:products, [])

    {:ok, socket}
  end

  def handle_params(params, _uri, socket) do
    socket = handle_filter_params(socket, params)
    {:noreply, load_products(socket)}
  end
end

Customization

You can customize every aspect:

use LiveFilter.Mountable,
  mount_assigns: [:custom_filter_state],
  param_handler: &MyApp.custom_param_handler/3,
  url_updater: &MyApp.custom_url_updater/2

Or override the generated functions:

use LiveFilter.Mountable

# Override completely
def mount_filters(socket, opts) do
  # Your custom implementation
end