Phoenix LiveView snippetsDescriptionA well documented set of snippets commonly used when writing LiveView code. The snippets touch on all aspects of development when writing LiveView code. Here's a high level list
Getting startedNot sure where to startAll snippets support the prefix Mnemonic layoutAll snippets use a mnemonic layout that matches the component name name space. So for example if you want to render a form in Phoenix LiveView You'll want to reach for This applies to all snippets. See the table below to get a better understanding. Worst case, you just type Snippet index
SnippetsEcto: Schema changesetPrefixesplvs,es,esc Templatedef changeset(${1:name}, attrs) do required_attrs = [$2] optional_attrs = [$3] ${1:name} |> cast(attrs, required_attrs ++ optional_attrs) |> validate_required(required_attrs) end Ecto: Schema changeset optional attrsPrefixesplvs,es,esoa Templateoptional_attrs = [$0] Ecto: Schema changeset required attrsPrefixesplvs,es,escra Templaterequired_attrs = [$0] LiveView: @impl Phoenix.LiveComponentPrefixesplvs,plv,@impl Template@impl Phoenix.LiveComponent LiveView: @impl Phoenix.LiveViewPrefixesplvs,plv,@impl Template@impl Phoenix.LiveView LiveView: New LiveView modulePrefixesplvs,plv,plvnlvm,defmodule Templatedefmodule $1 do use $2, :live_view @impl Phoenix.LiveView def render(assigns) do ~H""" $0 """ end @impl Phoenix.LiveView def mount(${3: params}, ${4: session}, ${5: socket}) do $6 {:ok, socket} end end LiveView: Phoenix.LiveComponent assign helperPrefixesplvs,plc,plca,plcah Templatedef assign_$1(socket, $1) do assign(socket, $1: $1) end LiveView: Phoenix.LiveComponent callPrefixesplvs,plc,plcc TemplateLiveView: Phoenix.LiveComponent handle_eventPrefixesplvs,plc,plche Template@impl Phoenix.LiveComponent def handle_event(${1:event}, ${2:unsigned_params}, ${3:socket}) do $0 ${4:{:noreply, socket}} end LiveView: Phoenix.LiveComponent mountPrefixesplvs,plc,plcm Template@impl Phoenix.LiveComponent def mount(${1:socket}) do $0 {:ok, ${2:socket}} end LiveView: Phoenix.LiveComponent preloadPrefixesplvs,plc,plcp Template@impl Phoenix.LiveComponent def preload(${1:list_of_assigns}) do $0 $1 end LiveView: Phoenix.LiveComponent renderPrefixesplvs,plc,plcr Template@impl Phoenix.LiveComponent def render(${1:assigns}) do ~H""" $0 """ end LiveView: Phoenix.LiveComponent updatePrefixesplvs,plc,plcu Template@impl Phoenix.LiveComponent def update(${1:assigns}, ${2:socket}) do $0 {:ok, socket} end LiveView: Phoenix.LiveView mountPrefixesplvs,plv,plvm,def mount Template@impl Phoenix.LiveView def mount(${1:params}, ${2:session}, ${3:socket}) do ${4:{:noreply, socket}} end LiveView: Render slotPrefixesplvs,plvrs TemplateLiveView: handle_callPrefixesplvs,plv,plvhi,def,def handle_call Template@impl Phoenix.LiveView def handle_call(${1:msg}, ${2:from}, ${3:socket}) do $0 ${4:{:noreply, socket}} end LiveView: handle_castPrefixesplvs,plv,plvhi,def,def handle_cast Template@impl Phoenix.LiveView def handle_cast(${1:msg}, ${2:socket}) do $0 ${3:{:noreply, socket}} end LiveView: handle_eventPrefixesplvs,plv,plvhe,def,def handle_event Template@impl Phoenix.LiveView def handle_event(${1:event}, ${2:unsigned_params}, ${3:socket}) do $0 ${4:{:noreply, socket}} end LiveView: handle_infoPrefixesplvs,plv,plvhi,def,def handle_info Template@impl Phoenix.LiveView def handle_info(${1:message}, ${2:socket}) do $0 {:noreply, ${3:socket}} end LiveView: handle_paramsPrefixesplvs,plv,plvhe,def,def handle_params Template@impl Phoenix.LiveView def handle_params(${1:event}, ${2:uri}, ${3:socket}) do $0 ${4:{:noreply, socket}} end LiveView: render implementationPrefixesplvs,plv,plvr,def render Template@impl Phoenix.LiveView def render(${1:assigns}) do ~H""" $0 """ end LiveView: socket destructurePrefixesplvs,plv,plvsd,socket Template%{ assigns: %{$1} } = $0 LiveView: terminatePrefixesplvs,plv,plvt,def terminate Template@impl Phoenix.LiveView def terminate(${1: reason}, ${2:socket}) do $3 end Phoenix: Component definitionPrefixesplvs,pc,pcd Templatedef ${1:component}(${2:assigns}) do ~H""" $3 """ end Phoenix: Context changePrefixesplvs,pctx,pctxch Template@doc """ Returns an `%Ecto.Changeset{}` for tracking $1 changes. ## Examples iex> change_$1(%{field: value}) %Ecto.Changeset{data: %${1/(.*)/${1:/pascalcase}/}{}} """ def change_${1:name}(%${1/(.*)/${1:/pascalcase}/}{} = $1, attrs \\\\ %{} ) do ${1/(.*)/${1:/pascalcase}/}.changeset($1, attrs) end Phoenix: Context createPrefixesplvs,pctx,pctxcr Template@doc """ Creates a $1. ## Examples iex> create_$1(%{field: value}) {:ok, %${1/(.*)/${1:/pascalcase}/}{}} iex> create_$1(%{field: bad_value}) {:error, ...} """ def create_${1:name}(attrs \\\\ %{}) do %${1/(.*)/${1:/pascalcase}/}{} |> ${1/(.*)/${1:/pascalcase}/}.changeset(attrs) |> Repo.insert() end Phoenix: Context deletePrefixesplvs,pctx,pctxd Template@doc """ Deletes a $1. ## Examples iex> delete_$1($1) {:ok, %${1/(.*)/${1:/pascalcase}/}{}} iex> delete_$1($1) {:error, %Ecto.Changeset{}} """ def delete_${1:name}(%${1/(.*)/${1:/pascalcase}/}{} = $1) do Repo.delete($1) end Phoenix: Context getPrefixesplvs,pctx,pctxg Template@doc """ Gets a single $1. ## Examples iex> get_$1!(123) %${1/(.*)/${1:/pascalcase}/}{} iex> get_$1!(456) ** (Ecto.NoResultsError) """ def get_${1:name}!(id) do Repo.get!(${1/(.*)/${1:/pascalcase}/}, id) end Phoenix: Context listPrefixesplvs,pctx,pctxl Template@doc """ Returns the list of $1s. ## Examples iex> list_$1() [%${1/(.*)/${1:/pascalcase}/}{}, ...] """ def list_${1:name}s do Repo.all(${1/(.*)/${1:/pascalcase}/}) end Phoenix: Context updatePrefixesplvs,pctx,pctxu Template@doc """ Updates a $1. ## Examples iex> update_$1(%{field: value}) {:ok, %${1/(.*)/${1:/pascalcase}/}{}} iex> update_$1(%{field: bad_value}) {:error, %Ecto.Chnageset{}} """ def update_${1:name}(%${1/(.*)/${1:/pascalcase}/}{} = $1, attrs) do $1 |> ${1/(.*)/${1:/pascalcase}/}.changeset(attrs) |> Repo.update() end Phoenix: HTML inputs_forPrefixesplvs,phtml,phtmlif,inputs_for, $0 Phoenix: Phoenix.Component.form/1Prefixesplvs,pc,pcf Template$0 eex: CommentPrefixesplvs,eex,eexc, eex: Replace with resultPrefixesplvs,eex, eex: Return contentsPrefixesplvs,eex,eexr, eex: casePrefixesplvs,eex,eexcase, eex: condPrefixesplvs,eex,eexcond, $2 eex: forPrefixesplvs,eex,eexfor, $0 eex: ifPrefixesplvs,eex,eexif, $0 eex: inline with outputPrefixesplvs,eex, |