PyjamaHR Assignment
This document guides you through setting up and running the project.
Ensure you have the following installed:
- Node.js (LTS version recommended): https://nodejs.org/en
- npm (bundled with Node.js) or yarn: https://www.npmjs.com/, https://classic.yarnpkg.com/lang/en/docs/install/
-
Clone the repository:
git clone https://github.com/deepak14ri/PyjamaHR-Assignment.git cd PyjamaHR-Assignment -
Install dependencies:
npm install # or yarn install -
Start development server:
npm run dev # or yarn devThis initiates the Vite development server and opens your application in the default web browser.
The CreateArea component in this project offers a user interface for creating and managing notes. It includes functionalities like image uploads and background color customization.
Note Interface:
- Defines the structure of a note with properties like:
title: The note's title.content: The note's content.pinned: Boolean indicating if the note is pinned.image: URL or base64 encoded string of the image.backgroundColor: The background color of the note.
State Management:
- Utilizes
useStateto manage the component's local state:note: Object representing the current note being edited or created.isExpanded: Boolean indicating whether the note input area is expanded.isEditModalOpen: Boolean indicating whether the edit modal is open.currentNoteIndex: Index of the note currently being edited.
Redux Integration:
- Employs
useDispatchto dispatch actions to the Redux store. - Utilizes
useSelectorto select notes from the store.
Handle Change:
- Updates the note state when the title or content input fields are modified.
Handle Expanded:
- Expands the note input area upon clicking the textarea.
Submit Button:
- Manages the submission of a note:
- Dispatches an
addNoteaction to add the new note to the Redux store. - Resets the note state and collapses the input area after submission.
- Dispatches an
Handle Image Change:
- Processes the uploaded image file:
- Reads the file using a FileReader and updates the note state with the image data.
Handle Background Color Change:
- Updates the note state with the chosen background color.
Handle Edit Save:
- Saves the edited note:
- Updates the note state with the new values while preserving the pinned state.
- Dispatches an
updateNoteaction to update the note in the Redux store. - Resets the
currentNoteIndexand closes the edit modal after saving.
Form and Input Elements:
- Renders the form with input fields for title and content:
- Displays the image if it exists.
- Provides file input for image upload and color input for background color selection.
CSS Classes:
- Applies CSS classes for styling the form and input elements:
- Ensures that the image width is limited to 200px with auto height for maintaining aspect ratio.