feat(24-shipment-presets-ui): kolorowe przyciski presetów, popup tworzenia, autofill formularza
Phase 24 complete: - SCSS moduł _shipment-presets.scss (przyciski, popup, color picker) - Sekcja presetów nad formularzem przesyłki z przyciskiem "Dodaj" - Popup tworzenia presetu z nazwą i wyborem koloru (8 opcji) - JS autofill: carrier, usługa dostawy, wymiary, waga, label format - Obsługa 3 paneli: Allegro searchable, InPost select, Apaczka select Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
123
.paul/phases/24-shipment-presets-ui/24-01-SUMMARY.md
Normal file
123
.paul/phases/24-shipment-presets-ui/24-01-SUMMARY.md
Normal file
@@ -0,0 +1,123 @@
|
||||
---
|
||||
phase: 24-shipment-presets-ui
|
||||
plan: 01
|
||||
subsystem: shipments
|
||||
tags: [shipment-presets, ui, autofill, javascript]
|
||||
|
||||
requires:
|
||||
- phase: 23-shipment-presets-backend
|
||||
provides: JSON API endpoints for presets CRUD
|
||||
provides:
|
||||
- Kolorowe przyciski presetów nad formularzem przesyłki
|
||||
- Popup tworzenia presetu (nazwa + kolor)
|
||||
- JS autofill formularza po kliknięciu presetu
|
||||
affects: [25-shipment-presets-management]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns:
|
||||
- URLSearchParams dla fetch POST (Request::input() nie parsuje JSON)
|
||||
- _syncTrigger() na enhanced selectach po programowym ustawieniu value
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- resources/scss/modules/_shipment-presets.scss
|
||||
modified:
|
||||
- resources/scss/app.scss
|
||||
- public/assets/css/app.css
|
||||
- resources/views/shipments/prepare.php
|
||||
|
||||
key-decisions:
|
||||
- "URLSearchParams zamiast JSON.stringify — Request::input() czyta z $_POST"
|
||||
- "Autofill: _syncTrigger() + bezpośrednie ustawianie hidden fields i search input"
|
||||
|
||||
patterns-established:
|
||||
- "Preset autofill musi wywoływać _syncTrigger() na enhanced selectach"
|
||||
- "Allegro searchable dropdown: ustawić is-selected + searchInput.value + hidden fields z data-attributes"
|
||||
|
||||
duration: 15min
|
||||
started: 2026-03-22T00:00:00Z
|
||||
completed: 2026-03-22T00:15:00Z
|
||||
---
|
||||
|
||||
# Phase 24 Plan 01: Shipment Presets UI Summary
|
||||
|
||||
**Kolorowe przyciski presetów nad formularzem przesyłki z popup tworzenia i JS autofill — użytkownik jednym kliknięciem wypełnia formularz zapisanymi parametrami.**
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Duration | ~15 min |
|
||||
| Tasks | 3 completed (2 auto + 1 checkpoint) |
|
||||
| Files created | 1 |
|
||||
| Files modified | 3 |
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| AC-1: Przyciski widoczne nad formularzem | Pass | Sekcja z kolorowymi przyciskami + "Dodaj przycisk dostawy" |
|
||||
| AC-2: Kliknięcie presetu wypełnia formularz | Pass | Carrier, usługa, wymiary, waga, label format — potwierdzone przez użytkownika |
|
||||
| AC-3: Popup tworzy preset z bieżących wartości | Pass | Nazwa + kolor, zapis przez API, przycisk pojawia się natychmiast |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- SCSS moduł `_shipment-presets.scss` z stylami przycisków, popupu i color picker
|
||||
- Sekcja presetów wstawiona nad `<form>` w prepare.php
|
||||
- Popup z nazwą i 8 kolorami do wyboru
|
||||
- JS: fetch presetów z API, renderowanie przycisków, autofill 3 typów paneli (Allegro searchable, InPost select, Apaczka select)
|
||||
- SonarQube: 0 nowych issues
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
| File | Change | Purpose |
|
||||
|------|--------|---------|
|
||||
| `resources/scss/modules/_shipment-presets.scss` | Created | Style przycisków, popupu, color picker |
|
||||
| `resources/scss/app.scss` | Modified | Dodany @use shipment-presets |
|
||||
| `public/assets/css/app.css` | Modified | Przebudowany CSS |
|
||||
| `resources/views/shipments/prepare.php` | Modified | Sekcja presetów, popup, ~180 linii JS |
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Rationale | Impact |
|
||||
|----------|-----------|--------|
|
||||
| URLSearchParams zamiast JSON | Request::input() czyta z $_POST, nie parsuje JSON body | Spójne z resztą projektu |
|
||||
| _syncTrigger() po value change | enhanceSelect() ukrywa natywny select — trzeba sync custom UI | Wzorzec do reuse w fazie 25 |
|
||||
| Bezpośrednie ustawianie hidden fields dla Allegro | opt.click() nie działał niezawodnie w searchable dropdown | Bardziej deterministyczne |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Summary
|
||||
|
||||
| Type | Count | Impact |
|
||||
|------|-------|--------|
|
||||
| Auto-fixed | 2 | Zmiana content-type + autofill fix |
|
||||
|
||||
**1. JSON → URLSearchParams**
|
||||
- Found during: Task 2 (checkpoint testing — 422 error)
|
||||
- Fix: Zmieniono Content-Type na form-urlencoded, użyto URLSearchParams
|
||||
|
||||
**2. Autofill nie zmieniał carrier/usługi**
|
||||
- Found during: Checkpoint (user report)
|
||||
- Fix: Dodano _syncTrigger() na carrier select, bezpośrednie ustawianie hidden fields i search input text dla Allegro, _syncTrigger() dla InPost/Apaczka
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
None remaining — oba issues naprawione podczas checkpointu.
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
**Ready:**
|
||||
- Presety tworzą się i wypełniają formularz
|
||||
- Faza 25 może dodać edycję/usuwanie/sortowanie
|
||||
|
||||
**Concerns:**
|
||||
- Brak
|
||||
|
||||
**Blockers:**
|
||||
- None
|
||||
|
||||
---
|
||||
*Phase: 24-shipment-presets-ui, Plan: 01*
|
||||
*Completed: 2026-03-22*
|
||||
Reference in New Issue
Block a user