Commit Graph

107 Commits

Author SHA1 Message Date
N-Shar-ma 43d0965555 popover: Improve computation of elements at reference elements.
So far, we were only considering elements at the the reference element's
bounding box top-left corner, to check if the reference element was
covered by other elements. This led to a bug where the popover wouldn't
show up even if a very small part of the reference element was covered.

Now we consider elements that are at both the top-left and bottom-right
of the reference element's bounding box, as those covering the reference
element.
2023-12-04 16:03:29 -08:00
Karl Stolley 5797381ea2 compose_box: Suppress send-area tooltips when vdots popover is open. 2023-11-14 12:10:38 -08:00
Karl Stolley e82c875bc3 compose_box: Remove unreachable enter_sends cruft. 2023-11-14 12:10:38 -08:00
Aman Agrawal 3a7ce432e5 popovers: Fix topic visibility popover in sticky header not working.
The popover didn't open since sticky_header is part of message feed
and we were hiding popovers if `elements_at_reference_position`
had `sticky_header`. Now, we just don't do that check if the
reference is part of sticky_header.
2023-11-08 09:17:25 -08:00
Aman Agrawal ebd0dcd5d2 actions_popover: Fix copy link not working on `enter` keypress. 2023-11-07 13:31:53 -08:00
Aman Agrawal 25877114cf popover_menus: Move popoover to top if focused on text field.
Fixes #11448

Tested on Chrome, Firefox (iOS, Android) and Safari (iOS).
2023-11-07 11:31:10 -08:00
Aman Agrawal 6e9da8ab2a popover_menus: Only take special care of references in message feed.
If the popover reference is in an overlay, the below check:
```js
elements_at_reference_position.some(
    (element) =>
        element.id === "navbar-fixed-container" ||
        element.id === "compose-content" ||
        element.classList.contains("sticky_header"),
)
```
would make the popover not appear if the reference was above them.

To make things simpler for us to check, we only handle popover
references inside message list which we know for sure will
always be below the elements checked above in stacking context.

Hiding popovers for other view is done good enough by
`data-reference-hidden` check that we don't need to manually
handle them.
2023-11-07 09:23:48 -08:00
Aman Agrawal a4b4b0ad38 popover_menus: Fix popovers not shown if reference is beside compose.
Since `#compose` occupies full width of the window, it is a
part of `elements_at_reference_position` if the reference is
under it.

Since `#compose-content` only occupies the part of window where
compose box is actually visible, we use it decide if the
popover should be hidden.
2023-11-07 09:23:48 -08:00
Aman Agrawal 8b5110d218 popover_menus: Hide popover for which the reference element is hidden. 2023-11-02 16:27:18 -07:00
Aman Agrawal c3eb17a411 popover_menus: Do early return if possible. 2023-11-02 16:27:18 -07:00
Aman Agrawal bee8ce4e56 popover_menus: Don't hide on scroll / resize.
Tippyjs is equipped to handle reference element moving from
its initial position so that the popover moves / changes
along with the reference / window size.
2023-11-02 16:27:18 -07:00
Aman Agrawal 2f33fad5df left_sidebar: Add popover to make different views default.
Fixes #27324
2023-10-24 16:16:56 -07:00
Aman Agrawal 8f716cd64a help_menu: Extract help items from gear menu into a separate popover.
Fixes #27202
2023-10-23 14:15:13 -07:00
Aman Agrawal 2b9dc1f398 hotkey: Avoid inconsistent hotkey handling.
Pressing `r` to open compose box, or search via hotkey didn't work
for gear menu while it worked for other popovers. So, this is an
attempt to unify that behavior so that if the hotkeys are not
handles the navbar_menus popovers, then can be handled elsewhere.
2023-10-23 14:15:13 -07:00
Aman Agrawal c9891b4121 hotkey: Make g + left / right arrow work to open navbar dropdowns.
While gear menu is open, press right arrow to go to personal menu
and left arrow to open gear menu again.
2023-10-23 14:15:13 -07:00
Aman Agrawal bc3d48616e gear_menu: Migrate to use tippy. 2023-10-20 12:36:39 -07:00
Karl Stolley 46ce408a5f left_sidebar: Add a 3-dot menu to condensed views.
Co-Authored-By: Hardik Dharmani <Ddharmani99@gmail.com>
2023-10-20 12:27:19 -07:00
Aman Agrawal 54a5aec013 popover_menus: Directly get visible anchor tags.
Instead of checking for anchor tags within visible `li` elements,
it is just better to check directly for visible anchor tags.
2023-10-18 22:02:38 -07:00
Hardik Dharmani 49f7f02a0a personal_menu: Add tippy personal_menu dropdown.
Add a personal menu dropdown that opens on clicking user avatar icon
in navbar added in previous commit.

