Commit Graph

128 Commits

Author SHA1 Message Date
Camille Moussu b481eefed0 [#769] updated regex to properly handle <> brackets (#792) 2026-04-20 12:33:36 +02:00
Camille Moussu b98a78abeb 709 adapt creation modal to mobile view (#744)
* [#709] adapt creation modal to mobile view
* [#709] extracted time and date pickers to relevant subcomponents
* [#709] add bottom sheet to creation modal
* [#709] set autocomplete to off in title and location
* [#709] remove autofocus in event update modal
2026-04-13 09:19:54 +02:00
lethemanh ae620f96cd #750 auto close date picker after select a date on mobile 2026-04-09 15:19:04 +07:00
lethemanh e29cd8dc42 #683 quick search on mobile (#749)
Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-08 13:02:08 +02:00
lethemanh aa96a39b28 #679 day view without sidebar on mobile - look only 2026-04-07 15:08:03 +07:00
Camille Moussu 4e57f6b342 [#668] Tablet view (#716)
* draft for tablet view
* adapt sidebar to tablet view
* split menubar to handle tablet and desktop separatly
* split sidebar to handle tablet and desktop separatly
* prettier day navigationin tablet view
* added missing translations
* coderabbit comments
* fix UI of view switcher on tablet, remove hard text
* fix style of selected view option
* fix wrong I18n key
* extracted menubar recurring components to own files
* adjust test case of calendar component
* refactor function change calendar view

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-03 08:49:37 +02:00
lethemanh cadfa70e60 #708 apply strictier linting rules (#717)
* #708 apply strictier linting rules and fix simple eslint bugs

* #708 fix eslint errors relate to promise

* #708 fix eslint import/no-extraneous-dependencies

* #708 fix eslint errors of react-hook

* #708 enable eslint check for typescript

---------

Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-01 17:15:10 +02:00
Benoit TELLIER c9710d7651 feat: parse multiple attendees from pasted text (#723) (#731)
When pasting text containing multiple email addresses into the attendee
input, the component now splits by comma, semicolon, newline, or space
and adds each valid email as an individual attendee chip. Duplicates
are silently skipped. Any invalid chunks remain in the input field
with an error message so the user can correct them manually.

Co-authored-by: JacobiusMakes <jgalperin98@gmail.com>
2026-03-30 13:23:07 +02:00
lethemanh 43424607d4 #602 adminstrator can manage calendar resources (#703)
Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-03-25 08:28:24 +01:00
Camille Moussu 2ba92ed194 [#632] fix to adapt headers to proper selected timezone (#674)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-03-20 09:27:54 +01:00
Camille Moussu f41c3cbd8d [refactor] extracted event display preview components in preparation for #625 2026-03-17 09:34:00 +01:00
lethemanh 0dd7f1b2fd #599 ability to register to a resource calendar (#631)
Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-03-17 09:33:15 +01:00
Camille Moussu 57f9693892 [#595] Load less data on call to get calendar details (#608) 2026-03-14 06:38:38 +01:00
Camille Moussu 4d16d19132 [#596] displays all calendar from user in search even if one of them is present in the list of shared/delegated calendars (#604)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-03-03 21:12:45 +01:00
Camille Moussu f0e63e07a6 [#555] untoggling calendars doesnt collapse anything anymore (#594) 2026-03-03 16:27:23 +01:00
Camille Moussu 3bd43c9935 [#572] removed dot for events (#590) 2026-03-02 11:15:46 +01:00
Camille Moussu 6874b9ee70 [#565] added move for delegated events, deletes old and put new (#578)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-02-25 15:51:13 +01:00
Camille Moussu 67898fa218 [fix] removed added calendars old naming convention (#567)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-02-25 15:50:43 +01:00
Camille Moussu cfb2b59584 [DELEGATION] Edit attendance and events, delete event for someone (#553)
* [#523] added way to manage attendance for delegated calendars

* [DELEGATION] #523 & #524 changed eventURL calculation for delegated events to have the rigth one

* [#524] added drag and drop authorisation to delegated event

* [#524] added tests

* [#524] support for the permission access

* [#524] no edit when delegated event is not public
2026-02-19 09:50:29 +01:00
Camille Moussu f8e159a618 [#533] updated localisation of field (#536)
* [#533] updated localisation of field + removed empty display for repetition

* [#533 & #545] fixed bug date in repetition field & set limit to repetition end to not be before start date
2026-02-16 11:11:59 +01:00
lenhanphung 53f763d6eb UI/update recurring event section (#544)
* Update global recurring event style

* #538 update date selector consistance

* update test cases
2026-02-13 09:34:33 +01:00
Camille Moussu d6e464afad [#421] added eslint check to CI (#534)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-02-10 10:41:37 +01:00
lenhanphung fe8e19686d Merge pull request #504 from linagora/UI/update-header-bar
UI/update header bar
2026-02-05 19:18:30 +07:00
lenhanphung 41c839f38b update header bar 2026-02-05 17:20:00 +07:00
Camille Moussu b142eb4e03 [#487] fixed recurring event input glitch (#505) 2026-02-05 11:10:20 +01:00
lenhanphung 201f9c722b Use @linagora/twake-mui 1.1.6 from registry 2026-02-05 17:08:51 +07:00
lenhanphung 5ae838c425 UI/update sidebar (#480)
* update minicalendar

* update left sidebar

* chore: update twake-mui to version 1.1.4

- Update @linagora/twake-mui from local file to npm package 1.1.4
- Add margin to TempCalendarsInput section in sidebar
- Remove margin from PeopleSearch component (moved to parent)

* Changed wording on my calendars and event creation button

---------

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2026-02-02 10:02:23 +01:00
Camille Moussu 1fc85e141e [#475] fixed calendars selection persistence (#479) 2026-01-26 11:14:42 +01:00
Camille Moussu 23d50f250d Refactor imports (#470) 2026-01-20 17:33:30 +01:00
lenhanphung 8b3afc1737 - Replace avatar image from API with gradient avatar from twake-mui (#457)
- Display 2-letter initials (e.g., "JD" for "John Doe") instead of single letter
- Add getInitials helper function in avatarUtils for reusability
- Update Avatar in PeopleSearch, CalendarSearch, and Menubar components
- Remove avatarUrl prop usage across all Avatar components
2026-01-13 14:44:42 +01:00
Camille Moussu 478a0e0eb0 405 back reload token with synctokens (#436)
* [#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
2026-01-13 11:06:34 +01:00
lenhanphung aa9920dbbb roll back translate and add translate key 2026-01-08 11:42:10 +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
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
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
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 3025672b49 feat: make date fields read only 2025-12-15 15:33:07 +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 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
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 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
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
Camille Moussu d8c931e02e [#317] improved event error management + test (#358)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-11-25 15:46:30 +01:00
lenhanphung 9151ff5563 fix: preserve form data on API error and fix test cases (#338)
- Add temp storage utility (eventFormTempStorage.ts) to save/restore form data
- Implement error handling: close modal immediately, reopen on API failure with saved data
- Add event listeners in Calendar.tsx and EventDisplayPreview.tsx to reopen modals on error
- Fix calendar change logic in EventUpdateModal: use oldCalendar for update before move
- Update all test mocks to support .unwrap() method for Redux thunks
- Add sessionStorage.clear() in test beforeEach hooks
- Fix test timing issues with act() wrappers and increased timeouts
- Mock putEventAsync in TempUpdate test to ensure updateTempCalendar is called

- Fix update modal not reopening when API fails for recurring events (solo/all)
- Move update modal reopen logic from EventDisplayPreview to Calendar.tsx
- Use sessionStorage to persist update modal info across component unmounts
- Handle typeOfAction matching for recurring events (undefined vs solo/all)
- Fix error handling in updateEventInstanceAsync and updateSeriesAsync
- Ensure all API failures properly dispatch eventModalError event
2025-11-25 15:30:58 +01:00
Camille Moussu 25078c783e [#285] added duration enforcement to date and time in dateTimeFields (#343)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-11-25 11:16:45 +01:00
Camille Moussu 531d29f2ce [#313] removed withRights (#354)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-11-24 21:32:15 +01:00