Create Map icon component + routing
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- react, typescript
Hướng nghiên cứu
Bắt đầu bằng cách xác định các điểm vào hiện có của điều hướng bên và định tuyến; issue đề xuất components/sidenav/SideNav.tsx, MapIcon.tsx, NavMenuItem.tsx và routes/EcosystemMapRoute.tsx. So sánh các trạng thái trong Figma và hành vi bố cục hiện có, sau đó xác minh rằng việc nhấp vào mục bản đồ sẽ thay đổi chế độ xem nhưng vẫn giữ điều hướng bên, các nhãn khi di chuột và các trạng thái đã chọn/chưa chọn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Issue created with ChatGPT models' help¹
Description
Create the Ecosystem Map icon component used inside the side navigation and implement its routing/interaction behavior¹. When a user clicks the map icon, the application should navigate to the full-screen ecosystem map view containing map layers, markers, and project polygons while still preserving the side navigation on the left².
This issue mainly focuses on creating the frontend component, routing interaction, and selected/unselected menu states³.
The map icon component should visually support both selected and unselected states from the Figma design¹.
Goals
- Create reusable Map icon component¹
- Implement routing to ecosystem/full map view²
- Support selected/unselected icon states³
- Show text labels beside icons on hover¹
- Preserve side nav while switching map screens²
Implementation Instructions
- Create reusable
MapIconorMapMenuItemcomponent¹ - Use React + TypeScript + Material UI²
- Clicking icon should navigate to ecosystem map page³
- Preserve side navigation on left side of layout⁴
- Text labels should appear when side nav expands²
- Contributors may use
useState,useEffect, CSS transitions, or MUI transitions⁴ - Keep implementation responsive for smaller screens¹
Expected Functionalities
Hover Interaction
- User moves cursor over side nav²
- Side nav expands horizontally³
- Text labels appear next to icons⁴
- Ecosystem Map label becomes visible¹
Click Interaction
- User clicks Ecosystem Map icon²
- App navigates to full ecosystem map page³
- Full map view renders on right side of layout⁴
- Side nav remains visible on left¹
Mouse Leave Interaction
- Cursor leaves navigation area²
- Side nav returns to original collapsed width³
- Text labels disappear⁴
Figma Layout Specs
Menu item
- State="Unselected";¹
- Show Label=false;²
- width: 32;³
- height: 32;⁴
- gap: 12px;¹
- angle: 0 deg;²
- opacity: 1;³
👉 On click:
- Navigate to: "Projects";⁴
- Animate: Instant;¹
- animation-duration: 0ms;²
Vertical spacer between menu items
- Size="24px";³
- Show=false;⁴
- width: 360;¹
- height: 24;²
- angle: 0 deg;³
- opacity: 1;⁴
Map menu item
- State="Selected";¹
- Show Label=false;²
- width: 32;³
- height: 32;⁴
- gap: 12px;¹
- angle: 0 deg;²
- opacity: 1;³
Suggested Technical Structure (Optional)
Possible component structure:¹
components/sidenav/
├── SideNav.tsx
├── MapIcon.tsx
├── NavMenuItem.tsx
└── HoverLabel.tsx
Possible routing structure:²
routes/
├── EcosystemMapRoute.tsx
├── ProjectRoute.tsx
└── AccountRoute.tsx
Notes
- Hover label rendering may use
useState,useEffect, CSS transitions, or Material UI transitions³ - Keep component structure reusable for future navigation icons¹
- Avoid tightly coupling routing logic directly into UI rendering where possible²
Acceptance Criteria
- Map icon component renders correctly¹
- Clicking icon navigates to ecosystem map page²
- Text labels appear during hover-expanded state⁴
- Side nav collapses correctly on mouse leave¹
- Selected/unselected states visually work²
- Ecosystem map renders with side nav preserved³
- Component uses React + TypeScript + MUI⁴
- Code structure supports future navigation scalability¹
Resources
¹ https://mui.com/material-ui/react-list/
² https://reactrouter.com/en/main/start/tutorial
³ https://react.dev/reference/react/useEffect
⁴ https://mui.com/material-ui/transitions/
- Ngôn ngữ chính
- HTML
- Star
- 2
- Fork
- 11
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenSourceFellows/map_dashboard_hackathon
-
California Tribal GIS Hackathon Intermediate
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
-
California Tribal GIS Hackathon Intermediate
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Endpoint to Fetch UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
-
Endpoint to update UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
-
Endpoint to create UsersĐang mởAdvanced California Tribal GIS Hackathon
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
Tất cả issue của OpenSourceFellows/map_dashboard_hackathon
Issue tương tự
-
Manager flashes an empty "errorOccurred" dialog while redirecting a logged-out user to loginĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
openremote/openremote#3487 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
coollabsio/jean#867 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
affected/v17 area/frontend type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
umbraco/Umbraco-CMS#24323 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Improve Footer Layout and Responsiveness on MobileCó thể đã có người làm @Alisonpinto đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
kubuntu-team/kubuntu.org#123 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 2 ngày