The args passed to render_personal_menu() in onShow() are returned by
get_personal_menu_content_context() in popover_menus_data.js so that
they can be unit tested.

Additionally, added CSS to get a custom arrow for dropdown menu.

Added a `?` hotkey in keyboard shortcuts option in personal_menu
dropdown in a style similar to our tooltip's hotkey by adding
? in a span with class .tooltip-hotkey-hint and adding some CSS.

Fixes part of #22802.
2023-10-12 15:31:01 -07:00
Aman Agrawal 577a384845 overlays: Extract modal methods in separate file. 2023-10-10 16:43:57 -07:00
Aman Agrawal 6cfb7239c8 popover_menus: Remove hide_all from on_show functions.
Since popovers only open after a click, all popovers hide already
if the clicks were outside them.
2023-10-06 09:03:46 -07:00
Aman Agrawal 5142f1279a popovers: Refactor show popovers as overlay on mobile widths.
This also fixes user_card_popover not being displayed as overlay
on mobile widths.
2023-10-05 08:29:12 -07:00
Aman Agrawal 2ec8273c6e left_sidebar: Move all messages popover to inbox.
Also, renamed files and variables as needed.
2023-10-04 13:10:08 -07:00
Anders Kaseorg d4a93aa05a popover_menus: Extract compose_popovers module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:29 -07:00
Anders Kaseorg d01db0f5a0 popover_menus: Extract left_sidebar_navigation_area_popovers module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:29 -07:00
Anders Kaseorg dd6676f16e popover_menus: Extract user_topic_popover menus.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:29 -07:00
Anders Kaseorg 825fb8cef5 popover_menus: Extract topic_popover module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:29 -07:00
Anders Kaseorg 16e2a32c4c popover_menus: Extract message_actions_popover module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:29 -07:00
Anders Kaseorg 26e34a163e popover_menus: Extract scheduled_messages_popover module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2023-10-03 11:58:22 -07:00
Aman Agrawal 6ef03498a9 popover_menus: Fix enter keypress not working on some popovers.
Fixed for message actions popover, stream popover, topic
popover and maybe others.
2023-10-03 09:57:43 -07:00
Tim Abbott 7a97ceab86 popovers: Extract add_stream_options_popover.js. 2023-10-02 19:17:08 -07:00
Aman Agrawal af170a82f6 popovers: Simplify any_active.
Remove unused functions along with it.
2023-10-02 19:17:08 -07:00
Aman Agrawal 1d62abee61 popovers: Simplify hide_all.
Since we only have tippy popovers now, functions calling
not_hide_tippy_instances have been removed.

