Keep the control-choosing rule where a caller picks one
CI / full-gate (push) Successful in 2m50s

This commit is contained in:
2026-08-25 09:38:33 +02:00
parent f4693af3df
commit 43bb004ae7
2 changed files with 2 additions and 4 deletions
-4
View File
@@ -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 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 profile menu (its trigger composes escaped user values and its one item is a CSRF POST form) — keep
the two in step. 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 - **`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 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 to an id goes, and a plugin needing one gets it re-registered in the same change. Accepted cost: an
+2
View File
@@ -9,6 +9,8 @@
chips { name, legend?, value?:string[], options:{value,label}[] } (checkboxes) chips { name, legend?, value?:string[], options:{value,label}[] } (checkboxes)
multiselect { name, legend?, note?, value?:string[], options:{value,label}[] } (checkboxes in a popover) multiselect { name, legend?, note?, value?:string[], options:{value,label}[] } (checkboxes in a popover)
daterange { legend?, from:{name,value?,label?}, to:{name,value?,label?} } 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 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. along as a hidden input, and every href here (pills, clear) is run through localeHref.
%><% %><%