chatwoot/app/javascript/dashboard/components/widgets
Sivin Varghese 70a65e2c34
fix: Prevent mentions menu from triggering on reply mode change (#11264)
# Pull Request Template

## Description

**Issue:** When typing "@" in reply mode and then switching to private
note mode, the user mentions menu remains visible and cannot be
dismissed.

**Cause:** The Prose Mirror suggestion plugin for "@" was active in both
reply modes (normal and private). When triggered in normal reply mode
and then switching to private note mode, the menu would remain open and
couldn't be dismissed.

**Solution**
```
createSuggestionPlugin({
  trigger: '@',
  showMenu: showUserMentions,
  searchTerm: mentionSearchKey,
  isAllowed: () => props.isPrivate, // Only allow @ mentions in private note mode
}),
```
1. By setting `isAllowed: () => props.isPrivate`, the @ mention trigger
will only activate when in private note mode
2. In normal reply mode, the plugin won't activate at all since
`isAllowed` returns false
3. This prevents the menu from being triggered in the wrong context and
fix the scenario where the menu gets stuck.

## Type of change

- [x] Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?

### Loom video

**Before**

https://www.loom.com/share/5333f0c6498d4a9ea4d220b1de1b608c?sid=1425f24f-2c6f-4ff5-aab3-23c3203d2e05

**After**

https://www.loom.com/share/9f183c76d6a94b618a7c2aaed280b780?sid=19ef08b8-2b70-434b-ad5a-267410212e11

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [ ] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
2025-04-09 15:25:46 +05:30
..
conversation fix: Prevent mentions menu from triggering on reply mode change (#11264) 2025-04-09 15:25:46 +05:30
DashboardApp fix: Use addEventListener instead of onmessage to listen to chatwoot-dashboard-app:fetch-info (#10342) 2024-10-28 20:43:47 -07:00
FilterInput chore: Update buttons in conversation screens(#11132) 2025-03-21 14:47:28 +05:30
forms chore: Update buttons in dashboard (#11145) 2025-03-31 17:21:32 -07:00
mentions feat: update colors for v4 (#10660) 2025-01-15 17:13:03 +05:30
modal chore: Update buttons in conversation screens - 2 (#11134) 2025-03-21 21:54:54 +05:30
WootWriter fix: Prevent mentions menu from triggering on reply mode change (#11264) 2025-04-09 15:25:46 +05:30
AIAssistanceButton.vue chore: Update reply editor design (#10575) 2025-01-08 17:49:53 +05:30
AIAssistanceCTAButton.vue chore: Update reply editor design (#10575) 2025-01-08 17:49:53 +05:30
AIAssistanceModal.vue chore: Update buttons in conversation screens(#11132) 2025-03-21 14:47:28 +05:30
AICTAModal.vue chore: Update buttons in conversation screens(#11132) 2025-03-21 14:47:28 +05:30
AILoader.vue feat: Eslint rules (#9839) 2024-08-05 14:02:16 +05:30
AttachmentsPreview.vue chore: Update buttons in conversation screens(#11132) 2025-03-21 14:47:28 +05:30
AutomationActionInput.vue chore: Update buttons in conversation screens(#11132) 2025-03-21 14:47:28 +05:30
AutomationActionTeamMessageInput.vue chore: Update styles in settings pages (#11070) 2025-03-18 14:40:02 -07:00
AutomationFileInput.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
Avatar.vue feat: Eslint rules (#9839) 2024-08-05 14:02:16 +05:30
BackButton.vue chore: Update buttons in integrations page (#11120) 2025-03-20 21:15:47 +05:30
ChannelItem.vue feat: Instagram Inbox using Instagram Business Login (#11054) 2025-04-08 10:47:41 +05:30
ChatTypeTabs.vue feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
ColorPicker.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
EmptyState.vue chore: Update styles in settings pages (#11070) 2025-03-18 14:40:02 -07:00
FeatureToggle.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
InboxName.vue feat: update colors for v4 (#10660) 2025-01-15 17:13:03 +05:30
LoadingState.vue feat: Eslint rules (#9839) 2024-08-05 14:02:16 +05:30
SettingIntroBanner.vue chore: Update styles in settings pages (#11070) 2025-03-18 14:40:02 -07:00
ShowMore.vue feat: Vite + vue 3 💚 (#10047) 2024-10-02 00:36:30 -07:00
TableFooter.vue style: apply fixes for eslint issues [cw-3590] (#10210) 2024-10-03 15:02:12 +05:30
TableFooterPagination.vue chore: Update buttons in dashboard (#11145) 2025-03-31 17:21:32 -07:00
TableFooterResults.vue feat: Eslint rules (#9839) 2024-08-05 14:02:16 +05:30
TableHeaderCell.vue feat: Update design for report pages (#10506) 2024-11-27 18:10:15 +08:00
Thumbnail.spec.js feat: Improve image loading for thumbnails (#5823) 2022-11-08 21:05:13 -08:00
Thumbnail.vue feat: Don't hide thumbnail on hover (#10935) 2025-02-21 13:50:30 -08:00
ThumbnailGroup.vue feat: Eslint rules (#9839) 2024-08-05 14:02:16 +05:30
UserAvatarWithName.vue feat: Update design for report pages (#10506) 2024-11-27 18:10:15 +08:00
VideoCallButton.vue chore: Update reply editor design (#10575) 2025-01-08 17:49:53 +05:30