* [#490 & #489] Removed duplicated api call to get event data
* [#490] removed arbitrary timezone fallback to UTC/ETC & updated exdate formating
* [#490] updated test and fixed eventdiff utils to properly handle dates
Deduplicate resolveTimezone, resolveTimezoneId, convertEventDateTimeToISO,
and getTimezoneOffset into a single canonical module, removing copies from
EventApi, eventUtils, TimezoneSelector, EventUpdateModal, and calendarUtils.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Update event modal extend mode UI consistency
- Fix label font-size and fontWeight in extended mode to match normal mode
- Replace Lock icon with LockOutline icon for visibility toggle buttons
- Add displayEmpty prop to notification select to show default value
* Replace video icon with outlined variant for consistency
- Update VideocamIcon to VideocamOutlinedIcon in event form fields
- Update VideocamIcon to VideocamOutlinedIcon in event preview modal
* [#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
- 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 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'
* [#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>
* feat: #333 load language from backend configuration
* feat(settings): sync language with user configs api
* Update __test__/features/Settings/SettingsPage.test.tsx
Co-authored-by: Lê Nhân Phụng <lenhanphung@Phung-Mac-M4.local>
Co-authored-by: Benoit TELLIER <btellier@linagora.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
- added search in topbar
- added skeleton search results page
- added tests
- set personal calendars as default search in and allow to select personal and shared as a search in option
---------
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
* UI: #334 add config page language setting
* temporary remove logout button
* Unify fullscreen view class for dialog expanded and settings view
- Replace dialog-expanded and settings-view with single fullscreen-view class
- Update ResponsiveDialog to use fullscreen-view class
- Update CalendarLayout to use fullscreen-view class for settings view
- Consolidate CSS rules in Menubar.styl to use fullscreen-view
- Update test cases to use new class name
---------
Co-authored-by: Lê Nhân Phụng <lenhanphung@Phung-Mac-M4.local>