diff options
author | Błażej Kardyś <bkardys@virtuslab.com> | 2020-04-07 22:36:16 +0200 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-04-08 11:52:28 +0200 |
commit | dd645cb5cd77c2738424e445587407b4bf97250c (patch) | |
tree | e77f4bbfb67003fcdfc230b09c5b13c64b33ce63 /core/search-component/src/main/js/search | |
parent | 738802c775ef08c74768747e3f8ccaf25087a0d2 (diff) | |
download | dokka-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/search')
-rw-r--r-- | core/search-component/src/main/js/search/app-root.js | 13 | ||||
-rw-r--r-- | core/search-component/src/main/js/search/app.css | 21 | ||||
-rw-r--r-- | core/search-component/src/main/js/search/app.js | 41 | ||||
-rw-r--r-- | core/search-component/src/main/js/search/search.js | 52 |
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}/>; +}; |