aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/SidebarAnnos.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2025-05-13 13:37:54 -0400
committerbobzel <zzzman@gmail.com>2025-05-13 13:37:54 -0400
commit87484331f805f583c98226c5a8c6b1ec5fc88925 (patch)
tree36366cbc99be80f3beb9aa9eb1091cfab26cb054 /src/client/views/SidebarAnnos.tsx
parent0c3f86d57225a2991920adef3a337bc13e408ac0 (diff)
fixed setting up link anchors for video to be added to Doc. fixed imageTemplate to work with templates in tabs. fixed link following from link menu. cleaned up getView with sidebars to open them when needed properly..
Diffstat (limited to 'src/client/views/SidebarAnnos.tsx')
-rw-r--r--src/client/views/SidebarAnnos.tsx29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/client/views/SidebarAnnos.tsx b/src/client/views/SidebarAnnos.tsx
index 573c28ccf..71b479a22 100644
--- a/src/client/views/SidebarAnnos.tsx
+++ b/src/client/views/SidebarAnnos.tsx
@@ -3,7 +3,7 @@ import { observer } from 'mobx-react';
import * as React from 'react';
import { ClientUtils, returnFalse, returnOne, returnZero } from '../../ClientUtils';
import { emptyFunction } from '../../Utils';
-import { Doc, DocListCast, Field, FieldResult, FieldType, StrListCast } from '../../fields/Doc';
+import { Doc, DocListCast, Field, FieldResult, FieldType, Opt, StrListCast } from '../../fields/Doc';
import { Id } from '../../fields/FieldSymbols';
import { List } from '../../fields/List';
import { RichTextField } from '../../fields/RichTextField';
@@ -19,6 +19,7 @@ import { StyleProp } from './StyleProp';
import { CollectionStackingView } from './collections/CollectionStackingView';
import { DocumentView } from './nodes/DocumentView';
import { FieldViewProps } from './nodes/FieldView';
+import { FocusViewOptions } from './nodes/FocusViewOptions';
interface ExtraProps {
fieldKey: string;
@@ -149,15 +150,33 @@ export class SidebarAnnos extends ObservableReactComponent<FieldViewProps & Extr
};
makeDocUnfiltered = (doc: Doc) => {
if (DocListCast(this._props.Doc[this.sidebarKey]).find(anno => Doc.AreProtosEqual(doc.layout_unrendered ? DocCast(doc.annotationOn) : doc, anno))) {
- if (this.childFilters()) {
+ if (this.childFilters().length) {
// if any child filters exist, get rid of them
this._props.layoutDoc._childFilters = new List<string>();
+ return true;
}
- return true;
}
return false;
};
+ public static getView(sidebar: SidebarAnnos | null, sidebarShown: boolean, toggleSidebar: () => void, doc: Doc, options: FocusViewOptions) {
+ if (!sidebarShown) {
+ options.didMove = true;
+ toggleSidebar();
+ }
+ options.didMove = sidebar?.makeDocUnfiltered(doc) || options.didMove;
+
+ if (!doc.hidden) {
+ if (!options.didMove && options.toggleTarget) {
+ options.toggleTarget = false;
+ options.didMove = doc.hidden = true;
+ }
+ } else {
+ options.didMove = !(doc.hidden = false);
+ }
+ return new Promise<Opt<DocumentView>>(res => DocumentView.addViewRenderedCb(doc, res));
+ }
+
get sidebarKey() {
return this._props.fieldKey + '_sidebar';
}
@@ -181,8 +200,8 @@ export class SidebarAnnos extends ObservableReactComponent<FieldViewProps & Extr
layout_showTitle = () => 'title';
setHeightCallback = (height: number) => this._props.setHeight?.(height + this.filtersHeight());
sortByLinkAnchorY = (a: Doc, b: Doc) => {
- const ay = Doc.Links(a).length && DocCast(Doc.Links(a)[0].link_anchor_1).y;
- const by = Doc.Links(b).length && DocCast(Doc.Links(b)[0].link_anchor_1).y;
+ const ay = Doc.Links(a).length && DocCast(Doc.Links(a)[0].link_anchor_1)?.y;
+ const by = Doc.Links(b).length && DocCast(Doc.Links(b)[0].link_anchor_1)?.y;
return NumCast(ay) - NumCast(by);
};
render() {