Remove menu hover styles on mobile Fixed duplicate hover+active behavior on editor menus Fixed editor menus visibly scroll to the top when reopened Fixed some minor editor spacing issues Renamed shred routeHelpers -> urlHelpers
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { findParentNode } from "prosemirror-utils";
|
|
import React from "react";
|
|
import getMenuItems from "../menus/block";
|
|
import BlockMenuItem from "./BlockMenuItem";
|
|
import CommandMenu, { Props } from "./CommandMenu";
|
|
|
|
type BlockMenuProps = Omit<
|
|
Props,
|
|
"renderMenuItem" | "items" | "onClearSearch"
|
|
> &
|
|
Required<Pick<Props, "onLinkToolbarOpen" | "embeds">>;
|
|
|
|
function BlockMenu(props: BlockMenuProps) {
|
|
const clearSearch = () => {
|
|
const { state, dispatch } = props.view;
|
|
const parent = findParentNode((node) => !!node)(state.selection);
|
|
|
|
if (parent) {
|
|
dispatch(state.tr.insertText("", parent.pos, state.selection.to));
|
|
}
|
|
};
|
|
|
|
return (
|
|
<CommandMenu
|
|
{...props}
|
|
filterable={true}
|
|
onClearSearch={clearSearch}
|
|
renderMenuItem={(item, _index, options) => {
|
|
return (
|
|
<BlockMenuItem
|
|
onClick={options.onClick}
|
|
selected={options.selected}
|
|
icon={item.icon}
|
|
title={item.title}
|
|
shortcut={item.shortcut}
|
|
/>
|
|
);
|
|
}}
|
|
items={getMenuItems(props.dictionary)}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default BlockMenu;
|