Skip to content

Commit 1a7ed74

Browse files
Rafael Travado FernándezRafael Travado Fernández
Rafael Travado Fernández
authored and
Rafael Travado Fernández
committed
Agregar en pantallas pequeñas
1 parent ac3c631 commit 1a7ed74

File tree

1 file changed

+97
-61
lines changed

1 file changed

+97
-61
lines changed

frontend/src/pages/Home.js

+97-61
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import React, { useState, useEffect, useCallback, useMemo, Suspense } from 'reac
22
import {
33
Container, Typography, Box, Button, Paper, ThemeProvider,
44
createTheme, Snackbar, Menu, MenuItem, Modal, Fade,
5-
useMediaQuery, useTheme
5+
useMediaQuery, useTheme, Fab
66
} from '@mui/material';
77
import { Calendar, dateFnsLocalizer, Views } from 'react-big-calendar';
8+
import AddIcon from '@mui/icons-material/Add';
89
import format from 'date-fns/format';
910
import parse from 'date-fns/parse';
1011
import startOfWeek from 'date-fns/startOfWeek';
@@ -452,10 +453,27 @@ function Home({ isDemo = false }) {
452453
color: 'white',
453454
border: 'none',
454455
padding: '2px 5px',
455-
display: 'block'
456+
display: 'block',
457+
overflow: 'hidden',
458+
textOverflow: 'ellipsis',
459+
whiteSpace: 'nowrap',
460+
fontSize: isMobile ? '0.7rem' : '0.9rem'
456461
}
457462
};
458-
}, []);
463+
}, [isMobile]);
464+
465+
const formats = {
466+
weekdayFormat: (date, culture, localizer) =>
467+
isMobile
468+
? localizer.format(date, 'EEEEE', culture)
469+
: localizer.format(date, 'EEEE', culture)
470+
};
471+
472+
const CustomEvent = ({ event }) => (
473+
<span title={event.title}>
474+
{isMobile ? event.title.slice(0, 3) + '...' : event.title}
475+
</span>
476+
);
459477

