-
-
Notifications
You must be signed in to change notification settings - Fork 663
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: css alignment of calendar component on the home page #3276
base: master
Are you sure you want to change the base?
Changes from 7 commits
c49a672
0021c7c
38d074d
c136e36
62f32c1
2bbb730
e307506
ab81c1d
d7ad631
23e7a3c
488b88b
2677a18
2ddd0c1
7bbb928
f4cf284
de8650b
abf167d
01d7953
fe25c55
e6555c9
1a29373
67166ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -28,10 +28,16 @@ export default function Calendar({ className = '', size }: ICalendarProps) { | |||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
const CALENDAR_URL = | ||||||||||||||||||||||||||||||||||||||||||||||||
'https://calendar.google.com/calendar/embed?src=c_q9tseiglomdsj6njuhvbpts11c%40group.calendar.google.com&ctz=UTC'; | ||||||||||||||||||||||||||||||||||||||||||||||||
const eventsExist = eventsData.length > 0; | ||||||||||||||||||||||||||||||||||||||||||||||||
const currentDate = new Date(); | ||||||||||||||||||||||||||||||||||||||||||||||||
const eventsExist = eventsData?.filter((event: IEvent) => moment(event.date).isAfter(currentDate)).length > 0; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className={twMerge('overflow-hidden rounded-md border border-gray-200 bg-white p-4', className)}> | ||||||||||||||||||||||||||||||||||||||||||||||||
<div | ||||||||||||||||||||||||||||||||||||||||||||||||
className={twMerge( | ||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||||||||||||||||||||||||||||||||||||||||
'overflow-hidden rounded-md border border-gray-200 bg-white p-4 h-full flex flex-col gap-2', | ||||||||||||||||||||||||||||||||||||||||||||||||
className | ||||||||||||||||||||||||||||||||||||||||||||||||
)} | ||||||||||||||||||||||||||||||||||||||||||||||||
> | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+35
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Address mobile view alignment issue While the flex container improvements help with layout, the mobile view alignment issue mentioned in the past review still needs attention. The calendar div appears shifted to the right on mobile/tab views instead of being centered like other cards. Apply this diff to center the component on mobile views: <div
className={twMerge(
- 'overflow-hidden rounded-md border border-gray-200 bg-white p-4 h-full flex flex-col gap-2',
+ 'overflow-hidden rounded-md border border-gray-200 bg-white p-4 h-full flex flex-col gap-2 mx-auto w-full',
className
)}
> 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||
<Heading level={HeadingLevel.h2} typeStyle={HeadingTypeStyle.mdSemibold}> | ||||||||||||||||||||||||||||||||||||||||||||||||
{t('calendar.title')} | ||||||||||||||||||||||||||||||||||||||||||||||||
</Heading> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -43,7 +49,7 @@ export default function Calendar({ className = '', size }: ICalendarProps) { | |||||||||||||||||||||||||||||||||||||||||||||||
<span className='flex-1 self-center text-center'>{moment(event.date).format('D')}</span> | ||||||||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className='grow text-left sm:mt-0 sm:pl-6'> | ||||||||||||||||||||||||||||||||||||||||||||||||
<h2 className='title-font text-xl font-medium text-gray-900 hover:text-gray-500'>{event.title}</h2> | ||||||||||||||||||||||||||||||||||||||||||||||||
<h2 className='title-font font-medium text-gray-900 hover:text-gray-500'>{event.title}</h2> | ||||||||||||||||||||||||||||||||||||||||||||||||
<p className='text-gray-600'> | ||||||||||||||||||||||||||||||||||||||||||||||||
{moment(event.date).local().format('LLLL')} UTC | ||||||||||||||||||||||||||||||||||||||||||||||||
{moment(event.date).local().format('Z')} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -53,13 +59,12 @@ export default function Calendar({ className = '', size }: ICalendarProps) { | |||||||||||||||||||||||||||||||||||||||||||||||
</li> | ||||||||||||||||||||||||||||||||||||||||||||||||
))} | ||||||||||||||||||||||||||||||||||||||||||||||||
</ul> | ||||||||||||||||||||||||||||||||||||||||||||||||
{eventsExist ? ( | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className='pt-4' data-testid='Calendar-button'> | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className='h-full content-center'> | ||||||||||||||||||||||||||||||||||||||||||||||||
{!eventsExist && <div className='font-bold text-gray-700 lg:pb-8'>{t('calendar.noMeetingsMessage')}</div>} | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className='sm:pt-0 md:pt-2 lg:pb-8 lg:pt-0' data-testid='Calendar-button'> | ||||||||||||||||||||||||||||||||||||||||||||||||
<GoogleCalendarButton href={CALENDAR_URL} text={t('calendar.viewCalendarBtn')} /> | ||||||||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||||||||
) : ( | ||||||||||||||||||||||||||||||||||||||||||||||||
<div className='mt-2 text-gray-700'>{t('calendar.noMeetingsMessage')}</div> | ||||||||||||||||||||||||||||||||||||||||||||||||
)} | ||||||||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+62
to
+67
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Simplify padding classes and improve accessibility Two suggestions for improvement:
Here's the suggested improvement: - <div className='h-full content-center'>
- {!eventsExist && <div className='font-bold text-gray-700 lg:pb-8'>{t('calendar.noMeetingsMessage')}</div>}
- <div className='sm:pt-0 md:pt-2 lg:pb-8 lg:pt-0' data-testid='Calendar-button'>
+ <div className='h-full content-center lg:pb-8'>
+ {!eventsExist && (
+ <div
+ className='font-bold text-gray-700'
+ role="status"
+ aria-live="polite"
+ >
+ {t('calendar.noMeetingsMessage')}
+ </div>
+ )}
+ <div className='sm:pt-0 md:pt-2 lg:pt-0' data-testid='Calendar-button'>
<GoogleCalendarButton href={CALENDAR_URL} text={t('calendar.viewCalendarBtn')} />
</div>
</div> 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,6 +23,6 @@ | |
"calendar": { | ||
"title": "Upcoming events", | ||
"viewCalendarBtn": "View Calendar", | ||
"noMettingsMessage": "There are no meetings scheduled for next few days." | ||
"noMeetingsMessage": "There are no meetings scheduled for next few days. You can check upcoming events by clicking the button below." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification German translation needs to be updated with the new message content The verification revealed that while the Calendar component correctly uses the new key
🔗 Analysis chainLGTM! Clear and helpful message text. The expanded message provides better guidance to users by explaining how to check upcoming events. Let's verify the related changes: 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Verify the key usage in components and German translation
# Test 1: Check if Calendar component uses the correct key
echo "Checking Calendar component for key usage..."
rg -A 2 "noMettingsMessage|noMeetingsMessage"
# Test 2: Verify German translation
echo "Checking German translation..."
cat public/locales/de/common.json | jq '.calendar.noMeetingsMessage'
Length of output: 1134 |
||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consider optimizing the date filtering logic
While the filtering logic is correct, there are a few potential improvements:
Date
API or lighter alternatives likedate-fns
instead of moment.js which is now considered legacy.useMemo
to prevent unnecessary recalculations on re-renders.Here's a suggested implementation:
📝 Committable suggestion