simplify footer categories: fetch directly instead of threading assigns
shop_footer now calls PreviewData.categories() itself, removing the need to thread categories through CartHook, shop_layout, and all 8 page templates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
209ae7aee7
commit
e9a824ec0b
@ -19,7 +19,6 @@ defmodule SimpleshopThemeWeb.CartHook do
|
|||||||
import Phoenix.LiveView, only: [attach_hook: 4, connected?: 1, push_event: 3]
|
import Phoenix.LiveView, only: [attach_hook: 4, connected?: 1, push_event: 3]
|
||||||
|
|
||||||
alias SimpleshopTheme.Cart
|
alias SimpleshopTheme.Cart
|
||||||
alias SimpleshopTheme.Theme.PreviewData
|
|
||||||
|
|
||||||
def on_mount(:mount_cart, _params, session, socket) do
|
def on_mount(:mount_cart, _params, session, socket) do
|
||||||
cart_items = Cart.get_from_session(session)
|
cart_items = Cart.get_from_session(session)
|
||||||
@ -29,7 +28,6 @@ defmodule SimpleshopThemeWeb.CartHook do
|
|||||||
|> update_cart_assigns(cart_items)
|
|> update_cart_assigns(cart_items)
|
||||||
|> assign(:cart_drawer_open, false)
|
|> assign(:cart_drawer_open, false)
|
||||||
|> assign(:cart_status, nil)
|
|> assign(:cart_status, nil)
|
||||||
|> assign(:categories, PreviewData.categories())
|
|
||||||
|> attach_hook(:cart_events, :handle_event, &handle_cart_event/3)
|
|> attach_hook(:cart_events, :handle_event, &handle_cart_event/3)
|
||||||
|> attach_hook(:cart_info, :handle_info, &handle_cart_info/2)
|
|> attach_hook(:cart_info, :handle_info, &handle_cart_info/2)
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="cart"
|
active_page="cart"
|
||||||
>
|
>
|
||||||
<main id="main-content" class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
<main id="main-content" class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="checkout"
|
active_page="checkout"
|
||||||
>
|
>
|
||||||
<main id="main-content" class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
<main id="main-content" class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="collection"
|
active_page="collection"
|
||||||
>
|
>
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="contact"
|
active_page="contact"
|
||||||
>
|
>
|
||||||
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
<main id="main-content" class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page={@active_page}
|
active_page={@active_page}
|
||||||
>
|
>
|
||||||
<main id="main-content" class="content-page" style="background-color: var(--t-surface-base);">
|
<main id="main-content" class="content-page" style="background-color: var(--t-surface-base);">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="error"
|
active_page="error"
|
||||||
error_page
|
error_page
|
||||||
>
|
>
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="home"
|
active_page="home"
|
||||||
>
|
>
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
cart_subtotal={@cart_subtotal}
|
cart_subtotal={@cart_subtotal}
|
||||||
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
cart_drawer_open={assigns[:cart_drawer_open] || false}
|
||||||
cart_status={assigns[:cart_status]}
|
cart_status={assigns[:cart_status]}
|
||||||
categories={assigns[:categories] || []}
|
|
||||||
active_page="pdp"
|
active_page="pdp"
|
||||||
>
|
>
|
||||||
<main id="main-content" class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
<main id="main-content" class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
|
|||||||
@ -65,7 +65,6 @@ defmodule SimpleshopThemeWeb.ShopComponents.Layout do
|
|||||||
attr :cart_subtotal, :string, required: true
|
attr :cart_subtotal, :string, required: true
|
||||||
attr :cart_drawer_open, :boolean, default: false
|
attr :cart_drawer_open, :boolean, default: false
|
||||||
attr :cart_status, :string, default: nil
|
attr :cart_status, :string, default: nil
|
||||||
attr :categories, :list, default: []
|
|
||||||
attr :active_page, :string, required: true
|
attr :active_page, :string, required: true
|
||||||
attr :error_page, :boolean, default: false
|
attr :error_page, :boolean, default: false
|
||||||
|
|
||||||
@ -96,7 +95,7 @@ defmodule SimpleshopThemeWeb.ShopComponents.Layout do
|
|||||||
|
|
||||||
{render_slot(@inner_block)}
|
{render_slot(@inner_block)}
|
||||||
|
|
||||||
<.shop_footer theme_settings={@theme_settings} mode={@mode} categories={@categories} />
|
<.shop_footer theme_settings={@theme_settings} mode={@mode} />
|
||||||
|
|
||||||
<.cart_drawer
|
<.cart_drawer
|
||||||
cart_items={@cart_items}
|
cart_items={@cart_items}
|
||||||
@ -406,10 +405,12 @@ defmodule SimpleshopThemeWeb.ShopComponents.Layout do
|
|||||||
"""
|
"""
|
||||||
attr :theme_settings, :map, required: true
|
attr :theme_settings, :map, required: true
|
||||||
attr :mode, :atom, default: :live
|
attr :mode, :atom, default: :live
|
||||||
attr :categories, :list, default: []
|
|
||||||
|
|
||||||
def shop_footer(assigns) do
|
def shop_footer(assigns) do
|
||||||
assigns = assign(assigns, :current_year, Date.utc_today().year)
|
assigns =
|
||||||
|
assigns
|
||||||
|
|> assign(:current_year, Date.utc_today().year)
|
||||||
|
|> assign(:categories, SimpleshopTheme.Theme.PreviewData.categories())
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<footer style="background-color: var(--t-surface-raised); border-top: 1px solid var(--t-border-default);">
|
<footer style="background-color: var(--t-surface-raised); border-top: 1px solid var(--t-border-default);">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user