From c79834cbea3516c997501c0b93aa770ffa620ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20M=C3=BChl?= Date: Wed, 8 Apr 2026 15:50:33 +0200 Subject: [PATCH] docs: plant seed SEED-001 native entity pickers --- .../seeds/SEED-001-native-entity-pickers.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .planning/seeds/SEED-001-native-entity-pickers.md diff --git a/.planning/seeds/SEED-001-native-entity-pickers.md b/.planning/seeds/SEED-001-native-entity-pickers.md new file mode 100644 index 0000000..7ffdca0 --- /dev/null +++ b/.planning/seeds/SEED-001-native-entity-pickers.md @@ -0,0 +1,35 @@ +--- +id: SEED-001 +title: Replace basic dropdown with Kimai's native TomSelect entity pickers +planted: 2026-04-08 +trigger: next milestone focused on UX polish, or when activity filtering gets added +status: planted +--- + +# SEED-001: Native Entity Pickers + +## Why + +Phase 4 shipped a plain `` in `heatmap.ts` with Kimai's `KimaiFormSelect.js` + TomSelect integration. Use `data-api-url`, `data-related-select`, and `data-empty-url` attributes to wire up cascading. + +## Breadcrumbs + +- `dev/kimai/assets/js/forms/KimaiFormSelect.js` — cascading logic (lines 386-447) +- `dev/kimai/assets/js/forms/KimaiFormTomselectPlugin.js` — base TomSelect wrapper +- `dev/kimai/src/Form/Type/ProjectType.php` — Symfony form type with `api_data` config +- `dev/kimai/src/Form/Type/ActivityType.php` — activity picker form type +- API routes: `get_customers`, `get_projects`, `get_activities` +- Current implementation: `assets/src/heatmap.ts` init() function, lines 236-276 + +## Scope Estimate + +Medium — needs backend changes (new API endpoint or reuse existing routes) + frontend refactor of the filter section. Tests need updating.