aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/MainView.tsx
diff options
context:
space:
mode:
authorNathan-SR <144961007+Nathan-SR@users.noreply.github.com>2025-03-11 17:43:05 +0100
committerNathan-SR <144961007+Nathan-SR@users.noreply.github.com>2025-03-11 17:43:05 +0100
commitfa937182bc93aa2c6faadda80ea998cdfd479b4e (patch)
treecba8e16edcccc6fd2932173484ac444cb79abea2 /src/client/views/MainView.tsx
parentcf91c46cfec6e3e36b9184764016f9c1b5c997d4 (diff)
parent04669ffeb163688c7aefd7b5face7998252abdca (diff)
Merge branch 'master' of https://github.com/brown-dash/Dash-Web into DocCreatorMenu-work
Diffstat (limited to 'src/client/views/MainView.tsx')
-rw-r--r--src/client/views/MainView.tsx66
1 files changed, 54 insertions, 12 deletions
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index 6ee42d256..ef8d0c197 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -7,8 +7,8 @@ import { action, computed, configure, makeObservable, observable, reaction, runI
import { observer } from 'mobx-react';
import * as React from 'react';
import ResizeObserver from 'resize-observer-polyfill';
-import '../../../node_modules/browndash-components/dist/styles/global.min.css';
-import { ClientUtils, lightOrDark, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../ClientUtils';
+import '@dash/components/src/global/globalCssVariables.scss';
+import { ClientUtils, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../ClientUtils';
import { emptyFunction } from '../../Utils';
import { Doc, DocListCast, GetDocFromUrl, Opt, returnEmptyDoclist } from '../../fields/Doc';
import { DocData } from '../../fields/DocSymbols';
@@ -20,6 +20,7 @@ import { CollectionViewType, DocumentType } from '../documents/DocumentTypes';
import { Docs } from '../documents/Documents';
import { CalendarManager } from '../util/CalendarManager';
import { CaptureManager } from '../util/CaptureManager';
+import { CurrentUserUtils, ToTagName } from '../util/CurrentUserUtils';
import { DocumentManager } from '../util/DocumentManager';
import { DragManager } from '../util/DragManager';
import { dropActionType } from '../util/DropActionTypes';
@@ -71,10 +72,9 @@ import { OpenWhere, OpenWhereMod } from './nodes/OpenWhere';
import { TaskCompletionBox } from './nodes/TaskCompletedBox';
import { DashFieldViewMenu } from './nodes/formattedText/DashFieldView';
import { RichTextMenu } from './nodes/formattedText/RichTextMenu';
-import GenerativeFill from './nodes/generativeFill/GenerativeFill';
+import ImageEditorBox from './nodes/imageEditor/ImageEditor';
import { PresBox } from './nodes/trails';
import { AnchorMenu } from './pdf/AnchorMenu';
-import { GPTPopup } from './pdf/GPTPopup/GPTPopup';
import { SmartDrawHandler } from './smartdraw/SmartDrawHandler';
import { TopBar } from './topbar/TopBar';
@@ -97,7 +97,7 @@ export class MainView extends ObservableReactComponent<object> {
@observable private _sidebarContent: Doc = Doc.MyLeftSidebarPanel;
@observable private _leftMenuFlyoutWidth: number = 0;
@computed get _hideUI() {
- return this.mainDoc && this.mainDoc._type_collection !== CollectionViewType.Docking;
+ return SnappingManager.HideUI || (this.mainDoc && this.mainDoc._type_collection !== CollectionViewType.Docking);
}
@computed private get dashboardTabHeight() {
@@ -444,6 +444,7 @@ export class MainView extends ObservableReactComponent<object> {
fa.faAlignRight,
fa.faHeading,
fa.faRulerCombined,
+ fa.faFill,
fa.faFillDrip,
fa.faLink,
fa.faUnlink,
@@ -571,6 +572,7 @@ export class MainView extends ObservableReactComponent<object> {
fa.faRobot,
fa.faSatellite,
fa.faStar,
+ fa.faFilePen,
fa.faCloud,
fa.faBolt,
fa.faLightbulb,
@@ -707,7 +709,7 @@ export class MainView extends ObservableReactComponent<object> {
childFiltersByRanges={returnEmptyFilter}
searchFilterDocs={returnEmptyDoclist}
suppressSetHeight
- renderDepth={this._hideUI ? 0 : -1}
+ renderDepth={-1}
/>
</>
);
@@ -864,6 +866,17 @@ export class MainView extends ObservableReactComponent<object> {
return true;
};
+ /**
+ * Allows users to add a filter hotkey to the properties panel. Will also update the multitoggle at the top menu and the
+ * icontags tht are displayed on the documents themselves
+ * @param hotKey tite of the new hotkey
+ */
+ addHotKey = (hotKey: string) => {
+ const filterIcons = DocCast(DocCast(Doc.UserDoc().myContextMenuBtns)?.Filter);
+ const menuDoc = CurrentUserUtils.setupContextMenuBtn(CurrentUserUtils.filterBtnDesc(ToTagName(hotKey), 'question'), filterIcons);
+ Doc.AddToFilterHotKeys(menuDoc);
+ };
+
@computed get mainInnerContent() {
const leftMenuFlyoutWidth = this._leftMenuFlyoutWidth + this.leftMenuWidth();
const width = this.propertiesWidth() + leftMenuFlyoutWidth;
@@ -892,7 +905,7 @@ export class MainView extends ObservableReactComponent<object> {
)}
<div className="properties-container" style={{ width: this.propertiesWidth(), color: SnappingManager.userColor }}>
<div style={{ display: this.propertiesWidth() < 10 ? 'none' : undefined }}>
- <PropertiesView styleProvider={DefaultStyleProvider} addDocTab={DocumentViewInternal.addDocTabFunc} width={this.propertiesWidth()} height={this.propertiesHeight()} />
+ <PropertiesView styleProvider={DefaultStyleProvider} addHotKey={this.addHotKey} addDocTab={DocumentViewInternal.addDocTabFunc} width={this.propertiesWidth()} height={this.propertiesHeight()} />
</div>
</div>
</div>
@@ -993,10 +1006,36 @@ export class MainView extends ObservableReactComponent<object> {
<svg style={{ width: '100%', height: '100%' }}>
{[
...SnappingManager.HorizSnapLines.map(l => (
- <line key={'horiz' + l} x1="0" y1={l} x2="2000" y2={l} stroke={lightOrDark(StrCast(dragPar.layoutDoc.backgroundColor, 'gray'))} opacity={0.3} strokeWidth={1} strokeDasharray="2 2" />
+ <line
+ key={'horiz' + l}
+ x1="0"
+ y1={l}
+ x2="2000"
+ y2={l}
+ stroke={
+ SnappingManager.userVariantColor
+ /* lightOrDark(StrCast(dragPar.layoutDoc.backgroundColor, 'gray'))*/
+ }
+ opacity={0.3}
+ strokeWidth={3}
+ strokeDasharray="2 2"
+ />
)),
...SnappingManager.VertSnapLines.map(l => (
- <line key={'vert' + l} y1={this.topOfMainDocContent.toString()} x1={l} y2="2000" x2={l} stroke={lightOrDark(StrCast(dragPar.layoutDoc.backgroundColor, 'gray'))} opacity={0.3} strokeWidth={1} strokeDasharray="2 2" />
+ <line
+ key={'vert' + l}
+ y1={this.topOfMainDocContent.toString()}
+ x1={l}
+ y2="2000"
+ x2={l}
+ stroke={
+ SnappingManager.userVariantColor
+ /* lightOrDark(StrCast(dragPar.layoutDoc.backgroundColor, 'gray'))*/
+ }
+ opacity={0.3}
+ strokeWidth={3}
+ strokeDasharray="2 2"
+ />
)),
]}
</svg>
@@ -1101,7 +1140,7 @@ export class MainView extends ObservableReactComponent<object> {
<PreviewCursor />
<TaskCompletionBox />
<ContextMenu />
- <DocCreatorMenu />
+ <DocCreatorMenu addDocTab={DocumentViewInternal.addDocTabFunc} />
<ImageLabelHandler />
<SmartDrawHandler />
<AnchorMenu />
@@ -1114,9 +1153,8 @@ export class MainView extends ObservableReactComponent<object> {
<InkTranscription />
{this.snapLines}
<LightboxView key="lightbox" PanelWidth={this._windowWidth} addSplit={CollectionDockingView.AddSplit} PanelHeight={this._windowHeight} maxBorder={this.lightboxMaxBorder} />
- <GPTPopup key="gptpopup" />
<SchemaCSVPopUp key="schemacsvpopup" />
- <GenerativeFill imageEditorOpen={ImageEditor.Open} imageEditorSource={ImageEditor.Source} imageRootDoc={ImageEditor.RootDoc} addDoc={ImageEditor.AddDoc} />
+ <ImageEditorBox imageEditorOpen={ImageEditor.Open} imageEditorSource={ImageEditor.Source} imageRootDoc={ImageEditor.RootDoc} addDoc={ImageEditor.AddDoc} />
</div>
);
}
@@ -1127,6 +1165,10 @@ ScriptingGlobals.add(function selectMainMenu(doc: Doc) {
MainView.Instance.selectMenu(doc);
});
// eslint-disable-next-line prefer-arrow-callback
+ScriptingGlobals.add(function hideUI() {
+ SnappingManager.SetHideUI(!SnappingManager.HideUI);
+});
+// eslint-disable-next-line prefer-arrow-callback
ScriptingGlobals.add(function createNewPresentation() {
return MainView.Instance.createNewPresentation();
}, 'creates a new presentation when called');