diff --git a/src/components/BMDashboard/Equipment/DailyActivityLog/EDailyActivityLog.jsx b/src/components/BMDashboard/Equipment/DailyActivityLog/EDailyActivityLog.jsx index e4700b4b04..ee275a00ee 100644 --- a/src/components/BMDashboard/Equipment/DailyActivityLog/EDailyActivityLog.jsx +++ b/src/components/BMDashboard/Equipment/DailyActivityLog/EDailyActivityLog.jsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from 'react'; import { connect, useDispatch, useSelector } from 'react-redux'; -import { Button, ButtonGroup, Table } from 'reactstrap'; +import { Button, Table, UncontrolledTooltip } from 'reactstrap'; import Select from 'react-select'; import { fetchBMProjects } from '~/actions/bmdashboard/projectActions'; @@ -11,6 +11,8 @@ import { import { getHeaderData } from '~/actions/authActions'; import { getUserProfile } from '~/actions/userProfile'; +import styles from './EDailyActivityLog.module.css'; + const TODAY = new Date().toISOString().split('T')[0]; const buildToolNumbers = (name = 'EQ', qty = 0) => { @@ -54,34 +56,93 @@ const buildRows = list => }; }); +const getSelectStyles = (darkMode, isTableSelect = false) => ({ + container: base => ({ + ...base, + width: isTableSelect ? 300 : '100%', + minWidth: isTableSelect ? 300 : 'auto', + maxWidth: isTableSelect ? 300 : 'none', + }), + control: base => ({ + ...base, + + backgroundColor: darkMode ? '#2a3f5f' : '#fff', + borderColor: darkMode ? '#3a506b' : '#ced4da', + color: darkMode ? '#e0e0e0' : '#000', + }), + singleValue: base => ({ + ...base, + color: darkMode ? '#e0e0e0' : '#000', + }), + input: base => ({ + ...base, + color: darkMode ? '#e0e0e0' : '#000', + }), + menu: base => ({ + ...base, + backgroundColor: darkMode ? '#2a3f5f' : '#fff', + zIndex: 9999, + }), + option: (base, state) => ({ + ...base, + + backgroundColor: state.isFocused + ? darkMode + ? '#3a506b' + : '#e9ecef' + : darkMode + ? '#2a3f5f' + : '#fff', + color: darkMode ? '#e0e0e0' : '#000', + cursor: 'pointer', + }), + placeholder: base => ({ + ...base, + color: darkMode ? '#e0e0e0' : '#6c757d', + opacity: 0.7, + }), + multiValue: base => ({ + ...base, + backgroundColor: darkMode ? '#3a506b' : '#e9ecef', + }), + multiValueLabel: base => ({ + ...base, + color: darkMode ? '#e0e0e0' : '#000', + }), + multiValueRemove: base => ({ + ...base, + color: darkMode ? '#e0e0e0' : '#000', + ':hover': { + backgroundColor: 'red', + color: 'white', + }, + }), +}); + function EDailyActivityLog(props) { const dispatch = useDispatch(); - /* redux slices */ const bmProjects = useSelector(s => s.bmProjects || []); const equipments = useSelector(s => s.bmEquipments?.equipmentslist || []); const darkMode = useSelector(state => state.theme.darkMode); const { user } = props.auth; - /* local state */ const [selectedProject, setSelectedProject] = useState(null); const [date, setDate] = useState(TODAY); - const [logType, setLogType] = useState('check-in'); // 'check-in' | 'check-out' + const [logType, setLogType] = useState('check-in'); const [rows, setRows] = useState([]); useEffect(() => { dispatch(fetchBMProjects()); }, [dispatch]); - /* fetch equipments whenever project changes */ useEffect(() => { if (selectedProject?.value) { dispatch(fetchAllEquipments(selectedProject.value)); } }, [selectedProject, dispatch]); - /* build rows whenever equipments slice updates */ const derived = useMemo(() => buildRows(equipments), [equipments]); useEffect(() => setRows(derived), [derived]); @@ -137,16 +198,16 @@ function EDailyActivityLog(props) { dispatch(updateMultipleEquipmentLogs(selectedProject.value, payload)); }; + const projectSelectStyles = getSelectStyles(darkMode, false); + const tableSelectStyles = getSelectStyles(darkMode, true); + return ( -
+
-

Daily Equipment Log

+

Daily Equipment Log

- {/* header */} -
+ {/* Header Row */} +