From 43d313612b5e358037ef6c891d0bc24e8b4fe546 Mon Sep 17 00:00:00 2001 From: xuans Date: Sun, 20 Sep 2026 23:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=88=9D=E5=A7=8B=E5=8C=96=E5=90=91?= =?UTF-8?q?=E5=AF=BC=E8=BE=85=E5=8A=A9=E8=AF=B4=E6=98=8E=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8F=AF=E8=81=9A=E7=84=A6=E6=82=AC=E6=B5=AE=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package.json | 2 +- .../src/views/SetupWizard/DatabaseSetup.vue | 9 +- .../src/views/SetupWizard/SetupWizard.vue | 128 +++++++++++++----- .../views/SetupWizard/SetupWizardLayout.css | 10 +- .../src/views/components/HelpTip/HelpTip.css | 57 ++++++++ .../src/views/components/HelpTip/HelpTip.js | 77 +++++++++++ .../views/components/HelpTip/HelpTip.test.js | 108 +++++++++++++++ .../src/views/components/HelpTip/HelpTip.vue | 53 ++++++++ .../components/HelpTip/HelpTipPosition.js | 14 ++ 9 files changed, 419 insertions(+), 39 deletions(-) create mode 100644 frontend/src/views/components/HelpTip/HelpTip.css create mode 100644 frontend/src/views/components/HelpTip/HelpTip.js create mode 100644 frontend/src/views/components/HelpTip/HelpTip.test.js create mode 100644 frontend/src/views/components/HelpTip/HelpTip.vue create mode 100644 frontend/src/views/components/HelpTip/HelpTipPosition.js diff --git a/frontend/package.json b/frontend/package.json index 85aafec..8bb5c9b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,7 +4,7 @@ "version": "0.1.0", "type": "module", "scripts": { - "test": "node --test src/App.test.js src/views/SetupWizard/SetupWizard.test.js src/views/SetupWizard/SetupWizardBootstrap.test.js src/views/SetupWizard/DatabaseSetup.test.js src/views/SetupWizard/BootstrapPayload.test.js src/views/Dashboard/Dashboard.test.js src/views/UserManagement/UserManagement.test.js", + "test": "node --test src/App.test.js src/views/SetupWizard/SetupWizard.test.js src/views/SetupWizard/SetupWizardBootstrap.test.js src/views/SetupWizard/DatabaseSetup.test.js src/views/SetupWizard/BootstrapPayload.test.js src/views/Dashboard/Dashboard.test.js src/views/UserManagement/UserManagement.test.js src/views/components/HelpTip/HelpTip.test.js", "dev": "vite", "build": "vite build", "preview": "vite preview" diff --git a/frontend/src/views/SetupWizard/DatabaseSetup.vue b/frontend/src/views/SetupWizard/DatabaseSetup.vue index 94236e0..3089728 100644 --- a/frontend/src/views/SetupWizard/DatabaseSetup.vue +++ b/frontend/src/views/SetupWizard/DatabaseSetup.vue @@ -1,4 +1,5 @@ + + + + diff --git a/frontend/src/views/components/HelpTip/HelpTipPosition.js b/frontend/src/views/components/HelpTip/HelpTipPosition.js new file mode 100644 index 0000000..2db0a87 --- /dev/null +++ b/frontend/src/views/components/HelpTip/HelpTipPosition.js @@ -0,0 +1,14 @@ +export function placeTooltip(anchor, popup, viewport) { + const padding = 12; + const gap = 8; + const maxLeft = Math.max(padding, viewport.width - popup.width - padding); + const left = Math.max(padding, Math.min(anchor.left, maxLeft)); + const below = anchor.bottom + gap; + const above = anchor.top - popup.height - gap; + const preferred = below + popup.height <= viewport.height - padding ? below : above; + const maxTop = Math.max(padding, viewport.height - popup.height - padding); + return { + left, + top: Math.max(padding, Math.min(preferred, maxTop)), + }; +}