From 2ab6093bd8dbe20e672f4a52b8e19fd61b182d14 Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 13 Aug 2025 17:31:33 -0400 Subject: [PATCH] feature/IO-3255-simplified-parts-management - Add Dark mode --- .../simplified-parts-jobs-list.component.jsx | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/client/src/components/simplified-parts-jobs-list/simplified-parts-jobs-list.component.jsx b/client/src/components/simplified-parts-jobs-list/simplified-parts-jobs-list.component.jsx index b4ef383e5..9db494f92 100644 --- a/client/src/components/simplified-parts-jobs-list/simplified-parts-jobs-list.component.jsx +++ b/client/src/components/simplified-parts-jobs-list/simplified-parts-jobs-list.component.jsx @@ -3,7 +3,7 @@ import { Button, Card, Input, Space, Table, Typography } from "antd"; import axios from "axios"; import _ from "lodash"; import queryString from "query-string"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { Link, useLocation, useNavigate } from "react-router-dom"; @@ -16,16 +16,32 @@ import useLocalStorage from "../../utils/useLocalStorage"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component"; import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component"; -import { selectIsPartsEntry } from "../../redux/application/application.selectors"; +import { selectDarkMode, selectIsPartsEntry } from "../../redux/application/application.selectors"; import * as Sentry from "@sentry/react"; import getPartsBasePath from "../../utils/getPartsBasePath.js"; +import { toggleDarkMode } from "../../redux/application/application.actions.js"; +import { FaMoon, FaSun } from "react-icons/fa"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, - isPartsEntry: selectIsPartsEntry + isPartsEntry: selectIsPartsEntry, + darkMode: selectDarkMode }); -export function SimplifiedPartsJobsListComponent({ bodyshop, refetch, loading, jobs, total, isPartsEntry }) { +const mapDispatchToProps = (dispatch) => ({ + toggleDarkMode: () => dispatch(toggleDarkMode()) +}); + +export function SimplifiedPartsJobsListComponent({ + bodyshop, + refetch, + loading, + jobs, + total, + isPartsEntry, + darkMode, + toggleDarkMode +}) { const search = queryString.parse(useLocation().search); const [openSearchResults, setOpenSearchResults] = useState([]); const [searchLoading, setSearchLoading] = useState(false); @@ -36,6 +52,10 @@ export function SimplifiedPartsJobsListComponent({ bodyshop, refetch, loading, j const { t } = useTranslation(); + const handleDarkModeToggle = useCallback(() => { + toggleDarkMode(); + }, [toggleDarkMode]); + const columns = [ { title: t("jobs.fields.ro_number"), @@ -206,6 +226,11 @@ export function SimplifiedPartsJobsListComponent({ bodyshop, refetch, loading, j {t("general.labels.settings")} +