Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Implement map click interaction + layout state

未关闭
#16 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
冷清
技术栈
react, typescript
领域
frontend, web-dev

调研方向

从地图容器或页面组件开始,跟踪当前土地项目标记如何处理点击操作。阅读 ProjectTitle 和 ProjectInfo,然后检查现有的 Material UI 响应式布局方案。完成标准是:选择标记后显示包含所选数据的两个详情组件,并且在较小屏幕上执行关闭操作后恢复完整地图视图。

由索引模型根据 Issue 内容生成。

描述

Advanced
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¹.

Image

Goals

  • Implement project marker click interaction¹
  • Shrink map layout after marker selection²
  • Render ProjectTitle and ProjectInfo components 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 (useState or 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 ProjectTitle component³
    • render ProjectInfo component⁴
  • 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⁴
  • ProjectTitle appears below map¹
  • ProjectInfo appears 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²
  • ProjectTitle component renders correctly³
  • ProjectInfo component 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/

Reference Figma Design: https://www.figma.com/proto/e9z8edludVssFYABGEWsoI/OpenNature-Map--Hackathons-?node-id=1-1465&viewport=787%2C545%2C0.11&t=Xwc2asfn9Qksi99P-8&scaling=scale-down&content-scaling=fixed&starting-point-node-id=1%3A896&page-id=0%3A1&hide-ui=1

主要语言
HTML
星标
2
派生
11
PR 合并指标
30 天内没有已合并 PR

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

OpenSourceFellows/map_dashboard_hackathon 的其他 Issue

查看 OpenSourceFellows/map_dashboard_hackathon 的全部 Issue

相似的 Issue

更多 Web Dev Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。