-
setSearch(e.target.value)} autoComplete="new-password" placeholder="Search tenants…"
+
setSearch(e.target.value)} autoComplete="new-password" placeholder="Search tenants…"
className="input" style={{ flex:1, minWidth:160, fontSize:13 }} autoComplete="new-password" />
diff --git a/frontend/src/components/MobileEventForm.jsx b/frontend/src/components/MobileEventForm.jsx
index 8358026..86b795b 100644
--- a/frontend/src/components/MobileEventForm.jsx
+++ b/frontend/src/components/MobileEventForm.jsx
@@ -119,7 +119,7 @@ function RecurrenceSheet({ value, onChange, onClose }) {
Repeats every
-
upd('interval',Math.max(1,parseInt(e.target.value)||1))} style={{ width:70,textAlign:'center',fontSize:16 }}/>
+
upd('interval',Math.max(1,parseInt(e.target.value)||1))} style={{ width:70,textAlign:'center',fontSize:16 }}/>
@@ -146,8 +146,8 @@ function RecurrenceSheet({ value, onChange, onClose }) {
{(customRule.ends||'never')===val&&
}
{lbl}
- {val==='on'&&(customRule.ends||'never')==='on'&&
upd('endDate',e.target.value)} style={{ width:150 }}/>}
- {val==='after'&&(customRule.ends||'never')==='after'&&<>
upd('endCount',parseInt(e.target.value)||1)} style={{ width:64,textAlign:'center' }}/>
occurrences>}
+ {val==='on'&&(customRule.ends||'never')==='on'&&
upd('endDate',e.target.value)} style={{ width:150 }}/>}
+ {val==='after'&&(customRule.ends||'never')==='after'&&<>
upd('endCount',parseInt(e.target.value)||1)} style={{ width:64,textAlign:'center' }}/>
occurrences>}
))}
@@ -282,7 +282,7 @@ export default function MobileEventForm({ event, eventTypes, userGroups, selecte
{/* Title */}
- setTitle(e.target.value)} autoComplete="new-password" placeholder="Add title" autoComplete="new-password" autoCorrect="off" autoCapitalize="sentences" spellCheck={false} style={{ width:'100%',border:'none',background:'transparent',fontSize:22,fontWeight:700,color:'var(--text-primary)',outline:'none' }}/>
+ setTitle(e.target.value)} autoComplete="new-password" placeholder="Add title" autoComplete="new-password" autoCorrect="off" autoCapitalize="sentences" spellCheck={false} style={{ width:'100%',border:'none',background:'transparent',fontSize:22,fontWeight:700,color:'var(--text-primary)',outline:'none' }}/>
{/* Event Type */}
@@ -364,7 +364,7 @@ export default function MobileEventForm({ event, eventTypes, userGroups, selecte
{/* Location */}
}>
- setLocation(e.target.value)} autoComplete="new-password" placeholder="Add location" autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false} style={{ width:'100%',border:'none',background:'transparent',fontSize:15,color:'var(--text-primary)',outline:'none' }}/>
+ setLocation(e.target.value)} autoComplete="new-password" placeholder="Add location" autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false} style={{ width:'100%',border:'none',background:'transparent',fontSize:15,color:'var(--text-primary)',outline:'none' }}/>
{/* Description */}
@@ -397,7 +397,7 @@ export default function MobileEventForm({ event, eventTypes, userGroups, selecte
setNewTypeName(e.target.value)} autoComplete="new-password" onKeyDown={e=>e.key==='Enter'&&createEventType()}
+ onChange={e => setNewTypeName(e.target.value)} autoComplete="new-password" onKeyDown={e=>e.key==='Enter'&&createEventType()}
placeholder="Type name…" autoComplete="new-password" autoCorrect="off" autoCapitalize="words" spellCheck={false}
style={{ width:'100%',padding:'12px 14px',border:'1px solid var(--border)',borderRadius:'var(--radius)',fontSize:16,marginBottom:12,boxSizing:'border-box',background:'var(--background)',color:'var(--text-primary)' }} />
diff --git a/frontend/src/components/MobileGroupManager.jsx b/frontend/src/components/MobileGroupManager.jsx
index 2f3b6c1..bb8af94 100644
--- a/frontend/src/components/MobileGroupManager.jsx
+++ b/frontend/src/components/MobileGroupManager.jsx
@@ -69,7 +69,7 @@ function MembersScreen({ group, allUsers, onBack }) {
setSearch(e.target.value)} autoComplete="new-password" placeholder="Search users…"
+ value={search} onChange={e => setSearch(e.target.value)} autoComplete="new-password" placeholder="Search users…"
autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false}
style={{width:'100%',padding:'8px 10px 8px 32px',border:'1px solid var(--border)',borderRadius:'var(--radius)',background:'var(--background)',color:'var(--text-primary)',fontSize:14,boxSizing:'border-box'}} />
@@ -142,7 +142,7 @@ function MultiGroupDmsScreen({ userGroups, onBack }) {
right={
} />
{creating && (
-
setNewName(e.target.value)} autoComplete="new-password" placeholder="DM name…" autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false} style={{ width:'100%',padding:'9px 12px',border:'1px solid var(--border)',borderRadius:'var(--radius)',background:'var(--background)',color:'var(--text-primary)',fontSize:15,marginBottom:10,boxSizing:'border-box' }}/>
+
setNewName(e.target.value)} autoComplete="new-password" placeholder="DM name…" autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false} style={{ width:'100%',padding:'9px 12px',border:'1px solid var(--border)',borderRadius:'var(--radius)',background:'var(--background)',color:'var(--text-primary)',fontSize:15,marginBottom:10,boxSizing:'border-box' }}/>
Select groups (min 2):
{userGroups.map(g=>(
)}
@@ -120,7 +120,7 @@ export default function NewChatModal({ onClose, onCreated }) {
-
setSearch(e.target.value)} />
+
setSearch(e.target.value)} />
{selected.length > 0 && (
diff --git a/frontend/src/components/ProfileModal.jsx b/frontend/src/components/ProfileModal.jsx
index 87642bf..72609c9 100644
--- a/frontend/src/components/ProfileModal.jsx
+++ b/frontend/src/components/ProfileModal.jsx
@@ -107,7 +107,7 @@ export default function ProfileModal({ onClose }) {
{
+ onChange={async e => {
const val = e.target.value;
setDisplayName(val);
setDisplayNameWarning('');
@@ -167,15 +167,15 @@ export default function ProfileModal({ onClose }) {
- setCurrentPw(e.target.value)} autoComplete="new-password" />
+ setCurrentPw(e.target.value)} autoComplete="new-password" />
- setNewPw(e.target.value)} autoComplete="new-password" />
+ setNewPw(e.target.value)} autoComplete="new-password" />
- setConfirmPw(e.target.value)} autoComplete="new-password" />
+ setConfirmPw(e.target.value)} autoComplete="new-password" />