zulip/web/tests
Maneesh Shukla 0eea85446b tooltips: Group tooltips for a smooth transition.
This commit introduces the use of createSingleton from the Tippy.js
library to group the tooltips of compose box formatting buttons. The
main benefit is that the hover delay only applies when you move the
cursor into the group for the first time — after that, tooltips show up
instantly as you move between buttons. It makes the whole experience
feel a lot smoother.

We store the singleton instance in a variable to avoid creating multiple
instances unnecessarily. Before initializing a new singleton, we destroy
the previous one to prevent memory leaks and ensure correct behavior.

Previously, each formatting button had its own independent tooltip with
separate delays, which made the experience feel sluggish and disjointed
when hovering across buttons.

Now, by sharing a delay timer across the grouped tooltips, the
transition feels more natural.

Fixes: #24825.

Co-authored-by: Sayam Samal <sayam@zulip.com>
2025-07-10 17:20:41 -07:00
..
lib streams: Add can_resolve_topics_group setting. 2025-07-08 16:53:43 -07:00
templates popovers: Add hotkey hints support via a new handlebar template. 2024-04-11 15:57:24 -07:00
activity.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
alert_words_ui.test.cjs alert_words: Update label in the alert words removal status banner. 2025-04-25 12:26:02 -07:00
alert_words.test.cjs people: Remove is_current_user legacy helper. 2025-03-05 15:56:57 -08:00
blueslip_stacktrace.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
bot_data.test.cjs test_bot_data: Make test cases more accurate. 2025-07-01 13:25:00 -07:00
browser_history.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
buddy_data.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
buddy_list.test.cjs people: Optimize is_person_active. 2025-06-06 10:53:03 -07:00
channel_folders.test.cjs channel_folders: Let a new channel in a folder be created through a hash. 2025-06-27 17:09:08 -07:00
channel.test.cjs channel: Remove PATCH as POST workaround. 2025-05-05 12:13:00 -07:00
clipboard_handler.test.cjs people: Defer loading user data during app load. 2025-05-20 13:55:48 -07:00
color_data.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
common.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
components.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
compose_actions.test.cjs tooltips: Group tooltips for a smooth transition. 2025-07-10 17:20:41 -07:00
compose_closed_ui.test.cjs compose_closed_ui: Fix incorrect tooltip for new conversation btn. 2025-07-09 12:54:47 -07:00
compose_fade.test.cjs stream_settings: Add new topics_policy setting. 2025-06-17 17:05:58 -07:00
compose_paste.test.cjs compose_paste: Paste as image for LibreOffice Calc content. 2025-07-09 09:52:52 -07:00
compose_pm_pill.test.cjs user_pill: Use user_id to get user info instead of email. 2025-06-18 11:27:59 -07:00
compose_state.test.cjs compose: Prefer using recipient_ids over recipient_emails. 2025-05-16 10:51:29 -07:00
compose_ui.test.cjs stream_settings: Add new topics_policy setting. 2025-06-17 17:05:58 -07:00
compose_validate.test.cjs stream_setting: Add setting for who can move messages out of channel. 2025-06-24 16:52:53 -07:00
compose_video.test.cjs compose_reply_label: Show realm_empty_topic_display_name for topic="". 2025-01-14 13:52:55 -08:00
compose.test.cjs compose: Rename functions to reflect attention level. 2025-06-20 15:54:59 -07:00
composebox_typeahead.test.cjs typeahead: Rename highlighter_html to item_html. 2025-07-03 14:44:13 -07:00
conversation_participants.test.cjs people: Optimize is_person_active. 2025-06-06 10:53:03 -07:00
demo_organizations.test.cjs demo-orgs: Move helper function to get days remaining until deletion. 2025-04-29 12:25:28 -07:00
deprecated_feature_notice.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
dispatch_subs.test.cjs message_view: Live update on losing access to a stream. 2025-04-29 09:46:19 -07:00
dispatch.test.cjs overlays: Add overlay to display scheduled reminders. 2025-07-02 13:02:45 -07:00
drafts.test.cjs drafts: Use library functions in test. 2025-06-19 10:50:21 -07:00
echo.test.cjs people: Defer loading user data during app load. 2025-05-20 13:55:48 -07:00
emoji_picker.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
emoji.test.cjs emoji: Remap ':smile' emoji and update the settings UI. 2025-04-07 17:34:52 -07:00
example1.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
example2.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
example3.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
example4.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
example5.test.cjs message_list: Fix message list missing messages. 2024-12-18 10:21:48 -08:00
example6.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
example7.test.cjs unread_ops: Avoid jQuery sizzle extension :visible. 2025-05-18 16:22:15 -07:00
example8.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
fenced_code.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
fetch_status.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
filter.test.cjs search: Update description string for mentions. 2025-07-08 10:02:34 -07:00
fold_dict.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
gear_menu_util.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
hash_util.test.cjs stream_data: Fix parsing of slugs for inaccessible channels. 2025-02-05 14:01:11 -08:00
hashchange.test.cjs hash: Fix logic for handling web public narrows. 2025-03-11 12:43:02 -07:00
hotkey.test.cjs overlays: Add overlay to display scheduled reminders. 2025-07-02 13:02:45 -07:00
i18n.test.cjs node test runner: Prevent Handlebars quirks. 2025-01-07 09:43:33 -08:00
input_pill.test.cjs input_pill: Add disabled flag to make a pill disabled. 2025-01-29 12:36:10 -08:00
internal_url.test.cjs inbox: Show inbox channel view based on user setting. 2025-05-09 15:13:56 -07:00
keydown_util.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
lazy_set.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
left_sidebar_navigation_area.test.cjs overlays: Add overlay to display scheduled reminders. 2025-07-02 13:02:45 -07:00
linkifiers.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
list_cursor.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
list_widget.test.cjs recent_conversations: Improve sorting behavior. 2025-03-11 10:48:31 -07:00
markdown_parse.test.cjs emoji: Remap ':smile' emoji and update the settings UI. 2025-04-07 17:34:52 -07:00
markdown.test.cjs hash_util: Set channel URL based on user setting. 2025-05-09 15:13:56 -07:00
message_edit.test.cjs stream_settings: Add new disable_topics option to topics_policy. 2025-07-09 14:25:53 -07:00
message_events.test.cjs settings: Add frontend to change allow_edit_history to integer field. 2025-02-25 18:18:23 -08:00
message_flags.test.cjs web: Add parameters to API requests for empty topic name support. 2025-01-10 14:32:55 -08:00
message_list_data.test.cjs message_list: Fix message list missing messages. 2024-12-18 10:21:48 -08:00
message_list_view.test.cjs message-edit: Use last_moved_timestamp for edited/moved indicators. 2025-03-11 16:42:28 -07:00
message_list.test.cjs message_list: Fix just_unsubscribed for empty views. 2025-03-25 16:04:55 -07:00
message_store.test.cjs message_view: Live update on losing access to a stream. 2025-04-29 09:46:19 -07:00
message_view.test.cjs message_view: Fix whitespace in finicky node tests. 2025-07-02 11:39:38 -07:00
muted_users.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
narrow_local.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
narrow_state.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
narrow_unread.test.cjs narrow_state: Refactor get_first_unread_info to take a defined filter. 2025-03-06 17:42:50 -08:00
navbar_alerts.test.cjs demo-orgs: Move helper function to get days remaining until deletion. 2025-04-29 12:25:28 -07:00
notifications.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
password.test.cjs change_password_modal: Hide the dialog spinner when action fails. 2025-02-06 09:40:57 -08:00
peer_data.test.cjs peer_data: Ensure potential_subscribers is only called with full data. 2025-05-14 15:00:45 -07:00
people_errors.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
people.test.cjs people: Defer loading user data during app load. 2025-05-20 13:55:48 -07:00
pill_typeahead.test.cjs typeahead: Rename highlighter_html to item_html. 2025-07-03 14:44:13 -07:00
pm_conversations.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
pm_list_data.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
pm_list.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
poll_widget.test.cjs widgets: Remove author tip for polls without question. 2025-03-25 10:48:28 -07:00
popover_menus_data.test.cjs stream_settings: Add new disable_topics option to topics_policy. 2025-07-09 14:25:53 -07:00
postprocess_content.test.cjs markdown: Experiment with custom bullets, counters. 2025-05-12 18:08:28 -07:00
presence.test.cjs presence: Fix exception on trying to get user from ID. 2025-03-03 10:06:04 -08:00
reactions.test.cjs reactions: Correctly convert template output to a jQuery object. 2025-05-08 17:13:25 -07:00
realm_playground.test.cjs typeahead: Replace code block language hint text with more clear options 2025-05-01 16:36:20 -07:00
recent_senders.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
recent_view.test.cjs hash_util: Set channel URL based on user setting. 2025-05-09 15:13:56 -07:00
reload_state.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
reload.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
rendered_markdown.test.cjs message_link: Add support for empty string topic in syntax. 2025-01-31 14:23:15 -08:00
resolved_topic.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
rtl.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
saved_snippets.test.cjs saved_snippets: Add support for editing saved snippets. 2025-03-13 10:58:36 -07:00
scheduled_messages.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
scroll_util.test.cjs scroll_util: Account for $elem not direct child of scroll container. 2025-01-23 15:53:09 -08:00
search_suggestion.test.cjs search_suggestion: Remove unused is_people logic. 2025-07-08 10:02:34 -07:00
search.test.cjs search_suggestion: Remove unused is_people logic. 2025-07-08 10:02:34 -07:00
server_events.test.cjs popup_banners: Redesign connection banner to use new banner component. 2025-03-10 11:21:11 -07:00
settings_bots.test.cjs settings: Add two new realm settings to restrict bot creation. 2025-01-30 11:37:33 -08:00
settings_config.test.cjs settings: Add channel notifications customization in Personal settings. 2025-06-09 13:50:55 -07:00
settings_data.test.cjs stream_settings: Add new topics_policy setting. 2025-06-17 17:05:58 -07:00
settings_emoji.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
settings_muted_users.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
settings_org.test.cjs stream_settings: Add new disable_topics option to topics_policy. 2025-07-09 14:25:53 -07:00
settings_profile_fields.test.cjs settings_profile_fields test: Add mocking helper. 2025-01-07 09:32:52 -08:00
settings_realm_domains.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
settings_user_topics.test.cjs settings_user_topics test: Use explicit override for sorting. 2025-01-07 09:32:52 -08:00
spoilers.test.cjs tests: Remove unusual ‘this’ usage. 2025-02-26 16:20:47 -08:00
starred_messages.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
stream_create_subscribers_data.test.cjs stream: Allow non-admins to create channel without subscribing to it. 2025-01-29 12:36:10 -08:00
stream_data.test.cjs stream_settings: Add new disable_topics option to topics_policy. 2025-07-09 14:25:53 -07:00
stream_edit.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
stream_events.test.cjs streams: Add can_resolve_topics_group setting. 2025-07-08 16:53:43 -07:00
stream_list_sort.test.cjs stream_list_sort: Fix user setting for demote inactive stream ignored. 2025-03-25 09:47:06 -07:00
stream_list.test.cjs topic_list: Filter topics by resolved state in "more topics" view. 2025-07-01 14:02:57 -07:00
stream_pill.test.cjs stream_pill: Fetch all subscribers before getting user ids for a stream. 2025-06-23 17:04:47 -07:00
stream_search.test.cjs left_sidebar: Standardize channel list filter input. 2025-07-03 11:45:35 -07:00
stream_settings_ui.test.cjs settings: Use grid and flex for the two-pane settings overlay. 2025-07-03 11:22:31 -07:00
stream_topic_history.test.cjs stream_settings: Add new disable_topics option to topics_policy. 2025-07-09 14:25:53 -07:00
submessage.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
support.test.cjs support: Avoid $(callback) to reduce zjquery complexity. 2025-05-09 09:04:39 -07:00
templates.test.cjs compose: Use an icon for the mac command hotkey hint. 2025-01-06 11:29:38 -08:00
time_zone_util.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
timerender.test.cjs banners: Redesign organization profile incomplete navbar banner. 2025-01-30 10:17:39 -08:00
topic_generator.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
topic_link_util.test.cjs topic_link_util: Add support for empty topics in the frontend. 2025-06-18 13:03:56 -07:00
topic_list_data.test.cjs topic_list: Filter topics by resolved state in "more topics" view. 2025-07-01 14:02:57 -07:00
topic_list.test.cjs topic_list: Fix "show all topics" flashing. 2025-06-26 10:11:05 -07:00
transmit.test.cjs server_events: Extract interface for compose, transmit to new module. 2025-05-12 11:07:12 -07:00
typeahead_helper.test.cjs search: Remove highlighting in search typeahead. 2025-07-03 14:43:01 -07:00
typeahead.test.cjs emoji: Remap ':smile' emoji and update the settings UI. 2025-04-07 17:34:52 -07:00
typing_data.test.cjs message_edit: Show typing indicator for message editing. 2025-02-12 15:08:56 -08:00
typing_events.test.cjs tests: Add library function to create message lists. 2025-06-19 10:50:21 -07:00
typing_status.test.cjs settings: Add a new topics_policy realm setting. 2025-06-17 17:05:58 -07:00
ui_util.test.cjs notifications: Render emoji in desktop notifications. 2025-02-23 10:57:09 -08:00
unread.test.cjs codespell: Fix typos caught by codespell. 2025-02-18 22:04:43 -08:00
upload.test.cjs upload: Fix uploading the same file twice in the same session. 2025-05-28 09:23:51 -07:00
user_events.test.cjs people: Optimize is_person_active. 2025-06-06 10:53:03 -07:00
user_group_pill.test.cjs people: Optimize is_person_active. 2025-06-06 10:53:03 -07:00
user_groups.test.cjs settings: Disable checkbox in permissions panel. 2025-04-04 11:06:05 -07:00
user_pill.test.cjs user_pill: Use user_id to get user info instead of email. 2025-06-18 11:27:59 -07:00
user_search.test.cjs right_sidebar: Standardize user list filter input. 2025-07-03 11:45:35 -07:00
user_status.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
user_topics_ui.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
user_topics.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
util.test.cjs banners: Add utility class for uniform bold. 2025-07-09 12:50:25 -07:00
vdom.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
watchdog.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
widgetize.test.cjs blueslip: Require record for more_info. 2025-01-02 17:30:40 -08:00
zblueslip.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00
zjquery.test.cjs tests: Rename the Node tests to *.cjs. 2024-11-13 09:18:56 -08:00