From 43bb004ae791ef469b2074e2df90c0cc764565f1 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 25 Aug 2026 09:38:33 +0200 Subject: [PATCH] Keep the control-choosing rule where a caller picks one --- AGENTS.md | 4 ---- views/partials/filter-bar.ejs | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 3f7731f..d87c6b8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -259,10 +259,6 @@ Revisit only if the stated reason stops holding. it means disclosure rather than popup: the nav tree. `shell.ejs` hand-rolls the same block for the profile menu (its trigger composes escaped user values and its one item is a CSRF POST form) — keep the two in step. -- **Two multi-selects, chosen by list length.** `chips` lays every option on the bar, which is right - for a handful and a wall past that — `multiselect` hides the same checkboxes in a popover and puts - the chosen count on the trigger. Both submit the same repeated parameter, so swapping one for the - other is a view-model edit. - **`ICON_NAMES` (`src/ui/icons.ts`) is a host-owned registry, not a frozen plugin contract**, so it is deliberately not re-exported from `@plainpages/plugin-api`. The palette may narrow when the last reference to an id goes, and a plugin needing one gets it re-registered in the same change. Accepted cost: an diff --git a/views/partials/filter-bar.ejs b/views/partials/filter-bar.ejs index 5a3a1fa..71858e4 100644 --- a/views/partials/filter-bar.ejs +++ b/views/partials/filter-bar.ejs @@ -9,6 +9,8 @@ chips { name, legend?, value?:string[], options:{value,label}[] } (checkboxes) multiselect { name, legend?, note?, value?:string[], options:{value,label}[] } (checkboxes in a popover) daterange { legend?, from:{name,value?,label?}, to:{name,value?,label?} } + chips and multiselect are the same checkboxes on the same parameter: on the bar, or behind a + button once the list is too long to lay there. The form is a GET, which replaces the whole query string — so the visitor's chosen language rides along as a hidden input, and every href here (pills, clear) is run through localeHref. %><%