mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-16 17:46:18 +08:00
feat: init search function
This commit is contained in:
@@ -11,6 +11,7 @@ import Result from './content';
|
||||
import QuickSearchFooter from './Footer';
|
||||
import { Command } from 'cmdk';
|
||||
import { useState } from 'react';
|
||||
import { useEditor } from '@/providers/editor-provider';
|
||||
type TransitionsModalProps = {
|
||||
open: boolean;
|
||||
onClose: () => void;
|
||||
@@ -19,7 +20,11 @@ const isMac = () => {
|
||||
return /macintosh|mac os x/i.test(navigator.userAgent);
|
||||
};
|
||||
export const QuickSearch = ({ open, onClose }: TransitionsModalProps) => {
|
||||
const [search, setSearch] = useState('');
|
||||
const [query, setQuery] = useState('');
|
||||
const [result, setResult] = useState({});
|
||||
const { search } = useEditor();
|
||||
const { pageList } = useEditor();
|
||||
|
||||
return (
|
||||
<Modal open={open} onClose={onClose} wrapperPosition={['top', 'center']}>
|
||||
<ModalWrapper
|
||||
@@ -34,12 +39,12 @@ export const QuickSearch = ({ open, onClose }: TransitionsModalProps) => {
|
||||
>
|
||||
<Command>
|
||||
<StyledModalHeader>
|
||||
<Input search={search} setSearch={setSearch} />
|
||||
<Input query={query} setQuery={setQuery} />
|
||||
<StyledShortcut>{isMac() ? '⌘+K' : 'Ctrl+K'}</StyledShortcut>
|
||||
</StyledModalHeader>
|
||||
<StyledModalDivider />
|
||||
<StyledContent>
|
||||
<Result search={search} />
|
||||
<Result result={query} />
|
||||
</StyledContent>
|
||||
|
||||
<StyledModalFooter>
|
||||
|
||||
@@ -6,6 +6,7 @@ import Loading from './loading';
|
||||
import { Page, Workspace } from '@blocksuite/store';
|
||||
import { BlockSchema } from '@blocksuite/editor/dist/block-loader';
|
||||
import { useRouter } from 'next/router';
|
||||
import { QueryContent } from '@blocksuite/store/dist/workspace/search';
|
||||
export interface PageMeta {
|
||||
id: string;
|
||||
title: string;
|
||||
@@ -40,6 +41,7 @@ type EditorHandlers = {
|
||||
unFavoritePage: (pageId: string) => void;
|
||||
toggleFavoritePage: (pageId: string) => void;
|
||||
permanentlyDeletePage: (pageId: string) => void;
|
||||
search: (query: QueryContent) => any;
|
||||
};
|
||||
|
||||
type EditorContextProps = PropsWithChildren<{}>;
|
||||
@@ -61,6 +63,7 @@ export const EditorContext = createContext<EditorContextValue>({
|
||||
unFavoritePage: () => {},
|
||||
toggleFavoritePage: () => {},
|
||||
permanentlyDeletePage: () => {},
|
||||
search: () => {},
|
||||
});
|
||||
|
||||
export const useEditor = () => useContext(EditorContext);
|
||||
@@ -137,6 +140,11 @@ export const EditorProvider = ({
|
||||
workspace?.setPageMeta(pageId, { favorite: !pageMeta.favorite });
|
||||
}
|
||||
},
|
||||
search: (query: QueryContent) => {
|
||||
if (query) {
|
||||
return workspace?.search(query);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user