From ba59bb824f77dd3cb57019c59d3c3b0755c68b85 Mon Sep 17 00:00:00 2001 From: Ali Abdalla Date: Wed, 3 Jul 2024 21:57:11 -0700 Subject: [PATCH] Add search to website (#8624) --- .changeset/wide-wasps-wait.md | 5 + .../generate_jsons/src/docs/__init__.py | 11 + js/_website/package.json | 3 +- js/_website/src/lib/assets/style.css | 5 +- js/_website/src/lib/components/DocsNav.svelte | 41 --- js/_website/src/lib/components/Header.svelte | 16 +- .../src/lib/components/JSDocsNav.svelte | 40 -- .../lib/components/search/SearchIcon.svelte | 15 + .../src/lib/components/search/index.ts | 1 + .../lib/components/search/search-worker.ts | 17 + .../src/lib/components/search/search.svelte | 344 ++++++++++++++++++ .../src/lib/components/search/search.ts | 71 ++++ js/_website/src/routes/search-api/+server.ts | 118 ++++++ pnpm-lock.yaml | 8 + 14 files changed, 602 insertions(+), 93 deletions(-) create mode 100644 .changeset/wide-wasps-wait.md create mode 100644 js/_website/src/lib/components/search/SearchIcon.svelte create mode 100644 js/_website/src/lib/components/search/index.ts create mode 100644 js/_website/src/lib/components/search/search-worker.ts create mode 100644 js/_website/src/lib/components/search/search.svelte create mode 100644 js/_website/src/lib/components/search/search.ts create mode 100644 js/_website/src/routes/search-api/+server.ts diff --git a/.changeset/wide-wasps-wait.md b/.changeset/wide-wasps-wait.md new file mode 100644 index 0000000000..e8ddff60ff --- /dev/null +++ b/.changeset/wide-wasps-wait.md @@ -0,0 +1,5 @@ +--- +"website": patch +--- + +feat:Add search to website diff --git a/js/_website/generate_jsons/src/docs/__init__.py b/js/_website/generate_jsons/src/docs/__init__.py index 3f092c4b47..441b95d0b6 100644 --- a/js/_website/generate_jsons/src/docs/__init__.py +++ b/js/_website/generate_jsons/src/docs/__init__.py @@ -210,6 +210,17 @@ def organize_docs(d): pages = organize_pages() + # content_json = {} + # def generate_content_json(pages): + # for library in pages: + # for category in pages[library]: + # for page in category["pages"]: + # page_path = os.path.join(TEMPLATES_DIR, page["path"] + ".svx") + # with open(page_path) as f: + # content = f.read() + # content_json["content"] = content + + organized["gradio"]["events_matrix"] = component_events organized["gradio"]["events"] = events diff --git a/js/_website/package.json b/js/_website/package.json index 7c3d76de68..f19b73e602 100644 --- a/js/_website/package.json +++ b/js/_website/package.json @@ -18,7 +18,8 @@ "@tailwindcss/typography": "^0.5.4", "@types/prismjs": "^1.26.0", "prismjs": "1.29.0", - "tailwindcss": "^3.1.6" + "tailwindcss": "^3.1.6", + "flexsearch": "^0.7.43" }, "type": "module", "dependencies": { diff --git a/js/_website/src/lib/assets/style.css b/js/_website/src/lib/assets/style.css index aafbdc3a57..f9bb03784a 100644 --- a/js/_website/src/lib/assets/style.css +++ b/js/_website/src/lib/assets/style.css @@ -196,10 +196,7 @@ code.language-bash { } [type="search"]::-webkit-search-cancel-button { - @apply appearance-none h-5 w-5; - -webkit-appearance: none; - background-image: url("/src/lib/assets/img/esc.svg"); - background-size: 20px 20px; + display: none; } .view-code { diff --git a/js/_website/src/lib/components/DocsNav.svelte b/js/_website/src/lib/components/DocsNav.svelte index b3667cf346..b441aaccc2 100644 --- a/js/_website/src/lib/components/DocsNav.svelte +++ b/js/_website/src/lib/components/DocsNav.svelte @@ -6,40 +6,9 @@ export let current_nav_link = ""; let show_nav = false; - let searchTerm = ""; - let searchBar: HTMLInputElement; - - const search = () => { - let links = document.querySelectorAll( - ".navigation a" - ) as NodeListOf; - links.forEach((link) => { - let linkText = link.innerText.toLowerCase(); - if (linkText.includes(searchTerm.toLowerCase())) { - link.style.display = "block"; - } else { - link.style.display = "none"; - } - }); - }; - - function onKeyDown(e: KeyboardEvent) { - if (e.key.toLowerCase() === "k" && (e.metaKey || e.ctrlKey)) { - e.preventDefault(); - searchBar.focus(); - } - if (e.key == "Escape") { - searchTerm = ""; - searchBar.blur(); - search(); - } - } - import DropDown from "$lib/components/VersionDropdown.svelte"; - -