Skip to content

feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88777 - EXO-88830 - #2022

Merged
Jihed525 merged 6 commits into
developfrom
backport/2007-develop
Jul 31, 2026
Merged

feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88777 - EXO-88830#2022
Jihed525 merged 6 commits into
developfrom
backport/2007-develop

Conversation

@Jihed525

@Jihed525 Jihed525 commented Jul 30, 2026

Copy link
Copy Markdown
Member

What

Backport onto develop of a validated stack of PRs originally merged into feature/ai-contribution:

  1. EXO-88721: Revamp attachment drive-explorer picker onto /v1/documents API #2007EXO-88721: Revamp attachment drive-explorer picker onto /v1/documents API. Rewrites the level-2 "Use existing uploads" picker off the legacy ECMS/WCM XML drive listing onto the modern /v1/documents JSON API (two-source model: My Documents + My Spaces; reuses the mobile folder tree and breadcrumb; server-side search/pagination).
  2. feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009EXO-88732: Revamp attachments drawer UX (level 1) + dedicated create-document drawer. Follow-on UI revamp of the level-1 "Attach files" drawer (hero drag-and-drop / upload / documents / new-document flows) and a new doc-type selection drawer, built on top of EXO-88721: Revamp attachment drive-explorer picker onto /v1/documents API #2007's picker.
  3. feat: Drive '+ New' menu revamp + shared Add-a-document drawer - EXO-88752 #2010EXO-88752: Drive "+ New" menu — Upload item + shared "Add a document" drawer. Reworks the Drive "+ New" menu to reuse the shared Add-a-document drawer from feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009, and renames Import to "Mass Import".
  4. fix: align the attachments list drawer rows (info/detach icons) - EXO-88777 #2014 + fix: center attachment rows so the detach icon aligns (task drawer & others) - EXO-88777 #2019EXO-88777: Attachment row alignment fix (info/detach icon), two-part: fix: align the attachments list drawer rows (info/detach icons) - EXO-88777 #2014 scopes the fix to the "View all attachments" list drawer, fix: center attachment rows so the detach icon aligns (task drawer & others) - EXO-88777 #2019 extends it to every surface using the shared AttachmentItem component (task drawer, activities, notes, news). fix: center attachment rows so the detach icon aligns (task drawer & others) - EXO-88777 #2019 depends on the uploadFailed state class feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009 introduced, so it only applies with feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009 already present.
  5. feat: Reusable Documents folder picker (+ remove add-folder from the destination picker) - EXO-88830 #2018EXO-88830: Reusable Documents folder picker (+ removes add-folder from the destination picker). Standalone folder picker built on EXO-88721: Revamp attachment drive-explorer picker onto /v1/documents API #2007/feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009's revamped explorer, consumed by email-connector's "Save in Documents" action (email-connector#219). Cherry-picks cleanly on top of EXO-88721: Revamp attachment drive-explorer picker onto /v1/documents API #2007/feat: revamp attachments drawer UX and add dedicated create-document drawer - EXO-88732 #2009 — it conflicted when tried directly against develop since it stacks on the explorer revamp.

All 6 cherry-picked cleanly (-x), no conflicts once applied in dependency order.

Note

