Skip to content
This repository was archived by the owner on Jul 26, 2023. It is now read-only.

Commit 0fd9389

Browse files
committed
feat(dock): moving to use autocomplete
Simplifies the dock seach logic.
1 parent 7f920e7 commit 0fd9389

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+898
-547
lines changed

.eslintrc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ rules:
1818
"@typescript-eslint/explicit-module-boundary-types": off
1919
"@typescript-eslint/interface-name-prefix": off
2020
"@typescript-eslint/no-non-null-assertion": off
21+
"react/display-name": off
2122
"react/prop-types": off
2223
"require-await": "error"
2324
"no-return-await": "error"

.vscode/launch.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@
9494
"type": "node",
9595
"request": "launch",
9696
"cwd": "${workspaceFolder}",
97-
"preLaunchTask": "npm: build:dev:core",
9897
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
9998
"windows": {
10099
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"
@@ -118,7 +117,6 @@
118117
"type": "node",
119118
"request": "launch",
120119
"cwd": "${workspaceFolder}",
121-
"preLaunchTask": "npm: build:dev:core",
122120
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
123121
"windows": {
124122
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"

package-lock.json

Lines changed: 28 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/desktop-dock/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@
3232
"license": "Apache-2.0",
3333
"dependencies": {
3434
"@material-ui/core": "^4.11.2",
35+
"@material-ui/lab": "^4.0.0-alpha.57",
3536
"@reactivemarkets/desktop-sdk": "file:../desktop-sdk",
36-
"fuse.js": "^6.4.3",
3737
"ix": "^4.0.0",
38+
"match-sorter": "^6.0.2",
3839
"mdi-material-ui": "^6.20.0",
3940
"mobx": "^5.15.7",
4041
"mobx-react": "^6.3.0",

packages/desktop-dock/src/components/App/App.tsx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
11
import * as React from "react";
2-
import AppShell from "./AppShell";
2+
import { AppShell } from "./AppShell";
33
import { AppTheme } from "./AppTheme";
44
import { ApplicationsStoreProvider } from "./ApplicationsStoreProvider";
55
import { FocusStoreProvider } from "./FocusStoreProvider";
66
import { ResizerStoreProvider } from "./ResizerStoreProvider";
7+
import { FilterStoreProvider } from "./FilterStoreProvider";
78
import { SearchStoreProvider } from "./SearchStoreProvider";
9+
import { ThemeStoreProvider } from "./ThemeStoreProvider";
10+
import { TabStoreProvider } from "./TabStoreProvider";
811

912
export class App extends React.PureComponent {
1013
public render() {
1114
return (
1215
<FocusStoreProvider>
13-
<ResizerStoreProvider>
14-
<ApplicationsStoreProvider>
15-
<SearchStoreProvider>
16-
<AppTheme>
17-
<AppShell />
18-
</AppTheme>
19-
</SearchStoreProvider>
20-
</ApplicationsStoreProvider>
21-
</ResizerStoreProvider>
16+
<FilterStoreProvider>
17+
<ResizerStoreProvider>
18+
<ApplicationsStoreProvider>
19+
<SearchStoreProvider>
20+
<TabStoreProvider>
21+
<ThemeStoreProvider>
22+
<AppTheme>
23+
<AppShell />
24+
</AppTheme>
25+
</ThemeStoreProvider>
26+
</TabStoreProvider>
27+
</SearchStoreProvider>
28+
</ApplicationsStoreProvider>
29+
</ResizerStoreProvider>
30+
</FilterStoreProvider>
2231
</FocusStoreProvider>
2332
);
2433
}
Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,23 @@
1-
import { createStyles, Box, Grid, Theme, withStyles, WithStyles } from "@material-ui/core";
1+
import { Box } from "@material-ui/core";
22
import * as React from "react";
3-
import { Search, SearchHelp, SearchResults } from "../Search";
3+
import { Search, SearchButton, SearchHelp } from "../Search";
44
import { DragHandle, PowerButton } from "../System";
55

6-
const styles = (theme: Theme) =>
7-
createStyles({
8-
padding: {
9-
padding: theme.spacing(1, 1, 1, 0),
10-
},
11-
});
12-
13-
class AppShell extends React.PureComponent<WithStyles<typeof styles>> {
6+
export class AppShell extends React.PureComponent {
147
public render() {
15-
const { classes } = this.props;
16-
178
return (
189
<Box display="flex" flexDirection="column" flex={1}>
19-
<Grid container wrap="nowrap">
20-
<DragHandle />
21-
<Grid className={classes.padding} container wrap="nowrap">
22-
<Search />
23-
<PowerButton />
24-
</Grid>
25-
</Grid>
26-
<SearchResults />
10+
<Search
11+
startAdornment={
12+
<>
13+
<DragHandle />
14+
<SearchButton />
15+
</>
16+
}
17+
endAdornment={<PowerButton />}
18+
/>
2719
<SearchHelp />
2820
</Box>
2921
);
3022
}
3123
}
32-
33-
export default withStyles(styles)(AppShell);

packages/desktop-dock/src/components/App/AppTheme.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,27 @@ import {
66
CssBaseline,
77
} from "@material-ui/core";
88
import { computed } from "mobx";
9-
import { observer } from "mobx-react";
9+
import { inject, observer } from "mobx-react";
1010
import * as React from "react";
11-
import { defaultTheme } from "./defaultTheme";
11+
import { IThemeStore } from "../../stores";
1212

1313
const generateClassName = createGenerateClassName({
1414
disableGlobal: true,
1515
productionPrefix: "d",
1616
});
1717

18+
interface IAppThemeProps {
19+
readonly themeStore?: IThemeStore;
20+
}
21+
22+
@inject("themeStore")
1823
@observer
19-
export class AppTheme extends React.Component {
24+
export class AppTheme extends React.Component<IAppThemeProps> {
2025
@computed
2126
private get currentThemeOptions() {
22-
return createMuiTheme(defaultTheme);
27+
const { current } = this.props.themeStore!;
28+
29+
return createMuiTheme(current);
2330
}
2431

2532
public render() {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as React from "react";
2+
import { Provider } from "mobx-react";
3+
import { ObservableFilterStore } from "../../stores";
4+
5+
export class FilterStoreProvider extends React.PureComponent {
6+
private readonly filterStore = new ObservableFilterStore();
7+
8+
public render() {
9+
return <Provider filterStore={this.filterStore}>{this.props.children}</Provider>;
10+
}
11+
}

packages/desktop-dock/src/components/App/SearchStoreProvider.tsx

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,9 @@
11
import * as React from "react";
2-
import { Provider, inject } from "mobx-react";
3-
import { ISearchStore, IApplicationsStore, ObservableSearchStore, createSearchProvider } from "../../stores";
2+
import { Provider } from "mobx-react";
3+
import { ObservableSearchStore } from "../../stores";
44

5-
interface ISearchStoreProviderProps {
6-
readonly applicationsStore?: IApplicationsStore;
7-
}
8-
9-
@inject("applicationsStore")
10-
export class SearchStoreProvider extends React.PureComponent<ISearchStoreProviderProps> {
11-
private readonly searchStore: ISearchStore;
12-
13-
public constructor(props: ISearchStoreProviderProps) {
14-
super(props);
15-
16-
const searchProvider = createSearchProvider(props.applicationsStore!);
17-
18-
this.searchStore = new ObservableSearchStore(searchProvider);
19-
}
5+
export class SearchStoreProvider extends React.PureComponent {
6+
private readonly searchStore = new ObservableSearchStore();
207

218
public render() {
229
return <Provider searchStore={this.searchStore}>{this.props.children}</Provider>;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as React from "react";
2+
import { Provider } from "mobx-react";
3+
import { ObservableTabStore } from "../../stores";
4+
5+
export class TabStoreProvider extends React.PureComponent {
6+
private readonly tabStore = new ObservableTabStore();
7+
8+
public render() {
9+
return <Provider tabStore={this.tabStore}>{this.props.children}</Provider>;
10+
}
11+
}

0 commit comments

Comments
 (0)