import "./BreadcrumbBadges.css"; import clsx from "clsx"; import { ComponentChildren, MouseEventHandler } from "preact"; import { useRef } from "preact/hooks"; import { t } from "../services/i18n"; import { BacklinksList, useBacklinkCount } from "./FloatingButtonsDefinitions"; import Dropdown, { DropdownProps } from "./react/Dropdown"; import { useIsNoteReadOnly, useNoteContext, useStaticTooltip } from "./react/hooks"; import Icon from "./react/Icon"; import { useShareInfo } from "./shared_info"; export default function BreadcrumbBadges() { return (
); } function ReadOnlyBadge() { const { note, noteContext } = useNoteContext(); const { isReadOnly, enableEditing } = useIsNoteReadOnly(note, noteContext); const isExplicitReadOnly = note?.isLabelTruthy("readOnly"); const isTemporarilyEditable = noteContext?.viewScope?.readOnlyTemporarilyDisabled; if (isTemporarilyEditable) { return enableEditing(false)} />; } else if (isReadOnly) { return enableEditing()} />; } } function ShareBadge() { const { note } = useNoteContext(); const { isSharedExternally, link, linkHref } = useShareInfo(note); return (link && ); } function BacklinksBadge() { const { note, viewScope } = useNoteContext(); const count = useBacklinkCount(note, viewScope?.viewMode === "default"); return (note && count > 0 && ); } interface BadgeProps { text: string; icon?: string; className: string; tooltip?: string; onClick?: MouseEventHandler; href?: string; } function Badge({ icon, className, text, tooltip, onClick, href }: BadgeProps) { const containerRef = useRef(null); useStaticTooltip(containerRef, { placement: "bottom", fallbackPlacements: [ "bottom" ], animation: false, html: true, title: tooltip }); const content = <> {icon && <> } {text} ; return (
{href ? {content} : {content}}
); } function BadgeWithDropdown({ children, tooltip, className, dropdownOptions, ...props }: BadgeProps & { children: ComponentChildren, dropdownOptions?: Partial }) { return ( } noDropdownListStyle noSelectButtonStyle hideToggleArrow title={tooltip} titlePosition="bottom" dropdownOptions={{ popperConfig: { placement: "bottom", strategy: "fixed" } }} {...dropdownOptions} >{children} ); }