mirror of
https://github.com/zadam/trilium.git
synced 2025-12-16 21:29:56 +01:00
fix(context_menu): clicking submenu dismisses the menu
This commit is contained in:
@@ -1,13 +1,15 @@
|
|||||||
import { Dropdown as BootstrapDropdown, Tooltip } from "bootstrap";
|
|
||||||
import { ComponentChildren } from "preact";
|
|
||||||
import Icon from "./Icon";
|
|
||||||
import { useEffect, useMemo, useRef, useState, type CSSProperties } from "preact/compat";
|
|
||||||
import "./FormList.css";
|
import "./FormList.css";
|
||||||
import { CommandNames } from "../../components/app_context";
|
|
||||||
import { useStaticTooltip } from "./hooks";
|
import { Dropdown as BootstrapDropdown, Tooltip } from "bootstrap";
|
||||||
import { handleRightToLeftPlacement, isMobile, openInAppHelpFromUrl } from "../../services/utils";
|
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
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 FormToggle from "./FormToggle";
|
||||||
|
import { useStaticTooltip } from "./hooks";
|
||||||
|
import Icon from "./Icon";
|
||||||
|
|
||||||
interface FormListOpts {
|
interface FormListOpts {
|
||||||
children: ComponentChildren;
|
children: ComponentChildren;
|
||||||
@@ -33,7 +35,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(() => {
|
||||||
@@ -51,8 +53,7 @@ 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 ?? {},
|
||||||
@@ -199,7 +200,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() {
|
||||||
@@ -216,21 +217,22 @@ export function FormDropdownSubmenu({ icon, title, children, dropStart, onDropdo
|
|||||||
const [ openOnMobile, setOpenOnMobile ] = useState(false);
|
const [ openOnMobile, setOpenOnMobile ] = useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li className={clsx("dropdown-item dropdown-submenu", { "submenu-open": openOnMobile, "dropstart": dropStart })}>
|
<li
|
||||||
<span
|
className={clsx("dropdown-item dropdown-submenu", { "submenu-open": openOnMobile, "dropstart": dropStart })}
|
||||||
className="dropdown-toggle"
|
onClick={(e) => {
|
||||||
onClick={(e) => {
|
e.stopPropagation();
|
||||||
|
|
||||||
|
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>
|
||||||
|
|||||||
Reference in New Issue
Block a user