Skip to content

rylanzhou/frontend-mentor-interactive-comments-section

Repository files navigation

Frontend Mentor - Interactive comments section solution

This is a solution to the Interactive comments section challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.

Table of contents

Overview

The challenge

Users should be able to:

  • View the optimal layout for the app depending on their device's screen size
  • See hover states for all interactive elements on the page
  • Create, Read, Update, and Delete comments and replies
  • Upvote and downvote comments
  • Bonus: If you're building a purely front-end project, use localStorage to save the current state in the browser that persists when the browser is refreshed.
  • Bonus: Instead of using the createdAt strings from the data.json file, try using timestamps and dynamically track the time since the comment or reply was posted.

Screenshot

Desktop
Mobile
mobile

Links

My process

Built with

  • Scss
  • Flexbox
  • Mobile-first workflow
  • React - JS library
  • timeago.js - JS Library
  • React Context Hook
  • TypeScript

What I implemented

  1. Use the recently released css unit dvw and dvh to set the width and height to automatically make the element fit in any viewport size.

  2. Use createContext and useContext() hook to store and access state in different forms and to control current step and sync with localStorage.

  3. Call DeleteModal.confirm() to bring up the Delete Modal instead of directly controlling the visibility from parent elements.

  4. Use setInterval to render createdAt every second on the page with timeago.js.