From c0cd5664e723ca3b4ac23dc75a02afb7b8278b09 Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Sun, 29 Mar 2026 13:19:06 -0400 Subject: [PATCH] bug fixes --- frontend/src/components/SchedulePage.jsx | 14 +++-- frontend/src/components/UserManagerModal.jsx | 16 +++--- frontend/src/pages/GroupManagerPage.jsx | 16 +++--- frontend/src/pages/UserManagerPage.jsx | 54 +++++++++++--------- 4 files changed, 58 insertions(+), 42 deletions(-) diff --git a/frontend/src/components/SchedulePage.jsx b/frontend/src/components/SchedulePage.jsx index d000507..eabacc9 100644 --- a/frontend/src/components/SchedulePage.jsx +++ b/frontend/src/components/SchedulePage.jsx @@ -663,11 +663,14 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc return ( <>
-
{if(e.key==='Enter'&&e.target.tagName!=='TEXTAREA') e.preventDefault();}}> - {/* Title */} -
- setTitle(e.target.value)} autoComplete="off" autoCorrect="off" autoCapitalize="sentences" style={{fontSize:20,fontWeight:700,border:'none',borderBottom:'2px solid var(--border)',borderRadius:0,padding:'4px 0',background:'transparent',width:'100%'}}/> -
+ {/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off" + on individual inputs is ignored by Chrome but respected on the form element */} +
e.preventDefault()}> +
{if(e.key==='Enter'&&e.target.tagName!=='TEXTAREA') e.preventDefault();}}> + {/* Title */} +
+ setTitle(e.target.value)} autoComplete="off" autoCorrect="off" autoCapitalize="sentences" style={{fontSize:20,fontWeight:700,border:'none',borderBottom:'2px solid var(--border)',borderRadius:0,padding:'4px 0',background:'transparent',width:'100%'}}/> +
{/* Event Type */} @@ -766,6 +769,7 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc {event&&(isToolManager||(userId&&event.created_by===userId))&&}
+
{showScopeModal&&setShowScopeModal(false)}/>} diff --git a/frontend/src/components/UserManagerModal.jsx b/frontend/src/components/UserManagerModal.jsx index 7202e82..60f261f 100644 --- a/frontend/src/components/UserManagerModal.jsx +++ b/frontend/src/components/UserManagerModal.jsx @@ -290,12 +290,15 @@ export default function UserManagerModal({ onClose }) { return (
e.target === e.currentTarget && onClose()}>
-
-

User Manager

- -
+ {/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off" + on individual inputs is ignored by Chrome but respected on the form element */} +
e.preventDefault()}> +
+

User Manager

+ +
@@ -421,6 +424,7 @@ export default function UserManagerModal({ onClose }) { )}
)} +
); diff --git a/frontend/src/pages/GroupManagerPage.jsx b/frontend/src/pages/GroupManagerPage.jsx index 5e14088..c57fa2e 100644 --- a/frontend/src/pages/GroupManagerPage.jsx +++ b/frontend/src/pages/GroupManagerPage.jsx @@ -741,12 +741,16 @@ export default function GroupManagerPage({ isMobile = false, onProfile, onHelp, )} - {/* Content */} -
- {tab==='all' && } - {tab==='dm' && } - {tab==='u2u' && } -
+ {/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off" + on individual inputs is ignored by Chrome but respected on the form element */} +
e.preventDefault()}> + {/* Content */} +
+ {tab==='all' && } + {tab==='dm' && } + {tab==='u2u' && } +
+
{/* Mobile footer — fixed, hidden when any input is focused (keyboard open) */} {isMobile && !inputFocused && ( diff --git a/frontend/src/pages/UserManagerPage.jsx b/frontend/src/pages/UserManagerPage.jsx index 40279a3..2a1ee27 100644 --- a/frontend/src/pages/UserManagerPage.jsx +++ b/frontend/src/pages/UserManagerPage.jsx @@ -621,32 +621,35 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o )} {/* Content */} -
+ {/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off" + on individual inputs is ignored by Chrome but respected on the form element */} +
e.preventDefault()}> +
- {/* LIST VIEW */} - {view === 'list' && ( - <> -
- setSearch(e.target.value)} - onFocus={onIF} onBlur={onIB} - autoComplete="off" autoCorrect="off" spellCheck={false} - style={{ width:'100%', maxWidth: isMobile ? '100%' : 400 }} /> -
-
-
- {loading ? ( -
- ) : loadError ? ( -
-
⚠ {loadError}
- -
- ) : filtered.length === 0 ? ( -
- {search ? 'No users match your search.' : 'No users yet.'} -
- ) : ( - filtered.map(u => ) + {/* LIST VIEW */} + {view === 'list' && ( + <> +
+ setSearch(e.target.value)} + onFocus={onIF} onBlur={onIB} + autoComplete="off" autoCorrect="off" spellCheck={false} + style={{ width:'100%', maxWidth: isMobile ? '100%' : 400 }} /> +
+
+
+ {loading ? ( +
+ ) : loadError ? ( +
+
⚠ {loadError}
+ +
+ ) : filtered.length === 0 ? ( +
+ {search ? 'No users match your search.' : 'No users yet.'} +
+ ) : ( + filtered.map(u => ) )}
@@ -677,6 +680,7 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o
)}
+ {/* Mobile footer — fixed, hidden when keyboard is up */} {isMobile && !inputFocused && (