diff --git a/src/client/components/center/search/index.ts b/src/client/components/center/search/index.ts new file mode 100644 index 0000000..3ed8704 --- /dev/null +++ b/src/client/components/center/search/index.ts @@ -0,0 +1,2 @@ +export * from "./search.service"; +export * from "./search"; diff --git a/src/client/components/center/search/search.service.ts b/src/client/components/center/search/search.service.ts new file mode 100644 index 0000000..52606f2 --- /dev/null +++ b/src/client/components/center/search/search.service.ts @@ -0,0 +1,41 @@ +import { makeAutoObservable } from "mobx"; + +import { CentralViewType } from "@/client/constants"; +import { ICentralPanelContentService } from "@/client/interface"; +import { DomainManager } from "@/domain"; + +import { EntrySearchService } from "../../shared/entry-search-field"; + +export class SearchService implements ICentralPanelContentService { + entrySearch: EntrySearchService; + + constructor(domain: DomainManager) { + this.entrySearch = new EntrySearchService(domain); + + makeAutoObservable(this, { entrySearch: false }); + } + + get key() { + return this.type; + } + + get type() { + return CentralViewType.Search; + } + + get details() { + return { type: this.type }; + } + + load() { + return; + } + + activate() { + return; + } + + cleanUp() { + return; + } +} diff --git a/src/client/components/center/search/search.tsx b/src/client/components/center/search/search.tsx new file mode 100644 index 0000000..db517e1 --- /dev/null +++ b/src/client/components/center/search/search.tsx @@ -0,0 +1,24 @@ +import { Box, Title } from "@mantine/core"; +import { observer } from "mobx-react-lite"; + +import { DIVIDER, SPACE } from "@/shared/common"; + +import { SearchService } from "./search.service"; +import { EntrySearchField } from "../../shared/entry-search-field"; + +interface SearchProps { + service: SearchService; +} + +function renderSearch({ service }: SearchProps) { + return ( + + Search Results + {DIVIDER} + {SPACE} + + + ); +} + +export const Search = observer(renderSearch); diff --git a/src/client/components/shared/entry-search-field/entry-search-field.service.ts b/src/client/components/shared/entry-search-field/entry-search-field.service.ts index 20f3d22..a51375e 100644 --- a/src/client/components/shared/entry-search-field/entry-search-field.service.ts +++ b/src/client/components/shared/entry-search-field/entry-search-field.service.ts @@ -49,6 +49,10 @@ export class EntrySearchService { }); } + get enabled() { + return this._domain.hasProject; + } + get searchQuery() { return this._searchQuery; } diff --git a/src/client/components/shared/entry-search-field/entry-search-field.tsx b/src/client/components/shared/entry-search-field/entry-search-field.tsx index c7ad7f1..9b4b434 100644 --- a/src/client/components/shared/entry-search-field/entry-search-field.tsx +++ b/src/client/components/shared/entry-search-field/entry-search-field.tsx @@ -13,6 +13,7 @@ interface EntrySearchProps { function renderEntrySearchField({ service }: EntrySearchProps) { return ( service.selectEntrySearchResult(value)} getSearch={() => service.searchQuery} onSearchChange={(value) => (service.searchQuery = value)} diff --git a/src/client/constants/view.ts b/src/client/constants/view.ts index 98501a2..4d3cc65 100644 --- a/src/client/constants/view.ts +++ b/src/client/constants/view.ts @@ -10,6 +10,7 @@ export enum ViewAction { export enum CentralViewType { Home = "HOME", Settings = "SETTINGS", + Search = "SEARCH", EntryEditor = "ENTRY_EDITOR", } diff --git a/src/shared/search-field/search-field.tsx b/src/shared/search-field/search-field.tsx index 975b569..8769552 100644 --- a/src/shared/search-field/search-field.tsx +++ b/src/shared/search-field/search-field.tsx @@ -26,6 +26,7 @@ export interface SearchFieldProps extends ComboboxProps { function renderSearchField({ placeholder = "Search", + disabled = false, value, getValue, search, @@ -72,6 +73,7 @@ function renderSearchField({ return ( { onSearchChange?.(props.children?.toString() ?? ""); onValueChange?.(value); @@ -81,6 +83,7 @@ function renderSearchField({ > {