From e3795575330b16a20a5fce52eeeed80c8baf435b Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sun, 22 Mar 2026 23:42:56 +0100 Subject: [PATCH] =?UTF-8?q?feat(24-shipment-presets-ui):=20kolorowe=20przy?= =?UTF-8?q?ciski=20preset=C3=B3w,=20popup=20tworzenia,=20autofill=20formul?= =?UTF-8?q?arza?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .paul/ROADMAP.md | 2 +- .paul/STATE.md | 19 +- .../24-shipment-presets-ui/24-01-PLAN.md | 254 ++ .../24-shipment-presets-ui/24-01-SUMMARY.md | 123 + public/assets/css/app.css | 2867 +---------------- resources/scss/app.scss | 1 + resources/scss/modules/_shipment-presets.scss | 94 + resources/views/shipments/prepare.php | 254 ++ 8 files changed, 740 insertions(+), 2874 deletions(-) create mode 100644 .paul/phases/24-shipment-presets-ui/24-01-PLAN.md create mode 100644 .paul/phases/24-shipment-presets-ui/24-01-SUMMARY.md create mode 100644 resources/scss/modules/_shipment-presets.scss diff --git a/.paul/ROADMAP.md b/.paul/ROADMAP.md index ce1e76d..efece9b 100644 --- a/.paul/ROADMAP.md +++ b/.paul/ROADMAP.md @@ -13,7 +13,7 @@ Customowe przyciski szybkiego wypełniania formularza przygotowania przesyłki. | Phase | Name | Plans | Status | |-------|------|-------|--------| | 23 | Shipment Presets Backend | 1/1 | Complete ✓ | -| 24 | Shipment Presets UI | TBD | Not started | +| 24 | Shipment Presets UI | 1/1 | Complete ✓ | | 25 | Shipment Presets Management | TBD | Not started | ### Phase 23: Shipment Presets Backend diff --git a/.paul/STATE.md b/.paul/STATE.md index 1da90d6..39ffc97 100644 --- a/.paul/STATE.md +++ b/.paul/STATE.md @@ -10,10 +10,10 @@ See: .paul/PROJECT.md (updated 2026-03-12) ## Current Position Milestone: v1.0 Presety przesyłek -Phase: [2] of [3] (Shipment Presets UI) +Phase: [3] of [3] (Shipment Presets Management) Plan: Not started -Status: Phase 23 complete, ready to plan Phase 24 -Last activity: 2026-03-22 — Phase 23 complete, transitioned to Phase 24 +Status: Phase 24 complete, ready to plan Phase 25 +Last activity: 2026-03-22 — Phase 24 complete, transitioned to Phase 25 Progress: - v0.1 Initial Release: [██████████] 100% ✓ @@ -67,6 +67,11 @@ PLAN ──▶ APPLY ──▶ UNIFY | 2026-03-17 | Email history jako wpisy w order_activity_log (nie osobna sekcja) | Faza 15 | Spójność z istniejącym UX — jeden timeline zamiast fragmentacji | | 2026-03-17 | VariableResolver wydzielony z EmailTemplateController | Faza 15 | Reuse logiki zmiennych; resolwer niezależny od kontrolera szablonów | +### Skill Audit (Faza 24, Plan 01) +| Oczekiwany | Wywołany | Uwagi | +|------------|---------|-------| +| sonar-scanner | ✓ | 0 nowych issues na zmienionych plikach | + ### Skill Audit (Faza 23, Plan 01) | Oczekiwany | Wywołany | Uwagi | |------------|---------|-------| @@ -201,7 +206,7 @@ PLAN ──▶ APPLY ──▶ UNIFY - **Delivery mapping "Szukaj..." layout** — JS `attachSelectFilter()` w allegro.php tworzy input search dla InPost/Apaczka selectów, wizualnie wygląda jakby należał do wiersza powyżej. Pre-existing bug, do naprawy osobno. ### Git State -Last commit: d6375cc — fix(22-regon-save-fix): naprawa zapisu REGON, BDO, KRS i logo +Last commit: 03a237e — feat(23-shipment-presets-backend): tabela DB, repository CRUD i JSON API Branch: main Feature branches merged: none @@ -211,9 +216,9 @@ Brak. ## Session Continuity Last session: 2026-03-22 -Stopped at: Phase 23 complete, ready to plan Phase 24 -Next action: /paul:plan for Phase 24 (Shipment Presets UI) -Resume file: .paul/phases/23-shipment-presets-backend/23-01-SUMMARY.md +Stopped at: Phase 24 complete, ready to plan Phase 25 +Next action: /paul:plan for Phase 25 (Shipment Presets Management) +Resume file: .paul/phases/24-shipment-presets-ui/24-01-SUMMARY.md Resume context: - v0.1: COMPLETE ✓ (6 phases, 15 plans) - v0.2: COMPLETE ✓ (1 phase, 5 plans) diff --git a/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md b/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md new file mode 100644 index 0000000..b0ac396 --- /dev/null +++ b/.paul/phases/24-shipment-presets-ui/24-01-PLAN.md @@ -0,0 +1,254 @@ +--- +phase: 24-shipment-presets-ui +plan: 01 +type: execute +wave: 1 +depends_on: ["23-01"] +files_modified: + - resources/views/shipments/prepare.php + - resources/scss/modules/_shipment-presets.scss + - resources/scss/main.scss +autonomous: false +--- + + +## Goal +Dodać sekcję presetów przesyłek nad formularzem przygotowania przesyłki: kolorowe przyciski, popup tworzenia presetu (nazwa + kolor), JS autofill formularza po kliknięciu. + +## Purpose +Użytkownik chce jednym kliknięciem wypełnić formularz przesyłki zapisanymi parametrami — bez ręcznego wybierania przewoźnika, usługi, wymiarów za każdym razem. + +## Output +- Sekcja presetów z kolorowymi przyciskami nad formularzem +- Popup do tworzenia presetu (nazwa + kolor) z bieżących wartości formularza +- JS: autofill formularza po kliknięciu przycisku presetu +- SCSS style dla presetów + + + +## Project Context +@.paul/PROJECT.md +@.paul/ROADMAP.md +@.paul/STATE.md + +## Prior Work +@.paul/phases/23-shipment-presets-backend/23-01-SUMMARY.md + +## Source Files +@resources/views/shipments/prepare.php +@src/Modules/Shipments/ShipmentPresetController.php +@routes/web.php + + + +No specialized flows required for this plan (sonar-scanner required post-APPLY). + + + + +## AC-1: Przyciski presetów widoczne nad formularzem +```gherkin +Given użytkownik otwiera stronę przygotowania przesyłki +When w bazie istnieją presety +Then nad formularzem wyświetlają się kolorowe przyciski z nazwami presetów +And wyświetla się przycisk "Dodaj przycisk dostawy" +``` + +## AC-2: Kliknięcie presetu wypełnia formularz +```gherkin +Given preset ma zapisane: carrier=inpost, package_type=PACKAGE, weight=2kg, wymiary 30x25x10 +When użytkownik klika przycisk tego presetu +Then formularz automatycznie wypełnia się tymi wartościami +And odpowiedni panel przewoźnika staje się widoczny +And usługa dostawy zostaje wybrana +``` + +## AC-3: Przycisk "Dodaj przycisk dostawy" tworzy preset z bieżących wartości +```gherkin +Given użytkownik wypełnił formularz (wybrał przewoźnika, usługę, wymiary itp.) +When klika "Dodaj przycisk dostawy" +Then pojawia się popup z polem nazwy i wyborem koloru +When wpisuje nazwę i klika Zapisz +Then preset zostaje zapisany przez API i przycisk pojawia się w sekcji +``` + + + + + + + Task 1: SCSS style dla presetów + resources/scss/modules/_shipment-presets.scss, resources/scss/main.scss + + 1. Utworzyć `resources/scss/modules/_shipment-presets.scss`: + - `.shipment-presets` — kontener sekcji (flex, wrap, gap: 8px, margin-bottom: 16px) + - `.shipment-presets__btn` — przycisk presetu: + - Inline-flex, border-radius: 6px, padding: 6px 14px + - Biały tekst, tło z custom property `--preset-color` + - Hover: opacity 0.85, cursor pointer + - Font-size: 13px, font-weight: 500 + - `.shipment-presets__add` — przycisk dodawania: + - Border: 1px dashed #ccc, background transparent + - Color: #666, hover: border-color #999 + - `.preset-modal` — overlay popup: + - Position fixed, inset 0, background rgba(0,0,0,0.4), z-index 1000 + - Display flex, align-items center, justify-content center + - `.preset-modal__content` — zawartość popup: + - Background white, border-radius 8px, padding 24px, min-width 360px, max-width 420px + - `.preset-modal__colors` — grid kolorów: + - Display flex, gap 8px, flex-wrap wrap + - `.preset-modal__color-swatch` — próbka koloru: + - Width 28px, height 28px, border-radius 50%, cursor pointer + - Border: 2px solid transparent + - `&.is-selected` — border-color: #333 + + 2. Dodać `@import 'modules/shipment-presets';` w `resources/scss/main.scss` + + Sprawdzić że plik SCSS istnieje i import dodany do main.scss + AC-1 partially: style gotowe + + + + Task 2: HTML sekcja presetów + popup + JavaScript + resources/views/shipments/prepare.php + + 1. **Sekcja presetów** — wstawić PRZED `
` (po zamknięciu sekcji flash messages, linia ~63): + + ```html +
+ + +
+ ``` + + 2. **Popup modal** — wstawić na końcu pliku (przed zamykającym `` lub po ostatnim ``): + + ```html + + ``` + + 3. **JavaScript** — dodać w istniejącym bloku ` +