listen ansichten verbessert
This commit is contained in:
@@ -14,7 +14,7 @@ Durchgaengig dieselben technischen Grenzen durchsetzen, damit Core robust, wartb
|
||||
1. MUST Layering einhalten (`pages` -> `Service` -> `Repository`, Templates nur Rendering).
|
||||
2. MUST Request/Input/Validation-Contract einhalten (`requestInput()`, `FormErrors`, API-Validation ueber `ApiResponse::validationFromFormErrors(...)`, kein `ApiResponse::readJsonBody(...)` in `pages/api/v1/**`).
|
||||
3. MUST AuthZ/RBAC serverseitig durchsetzen und im UI nur ueber `$viewAuth` steuern.
|
||||
4. MUST UI-Standards und Data-Contracts fuer Listen/Detailseiten nutzen (Wrapper, Partials, keine inline `confirm(...)`).
|
||||
4. MUST UI-Standards und Data-Contracts fuer Listen/Detailseiten nutzen (Wrapper, Partials, keine inline `confirm(...)`, inklusive globaler Grid-Standards fuer rowInteraction/pageSize).
|
||||
5. MUST Quality-Gates ausfuehren und Ergebnis transparent berichten.
|
||||
6. MUST bei Konflikten den regelkonformen Weg waehlen oder den Konflikt als Blocker markieren.
|
||||
7. MUST NOT Extension-Architektur erfinden; dieses Thema ist aktuell Out of Scope.
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
3. MUST aktive Chips/Drawer-Verhalten ueber Standard-Contracts laufen lassen.
|
||||
4. MUST NOT direkt `gridFiltersFromSchema(...)` oder `initListFilterExperience(...)` in Listen-Templates verwenden.
|
||||
5. MUST NOT Legacy-Filter-Toggle-Markup (`data-toolbar-toggle`, `data-filter-overflow`, `data-filter-toggle`) neu einbauen.
|
||||
6. MUST rowInteraction-Standard fuer Listen mit Row-Navigation beibehalten (sichtbare Action-Spalte + Enter + Doppelklick-Fallback).
|
||||
7. MUST pageSize-Standard beibehalten (10/25/50/100, Toolbar rechts, URL > localStorage > default).
|
||||
|
||||
## Detailseiten-Standard
|
||||
|
||||
|
||||
38
tools/codex-skills/starterkit-grid-standards/SKILL.md
Normal file
38
tools/codex-skills/starterkit-grid-standards/SKILL.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: starterkit-grid-standards
|
||||
description: Standardisierungs-Skill fuer GridJS-Listen im Starterkit. Verwenden, wenn Listen neu gebaut oder refactored werden sollen (rowInteraction, pageSize, filter drawer, URL-state, accessibility).
|
||||
---
|
||||
|
||||
# Starterkit Grid Standards
|
||||
|
||||
## Ziel
|
||||
|
||||
GridJS-Listen projektweit einheitlich, zuganglich und wartbar halten.
|
||||
|
||||
## Wann verwenden
|
||||
|
||||
1. Neue Listen mit `initStandardListPage(...)` oder `createServerGrid(...)`.
|
||||
2. Refactor von Legacy-Listen.
|
||||
3. Review von UX/Accessibility in Listen.
|
||||
|
||||
## Verbindliche Regeln
|
||||
|
||||
1. MUST `initStandardListPage(...)` als Standard nutzen (nur begruendete Ausnahmen direkt mit `createServerGrid(...)`).
|
||||
2. MUST `rowDblClick.getUrl(...)` fuer zeilenbezogene Navigation setzen, wenn Row-Navigation vorgesehen ist.
|
||||
3. MUST globale `rowInteraction`-Defaults respektieren (Action-Spalte, Enter, Doppelklick-Fallback).
|
||||
4. MUST globale `pageSize`-Standards respektieren (`10/25/50/100`, Toolbar-Placement, URL > storage > default).
|
||||
5. MUST Filter-Drawer/Chips ueber den Standard-Contract nutzen, keine parallelen Custom-Patterns.
|
||||
6. MUST NOT pro Seite eigene Row-Action-Hacks bauen, wenn der Factory-Contract ausreicht.
|
||||
|
||||
## Vorgehen
|
||||
|
||||
1. Ist-Liste gegen `references/list-checklist.md` pruefen.
|
||||
2. Fehlende Standards zuerst zentral in der Factory loesen, danach nur minimale Seitenanpassungen.
|
||||
3. UI/CSS nur als additive Erweiterung zu bestehenden Komponenten.
|
||||
4. Relevante Gates und Browser-Smoke (Keyboard + Console) ausfuehren.
|
||||
|
||||
## Referenzen
|
||||
|
||||
- Checkliste: `references/list-checklist.md`
|
||||
- Row Interaction: `references/row-interaction-standard.md`
|
||||
- Page Size: `references/page-size-standard.md`
|
||||
@@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "Starterkit Grid Standards"
|
||||
short_description: "Standardize GridJS lists and accessibility patterns"
|
||||
default_prompt: "Use $starterkit-grid-standards to standardize a list page with rowInteraction, pageSize, and filter drawer contracts."
|
||||
@@ -0,0 +1,30 @@
|
||||
# List Checklist
|
||||
|
||||
## Bootstrap
|
||||
|
||||
1. `initStandardListPage({ grid, filters, hooks })` verwendet.
|
||||
2. `filterSchema` aus Server-Config uebergeben.
|
||||
3. `urlSync` bewusst gesetzt.
|
||||
|
||||
## Interaction
|
||||
|
||||
1. `rowDblClick.getUrl(...)` liefert stabile Ziel-URL oder leer.
|
||||
2. Keine Doppel-Action-Spalte (Factory auto-action vs explizite actions).
|
||||
3. Enter/Pointer/Focus fuer oeffnbare Rows funktionieren.
|
||||
|
||||
## Pagination + URL
|
||||
|
||||
1. Page-size Optionen nur `10/25/50/100`.
|
||||
2. URL Sync pruefen (`page`, `order`, `dir`, `limit`).
|
||||
3. Default-Werte erzeugen saubere URL.
|
||||
|
||||
## Filter UX
|
||||
|
||||
1. Search sichtbar.
|
||||
2. Drawer-Filter und Chips intakt.
|
||||
3. Reset/Apply Verhalten reproduzierbar.
|
||||
|
||||
## Regression
|
||||
|
||||
1. Sortierung, Selection/Bulk, Doppelklick unveraendert.
|
||||
2. Keine neuen Console Errors.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Page Size Standard
|
||||
|
||||
## Globale Defaults
|
||||
|
||||
1. Optionen: `10`, `25`, `50`, `100`.
|
||||
2. Default: `10`.
|
||||
3. Prioritaet: `URL > localStorage > Default`.
|
||||
4. Placement: obere `app-list-toolbar`, rechts ausgerichtet.
|
||||
|
||||
## URL Contract
|
||||
|
||||
1. Param: `limit`.
|
||||
2. Bei Default-Limit optional clean URL (Param entfernen).
|
||||
3. Bei Hard-Reload muss gesetztes URL-Limit reproduzierbar sein.
|
||||
|
||||
## Verhalten
|
||||
|
||||
1. Aenderung der Seitengroesse setzt Seite auf 1.
|
||||
2. Sortierung/Filter bleiben erhalten.
|
||||
3. LocalStorage-Key pro Tabelle (path + dataUrl + container).
|
||||
@@ -0,0 +1,31 @@
|
||||
# Row Interaction Standard
|
||||
|
||||
## Ziel
|
||||
|
||||
Row-Navigation discoverable und keyboard-freundlich machen.
|
||||
|
||||
## Standardverhalten
|
||||
|
||||
1. Sichtbare Action-Spalte rechts (`Open`/`Edit`) fuer Listen mit `rowDblClick`.
|
||||
2. Enter auf fokussierter Row loest dieselbe Navigation aus.
|
||||
3. Doppelklick bleibt als Fallback fuer Power-User.
|
||||
4. Nur Rows mit Ziel-URL erhalten `data-row-open-url`.
|
||||
|
||||
## Contract
|
||||
|
||||
```js
|
||||
rowInteraction: {
|
||||
enabled: true,
|
||||
showActionButton: true,
|
||||
keepDblClick: true,
|
||||
enableEnterOnRow: true,
|
||||
actionColumnLabel: 'Actions',
|
||||
resolveActionLabel: (url, rowData) => (url.includes('/edit/') ? 'Edit' : 'Open')
|
||||
}
|
||||
```
|
||||
|
||||
## Guardrails
|
||||
|
||||
1. Keine globale Tab-Stop-Flut auf allen Rows.
|
||||
2. Fokusstil fuer Row und Action-Button sichtbar.
|
||||
3. Explizite `actions.enabled: true` pro Seite darf Auto-Action uebersteuern.
|
||||
37
tools/codex-skills/starterkit-php-style-ci/SKILL.md
Normal file
37
tools/codex-skills/starterkit-php-style-ci/SKILL.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: starterkit-php-style-ci
|
||||
description: Standard-Skill fuer PHP Coding-Style im Starterkit (php-cs-fixer, dry-run in CI, lokaler fix/check workflow). Verwenden bei Style-Einfuehrung, CI-Checks oder grossen Format-Diffs.
|
||||
---
|
||||
|
||||
# Starterkit PHP Style CI
|
||||
|
||||
## Ziel
|
||||
|
||||
Coding-Style pruefbar, reproduzierbar und regressionsarm machen.
|
||||
|
||||
## Wann verwenden
|
||||
|
||||
1. Einfuehrung oder Nachschaerfung von Style-Regeln.
|
||||
2. CI-Dry-Run fuer Style-Checks.
|
||||
3. Aufraeumen grosser Style-Diff-Wellen.
|
||||
|
||||
## Verbindliche Regeln
|
||||
|
||||
1. MUST `composer cs:check` fuer nicht-mutierende Pruefung nutzen.
|
||||
2. MUST `composer cs:fix` nur bewusst und mit Diff-Kontrolle ausfuehren.
|
||||
3. MUST Style-Check vor Merge gruen halten (lokal und optional CI).
|
||||
4. MUST nach groesseren Fixes mindestens `phpunit` und `phpstan` laufen lassen.
|
||||
5. MUST NOT manuell Einzelstellen formatieren, wenn der Fixer sie zentral loesen kann.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Baseline erfassen: `composer cs:check`.
|
||||
2. Falls noetig fixen: `composer cs:fix`.
|
||||
3. Diff fokussiert pruefen (Imports, Braces, Nebenwirkungen).
|
||||
4. Qualitaetsgates laufen lassen.
|
||||
5. CI-Dry-Run konfigurieren oder validieren.
|
||||
|
||||
## Referenzen
|
||||
|
||||
- Lokaler Workflow: `references/style-workflow.md`
|
||||
- CI Dry Run: `references/ci-dry-run.md`
|
||||
@@ -0,0 +1,4 @@
|
||||
interface:
|
||||
display_name: "Starterkit PHP Style CI"
|
||||
short_description: "Enforce PHP coding style with safe local and CI checks"
|
||||
default_prompt: "Use $starterkit-php-style-ci to set up and run php-cs-fixer check/fix workflow with CI dry-run and guardrails."
|
||||
@@ -0,0 +1,21 @@
|
||||
# CI Dry Run
|
||||
|
||||
## Ziel
|
||||
|
||||
CI soll nur pruefen, nicht formatieren.
|
||||
|
||||
## Minimaler Check
|
||||
|
||||
```bash
|
||||
composer cs:check
|
||||
```
|
||||
|
||||
## Erwartung
|
||||
|
||||
1. Exit Code 0: Style konform.
|
||||
2. Exit Code != 0: Diff ausgeben, Entwickler fuehrt lokal `composer cs:fix` aus.
|
||||
|
||||
## Hinweise
|
||||
|
||||
1. Kein Auto-Commit aus CI.
|
||||
2. Bei initialen Altlasten zuerst einmalige Bereinigung auf dediziertem Branch.
|
||||
@@ -0,0 +1,25 @@
|
||||
# Local Style Workflow
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
composer cs:check
|
||||
composer cs:fix
|
||||
```
|
||||
|
||||
## Praktikabler Ablauf
|
||||
|
||||
1. Erst `cs:check` laufen lassen.
|
||||
2. Danach `cs:fix`.
|
||||
3. Nur relevante Diffs uebernehmen, grosse Misch-Diffs vermeiden.
|
||||
4. Anschliessend:
|
||||
|
||||
```bash
|
||||
docker compose exec php vendor/bin/phpunit
|
||||
docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progress
|
||||
```
|
||||
|
||||
## Review-Fokus
|
||||
|
||||
1. `ordered_imports`, `braces_position`, `statement_indentation`.
|
||||
2. Kein semantischer Drift bei anon classes, arrow functions, array maps.
|
||||
Reference in New Issue
Block a user