* [#405] added syncToken in calendar params and fetch with sync token
* [#405] changed reload to work with sync-token
* [#405] fixup promise handling, added calendar adding and removing hanlding with refresh
* [#405] fixed event expansion calls
* [#405 & refactor] added helperfunction to get base event uid + refactored synctoken updates management
* [#405] added pMap lib to process event expansion
* [#405] added flag for no synctoken / new synctoken
- When dragging from allday slot: open normal mode with allday checked, show start date and end date
- When dragging from week/month view grid: open normal mode with allday checked, show 4 fields (start date, start time, end date, end time)
- Update DateTimeFields logic to support displaying time fields when allday=true and hasEndDateChanged=true for multiple days events
Add setHasEndDateChanged(false) to resetAllStateToDefault function to prevent stale state when:
- User creates multi-day event from grid (sets hasEndDateChanged = true)
- Closes the modal
- Opens modal again for a single-day event
This ensures hasEndDateChanged is properly reset to false when modal is closed or reset.
Fix drag and drop logic: keep allday=false when dragging from week view
- Remove setAllDay(true) when dragging multiple days from week view grid
- Keep allday=false to show time fields for week view drag scenarios
- Add comprehensive test cases for drag and drop scenarios
- Test cases cover allday slot and week view drag scenarios
- Prevent regressions with test coverage for display logic
* [#420] passed a new param to people search to customize slotprops
* Added back function lost in rebase
---------
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
- Replace default TimePicker field with custom EditableTimeField
- Allow free typing with multiple formats (HH:mm, HHmm, H, etc.)
- Show dropdown on click while maintaining typing capability
- Center-align time input text
- Add small prop support to PeopleSearch component
- Pass small prop to PeopleSearch in AttendeeSearch
- Use small prop in EventFormFields Participants field
- Use small prop in TempCalendarsInput for left sidebar
- Add separator '-' between start time and end time in normal mode
- Fix layout logic: keep single row for allday events in normal mode
- Remove auto-adjustment of start time when end time changes
- Update test case to match new behavior
- Add 150ms delay wait after time input change to ensure handler completes
- Fixes test case that was failing due to 0.1s delay in handleStartTimeChangeWithClose
- Remove label prop from all DatePicker and TimePicker components
- Add aria-label to inputProps for accessibility and testing
- Auto-close TimePicker dropdown when selecting an option
- Add 0.1s delay before calling time change handlers after closing dropdown
- Add test case to verify aria-label attributes
- Add translation key 'userDoesNotHavePublicCalendars' to all locale files (en, fr, vi, ru)
- Update ErrorSnackbar to support translation keys in error messages with params
- Update getTempCalendarsListAsync to throw error with translation key format instead of hardcoded message
- Error message now displays user-friendly translated text: '{User Name} does not have public calendars'
- Add logo click handler to navigate to current week view from any view (month, day, or week)
- Update MainTitle component to accept calendarRef and view change callbacks
- Implement handleLogoClick that changes view to week and navigates to current week
- Add comprehensive test cases for logo click behavior from all view types
Co-authored-by: Lê Nhân Phụng <lenhanphung@Phung-Mac-M4.local>
* [#337] added timezone loading from backend
* [#337] changed data structure to allow patching timezone while keeping other datetime params value
* [#337] fixed gap, event create modale sync with settings and added checkbox
* [#337] isBrowserDefaultTimezone is set to true when API return null timezone
Co-authored-by: Camille Moussu <cmoussu@linagora.com>