aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/PropertiesButtons.tsx
diff options
context:
space:
mode:
authorGeireann Lindfield Roberts <60007097+geireann@users.noreply.github.com>2021-09-23 15:09:32 -0400
committerGitHub <noreply@github.com>2021-09-23 15:09:32 -0400
commit281ea90236adb8cb3ff8db7ddc76a466a8641bcd (patch)
treebe9a5086596e33c269857c9ead0293719786035e /src/client/views/PropertiesButtons.tsx
parent26e265c6fc4950b859724aa2c0fbe6a028a56bfc (diff)
parentd5f9533d153e11e24d2ab7c03b4561170f0768fe (diff)
Merge branch 'master' into linking-anh
Diffstat (limited to 'src/client/views/PropertiesButtons.tsx')
-rw-r--r--src/client/views/PropertiesButtons.tsx75
1 files changed, 49 insertions, 26 deletions
diff --git a/src/client/views/PropertiesButtons.tsx b/src/client/views/PropertiesButtons.tsx
index 5c41a96d0..378c67253 100644
--- a/src/client/views/PropertiesButtons.tsx
+++ b/src/client/views/PropertiesButtons.tsx
@@ -15,6 +15,9 @@ import { InkingStroke } from './InkingStroke';
import { DocumentView } from './nodes/DocumentView';
import './PropertiesButtons.scss';
import React = require("react");
+import { Colors } from "./global/globalEnums";
+import { CollectionFreeFormView } from "./collections/collectionFreeForm";
+import { DocumentManager } from "../util/DocumentManager";
const higflyout = require("@hig/flyout");
export const { anchorPoints } = higflyout;
export const Flyout = higflyout.default;
@@ -29,6 +32,7 @@ export class PropertiesButtons extends React.Component<{}, {}> {
@observable public static Instance: PropertiesButtons;
@computed get selectedDoc() { return SelectionManager.SelectedSchemaDoc() || SelectionManager.Views().lastElement()?.rootDoc; }
+ @computed get selectedTabView() { return !SelectionManager.SelectedSchemaDoc() && SelectionManager.Views().lastElement()?.topMost; }
propertyToggleBtn = (label: string, property: string, tooltip: (on?: any) => string, icon: (on: boolean) => string, onClick?: (dv: Opt<DocumentView>, doc: Doc, property: string) => void, useUserDoc?: boolean) => {
const targetDoc = useUserDoc ? Doc.UserDoc() : this.selectedDoc;
@@ -65,10 +69,10 @@ export class PropertiesButtons extends React.Component<{}, {}> {
return this.propertyToggleBtn("Lock\xA0View", "_lockedTransform", on => `${on ? "Unlock" : "Lock"} panning of view`, on => "lock");
}
@computed get fitContentButton() {
- return this.propertyToggleBtn("View All", "_fitToBox", on => `${on ? "Don't" : ""} fit content to container visible area`, on => "eye");
+ return this.propertyToggleBtn("View All", "_fitToBox", on => `${on ? "Don't" : "Do"} fit content to container visible area`, on => "eye");
}
@computed get fitWidthButton() {
- return this.propertyToggleBtn("Fit\xA0Width", "_fitWidth", on => `${on ? "Don't" : ""} fit content to width of container`, on => "arrows-alt-h");
+ return this.propertyToggleBtn("Fit\xA0Width", "_fitWidth", on => `${on ? "Don't" : "Do"} fit content to width of container`, on => "arrows-alt-h");
}
@computed get captionButton() {
return this.propertyToggleBtn("Caption", "_showCaption", on => `${on ? "Hide" : "Show"} caption footer`, on => "closed-captioning", (dv, doc) => (dv?.rootDoc || doc)._showCaption = (dv?.rootDoc || doc)._showCaption === undefined ? "caption" : undefined);
@@ -83,7 +87,10 @@ export class PropertiesButtons extends React.Component<{}, {}> {
return this.propertyToggleBtn("Auto\xA0Size", "_autoHeight", on => `Automatical vertical sizing to show all content`, on => "arrows-alt-v");
}
@computed get gridButton() {
- return this.propertyToggleBtn("Grid", "_backgroundGrid-show", on => `Display background grid in collection`, on => "border-all");
+ return this.propertyToggleBtn("Grid", "_backgroundGridShow", on => `Display background grid in collection`, on => "border-all");
+ }
+ @computed get groupButton() {
+ return this.propertyToggleBtn("Group", "isGroup", on => `Display collection as a Group`, on => "object-group", (dv, doc) => { doc.isGroup = !doc.isGroup; doc.forceActive = doc.isGroup; });
}
@computed get snapButton() {
return this.propertyToggleBtn("Snap\xA0Lines", "showSnapLines", on => `Display snapping lines when objects are dragged`, on => "border-all", undefined, true);
@@ -128,13 +135,13 @@ export class PropertiesButtons extends React.Component<{}, {}> {
@undoBatch
@action
- handleOptionChange = (e: any) => {
- this.selectedDoc && (this.selectedDoc.onClickBehavior = e.target.value);
+ handleOptionChange = (onClick: string) => {
+ this.selectedDoc && (this.selectedDoc.onClickBehavior = onClick);
SelectionManager.Views().filter(dv => dv.docView).map(dv => dv.docView!).forEach(docView => {
docView.noOnClick();
- switch (e.target.value) {
+ switch (onClick) {
case "enterPortal": docView.makeIntoPortal(); break;
- case "toggleDetail": docView.toggleDetail(); break;
+ case "toggleDetail": docView.setToggleDetail(); break;
case "linkInPlace": docView.toggleFollowLink("inPlace", true, false); break;
case "linkOnRight": docView.toggleFollowLink("add:right", false, false); break;
}
@@ -149,20 +156,34 @@ export class PropertiesButtons extends React.Component<{}, {}> {
@computed
get onClickFlyout() {
- const makeLabel = (value: string, label: string) => <div className="radio">
- <label>
- <input type="radio" value={value} checked={(this.selectedDoc?.onClickBehavior ?? "nothing") === value} onChange={this.handleOptionChange} />
- {label}
- </label>
- </div>;
+ const buttonList = [
+ ["nothing", "Select Document"],
+ ["enterPortal", "Enter Portal"],
+ ["toggleDetail", "Toggle Detail"],
+ ["linkInPlace", "Follow Link"],
+ ["linkOnRight", "Open Link on Right"]
+ ];
+ const currentSelection = this.selectedDoc.onClickBehavior;
+ // Get items to place into the list
+
+ const list = buttonList.map((value) => {
+ const click = () => {
+ this.handleOptionChange(value[0]);
+ };
+ return <div className="list-item" key={`${value}`}
+ style={{
+ backgroundColor: value[0] === currentSelection ? Colors.LIGHT_BLUE : undefined
+ }}
+ onClick={click}>
+ {value[1]}
+ </div>;
+ });
return <div>
- <form>
- {makeLabel("nothing", "Select Document")}
- {makeLabel("enterPortal", "Enter Portal")}
- {makeLabel("toggleDetail", "Toggle Detail")}
- {makeLabel("linkInPlace", "Follow Link")}
- {makeLabel("linkOnRight", "Open Link on Right")}
- </form>
+ <div>
+ <div className="propertiesButton-dropdownList">
+ {list}
+ </div>
+ </div>
{Doc.UserDoc().noviceMode ? (null) : <div onPointerDown={this.editOnClickScript} className="onClickFlyout-editScript"> Edit onClick Script</div>}
</div>;
}
@@ -189,25 +210,27 @@ export class PropertiesButtons extends React.Component<{}, {}> {
const isStacking = this.selectedDoc?._viewType === CollectionViewType.Stacking;
const isFreeForm = this.selectedDoc?._viewType === CollectionViewType.Freeform;
const isTree = this.selectedDoc?._viewType === CollectionViewType.Tree;
+ const isTabView = this.selectedTabView;
const toggle = (ele: JSX.Element | null, style?: React.CSSProperties) => <div className="propertiesButtons-button" style={style}> {ele} </div>;
-
+ const isNovice = Doc.UserDoc().noviceMode;
return !this.selectedDoc ? (null) :
<div className="propertiesButtons">
{toggle(this.titleButton)}
{toggle(this.captionButton)}
{toggle(this.lockButton)}
- {toggle(this.dictationButton)}
+ {toggle(this.dictationButton, { display: isNovice ? "none" : "" })}
{toggle(this.onClickButton)}
{toggle(this.fitWidthButton)}
{toggle(this.fitContentButton, { display: !isFreeForm ? "none" : "" })}
{toggle(this.autoHeightButton, { display: !isText && !isStacking && !isTree ? "none" : "" })}
{toggle(this.maskButton, { display: !isInk ? "none" : "" })}
- {toggle(this.chromeButton, { display: isCollection ? "" : "none" })}
- {toggle(this.gridButton, { display: isCollection ? "" : "none" })}
- {toggle(this.snapButton, { display: isCollection ? "" : "none" })}
+ {toggle(this.chromeButton, { display: !isCollection || isNovice ? "none" : "" })}
+ {toggle(this.gridButton, { display: !isCollection ? "none" : "" })}
+ {toggle(this.groupButton, { display: isTabView || !isCollection ? "none" : "" })}
+ {toggle(this.snapButton, { display: !isCollection ? "none" : "" })}
{toggle(this.clustersButton, { display: !isFreeForm ? "none" : "" })}
{toggle(this.panButton, { display: !isFreeForm ? "none" : "" })}
- {toggle(this.perspectiveButton, { display: !isCollection ? "none" : "" })}
+ {toggle(this.perspectiveButton, { display: !isCollection || isNovice ? "none" : "" })}
</div>;
}
} \ No newline at end of file