Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue # 56. Designing responsive list component for the list page #67

Merged
merged 28 commits into from
Oct 19, 2024

Conversation

eternalmaha
Copy link
Collaborator

@eternalmaha eternalmaha commented Oct 10, 2024

Description

Using a combination of React bootstrap, classic Bootstrap, and custom CSS styling to create a responsive layout & design for our lists view page. This PR highlights a history of developers seeking technical decisions that balance requirements, novelty, complexity, and time constraints. The initial decision was to use React Bootstrap's Container, Rol, and Col components to create a responsive layout. The layout was responsive up until small screen sizes, which debugging revealed to be discrepancies between the column's width and contents. The bug caused the columns to collapse. The responsiveness issues were solved using flexbox in 30 minutes. Flexbox avoided unnecessary complexity tfor the purposes of this issue.

Our team also agreed that including the add item form and share list form into our list page view improved our user experience so to reduce the necessary number of user clicks to access those features.

Figma design
https://www.figma.com/design/v0vHRdn5Gq8kNJSepE5xM8/TCL--GrocerEase?node-id=0-1&node-type=canvas&t=Xf7D0PzYQFTNu6Ga-0

Related Issue

closes #56

Acceptance Criteria

  • Using the teams' figma design, work closely to align the design styles
  • Embed the add item and share list forms inside the list page view
  • The list page is responsive across all screen sizes, especially mobile devices.

Type of Changes

enhancement

Updates

Before

before design beforeurgencystatus
listitem.container.1.mov

After

responsivelistpage.mov
Screen.Recording.2024-10-18.at.10.40.45.AM.mov

Testing Steps / QA Criteria

  1. Make sure you are signed into the application
  2. Navigate to a list from the home view page
  3. Compare and contrast the design with figma design
  4. Adjust the viewport width of the webpage to test the responsiveness (Google Chrome's responsiveness, etc)

Copy link

github-actions bot commented Oct 10, 2024

Visit the preview URL for this PR (updated for commit e56ab5c):

https://tcl-77-smart-shopping-list--pr67-ma-designing-respons-m0j3x2rv.web.app

(expires Sat, 26 Oct 2024 00:42:42 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: b77df24030dca7d8b6561cb24957d2273c5e9d72

@eternalmaha eternalmaha marked this pull request as ready for review October 14, 2024 15:21
@eternalmaha eternalmaha assigned jmahamed and eternalmaha and unassigned jmahamed Oct 14, 2024
@@ -16,6 +16,7 @@
"react-bootstrap": "^2.10.5",
"react-dom": "^18.3.1",
"react-hot-toast": "^2.4.1",
"react-icons": "^5.3.0",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

YASSSSS! I love the use of icons while keeping the button colors the same for smaller screen sizes!

) : (
<Button onClick={toggleEdit}>
<span className="d-none d-md-inline">Edit</span>
<FaEdit className="d-block d-md-none" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice use of span elements to keep everything clean!

<p>
Hello from the <code>/list</code> page!
<p className="Header">
For your ease, items are sorted by next purchase date. View and edit
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice removal of that p element letting us know what page it is! Great use of "Header" class name here, rather than get caught up in elements!

Copy link
Collaborator

@RossaMania RossaMania left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great! I love the responsiveness and the use of spans and icons! This looks so clean!

@@ -3,6 +3,9 @@ import { ListItem } from "../../api";
import { toast } from "react-hot-toast";
import Button from "react-bootstrap/Button";
import Form from "react-bootstrap/Form";
import { FaEdit } from "react-icons/fa";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome use of these icons! These are the icons i was thinking when using the about page with this meger will have to update! Thanks for the reminder!

<>
<Button onClick={updateItemQuantity}>
<span className="d-none d-md-inline"> Save </span>
<IoMdCheckmark className="d-block d-md-none" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love how you handled the switch between icons and words!

@@ -36,7 +39,7 @@ export function FilterListInput({
aria-label="Filter items in the list"
placeholder="Search items..."
/>
<Button onClick={handleClear}>x</Button>
<Button onClick={handleClear}>Clear</Button>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the change to clear, with bootstrap the x that was in the input didn't show any more and the button to clear was the best workaround but the x was awkard so it is much clearer (lol) with clear.

@eternalmaha eternalmaha merged commit b0b85b3 into main Oct 19, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Design a responsive List component for the ListPage
4 participants