Also, all of emoji_picker, stream_popover, user_card etc popovers
are tippy popovers so calling hideAll is enough to hide them all.
2023-10-02 19:17:08 -07:00
Aman Agrawal 4c57b3f289 popover_menus: Set correct instance as undefined.
This caused a bug where input keys were not working since
`compose_mobile_button` was always set.
2023-10-02 12:07:05 -07:00
Aman Agrawal 08d1290912 popovers: Remove unnecessary removal of popover classes.
has_popover is not used anywhere.
has_emoji_popover is not used anywhere.
has_actions_popover is handled by actions popover itself.
2023-09-28 08:45:43 -07:00
Tim Abbott 3397627a28 popovers: Move initialize logic to popover_menus.js. 2023-09-25 06:29:47 -07:00
Tim Abbott 573c77a9eb popovers: Move scroll handler to popover_menus module.
Part of cleaning out the original legacy popovers system.
2023-09-25 06:29:47 -07:00
Tim Abbott eb26dc6ecd popovers: Move keyboard UI functions to modern module. 2023-09-25 06:29:47 -07:00
Aman Agrawal bdf6b210b8 copied_tooltip: Remove tippyjs import cycle by extracting it.
Moving show_copied_confirmation to a new library breaks the
dependency cycle of popover_menus and tippyjs.
2023-09-24 15:16:27 -07:00
Aman Agrawal 97a1b91b40 inbox: Add button to open topic menu popover. 2023-09-21 16:50:01 -07:00
N-Shar-ma 54b399ce96 compose: Disable unneeded control buttons in preview mode while editing.
This is a follow up to #26728, which disables buttons in preview mode
for any message being edited.

Care is taken to pass the correct preview state (compose vs the message
row being edited) to the popover menu so the buttons in it too can be
disabled as needed.
2023-09-14 17:15:40 -07:00
yogesh sirsat 953f026487 compose: Disable unneeded control buttons in preview mode.
Buttons which change the content in the compose textarea were so far
enabled even in preview mode, and would work, but those changes would
not be reflected in the visible preview. This is extremely confusing,
and can lead to the possibility of a user accidentally changing the
content of the compose textarea while previewing, and sending that.

Now we disable those buttons in preview mode, both when composing a new
message and when editing an existing one. We still show the tooltips,
but grey them out and make them unclickable.

Fixes: #20962
2023-09-13 15:09:16 -07:00
Daniil Fadeev 08aec5ac41 stream_popover: Migrate from Bootstrap to Tippy. 2023-09-13 10:55:40 -07:00
Daniil Fadeev 82ca794f94 emoji: Migrate popover from Bootstrap to Tippy.
Fixes part of #23632.
2023-09-07 14:44:18 -07:00
Daniil Fadeev 42bea85666 popovers: Ignore `data-reference-hidden` attribute for mobile popovers.
By default, Tippys with the `data-reference-hidden` attribute aren't
displayed. But when we render them as centered overlays on mobile and
use `getReferenceClientRect` for a virtual reference, Tippy slaps this
 hidden attribute on our element, making it invisible. We want to
 bypass this in scenarios where we're centering popovers on mobile
 screens.
2023-09-07 14:44:18 -07:00
Daniil Fadeev c33dac8ab3 popover_menus: Fix the API for popover centering.
The offset modifier is tricky and its calculations is related to the
placement of the popover. So, to prevent inconsistency, we should fix
the placement to some value.
2023-09-07 14:44:18 -07:00
Daniil Fadeev e5b8731e83 popover_menus: Fix the error that happens when the props are missing.
When `onMount` or `onHidden` methods aren't provided at the original
point of popover creation, an execution error occurred.
2023-09-07 14:44:18 -07:00
Daniil Fadeev 53e081ae29 popover_menus: Create an API to render popovers as a centered overlay.
This commit lets us render popovers centered on the screen with a
background overlay. It's the same thing we did with Bootstrap
popovers, but optimized for use with Tippy.
2023-08-25 12:29:36 -07:00
Daniil Fadeev 32d8ae16d2 popover_menus: Extract toggle_popover_menu. 2023-08-25 12:29:36 -07:00
Palash Baderia 92d1c6e390 message_feed: Remove the view edit history from the three-dot menu.
This commit removes the 'View Edit History' option from the three-dot
menu since we have already implemented this feature through the
edited/moved label in the message. Therefore, we no longer need this
option in the three-dot menu. This commit aims to simplify the
three-dot message menu.

Fixes: #23077
2023-08-24 16:28:06 -07:00