v0.9.84 bug fixes
This commit is contained in:
@@ -100,7 +100,7 @@ function MiniCalendar({ selected, onChange, eventDates=new Set() }) {
|
||||
}
|
||||
|
||||
// ── Mobile Filter Bar (Schedule view: keyword+type filters with month nav; Day view: calendar accordion) ──
|
||||
function MobileScheduleFilter({ selected, onMonthChange, view, eventTypes, filterKeyword, onFilterKeyword, filterTypeId, onFilterTypeId, eventDates=new Set() }) {
|
||||
function MobileScheduleFilter({ selected, onMonthChange, view, eventTypes, filterKeyword, onFilterKeyword, filterTypeId, onFilterTypeId, eventDates=new Set(), onInputFocus, onInputBlur }) {
|
||||
// Day view: keep accordion calendar
|
||||
const [open, setOpen] = useState(false);
|
||||
const y=selected.getFullYear(), m=selected.getMonth();
|
||||
@@ -158,8 +158,10 @@ function MobileScheduleFilter({ selected, onMonthChange, view, eventTypes, filte
|
||||
<input
|
||||
value={filterKeyword}
|
||||
onChange={e=>onFilterKeyword(e.target.value)}
|
||||
onFocus={onInputFocus}
|
||||
onBlur={onInputBlur}
|
||||
placeholder="Search events…"
|
||||
autoComplete="off" autoCorrect="off" autoCapitalize="off" spellCheck={false}
|
||||
autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false}
|
||||
style={{width:'100%',padding:'7px 8px 7px 28px',border:'1px solid var(--border)',borderRadius:'var(--radius)',background:'var(--background)',color:'var(--text-primary)',fontSize:13,boxSizing:'border-box'}}
|
||||
/>
|
||||
</div>
|
||||
@@ -976,6 +978,7 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel
|
||||
const [editingEvent, setEditingEvent] = useState(null);
|
||||
const [filterKeyword, setFilterKeyword] = useState('');
|
||||
const [filterTypeId, setFilterTypeId] = useState('');
|
||||
const [inputFocused, setInputFocused] = useState(false); // hides footer when keyboard open on mobile
|
||||
const [detailEvent, setDetailEvent] = useState(null);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [createOpen, setCreateOpen] = useState(false);
|
||||
@@ -1080,7 +1083,7 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel
|
||||
placeholder={`Keyword… (space = OR, "phrase")`}
|
||||
value={filterKeyword}
|
||||
onChange={e=>setFilterKeyword(e.target.value)}
|
||||
autoComplete="off" autoCorrect="off" autoCapitalize="off" spellCheck={false}
|
||||
autoComplete="new-password" autoCorrect="off" autoCapitalize="off" spellCheck={false}
|
||||
style={{ marginBottom:8, fontSize:13 }}
|
||||
/>
|
||||
<select
|
||||
@@ -1150,6 +1153,8 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel
|
||||
onFilterKeyword={setFilterKeyword}
|
||||
filterTypeId={filterTypeId}
|
||||
onFilterTypeId={setFilterTypeId}
|
||||
onInputFocus={()=>setInputFocused(true)}
|
||||
onInputBlur={()=>setInputFocused(false)}
|
||||
eventDates={eventDates}
|
||||
onMonthChange={(dir, exactDate) => {
|
||||
if(exactDate) { setSelDate(exactDate); }
|
||||
@@ -1193,8 +1198,8 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Mobile bottom bar — position:fixed so keyboard doesn't push it up */}
|
||||
{isMobile && (
|
||||
{/* Mobile bottom bar — hidden when keyboard open to avoid being pushed up */}
|
||||
{isMobile && !inputFocused && (
|
||||
<div style={{ position:'fixed', bottom:0, left:0, right:0, zIndex:20, background:'var(--surface)', borderTop:'1px solid var(--border)' }}>
|
||||
<UserFooter onProfile={onProfile} onHelp={onHelp} onAbout={onAbout} />
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user