complete editor panel reorganisation polish
All checks were successful
deploy / deploy (push) Successful in 6m49s

- fix Site tab not loading theme state on direct URL navigation
- fix nav editor showing "Custom URL" for page links (detect by URL match)
- add Home option to nav page picker
- mark editor-reorganisation plan as complete
- add dynamic-url-customisation and draft-publish-workflow plans

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
jamey
2026-03-29 18:50:07 +01:00
parent d3fe6f4b56
commit 9a506357eb
8 changed files with 687 additions and 54 deletions

View File

@@ -305,9 +305,9 @@ defmodule BerrypodWeb.PageRenderer do
{if @editor_live_region_message, do: @editor_live_region_message}
</div>
<%!-- Page settings for custom pages --%>
<%!-- Page settings (custom and system pages, not product/collection) --%>
<.page_settings_section
:if={@page[:type] == "custom"}
:if={@page[:type] in ["custom", "system"]}
page={@page}
form={@settings_form}
dirty={@settings_dirty}
@@ -364,7 +364,7 @@ defmodule BerrypodWeb.PageRenderer do
"""
end
# Page settings section for custom pages (collapsible)
# Page settings section (collapsible) for custom and system pages
attr :page, :map, required: true
attr :form, :map, default: nil
attr :dirty, :boolean, default: false
@@ -372,9 +372,11 @@ defmodule BerrypodWeb.PageRenderer do
defp page_settings_section(assigns) do
form = assigns.form || %{}
is_custom = assigns.page[:type] == "custom"
assigns =
assigns
|> assign(:is_custom, is_custom)
|> assign(:form_title, form["title"] || assigns.page.title || "")
|> assign(:form_slug, form["slug"] || assigns.page.slug || "")
|> assign(:form_meta, form["meta_description"] || assigns.page.meta_description || "")
@@ -420,8 +422,10 @@ defmodule BerrypodWeb.PageRenderer do
id="page-settings-slug"
name="page[slug]"
value={@form_slug}
class="admin-input"
class={["admin-input", !@is_custom && "admin-input-disabled"]}
pattern="[a-z0-9-]+"
disabled={!@is_custom}
title={if !@is_custom, do: "System page URLs cannot be changed", else: nil}
/>
</div>
</div>
@@ -437,7 +441,8 @@ defmodule BerrypodWeb.PageRenderer do
>{@form_meta}</textarea>
</div>
<div class="page-settings-checks">
<%!-- Published and nav options only for custom pages --%>
<div :if={@is_custom} class="page-settings-checks">
<label class="admin-check-label">
<input
type="checkbox"
@@ -461,7 +466,7 @@ defmodule BerrypodWeb.PageRenderer do
</label>
</div>
<div :if={@form_show_in_nav} class="page-settings-nav-options">
<div :if={@is_custom && @form_show_in_nav} class="page-settings-nav-options">
<div class="page-settings-field page-settings-field-inline">
<label class="page-settings-label" for="page-settings-nav-label">Nav label</label>
<input
@@ -708,7 +713,17 @@ defmodule BerrypodWeb.PageRenderer do
<.quantity_selector quantity={assigns[:quantity] || 1} in_stock={@product.in_stock} />
<p
:if={assigns[:selected_variant] && !assigns[:selected_variant].is_available}
:if={assigns[:product_discontinued]}
class="variant-unavailable-msg"
>
This product is no longer available
</p>
<p
:if={
!assigns[:product_discontinued] && assigns[:selected_variant] &&
!assigns[:selected_variant].is_available
}
class="variant-unavailable-msg"
>
This option is currently unavailable
@@ -716,7 +731,13 @@ defmodule BerrypodWeb.PageRenderer do
<.add_to_cart_button
mode={@mode}
disabled={assigns[:selected_variant] && !assigns[:selected_variant].is_available}
text={
if assigns[:product_discontinued], do: "No longer available", else: "Add to basket"
}
disabled={
assigns[:product_discontinued] ||
(assigns[:selected_variant] && !assigns[:selected_variant].is_available)
}
/>
</form>
</div>