aboutsummaryrefslogtreecommitdiff
path: root/core/search-component/src/main/js
diff options
context:
space:
mode:
authorBłażej Kardyś <bkardys@virtuslab.com>2020-04-07 22:36:16 +0200
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-04-08 11:52:28 +0200
commitdd645cb5cd77c2738424e445587407b4bf97250c (patch)
treee77f4bbfb67003fcdfc230b09c5b13c64b33ce63 /core/search-component/src/main/js
parent738802c775ef08c74768747e3f8ccaf25087a0d2 (diff)
downloaddokka-dd645cb5cd77c2738424e445587407b4bf97250c.tar.gz
dokka-dd645cb5cd77c2738424e445587407b4bf97250c.tar.bz2
dokka-dd645cb5cd77c2738424e445587407b4bf97250c.zip
Moving search-component inside core project
Diffstat (limited to 'core/search-component/src/main/js')
-rw-r--r--core/search-component/src/main/js/search/app-root.js13
-rw-r--r--core/search-component/src/main/js/search/app.css21
-rw-r--r--core/search-component/src/main/js/search/app.js41
-rw-r--r--core/search-component/src/main/js/search/search.js52
4 files changed, 127 insertions, 0 deletions
diff --git a/core/search-component/src/main/js/search/app-root.js b/core/search-component/src/main/js/search/app-root.js
new file mode 100644
index 00000000..25a374a5
--- /dev/null
+++ b/core/search-component/src/main/js/search/app-root.js
@@ -0,0 +1,13 @@
+import React, {Component} from 'react';
+import {WithFuzzySearchFilter} from './search';
+import './app.css';
+
+export default class AppRoot extends Component {
+ render() {
+ return (
+ <div className="search-content">
+ <WithFuzzySearchFilter/>
+ </div>
+ );
+ }
+} \ No newline at end of file
diff --git a/core/search-component/src/main/js/search/app.css b/core/search-component/src/main/js/search/app.css
new file mode 100644
index 00000000..933237e0
--- /dev/null
+++ b/core/search-component/src/main/js/search/app.css
@@ -0,0 +1,21 @@
+@import "@jetbrains/ring-ui/components/global/variables.css";
+
+html,
+.app-root {
+ height: 100%;
+}
+
+.search-root {
+ margin: 0;
+ padding: 0;
+
+ background: var(--ring-content-background-color);
+
+ font-family: var(--ring-font-family);
+ font-size: var(--ring-font-size);
+ line-height: var(--ring-line-height);
+}
+
+.search-content {
+ margin: calc(var(--ring-unit) * 4);
+}
diff --git a/core/search-component/src/main/js/search/app.js b/core/search-component/src/main/js/search/app.js
new file mode 100644
index 00000000..64091607
--- /dev/null
+++ b/core/search-component/src/main/js/search/app.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import {render} from 'react-dom';
+import RedBox from 'redbox-react';
+
+import AppRoot from './app-root';
+import './app.css';
+
+const appEl = document.getElementById('searchBar');
+const rootEl = document.createElement('div');
+
+let renderApp = () => {
+ render(
+ <AppRoot/>,
+ rootEl
+ );
+};
+
+if (module.hot) {
+ const renderAppHot = renderApp;
+ const renderError = error => {
+ render(
+ <RedBox error={error}/>,
+ rootEl
+ );
+ };
+
+ renderApp = () => {
+ try {
+ renderAppHot();
+ } catch (error) {
+ renderError(error);
+ }
+ };
+
+ module.hot.accept('./app-root', () => {
+ setTimeout(renderApp);
+ });
+}
+
+renderApp();
+appEl.appendChild(rootEl);
diff --git a/core/search-component/src/main/js/search/search.js b/core/search-component/src/main/js/search/search.js
new file mode 100644
index 00000000..a742f11d
--- /dev/null
+++ b/core/search-component/src/main/js/search/search.js
@@ -0,0 +1,52 @@
+import React, {Component} from 'react';
+import Select from '@jetbrains/ring-ui/components/select/select';
+import '@jetbrains/ring-ui/components/input-size/input-size.scss';
+
+class WithFuzzySearchFilterComponent extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {selected: props.data[0]};
+ }
+
+ clearSelection = () => {
+ this.setState({selected: null});
+ };
+
+ onSelect = option => {
+ window.location.href = `${window.pathToRoot}${option.location}?query${option.name}`;
+ this.setState({selected: option});
+ debugger
+ };
+
+ render() {
+ return (
+ <div className="search-container">
+ <div className="search">
+ <Select
+ selectedLabel="Search"
+ label="Please type page name"
+ filter={{fuzzy: true}}
+ clear
+ selected={this.state.selected}
+ data={this.props.data}
+ onSelect={this.onSelect}
+ />
+ </div>
+ </div>
+ );
+ }
+}
+
+export const WithFuzzySearchFilter = () => {
+ let data = [];
+ if (window.pages) {
+ data = window.pages.map((page, i) => ({
+ ...page,
+ label: page.name,
+ key: i + 1,
+ type: page.kind
+ }));
+ }
+
+ return <WithFuzzySearchFilterComponent data={data}/>;
+};