Replace TODO-css-improvements.md with TODO-release.md. Add EntityPalette and IconSelect patterns for dynamic entity lists to frontend context.
This commit is contained in:
@@ -96,6 +96,20 @@ Both widgets hide the native `<select>` but keep it in the DOM with its value in
|
||||
|
||||
**IMPORTANT:** For `IconSelect` item icons, use SVG icons from `js/core/icon-paths.ts` (via `_icon(P.iconName)`) or styled `<span>` elements (e.g., `<span style="font-weight:bold">A</span>`). **Never use emoji** — they render inconsistently across platforms and themes.
|
||||
|
||||
### Dynamic entity lists (e.g. group child devices)
|
||||
|
||||
When a modal needs an **ordered list of entity references** (like child devices in a group), use the `EntityPalette.pick()` pattern instead of plain `<select>` dropdowns per row. Each row should be a styled card with:
|
||||
|
||||
- An icon (from `getDeviceTypeIcon()` / `getXxxIcon()`) showing the entity type
|
||||
- The entity name and metadata (LED count, type, etc.)
|
||||
- SVG icon buttons for reorder (chevron-up/down) and remove (trash)
|
||||
- A click handler that opens `EntityPalette.pick()` to change the selection
|
||||
- `data-*` attributes to store the selected value (not hidden `<select>` elements)
|
||||
|
||||
See `_addGroupChildRow()` in `device-discovery.ts` for the reference implementation. This pattern keeps the list visually consistent with the rest of the UI and avoids plain HTML selects.
|
||||
|
||||
For **mode/type toggles** with 2-4 fixed options (e.g. group mode: Sequence vs Independent), use `IconSelect` with descriptive icons and labels rather than radio buttons or plain selects. See `ensureGroupModeIconSelect()` for the pattern.
|
||||
|
||||
### Modal dirty check (discard unsaved changes)
|
||||
|
||||
Every editor modal **must** have a dirty check so closing with unsaved changes shows a "Discard unsaved changes?" confirmation. Use the `Modal` base class pattern from `js/core/modal.ts`:
|
||||
|
||||
Reference in New Issue
Block a user