Revert "fix(context_menu): clicking submenu dismisses the menu"

This reverts commit 34bc444b18.
This commit is contained in:
Elian Doran
2025-12-15 07:46:36 +02:00
parent bc8f17ee5c
commit 17db2a6b38

View File

@@ -1,15 +1,13 @@
import "./FormList.css";
import { Dropdown as BootstrapDropdown, Tooltip } from "bootstrap"; import { Dropdown as BootstrapDropdown, Tooltip } from "bootstrap";
import clsx from "clsx";
import { ComponentChildren } from "preact"; import { ComponentChildren } from "preact";
import { type CSSProperties,useEffect, useMemo, useRef, useState } from "preact/compat";
import { CommandNames } from "../../components/app_context";
import { handleRightToLeftPlacement, isMobile, openInAppHelpFromUrl } from "../../services/utils";
import FormToggle from "./FormToggle";
import { useStaticTooltip } from "./hooks";
import Icon from "./Icon"; import Icon from "./Icon";
import { useEffect, useMemo, useRef, useState, type CSSProperties } from "preact/compat";
import "./FormList.css";
import { CommandNames } from "../../components/app_context";
import { useStaticTooltip } from "./hooks";
import { handleRightToLeftPlacement, isMobile, openInAppHelpFromUrl } from "../../services/utils";
import clsx from "clsx";
import FormToggle from "./FormToggle";
interface FormListOpts { interface FormListOpts {
children: ComponentChildren; children: ComponentChildren;
@@ -35,7 +33,7 @@ export default function FormList({ children, onSelect, style, fullHeight, wrappe
return () => { return () => {
$wrapperRef.off("hide.bs.dropdown"); $wrapperRef.off("hide.bs.dropdown");
dropdown.dispose(); dropdown.dispose();
}; }
}, [ triggerRef, wrapperRef ]); }, [ triggerRef, wrapperRef ]);
const builtinStyles = useMemo(() => { const builtinStyles = useMemo(() => {
@@ -53,7 +51,8 @@ export default function FormList({ children, onSelect, style, fullHeight, wrappe
<button <button
ref={triggerRef} ref={triggerRef}
type="button" style="display: none;" type="button" style="display: none;"
data-bs-toggle="dropdown" data-bs-display="static" /> data-bs-toggle="dropdown" data-bs-display="static">
</button>
<div class="dropdown-menu static show" style={{ <div class="dropdown-menu static show" style={{
...style ?? {}, ...style ?? {},
@@ -200,7 +199,7 @@ export function FormListHeader({ text }: FormListHeaderOpts) {
<li> <li>
<h6 className="dropdown-header">{text}</h6> <h6 className="dropdown-header">{text}</h6>
</li> </li>
); )
} }
export function FormDropdownDivider() { export function FormDropdownDivider() {
@@ -217,22 +216,21 @@ export function FormDropdownSubmenu({ icon, title, children, dropStart, onDropdo
const [ openOnMobile, setOpenOnMobile ] = useState(false); const [ openOnMobile, setOpenOnMobile ] = useState(false);
return ( return (
<li <li className={clsx("dropdown-item dropdown-submenu", { "submenu-open": openOnMobile, "dropstart": dropStart })}>
className={clsx("dropdown-item dropdown-submenu", { "submenu-open": openOnMobile, "dropstart": dropStart })} <span
onClick={(e) => { className="dropdown-toggle"
e.stopPropagation(); onClick={(e) => {
if (!isMobile() && onDropdownToggleClicked) {
onDropdownToggleClicked();
}
}}
>
<span className="dropdown-toggle" onClick={(e) => {
if (isMobile()) {
e.stopPropagation(); e.stopPropagation();
setOpenOnMobile(!openOnMobile);
} if (isMobile()) {
}}> setOpenOnMobile(!openOnMobile);
}
if (onDropdownToggleClicked) {
onDropdownToggleClicked();
}
}}
>
<Icon icon={icon} />{" "} <Icon icon={icon} />{" "}
{title} {title}
</span> </span>