bug fixes
This commit is contained in:
@@ -663,6 +663,9 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div style={{width:'100%',maxWidth:1024,overflowX:'auto'}}>
|
<div style={{width:'100%',maxWidth:1024,overflowX:'auto'}}>
|
||||||
|
{/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off"
|
||||||
|
on individual inputs is ignored by Chrome but respected on the form element */}
|
||||||
|
<form autoComplete="off" onSubmit={e => e.preventDefault()}>
|
||||||
<div style={{minWidth:500}} onKeyDown={e=>{if(e.key==='Enter'&&e.target.tagName!=='TEXTAREA') e.preventDefault();}}>
|
<div style={{minWidth:500}} onKeyDown={e=>{if(e.key==='Enter'&&e.target.tagName!=='TEXTAREA') e.preventDefault();}}>
|
||||||
{/* Title */}
|
{/* Title */}
|
||||||
<div style={{marginBottom:20}}>
|
<div style={{marginBottom:20}}>
|
||||||
@@ -766,6 +769,7 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc
|
|||||||
{event&&(isToolManager||(userId&&event.created_by===userId))&&<button className="btn btn-sm" style={{marginLeft:'auto',background:'var(--error)',color:'white'}} onClick={()=>onDelete(event)}>Delete</button>}
|
{event&&(isToolManager||(userId&&event.created_by===userId))&&<button className="btn btn-sm" style={{marginLeft:'auto',background:'var(--error)',color:'white'}} onClick={()=>onDelete(event)}>Delete</button>}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{showScopeModal&&<RecurringChoiceModal title="Edit recurring event" onConfirm={doSave} onCancel={()=>setShowScopeModal(false)}/>}
|
{showScopeModal&&<RecurringChoiceModal title="Edit recurring event" onConfirm={doSave} onCancel={()=>setShowScopeModal(false)}/>}
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -290,6 +290,9 @@ export default function UserManagerModal({ onClose }) {
|
|||||||
return (
|
return (
|
||||||
<div className="modal-overlay" onClick={e => e.target === e.currentTarget && onClose()}>
|
<div className="modal-overlay" onClick={e => e.target === e.currentTarget && onClose()}>
|
||||||
<div className="modal" style={{ maxWidth: 600, width: '100%' }}>
|
<div className="modal" style={{ maxWidth: 600, 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 */}
|
||||||
|
<form autoComplete="off" onSubmit={e => e.preventDefault()}>
|
||||||
<div className="flex items-center justify-between" style={{ marginBottom: 20 }}>
|
<div className="flex items-center justify-between" style={{ marginBottom: 20 }}>
|
||||||
<h2 className="modal-title" style={{ margin: 0 }}>User Manager</h2>
|
<h2 className="modal-title" style={{ margin: 0 }}>User Manager</h2>
|
||||||
<button className="btn-icon" onClick={onClose}>
|
<button className="btn-icon" onClick={onClose}>
|
||||||
@@ -421,6 +424,7 @@ export default function UserManagerModal({ onClose }) {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -741,12 +741,16 @@ export default function GroupManagerPage({ isMobile = false, onProfile, onHelp,
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off"
|
||||||
|
on individual inputs is ignored by Chrome but respected on the form element */}
|
||||||
|
<form autoComplete="off" onSubmit={e => e.preventDefault()}>
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
<div style={{ flex:1, display:'flex', overflow: isMobile ? 'auto' : 'hidden', paddingBottom: isMobile ? 'calc(82px + env(safe-area-inset-bottom, 0px))' : 0 }}>
|
<div style={{ flex:1, display:'flex', overflow: isMobile ? 'auto' : 'hidden', paddingBottom: isMobile ? 'calc(82px + env(safe-area-inset-bottom, 0px))' : 0 }}>
|
||||||
{tab==='all' && <AllGroupsTab allUsers={allUsers} onRefresh={onRefresh} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
{tab==='all' && <AllGroupsTab allUsers={allUsers} onRefresh={onRefresh} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
||||||
{tab==='dm' && <DirectMessagesTab allUserGroups={allUserGroups} onRefresh={onRefresh} refreshKey={refreshKey} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
{tab==='dm' && <DirectMessagesTab allUserGroups={allUserGroups} onRefresh={onRefresh} refreshKey={refreshKey} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
||||||
{tab==='u2u' && <U2URestrictionsTab allUserGroups={allUserGroups} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
{tab==='u2u' && <U2URestrictionsTab allUserGroups={allUserGroups} isMobile={isMobile} onIF={onIF} onIB={onIB} />}
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
{/* Mobile footer — fixed, hidden when any input is focused (keyboard open) */}
|
{/* Mobile footer — fixed, hidden when any input is focused (keyboard open) */}
|
||||||
{isMobile && !inputFocused && (
|
{isMobile && !inputFocused && (
|
||||||
|
|||||||
@@ -621,6 +621,9 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Content */}
|
{/* 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 */}
|
||||||
|
<form autoComplete="off" onSubmit={e => e.preventDefault()}>
|
||||||
<div style={{ flex:1, display:'flex', flexDirection:'column', overflow:'hidden', minHeight:0, background:'var(--background)' }}>
|
<div style={{ flex:1, display:'flex', flexDirection:'column', overflow:'hidden', minHeight:0, background:'var(--background)' }}>
|
||||||
|
|
||||||
{/* LIST VIEW */}
|
{/* LIST VIEW */}
|
||||||
@@ -677,6 +680,7 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
{/* Mobile footer — fixed, hidden when keyboard is up */}
|
{/* Mobile footer — fixed, hidden when keyboard is up */}
|
||||||
{isMobile && !inputFocused && (
|
{isMobile && !inputFocused && (
|
||||||
|
|||||||
Reference in New Issue
Block a user