aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/linking/LinkMenu.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2022-11-29 12:05:29 -0500
committerbobzel <zzzman@gmail.com>2022-11-29 12:05:29 -0500
commitc6d1059e24f362a167b9ac24e6f13d1e45361da9 (patch)
treea0136cee04608c73f54ac3ecd63bed0307a37fd4 /src/client/views/linking/LinkMenu.tsx
parent1f5db9cfc594dbf337d752ec94dab5fca7d8b6f7 (diff)
changes to streamline link editing UI (got rid of LinkEditor). cleaned up link (un)highlighting.
Diffstat (limited to 'src/client/views/linking/LinkMenu.tsx')
-rw-r--r--src/client/views/linking/LinkMenu.tsx37
1 files changed, 8 insertions, 29 deletions
diff --git a/src/client/views/linking/LinkMenu.tsx b/src/client/views/linking/LinkMenu.tsx
index 0c46a6d96..c9112eec3 100644
--- a/src/client/views/linking/LinkMenu.tsx
+++ b/src/client/views/linking/LinkMenu.tsx
@@ -1,14 +1,13 @@
-import { action, computed, observable } from 'mobx';
+import { action, observable } from 'mobx';
import { observer } from 'mobx-react';
import { Doc } from '../../../fields/Doc';
+import { DocCast } from '../../../fields/Types';
import { LinkManager } from '../../util/LinkManager';
import { DocumentView } from '../nodes/DocumentView';
import { LinkDocPreview } from '../nodes/LinkDocPreview';
-import { LinkEditor } from './LinkEditor';
import './LinkMenu.scss';
import { LinkMenuGroup } from './LinkMenuGroup';
import React = require('react');
-import { emptyFunction } from '../../../Utils';
interface Props {
docView: DocumentView;
@@ -23,15 +22,9 @@ interface Props {
@observer
export class LinkMenu extends React.Component<Props> {
_editorRef = React.createRef<HTMLDivElement>();
- @observable _editingLink?: Doc;
@observable _linkMenuRef = React.createRef<HTMLDivElement>();
- clear = !this.props.clearLinkEditor
- ? undefined
- : action(() => {
- this.props.clearLinkEditor?.();
- this._editingLink = undefined;
- });
+ clear = () => this.props.clearLinkEditor?.();
componentDidMount() {
this.props.clearLinkEditor && document.addEventListener('pointerdown', this.onPointerDown, true);
@@ -43,7 +36,7 @@ export class LinkMenu extends React.Component<Props> {
onPointerDown = action((e: PointerEvent) => {
LinkDocPreview.Clear();
if (!this._linkMenuRef.current?.contains(e.target as any) && !this._editorRef.current?.contains(e.target as any)) {
- this.clear?.();
+ this.clear();
}
});
@@ -54,34 +47,20 @@ export class LinkMenu extends React.Component<Props> {
*/
renderAllGroups = (groups: Map<string, Array<Doc>>): Array<JSX.Element> => {
const linkItems = Array.from(groups.entries()).map(group => (
- <LinkMenuGroup
- key={group[0]}
- itemHandler={this.props.itemHandler}
- docView={this.props.docView}
- sourceDoc={this.props.docView.props.Document}
- group={group[1]}
- groupType={group[0]}
- clearLinkEditor={this.clear}
- showEditor={action(linkDoc => (this._editingLink = linkDoc))}
- />
+ <LinkMenuGroup key={group[0]} itemHandler={this.props.itemHandler} docView={this.props.docView} sourceDoc={this.props.docView.props.Document} group={group[1]} groupType={group[0]} clearLinkEditor={this.clear} />
));
return linkItems.length ? linkItems : this.props.style ? [<></>] : [<p key="">No links have been created yet. Drag the linking button onto another document to create a link.</p>];
};
render() {
- const sourceDoc = this.props.docView.props.Document;
+ const sourceDoc = this.props.docView.rootDoc;
+ const sourceAnchor = this.props.docView.anchorViewDoc ?? sourceDoc;
const style = this.props.style ?? (dv => ({ left: dv?.left || 0, top: this.props.docView.topMost ? undefined : (dv?.bottom || 0) + 15, bottom: this.props.docView.topMost ? 20 : undefined, maxWidth: 200 }))(this.props.docView.getBounds());
return (
<div className="linkMenu" ref={this._linkMenuRef} style={{ ...style }}>
- {this._editingLink ? (
- <div className="linkMenu-listEditor">
- <LinkEditor sourceDoc={sourceDoc} linkDoc={this._editingLink} showLinks={action(() => (this._editingLink = undefined))} />
- </div>
- ) : (
- <div className="linkMenu-list">{this.renderAllGroups(LinkManager.Instance.getRelatedGroupedLinks(sourceDoc))}</div>
- )}
+ <div className="linkMenu-list">{this.renderAllGroups(LinkManager.Instance.getRelatedGroupedLinks(sourceAnchor))}</div>
</div>
);
}