diff --git a/src/apps/calendar/src/lib/components/TeamCalendar/TeamCalendar.tsx b/src/apps/calendar/src/lib/components/TeamCalendar/TeamCalendar.tsx index 723be6b0c..1a2feecea 100644 --- a/src/apps/calendar/src/lib/components/TeamCalendar/TeamCalendar.tsx +++ b/src/apps/calendar/src/lib/components/TeamCalendar/TeamCalendar.tsx @@ -118,19 +118,24 @@ export const TeamCalendar: FC = (props: TeamCalendarProps) => {date.getDate()}
{displayedUsers.length > 0 - && displayedUsers.map((user, userIndex) => ( -
- {getUserDisplayName(user)} -
- ))} + && displayedUsers.map((user, userIndex) => { + const isHolidayStatus = user.status === LeaveStatus.WIPRO_HOLIDAY + || user.status === LeaveStatus.HOLIDAY + + return ( +
+ {getUserDisplayName(user)} +
+ ) + })} {overflowCount > 0 && (
{`+${overflowCount} more`} diff --git a/src/apps/calendar/src/lib/models/index.ts b/src/apps/calendar/src/lib/models/index.ts index e993d3773..994fa9c6c 100644 --- a/src/apps/calendar/src/lib/models/index.ts +++ b/src/apps/calendar/src/lib/models/index.ts @@ -3,11 +3,12 @@ import { TokenModel } from '~/libs/core' export enum LeaveStatus { AVAILABLE = 'AVAILABLE', LEAVE = 'LEAVE', - WEEKEND = 'WEEKEND', + HOLIDAY = 'HOLIDAY', WIPRO_HOLIDAY = 'WIPRO_HOLIDAY', + WEEKEND = 'WEEKEND', } -export type LeaveUpdateStatus = LeaveStatus.AVAILABLE | LeaveStatus.LEAVE +export type LeaveUpdateStatus = LeaveStatus.AVAILABLE | LeaveStatus.LEAVE | LeaveStatus.HOLIDAY export interface LeaveDate { date: string @@ -21,7 +22,7 @@ export interface TeamLeaveDate { handle?: string firstName?: string lastName?: string - status: LeaveStatus.LEAVE | LeaveStatus.WIPRO_HOLIDAY + status: LeaveStatus.LEAVE | LeaveStatus.HOLIDAY | LeaveStatus.WIPRO_HOLIDAY }> } diff --git a/src/apps/calendar/src/lib/utils/calendar.utils.ts b/src/apps/calendar/src/lib/utils/calendar.utils.ts index b1e6fd505..b9a90153f 100644 --- a/src/apps/calendar/src/lib/utils/calendar.utils.ts +++ b/src/apps/calendar/src/lib/utils/calendar.utils.ts @@ -4,6 +4,7 @@ import { LeaveDate, LeaveStatus } from '../models' const statusColorMap: Record = { [LeaveStatus.LEAVE]: 'status-leave', + [LeaveStatus.HOLIDAY]: 'status-holiday', [LeaveStatus.WIPRO_HOLIDAY]: 'status-holiday', [LeaveStatus.WEEKEND]: 'status-weekend', [LeaveStatus.AVAILABLE]: 'status-available', @@ -11,6 +12,7 @@ const statusColorMap: Record = { const statusLabelMap: Record = { [LeaveStatus.LEAVE]: 'Leave', + [LeaveStatus.HOLIDAY]: 'Personal Holiday', [LeaveStatus.WIPRO_HOLIDAY]: 'Wipro Holiday', [LeaveStatus.WEEKEND]: 'Weekend', [LeaveStatus.AVAILABLE]: 'Available', @@ -19,6 +21,7 @@ const statusLabelMap: Record = { export const legendStatusOrder: LeaveStatus[] = [ LeaveStatus.AVAILABLE, LeaveStatus.LEAVE, + LeaveStatus.HOLIDAY, LeaveStatus.WIPRO_HOLIDAY, LeaveStatus.WEEKEND, ] diff --git a/src/apps/calendar/src/pages/personal-calendar/PersonalCalendarPage.tsx b/src/apps/calendar/src/pages/personal-calendar/PersonalCalendarPage.tsx index f0a70c87b..fe2ab14b9 100644 --- a/src/apps/calendar/src/pages/personal-calendar/PersonalCalendarPage.tsx +++ b/src/apps/calendar/src/pages/personal-calendar/PersonalCalendarPage.tsx @@ -75,6 +75,19 @@ const PersonalCalendarPage: FC = () => { } }, [loadCurrentMonth, selectedDates, updateLeaveDates]) + const handleSetAsHoliday = useCallback(async () => { + if (!selectedDates.size) return + + setActionError('') + try { + await updateLeaveDates(Array.from(selectedDates), LeaveStatus.HOLIDAY) + setSelectedDates(new Set()) + await loadCurrentMonth() + } catch { + setActionError('Unable to update leave dates. Please try again.') + } + }, [loadCurrentMonth, selectedDates, updateLeaveDates]) + const handleSetAsAvailable = useCallback(async () => { if (!selectedDates.size) return @@ -133,6 +146,14 @@ const PersonalCalendarPage: FC = () => { > Set as Leave +