diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/views/nodes/LinkMenu.tsx | 3 | ||||
-rw-r--r-- | src/client/views/search/SearchItem.scss | 54 | ||||
-rw-r--r-- | src/client/views/search/SearchItem.tsx | 31 | ||||
-rw-r--r-- | src/client/views/search/ToggleBar.scss | 6 |
4 files changed, 75 insertions, 19 deletions
diff --git a/src/client/views/nodes/LinkMenu.tsx b/src/client/views/nodes/LinkMenu.tsx index 3f09d6214..c34ccdccb 100644 --- a/src/client/views/nodes/LinkMenu.tsx +++ b/src/client/views/nodes/LinkMenu.tsx @@ -8,6 +8,7 @@ import React = require("react"); import { Doc, DocListCast } from "../../../new_fields/Doc"; import { Cast, FieldValue, StrCast } from "../../../new_fields/Types"; import { Id } from "../../../new_fields/FieldSymbols"; +import { DocTypes } from "../../documents/Documents"; interface Props { docView: DocumentView; @@ -23,7 +24,7 @@ export class LinkMenu extends React.Component<Props> { return links.map(link => { let doc = FieldValue(Cast(link[key], Doc)); if (doc) { - return <LinkBox key={doc[Id]} linkDoc={link} linkName={StrCast(link.title)} pairedDoc={doc} showEditor={action(() => this._editingLink = link)} type={type} />; + return <LinkBox key={doc[Id]} linkDoc={link} linkName={StrCast(link.title)} pairedDoc={doc} showEditor={action(() => this._editingLink = link)} type={DocTypes.LINK} />; } }); } diff --git a/src/client/views/search/SearchItem.scss b/src/client/views/search/SearchItem.scss index 2d4c06a5c..5afb69164 100644 --- a/src/client/views/search/SearchItem.scss +++ b/src/client/views/search/SearchItem.scss @@ -12,7 +12,7 @@ .search-info { display: flex; justify-content: flex-end; - width: 100%; + width: 40%; } .main-search-info { @@ -29,20 +29,59 @@ .search-title { text-transform: uppercase; text-align: left; - width: 8vw; + width: 80%; font-weight: bold; } -.link-count { - height: 25px; - width: 25px; - border-radius: 50%; +.link-container.item { + height: 26px; + width: 26px; + border-radius: 13px; background: $dark-color; color: $light-color-secondary; display: flex; justify-content: center; align-items: center; margin-right: 10px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + transform-origin: top right; + overflow: hidden; + + .link-count { + opacity: 1; + position: absolute; + z-index: 1000; + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + -o-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; + } + + .link-extended { + opacity: 0; + position: absolute; + z-index: 500; + overflow: hidden; + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + -o-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; + } +} + +.link-container.item:hover{ + width: 70px; +} + +.link-container.item:hover .link-count{ + opacity: 0; +} + +.link-container.item:hover .link-extended{ + opacity: 1; } .search-type { @@ -85,7 +124,8 @@ } .search-item:hover~.searchBox-instances, -.searchBox-instances:hover, .searchBox-instances:active{ +.searchBox-instances:hover, +.searchBox-instances:active { opacity: 1; background: $lighter-alt-accent; -webkit-transform: scale(1); diff --git a/src/client/views/search/SearchItem.tsx b/src/client/views/search/SearchItem.tsx index 9b4170f4c..d470090f8 100644 --- a/src/client/views/search/SearchItem.tsx +++ b/src/client/views/search/SearchItem.tsx @@ -3,7 +3,7 @@ import { library } from '@fortawesome/fontawesome-svg-core'; import { faCaretUp, faFilePdf, faFilm, faImage, faObjectGroup, faStickyNote, faMusic, faLink, faChartBar, faGlobeAsia } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Cast, NumCast } from "../../../new_fields/Types"; -import { observable, runInAction } from "mobx"; +import { observable, runInAction, computed } from "mobx"; import { listSpec } from "../../../new_fields/Schema"; import { Doc } from "../../../new_fields/Doc"; import { DocumentManager } from "../../util/DocumentManager"; @@ -71,9 +71,9 @@ export class SelectorContextMenu extends React.Component<SearchItemProps> { render() { return ( < div className="parents"> - <p className = "contexts">Contexts:</p> - {this._docs.map(doc => <div className="collection"><a className= "title" onClick={this.getOnClick(doc)}>{doc.col.title}</a></div>)} - {this._otherDocs.map(doc => <div className="collection"><a className= "title" onClick={this.getOnClick(doc)}>{doc.col.title}</a></div>)} + <p className="contexts">Contexts:</p> + {this._docs.map(doc => <div className="collection"><a className="title" onClick={this.getOnClick(doc)}>{doc.col.title}</a></div>)} + {this._otherDocs.map(doc => <div className="collection"><a className="title" onClick={this.getOnClick(doc)}>{doc.col.title}</a></div>)} </div> ); } @@ -87,10 +87,12 @@ export class SearchItem extends React.Component<SearchItemProps> { onClick = () => { // DocumentManager.Instance.jumpToDocument(this.props.doc); + console.log(Cast(this.props.doc.type, "string", "")) CollectionDockingView.Instance.AddRightSplit(this.props.doc); } - public DocumentIcon() { + @computed + public get DocumentIcon() { let layoutresult = Cast(this.props.doc.type, "string", ""); let button = layoutresult.indexOf(DocTypes.PDF) !== -1 ? faFilePdf : @@ -117,10 +119,20 @@ export class SearchItem extends React.Component<SearchItemProps> { } } - linkCount = () => { + @computed + get linkCount() { return Cast(this.props.doc.linkedToDocs, listSpec(Doc), []).length + Cast(this.props.doc.linkedFromDocs, listSpec(Doc), []).length; } + @computed + get linkString(): string { + let num = this.linkCount; + if (num === 1) { + return num.toString() + " link"; + } + return num.toString() + " links"; + } + render() { return ( <div className="search-overview"> @@ -128,8 +140,11 @@ export class SearchItem extends React.Component<SearchItemProps> { <div className="main-search-info"> <div className="search-title" id="result" >{this.props.doc.title}</div> <div className="search-info"> - <div className="link-count">{this.linkCount()}</div> - <div className="search-type" >{this.DocumentIcon()}</div> + <div className="link-container item"> + <div className="link-count">{this.linkCount}</div> + <div className = "link-extended">{this.linkString}</div> + </div> + <div className="search-type" >{this.DocumentIcon}</div> </div> </div> <div className="found">Where Found: (i.e. title, body, etc)</div> diff --git a/src/client/views/search/ToggleBar.scss b/src/client/views/search/ToggleBar.scss index caae354ee..353db792d 100644 --- a/src/client/views/search/ToggleBar.scss +++ b/src/client/views/search/ToggleBar.scss @@ -13,9 +13,9 @@ width: 100px; text-align: center; -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } } |