From 5e7c317de6cd6217aff1f92931d69a80058ff4d9 Mon Sep 17 00:00:00 2001 From: ajaxzheng <894103554@qq.com> Date: Mon, 9 Dec 2024 20:12:40 +0800 Subject: [PATCH 1/2] feat: support global search in multiple environments and fix pipeline errors --- examples/sites/package.json | 5 +++-- examples/sites/src/main.js | 20 ++++++++++++-------- examples/sites/src/tools/docsearch.js | 26 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 examples/sites/src/tools/docsearch.js diff --git a/examples/sites/package.json b/examples/sites/package.json index 76d6f91a3a..2512878f2b 100644 --- a/examples/sites/package.json +++ b/examples/sites/package.json @@ -1,6 +1,6 @@ { "name": "@opentiny/vue-docs", - "version": "3.20.3", + "version": "3.20.5", "license": "MIT", "scripts": { "start": "vite", @@ -49,7 +49,8 @@ "vue-i18n": "^9.1.10", "vue-router": "4.1.5", "@docsearch/js": "^3.8.0", - "@docsearch/css": "^3.8.0" + "@docsearch/css": "^3.8.0", + "@docsearch/react": "npm:@docsearch/css" }, "devDependencies": { "@opentiny-internal/unplugin-virtual-template": "workspace:~", diff --git a/examples/sites/src/main.js b/examples/sites/src/main.js index 75b2342c0b..696372c63c 100644 --- a/examples/sites/src/main.js +++ b/examples/sites/src/main.js @@ -33,6 +33,7 @@ import css from 'highlight.js/lib/languages/css' import html from 'highlight.js/lib/languages/xml' import docsearch from '@docsearch/js' import '@docsearch/css' +import { doSearhEverySite } from './tools/docsearch' const envTarget = import.meta.env.VITE_BUILD_TARGET || 'open' @@ -40,14 +41,17 @@ hljs.registerLanguage('javascript', javascript) hljs.registerLanguage('css', css) hljs.registerLanguage('html', html) -if (envTarget === 'open') { - docsearch({ - appId: 'AGPA5UXHMH', - apiKey: '5fa09fc20270efa61d68e2c2eb0f56df', - indexName: 'opentiny', - container: '.search-box', - debug: false - }) +docsearch({ + appId: 'AGPA5UXHMH', + apiKey: '5fa09fc20270efa61d68e2c2eb0f56df', + indexName: 'opentiny', + container: '.search-box', + debug: false +}) + +if (envTarget !== 'open') { + // 支持本地开发和内网使用全局搜索 + doSearhEverySite() } // 实验后发现,先调用一次预热一下,后续再调用会有速度的提示,因此在main中预热一下。 diff --git a/examples/sites/src/tools/docsearch.js b/examples/sites/src/tools/docsearch.js new file mode 100644 index 0000000000..d9a2e8e542 --- /dev/null +++ b/examples/sites/src/tools/docsearch.js @@ -0,0 +1,26 @@ +const HIT_CLASS = 'DocSearch-Hit' + +const findUrlLink = (target) => { + if (target?.nodeName?.toLocaleLowerCase?.() === 'a') { + return target.getAttribute('href') + } else if (target?.parentElement) { + return findUrlLink(target.parentElement) + } +} + +const isAlgoliaHitDom = (dom) => + dom?.className?.includes?.(HIT_CLASS) || dom?.parentElement?.className?.includes?.(HIT_CLASS) + +export const doSearhEverySite = () => { + window.addEventListener('click', (event) => { + const target = event.target + if (isAlgoliaHitDom(target)) { + const openUrl = findUrlLink(target) + if (openUrl) { + const urlObj = new URL(openUrl) + event.preventDefault() + window.location.href = openUrl.replace(urlObj.origin, window.location.origin) + } + } + }) +} From 770a226317c614ea20938ace4783c60400938d5b Mon Sep 17 00:00:00 2001 From: ajaxzheng <894103554@qq.com> Date: Mon, 9 Dec 2024 20:25:20 +0800 Subject: [PATCH 2/2] feat: support global search in multiple environments and fix pipeline errors --- examples/sites/src/main.js | 4 ++-- examples/sites/src/tools/docsearch.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/sites/src/main.js b/examples/sites/src/main.js index 696372c63c..9f0672a1b8 100644 --- a/examples/sites/src/main.js +++ b/examples/sites/src/main.js @@ -33,7 +33,7 @@ import css from 'highlight.js/lib/languages/css' import html from 'highlight.js/lib/languages/xml' import docsearch from '@docsearch/js' import '@docsearch/css' -import { doSearhEverySite } from './tools/docsearch' +import { doSearchEverySite } from './tools/docsearch' const envTarget = import.meta.env.VITE_BUILD_TARGET || 'open' @@ -51,7 +51,7 @@ docsearch({ if (envTarget !== 'open') { // 支持本地开发和内网使用全局搜索 - doSearhEverySite() + doSearchEverySite() } // 实验后发现,先调用一次预热一下,后续再调用会有速度的提示,因此在main中预热一下。 diff --git a/examples/sites/src/tools/docsearch.js b/examples/sites/src/tools/docsearch.js index d9a2e8e542..d08bb4715e 100644 --- a/examples/sites/src/tools/docsearch.js +++ b/examples/sites/src/tools/docsearch.js @@ -11,7 +11,7 @@ const findUrlLink = (target) => { const isAlgoliaHitDom = (dom) => dom?.className?.includes?.(HIT_CLASS) || dom?.parentElement?.className?.includes?.(HIT_CLASS) -export const doSearhEverySite = () => { +export const doSearchEverySite = () => { window.addEventListener('click', (event) => { const target = event.target if (isAlgoliaHitDom(target)) {