Commit Graph

375 Commits

Author SHA1 Message Date
lenhanphung aa9920dbbb roll back translate and add translate key 2026-01-08 11:42:10 +07:00
lenhanphung 24f8895baa Update avatar component 2026-01-08 11:41:38 +07:00
lenhanphung 462ad6d250 chore: update twake-mui dependency and use radius.lg for create event button 2026-01-08 11:41:37 +07:00
lenhanphung 5f0479e34a implement twake mui 2026-01-08 11:40:40 +07:00
Camille Moussu 9ff75056c7 [#397 bis] added participation management on event from thunderbird (#432)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-01-07 11:45:17 +01:00
Camille Moussu e59d878e6c [#419] removed duplicate adornment and ugly padding (#428)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-01-05 11:48:05 +01:00
Camille Moussu 6839353f34 [#418] improved retry logic to prevent loading loop (#427)
* [#418] improved retry logic to prevent loading loop

* [#418] added FullJitter algorithm

Co-authored-by: Benoit TELLIER <btellier@linagora.com>
2025-12-19 12:24:34 +01:00
Camille Moussu 90d6058b0f [#425] Event title modification of all day event alter event dates (#431)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-18 09:09:02 +01:00
Camille Moussu 403517e827 [#430] removed red from canceled event icon (#433) 2025-12-17 22:13:38 +01:00
lenhanphung a935d2bc43 372 drag and drop multiple days event to use normal mode instead of extended mode (#407)
- 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
2025-12-17 10:28:11 +01:00
Camille Moussu 89103b5787 [#420] passed a new param to people search to customize slotprops (#424)
* [#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>
2025-12-17 07:29:01 +01:00
Camille Moussu a28f41fab9 [#415] added keyword field highligh on empty search (#423)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-16 14:09:09 +01:00
Camille Moussu 1a60850637 [#378] addressed code rabbit out of scope comments (#422)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-16 14:06:16 +01:00
Camille Moussu c81153a119 [#523] changed search bar to work like an autocomplete (#406)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-15 22:10:17 +01:00
Benoit TELLIER f413bd832b DRY - PeopleSearch onKeyDown: handleEnterKey 2025-12-15 15:33:07 +01:00
Benoit TELLIER 071c04654e Apply @Crash comment to avoid boolean flags 2025-12-15 15:33:07 +01:00
Benoit TELLIER 2494a558a6 Address nitpicks 2025-12-15 15:33:07 +01:00
lenhanphung 627e9bf44b feat(DateTimeFields): implement free typing time input with dropdown
- 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
2025-12-15 15:33:07 +01:00
lenhanphung 12776d36a4 Add small prop to PeopleSearch components for reduced height
- 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
2025-12-15 15:33:07 +01:00
Lê Nhân Phụng 1347583e9a Update DateTimeFields: improve UI layout and adjust time change logic
- 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
2025-12-15 15:33:07 +01:00
Lê Nhân Phụng a541111f88 test: add delay wait for TimePicker handler in test case
- 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
2025-12-15 15:33:07 +01:00
Lê Nhân Phụng 8b88faffe2 feat: remove labels from date/time fields and auto-close TimePicker dropdown
- 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
2025-12-15 15:33:07 +01:00
Lê Nhân Phụng e4d3722992 feat: update TimePicker to single column with 30-minute steps 2025-12-15 15:33:07 +01:00
Lê Nhân Phụng c885d18fb5 feat(ui): update TimePicker behavior to hide icon and open on text click 2025-12-15 15:33:07 +01:00
Lê Nhân Phụng 3025672b49 feat: make date fields read only 2025-12-15 15:33:07 +01:00
Camille Moussu d68b4146d3 [#397] Consider the calendar owner as the organizer when no organizer (#416)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-12 18:00:27 +01:00
Camille Moussu 1de59f3794 [#408] added ordering priority to personnal event (#413)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-12 17:58:48 +01:00
Camille Moussu 22d674c6b5 [#4180] added support for instant event (#417)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-12 17:33:33 +01:00
lenhanphung 6161e295ce Improve: #368 error message when user has no public calendars (#412)
- 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'
2025-12-12 17:32:36 +01:00
Camille Moussu aa7d032aef [#367] added custom placeholder to people search (#411)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-11 18:56:46 +01:00
Camille Moussu f863bb8194 394 search block empty field search on enter (#401)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-11 18:35:59 +01:00
Camille Moussu a4b4f6d11c [#384] added visio join button (#403)
* [#384] added visio join button
2025-12-11 11:42:07 +01:00
Camille Moussu e8b1b72901 [#341] added show week number toggle (#399)
* [#341] added show week number toggle
2025-12-11 11:41:38 +01:00
Camille Moussu 3cb445ea79 [#340] show declined event in settings (#398)
* [#340] show declined event in settings


Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-09 11:11:20 +01:00
Camille Moussu 2f2ee369fc [#525] adopted twake-i18n (#404)
* [#525] adopted twake-i18n 

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-09 11:10:44 +01:00
lenhanphung a5093f3fc4 feat: #524 implement logo click navigation to current week view (#402)
- 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>
2025-12-09 11:08:25 +01:00
lenhanphung bd33a93040 feat: #339 Add email notification toggle setting and update tests (#387) 2025-12-08 10:54:24 +01:00
Camille Moussu 1056220719 [#339] added API calls to timezone selectors (#396)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-07 07:43:00 +01:00
Camille Moussu 7567bfbd7b [#385] added reccuring icons (#400)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-07 07:42:17 +01:00
Camille Moussu 193c1a7166 [#337] added timezone loading from backend (#386)
* [#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>
2025-12-04 15:14:43 +01:00
lenhanphung d8f5f9ae46 Restyle app grid with MUI and document app icons (#383) 2025-12-02 15:53:32 +01:00
Camille Moussu 325d33caef [#361] Improve search result page (#375)
* [#361] added back button

* [#361] greatly improved looks of results

* [#361] added popup on click

* [#361] removed classnames with \!important replaced with style in component

---------

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-02 15:26:00 +01:00
Camille Moussu 8a68280023 [#336] added logout logic to user menu (#380)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-12-02 10:07:41 +01:00
lenhanphung c408e1818f feat: #333 load language from backend configuration (#377)
* 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>
2025-12-02 10:06:11 +01:00
Benoit TELLIER 541a681e17 Add application screensot in README (#376) 2025-11-28 16:23:25 +01:00
Camille Moussu ae17ac2bd6 #12 topbar search (#371)
- 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>
2025-11-28 14:54:13 +01:00
lenhanphung 1a85afc57d UI: #334 add config page language setting (#374)
* 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>
2025-11-28 14:25:06 +01:00
lenhanphung 6fcf22a1cf feat: implement skeleton layout for settings and search pages (#366)
Co-authored-by: Lê Nhân Phụng <lenhanphung@Phung-Mac-M4.local>
2025-11-27 11:38:54 +01:00
Camille Moussu d71f941fe4 [#350] improved randomized color generation (#359)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-11-27 11:09:40 +01:00
Benoit TELLIER 65c26f7627 [#318] implement SEQUENCE field for ICS events (#362)
- Add SEQUENCE property to ICS generation (starts at 1 for new events)
- Increment SEQUENCE on event updates (modal, drag & drop, resize)
- Handle SEQUENCE independently for recurring event instances
- Add comprehensive tests for SEQUENCE generation and incrementation
- Ensure proper event ordering for remote calendar participants

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-27 08:58:31 +01:00