Skip to content
Snippets Groups Projects
Commit 7b856b95 authored by Matthias Konitzny's avatar Matthias Konitzny :fire:
Browse files

WIP Searchbar Design

parent 37c2968d
No related branches found
No related tags found
1 merge request!3Master into new editor
Pipeline #56816 failed
.searchbar {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
gap: 10px;
}
.searchbar-icon {
font-size: 30px;
}
.searchbar-text {
overflow: hidden;
transition: width 0.2s ease-in-out;
}
\ No newline at end of file
import React, { useEffect, useState } from "react";
import "./searchbar.css";
interface SearchBarProps {
minified: boolean;
searchTerms: string[];
onSearch?: (term: string) => void;
}
function SearchBar({ minified, searchTerms, onSearch }: SearchBarProps) {
const [isMinified, setMinified] = useState(minified);
const [width, setWidth] = useState<number>(100);
const [inputText, setInputText] = useState("");
const toggleMinified = () => {
setMinified((prev) => !prev);
};
useEffect(() => {
if (isMinified) {
setWidth(100);
} else {
setWidth(0);
}
}, [isMinified]);
const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {
setInputText(e.target.value.toLowerCase());
};
return (
<div className={"searchbar"}>
<div className={"searchbar-icon"} onClick={toggleMinified}>
&#128269;
</div>
<div className={"searchbar-text"} style={{ width: width + "%" }}>
<form action={"#"}>
<input
type={"search"}
placeholder={"Suchbegriff eingeben..."}
onInput={handleInput}
></input>
</form>
</div>
</div>
);
}
export default SearchBar;
...@@ -12,12 +12,21 @@ ...@@ -12,12 +12,21 @@
supported by Chrome, Edge, Opera and Firefox */ supported by Chrome, Edge, Opera and Firefox */
} }
.display-fullscreen-button { .display-icons {
pointer-events: all;
z-index: 99; z-index: 99;
cursor: pointer; display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
left: 15px; left: 15px;
top: 5px; top: 10px;
position: absolute; position: absolute;
font-size: 30px; gap: 20px;
} }
.display-fullscreen-button {
pointer-events: all;
cursor: pointer;
font-size: 30px;
transform: rotate(-45deg);
}
\ No newline at end of file
...@@ -9,6 +9,7 @@ import Graph, { NodeData } from "./graph"; ...@@ -9,6 +9,7 @@ import Graph, { NodeData } from "./graph";
import { loadGraphJson } from "../datasets"; import { loadGraphJson } from "../datasets";
import NodeInfoBar from "./components/nodeinfo/nodeinfobar"; import NodeInfoBar from "./components/nodeinfo/nodeinfobar";
import FilterMenu from "./components/nodefilter/filtermenu"; import FilterMenu from "./components/nodefilter/filtermenu";
import SearchBar from "./components/searchbar";
/** /**
* This component manages and renders a 3d-force-graph with additional menus to navigate, filter and view information on nodes. * This component manages and renders a 3d-force-graph with additional menus to navigate, filter and view information on nodes.
...@@ -112,13 +113,17 @@ class Display extends React.Component< ...@@ -112,13 +113,17 @@ class Display extends React.Component<
style={{ position: "relative" }} style={{ position: "relative" }}
ref={this.fullscreenRef} ref={this.fullscreenRef}
> >
<div <div className={"display-icons"}>
className={"display-fullscreen-button no-select"} <div
title={"Vollbild"} className={"display-fullscreen-button no-select"}
onClick={this.toggleFullscreen.bind(this)} title={"Vollbild"}
> onClick={this.toggleFullscreen.bind(this)}
<p>&#10530;</p> >
&#10231;
</div>
<SearchBar minified={true} searchTerms={["a", "b", "c"]} />
</div> </div>
{/*{this.graph && (*/} {/*{this.graph && (*/}
{/* <FilterOverlay graph={this.graph} type={"node"} />*/} {/* <FilterOverlay graph={this.graph} type={"node"} />*/}
{/*)}*/} {/*)}*/}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment