- {value && (
+
+ {!adding ? (
+
+
+ ) : (
+
+ )}
+
+ {!adding && (
+
+
+
+ setSearch(e.target.value)} placeholder="Search..." className="w-full pl-8 pr-3 py-2 rounded-lg bg-gray-50 dark:bg-gray-800 border-none text-sm text-gray-900 dark:text-white placeholder-gray-400 focus:outline-none" />
+
+
+ )}
+
+
+ {value && !adding && (
+
)}
- {filtered.map((h) => (
-
diff --git a/frontend/src/pages/Timesheet.jsx b/frontend/src/pages/Timesheet.jsx
index b26efbd..6eb11eb 100644
--- a/frontend/src/pages/Timesheet.jsx
+++ b/frontend/src/pages/Timesheet.jsx
@@ -36,6 +36,15 @@ export default function Timesheet() {
const [selectedDate, setSelectedDate] = useState(new Date());
const [entries, setEntries] = useState({});
const [homeowners, setHomeowners] = useState([]);
+
+ // Handler when a new homeowner is added via the dropdown
+ function handleHomeownerAdded(newHomeowner) {
+ setHomeowners((prev) => {
+ if (prev.find((h) => h.id === newHomeowner.id)) return prev;
+ return [...prev, newHomeowner].sort((a, b) => a.name.localeCompare(b.name));
+ });
+ }
+
const [timesheet, setTimesheet] = useState(null);
const [saveStatus, setSaveStatus] = useState('saved');
const [loading, setLoading] = useState(true);
@@ -310,6 +319,7 @@ export default function Timesheet() {
onDeleteEntry={handleDeleteEntry}
disabled={isLocked}
defaultExpanded={date === today}
+ onHomeownerAdded={handleHomeownerAdded}
/>
))}