mirror of
https://github.com/juherr/kill-the-news.git
synced 2026-06-20 22:03:48 +00:00
feat(admin): collapse create-feed form into accordion
Wrap the "Create New Feed" form in a native <details> accordion, collapsed by default and auto-opened when no feeds exist. After creating a feed, redirect to the "Your Feeds" anchor so the new feed is immediately visible. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -148,7 +148,7 @@ describe("Admin Routes", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(res.status).toBe(302); // Redirects back to dashboard
|
expect(res.status).toBe(302); // Redirects back to dashboard
|
||||||
expect(res.headers.get("Location")).toBe("/admin?view=list");
|
expect(res.headers.get("Location")).toBe("/admin?view=list#your-feeds");
|
||||||
|
|
||||||
// Verify feed was created in KV
|
// Verify feed was created in KV
|
||||||
const feedList = (await mockEnv.EMAIL_STORAGE.get(
|
const feedList = (await mockEnv.EMAIL_STORAGE.get(
|
||||||
|
|||||||
@@ -383,8 +383,13 @@ app.get("/", async (c) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<details
|
||||||
<h2>Create New Feed</h2>
|
class="card create-feed-card"
|
||||||
|
open={feedsWithConfig.length === 0}
|
||||||
|
>
|
||||||
|
<summary class="create-feed-summary">
|
||||||
|
<h2>Create New Feed</h2>
|
||||||
|
</summary>
|
||||||
<form action="/admin/feeds/create" method="post">
|
<form action="/admin/feeds/create" method="post">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="title">Feed Title</label>
|
<label for="title">Feed Title</label>
|
||||||
@@ -458,7 +463,7 @@ app.get("/", async (c) => {
|
|||||||
Create Feed
|
Create Feed
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</details>
|
||||||
|
|
||||||
{message === "bulkDeleted" && (
|
{message === "bulkDeleted" && (
|
||||||
<div class="card">
|
<div class="card">
|
||||||
@@ -471,7 +476,7 @@ app.get("/", async (c) => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div class="toolbar">
|
<div class="toolbar" id="your-feeds">
|
||||||
<div class="toolbar-group">
|
<div class="toolbar-group">
|
||||||
<h2 style="margin: 0;">Your Feeds</h2>
|
<h2 style="margin: 0;">Your Feeds</h2>
|
||||||
<span class="pill" id="feed-total-count">
|
<span class="pill" id="feed-total-count">
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ feedsRouter.post("/create", async (c) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.redirect(`/admin?view=${view}`);
|
return c.redirect(`/admin?view=${view}#your-feeds`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("Error creating feed", { error: String(error) });
|
logger.error("Error creating feed", { error: String(error) });
|
||||||
if (c.req.header("Content-Type")?.includes("application/json")) {
|
if (c.req.header("Content-Type")?.includes("application/json")) {
|
||||||
|
|||||||
@@ -13,6 +13,39 @@
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create-feed accordion */
|
||||||
|
.create-feed-card > summary {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
cursor: pointer;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-feed-card > summary::-webkit-details-marker {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-feed-summary h2 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-feed-card > summary::after {
|
||||||
|
content: "+";
|
||||||
|
color: var(--color-primary);
|
||||||
|
font-size: var(--font-size-xl);
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-feed-card[open] > summary::after {
|
||||||
|
content: "\2212";
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-feed-card[open] > summary {
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
/* Feed header styling */
|
/* Feed header styling */
|
||||||
.feed-header {
|
.feed-header {
|
||||||
margin-bottom: var(--spacing-md);
|
margin-bottom: var(--spacing-md);
|
||||||
|
|||||||
Reference in New Issue
Block a user