EXO-88755 (document templates, #2011) and EXO-88766 (template category filter/search, #2012) were dropped from this PR — #2012 depends on #2011's templates feature, so both were removed together, pending separate validation.

Test

  • npm run build (documents-webapp) → webpack compiles cleanly, 0 errors (147 pre-existing lint warnings, none introduced by these commits)
  • Frontend-only change (no Java/service changes)

🤖 Generated with Claude Code

bmestrallet and others added 2 commits July 30, 2026 14:04
… API (#2007)

Rewrite the level-2 "Use existing uploads" picker
(AttachmentsDriveExplorerDrawer) off the legacy ECMS/WCM XML drive
listing onto the modern documents-service /v1/documents JSON API.

- Two-source model: My Documents (userIdentityId) + My Spaces
  (space.identity.id); cloud drives dropped.
- Reuse the mobile FolderTreeViewDrawer for drive/space/folder
  navigation; the panel icon opens it and it auto-expands to the
  current folder (fix a Vuetify v-treeview buildTree crash caused by
  backend children:null on empty leaf folders).
- Reuse documents-breadcrumb with a new global mobile branch
  (fa-angle-left to parent + current folder / drive name).
- Simple list rows (checkbox + icon + name); exo-drawer use-filter
  header search driving server-side query; server-side pagination.
- Reuse Documents list cells via a $root shim on the attachment app.
- Preserve the level-1 emit contract and folder CRUD.
- Scope two leaking documents.css rules (.v-alert__content, .py-10px)
  under .documents-application to avoid bleeding into other portlets.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 015a1ea)
…drawer - EXO-88732 (#2009)

Level-1 "Attach files" drawer:
- Empty state: hero drop-zone + secondary tiles (Select from Documents / Create
  a new document); populated state: compact add bar (Upload / Documents / New)
  keeping room for the list.
- Full-drawer drag-and-drop overlay (bound to the drawer body, since exo-drawer
  teleports its panel out of the component root), remove-all with confirm,
  retry-on-failed-upload, and de-dup of the rendered list by (id || uploadId).
- Richer attachment rows: thumbnails, transparent source + location chips,
  and a remove/detach control that shows in both composer and entity-bound modes.

Create document is now a dedicated nested "Add a document" drawer (replacing the
popup menu):
- Doc-type selectable cards (Document/Spreadsheet/Presentation) with hover and a
  primary-ring selected state, keyboard-accessible (role/tabindex/Enter-Space).
- Inline title field + a footer Cancel/Create (Create disabled until a type is
  picked and the title is valid); reuses the existing create / 409 / OnlyOffice
  editor-tab logic; returns to the populated level-1 list on success.
- "Or start from a template" separator + a Templates placeholder empty-state
  (scaffold for a future templates backend).

Level-2 drive picker:
- Explicit back arrow returning to level-1.
- Ship the breadcrumb root label keys in the attachments bundle so they resolve
  on host pages (notes/task/news editors) that do not load the Documents bundle.

UI polish: shadow + light-grey tile hover (kept border), larger top margin, and
FA5-safe icons throughout.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 34d6107)
@Jihed525
Jihed525 requested a review from ahamdi July 30, 2026 13:06
@github-actions github-actions Bot added the partialCIBuild Perform Partial CI Build label Jul 30, 2026
@Jihed525 Jihed525 changed the title EXO-88721 / EXO-88732: Revamp attachment drive-explorer picker + attachments drawer UX onto develop feat: Revamp attachment drive-explorer picker + attachments drawer UX onto develop - EXO-88721 - EXO-88732 Jul 30, 2026
…er - EXO-88752 (#2010)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit b9c589a)
@Jihed525 Jihed525 changed the title feat: Revamp attachment drive-explorer picker + attachments drawer UX onto develop - EXO-88721 - EXO-88732 feat: Revamp attachment picker, drawer UX & document templates onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88755 - EXO-88766 Jul 30, 2026
@Jihed525
Jihed525 force-pushed the backport/2007-develop branch from 9fc3727 to 82fdd40 Compare July 30, 2026 13:22
@Jihed525 Jihed525 changed the title feat: Revamp attachment picker, drawer UX & document templates onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88755 - EXO-88766 feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 Jul 30, 2026
bmestrallet and others added 2 commits July 30, 2026 14:28
…-88777 (#2014)

The EXO-88732 revamp styled only the picker (.attachmentsAppDrawer); the 'View
all attachments' list drawer (.attachmentsListDrawer) kept raw Vuetify — its rows
had no right gutter (info/detach icons hugging the panel edge + scrollbar) and
align-items:normal (icons not vertically centered). Add a scoped .attachmentsListDrawer
block: 20px right gutter on .uploadedFilesItems, align-items:center on the row, and
zeroed v-list-item__action margins. Scoped so the picker and other consumers are
untouched.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit b8d00d6)
…2019)

The attachment rows shown in the task drawer (and every other place the shared
attachment list appears — activities, notes, news) render the detach/info icons
aligned to the top of the row instead of vertically centered against the two-line
title + size block.

Cause: the row root .attachment.d-flex declares no vertical alignment, so its three
columns — thumbnail, the title/size content, and the action icons — top-align.
EXO-88777 (#2014) fixed the same thing but only via a LESS rule scoped to
.attachmentsListDrawer, so the inline "View all attachments" list rendered in the
task drawer, which is not that drawer, kept the misalignment.

Fix it at the source: add align-center to the row in AttachmentItem.vue, so every
surface centers its rows. The conflict-actions block is a sibling of the row, not a
child, so the failed/conflict layouts are unaffected. #2014's drawer LESS is left in
place (harmless; the right-gutter and action-margin parts are drawer-specific).

Verified that the deployed bundle rendered "attachment d-flex" without the class, and
that adding align-center centers the icons; a full local WAR build was not possible
offline (npm install needs network), so the built-bundle capture was done by patching
the class string in the deployed bundle, which is exactly what this source change
compiles to.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 4ced318)
@Jihed525 Jihed525 changed the title feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88777 Jul 30, 2026
…destination picker) - EXO-88830 (#2018)

* feat: Reusable standalone Documents folder picker on the revamped drive explorer - EXO-88830

Two-part module: a tiny site-wide bootstrap (DocumentsFolderPickerQuickActionExtension,
QuickActionsGrp) listening for open-documents-folder-picker, and a lazily required
SHARED/DocumentsFolderPickerApp that mounts JUST the existing revamped
attachments-drive-explorer-drawer on its own small root, replicating the attachment
app's $root shim. On confirm it publishes documents-folder-picker-selected with BOTH
the /v1/documents folder id (breadcrumb tail) and the legacy drive + relative path;
closing without picking publishes documents-folder-picker-cancelled. The compose/staging
attachment flow and its $root events are untouched; there is still exactly one
explorer implementation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: Clean create-folder button and inline validate/cancel on the drive explorer folder input - EXO-88830

The create-folder header control was a legacy bordered <a> box misaligned with
the breadcrumb row; it is now the same v-btn/v-icon markup as the drawer's
other header icons. The inline new-folder / rename input was a bare <input>
with no visible confirm/cancel: it now mirrors the Documents app inline name
edit (DocumentsFileEditNameCell) — a dense outlined field with appended
validate (check) and cancel (times) icons — while keeping Enter/Esc and the
existing folder CRUD calls unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat: Remove the add-folder feature from the drive-explorer picker - EXO-88830

The inline create-folder affordance (header button + inline new-folder
input) was introduced into the destination-picker with the July-22
drive-explorer revamp (EXO-88721). It is removed here: the picker's job
is to choose an existing destination, and the create-folder UI is
unwanted. Only the create path is removed — folder rename/delete via the
folder-actions menu is untouched.

Removed: the add-folder header button, the inline new-folder input row,
the creatingNewFolder/newFolderName state, and addNewFolder/
createNewFolder/cancelCreatingNewFolder. The destination-selection and
/v1/documents navigation are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: No phantom "Load more" in the folders-only destination picker - EXO-88830

In destination-picker mode the list shows only folders, but hasMore was
computed from the mixed folder+file page, so a folder holding more than a
page of files kept offering a "Load more" that revealed no new folder. The
server returns folders before files, so once a fetched page contains a file
every folder is already loaded — hasMore is now false in that case.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 5299d4c)
@Jihed525 Jihed525 changed the title feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88777 feat: Revamp attachment picker & drawer UX onto develop - EXO-88721 - EXO-88732 - EXO-88752 - EXO-88777 - EXO-88830 Jul 30, 2026
@Jihed525
Jihed525 merged commit 635cf45 into develop Jul 31, 2026
4 of 5 checks passed
@Jihed525
Jihed525 deleted the backport/2007-develop branch July 31, 2026 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

partialCIBuild Perform Partial CI Build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants