Implement map click interaction + layout state
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- react, typescript
Direzione di ricerca
Inizia dal contenitore della mappa o dal componente della pagina e traccia il modo in cui attualmente vengono gestiti i clic sui marker dei progetti fondiari. Leggi ProjectTitle e ProjectInfo, quindi esamina l’approccio esistente di Material UI al layout responsive. Il lavoro è completato quando la selezione di un marker mostra entrambi i componenti di dettaglio con i dati selezionati e l’azione di chiusura ripristina la visualizzazione della mappa completa sugli schermi più piccoli.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue created with ChatGPT models' help¹
Dependency
- #4
- #15
- Once above issues are done, please move this issue to ready column/status
Description
Implement the interaction flow where clicking a land project marker on the map changes the application layout state and reveals the lower project detail panels¹. When the map is in full-screen/default state and a user clicks a project marker, the map should shrink responsively and display both the ProjectTitle and ProjectInfo components beneath the map².
The interaction should also support resetting back to the original full-map layout when the user clicks the close button from the ProjectTitle component³. This issue is mainly focused on layout state management, interaction flow, responsive resizing behavior, and component visibility handling⁴.
React state management can initially use useState, context, or another lightweight approach depending on contributor preference¹.
Goals
- Implement project marker click interaction¹
- Shrink map layout after marker selection²
- Render
ProjectTitleandProjectInfocomponents dynamically³ - Restore full map layout on close action⁴
- Support responsive layout behavior for smaller screens¹
- Prepare interaction flow for future routing/service integration²
Implementation Instructions
-
Add layout interaction logic to map container/page component¹
-
Use React state (
useStateor equivalent) to track selected project² -
Create layout states such as:
- default/full map view³
- project selected/detail layout⁴
-
On marker click:
- store selected project data¹
- shrink map container height/layout²
- render
ProjectTitlecomponent³ - render
ProjectInfocomponent⁴
-
On close button click from
ProjectTitle:- clear selected project state¹
- restore original map layout²
- hide detail panels³
-
Ensure layout resizing works on smaller screens/mobile widths⁴
-
Use responsive breakpoints using Material UI¹
-
Avoid hardcoding viewport assumptions where possible²
Expected Interaction Flow
Default State
- Map occupies primary/full content layout¹
- Project detail panels are hidden²
Marker Click State
- User clicks land project marker³
- Map shrinks vertically according to detail layout⁴
ProjectTitleappears below map¹ProjectInfoappears below title²- Selected project data populates components dynamically³
Close Interaction
- User clicks close button from
ProjectTitle⁴ - Detail panels disappear¹
- Map returns to original full-size state²
Responsive Layout Considerations
- Shrinking behavior must account for smaller screen sizes¹
- Layout should remain usable on tablets/laptops²
- Avoid fixed pixel-only assumptions for height calculations³
- Contributors may use flex/grid/MUI responsive containers⁴
- Mobile interaction behavior can evolve later if needed¹
Suggested Technical Structure
Possible state example (not required):²
const [selectedProject, setSelectedProject] = useState(null);
Possible derived layout states:³
const isProjectOpen = Boolean(selectedProject);
This is only a suggestion and contributors may structure state differently⁴.
Acceptance Criteria
- Clicking a map marker updates layout state¹
- Map shrinks when project is selected²
-
ProjectTitlecomponent renders correctly³ -
ProjectInfocomponent renders correctly⁴ - Close button restores original map layout¹
- Layout remains usable on smaller screens²
- Selected project data flows into detail components³
- Code structure supports future expansion/refactoring⁴
Resources
¹ https://react.dev/reference/react/useState
² https://react.dev/learn/sharing-state-between-components
³ https://mui.com/material-ui/react-box/
⁴ https://mui.com/material-ui/guides/responsive-ui/
- Lingua principale
- HTML
- Stelle
- 2
- Fork
- 11
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OpenSourceFellows/map_dashboard_hackathon
-
California Tribal GIS Hackathon Intermediate
Difficoltà 2/5 Mezza giornata Idoneità per principianti 68/100
-
California Tribal GIS Hackathon Intermediate
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Endpoint to Fetch UsersApertaAdvanced California Tribal GIS Hackathon
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Endpoint to update UsersApertaAdvanced California Tribal GIS Hackathon
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
Endpoint to create UsersApertaAdvanced California Tribal GIS Hackathon
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Tutte le issue di OpenSourceFellows/map_dashboard_hackathon
Issue simili
-
bug DUP Reservations
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
bcgov/reserve-rec-public#952 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
daufderheide/racecoordinator_ai#948 ·
I maintainer di solito rispondono entro 1 giorno
-
chore good first issue low small Tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
bug documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
MetricsHub/winrm-java#202 ·
I maintainer di solito rispondono entro 1 giorno