Skip to content

Commit 8f6ff75

Browse files
fix(PDYE-1248): nuevo link mas eventos proximos (#716)
Co-authored-by: Javiera Munita <javiera.munita@eclass.cl>
1 parent af9b884 commit 8f6ff75

File tree

6 files changed

+98
-56
lines changed

6 files changed

+98
-56
lines changed

src/organisms/Calendar/Dropdown/CalendarDropdown/CalendarDropdownContainer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const CalendarDropdownContainer = ({
2020
m,
2121
}: ICalendarDropdown): JSX.Element => {
2222
const [isMobile] = useMediaQuery('(max-width: 577px)')
23-
const { closeAndMarkSeen, empty, hasNew, ...all } = useParseEvents(events, now)
23+
const { closeAndMarkSeen, empty, hasNew, hasMoreNext, ...all } = useParseEvents(events, now)
2424

2525
const [isTooltipDisabled, setTooltipDisabled] = useState(false)
2626
const [isMenuOpen, setMenuOpen] = useState(false)
@@ -136,7 +136,7 @@ export const CalendarDropdownContainer = ({
136136
fontWeight: '700',
137137
lineHeight: '31px',
138138
margin: '32px 0 0',
139-
padding: '0 0 8px 24px',
139+
padding: '0 0 8px 16px',
140140
},
141141
'.react-ripples': {
142142
width: 'inherit',
@@ -164,6 +164,7 @@ export const CalendarDropdownContainer = ({
164164
<Empty text={text?.empty ?? 'Aún no tienes eventos en tu calendario'} />
165165
) : (
166166
<Events
167+
hasMoreNext={hasMoreNext}
167168
colors={courseColors}
168169
events={all}
169170
text={text}

src/organisms/Calendar/Dropdown/CalendarDropdown/Components/Events.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface IEventsProps {
1515
redirecToCalendar: () => void
1616
isMobile: boolean
1717
colors?: Record<string, string>
18+
hasMoreNext?: boolean
1819
}
1920

2021
export const Events = ({
@@ -23,8 +24,10 @@ export const Events = ({
2324
redirecToCalendar,
2425
isMobile,
2526
colors,
27+
hasMoreNext,
2628
}: IEventsProps): JSX.Element => {
2729
const { today, tomorrow, next } = events
30+
2831
return (
2932
<Box
3033
borderRadius="10px"
@@ -50,7 +53,7 @@ export const Events = ({
5053
},
5154
}}
5255
>
53-
<BtnPrimary onClick={redirecToCalendar} m="72px 0 0 24px" id="RedirectButton">
56+
<BtnPrimary onClick={redirecToCalendar} m="72px 0 0 16px" id="RedirectButton">
5457
{text?.buttonCalendar ?? 'Ir a Mi Calendario'}
5558
</BtnPrimary>
5659
</Box>
@@ -68,10 +71,14 @@ export const Events = ({
6871
events={tomorrow}
6972
/>
7073
<EventsGroup
74+
hasMoreNext={hasMoreNext}
7175
colors={colors}
76+
textSeeMore={text?.seeMore.see ?? 'Ver más fechas en'}
77+
textLinkMore={text?.seeMore.link ?? 'Mi calendario'}
7278
text={text?.course ?? ''}
7379
title={text?.events?.next ?? 'Próximos'}
7480
events={next}
81+
redirect={redirecToCalendar}
7582
/>
7683
</Box>
7784
)
Lines changed: 78 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { BtnLink } from '@/molecules'
12
import { EventsList } from '@/organisms/Calendar'
23
import { Box, MenuGroup } from '@chakra-ui/react'
34
import { vars } from '@theme'
@@ -7,63 +8,88 @@ interface IEventsGroupProps {
78
title: string
89
events: Event[]
910
text: string
11+
textSeeMore?: string
12+
textLinkMore?: string
1013
colors?: Record<string, string>
14+
redirect?: () => void
15+
hasMoreNext?: boolean
1116
}
1217

13-
export const EventsGroup = ({ title, events, text, colors }: IEventsGroupProps): JSX.Element => {
18+
export const EventsGroup = ({
19+
title,
20+
events,
21+
text,
22+
textSeeMore,
23+
textLinkMore,
24+
colors,
25+
redirect,
26+
hasMoreNext,
27+
}: IEventsGroupProps): JSX.Element => {
1428
if (!events || (events && events.length === 0)) return <></>
1529
return (
16-
<Box
17-
className="calendar-events-group"
18-
_focus={{
19-
background: 'none !important',
20-
border: `1px solid ${vars('colors-icon-deepSkyBlue') ?? '#0189FF'}`,
21-
}}
22-
sx={{
23-
'.chakra-menu__menuitem > div': {
24-
w: '100%',
25-
},
26-
}}
27-
>
28-
<MenuGroup title={title}>
29-
{events.map((event: Event) => {
30-
return (
31-
// Una vez que el evento se comporte como link, se debe cambiar Box a MenuItem y aplicar el efecto de focus
32-
<Box
33-
bg={vars('colors-neutral-white') ?? '#FFFFFF'}
34-
border="none"
35-
cursor="default"
36-
padding="0"
37-
key={event.id}
38-
_hover={{
39-
boxShadow: 'none !important',
40-
cursor: 'default !important',
41-
bg: 'none !important',
42-
}}
43-
_focus={{
44-
background: 'none !important',
45-
boxShadow: 'none !important',
46-
}}
47-
>
48-
<EventsList
30+
<>
31+
<Box
32+
className="calendar-events-group"
33+
_focus={{
34+
background: 'none !important',
35+
border: `1px solid ${vars('colors-icon-deepSkyBlue') ?? '#0189FF'}`,
36+
}}
37+
sx={{
38+
'.chakra-menu__menuitem > div': {
39+
w: '100%',
40+
},
41+
}}
42+
>
43+
<MenuGroup title={title}>
44+
{events.map((event: Event) => {
45+
return (
46+
// Una vez que el evento se comporte como link, se debe cambiar Box a MenuItem y aplicar el efecto de focus
47+
<Box
48+
bg={vars('colors-neutral-white') ?? '#FFFFFF'}
49+
border="none"
50+
cursor="default"
51+
padding="0"
4952
key={event.id}
50-
name={event.associated_resource.name || ''}
51-
courseName={event.course.name}
52-
day={event.formatedDate.day}
53-
date={event.formatedDate.date}
54-
time={event.formatedDate.time}
55-
color={
56-
event.course_id && colors?.[event.course_id] ? colors[event.course_id] : '#82504A'
57-
}
58-
text={text}
59-
type={event.type}
60-
hasNotification={event.isNew}
61-
showCourse
62-
/>
63-
</Box>
64-
)
65-
})}
66-
</MenuGroup>
67-
</Box>
53+
_hover={{
54+
boxShadow: 'none !important',
55+
cursor: 'default !important',
56+
bg: 'none !important',
57+
}}
58+
_focus={{
59+
background: 'none !important',
60+
boxShadow: 'none !important',
61+
}}
62+
>
63+
<EventsList
64+
key={event.id}
65+
name={event.associated_resource.name || ''}
66+
courseName={event.course.name}
67+
day={event.formatedDate.day}
68+
date={event.formatedDate.date}
69+
time={event.formatedDate.time}
70+
color={
71+
event.course_id && colors?.[event.course_id]
72+
? colors[event.course_id]
73+
: '#82504A'
74+
}
75+
text={text}
76+
type={event.type}
77+
hasNotification={event.isNew}
78+
showCourse
79+
/>
80+
</Box>
81+
)
82+
})}
83+
</MenuGroup>
84+
</Box>
85+
{hasMoreNext && (
86+
<Box display="flex" alignItems="center" padding="16px 0 0 16px">
87+
<Box as="span" fontSize="14px">
88+
{textSeeMore}
89+
</Box>{' '}
90+
<BtnLink onClick={redirect}>{textLinkMore}</BtnLink>
91+
</Box>
92+
)}
93+
</>
6894
)
6995
}

src/organisms/Calendar/Dropdown/CalendarDropdown/services/parseEvents.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ export const useParseEvents = (
1515
hasNew: boolean
1616
closeAndMarkSeen: () => void
1717
empty: boolean
18+
hasMoreNext: boolean
1819
} => {
1920
const [todayEvents, setTodayEvents] = useState<any[]>([])
2021
const [tomorrowEvents, setTomorrowEvents] = useState<any[]>([])
2122
const [nextEvents, setNextEvents] = useState<any[]>([])
2223
const [hasNew, setHasNew] = useState(false)
24+
const [hasMoreNext, setHasMoreNext] = useState(false)
2325

2426
useEffect(() => {
2527
const parseNow = parseISO(now)
@@ -57,6 +59,7 @@ export const useParseEvents = (
5759

5860
let next = [...nextList]
5961
if (nextList.length > 5) {
62+
setHasMoreNext(true)
6063
next = next.slice(0, 5)
6164
}
6265
setNextEvents(next)
@@ -91,5 +94,6 @@ export const useParseEvents = (
9194
hasNew,
9295
closeAndMarkSeen,
9396
empty,
97+
hasMoreNext,
9498
}
9599
}

src/organisms/Calendar/Dropdown/types.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ export interface Text {
3939
}
4040
header: string
4141
loading: string
42+
seeMore: {
43+
see: string
44+
link: string
45+
}
4246
tooltip: string
4347
}
4448

src/organisms/Calendar/EventsList/EventsList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export const EventsList = ({
5757
}
5858

5959
return (
60-
<Box className="eventsList" borderTop={border} p="16px 24px" display="flex" gap="12px">
60+
<Box className="eventsList" borderTop={border} p="16px" display="flex" gap="12px">
6161
<Box
6262
bg={color}
6363
minW="80px"

0 commit comments

Comments
 (0)