aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/ContextMenu.tsx
diff options
context:
space:
mode:
authorNaafiyan Ahmed <naafiyan@gmail.com>2022-06-30 15:40:27 -0400
committerNaafiyan Ahmed <naafiyan@gmail.com>2022-06-30 15:40:27 -0400
commit03c958f8ac95c65e77c337c6ecc4cd6b49f79175 (patch)
treef4b18b179c6b94edb672405e09ea453fbea80b5e /src/client/views/ContextMenu.tsx
parentaa979bcd302e48982707fb6f12403a48a721f147 (diff)
parentea6e63648b21c46672b1b7cb1da0cbaa6857d0c1 (diff)
merged master
Diffstat (limited to 'src/client/views/ContextMenu.tsx')
-rw-r--r--src/client/views/ContextMenu.tsx65
1 files changed, 16 insertions, 49 deletions
diff --git a/src/client/views/ContextMenu.tsx b/src/client/views/ContextMenu.tsx
index e2f98de1e..cffcd0f17 100644
--- a/src/client/views/ContextMenu.tsx
+++ b/src/client/views/ContextMenu.tsx
@@ -1,10 +1,10 @@
import React = require("react");
-import { ContextMenuItem, ContextMenuProps, OriginalMenuProps } from "./ContextMenuItem";
-import { observable, action, computed, runInAction, IReactionDisposer, reaction } from "mobx";
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { action, computed, IReactionDisposer, observable } from "mobx";
import { observer } from "mobx-react";
import "./ContextMenu.scss";
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import Measure from "react-measure";
+import { ContextMenuItem, ContextMenuProps, OriginalMenuProps } from "./ContextMenuItem";
+import { Utils } from "../../Utils";
@observer
export class ContextMenu extends React.Component {
@@ -74,7 +74,6 @@ export class ContextMenu extends React.Component {
componentDidMount = () => {
document.addEventListener("pointerdown", this.onPointerDown);
document.addEventListener("pointerup", this.onPointerUp);
-
}
@action
@@ -116,10 +115,6 @@ export class ContextMenu extends React.Component {
this._defaultItem = item;
}
- getItems() {
- return this._items;
- }
-
static readonly buffer = 20;
get pageX() {
const x = this._pageX;
@@ -199,37 +194,25 @@ export class ContextMenu extends React.Component {
return eles;
};
- return flattenItems(this._items, name => [name]);
+ return flattenItems(this._items.slice(), name => [name]);
}
@computed get flatItems(): OriginalMenuProps[] {
return this.filteredItems.filter(item => !Array.isArray(item)) as OriginalMenuProps[];
}
- @computed get filteredViews() {
- const createGroupHeader = (contents: any) => {
- return (
- <div className="contextMenu-group">
- <div className="contextMenu-description">{contents}</div>
- </div>
- );
- };
- const createItem = (item: ContextMenuProps, selected: boolean) => <ContextMenuItem {...item} key={item.description} closeMenu={this.closeMenu} selected={selected} />;
- let itemIndex = 0;
- return this.filteredItems.map(value => {
- if (Array.isArray(value)) {
- return createGroupHeader(value.join(" -> "));
- } else {
- return createItem(value, itemIndex++ === this.selectedIndex);
- }
- });
- }
-
@computed get menuItems() {
if (!this._searchString) {
return this._items.map((item, ind) => <ContextMenuItem {...item} noexpand={this.itemsNeedSearch ? true : (item as any).noexpand} key={ind + item.description} closeMenu={this.closeMenu} />);
}
- return this.filteredViews;
+ return this.filteredItems.map((value, index) =>
+ Array.isArray(value) ?
+ <div className="contextMenu-group">
+ <div className="contextMenu-description">{value.join(" -> ")}</div>
+ </div>
+ :
+ <ContextMenuItem {...value} key={index+value.description} closeMenu={this.closeMenu} selected={index === this.selectedIndex} />
+ );
}
@computed get itemsNeedSearch() {
@@ -237,14 +220,8 @@ export class ContextMenu extends React.Component {
}
render() {
- if (!this._display) {
- return null;
- }
- const style = this._yRelativeToTop ? { left: this.pageX, top: this.pageY } :
- { left: this.pageX, bottom: this.pageY };
-
- const contents = (
- <>
+ return !this._display ? (null) :
+ <div className="contextMenu-cont" style={{left: this.pageX, ...(this._yRelativeToTop ? { top: this.pageY } : { bottom: this.pageY })}}>
{!this.itemsNeedSearch ? (null) :
<span className={"search-icon"}>
<span className="icon-background">
@@ -253,17 +230,7 @@ export class ContextMenu extends React.Component {
<input className="contextMenu-item contextMenu-description search" type="text" placeholder="Filter Menu..." value={this._searchString} onKeyDown={this.onKeyDown} onChange={this.onChange} autoFocus />
</span>}
{this.menuItems}
- </>
- );
- return (
- <Measure offset onResize={action((r: any) => { this._width = r.offset.width; this._height = r.offset.height; })}>
- {({ measureRef }) => (
- <div className="contextMenu-cont" style={style} ref={measureRef}>
- {contents}
- </div>
- )}
- </Measure>
- );
+ </div>;
}
@action