Onboarding projektu
View on GitHubDodaj krok wycieczki
Przećwiczony przykład: dodanie kroku o przycisku "Refresh" do interaktywnej wycieczki po produkcie, którą każde nowe konto widzi raz.
Wycieczka to podświetlenie elementu + przypięty popup (wstecz / dalej / zamknij), który sam przechodzi między stronami. Kroki to zwykłe dane w resources/js/types/Tour.ts; elementy, na które wskazują, są oznaczone atrybutem data-tour.
Krok 1 — Oznacz element
Dodaj data-tour="<id>" do elementu, który ma być podświetlony. Dla NavItem w sidebarze przekaż zamiast tego prop tourId, który renderuje ten atrybut.
Plik: resources/js/Components/Organisms/PageHeader/PageHeader.tsx
<button
onClick={handleRefresh}
title="Refresh"
data-tour="refresh"
className="..."
>
Krok 2 — Dodaj krok
Plik: resources/js/types/Tour.ts
{
id: 'refresh',
visit: '/',
target: 'refresh',
placement: 'bottom',
title: 'Always up to date',
description:
'Pull in the latest changes from your team without reloading the page.',
},
Dodaj go do TOUR_STEPS w miejscu, w którym ma się pojawić w przebiegu. Pola:
target— wartośćdata-tour. Pomiń, aby dostać wyśrodkowaną kartę (kroki powitalny / końcowy).placement— preferowana strona elementu; popup sam się odwraca i jest ograniczany do viewportu.visit— strona, na której żyje krok. String to stały URL; funkcja może odczytać DOM i zwrócić URL albonull(zobaczfirstProjectUrl). Wycieczka wywołujerouter.visit, gdy bieżąca ścieżka się różni, i pomija krok, jeśli funkcja zwrócinull.when— zwróćfalse, aby usunąć krok dla tego użytkownika (np.hasProjectsukrywa kroki strony projektu dla kont bez projektów).
Krok 3 — Poznaj zachowania awaryjne
useTourTarget szuka elementu przez 2,5 s (strony renderują się po nawigacji). Jeśli nigdy się nie pojawi albo jest ukryty lub poza ekranem (np. sidebar na mobile), krok jest pokazywany jako wyśrodkowana karta — nigdy nie blokuje wycieczki.
Krok 4 — Przetestuj
resources/js/Components/Organisms/ProductTour/ProductTour.test.tsx— pokrywa nawigację, pomijanie i wyśrodkowany fallback; dodaj przypadek, jeśli Twój krok używa nowego wzorcavisit/when.resources/js/utils/tour.test.ts— potrzebny tylko, jeśli zmieniasz logikę pozycjonowania.