460478
const handleNavigate = useCallback((newDate) => {
461479
setCurrentDate(newDate);
@@ -609,6 +627,7 @@ function Home({ isDemo = false }) {
609627
setSelectedDayTasks([]);
610628
};
611629

630+
612631
return (
613632
<ThemeProvider theme={theme}>
614633
<Box sx={{
@@ -617,34 +636,36 @@ function Home({ isDemo = false }) {
617636
minHeight: '100vh',
618637
bgcolor: 'background.default'
619638
}}>
620-
<Navbar onViewChange={setView} onNewTask={() => setIsFormVisible(true)} isDemo={isDemo} />
639+
<Navbar onViewChange={setView} onNewTask={handleNewTask} isDemo={isDemo} />
621640
{isDemo && <Container maxWidth="lg" sx={{ mt: 2 }}><DemoBanner /></Container>}
622641
<Container component="main" maxWidth="lg" sx={{ mt: 4, mb: 4, flexGrow: 1 }}>
623642
<Paper elevation={0} sx={{ p: 3, minHeight: 'calc(100vh - 200px)', ...calendarStyles }}>
624643
{view === 'calendar' ? (
625644
<DnDCalendar
626-
localizer={localizer}
627-
events={calendarEvents}
628-
startAccessor="start"
629-
endAccessor="end"
630-
style={{ height: '100%', minHeight: '500px' }}
631-
eventPropGetter={eventStyleGetter}
632-
messages={messages}
633-
culture='es'
634-
onSelectEvent={handleSelectEvent}
635-
onSelectSlot={handleSelectSlot}
636-
selectable
637-
views={{month: true, week: true, day: true, agenda: true}}
638-
defaultView={Views.MONTH}
639-
date={currentDate}
640-
onNavigate={handleNavigate}
641-
components={{
642-
toolbar: (toolbarProps) => <CustomToolbar {...toolbarProps} date={currentDate} />
643-
}}
644-
onShowMore={handleShowMoreClick}
645-
onEventDrop={handleEventDrop}
646-
resizable={false}
647-
/>
645+
localizer={localizer}
646+
events={calendarEvents}
647+
startAccessor="start"
648+
endAccessor="end"
649+
style={{ height: '100%', minHeight: '500px' }}
650+
eventPropGetter={eventStyleGetter}
651+
messages={messages}
652+
culture='es'
653+
onSelectEvent={handleSelectEvent}
654+
onSelectSlot={handleSelectSlot}
655+
selectable
656+
views={{month: true, week: true, day: true, agenda: true}}
657+
defaultView={Views.MONTH}
658+
date={currentDate}
659+
onNavigate={handleNavigate}
660+
components={{
661+
toolbar: (toolbarProps) => <CustomToolbar {...toolbarProps} date={currentDate} />,
662+
event: CustomEvent
663+
}}
664+
onShowMore={handleShowMoreClick}
665+
onEventDrop={handleEventDrop}
666+
resizable={false}
667+
formats={formats}
668+
/>
648669
) : (
649670
<>
650671
<Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 2 }}>
@@ -684,6 +705,21 @@ function Home({ isDemo = false }) {
684705
</Paper>
685706
</Container>
686707
<Footer />
708+
{isMobile && (
709+
<Fab
710+
color="primary"
711+
aria-label="add"
712+
onClick={handleNewTask}
713+
sx={{
714+
position: 'fixed',
715+
bottom: 16,
716+
right: 16,
717+
zIndex: 1000
718+
}}
719+
>
720+
<AddIcon />
721+
</Fab>
722+
)}
687723
</Box>
688724
<LimitReachedModal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)} />
689725
<Modal
@@ -735,41 +771,41 @@ function Home({ isDemo = false }) {
735771
/>
736772
{isFormVisible && (
737773
<Modal
738-
open={isFormVisible}
739-
onClose={() => setIsFormVisible(false)}
740-
closeAfterTransition
741-
BackdropProps={{
742-
timeout: 500,
743-
}}
744-
>
745-
<Fade in={isFormVisible}>
746-
<Box sx={{
747-
position: 'absolute',
748-
top: '50%',
749-
left: '50%',
750-
transform: 'translate(-50%, -50%)',
751-
width: isMobile ? '90%' : 400,
752-
bgcolor: 'background.paper',
753-
boxShadow: 24,
754-
p: 4,
755-
borderRadius: 2,
756-
}}>
757-
<Typography variant="h6" component="h2" sx={{ mb: 2 }}>
758-
{editingTask && editingTask._id ? 'Editar Tarea' : 'Crear Nueva Tarea'}
759-
</Typography>
760-
<Suspense fallback={<div>Cargando...</div>}>
761-
<TaskForm
762-
onSubmit={editingTask && editingTask._id ? handleUpdateTask : handleCreateTask}
763-
initialTask={editingTask}
764-
onCancel={() => {
765-
setEditingTask(null);
766-
setIsFormVisible(false);
767-
}}
768-
/>
769-
</Suspense>
770-
</Box>
771-
</Fade>
772-
</Modal>
774+
open={isFormVisible}
775+
onClose={() => setIsFormVisible(false)}
776+
closeAfterTransition
777+
BackdropProps={{
778+
timeout: 500,
779+
}}
780+
>
781+
<Fade in={isFormVisible}>
782+
<Box sx={{
783+
position: 'absolute',
784+
top: '50%',
785+
left: '50%',
786+
transform: 'translate(-50%, -50%)',
787+
width: isMobile ? '90%' : 400,
788+
bgcolor: 'background.paper',
789+
boxShadow: 24,
790+
p: 4,
791+
borderRadius: 2,
792+
}}>
793+
<Typography variant="h6" component="h2" sx={{ mb: 2 }}>
794+
{editingTask && editingTask._id ? 'Editar Tarea' : 'Crear Nueva Tarea'}
795+
</Typography>
796+
<Suspense fallback={<div>Cargando...</div>}>
797+
<TaskForm
798+
onSubmit={editingTask && editingTask._id ? handleUpdateTask : handleCreateTask}
799+
initialTask={editingTask}
800+
onCancel={() => {
801+
setEditingTask(null);
802+
setIsFormVisible(false);
803+
}}
804+
/>
805+
</Suspense>
806+
</Box>
807+
</Fade>
808+
</Modal>
773809
)}
774810
{isDayTasksPanelOpen && (
775811
<DayTasksPanel

0 commit comments

Comments
 (0)