Skip to content

feat(chat): Implement full emoji picker with search and categories - #308

Open
Sayan-pixel wants to merge 3 commits into
Vault-Web:mainfrom
Sayan-pixel:feature/full-emoji-picker
Open

feat(chat): Implement full emoji picker with search and categories#308
Sayan-pixel wants to merge 3 commits into
Vault-Web:mainfrom
Sayan-pixel:feature/full-emoji-picker

Conversation

@Sayan-pixel

Copy link
Copy Markdown
Contributor

Summary

Replaced the hardcoded, limited emoji list in the chat composer with a full-featured emoji picker using emoji-picker-element.

  • Integrates the full standard system emoji dataset.
  • Adds search functionality (by name or keyword).
  • Adds category tabs (Smileys, People, Nature, etc.).
  • Adds a "Recently used" section that persists locally.
  • Implements a click-outside handler to cleanly close the popover.
  • Implements an accessibility enhancement so category tabs switch automatically when navigating via keyboard ArrowLeft / ArrowRight.

Linked issue

Closes #303

How to test

  1. Open a chat dialog and click the emoji (smile) icon in the composer.
  2. Verify the full emoji picker opens and renders correctly.
  3. Type a query in the search bar and verify the results filter correctly.
  4. Use the ArrowLeft and ArrowRight keys to navigate the category tabs and verify the categories switch instantly.
  5. Click an emoji (or press Enter) and verify it is inserted at the exact cursor position in the composer input field.
  6. Click anywhere outside the popover (e.g., on the chat messages) and verify the picker closes automatically.

Notes / Risk

  • Bundle Size: The impact on bundle size is extremely minimal because emoji-picker-element relies entirely on native system fonts rather than shipping large sprite sheets.
  • Dependencies: Added emoji-picker-element as a runtime dependency.

Sayan added 2 commits August 3, 2026 00:25
…ixes Vault-Web#303)

- Replace hardcoded emoji list with emoji-picker-element.
- Support native system emojis for smaller bundle size.
- Include search, categories, and recently used functionality.
- Implement click-outside handler to close the popover.
- Improve keyboard accessibility for category tab navigation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Not ready to approve

There are verified runtime/behavioral issues in the new emoji picker event handling (target vs currentTarget, weak typing/guarding) and an unexpected root-level lockfile that likely shouldn’t be committed.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

This PR upgrades the private chat composer’s emoji UX by replacing the small hardcoded emoji grid with the emoji-picker-element web component to provide a full emoji set with search, categories, and “recently used” behavior (handled by the component).

Changes:

  • Replaced the in-template emoji grid with <emoji-picker> and wired selection into the existing caret insertion logic.
  • Added keyboard handling for category tab switching and a document click-outside handler to close the popover.
  • Added emoji-picker-element as a runtime dependency and updated styles to theme the picker.
File summaries
File Description
package-lock.json Adds a new root lockfile (currently empty/likely accidental).
frontend/src/app/pages/private-chat-dialog/private-chat-dialog.component.ts Integrates emoji-picker-element, updates insertion and popover closing behavior, adds keyboard/click-outside handlers.
frontend/src/app/pages/private-chat-dialog/private-chat-dialog.component.html Replaces hardcoded emoji buttons with <emoji-picker> and updates focus handling.
frontend/src/app/pages/private-chat-dialog/private-chat-dialog.component.scss Styles the <emoji-picker> web component and adjusts responsive layout.
frontend/src/app/pages/private-chat-dialog/chat-reactions.ts Removes the hardcoded CHAT_EMOJIS list.
frontend/package.json Adds emoji-picker-element dependency.
frontend/package-lock.json Locks emoji-picker-element dependency.
Review details

Files not reviewed (1)

  • frontend/package-lock.json: Generated file
  • Files reviewed: 5/7 changed files
  • Comments generated: 3
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

@DenizAltunkapan

Copy link
Copy Markdown
Member

@Sayan-pixel please apply copilots requested changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Full emoji picker with search and categories

3 participants